我怎么做到在一个应用程序里,程序一运行,其主对话框就自动隐藏? 我怎么做到在一个应用程序里,程序一运行,其主对话框就自动隐藏?ShowWindow(SW_HIDE);这样的语句在哪写最合适? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.vckbase.com/document/viewdoc.asp?id=430 重载WM_WINDOWPOSCHANGING消息在其中加入下面两句 if(!bVisible) lpwndpos->flags &= ~SWP_SHOWWINDOW;要显示时加入下面两句 bVisible = TRUE; ShowWindow(SW_SHOW); 对于Dialog的隐藏—— 就不是在BOOL CMyTrayDlg::OnInitDialog()中加 AfxGetMainWnd()->ShowWindow(SW_HIDE); AfxGetMainWnd()->UpdateWindow();可以办到。而是要到void CMyTrayDlg::OnPaint()函数中加一句AfxGetMainWnd()->ShowWindow(SW_HIDE);就可以了,不过这种方法总是会存在程序一闪而过的现象。有一种“标准”的隐藏对话框的办法,不会还有一闪而过的现象。以下为具体步骤:1、定义布尔变量: bool visible;2、构造函数中初始化:CMyTrayDlg::CMyTrayDlg(CWnd* pParent /*=NULL*/) : CDialog(CMyTrayDlg::IDD, pParent){ //{{AFX_DATA_INIT(CMyTrayDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); visible = false; //在此初始化}3、重载WM_WINDOWPOSCHANGING及其消息函数: 因为是系统原有的消息,不用再自己定义。 包括(1) afx_msg void OnWindowPosChanging(WINDOWPOS FAR* lpwndpos); //}}AFX_MSG DECLARE_MESSAGE_MAP() (2) ON_WM_WINDOWPOSCHANGING() //}}AFX_MSG_MAP END_MESSAGE_MAP() (3)再加上具体函数实现:void CMyTrayDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos) { if(!visible) lpwndpos->flags &= ~SWP_SHOWWINDOW; CDialog::OnWindowPosChanging(lpwndpos);}以上步骤做完后,就可以实现不拖泥带水的隐藏了。----------------------------------------还有很多很多方法,就不说了。。 到底如何像QQ那样粘贴图片到richedit 有谁用过mybase? Error spawning cl.exe 的问题 如何响应 树控件中的 选项被选中的事件 找了半天都没解决的问题,关于ToolBar 采鸟问一下下面两个的区别? 请问有没有办法可以让进度条从右向左运动(反方向)? 多谢!!!! 求助!!static设置透明后,InvalidateRect(&rc,true);不起作用! 怎么用API截取窗口中Rect结构体中的图像,再把图片保存到一个目录下? 界面美化问题 请大侠解答一下一个列表控件的问题! 如何在循环中使程序处理队列中的其他消息
if(!bVisible)
lpwndpos->flags &= ~SWP_SHOWWINDOW;
要显示时加入下面两句
bVisible = TRUE;
ShowWindow(SW_SHOW);
就不是在BOOL CMyTrayDlg::OnInitDialog()中
加
AfxGetMainWnd()->ShowWindow(SW_HIDE);
AfxGetMainWnd()->UpdateWindow();
可以办到。
而是要到
void CMyTrayDlg::OnPaint()函数中加一句
AfxGetMainWnd()->ShowWindow(SW_HIDE);
就可以了,不过这种方法总是会存在程序一闪而过的现象。
有一种“标准”的隐藏对话框的办法,不会还有一闪而过的现象。
以下为具体步骤:1、定义布尔变量:
bool visible;
2、构造函数中初始化:
CMyTrayDlg::CMyTrayDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMyTrayDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CMyTrayDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
visible = false; //在此初始化
}
3、重载WM_WINDOWPOSCHANGING及其消息函数:
因为是系统原有的消息,不用再自己定义。
包括(1)
afx_msg void OnWindowPosChanging(WINDOWPOS FAR* lpwndpos);
//}}AFX_MSG
DECLARE_MESSAGE_MAP() (2)
ON_WM_WINDOWPOSCHANGING()
//}}AFX_MSG_MAP
END_MESSAGE_MAP() (3)再加上具体函数实现:
void CMyTrayDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos)
{
if(!visible)
lpwndpos->flags &= ~SWP_SHOWWINDOW; CDialog::OnWindowPosChanging(lpwndpos);
}以上步骤做完后,就可以实现不拖泥带水的隐藏了。
----------------------------------------还有很多很多方法,就不说了。。