我在控件类中拦截了VK_TAB键的消息,然后做了以下的处理BOOL CDvrOcxCtrl::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->wParam == VK_TAB)
{
if(::IsDialogMessage(m_mainWnd.GetSafeHwnd(), pMsg))//这个是控件中加载的对话框
{
return m_mainWnd.SendMessage(pMsg->message, pMsg->wParam, pMsg->lParam); //拦截成功,这样处理对吗?
}
} return COleControl::PreTranslateMessage(pMsg);
在控件加载的对话框中还有很多的对话框,都是子窗口了。(树形窗口架构)
那么我该怎么处理才可以让对应的窗口处理VK_TAB,包括接收和处理
{
if(pMsg->wParam == VK_TAB)
{
if(::IsDialogMessage(m_mainWnd.GetSafeHwnd(), pMsg))//这个是控件中加载的对话框
{
return m_mainWnd.SendMessage(pMsg->message, pMsg->wParam, pMsg->lParam); //拦截成功,这样处理对吗?
}
} return COleControl::PreTranslateMessage(pMsg);
在控件加载的对话框中还有很多的对话框,都是子窗口了。(树形窗口架构)
那么我该怎么处理才可以让对应的窗口处理VK_TAB,包括接收和处理
解决方案 »
- 获取了机器码后该怎么做。。。在线等。。。。。。。
- 怎么才能让我这里的画圆可以根据给出的半径变换??
- 一个十六进制的字符串怎样转换成相应的十六进制数
- 我是个新手,这个程序较为低级,希望高手可以指导一下。。。错误在于插入信息时程序自动结束
- ALT/ACTIVE/COM相关资料?
- 请教,如何比较大小写敏感的字符串?
- 如何改变CPropertySheet实现的向导对话框默认按钮显示?
- 怎么在自己的类中声明 消息应射宏定义,没有基类的,本身就是母类
- 这里郁闷,这里都多少北京的XDJM,都进来,,有多少有同感的!!!!!!!!!!!!!我及其鄙视这些人!!!!
- 强烈呼吁CSDN改善速度,收费也可以!每月30 RMB还是可以接受地!
- socket 聊天室
- 请教。。。可否直接用MAC协议进行通讯呢 要如何实现
::SendMessage(HWND,Msg,WPARAM,LPARAM); 你用这个SendMessage 然后制定好里面的HWND
m_mainWnd是控件中创建的窗口,而这个窗体的下面还有很多子窗口,我想让下面的窗口响应这个VK_TAB的消息,现在我在控件的最上层已经拦截到了这个VK_TAB的按键消息了,那么我该如何传递下来,传递下来后,子窗口又该怎么处理呢?
{
if(pMsg->wParam == VK_TAB)
{
if(::IsDialogMessage(m_mainWnd.GetSafeHwnd(), pMsg))//这个是控件中加载的对话框
{
return FALSE;//貌似应该这样
}
} return COleControl::PreTranslateMessage(pMsg);}
BOOL CDvrOcxCtrl::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->wParam == VK_TAB)
{
if(::IsDialogMessage(m_mainWnd.GetSafeHwnd(), pMsg))//截获消息
{
//WM_TABCTRL为自定义的消息
return m_mainWnd.SendMessage(WM_TABCTRL, pMsg->wParam, pMsg->lParam);//把消息传递到m_mainWnd中,
}
} return COleControl::PreTranslateMessage(pMsg);
}
m_mainWnd为控件中创建的主窗口,然后主窗口进行了消息摆渡 default:
if(message == WM_TABCTRL)
{
ASSERT(m_hActiveWnd);
::SendMessage(m_hActiveWnd,WM_TABCTRL, wParam, lParam);//m_hActiveWnd:记录的当前子窗口的句柄
}
break;
在子窗口中做了类似一下的处理(子窗口确认已经收到了如下的消息)LRESULT CUserLogin::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if(message == WM_TABCTRL)
{
if(wParam == VK_TAB)//此消息确认收到
{
this->SendMessage(WM_KEYDOWN, VK_TAB, 0);//相当于按下了VK_TAB,结果没啥效果
}
} return CDialog::WindowProc(message, wParam, lParam);
}
页面是重载控件和MFC素控件的组合,不知道问题是咋回事了。