Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Диалог не реагирует на кнопку Tab


Автор: GP1000 28.3.2009, 12:07
но начинает реагировать как только отключаю shellapi.h 
Для проверки - не использую ничего из этой библиотеки ,просто подключаю #include<shellapi.h>
и диалог перестает реагировать на Tab . 
Может там какие макросы определены ,мешающие нормальной работе ?

Диалог создаю  так : DialogBox(hInstance,MAKEINTRESOURCE(ID_DIALOG),g_hMainWnd,DlgProc);)
Порядок обхода и свойства Tab стоп на элементах  проставлены . 
Процедура диалога :
Код

BOOL CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
  switch (message)
    {
        case WM_INITDIALOG:
                return TRUE;
                case WM_CLOSE:
                EndDialog(hDlg);
                return TRUE;
        }
      return FALSE;
}







 

Автор: GremlinProg 28.3.2009, 13:35
GP1000, если вопрос решен, то в чем была причина?

Автор: GP1000 28.3.2009, 21:07
проблема решена подключением shellapi в stdafx.h сразу после windows.h

Автор: xvr 30.3.2009, 13:44
Это не решение  smile Где вызов DefDlgProc из вашей DlgProc?

Автор: Dem_max 30.3.2009, 13:51
xvr
Цитата

Где вызов DefDlgProc из вашей DlgProc?

При создании далогового окна с помощью DialogBox() вызов DefDlgProc не нужен

Автор: GremlinProg 30.3.2009, 16:14
честно говоря, ни какого решения проблемы в GUI, путем подключения/переподключения API-хидеров просто не бывает,
xvr, скорее всего на это и хотел обратить внимание, но видимо просто незаметил объявление диалоговой функции окна ), бывает

а на счет Tab, как я понимаю, тут скорее вcего был упущен вызов функции трансляции диалога IsDialogMessage в главном цикле обработки сообщений

хотя как этого можно добиться в DialogBox, не знаю, у него же свой цикл,
по моему такого эффекта реально можно достичь только в ручном режиме, т.е. как раз на CreateDialog + `main message loop`

Автор: GP1000 31.3.2009, 10:42
извините ,ошибся .
Все проще ..но  я увидел это только потом.  Я создавал немодальный диалог с помощью CreateDialog() но думал что создаю модальный диалог . и естественно он не реагировал на кнопку Tab . Чтобы решить проблему я начал вставлять DialogBox() в различные части кода (а он достаточно большой), что то отключать и подключать. Ну и после каких то манипуляций добрался до shellapi.h. Не знаю как сделал это вывод по поводу работоспособности при отключении shellapi.h ,но сделал .
Всем спасибо за внимание. 
Тему можно закрыть . или удалить вообще  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)