如何控制客户关闭程序 在MainFrame的OnClose里进行判断。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 利用WINDOWS的消息循环机制,拦截关闭窗口消息!就可以控制窗口的关闭了!!! 可以通过处理WM_SYSCOMMAND实现.void CMainFrame::OnSysCommand(UINT nID, LPARAM lParam){if((nID & 0xFFFFFFF0)== SC_CLOSE){ if(AfxMessageBox("您现在是否决定要退出程序!",MB_OKCANCEL)!=IDOK) return;}CWnd::OnSysCommand(nID,lParam);} 请到http://www.etechbase.net/advsearch.php,将你这个问题输入到检索框,然后选择准确匹配查询,应该可以帮助你解决这个问题的。 在OnClose中是能解决该问题,但好像找不到WM_SYSCOMMAND消息. 重载MFC的WM_CLOSE消息,其虚函数就是OnClose(),窗口的关闭触发这个消息,你可以在这个函数中做所有你上面说到你想要的事情。 消息循环机制是WINDOWS系统自己处理的,可以自己实现,但是我觉得你的程序应该不用自己实现一个消息循环吧,。 to freeclick :这个我已经实现了,只是没找到liyangg的void CMainFrame::OnSysCommand(UINT nID, LPARAM lParam),不懂得就在问一下,下午给分。 OnSysCommand在wizard里是没有的。要自己手工添。ON_MESSAGE(WM_SYSCOMMAND, OnSysCommand)afx_msg UINT OnSysCommand(WPARAM ,LPARAM)WPARAM LPARAM的含义,看MSDN关于WM_SYSCOMMAND一节 最简单的的办法,如果是一个对话框结构的,给cancel钮加消息处理,一切搞定,一定要叫OnCancel(),把CDialog::Oncancel()注释掉,想退出再执行,其实是一个虚函数。若不是dialog ,就处理WM_CLOSE,还有,注意防止用户注销或者关机,所以重载OnQueryEndSession(), 关于OnSysCommand:手工添当然也可以,只是能点烦了。在Class View(左边那三个属性页中显示class的那个)里面右键点击对话框类,在菜单中选Add Windows Message Handler,弹出的对话框右下角有个复合框,它指定filter class,把它改为window,就可以在左边找到WM_SYSCOMMAND了。 在微软官网上哪有Visual Studio 2005英文版的下呀 SendMessageTimeout 得到lRes 为空 getlasterror返回值为零 哪里有中文版的MSDN6下载? vc mfc窗体做libnids开发问题 如何加入已存在的RC2 文件? 如果从文件的最后一行读起,往上读 如何设定对话框中标题栏的高度 关于数据库连接保持的问题 把一个Frame分成3个view的问题 这个问题连bill.gates都难解决?非技术 zip的压缩算法是基于最优树理论吗? 指针和引用有什么区别?
void CMainFrame::OnSysCommand(UINT nID, LPARAM lParam)
{
if((nID & 0xFFFFFFF0)== SC_CLOSE){
if(AfxMessageBox("您现在是否决定要退出程序!",MB_OKCANCEL)!=IDOK)
return;
}
CWnd::OnSysCommand(nID,lParam);
}
这个我已经实现了,只是没找到liyangg的void CMainFrame::OnSysCommand(UINT nID, LPARAM lParam),不懂得就在问一下,下午给分。
ON_MESSAGE(WM_SYSCOMMAND, OnSysCommand)afx_msg UINT OnSysCommand(WPARAM ,LPARAM)
WPARAM LPARAM的含义,看MSDN关于WM_SYSCOMMAND一节
手工添当然也可以,只是能点烦了。
在Class View(左边那三个属性页中显示class的那个)里面右键点击对话框类,在菜单中选Add Windows Message Handler,弹出的对话框右下角有个复合框,它指定filter class,把它改为window,就可以在左边找到WM_SYSCOMMAND了。