нужна помощь в работе с winapi контролом edit
|
|
alex_proger | Дата: Пятница, 06 Июля 2012, 18:58 | Сообщение # 1 |
участник
Сейчас нет на сайте
| Вообщем задача : есть окно на котором расположен edit (в нём есть атрибут ES_READONLY | ES_MULTILINE) и надо получить от туда текст (ф-ия GetWindowText), соеденить этот текст со строкой "\n" и со строкой которая поступает в ф-ию в качестве аргумента (переменная хранящая строку-аргумент : title) и изменить значение edit при помощи ф-ии SetWindowText. Проблема : никак не получается соеденять строки типов LPCSTR и LPSTR.
Помогите пожалуйста
|
|
| |
Нохчи | Дата: Пятница, 06 Июля 2012, 19:02 | Сообщение # 2 |
заслуженный участник
Сейчас нет на сайте
| Quote (alex_proger) никак не получается соеденять строки типов LPCSTR и LPSTR. У обеих АПИ есть анси и юникод версии, непонятно в чем проблема вообще.
Многие вопросы по Windows отпадут, если посмотреть тут
|
|
| |
alex_proger | Дата: Пятница, 06 Июля 2012, 19:06 | Сообщение # 3 |
участник
Сейчас нет на сайте
| проблема в соединении строк таких типов : как это сделать??
|
|
| |
Нохчи | Дата: Пятница, 06 Июля 2012, 19:13 | Сообщение # 4 |
заслуженный участник
Сейчас нет на сайте
| А, сорь, невнимательно прочитал первый пост. Ты не можешь присоеденить LPSTR к LPCSTR(константа), но можешь присоеденить LPCSTR к LPSTR. Можно заюзать strcat Code LPCSTR a = "AAAA"; LPSTR b = "SSSSS"; strcat(b,a);
Многие вопросы по Windows отпадут, если посмотреть тут
Сообщение отредактировал Нохчи - Пятница, 06 Июля 2012, 19:13 |
|
| |
alex_proger | Дата: Пятница, 06 Июля 2012, 19:20 | Сообщение # 5 |
участник
Сейчас нет на сайте
| не даёт исключение ссылаясь на strcat.asm (ассамблер о_0) вот весь код ф-ии : Code void AddEvent(std::string title) { LPCSTR titles = title.c_str(); LPSTR valve = " "; GetWindowText(hEdit, valve, 2000); strcat(valve, titles); SetWindowText(hEdit, valve); }
Сообщение отредактировал alex_proger - Пятница, 06 Июля 2012, 19:25 |
|
| |
Нохчи | Дата: Пятница, 06 Июля 2012, 19:30 | Сообщение # 6 |
заслуженный участник
Сейчас нет на сайте
| Oh фейл, там же память сначала нужно выделить., чето совсем крыша едет Code LPCSTR titles = title.c_str(); LPSTR valve = new CHAR[title.length()*2]; ZeroMemory(valve, title.length()*2); strcat(valve, titles);
Многие вопросы по Windows отпадут, если посмотреть тут
Сообщение отредактировал Нохчи - Пятница, 06 Июля 2012, 19:33 |
|
| |
alex_proger | Дата: Пятница, 06 Июля 2012, 19:35 | Сообщение # 7 |
участник
Сейчас нет на сайте
| извини, может я тебя уже достал, но всё же ... теперь c++ ссылатся на malloc.c вот цитата : Quote Windows has triggered a breakpoint in Magic Engine.exe.
This may be due to a corruption of the heap, which indicates a bug in Magic Engine.exe or any of the DLLs it has loaded.
This may also be due to the user pressing F12 while Magic Engine.exe has focus.
The output window may have more diagnostic information.
Я буду очень благодарен если ты мне поможешь и это исправить
|
|
| |
Нохчи | Дата: Пятница, 06 Июля 2012, 19:41 | Сообщение # 8 |
заслуженный участник
Сейчас нет на сайте
| Ругается на код из #6 ? Затестил вот это Code void AddEvent(std::string title) { LPCSTR titles = title.c_str(); LPSTR valve = new CHAR[title.length()*2]; ZeroMemory(valve, title.length()*2); strcat(valve, titles); }
int WINAPI wWinMain( HINSTANCE, HINSTANCE, LPWSTR, int ) { AddEvent("SSS"); } поставил точку останова на strcat, никаких фейлов, в valve оказалось "SSS". Покажи какой код компилишь.
Многие вопросы по Windows отпадут, если посмотреть тут
|
|
| |
alex_proger | Дата: Пятница, 06 Июля 2012, 19:45 | Сообщение # 9 |
участник
Сейчас нет на сайте
| Код из твоего последнего поста работает отлично, спасибо. А не подскажешь в edit можно делать многострочным?
|
|
| |
Нохчи | Дата: Пятница, 06 Июля 2012, 19:47 | Сообщение # 10 |
заслуженный участник
Сейчас нет на сайте
| ES_MULTILINE
Многие вопросы по Windows отпадут, если посмотреть тут
|
|
| |
alex_proger | Дата: Пятница, 06 Июля 2012, 19:48 | Сообщение # 11 |
участник
Сейчас нет на сайте
| а перенос строки осуществляется через \n или как то по другому? я просто ставил этот атрибут и атрибут ES_READONLY
|
|
| |
Нохчи | Дата: Пятница, 06 Июля 2012, 19:53 | Сообщение # 12 |
заслуженный участник
Сейчас нет на сайте
| Не помню, попробуй и узнаешь. Ты хочешь что текст в контроле можно было редактировать только программно ?
Многие вопросы по Windows отпадут, если посмотреть тут
|
|
| |
alex_proger | Дата: Пятница, 06 Июля 2012, 20:13 | Сообщение # 13 |
участник
Сейчас нет на сайте
| да, это что то типа консоли отладки (т.е. во время исполнения основного кода вызывается эта ф-ия которая добавляет новую строку в этот контрол) Добавлено (06.07.2012, 20:13) --------------------------------------------- \r\n переводит на новую строку - тема закрыта, особая благодарность : Нохчи
|
|
| |