主窗口上放置Tab control控件,Tab control控件里有三个dialog子窗口,dialog子窗口上有一些按钮。现在要实现按键的快速键,发现快速键没响应。在主窗口里dialog子窗口是这样初始化的 TRACE("Tabcombox init\n");
m_TabContainer.InsertItem(0, _T("Siemens"));
m_TabContainer.InsertItem(1, _T("Mitsubishi"));
m_TabContainer.InsertItem(2, _T("Panasonic")); m_DiaSiemens.Create(IDD_DIALOG_Siemens, GetDlgItem(IDC_TAB_Container));
m_DiaMitsubishi.Create(IDD_DIALOG_Mitsubishi, GetDlgItem(IDC_TAB_Container));
m_DiaPanasonic.Create(IDD_DIALOG_Panasonic, GetDlgItem(IDC_TAB_Container));
在主窗口里使用在captionj里加&A实现的方式就会响应。
谢谢帮忙!
m_TabContainer.InsertItem(0, _T("Siemens"));
m_TabContainer.InsertItem(1, _T("Mitsubishi"));
m_TabContainer.InsertItem(2, _T("Panasonic")); m_DiaSiemens.Create(IDD_DIALOG_Siemens, GetDlgItem(IDC_TAB_Container));
m_DiaMitsubishi.Create(IDD_DIALOG_Mitsubishi, GetDlgItem(IDC_TAB_Container));
m_DiaPanasonic.Create(IDD_DIALOG_Panasonic, GetDlgItem(IDC_TAB_Container));
在主窗口里使用在captionj里加&A实现的方式就会响应。
谢谢帮忙!
BOOL CSerial_newDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(//pMsg->hwnd==this->GetSafeHwnd() &&
pMsg->message==WM_KEYDOWN && pMsg->wParam=='C' &&
(GetKeyState(VK_CONTROL) & 0x8000))
{
AfxMessageBox(_T("截到了Ctrl+C键"));
::SendMessage(pMsg->hwnd, WM_COMMAND, IDC_BUTTON_SClearAll,0);
//return TRUE;
} return CDialog::PreTranslateMessage(pMsg);
}谢谢VisualEleven的提示,不过::SendMessage(GetDlgItem(IDD_DIALOG_Siemens)->GetSafeHwnd(), WM_COMMAND, IDC_BUTTON_SClearAll,0);这个消息不能被那个子窗口里的按钮接收并响应单击命令。
pMsg->message==WM_KEYDOWN && pMsg->wParam=='C' &&
(GetKeyState(VK_CONTROL) & 0x8000))
{
AfxMessageBox(_T("截到了Ctrl+C键"));
::SendMessage(m_DiaSiemens.GetSafeHwnd(), WM_COMMAND, IDC_BUTTON_SClearAll,0);
return TRUE;
}用加速键表ACCELERATOR,是否能实现组合键呢?要怎么实现。