随笔-145  评论-173  文章-70  trackbacks-0
照着书上做的一个小的Demo,就是点击的时候改变按钮的内容,howerver,它的程序,点击叉叉关闭可以正确的关闭程序,可是我的呢,点击关闭的时候,没有任何反应,相反,和点击按钮的一样的动作,改变按钮的内容,查了网上的资料,发现时那个发送消息调用的就是默认的两个按钮,也就是IDOK和IDCANCEL。我重写的话,就用到了这两个,二把它们的CDialog::OnOK();和CDialog::OnCANCEL();都注释掉了,这样调用的当然就是那个响应的函数了。

解决办法:
1.我做的就是,添加消息VM_CLOSE对应的消息函数,OnClose重写,里面加入 EndDialog(IDOK);然后,就OK了。
代码:
void CTest5Dlg::OnClose() 
{
    
// TODO: Add your message handler code here and/or call default
    EndDialog(IDOK);
    CDialog::OnClose();
}

2,我想啊,这个不是跟默认的IDOK和IDCANCEL有关吗,那我不用嘛,因为这两个按钮ID很特殊,不要随便改写,于是我就换个ID
看看嘛,好像例子那个Demo就是这样,没有用那个两个照样可以正常运行哦。
于是重新做一个试试。
经过验证,OK,不过比较曲折,原因当然是:ID太麻烦了,更改的时候如果不彻底,搞不好资源编辑器就出问题了。于是,
我做了几次失败后,就直接开始删除所有的button,就是那些OK,CANCEL,然后直接新建,照样就比较好,而且相关的函数都是直接编写,
不用什么默认的IDOK,IDCANCEL的麻烦,而且成功了。

经过上面的这些思考,终于完成了。

了解到,关于关闭的消息,VM_CLOSE,还有,相应的调用的函数Onclose函数,如果需要重写的话就直接重载,载消息中相应的添加。这样就没有什么问题了。。。。。
posted on 2010-02-04 18:01 deercoder 阅读(546) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理