[转]VC中如何实现窗口的隐藏

用MFC做的Dialog based 程序只要在OnInitDialog()函数里面写如下代码就能实现窗口隐藏:

    SetWindowPos(&CWnd::wndNoTopMost,0,0,0,0,SWP_HIDEWINDOW);   

    ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW);   

但是在任务管理器中还能看到!

将上述代码写入一个按纽的CLICK事件中即可实现程序的后台运行,且任务管理器中不可见!

下面的方法可以使窗口彻底的不可见:

1. 如何有效地使初始窗口不显示

当我们想让窗口初始时不显示时,通常会用ShowWindow(SW_HIDE) ,但实际上还是在启动是可以看到窗口一闪而过的痕迹。所以,可以使用下面的方法来实现它:

(1.1)先在构造函数中设置布乐变量 visible值为false.

visible = false;

(1.2)重载 WM_WINDOWPOSCHANGING,并添加下面代码:

void CTest_deleteDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos) 

{ 

if(!visible) 

lpwndpos->flags &= ~SWP_SHOWWINDOW; 

CDialog::OnWindowPosChanging(lpwndpos); 

} 

(1.3)然后设布尔visible变量值为true,并在要显示窗口时,再用ShowWindow(SW_SHOW)既可。visible = true;

ShowWindow(SW_SHOW); 
时间: 2024-10-07 18:28:09

[转]VC中如何实现窗口的隐藏的相关文章

vc中实现控件的隐藏与显示

1.隐藏控件 CWnd *pWnd; pWnd = GetDlgItem(IDC_EDIT1);        //获取控件指针,IDC_EDIT1为控件ID号         pWnd->ShowWindow( SW_HIDE );      //隐藏控件 2.显示控件 CWnd *pWnd;         pWnd = GetDlgItem( IDC_EDIT1 );   //获取控件指针,IDC_EDIT为控件ID号        pWnd->ShowWindow( SW_SHOW )

VC中判断指定窗口是否被其他窗口遮挡

本来是想判断当前窗口是否在最前面,无奈办法用尽就是不行,于是想换个思路:判断指定窗口是否被其他窗口遮挡.然后掘网三尺,找到了这个: bool CTestTray2Dlg::IsCoveredByOtherWindow(HWND hWnd){ RECT rcTarget;  ::GetWindowRect(hWnd, &rcTarget); bool isChild = (WS_CHILD == (::GetWindowLong(hWnd, GWL_STYLE) & WS_CHILD));

VC实现A进程窗口嵌入到B进程窗口中显示的方法

这篇文章主要介绍了VC实现A进程窗口嵌入到B进程窗口中显示的方法,对于理解windows程序运行原理的进程问题有一定的帮助,需要的朋友可以参考下 本文通过一个Demo示例讲述把A应用程序嵌入到B应用程序中显示的方法. 主要代码如下: <span style="font-size:12px;font-weight: normal;">//在B应用启动时创建A进程 CreateProcess(_T("A.exe"),NULL,NULL,NULL,FALSE,

VC 中窗口的销毁

http://blog.csdn.net/oldmtn/article/details/6904697 基础知识很重要,Win32中的窗口句柄和MFC窗口类对象的2个概念.前者被后者包装了起来. 先看下MSDN中的TN017中的文章 In the case of C++ Windows objects that do perform auto-cleanup, you must callDestroyWindow. If you use operator delete directly, the

VC 在子线程中结束主窗口程序

在MFC 中,创建一个子线程,若想在子线程中退出主窗口程序,可使用PostMessage 向主窗口发送close 或者quit 消息. BOOL CHandBoxComDlg::OnInitDialog() { g_pThread= AfxBeginThread(ThreadRdFromHandBox, (LPVOID)this); } UINT ThreadRdFromHandBox(LPVOID pParam) { CHandBoxComDlg* pParent=(CHandBoxComDl

【转载】VC中如何调用其他的可执行程序

在开发项目的时候,有的时候会分开来开发,分开的有时是exe文件,有的时候也会调用现成的工具包里面的一些exe文件,这样在项目里面就要通过调用exe文件来使用. 那么在C++里面直接调用exe文件的方法有哪些呢?现在可考虑的方法主要有: a.使用system函数 b.使用exec或者是execv函数 c.使用WinExec函数 d.使用CreateProcess函数 e.使用ShellExcecuteEx函数 1)上面的5中方法中,system函数,函数原型system(执行shell命令)定义函

VC中常见的108个问题

(1) 如何通过代码获得应用程序主窗口的 指针? 主窗口的 指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现. AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED) //使程序最大化. (2) 确定应用程序的路径 Use GetModuleFileName 获得应用程序的路径,然后去掉可执行文件名. Example: TCHAR exeFullPath[MAX_PATH] // MAX_PATH在API中定义了吧,

VC++中开发汇编语言(转)

汇编程序结构 一个显示字符串的汇编程序 程序格式 一.模式定义 二.includelib语句 三.函数声明语句 四.数据和代码部分 Visual C/C++环境 建立工程 汇编程序的调试 一.设置断点 二.内存窗口 三.寄存器窗口 四.监视窗口 常用调试命令 字符串输入.输出 printf sprintf scanf 常用Windows API调用 MessageBox 确定函数的声明语句和库文件 读取CPU标识 WinDbg调试工具 实验题:用MessageBox函数显示CPU信息 源自:ht

深度解析VC中的消息传递机制

摘要:Windows编程和Dos编程,一个很大的区别就是,Windows编程是事件驱动,消息传递的.所以,要学好Windows编程,必须 对消息机制有一个清楚的认识,本文希望能够对消息的传递做一个全面的分析. 一.什么是消息? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉.一个消息,是系统定义的一个32位的值,他唯一的定 义了一个事件,向Windows发出一个通知,告诉应用程序某个事情发生了.例如,单击鼠标.改变窗口尺寸.按下键盘上的一个键 都会使Windows发送一个