Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在标题栏中放置控件?_C++_C_User Interface_Winapi - Fatal编程技术网

C++ 如何在标题栏中放置控件?

C++ 如何在标题栏中放置控件?,c++,c,user-interface,winapi,C++,C,User Interface,Winapi,我注意到Firefox4、Opera和Chrome以及IE7/8在标题栏/标题栏中放置了按钮和控件,这是如何做到的 谢谢 是的,你可以那样做。。您可以使用窗口挂钩,在远程进程中插入dll,并远程运行dll的功能。下面是一篇完整的文章:- 他们可能会完全关闭标题栏(通过排除WS_标题窗口样式),在窗口顶部添加一个玻璃区域,然后绘制自己的控件 有关glass的更多信息,请参见。可能他们只是自己处理消息并绘制部分非客户端区域(包括边框和标题栏);他们还将处理WM_nCluttonDown、WM_NC

我注意到Firefox4、Opera和Chrome以及IE7/8在标题栏/标题栏中放置了按钮和控件,这是如何做到的

谢谢


是的,你可以那样做。。您可以使用窗口挂钩,在远程进程中插入dll,并远程运行dll的功能。下面是一篇完整的文章:-


他们可能会完全关闭标题栏(通过排除WS_标题窗口样式),在窗口顶部添加一个玻璃区域,然后绘制自己的控件


有关glass的更多信息,请参见。

可能他们只是自己处理消息并绘制部分非客户端区域(包括边框和标题栏);他们还将处理WM_nCluttonDown、WM_NCHITTEST和其他WM_NC*消息,以模拟标题栏上按钮的行为


或者至少,在Aero之前,这是通常的做法;我不知道它对这类事情有多大的改变。

我不确定它们是否改变了。你能提供一个屏幕截图来说明,突出显示控件吗?究竟为什么FF/IE/Opera应该在自己的流程中注入一些代码?大多数微软自己的应用程序(即M$Office)都没有标题栏。历史上,他们使用未记录的函数自己绘制(IIRC自XP以来,函数已成为正式的并记录在案的)。在Windows中,不可能完全覆盖标题栏绘制:那里的按钮没有应用程序已知的状态,因此Windows本身必须绘制它们。是的,您可以这样做!请参阅我的另一篇文章,在这里我将工具栏插入Microsoft Outlook Express!点击这里。。在否决某人之前,请至少检查事实!我并不是说你不能用dll注入来实现这一点,我是说如果你想在你的应用程序中实现这一点(这是OP的问题——“他们是如何做到的”),就不需要注入任何东西,因为简单的事实是,他们的代码已经按照定义在自己的进程中运行了。顺便说一句,你应该在另一个帖子下发表你的评论。