阅读:2088回复:10
关于对话框和SERVICE_STATUS的一点问题(VC)。知道的请帮下忙
生成对话框后。如果在资源里删除掉OK和CANCEL按纽,对话框就没有办法关闭。大家又什么办法让右上角的那个关闭启作用?在SDK下又该如何?我写了
case WM_CLOSE: EndDialog(hDlg, result); return TRUE; case WM_DESTROY: EndDialog(hDlg, result); return TRUE; case WM_QUIT: EndDialog(hDlg, result); return TRUE; 但是都没用。。 还有就是定义SERVICE_STATUS ServiceStatus;的问题 在console下都可以成功编译。(只要包含了windows.h) 但是使用了MFC以后。竟然不管怎么加#include <windows.h>都出现编译错误。 说SERVICE_STATUS是没定义的标志符。(undeclared identifier) 真见鬼了!! |
|
沙发#
发布于:2005-02-24 15:03
void CKDlg::OnOK()
{ // TODO: Add extra validation here CDialog::OnOK(); } |
|
板凳#
发布于:2005-02-24 17:16
我说的是把OK和CANCEL按扭删掉以后啦!
可能我说的不是很清楚了。。 |
|
地板#
发布于:2005-02-25 08:26
右上角的最小化,最大化,关闭按钮不是有效吗
|
|
|
地下室#
发布于:2005-03-09 13:37
重载CDialog::OnCancel函数
|
|
|
5楼#
发布于:2005-03-12 12:11
右上角的最小化,最大化,关闭按钮不是有效吗
说的太对了。。就是这三个按纽通通没用啊!!!! 完全不起做用了。。完整代码如下 #include <windows.h> #include\"resource.h\" INT_PTR CALLBACK DlgProc1(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); int PASCAL WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow) { MSG msg; DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL,(DLGPROC)DlgProc1); while (GetMessage (&msg, NULL, 0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return (0); } INT_PTR CALLBACK DlgProc1(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { LRESULT result=0; switch(message) { case WM_SYSCOMMAND: switch(wParam) { case SC_CLOSE: EndDialog(hDlg, result); return TRUE; } return TRUE; case WM_CLOSE: EndDialog(hDlg, result); return TRUE; case WM_DESTROY: EndDialog(hDlg, result); return TRUE; case WM_QUIT: EndDialog(hDlg, result); return TRUE; case WM_COMMAND: switch( wParam) { case IDOK: EndDialog(hDlg, result); return TRUE; } break; default: return DefWindowProc(hDlg,message,wParam,lParam ); } return FALSE; } |
|
6楼#
发布于:2005-03-12 14:35
MFC中包括Afx?.h,具体?是什么忘了。
只有按关闭按钮才发送WM_CLOSE。 记住,对话框也是窗口,如果关闭按钮不起作用,可以得到窗口句柄后调用SetWindowsLong,如果要改窗口类用SetClassLong |
|
|
7楼#
发布于:2005-03-12 15:07
明白了。
关闭按纽是 case IDCANCEL: 呵呵。。 谢谢大家 |
|
8楼#
发布于:2005-03-13 09:05
编写WM_CLOSE对应的函数:
|
|
驱动老牛
|
9楼#
发布于:2005-03-13 21:02
我说的是把OK和CANCEL按扭删掉以后啦! 这是著名VC的BUG啦 装VC SP6就可以了。 |
|
10楼#
发布于:2005-03-14 12:32
IDOK和IDCANCEL是一直存在的,要关闭对话框,处理IDCANCEL消息就可以了,我一直是这样做的,没有问题。另外搂主在对话框窗口过程中不应该调用DefWindowProc(hDlg,message,wParam,lParam );SDK中说的很明白了。
|
|