Среда, 24 Апреля 2024, 02:02

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » C/C++ » нужна помощь в работе с winapi контролом edit
нужна помощь в работе с 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 biggrin
вот цитата :
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.


Я буду очень благодарен если ты мне поможешь и это исправить smile
НохчиДата: Пятница, 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 переводит на новую строку - тема закрыта, особая благодарность : Нохчи

Форум игроделов » Программирование » C/C++ » нужна помощь в работе с winapi контролом edit
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг