在一个新建单文档的project的当中,创建了一个对话框类MyDialog,对话框当中有
两个默认的按钮ok 和cancel,然后我在单文档的菜单中新建了一个菜单项为产生
“对话框”,在这个菜单项当中执行的函数体如下:
void CMainFrame::OnCreatdialog()
{
HWND hwnd;
hwnd=CreateDialog(NULL,MAKEINTRESOURCE(IDD_DIALOG1),NULL,NULL);
::ShowWindow (hwnd,SW_SHOWMAXIMIZED);
}
运行之后,对话框可按预想产生出来,但是问题是按钮按下后都没有任何的反应
(比如IDOK()的代码为:MessageBox("thank you very much~");)
我看了一些资料,这个CreateDialog函数用在sdk中的比较多,因为在sdk中消息
的传递脉络很清晰。我搞了很长时间也没有搞明白,不知那位高手可以指点一下呀~!!
两个默认的按钮ok 和cancel,然后我在单文档的菜单中新建了一个菜单项为产生
“对话框”,在这个菜单项当中执行的函数体如下:
void CMainFrame::OnCreatdialog()
{
HWND hwnd;
hwnd=CreateDialog(NULL,MAKEINTRESOURCE(IDD_DIALOG1),NULL,NULL);
::ShowWindow (hwnd,SW_SHOWMAXIMIZED);
}
运行之后,对话框可按预想产生出来,但是问题是按钮按下后都没有任何的反应
(比如IDOK()的代码为:MessageBox("thank you very much~");)
我看了一些资料,这个CreateDialog函数用在sdk中的比较多,因为在sdk中消息
的传递脉络很清晰。我搞了很长时间也没有搞明白,不知那位高手可以指点一下呀~!!
{
static CMyDialog dlg;
dlg.Create(dlg.IDD, this);
dlg.ShowWindow(SW_SHOW);
}记得包含你的对话框类的头文件
如果用模态方式,则创建对象,然后DoModal()就行,
如果用非模态方式,则定义成指针对象(框架类的成员),再用Create创建就行了!
BOOL CALLBACK DlgProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
BOOL fError;
switch (message)
{
case WM_INITDIALOG:
CheckDlgButton(hwndDlg, ID_ABSREL, fRelative);
return TRUE;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDOK:
fRelative = IsDlgButtonChecked(hwndDlg,
ID_ABSREL);
iLine = GetDlgItemInt(hwndDlg, ID_LINE,
&fError, fRelative);
if (fError)
{
MessageBox(hwndDlg, SZINVALIDNUMBER,
SZGOTOERR, MB_OK);
SendDlgItemMessage(hwndDlg, ID_LINE,
EM_SETSEL, 0, -1L);
}
else // Notify the owner window to carry out the task.
return TRUE;
case IDCANCEL:
DestroyWindow(hwndDlg);
hwndGoto = NULL;
return TRUE;
}
}
return FALSE;
}