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

2024-08-23 12:44

本文主要是介绍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.

这篇关于2408gui,wtl给对话框加快捷键的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1099412

相关文章

键盘快捷键:提高工作效率与电脑操作的利器

键盘快捷键:提高工作效率与电脑操作的利器 在数字化时代,键盘快捷键成为了提高工作效率和优化电脑操作的重要工具。无论是日常办公、图像编辑、编程开发,还是游戏娱乐,掌握键盘快捷键都能带来极大的便利。本文将详细介绍键盘快捷键的概念、重要性、以及在不同应用场景中的具体应用。 什么是键盘快捷键? 键盘快捷键,也称为热键或快捷键,是指通过按下键盘上的一组键来完成特定命令或操作的方式。这些快捷键通常涉及同

工作常用指令与快捷键

Git提交代码 git fetch  git add .  git commit -m “desc”  git pull  git push Git查看当前分支 git symbolic-ref --short -q HEAD Git创建新的分支并切换 git checkout -b XXXXXXXXXXXXXX git push origin XXXXXXXXXXXXXX

vue2实践:第一个非正规的自定义组件-动态表单对话框

前言 vue一个很重要的概念就是组件,作为一个没有经历过前几代前端开发的我来说,不太能理解它所带来的“进步”,但是,将它与后端c++、java类比,我感觉,组件就像是这些语言中的类和对象的概念,通过封装好的组件(类),可以通过挂载的方式,非常方便的调用其提供的功能,而不必重新写一遍实现逻辑。 我们常用的element UI就是由饿了么所提供的组件库,但是在项目开发中,我们可能还需要额外地定义一

我自己常用的eclipse 快捷键整理

---------------- 我自己改的快捷键: 复制当前行单下一行  ctrl alt n   --------------------- 自带快捷键: 快速定位到一行  CTRL+L 向上(下)移动选中的行:ALT+UP/DOWN ARROW 删除行(Delete Line):CTRL+D CTRL + 1也很有用     ----------

Linus常用的快捷键与shell常用通配符

一,常用快捷键: Ctrl+c这一个快捷键在Linux下的作用是强行终止当前程序(但不退出终端),其实在其他一些软件,比如MATLAB中,Ctrl+c也有终止程序的作用,如果你的程序进入了死循环,就可以用Ctrl+c来终止程序。 除了最普遍的Ctrl+c之外,还有以下快捷键:   按键  作用Ctrl+d 键盘输入结束或退出终端 Ctrl+s 暂定当前程序,暂停后

idea 常用快捷键以及技巧

修改方法如下: 点击 文件菜单(File) –> 点击 设置(Settings… Ctrl+Alt+S), –> 打开设置对话框。 在左侧的导航框中点击 KeyMap。 接着在右边的树型框中选择 Main menu –> Code –> Completion. 接着需要做两件事: 1. 移除原来的Cycle Expand Word 的 Alt+/ 快捷键绑定。 2. 在 Basic 上点击右键,

windows相关快捷键

windows相关快捷键 一、常规键盘快捷键 Ctrl + C 复制。 Ctrl + X 剪切。 Ctrl + V 粘贴。 Ctrl + Z 撤消。 DELETE 删除。 Shift + Delete 永久删除所选项,而不将它放到“回收站”中。 拖动某一项时按 CTRL 复制所选项。 拖动某一项时按 CTRL + SHIFT 创建所选项目的快捷键。 F2 重新命名所选项目。

Win7运行在哪?运行快捷键+开始菜单显示运行的方法

 XP系统的运行窗口在设置电脑的时候是经常要用到的一个功能。 可最近我换上了Win7系统在设置电脑的时候需要通过运行窗口来输入命令,可怎么也找不到运行在哪?而且发现网上也有很多人在问Win7运行在哪?我就把怎么调出运行的步骤详细写下,利人利己也是件快事。 要点直击:使用快捷键Win+R打开运行(Win键在Ctrl和Alt旁边,微软标志) 把运行弄到开始菜单 第一步:

javaweb-day01-1(建JAVA工程、断点调试、快捷键)

myeclipse  工作空间路径不能有中文 所有JAVA程序必须有包名 所有JAVA程序的类名的首字母必须大写 所有方法名称的首字母必须小写 类只有两种权限:    public(可以被所有类使用、类名必须和java文件名相同) 、  default(可以被同一个包中的类使用) 类可以有的修饰符: abstract  、  final(使用此修饰符的类不能够被继承)

几种MFC对话框的隐藏方法

修改CXXAPP中的InitInstance函数,将原来的模态对话框改为非模态对话框,及修改 [cpp]  view plain copy INT_PTR nResponse = dlg.DoModal();     为 [cpp]  view plain copy dlg.Create(CModalHideDlg::IDD);