当前位置: 首页 > news >正文

2408gui,wtl给对话框加快捷键

原文

使用代码

快捷键声明一个句柄,并添加CMessageFilter.

#pragma once
class CMainDlg : public CDialogImpl<CMainDlg>,public CUpdateUI<CMainDlg>,public CMessageFilter,//..public CIdleHandler
{
private:HACCEL    m_haccelerator;//..
//.......
};

然后在OnInitDialog中,给快捷键资源赋值m_haccelerator变量,在此例中为IDR_MAINFRAME.

LRESULT CMainDlg::OnInitDialog(UINT /*`uMsg`*/, WPARAM /*`wParam`*/,LPARAM /*l参数*/, BOOL& /*b已处理*/)
{//.......绑定键...m_haccelerator = AtlLoadAccelerators(IDR_MAINFRAME);//`注册`对象以过滤消息和空闲更新CMessageLoop* pLoop = _Module.GetMessageLoop();ATLASSERT(pLoop != NULL);pLoop->AddMessageFilter(this);pLoop->AddIdleHandler(this);//...............return TRUE;
}

然后要重载PreTranslateMessage函数.

BOOL CMainDlg::PreTranslateMessage(MSG* pMsg)
{if(m_haccelerator != NULL){if(::TranslateAccelerator(m_hWnd, m_haccelerator, pMsg))return TRUE;}return CWindow::IsDialogMessage(pMsg);
}

此外,在构造器中,初化快捷键的句柄.

CMainDlg::CMainDlg()
{//..................m_haccelerator = NULL;//..................
}

如果未按无模式设置对话框,则需要按无模式,才能使PreTranslateMessage正常工作.这很容易…

int WINAPI _tWinMain(HINSTANCE hInstance,HINSTANCE /*`hPrev`实例*/, LPTSTR lpstrCmdLine, int nCmdShow)
{_Module.Init(NULL, hInstance);CMessageLoop myMessageLoop;_Module.AddMessageLoop(&myMessageLoop);CMainDlg dlgMain;dlgMain.Create(NULL);dlgMain.ShowWindow(nCmdShow);int retValue = myMessageLoop.Run();_Module.RemoveMessageLoop();_Module.Term();return retValue;
}

并确保包含atlmisc.h.


http://www.mrgr.cn/news/5443.html

相关文章:

  • Spring + Boot + Cloud + JDK8 + Elasticsearch 单节点 模式下实现全文检索高亮-分页显示 快速入门案例
  • 查看U盘的具体信息,分区表格式、实际容量和分区状态
  • 100个智能体实战技巧 | 如何让工作流也能处理图片
  • 中兴 5G CPE 3 Pro产品参数
  • Spring Cloud LoadBalancer 源码解析
  • 【UE5.1】NPC人工智能——05 给NPC添加视觉感知
  • 数采网关面临的安全挑战
  • 【3.1】贪心算法-解分发饼干
  • Windows Server查看W3SVC IIS服务器中对应的网站日志
  • centos 7.9 迁移到 openEuler22.03-LTS-SP3
  • 微信小程序电脑端和开发工具端能访问,但是手机端访问不了
  • TypeScript中的接口(Interface):对象类型的强大工具
  • 用py获取显卡的占用率
  • 全套安全帽佩戴检测算法源码与实战应用分享
  • Swift语言服务器协议(LSP)深度解析:开启Swift开发的新篇章
  • JWT-JSON Web Token
  • 成本效益分析:观测云投资的回报
  • GTK的表格宽度调节
  • 记录一个变量溢出的bug
  • Docker的概述及如何启动docker的镜像、远程管理宿主机的docker进程