效果参见win操作系统附件中自带的屏幕虚拟键盘,你在点击那个屏幕虚拟键盘的时候发现
那个键盘程序无论在点击前后始终都没有得到焦点,而后面输入键盘字符的窗口也始终没
有得到焦点。
想做出这种效果,尝试了N种方法都没有能够如愿,真不知道微软写那个虚拟键盘的家伙是
怎么做出这种效果来的。就像那个输入法工具栏一样,我点击了它,实际上的当前活动窗口的状态并不改变的。望大虾们指教啊、、、
那个键盘程序无论在点击前后始终都没有得到焦点,而后面输入键盘字符的窗口也始终没
有得到焦点。
想做出这种效果,尝试了N种方法都没有能够如愿,真不知道微软写那个虚拟键盘的家伙是
怎么做出这种效果来的。就像那个输入法工具栏一样,我点击了它,实际上的当前活动窗口的状态并不改变的。望大虾们指教啊、、、
#include <tchar.h>HWND CreateWnd();int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
//create window
if ( !CreateWnd() )
return false; MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam ;
}LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_CLOSE:
DestroyWindow(hWnd);//既关闭按钮,可以在此时询问用户是否确定要关闭,再调用DestroyWindow关闭程序
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd,message,wParam,lParam);
}
return 0;
}
HWND CreateWnd()
{
WNDCLASS wndcls;
wndcls.cbClsExtra = 0;
wndcls.cbWndExtra = 0;
wndcls.lpszMenuName = NULL;
wndcls.hInstance = NULL;
wndcls.style = NULL/*CS_HREDRAW|CS_VREDRAW*/;
wndcls.hCursor = LoadCursor(NULL,IDC_ARROW);
wndcls.lpszClassName = _T("Win32");
wndcls.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndcls.hIcon = NULL;
wndcls.lpfnWndProc = WndProc; if (!RegisterClass(&wndcls))
return NULL; HWND hWnd = CreateWindowEx(WS_EX_TOPMOST|WS_EX_NOACTIVATE,
_T("Win32"),
_T("Demo"),
WS_OVERLAPPEDWINDOW,
225,160,400,400,NULL,NULL,NULL,NULL) ; if (!hWnd)
return NULL;
ShowWindow(hWnd,SW_SHOWNORMAL);
UpdateWindow(hWnd); return hWnd;
}