用CreateWindow创建一窗口,再用CreateWindow创建一个EDIT,当在这个Edit中按下字符时,我想截获它,不让Edit中有字符,不要跟我说用hook
我的窗口过程如下:
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam)
{
case(message)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_COMMAND:
if(LOWORD(wparam)==4004)//注:4004是edit的id
{
//这里改怎么做???
}
return 0;
}
return DefWindowProc(hwnd,message,wparam,lparam);
}
我的窗口过程如下:
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam)
{
case(message)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_COMMAND:
if(LOWORD(wparam)==4004)//注:4004是edit的id
{
//这里改怎么做???
}
return 0;
}
return DefWindowProc(hwnd,message,wparam,lparam);
}
解决方案 »
- 注册表中,表示系统是32bit或是64bit的注册表在哪里?
- 数据库访问出错
- 如何用CToolTipCtrl给CTreeView加提示
- 像VS.net 一样窗口拖放\停靠\组合, 是如何实现的呢? 有例子吗?
- 如何将动态插入的U盘自动显示在自己用VC做的资源浏览器上
- vector的使用问题
- 请问怎样在游戏里模拟鼠标事件?
- 有没有那位大哥知道mfc中主要用了那些的设计模式?
- 各位大侠,我是VC的一名出学者,大家能不能告诉我该怎么学它吗?
- 线程+数据表的一个问题,大家不妨进来看看50分大散!!!急,在线等。
- 寻找TextOutW,ExtTextOutW,ExtTextOutA 这几个API函数的参数说明,以及功能说明!!!
- 请问,,请指教!!!
用OldProc = (WNDPROC)SetWindowLong(hwnd/*edit窗口*/, GWL_WNDPROC,newProc/*自定义窗口过程*/);LRESULT CALLBACK newProc(HWND hWnd , UINT iMsg , WPARAM wParam , LPARAM lParam)
{
switch(iMsg)
{
case WM_CHAR:
return CallWindowProc(oldProc , ......);
}
}
{
if(pMsg->message == WM_KEYDOWN) // 拦截击键消息
{
// do anyting you like.
return TRUE;
}
return CEdit::PreTranslateMessage(pMsg);
}
return 0;
if(LOWORD(wparam)==4004)//注:4004是edit的id
{
if( HIWORD(wparam) == EN_CHANGE )
{
HWND hwndEdit = (HWND)lParam;
if( ::GetWindowTextLength( hwndEdit ) ) //如果输入了内容
{
::SetWindowTextLength( hwndEdit, "" ); //清空内容
return 0;
}
}
}
应该将::SetWindowTextLength( hwndEdit, "" ); //清空内容
改为:::SetWindowText( hwndEdit, "" ); //清空内容
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
bool bignore=false;
if(msg.message==WM_CHAR)
{
HWND hwnd=GetFocus();
char clsbuf[128];
GetClassName(hwnd,clsbuf,128);
if(0==stricmp(clsbuf,"edit"))
{
OutputDebugString("wm_char in edit");
bignore=true;
}
}
if(!bignore)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}