自动置顶窗口并激活为当前输入窗口

因设计需要,参考网上的几位前辈的代码后,修改而成。 

注:this指针为主窗口指针,如用多文档程序,请根据情况修改为主程序窗口指针~!

 1 if (this != GetForegroundWindow())                                // 比较当前的程序的指针 不等于 当前系统激活窗口的指针 话,就自动置顶并激活
 2 {
 3     this->ShowWindow(SW_RESTORE);                                // 此API是为了在窗口最小化下恢复显示(相当于置顶),我的设计窗口没有最大化,自己根据情况改
 4     HWND hCurWnd = NULL; 
 5     DWORD lMyID; 
 6     DWORD lCurID; 
 7     hCurWnd = ::GetForegroundWindow(); 
 8     lMyID = ::GetCurrentThreadId(); 
 9     lCurID = ::GetWindowThreadProcessId(hCurWnd, NULL); 
10     ::AttachThreadInput(lMyID, lCurID, TRUE);                     // 连接当前激活窗口和我们将要激活窗口的输入队列
11     this->SetForegroundWindow();                                 // 此API 激活我们的窗口,但是没有AttachThreadInput的话,就不能正常的对窗口互动
12     ::AttachThreadInput(lMyID, lCurID, FALSE);                    // 关闭输入队列后实现我们窗口的输入队列激活
13 }
原文地址:https://www.cnblogs.com/cnmyp/p/2475749.html