vc 程序单例
来源:互联网 发布:centos 个人 编辑:程序博客网 时间:2024/06/02 00:05
1、首先需要设置一个窗体的属性标志,例如设置一个全局的字符串 cosnt CString g_wndPropName = L"MyProp";
为主窗体加上属性标志 ;
I、在主窗体的OnInitDialog();中添加 ::SetProp(m_hWnd, g_wndPropName , (HANDLE)1); ///< param3中PData用于。。
II、需要注意的是对应的需要在窗体销毁之前将窗体属性移除 ::RemoveProp(m_hWnd, g_wndPropName );
2、在主程序的Instance()中添加 实例验证;
思路是当程序启动的时候 创建一个全局的(跨进程的)标志,例如 Mutex ,Semaphore、Enent都是可以的;
然后去检测是否创建已经存在,在已经存在的情况下去搜索之前的那个窗体和窗体标志,得到后前置;
HANDLE sem = CreateSemaphore(NULL, 1, 1, L"semName");if (sem){ if (ERROR_ALREADY_EXISTS == GetLastErrror) { CloseHandle(sem); HANDLE hWndpre = ::GetWindow(::GetDesktopWindow(), GW_CHILD); while (::IsWindow(hWndpre)) { if (::GetProp(hWndPre,g_wndPropName ) ) //< 获取窗体属性 { if (::IsIconic(hWndpre)) { ::ShowWindow(hWndpre, SW_RESTORE); } SetFogegroundWindow(hWndpre); ///< 窗体提到最前面 return false; ///< 返回 } hWndpre = ::GetWindow(hWndpre, GW_HWNDNEXT); } ////< 如果到这里 ,则 已经运行一个实例但是找不到主窗体,可能是没有设置窗体属性(SetProp) }}else{///《 创建程序标志失败;}
0 0
- vc 程序单例
- VC单例运行
- 去掉VC单文档程序标题
- VC单文档程序窗口运行最大化
- VC++2010 制作单文档托盘程序
- 28.VC(custom)-控制一个程序只能有一个进程(单例随手代码)
- 程序单例运行
- VC 开发单文档程序窗口运行即最大化
- VC++实现单文档程序的全屏显示及恢复
- VC 开发单文档程序窗口运行即最大化
- VC++实现单文档程序的全屏显示及恢复
- VC中单文档程序调用模态对话框
- VC++实现单文档程序的全屏显示及恢复
- VC++单文档程序窗口的静态分割
- vc中单文档程序切换不同视图
- VC++开发单文档程序窗口运行即最大化
- 全屏显示单文档程序的编辑区(VC++…
- VC开发单文档程序窗口运行即最大化
- 职场女性备孕如何调整
- 每个人应该知道的NVelocity用法
- FZU 2169 shadow
- ubuntu不识别设备
- 第十四天 乐在其中-Android与远端之GET方式
- vc 程序单例
- 个人电脑做网站服务器
- 获取SqlServer数据库数据,转成JSON对象
- extjs的常用组件语法
- 01背包 一维数组写的01背包
- Android数据存储--Internal Storage(内部存储)及权限
- Hibernate继承映射
- windows下信号机制的学习
- Win7下开发的程序总报KERNELBASE.dll错误