CYourDlgDlg::PreTranslateMessage(MSG* pMsg) 处理 WM_KEYDOWN
解决方案 »
- WIN7下,外界EXE调用DLL, DLL内部使用ADO,创建连接对象时,卡死。求解决方案
- 求:基于API的windows程序框架
- 如何让控件显示在窗口顶端
- 哪位兄弟有D-S算法的VC实现代码?或者有pudn账号的兄弟帮忙下个程序
- 求SDI中使用CListView的例子
- 急:如何在一个程序中操纵另一个程序,比如:输入文本,保存结果等等。
- 五一不能到处玩玩,郁闷ing
- ?从外面引入的类,怎么弄到classwizards里面
- /*********100分 第三次提问 !!!! ***********/ 有没有常用的 COM/Active X 接口的说明?
- VC对话框控件中有一个gridctrl控件哪能下载到啊?
- 外地程序员中关村参观,怎样才算值得?
- 呵呵,问一个很水的问题。
处理按钮点击操作
将OnOk() OnCancel()
中的CDialog::OnOk() CDialog::OnCancel()去掉
RegisterHotKey(NULL,0x0001,MOD_CONTROL,VK_X);//定义了一个Ctrl+X热键
在OnDestroy中,UnRegsiterHotKey诸如此类!
在对话框的OnInitDialog函数中
RegisterHotkey(
GetSafeHwnd(), //窗口句柄
0x0001, //热键的ID,每个热键不同
MOD_CONTROL|MOD_SHIFT, //辅助键
VK_X //基本键
);
//上面的函数定义了Ctrl+Shift+X热键,ID为0x0001
2.响应WM_HOTKEY消息
因为WM_HOTKEY不是常用的消息,需自己添加消息映射
在对话框头文件里定义响应函数
afx_msg void OnMyHotKey(
WPARAM wParam, // hot key identifier
LPARAM lParam // options and virtual-key code
);
在BEGIN_MESSAGE_MAP(CDlgDlg, CDialog)
和
END_MESSAGE_MAP()中间写上
ON_MESSAGE(WM_HOTKEY,OnMyHotKey)
下面是OnMyHotKey的实现
void CDlgDlg::OnMyHotKey(WPARAM wparam,LPARAM lParam)
{
if(wParam==0x0001)//是我们定义的热键
{
MessageBox("A");
}
}2.重写OnOK和OnCancel,让它们什么都不做。
或者重写PreTranslateMessage
BOOL CDlgDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message==WM_KEYDOWN){
if(pMsg->wParam==VK_ESC||pMsg->wParam==VK_ENTER);//不干活
}
return CDialog::PreTranslateMessage(pMsg);
}3.够详细了么?