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


Автор: M_A_Y_ 21.11.2007, 23:31
Всем добрый вечер. Мне надо сделать скриншот диалоговых окон которое создается. Окна берутся из .dll. Сейчас скриншот делаеться в ответ на сообщение WM_COMMAND (IDOK, IDCANCEL). Как сделать так чтобы не надо было нажимать ни на какие кнопки, а диалоги сами открывались фотались и закрывались??? Есть какое-то сообщение сразу после создания окна. К примеру как WM_INITDIALOG ( он не подходит потому что при его вызове окно еще не отображаеться и фоткать собственно нечего). Вот кусок кода:
Код


void CDlgSearchDlg::OnBnClickedOk()
{
    HMODULE hDll;
    hDll = LoadLibraryW(L"D:\\Handmade\\C++\\SCAD\\dll_dlg\\DlgSearch\\scdlg0.dll");
    if(hDll==NULL)
    {
        MessageBoxW(L"Dll не найдена");
    }
    //EnumResourceNames(hDll,RT_DIALOG,(ENUMRESNAMEPROC)DlgFind,0);
    
    if(!EnumResourceNames(hDll,RT_DIALOG,(ENUMRESNAMEPROC)DlgFind,0))
    {
        MessageBoxW(L"ошибка поиска диалогов");
    }
    OnOK();
}

BOOL DlgFind(HMODULE hModule,LPCTSTR lpszType,LPTSTR lpszName,LONG_PTR lParam)
{
    lpszDialogName=lpszName;
    INT_PTR hnDlg;    
    hnDlg=DialogBoxW(hModule,lpszName,NULL,(DLGPROC)DlgCopy);
    
    return TRUE;
}

INT_PTR DlgCopy(HWND hwndDlg,UINT message,WPARAM wParam,LPARAM lParam)
{
    size_t MaxX=400,MaxY=400;
    HDC hdcDialog = GetWindowDC(hwndDlg);
    switch (message) 
    {    
    case WM_COMMAND: 
        switch (LOWORD(wParam))
        { 
        case IDOK:            
            SaveDlg(hwndDlg);
            EndDialog(hwndDlg, wParam); 
            return TRUE;
        case IDCANCEL:            
            SaveDlg(hwndDlg);
            EndDialog(hwndDlg, wParam); 
            return TRUE; 
        }
    }    
    //EndDialog(hwndDlg, wParam);
    return FALSE;

}


SaveDlg(hwndDlg) изображения сохраняет, проверено.

Автор: LostSoul 21.11.2007, 23:36
Емм... На второе сообщение WM_PAINT должно точноуже быть все прорисовано

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