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


Автор: Тутанхамец 15.1.2006, 15:38
Господа и товарищи, у меня такой вопрос.

Делаю простенькую прогу на Visual C++. Хотел обойтись одним диалоговым окном в качестве интерфейса. У П.В. Румянцева в книжке "Азбука программирования в Win32 API" читаю:

Цитата

Возможно, конечно, создание диалоговых окон без родителя, но тогда придется писать огромное количество кода, обеспечивающее нормальное функционирование окна.


Я попробовал. На глаз в поведении окна никаких странностей. В чем подвох? Что за огромное количество кода и что уважаемый П.В. понимал под нормальным функционирование, как вы думаете? Заранее благодарен. smile

Код пробной проги:

Код

#include "windows.h"
#include "windowsx.h"
#include "commctrl.h"
#include "resource.h"

BOOL CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM);


int APIENTRY WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){

DialogBox(hInstance, (LPCTSTR)IDD_DIALOG_HELLO, NULL, DlgProc);

return 0;
}


BOOL CALLBACK DlgProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam){

    switch(Msg){
    case WM_INITDIALOG: 

    
    return TRUE;

    case WM_CLOSE:

        EndDialog(hDlg,0);
    return TRUE;

    case WM_COMMAND:


    return TRUE;

    }


return FALSE;
}


Автор: Fixin 15.1.2006, 15:49
Он имел ввиду, что если тебе понадобиться полные возможности контроля окна, то код будет иным, и возможно, больше. А так - довольно распространенный метод создания приложения "по-быстрому", особенно часто применятся в ассемблере для винды.

Автор: JoyEx 15.1.2006, 15:59
Может уважаемый П.В. писал еще до появления Win95, ведь DialogProc появилась с Windows 95?

Автор: Fixin 15.1.2006, 16:08
Цитата(Тутанхамец @ 15.1.2006, 16:38 Найти цитируемый пост)

П.В. Румянцева в книжке "Азбука программирования в Win32 API"
Думаю, это сопоставимо с появлением 95го. smile

Автор: Тутанхамец 15.1.2006, 16:13
Спасибо, Fixin! С сомнениями покончено! smile

А Румянцев писал про 95-й и NT 4.0.


Автор: rsm 15.1.2006, 16:46
Цитата(Тутанхамец @ 15.1.2006, 17:38 Найти цитируемый пост)
Возможно, конечно, создание диалоговых окон без родителя, но тогда придется писать огромное количество кода, обеспечивающее нормальное функционирование окна.

Бред какой-то. Ну будет окно диалога без родителя, т.е. полностью самостоятельное - все равно придется писать для него отдельную функцию DialogProc (хотя бы для того, чтобы нормально закрыть). Так что не вижу никакой разницы в объемах кода.

Может быть подразумевается несколько иное: у диалоговых окон можно просто накидать нужные контролы, а при рукопашном создании окна так же придется создавать полностью вручную и все контролы? Но тогда получается с точностью до наоборот - диалог куда проще в создании и управлении.

В общем, бред какой-то smile

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