关于窗口启动隐藏

SkyGray 2010-01-13 02:08:23
在 OnInitDialog 内 return前面加了这段代码
ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW);
WINDOWPLACEMENT wp;
GetWindowPlacement(&wp);
wp.showCmd=SW_HIDE;
SetWindowPlacement(&wp);
怎么窗口启动的时候还是没有隐藏啊
...全文
179 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
c_s0001 2010-01-14
  • 打赏
  • 举报
回复
在OnInitialDialog里面加一句
PostMessage(WM_SHOWWINDOW,FALSE,SW_PARENTOPENING);
Joephia 2010-01-14
  • 打赏
  • 举报
回复
如果想启动程序而没有窗口,简单的办法是在 InitInstance函数中修改

1.基于对话框
不调用 DoModal();

2.SDI/MDI
pMainFrame->ShowWindow(m_nCmdShow); 改成 ShowWindow(SW_HIDE);
ripyu 2010-01-14
  • 打赏
  • 举报
回复
ShowWindow(SW_HIDE)
SkyGray 2010-01-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zhupf 的回复:]
在 OnInitDialog()最后添加
C/C++ code
ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW);
WINDOWPLACEMENT wp;
wp.length=sizeof(WINDOWPLACEMENT);
wp.flags=0;
wp.showCmd=SW_HIDE|SW_SHOWNORMAL;
SetWindowPlacement(&wp);
[/Quote]
直接自己构造一 WINDOWPLACEMENT对象是可以的
我想知道,我直接获取wp,然后修改了 再set 为什么 会无效啊
SkyGray 2010-01-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 arpnet99 的回复:]
上面else里面的代码换成:
long Style=::GetWindowLong(*this,GWL_STYLE); 
::SetWindowLong(*this,GWL_EXSTYLE,WS_EX_TOOLWINDOW);                     
::MoveWindow(*this,0,0,0,0,FALSE); 
[/Quote]
你的×this 行吗? this不是本来就一个指针 指向当前对象的么?
dvlinker 2010-01-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sandyandy 的回复:]
其他的都去掉, 只要在OnInitDialog中加入 ShowWindow(SW_HIDE)就行了
[/Quote]正解
不说害怕 2010-01-13
  • 打赏
  • 举报
回复
在 OnInitDialog()最后添加

ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW);
WINDOWPLACEMENT wp;
wp.length=sizeof(WINDOWPLACEMENT);
wp.flags=0;
wp.showCmd=SW_HIDE|SW_SHOWNORMAL;
SetWindowPlacement(&wp);
cdm2179 2010-01-13
  • 打赏
  • 举报
回复
把下面代码加到OnInitDialog()中
WINDOWPLACEMENT wp;
wp.length=sizeof(WINDOWPLACEMENT);
wp.flags=WPF_RESTORETOMAXIMIZED;
wp.showCmd=SW_HIDE;
SetWindowPlacement(& wp);
这不是鸭头 2010-01-13
  • 打赏
  • 举报
回复
上面else里面的代码换成:
long Style=::GetWindowLong(*this,GWL_STYLE);
::SetWindowLong(*this,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
::MoveWindow(*this,0,0,0,0,FALSE);
这不是鸭头 2010-01-13
  • 打赏
  • 举报
回复
添加WM_SHOWWINDOW消息
void CTest_InitHideDlg::OnShowWindow(BOOL bShow, UINT nStatus)
{
CDialog::OnShowWindow(bShow, nStatus);

// TODO: 在此处添加消息处理程序代码
if (GetStyle()&WS_VISIBLE )
{
CDialog::OnShowWindow(bShow, nStatus);
}
else
{
long Style = ::GetWindowLong(*this,GWL_STYLE);
::SetWindowLong(*this,GWL_STYLE,Style|WS_VISIBLE);
CDialog::OnShowWindow(SW_HIDE,nStatus);
}
}
SKy_kid 2010-01-13
  • 打赏
  • 举报
回复
在dlg里定义CRect m_rc;
OnInitDlg里
GetClient(&rc);
MoveWindow(0,0,0,0);
搞定= =。
shen_wei 2010-01-13
  • 打赏
  • 举报
回复
ShowWindow(SW_HIDE) ;
可以放在APP类中!!


SkyGray 2010-01-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 liubinstud 的回复:]
ShowWindow(SW_HIDE)  OK 了
[/Quote]
在OnInitDialog 是不行地。。。
我在地球 2010-01-13
  • 打赏
  • 举报
回复
ShowWindow(SW_HIDE) OK 了
SkyGray 2010-01-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sandyandy 的回复:]
其他的都去掉, 只要在OnInitDialog中加入 ShowWindow(SW_HIDE)就行了
[/Quote]
OnInitDialog 这个中 窗口应该尚未形成,ShowWindow(SW_HIDE) 应该未起作用吧。。。
sandyandy 2010-01-13
  • 打赏
  • 举报
回复
其他的都去掉, 只要在OnInitDialog中加入 ShowWindow(SW_HIDE)就行了

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧