LRESULT CALLBACK DlgProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
....
return TRUE;
}
CreateDialog и элемент управления Label
в ситуации с 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
Исходничек пожалуйста
вот проблемный участок. если будет надо, то выложу все с потрохами
Код:
А надо return FALSE;
Но может это и не все. Потом гляну детальнее.
Код:
LRESULT CALLBACK DlgProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_msg:
break;
default:
return FALSE;
}
return TRUE;
}
{
switch (uMsg)
{
case WM_msg:
break;
default:
return FALSE;
}
return TRUE;
}
то есть на необрабатываемых сообщениях всегда будет FALSE, как надо.
страшная тайна раскрыта. оказалось, что я использовал Label из Windows Forms. как ни странно, у меня в тулбоксе ни на одной табе ничего кроме Pointer не было, поэтому я нажал Customize toolbox и мужественно повыбирал оттуда эктивэксы Windows Forms. после двух дней перечитывания MSDN оказалось, что там на вкладке Dialog Editor должны по умолчанию быть Common Controls, но, как я уже сказал, у меня ничего не было. еще полчаса ушло на поиск информации о том, как это исправить. и еще пять минут на поиск кнопки Reset. и вуаля! я пихнул на форму Static и теперь все работает! спасибо за внимание.
Цитата:
Originally posted by pietrowittch
то есть на необрабатываемых сообщениях всегда будет FALSE, как надо.
то есть на необрабатываемых сообщениях всегда будет FALSE, как надо.
Да, default недоглядел.