BOOL CALLBACK AboutDialogProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ) { switch(message) { case WM_INITDIALOG: return TRUE; case WM_COMMAND: switch(LOWORD(wParam)) { case IDOK: EndDialog(hwnd,IDOK); break; case IDCANCEL: EndDialog(hwnd,IDCANCEL); break; default: return FALSE; } break; } return TRUE; }
case ID_MENU_ABOUTSOFTWARE: int dialogreturn = DialogBox(GetModuleHandle(NULL),MAKEINTRESOURCE(IDD_ABOUTDIALOG),hwnd,AboutDialogProc); switch(dialogreturn) { case IDOK: MessageBox(hwnd,"OK!","Dialogreturn",MB_OK); break; case IDCANCEL: MessageBox(hwnd,"CANCEL!","Dialogreturn",MB_OK); break; } break;
最后一个return改成return FALSE;
Typically, the dialog box procedure should return TRUE if it processed the message, and FALSE if it did not. If the dialog box procedure returns FALSE, the dialog manager performs the default dialog operation in response to the message.
谢谢你,不过我按你的说法改了之后还是不行,我在想是不是win7环境下运行的原因,毕竟VC6.0太久远了
BOOL CALLBACK AboutDialogProc(
HWND hwnd,
UINT message,
WPARAM wParam,
LPARAM lParam
)
{
switch(message)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
EndDialog(hwnd,IDOK);
break;
case IDCANCEL:
EndDialog(hwnd,IDCANCEL);
break;
default:
return FALSE;
}
break;
}
return TRUE;
}
case ID_MENU_ABOUTSOFTWARE:
int dialogreturn = DialogBox(GetModuleHandle(NULL),MAKEINTRESOURCE(IDD_ABOUTDIALOG),hwnd,AboutDialogProc);
switch(dialogreturn)
{
case IDOK:
MessageBox(hwnd,"OK!","Dialogreturn",MB_OK);
break;
case IDCANCEL:
MessageBox(hwnd,"CANCEL!","Dialogreturn",MB_OK);
break;
}
break;
HWND hwnd,
UINT message,
WPARAM wParam,
LPARAM lParam
)
{
switch(message)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
EndDialog(hwnd,IDOK);
break;
case IDCANCEL:
EndDialog(hwnd,IDCANCEL);
break;
default:
return FALSE;
}
break;
}
return TRUE;
}
26行 最后这个返回FALSE。不是TRUE