Динамическое создание диалога - ХЭЛП
------------------------------------
Заранее спасибо! :D
Цитата:
Originally posted by СержЫк
Сколько не пытался по книжкам понять, как создать динамически блок диалога (в смысле с помощью шаблона диалоговой панели [DLGTEMPLATE]), ничего у меня не получилось... если кто понимает, как это делается, не будете ли добры примерчик процедурки создания такой панельки выложить? Только, плиз, только чистый код, без вызова других процедур (например, для выравнивания по слову и т.д. ;-)
------------------------------------
Заранее спасибо! :D
Сколько не пытался по книжкам понять, как создать динамически блок диалога (в смысле с помощью шаблона диалоговой панели [DLGTEMPLATE]), ничего у меня не получилось... если кто понимает, как это делается, не будете ли добры примерчик процедурки создания такой панельки выложить? Только, плиз, только чистый код, без вызова других процедур (например, для выравнивания по слову и т.д. ;-)
------------------------------------
Заранее спасибо! :D
совсем маленький примерчик::
struct t_t
{
DLGTEMPLATE d;
WORD a, b, c;
} t;
/*
typedef struct {
DWORD style;
DWORD dwExtendedStyle;
WORD cdit;
short x;
short y;
short cx;
short cy;
} DLGTEMPLATE;
*/
t.d.style = DS_CENTER | WS_OVERLAPPEDWINDOW;
t.d.dwExtendedStyle = 0;
t.d.cdit = 0;
t.d.x = t.d.y = 0;
t.d.cx = t.d.cy = 150;
t.a = t.b = t.c = 0; // без меню, заголовка и имени класса.
DialogBoxIndirectParam(hInst, &t.d, NULL, DlgFunc, 0);
:) 8)
Код:
DialogBox(hInst, (LPCTSTR)IDD_SOLVIDE, hWnd, (DLGPROC)CompetDialog);
где IDD_SOLVIDE идентификатор шаблона, CompetDialog - оконная процедура диалога,
hWnd - Хэндл окна из которого диалог вызывается
hInst - хэндл копии твоего приложения.
оконная процедура диалога:
Код:
LRESULT CALLBACK CompetDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDOK:
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
break;
case IDCANCEL:
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
break;
};
break;
}
return FALSE;
};
{
switch (message)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDOK:
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
break;
case IDCANCEL:
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
break;
};
break;
}
return FALSE;
};