if (pMsg->message==WM_KEYUP && pMsg->wParam==VK_RETURN) //截取回车键
{ keybd_event( VK_SPACE,
0x45,
KEYEVENTF_EXTENDEDKEY | 0,
0 );
// if(pMsg->message==WM_KEYUP && pMsg->wParam==VK_RETURN )
// {
// Simulate a key press
// Simulate a key release
keybd_event( VK_SPACE,
0x45,
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
0); }
我发现我没有屏蔽掉enter键,系统还是发拉enter,我不想发它,我只想发SPACE
该怎么办???
谢谢拉!!
{ keybd_event( VK_SPACE,
0x45,
KEYEVENTF_EXTENDEDKEY | 0,
0 );
// if(pMsg->message==WM_KEYUP && pMsg->wParam==VK_RETURN )
// {
// Simulate a key press
// Simulate a key release
keybd_event( VK_SPACE,
0x45,
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
0); }
我发现我没有屏蔽掉enter键,系统还是发拉enter,我不想发它,我只想发SPACE
该怎么办???
谢谢拉!!
解决方案 »
- 双缓冲会图问题:图形显示不是想要的(见代码) 谢谢!
- PacketGetAdapterNames取网卡名问题
- 求一片因为文章
- 在ATL中为什么我的自定义消息没有相应
- 各位能否将字符串转换成时期型
- 请教在UNIX下用标准C怎么得到系统时间,还是要精确到毫秒?
- 我用 vc 创建一个 win32 console application 我能不能创建 cfile 类???我想操作文件对象,请大家帮忙!!!
- 有没有大连人啊!我要去这个公司面试!!!多谢,100分送上!
- 网页中调用DLL问题
- 谁知道18位身份证号中最后1位校验位的校验规则?
- wtl问题??
- 请问谁写过directshow filter吗?郁闷ing 不会写,谁能帮助小弟呢?解决高分相赠
我这么做是不是既发拉enter又发拉space??
{
if(pMsg->message == WM_KEYDOWN)
{
switch(pMsg->wParam)
{
case VK_RETURN://屏蔽回车
return TRUE;
case VK_ESCAPE://屏蔽Esc
return TRUE;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
你这种是可以蔽回车,但是怎样发送space列???
-----------------------
我也有这样方面的疑惑,你说的很好,确实我屏蔽掉了Enter,和ESC,但是问题也出来了。
问题是我在这个对话框中又包含了另外一对话框,我的意思是指,后者没有边框,是前者的子窗体,在里面随便放置一些控件。这样做是有必要的,因为打算放在主对话窗体中的控件实在很多,而且还得分类。在两个对话中分别重载PreTranslateMessage,发现自对话窗口不执行该函数,当按下ESC或者Enter键之后,子对话窗口消失。
BOOL CCXXX::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_KEYDOWN)
{
switch(pMsg->wParam)
{
case VK_RETURN://屏蔽回车
OnKeyDown(VK_SPACE, LOWORD(pMsg ->lParam), HIWORD(pMsg->lParam));
return TRUE;
case VK_ESCAPE://屏蔽Esc
return TRUE;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
CInterDlg m_dlg;m_dlg.CreateDlg( (CWnd*)&m_stcContainer);
m_dlg.MoveWindow( &rect );
m_dlg.ShowWindow( SW_SHOW );
m_dlg.UpdateWindow();
BOOL CCXXX::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_KEYDOWN)
{
switch(pMsg->wParam)
{
case VK_RETURN://屏蔽回车
keybd_event( VK_SPACE,
0x45,
KEYEVENTF_EXTENDEDKEY | 0,
0 ); return TRUE;
case VK_ESCAPE://屏蔽Esc
return TRUE;
}
}
return CDialog::PreTranslateMessage(pMsg);
-------------------------
我现在随着问题很困惑,请参照下面帖子
http://expert.csdn.net/Expert/topic/1243/1243032.xml?temp=.3507196必定高分相赠。
定义个成员变量UINT count,初值为0
BOOL CCXXX::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_KEYDOWN)
{
switch(pMsg->wParam)
{
case VK_RETURN://屏蔽回车
{
if(count<1)
{
keybd_event( VK_SPACE,
0x45,
KEYEVENTF_EXTENDEDKEY | 0,
0 );
count++;
}
return true;
}
case VK_ESCAPE://屏蔽Esc
return TRUE;
}
}
if (pMsg->message==WM_KEYUP)
{
if(pMsg->wParam==VK_RETURN)
count=0;
}
return CDialog::PreTranslateMessage(pMsg);
{
//屏蔽回车
pMsg->message=WM_KEYDOWN;
pMsg->wParam=VK_SPACE;
keybd_event( VK_SPACE,
0x45,
KEYEVENTF_EXTENDEDKEY | 0,
0 );
return TRUE;
}
if (pMsg->message == WM_KEYUP && pMsg->wParam==VK_RETURN)
{
ASSERT(0!=0);
keybd_event( VK_SPACE,
0x45,
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
0);
}
在我的界面上有一个“打开”控键;我在上面按enter时,我把enter的消息屏蔽掉,转发为space,打开open and save as对话框。
我在debug下运行,我大喜,我搞好拉。可是我在release下就不能打开我的open and save as对话框,当我回到debug下把ASSERT(0!=0)屏蔽掉时,也不能打开open and save as对话框。我真的不知道是为什么。
CStatic m_stcContainer; //记得在B的资源里把这个Static放上去,用Classwizard 产生这个变量
CBDlg m_dlg;... ...// CADlg.cpp
BOOL CADlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
CRect rect;
m_stcContainer .GetWindowRect( &rect);
m_stcContainer .ScreenToClient( &rect );
m_dlg.Create( IDD_B_DLG, (CWnd*)&m_stcContainer );
m_dlg.MoveWindow( &rect );
m_dlg.ShowWindow( SW_SHOW );
m_dlg.UpdateWindow();
... ...}
这个够了吧?