首页 > 其他分享 >MFC对话框处理Esc和Enter键,避免对话框关闭

MFC对话框处理Esc和Enter键,避免对话框关闭

时间:2024-01-29 14:02:39浏览次数:22  
标签:PreTranslateMessage 对话框 处理 VK pMsg MFC Esc TRUE

要在MFC对话框中处理ESC和ENTER消息,避免对话框退出,您可以重写对话框类的PreTranslateMessage函数,并在该函数中处理这些消息。

首先,打开对话框类的头文件(.h文件),添加以下声明:

    afx_msg BOOL PreTranslateMessage(MSG* pMsg);

然后在.cpp文件中,实现PreTranslateMessage函数:

    BOOL YourDialog::PreTranslateMessage(MSG* pMsg)
    {
        if (pMsg->message == WM_KEYDOWN)
        {
            if (pMsg->wParam == VK_ESCAPE || pMsg->wParam == VK_RETURN)
                return TRUE; // 返回TRUE表示消息已被处理,不再传递给窗口
        }

        return CDialog::PreTranslateMessage(pMsg);
    }

在这个函数中,我们检查消息的类型是否是键盘消息(WM_KEYDOWN),如果是,则检查按下的键是ESC键还是ENTER键。如果是其中一个键,则返回TRUE表示消息已被处理,不再传递给窗口,从而避免对话框退出。

如果要处理Alt+F4,则需要添加如下代码:

BOOL bAlt = GetKeyState(VK_MENU) & 0x8000;
else if (pMsg->message == WM_SYSKEYDOWN)
{
    if (pMsg->wParam == VK_F4 && bAlt)
    {
        return TRUE;
    }
}

 

标签:PreTranslateMessage,对话框,处理,VK,pMsg,MFC,Esc,TRUE
From: https://www.cnblogs.com/kuaixue/p/17994371

相关文章

  • [转]TypeScript类型编程中的extends和infer示例解析
    转自;https://www.jb51.net/javascript/294261vgi.htm TypeScript类型编程中的extends和infer示例解析 −目录引文extends条件判断约束参数类型约束infer推导的局部变量类型类型转换infer组合使用ReturnTypeParameters引文在刚接触TypeScript的时候,......
  • [Typescript] Handle CommonJS import in Typescript
    Let'ssayweneedtousealibrarywithcommonJScode.classMelon{cutIntoSlices(){}}module.exports=MelonThenwewanttoimportthisinsideourTypescriptproject:import*asmelonNamespacefrom"./melon"//typescriptdoesn......
  • 详解'unicodeescape' codec can't decode bytes in position 16-17: malformed \N ch
    详解'unicodeescape'codeccan'tdecodebytesinposition16-17:malformed\Ncharacterescape在Python的字符串处理中,有时候可能会遇到如下错误信息:'unicodeescape'codeccan'tdecodebytesinposition16-17:malformed\Ncharacterescape。本篇文章将详细解释这个错......
  • MFC 旋转控件
    ▲Ctrl+D旋转控件一定要比关联的Textbox大1,但TextBox的不能为0,否则关联不上。旋转控件更改两个属性:这样,点击后就会关联到TextBox的值变化。......
  • MFC 滑块控件简单使用
    ▲关联值在滑块的父窗体Dlg中,BOOLCMFCApplication1Dlg::OnInitDialog()初始化:m_pos关联Textbox,m_sb关联水平滑块。//设置编辑区默认m_pos=50;UpdateData(FALSE);//设置滑块范围m_sb.SetScrollRange(0,100);//设置滑块位置m_......
  • AppleScript成功实现FaceTime语音,FaceTime视频,FaceTime数据筛选,检测手机号是否开通
    FaceTime是苹果公司iOS和macOS(以前称MacOSX或OSX)内置的一款视频通话软件,通过Wi-Fi或者蜂窝数据接入互联网,在两个装有FaceTime的设备之间实现视频通话。其要求通话双方均具有装有FaceTime的苹果设备,苹果ID以及可接入互联网的3G/4G/5G或者Wi-Fi网络。 一、Windows电脑上部署苹......
  • MFC 文件 File 序列化和反序列化
    //写文件voidCMainFrame::OnCarchiveWrite(){ //TODO:在此添加命令处理程序代码 /* a)创建文件对象CFile b)以写方式打开文件CFile::Open c)创建序列化对象,并且和文件关联在一起CArchive CArchive::store把数据保存到归档文件中。允许CFile写操作。 d)......
  • MFC Tab 标签控件
    ▲提升类▲两个dlg类,把边框去掉,把样式改成Child主Dlg头文件三个成员变量:private: CTabSheetm_tabCtrl; MyDlg1dlg1; MyDlg2dlg2;BOOLCMy02_TabCtrlDlg::OnInitDialog()中: //给tab控件添加对话框 //对话框设置为子对话框,默认是单独对话框 m_tabCtrl.AddPa......
  • MFC TreeView 控件的基本认识
    ▲树控件OnInitDialog()里面的一些基础操作。BOOLCMFCApplication1Dlg::OnInitDialog(){CDialogEx::OnInitDialog();//将“关于...”菜单项添加到系统菜单中。//IDM_ABOUTBOX必须在系统命令范围内。ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTB......
  • MFC 模态对话框
    Frame消息:BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)ON_WM_CREATE()ON_COMMAND(ID_DIALOG_EXEC,&CMainFrame::OnDialogExec)ON_COMMAND(ID_DIALOG_SHOW,&CMainFrame::OnDialogShow)ON_COMMAND(ID_DIALOG_32773,&CMainFrame::OnDialog3277......