Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > преобразовать System::String, в LPARAM


Автор: Newbie1x 15.9.2009, 15:54
Еще такой вопрос, можно ли как-то преобразовать System::String, тоесть текст, введенный в textBox1->Text в LPARAM? Чтобы отправить сообщение на печать строки.
(LPARAM)_T("привет!") работает.

А вот (LPARAM)_T(textBox1->Text) - нет.

Что можно сделать в такой ситуации?

Автор: Romikgy 15.9.2009, 16:46


указатель на строку передай в 
Цитата(Newbie1x @  15.9.2009,  14:54 Найти цитируемый пост)
LPARAM


Автор: Newbie1x 15.9.2009, 16:50
Но ведь название темы не несет в себе никакого вопроса, это так, в догонку, разве стоит по такой мелочи тему создавать?

ЗЫ А пример можно, раз уж начали отвечать?

Добавлено через 6 минут и 45 секунд
В указателях не силен, что-то вроде этого?
Код

char* buff1;
buff1 = &textBox1->Text;
::SendMessage(rhwnd, WM_SETTEXT, NULL, (LPARAM)buff1);


Ругается на &textBox1->Text;

Пишет: 
Цитата

 для "&" требуется левостороннее значение


Как быть?

Автор: GremlinProg 15.9.2009, 17:13
Цитата(Newbie1x @  15.9.2009,  18:50 Найти цитируемый пост)
Но ведь название темы не несет в себе никакого вопроса, это так, в догонку, разве стоит по такой мелочи тему создавать?

этот вопрос даже темы подфорума не касается

Добавлено через 5 минут и 24 секунды

M
GremlinProg
перенесено из: http://forum.vingrad.ru/forum/topic-272818...dwindow/15.html

Автор: Romikgy 15.9.2009, 17:21
Цитата(Newbie1x @  15.9.2009,  15:50 Найти цитируемый пост)
textBox1->Text

так понимаю это с++ билдер ?
(в случае да,
Код

SendMessage(rhwnd, WM_SETTEXT, NULL, (LPARAM)textBox1->Text.c_str());

имхо )

Автор: Newbie1x 15.9.2009, 17:22
Ну надо, так надо smile

Помогите решить проблему пожалуйста. просто видел много приложений, где поле ввода и кнопка, а они из этого поля вставляют текст в поле чужой программы и жмут кнопку отправить.
Значит, наверное, это возможно и я думаю не сложно.

Автор: Newbie1x 15.9.2009, 18:23
Не, не билдер, VS C++ 2008

Автор: Newbie1x 15.9.2009, 20:44
Чет вы тему в странный раздел переместили, при чем тут C#??? Это ведь C++..

Может перенести в раздел более тематический, я тут ответа буду год ждать:(

Автор: Romikgy 15.9.2009, 21:13
Цитата(Romikgy @  15.9.2009,  16:21 Найти цитируемый пост)
textBox1->Text

в хелпе по VS какой это тип ?

Автор: Любитель 15.9.2009, 21:33
Цитата(Newbie1x @  15.9.2009,  20:44 Найти цитируемый пост)
Чет вы тему в странный раздел переместили, при чем тут C#??? Это ведь C++..

Цитата(Newbie1x @  15.9.2009,  15:54 Найти цитируемый пост)
System::String

Потому что System::String это дотнетовский тип. То, что ты написал в (переформулирую вопрос нормально - "как из System::String получить c-style строку) в дословном виде решаемо через методы класса Marshal (StringToHGlobalAnsi/Uni). Но.. Очень сомневаюсь, что оно тебе нужно smile 

Вообще С++/CLI нужен только для интеграции .Net-а с неуправляемым кодом (если не достаточно COM Interop и PInvoke). Использовать его для обычных прикладных приложений - это извращение.

Возвращаясь к теме. Правильных решений два:
1. .Net version. Перейти на C# (мы ж о правильных решениях?) и использовать маршаллинг для передачи строки в SendMessage (объявив 
соответствующую версию SendMessage, принимающую указатель на c-строку в качестве lParam)
2. C++ version. Перейти на обычный С++ (мы же о правильных решениях?) и использовать чистый WinAPI или какую-нибудь гуи-либу (Qt, wxWidgets, etc.)

Автор: Newbie1x 15.9.2009, 21:34
Цитата

в хелпе по VS какой это тип ? 

Как и в названии темы написанно, System::String

Добавлено через 3 минуты и 10 секунд
Любитель, 
Неужели на VS C++ 2008 нельзя как-то попроще вставить в текстовое поле чужой программы строку?? Выходит, то, что майкрософт втирал, что на их студии удобно и просто ерунда?

А вообще я не хотел бы никуда переходить, так как под студию уже много ф-ций нужных мне для реализации других приложений нашел, а под C++ обычным, они не работают

Автор: Любитель 15.9.2009, 22:49
Цитата(Newbie1x @  15.9.2009,  21:34 Найти цитируемый пост)
Выходит, то, что майкрософт втирал, что на их студии удобно и просто ерунда?

Ты вообще о чём? Без пруфлинка не засчитано (если что - я о том, что никто не говорил, что надо прикладдные приложения на C++/CLI писать).

Цитата(Newbie1x @  15.9.2009,  21:34 Найти цитируемый пост)
А вообще я не хотел бы никуда переходить, так как под студию уже много ф-ций нужных мне для реализации других приложений нашел, а под C++ обычным, они не работают

Я предложил тебе все варианты. Предложил правильные варианты - либо С++, либо .Net (и то, и то, в виде С++/CLI нужно только для интеграции, другое применение глупо и неоправданно).

Не нравятся правильные - используй PInvoke в C++/CLI (ведь в принципе никто не запрещает..) или же метод StringToHGlobalAnsi/Uni (в зависимости от типа целевой строки).

Автор: Newbie1x 16.9.2009, 01:11
Ладно, спасибо.. 
Написал программу на билдере за 5 минут, с чем в VS маялся пол дня..
Тогда буду наверное билдер 2009 качать, 6 уже не устраивает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)