Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

CreateDialog и элемент управления Label

14K
16 декабря 2005 года
pietrowittch
7 / / 16.12.2005
в ресурсе имеется диалоговое окно, на котором расположен один label. когда создаю немодальный диалог через CreateDialog, то функция возвращает NULL. но если label убрать, а поставить, например, command button или вообще ничего не ставить, то все нормально.
в ситуации с label: когда трэйсил, то оказалось, что во время вызова CreateDialog в DlgProc посылается WM_SETFONT, а затем сразу WM_DESTROY. в DlgProc я обрабатываю только WM_INITDIALOG и возвращаю TRUE, на остальные события - FALSE. когда в свойствах диалогового окна ставил No Fail Create в True, то окно создавалось, но лэйбла на нем не было. пробовал даже в DlgProc ставить WM_SETFONT и возвращать TRUE, но не помогло. кстати, GetLastError после CreateDialog выдает operation completed successfully.
видать, все дело в этом WM_SETFONT. может, кто встречался с такой проблемой?

среда разработки: Visual C++ .NET 2002
292
16 декабря 2005 года
Matush
726 / / 14.01.2004
Исходничек пожалуйста
14K
16 декабря 2005 года
pietrowittch
7 / / 16.12.2005
вот проблемный участок. если будет надо, то выложу все с потрохами
292
16 декабря 2005 года
Matush
726 / / 14.01.2004
Сразу бросается в глаза
 
Код:
LRESULT CALLBACK DlgProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
....
return TRUE;

}

А надо return FALSE;
Но может это и не все. Потом гляну детальнее.
14K
17 декабря 2005 года
pietrowittch
7 / / 16.12.2005
там немного по-другому

Код:
LRESULT CALLBACK DlgProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
   switch (uMsg)
   {
      case WM_msg:
         break;

      default:
         return FALSE;
   }
   return TRUE;
}


то есть на необрабатываемых сообщениях всегда будет FALSE, как надо.
14K
17 декабря 2005 года
pietrowittch
7 / / 16.12.2005
страшная тайна раскрыта. оказалось, что я использовал Label из Windows Forms. как ни странно, у меня в тулбоксе ни на одной табе ничего кроме Pointer не было, поэтому я нажал Customize toolbox и мужественно повыбирал оттуда эктивэксы Windows Forms. после двух дней перечитывания MSDN оказалось, что там на вкладке Dialog Editor должны по умолчанию быть Common Controls, но, как я уже сказал, у меня ничего не было. еще полчаса ушло на поиск информации о том, как это исправить. и еще пять минут на поиск кнопки Reset. и вуаля! я пихнул на форму Static и теперь все работает! спасибо за внимание.
292
19 декабря 2005 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by pietrowittch

то есть на необрабатываемых сообщениях всегда будет FALSE, как надо.



Да, default недоглядел.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог