自定义了一个控件
class CHtmlEditCtrlEx : public CHtmlEditCtrl |
想在这个控件接收到Ctrl+V键盘消息的时候,向该控件所在的窗口发送一个自定义消息。具体实现方法如下:
- 在该控件的PreTranslateMessage方法中定义自定义消息,然后将该消息发送给父窗口
BOOL CHtmlEditCtrlEx::PreTranslateMessage(MSG* pMsg) {
int WM_HENRYPASTE = RegisterWindowMessage(TEXT("HENRYPASTE"));
int aa = 0; if (pMsg->message == WM_KEYDOWN) { switch (pMsg->wParam) { case 'V': if( ::GetKeyState(VK_CONTROL) & 0x8000 ) { GetParent()->SendMessage(WM_HENRYPASTE, pMsg->wParam, pMsg->lParam);
} break; } }
return CHtmlEditCtrl::PreTranslateMessage(pMsg);
} |
- 在控件所在窗口的.h文件中定义消息处理函数。
- 在控件所在的窗口类的.cpp文件中,在文件的头部定义这个消息。
- 在消息映射中映射这个消息。
- 然后实现这个消息处理函数:
LRESULT CDialog2::OnHenryPaste(WPARAM wParam, LPARAM lParam) { // do something useful int MyReturnValue = 0;
return (LRESULT) MyReturnValue; }; |
这样当自定义控件接收到CTRL+V的键盘消息时,父窗口的处理函数就能被执行了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架