makefriend8
驱动小牛
驱动小牛
  • 注册日期2003-08-01
  • 最后登录2014-06-27
  • 粉丝0
  • 关注0
  • 积分84分
  • 威望111点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
阅读:2088回复:10

关于对话框和SERVICE_STATUS的一点问题(VC)。知道的请帮下忙

楼主#
更多 发布于:2005-02-24 13:57
生成对话框后。如果在资源里删除掉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)
真见鬼了!!
xuzheng318
驱动牛犊
驱动牛犊
  • 注册日期2005-01-24
  • 最后登录2005-03-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-02-24 15:03
void CKDlg::OnOK()
{
// TODO: Add extra validation here

CDialog::OnOK();
}
makefriend8
驱动小牛
驱动小牛
  • 注册日期2003-08-01
  • 最后登录2014-06-27
  • 粉丝0
  • 关注0
  • 积分84分
  • 威望111点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-02-24 17:16
我说的是把OK和CANCEL按扭删掉以后啦!

可能我说的不是很清楚了。。
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-02-25 08:26
右上角的最小化,最大化,关闭按钮不是有效吗
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
xbzjackey
驱动小牛
驱动小牛
  • 注册日期2002-12-27
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望34点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-03-09 13:37
重载CDialog::OnCancel函数
回答好的不要忘了给分哦。。。
makefriend8
驱动小牛
驱动小牛
  • 注册日期2003-08-01
  • 最后登录2014-06-27
  • 粉丝0
  • 关注0
  • 积分84分
  • 威望111点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
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;
}
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-03-12 14:35
MFC中包括Afx?.h,具体?是什么忘了。
只有按关闭按钮才发送WM_CLOSE。
记住,对话框也是窗口,如果关闭按钮不起作用,可以得到窗口句柄后调用SetWindowsLong,如果要改窗口类用SetClassLong
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
makefriend8
驱动小牛
驱动小牛
  • 注册日期2003-08-01
  • 最后登录2014-06-27
  • 粉丝0
  • 关注0
  • 积分84分
  • 威望111点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-03-12 15:07
明白了。

关闭按纽是
case IDCANCEL:

呵呵。。

谢谢大家
Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-03-13 09:05
编写WM_CLOSE对应的函数:
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2005-03-13 21:02
我说的是把OK和CANCEL按扭删掉以后啦!

可能我说的不是很清楚了。。

这是著名VC的BUG啦
装VC SP6就可以了。
---内核开发合作或提供基础技术服务QQ:22863668 ---
smallant
驱动牛犊
驱动牛犊
  • 注册日期2005-01-16
  • 最后登录2005-04-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-03-14 12:32
IDOK和IDCANCEL是一直存在的,要关闭对话框,处理IDCANCEL消息就可以了,我一直是这样做的,没有问题。另外搂主在对话框窗口过程中不应该调用DefWindowProc(hDlg,message,wParam,lParam );SDK中说的很明白了。
游客

返回顶部