首页
学习
活动
专区
圈层
工具
发布

MFC子窗口任务栏显示图标和主窗口最小化在系统托盘中显示图标

MFC子窗口任务栏显示图标很简单, 只需要在子窗口的初期化函数OnInitDialog()中添加ModifyStyleEx(WS_EX_TOOLWINDOW, WS_EX_APPWINDOW); 主窗口在系统托盘中显示图标以及恢复窗口是参考某位大神的代码...(一)  原理     1、最小化的原理:首先要将窗口隐藏,然后在右下角绘制图标。     ...2、恢复的原理:将窗口显示,再将托盘中的图片删除。...(二)程序实现     1、自定义消息WM_SHOWTASK:  #define WM_SHOWTASK (WM_USER +1)     2、在MFC的::OnSysCommand(UINT nID,...                   {                     this->ShowWindow(SW_SHOW);//简单的显示主窗口完事儿

4.6K80
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    System.InvalidOperationException:“寄宿的 HWND 必须是指定父级的子窗口。”

    当试图在 WPF 窗口中嵌套显示 Win32 子窗口的时候,你有可能出现错误:“寄宿的 HWND 必须是指定父级的子窗口。”。 这是很典型的 Win32 错误,本文介绍如何修复此错误。...问题 你有可能在调试嵌入窗口代码的时候遇到错误: System.InvalidOperationException:“寄宿的 HWND 必须是指定父级的子窗口。”...原因和解决办法 出现此错误,是因为同一个子窗口被两次设置为同一个窗口的子窗口。...具体来说,就是 A 窗口使用 HwndHost 设置成了 B 的子窗口,随后 A 又通过一个新的 HwndHost 设置成了新子窗口。...要解决,则必须确保一个窗口只能使用 HwndHost 设置一次子窗口。

    88130

    CC++ HOOK 全局 API

    全局 Hook 不一定需要用到 Dll ,比如全局的鼠标钩子、键盘钩子都是不需要 Dll 的,但是要钩住 API,就需要 Dll 的协助了,下面直接放上 Dll 的代码,注意这里使用的是 MFC DLL...// Test_Dll(mfc).cpp : 定义 DLL 的初始化例程。...DLL 是动态链接的, // 则从此 DLL 导出的任何调入 // MFC 的函数必须将 AFX_MANAGE_STATE 宏添加到 // 该函数的最前面。...// 附加消息信息 (LPARAM)(((PMOUSEHOOKSTRUCT)lParam)->hwnd) // 附加消息信息,此处为鼠标所在窗口的窗口句柄 ); /* typedef...m_hWnd) 由于我认为大部分的全局 HOOK 需要在隐藏自己然后默默执行,这与 MFC 的窗口交互模式风格相冲突,所以我在这里隐藏了 MFC 的窗口, 具体方法可以参考:https://blog.csdn.net

    1.3K10

    使用 SetParent 制作父子窗口的时候,如何设置子窗口的窗口样式以避免抢走父窗口的焦点

    不过,对于 WPF 程序来说,一个独立的窗口实际上只有一个窗口句柄,窗口内的所有内容都是 WPF 绘制的。...注意看下面的窗口标题栏,当我在这些不同区域间点击的时候,窗口标题栏在黑色和灰色之间切换: 这说明当子窗口获得焦点的时候,父窗口会失去焦点并显示失去焦点的样式。...你可以在这篇博客中找到一个简单的例子: 解决办法 而原因和解决方法仅有一个,就是子窗口需要有一个子窗口的样式。 具体来说,子窗口必须要有 WS_CHILD 样式。...你可以看看 Spyxx.exe 抓出来的默认普通窗口和子窗口的样式差别: !...[默认普通窗口]](/static/posts/2019-09-19-10-21-31.png) ▲ 默认普通窗口 ▲ 子窗口 ---- 参考资料 关于WS_CLIPCHILDREN和WS_CLIPSIBLINGS

    1.7K60

    操作系统——线程

    线程是属于进程的,当进程退出时该所产生的线程都会被强制退出并清除。线程占用的资源要少于进程所占的资源。进程和线程都可以有优先级。 进程间可以通过IPC通信,但线程不可以。...dll节省内存,减少交换操作,节省磁盘空间,更易于升级,提供售后支持,提供拓展MFC库类的机制,支持多语言程序。 模拟两个线程实现火车站两个窗口售票程序,窗口售票时间为1秒,两个窗口不能同时售票。...#include #include using namespace std; DWORD WINAPI Fun1Proc(LPVOID lpParameter)...;//thread data DWORD WINAPI Fun2Proc(LPVOID lpParameter);//thread data int index = 0; int tickets =...hMutex, INFINITE); ReleaseMutex(hMutex); ReleaseMutex(hMutex); Sleep(4000); return 0; } DWORD WINAPI

    55510

    WINDOWS核心编程--Windows程序内部运行机制

    ---分派一个消息到窗口过程 PeekMessage windows应用程序的消息处理机制 编写窗口过程函数 匈牙利命名法 变量属性 属性部分: 类型部分: MFC、句柄、控件及结构的命名规范: Windows...注意,尽管这样是很方便,但它必须慎重使用,因为每个DC大约要占800个字节的内存。 CS_PARENTDC: 将子窗口的裁剪区域设置到父窗口的DC中去,这样子窗口便可以在父窗口上绘制自身。...注意,这是子窗口还是从系统缓存中获取DC,而不是使用父窗口的DC。使用该风格可以提高系统性能。...静态库版本命名规范: 库&描述 NAFXCWD.LIB 调试版本:MFC静态连接库 NAFXCW.LIB 发行版本:MFC静态连接库 UAFXCWD.LIB 调试版本:具有Unicode支持的MFC...静态连接库 UAFXCW.LIB 发行版本:具有Unicode支持的MFC静态连接库 动态连接库命名规范: 名称&类型 _AFXDLL 唯一的动态连接库(DLL)版本 WINAPI Windows

    2.2K50

    解决 WPF 嵌套的子窗口在改变窗口大小的时候闪烁的问题

    因为 Win32 的窗口句柄是可以跨进程传递的,所以可以用来实现跨进程 UI。不过,本文不会谈论跨进程 UI 的具体实现,只会提及其实现中的一个重要缓解,使用子窗口的方式。...你有可能在使用子窗口之后,发现拖拽改变窗口大小的时候,子窗口中的内容不断闪烁。如果你也遇到了这样的问题,那么正好可以阅读本文来解决。...---- 问题 你可以看一下下面的这张动图,感受一下窗口的闪烁: 实际上在拖动窗口的时候,是一直都在闪的,只是每次闪烁都非常快,截取 gif 的时候截不到。...后来使用 CreateWindowEx 创建了一个纯 Win32 窗口,这种闪烁现象更容易被截图: 解决 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19...,同时有更好的阅读体验。

    1.6K40

    利用键盘钩子捕捉linux键盘动作,利用键盘钩子捕获Windows键盘动作

    钩子的种类有很多,每种钩子可以截获并处理相应的消息,每当特定的消息发出,在到达目的窗口之前,钩子程序先行截获该消息、得到对此消息的控制权。...在本程序中我们需要捕获在任意窗口上的键盘输入,这就需要采用全局钩子以便拦截整个系统的消息,而全局钩子函数必须以DLL(动态连接库)为载体进行封装,VC6中有三种形式的MFC DLL可供选择,即Regular...之后,在相应的头文件中添加宏定义和待导出函数的声明: #define DllExport __declspec(dllexport)……DllExport void WINAPI InstallLaunchEv...钩子的种类有很多,每种钩子可以截获并处理相应的消息,每当特定的消息发出,在到达目的窗口之前,钩子程序先行截获该消息、得到对此消息的控制权。...在本程序中我们需要捕获在任意窗口上的键盘输入,这就需要采用全局钩子以便拦截整个系统的消息,而全局钩子函数必须以DLL(动态连接库)为载体进行封装,VC6中有三种形式的MFC DLL可供选择,即Regular

    4K10

    滑动窗口之乘积小于k的子数组

    乘积小于k的子数组 给定一个正整数数组 nums和整数 k 。 请找出该数组内乘积小于 k 的连续的子数组的个数。...先敲个黑板 下面一共有两种写法,第一种是按自己理解写的,是过了的,但是 感觉懂了但没完全懂。。。(意思是 我好像懂了滑动窗口 但是写的不规律不条理 好像没完全懂。。)...,ans是指要求解的子数组的个数,l、r是指左右指针。...因为我们计算的是连续的子数组的个数,每次右指针移动、加入一个新的右边的数值的时候,在满足l到r的乘积小于k的前提下,总的ans的增加量就是新的值、新的值与之前所有可连续的值的组合,这个就用到一点点数学知识了...因为当l不变、r向右移动时,我们的乘积一直都是非递减的,如果当前右指针移动到的位置使得l到r不满足乘积小于k,那我们再继续移动右指针,乘积一定依旧不满足小于k,那就说明这个l我们已经“利用”完了,l可以退出滑动窗口了

    94110

    优选算法:长度最小的子数组(滑动窗口)

    题目解析 题意为:给一个数组,找其中元素相加>=目标值的最小子数组(子数组是连续的) 二. 算法分析 首先我们第一次看到这个题,第一想法肯定是暴力解法。...接下来这个细节将是最大的区别: 如图,当left,right找到了大于等于目标值的情况,先记录长度。然后作为暴力解法的话就是,left++,right=left+1。...这里的话仔细看我们会发现没必要,当大于等于目标和时,我们只需要移动left ,然后判断移动后的结果:如果仍是大于等于目标值,记录长度,left++。...如果小于目标值则移动right,知道再次遇到大于目标和的情况再次进行判断 三....代码实现 class Solution { public: //滑动窗口:利用单调性+两个同向指针(指针不回退)时使用滑动窗口 int len = INT_MAX; int minSubArrayLen

    11910

    优先算法 —— 滑动窗口系列 - 长度最小的子数组

    前言 当我们发现暴力解法两个指针都不回退,都是向同一个方向移动的时候我们就可以使用滑动窗口 1. 长度最小的子数组 题目链接: 209....,先用sum来统计以left为左区间的所有子数组的和,什么意思呢?...,再计算数组走了几步,后面的就没有必要继续计算了,因为题目要求的是最小长度的子数组 接下来我们再将left往后移动一位,然后我们的right是可以不需要移动的,因为我们上面已经知道[...定义两个指针left和right来充当窗口的左端点和右端点,然后用left和right来标记窗口的左区间和右区间 2. 进窗口 3....left右移,进窗口就是让right右移 根据我们上面的步骤,当判断成立的时候我们更新结果(长度len)(ps:更新结果的位置是不确定的,有的题目是进窗口的时候就要更新结果,有的是判断的时候才更新结果

    40910
    领券