我在框架类中添加了
void CMainFrame::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值 CFrameWnd::OnKeyDown(nChar, nRepCnt, nFlags);
}
调试运行,发现没有进入消息处理函数中。连菜单的快捷键也不起作用,在任何一个对话框中添加OnKeyDown,结果都没进去,现在整个程序都已经快完成一大半了才发现这个问题,请高手指点,万分感谢!
void CMainFrame::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值 CFrameWnd::OnKeyDown(nChar, nRepCnt, nFlags);
}
调试运行,发现没有进入消息处理函数中。连菜单的快捷键也不起作用,在任何一个对话框中添加OnKeyDown,结果都没进去,现在整个程序都已经快完成一大半了才发现这个问题,请高手指点,万分感谢!
有没有钩子?
BOOL WaveDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetWindowLong(m_hWnd, //设置对话框透明
GWL_EXSTYLE,
GetWindowLong(m_hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
// Make this window 70% alpha
SetLayeredWindowAttributes( 0, (255 * 70) / 100, LWA_ALPHA);
return TRUE;
}
BOOL WaveDlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
SetWindowLong(m_hWnd, //设置对话框透明
GWL_EXSTYLE,
GetWindowLong(m_hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
// Make this window 70% alpha
SetLayeredWindowAttributes( 0, (255 * 70) / 100, LWA_ALPHA);
return TRUE;
//return CDialog::OnEraseBkgnd(pDC);
}
// 实在不行就在这里面做:
BOOL CMyDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message==WM_KEYDOWN)
{
// 在这里面处理按按消息,或调用按键处理函数;
// ...
return true;
}
return CDialog::PreTranslateMessage(pMsg);
}/////////////////////////////////////////////////////
是不是焦点一直在WaveDlg对话框上?
BOOL CYourDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message==WM_KEYDOWN)
{
;
// ...
return true;
}
return CDialog::PreTranslateMessage(pMsg);
}