Re[2]: Диалог из длл
От: Max M. Ниоткуда  
Дата: 21.05.09 23:44
Оценка: +1
Здравствуйте, developer_s, Вы писали:

_>Маленькое уточнение:

_>такое происходит тогда, когда я добавляю в диалог List Control.

InitCommonControlsEx?
// ...
подпись
Диалог из длл
От: developer_s  
Дата: 21.05.09 21:32
Оценка:
Народ! Я чета туплю...
Не могу отобразить диалог, который находится в ДЛЛ (его темплейт). Как не бьюсь -- хрен.

вот так пробовал:
приходят в ДлгПрок следующие мессаги: WM_SETFONT, WM_DESTROY, WM_NCDESTROY и все
int APIENTRY _tWinMain(HINSTANCE hInstance,
                       HINSTANCE hPrevInstance,
                       LPTSTR    lpCmdLine,
                       int       nCmdShow)
{
    HMODULE hmod = GetModuleHandle(_T("DllStatic.dll"));
    HRSRC hResDlg = FindResource(GetModuleHandle(_T("DllStatic.dll")), MAKEINTRESOURCE(IDD_DIALOG_LAB), RT_DIALOG);
    if (NULL == hResDlg)
    {
        MessageBox(NULL, _T("Could not locate dialog box."), _T("Error"), MB_OK);
        return 0;
    }
    
    HGLOBAL hResLoad = LoadResource(hmod, hResDlg);
    if (NULL == hResLoad)
    {
        MessageBox(NULL, _T("Could not load dialog box."), _T("Error"), MB_OK);
        return 0;
    }

    LPVOID lpResLock = LockResource(hResLoad);
    if (NULL == lpResLock)
    {
        MessageBox(NULL, _T("Could not lock dialog box."), _T("Error"), MB_OK);
        return 0;
    }
    CreateDialogIndirectParam(hInstance, (LPCDLGTEMPLATEW)lpResLock, NULL, DlgProc, 0);
    return 0;
}



так тоже самое:
int APIENTRY _tWinMain(HINSTANCE hInstance,
                       HINSTANCE hPrevInstance,
                       LPTSTR    lpCmdLine,
                       int       nCmdShow)
{
    DialogBoxParam(GetModuleHandle(_T("DllStatic.dll")), MAKEINTRESOURCE(IDD_DIALOG_LAB), NULL, DlgProc, 0);
    return 0;
}



А так выдает ошибку 1814 (The specified resource name cannot be found in the image file.):
int APIENTRY _tWinMain(HINSTANCE hInstance,
                       HINSTANCE hPrevInstance,
                       LPTSTR    lpCmdLine,
                       int       nCmdShow)
{
    DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_DIALOG_LAB), NULL, DlgProc, 0);
    err = GetLastError();
    return 0;
}


Сама DlgProc:

BOOL CALLBACK DlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int wmId, wmEvent;

    switch (message)
    {
    case WM_INITDIALOG:
        {
            return TRUE;
        }
    case WM_COMMAND:
        wmId    = LOWORD(wParam);
        wmEvent = HIWORD(wParam);

        switch (wmId)
        {
        case IDOK:
            EndDialog(hWnd, IDOK);
            break;
        case IDCANCEL:
            EndDialog(hWnd, IDCANCEL);
            break;
        }
    }

    return FALSE;
}


Чего не так делаю?
Re: Диалог из длл
От: developer_s  
Дата: 21.05.09 21:58
Оценка:
Маленькое уточнение:
такое происходит тогда, когда я добавляю в диалог List Control.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.