Диалог из длл

Тема в разделе "WASM.WIN32", создана пользователем sasha_s, 22 май 2009.

  1. sasha_s

    sasha_s New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2005
    Сообщения:
    165
    Адрес:
    Belarus
    Народ! Я чета туплю...
    Не могу отобразить диалог, который находится в ДЛЛ (его темплейт). Как не бьюсь -- хрен.

    вот так пробовал:
    приходят в ДлгПрок следующие мессаги: WM_SETFONT, WM_DESTROY, WM_NCDESTROY и все
    Код (Text):
    1. int APIENTRY _tWinMain(HINSTANCE hInstance,
    2.                        HINSTANCE hPrevInstance,
    3.                        LPTSTR    lpCmdLine,
    4.                        int       nCmdShow)
    5. {
    6.     HMODULE hmod = GetModuleHandle(_T("DllStatic.dll"));
    7.     HRSRC hResDlg = FindResource(GetModuleHandle(_T("DllStatic.dll")), MAKEINTRESOURCE(IDD_DIALOG_LAB), RT_DIALOG);
    8.     if (NULL == hResDlg)
    9.     {
    10.         MessageBox(NULL, _T("Could not locate dialog box."), _T("Error"), MB_OK);
    11.         return 0;
    12.     }
    13.    
    14.     HGLOBAL hResLoad = LoadResource(hmod, hResDlg);
    15.     if (NULL == hResLoad)
    16.     {
    17.         MessageBox(NULL, _T("Could not load dialog box."), _T("Error"), MB_OK);
    18.         return 0;
    19.     }
    20.  
    21.     LPVOID lpResLock = LockResource(hResLoad);
    22.     if (NULL == lpResLock)
    23.     {
    24.         MessageBox(NULL, _T("Could not lock dialog box."), _T("Error"), MB_OK);
    25.         return 0;
    26.     }
    27.     CreateDialogIndirectParam(hInstance, (LPCDLGTEMPLATEW)lpResLock, NULL, DlgProc, 0);
    28.     return 0;
    29. }
    так тоже самое:
    Код (Text):
    1. int APIENTRY _tWinMain(HINSTANCE hInstance,
    2.                        HINSTANCE hPrevInstance,
    3.                        LPTSTR    lpCmdLine,
    4.                        int       nCmdShow)
    5. {
    6.     DialogBoxParam(GetModuleHandle(_T("DllStatic.dll")), MAKEINTRESOURCE(IDD_DIALOG_LAB), NULL, DlgProc, 0);
    7.     return 0;
    8. }
    А так выдает ошибку 1814 (The specified resource name cannot be found in the image file.):
    Код (Text):
    1. int APIENTRY _tWinMain(HINSTANCE hInstance,
    2.                        HINSTANCE hPrevInstance,
    3.                        LPTSTR    lpCmdLine,
    4.                        int       nCmdShow)
    5. {
    6.     DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_DIALOG_LAB), NULL, DlgProc, 0);
    7.     err = GetLastError();
    8.     return 0;
    9. }
    Сама DlgProc:
    Код (Text):
    1. BOOL CALLBACK DlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    2. {
    3.     int wmId, wmEvent;
    4.  
    5.     switch (message)
    6.     {
    7.     case WM_INITDIALOG:
    8.         {
    9.             return TRUE;
    10.         }
    11.     case WM_COMMAND:
    12.         wmId    = LOWORD(wParam);
    13.         wmEvent = HIWORD(wParam);
    14.  
    15.         switch (wmId)
    16.         {
    17.         case IDOK:
    18.             EndDialog(hWnd, IDOK);
    19.             break;
    20.         case IDCANCEL:
    21.             EndDialog(hWnd, IDCANCEL);
    22.             break;
    23.         }
    24.     }
    25.  
    26.     return FALSE;
    27. }
    Как этот диалог отобразить, причем надо чтобы темплейт на него лежал именно в длл а все операции были в ЕХЕ?
     
  2. sasha_s

    sasha_s New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2005
    Сообщения:
    165
    Адрес:
    Belarus
    Маленькое уточнение:
    такое происходит тогда, когда я добавляю в диалог List Control.
     
  3. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    какой лмт контрол??? типа как у explorer`a??? если да, то подгрузи шелл32.длл до вызова диалогового окна
     
  4. sasha_s

    sasha_s New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2005
    Сообщения:
    165
    Адрес:
    Belarus
    СУПЕР!
    Заработало!

    Блин... Всегда создавал прожекты в визарде в любой студии и все работало, а тут надо ручками подгружать...