Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Создание дочернего окна  (Прочитано 11010 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ciril
Гость
« : 14-02-2007 06:06 » 

Используя MFC, необходимо в текстовом поле перехватывать сообщение WM_CHAR. Как создать это самое текстовое поле, помогите, пожалуйста.
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 14-02-2007 11:04 » 

Какая студия?

Вот такое не осилишь?

Добавляешь в проект class CMyEdit : public CEdit

Создать диалог, в редакторе ресурсов добавить в него элемент управления Edit ID IDC_MY_EDIT

В диалоге создаёшь объект потомок CMyEdit m_edMyEdit;

в ф-ю DoDataExchange добавляешь строчку

DDX_Control(pDX, ID IDC_MY_EDIT, m_edMyEdit);

всё
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
ciril
Гость
« Ответ #2 : 15-02-2007 08:57 » 

MS VisualStudio.NET Задача такая: запуск окна с полем ввода и кнопками OK&CANCEL, при вводе в текстовом поле работает тезаурус: перехватывается WM_CHAR и обрабатывается скан-код(!) клавиши. Все написано на assemblere и работает. Интегрирую с AutoCAD'ом, где MFC, оставляю процедуру тузауруса на assembler, но создать окно MFC, работающее также не мог, DDX_ IDC_ не возвращает скан-код, сейчас написано след:

void word_dia::OnCreateExtendedCtrl()
{
edWnd = new editWord;
CWnd* pWnd; HWND hWnd; hWnd = this->GetSafeHwnd(); pWnd = FromHandle(hWnd);
RECT rect; this->GetClientRect(&rect); rect.bottom-=30;rect.left-=5;rect.right-=5;rect.top-=5;
edWnd->CreateEx(WS_EX_CLIENTEDGE, _T("EDIT"), NULL, WS_CHILD | WS_VISIBLE,rect, Wnd, NULL);
}

Перехватываю WM_CHAR и WM_PAINT и работает.
« Последнее редактирование: 15-12-2007 16:15 от Алексей1153++ » Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #3 : 15-02-2007 10:52 » 

Если честно, то я нифига не понял. Особенно "тезаурус".

Ты хочешь доступ получить к чужому едиту? Ты ведь спросил как поле создать. Я тебе рассказал. След. этапом было бы добавление ф-ции обработки OnChar в CMyEdit. А теперь я вобще ничего не понимаю. Причём здесь ассемблер?

DDX_ просто создаёт объект связанный с ресурсом IDC_MY_EDIT. ПРактически то, что ты написал в Create

Короче вот, как говорил один персонаж: "Я не мастер произносить речи. Мне проще спеть."




* Test1.zip (39.76 Кб - загружено 855 раз.)
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines