VC逻辑与的问题

来源:百度知道 编辑:UC知道 时间:2024/07/02 13:05:27
if(wParam==(65&VK_CONTROL))
{
if(nCtrlKeyDown == TRUE)
{
nCtrlAKeyDown = TRUE;
nCtrlKeyDown = FALSE;
}
}
else if(wParam==98||wParam==66) //当按下b键时
{
if(nShiftKeyDown == TRUE) //检查shift键是否处于按下状态。
{
nShiftBKeyDown = TRUE; //当SHIFT键按下时,变量置为真。
nShiftKeyDown = FALSE;
}
}
这段代码都是处理组合键的。但把第二个改为 else if(wParam==(66&VK_SHIFT))就不行了呢??
初学者求教……

给你个思路程序,在处理组合键消息时,不能直接用wParam, 而要用GetKeyState(VK_CONTROL)或GetKeyState(VK_SHIFT)来判断是否按下了组合键...

你这样用:
if( GetKeyState(VK_CONTROL) & 0xF0000000) nCtrlAKeyDown = TRUE;
if( GetKeyState(VK_SHIFT) & 0xF0000000) nShiftKeyDown = TRUE;

有不懂的, HI上找我.

//========================================
// 示例程序
BOOL CAAADlg::PreTranslateMessage(MSG* pMsg)
{
// http://hi.baidu.com/juncox
if(pMsg->message==WM_KEYDOWN){
TRACE("\n\n\t\t-> 按键:wParam=%lX (%c)",pMsg->wParam,pMsg->wParam);
if(pMsg->wParam==VK_ESCAPE || pMsg->wParam==VK_F1){
return TRUE; // 取消ESC与F1功能键
}
else if(pMsg->wParam==VK_RETURN || pMsg->wParam==VK_DOWN){
pMsg->wParam=VK_TAB; // 映射DOWN与Return到TAB键
}
else if(pMsg->wParam==VK_UP){
keybd_event(VK_SHIFT,0,0,0); // 模拟映射U