因设计需要,参考网上的几位前辈的代码后,修改而成。
注: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 }