百韵网 >>  正文

MFC中,基于对话框的程序如何响应OnChar呢? 如何在基于对话框的MFC程序中阻止关机

来源:www.baiyundou.net   日期:较早时间
对话框是不会响应OnChar和OnKeyDown消息的,会被 其它控件拦截
试时发现不会进入这两个函数,必须重定义PreTranslateMessage()虚函数才能正确地进入这两个消息函数,具体实现如下:

BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{

SendMessage(pMsg->message,pMsg->wParam,pMsg->lParam);

return 0;

//return CDialog::PreTranslateMessage(pMsg);
}
这样,程序就能正确地调用onKeyDown和onChar这两个函数了,且onKeyDown()在onCchar()之前处理的。

这样就能在对话框中响应WM_CHAR、WM_KEYDOWM消息了,注意在发送WM_CHAR时,实际发送了三个消息

即 WM_CHAR

WM_KEYDOWM

WM_KEYUP

所以,如果你有如下代码:

void CMy1Dlg::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
if(nChar=='a')
MessageBox("a");
CDialog::OnChar(nChar, nRepCnt, nFlags);
}

会弹出两个消息对话框 ,所以最好单独在WM_KEYDOWM或WM_KEYUP处理事件。

如何在基于对话框的MFC程序中阻止关机~

我好像记得系统关闭时会发送一个消息都到每个窗口,在那里拦截,消息函数我忘记咯,手机打得,不好给你早

参考代码如下:
处理WM_CLOSE消息,CYourDlg::OnClose()
{
if(::MessageBox(NULL, 确定要退出吗?","程序退出", MB_YESNO) == IDYES)
{
CDialog::OnCLose(); //OnCLose事件
}
}

相关要点总结:

19523385262:MFC中菜单响应函数如何创建?
山曼答:MFC文档的菜单栏中添加一个command响应函数 基于CFormView的应用程序,经常会在菜单栏中添加一个按钮,点击该按钮时,会弹出一个对话框~~具体实现方式如下 1.新建一个对话框资源,同时新建一个对话框类和该资源对应,舍对话框类名为CTestDialog;2.在资源视图中找到Menu 这个文件夹,双击里面的文件IDR_...

19523385262:mfc对话框程序怎么设置敲击键盘的响应函数
山曼答:而是分窗口/控件的,计算器程序,一般都是编辑框控件(CEdit)获取,ClassWizard重载编辑框OnChar或者OnChange之类的函数,函数参数中就有消息按键值。推荐看看《windows核心编程》之类SDK的书籍,简单了解一下窗口/消息/线程/组件,这些基本的概念和编程思路,这样的了解,对学习MFC很有意义。

19523385262:MFC 关于主程序如何等待对话框响应再顺序执行的问题
山曼答:对话框使用非模态的,在主对话框种自定义一个消息,消息响应函数函数体就是语句2,在弹出对话框中发送你定义的消息

19523385262:mfc中如何建立消息响应函数与控件对应的关系?
山曼答:在MFC中,可以通过以下步骤建立消息响应函数与控件对应的关系:打开MFC应用程序的资源视图,双击对应的对话框资源文件(.dlg文件)打开对话框编辑器。在对话框编辑器中,选择要添加消息响应函数的控件。例如,选择一个按钮控件,然后右键单击该控件,在弹出的上下文菜单中选择“添加事件处理程序”。在弹出的“...

19523385262:MFC 基于对话框的程序 如何制止其按回车后就关闭
山曼答:响应ID_OK按钮消息,也就是在OnOK里边,不要调用基类的OnOK(CDialog::OnOK)就不会关闭程序,在CDialog::OnOK里边会调用CDialog::EndDialog方法关闭窗口 你要关闭窗口的时候,自己调用CDialog::EndDialog

19523385262:基于对话框的MFC,我想使对话框置顶并且其他窗体不能响应用户输入,该怎 ...
山曼答:你可以在主窗体添加控制函数,B对话框弹出之前判断其他对话框是否弹出,如果弹出加上EnableWindow(FALSE);其他窗体就不会响应了

19523385262:VC/MFC对话框程序 一个菜单,一个列表,在对话框中添加OnDblclkList响应函 ...
山曼答:对话框添加 菜单参考此贴 http://zhidao.baidu.com/link?url=KJRXbw4NowM8tQJrN_5qDNLGrdq1ZUXyyCiRvLmJELIgJxTXF2R_FhZC9Qo7CjvgHoc5o60Y1cpNXx6yDsJCKqvoid CMfcdlgDlg::OnDblclkList1(){ // TODO: Add your control notification handler code here CString cs;cs.Format("%d", m_...

19523385262:VC树状视图控件响应TVN_SELCHANGED事件
山曼答:我们点击树状视图控件的项时,程序应该能够响应我们的操作,下面我们一起来实现对TVN_SELCHANGED事件的响应 我们手机新建一个基于对话框的MFC工程,在其中加入 树状列表控件,并为树状列表控件关联一个成员变量m_tree。创建一个图片列表控件,在对话框的初始化函数中添加对树状控件初始化处理。详情可以参见我的...

19523385262:基于对话框的MFC程序,添加资源Menu后添加消息处理函数出错,怎么...
山曼答:你应首先声明你添加的消息响应函数,首先在BEGIN_MESSAGE_MAP和END_MESSAGE_MAP()定义消息响应函数,菜单的为COMMAND消息,因此需要ON_COMMAND(YOU_CTRL_ID, OnMessagebox);定义完成之后直接调用?当然还是不行滴,需要声明一下,否则是无法使用的,声明在你定义对话框类的头文件中,在对话框派生类任意位置...

19523385262:mfc中AfxMessageBox的使用
山曼答:1、首先打开电脑,新建一个基于对话框的应用程序,应用程序命名为AfxMessageBoxDemo,如下图所示。2、在打开的对话框中进行如下的处理,添加退出按钮和一个静态文本框,如下图所示。3、然后双击退出按钮对退出按钮添加响应函数,响应函数如下。4、程序运行如下。5、点击退出按钮后,程序运行如下,这样就完成...

(编辑:本站网友)
相关推荐
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图
@ 百韵网