1:BOOL CProjectDlg::PreTranslateMessage(MSG* pMsg) 虚函数好像响应的键全是大写字母,如果是小写字母呢?比如按下“L”键,只响应小写的l,而不是响应大写的“L”(即pMsg->wParam输出的是小写的l)。
2:BOOL CProjectDlg::PreTranslateMessage(MSG* pMsg) 虚函数在响应键时有声音发出,如何去掉其声音!
2:BOOL CProjectDlg::PreTranslateMessage(MSG* pMsg) 虚函数在响应键时有声音发出,如何去掉其声音!
if(pMsg->message == WM_KEYDOWN)
{
CString strBcode,strTemp;
MSG msg;
*********************************************
TranslateMessage(pMsg);
PeekMessage(&msg, NULL, 0, 0, PM_REMOVE);
***********************************************
用上面两句转换,对msg操作就可以了;
strTemp = msg.wParam;
if (GetFocus()!=GetDlgItem(IDC_EDTBCODE))
{
if(msg.wParam>32 && msg.wParam<126)
{
m_edtbcode.SetWindowText(strTemp);
}
m_edtbcode.SetFocus();
m_edtbcode.SetSel(-1);
}
}
了吗?
如果实在想这样做的话,
我觉得有一个方法不知可不可行.
先从键盘输入一个字符,将其存到一个变量当中,比如L和l,
然后对它进行处理,当为"L"时执行某个语句,
当为"l"时执行另外的语句
SHIFT键和CAP LOCKS键的状态
因为键盘同时要响应两个键(即SHIFT键还有一个按下的字母键)。对于SHIFT键好像没有“状态”而言!我取得“状态”后还是不能作大写切换,如何让键盘响应两个键啊来判断大小写?(因为我是要做一个打字游戏)还有没有朋友知道啊!帮帮小弟啊!最好简单直观一点,有源代码最好。
BOOL CAfaDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg -> message == WM_CHAR)
{
if(pMsg -> wParam =='A')
{
CString temp=pMsg->wParam;
AfxMessageBox(temp);
}
if(pMsg->wParam=='a')
{
CString temp=pMsg->wParam;
AfxMessageBox(temp)
}
}
return CDialog::PreTranslateMessage(pMsg);
}
BOOL CAfaDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg -> message == WM_CHAR)
.............
}
中的WM_CHAR当成WM_KEYDOWN来作判断,所以当然不对啦.谢谢USTCTony(Tony) 朋友!
抱歉是在网吧上网,所以没有例程给您。
MSDN中有一篇文章,在“技术文章”中,就是讲窗口子类化的,您可以参考一下。