创建一个真正隐藏的窗口

来源:互联网 发布:知乎 男生喝醉酒找你 编辑:程序博客网 时间:2024/05/21 06:47

ATOM MyRegisterClass(HINSTANCE hInstance)
{
 WNDCLASSEX wcex;

 wcex.cbSize = sizeof(WNDCLASSEX);

 wcex.style   = CS_HREDRAW | CS_VREDRAW;
 wcex.lpfnWndProc = HeartBeatWin;
 wcex.cbClsExtra  = 0;
 wcex.cbWndExtra  = 0;
 wcex.hInstance  = g_hInst;
 wcex.hIcon   = NULL;
 wcex.hCursor  = LoadCursor(NULL, IDC_ARROW);
 wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
 wcex.lpszMenuName = NULL;//MAKEINTRESOURCE(IDC_XEYE);
 wcex.lpszClassName = MSG_ENGINE_CLASSNAME;
 wcex.hIconSm  = NULL;

 return RegisterClassEx(&wcex);
}

  g_hHear = CreateWindowEx(WS_EX_NOACTIVATE, // 该参数保证该窗口永不被激活
   MSG_ENGINE_CLASSNAME, "title",
   WS_POPUP,
   0, 0, 10, 10,
   NULL, NULL, 0, NULL) ;

 

无论你如何SetWindowPos( SWP_NOACTIVATE.. ) 都没用, 一个窗口在被第一次创建好的时候, windows会自动的为其送去焦点和把其激活, 所以,  要想让一个窗口一开始就不被激活, 不获取焦点, 那么就只有在创建窗口的时候, 把WS_EX_NOACTIVATE传进去.