C++ 使得窗口置顶(终极方案)

简介: C++ 使得窗口置顶(终极方案)

一般方案


#include <windows.h>
int main(int argc, char *argv[])
{
  HWND hWnd = ::GetForegroundWindow();
  ::SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 100, 100, SWP_NOMOVE | SWP_NOSIZE);
  return FALSE;
}


终极方案


将当前线程附到新的置顶线程上,再置顶


#include <windows.h>
// windows置顶窗体终极方案
BOOL OnForceShow(HWND hWnd)
{
  HWND hForeWnd = NULL;
  DWORD dwForeID = 0;
  DWORD dwCurID = 0;
  hForeWnd = ::GetForegroundWindow();
  dwCurID = ::GetCurrentThreadId();
  dwForeID = ::GetWindowThreadProcessId(hForeWnd, NULL);
  ::AttachThreadInput(dwCurID, dwForeID, TRUE);
  ::ShowWindow(hWnd, SW_SHOWNORMAL);
  ::SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
  ::SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
  ::SetForegroundWindow(hWnd);
  // 将前台窗口线程贴附到当前线程(也就是程序A中的调用线程)
  ::AttachThreadInput(dwCurID, dwForeID, FALSE);
  return TRUE;
}
int main(int argc, char *argv[])
{
  HWND hWnd = ::GetForegroundWindow();
  if (OnForceShow(hWnd))
    return TRUE;
  ::SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 100, 100, SWP_NOMOVE | SWP_NOSIZE);
  return FALSE;
}
相关文章
|
6月前
|
设计模式 编解码 算法
【C/C++ 虚函数以及替代方案】C++ 虚函数的使用开销以及替代方案(三)
【C/C++ 虚函数以及替代方案】C++ 虚函数的使用开销以及替代方案
141 0
|
6月前
|
存储 设计模式 编译器
【C/C++ 虚函数以及替代方案】C++ 虚函数的使用开销以及替代方案(一)
【C/C++ 虚函数以及替代方案】C++ 虚函数的使用开销以及替代方案
366 0
|
6月前
|
Linux C++
C++服务器开发之定时器设计方案
定时器应⽤:1.⼼跳检测 2.技能冷却 3.武器冷却 4.倒计时 5.其它需要使⽤超时机制的功能
99 0
C++服务器开发之定时器设计方案
|
存储 编解码 Cloud Native
C++ Qt关于多屏幕窗口处理
C++ Qt关于多屏幕窗口处理
|
5月前
|
C++ UED 开发者
逆向学习 MFC 篇:视图分割和在 C++ 的 Windows 窗口程序中添加图标的方法
逆向学习 MFC 篇:视图分割和在 C++ 的 Windows 窗口程序中添加图标的方法
76 0
|
6月前
|
存储 编译器 程序员
【C/C++ 虚函数以及替代方案】C++ 虚函数的使用开销以及替代方案(二)
【C/C++ 虚函数以及替代方案】C++ 虚函数的使用开销以及替代方案
134 0
|
6月前
|
消息中间件 存储 API
【C/C++】回调函数详解&注册窗口类&LRESULT & CALLBACK详解以及游戏中的应用
【C/C++】回调函数详解&注册窗口类&LRESULT & CALLBACK详解以及游戏中的应用
253 0
|
11月前
|
算法 测试技术 C#
C++前缀和算法的应用:分割数组的最多方案数 原理源码测试用例
C++前缀和算法的应用:分割数组的最多方案数 原理源码测试用例
|
编译器 C语言 Swift
05-📝C++核心语法|面向对象3【 继承和派生、多态、静态成员、const成员、引用类型成员、VS的内存窗口】
复习`C++核心语法`,且适当进行汇编探索底层实现原理,进一步夯实基础,为以后的`底层开发`、`音视频开发`、`跨平台开发`、`算法`等方向的进一步学习埋下伏笔。
05-📝C++核心语法|面向对象3【 继承和派生、多态、静态成员、const成员、引用类型成员、VS的内存窗口】
|
C语言 C++ Windows
【c++】设置控制台窗口字体颜色和背景色(system和SetConsoleTextAttribute函数 )(内含超好玩的c++游戏链接)
【c++】设置控制台窗口字体颜色和背景色(system和SetConsoleTextAttribute函数 )(内含超好玩的c++游戏链接)
632 0
【c++】设置控制台窗口字体颜色和背景色(system和SetConsoleTextAttribute函数 )(内含超好玩的c++游戏链接)