首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

对话框子控件隐藏有关问题,ShowWindow(SW_HIDE)不起作用了

2013-05-02 
对话框子控件隐藏问题,ShowWindow(SW_HIDE)不起作用了我有两个按钮(IDC_START_CAPTURE和IDC_STOP_CAPTURE)

对话框子控件隐藏问题,ShowWindow(SW_HIDE)不起作用了
我有两个按钮(IDC_START_CAPTURE和IDC_STOP_CAPTURE)和一个Picture控件(IDC_PICTURE)。
以下我简称START,STOP,PICTURE.
我想让START和STOP不能同时显示出来。START和PICTURE也不能同时显示。
我把STOP和PICTURE的visible属性设为false。所以初始状态下只有START按钮显示出来了。
在START按钮的单机事件中处理函数中,我将START按钮隐藏,将STOP和PICTURE控件显示出来。


void CameraWind::OnBnClickedStartCapture()
{
pCapture->Run();
GetDlgItem(IDC_START_CAPTURE)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_PICTURE)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STOP_CAPTURE)->ShowWindow(SW_SHOW);
}

上面的代码能正确运行,效果如我所料。
我再在STOP按钮的点击事件处理函数中将START显示,将STOP和PICTURE控件隐藏。可是他们都隐藏不了。

void CameraWind::OnBnClickedStopCapture()
{
GetDlgItem(IDC_STOP_CAPTURE)->ShowWindow(SW_HIDE);//无效
GetDlgItem(IDC_PICTURE)->ShowWindow(SW_HIDE);     //无效
pCapture->Stop();
GetDlgItem(IDC_START_CAPTURE)->ShowWindow(SW_SHOW);//有效
UpdateWindow();
}

上面的ShowWindow(SW_HIDE)为什么会无效呢?
ps:上面控件所属的对话框为一个子对话框。 控件 ShowWindow(SW_HIDE)
[解决办法]
刷新下界面
GetDlgItem(IDC_STOP_CAPTURE)->ShowWindow(SW_HIDE);//无效
    GetDlgItem(IDC_PICTURE)->ShowWindow(SW_HIDE);     //无效
    pCapture->Stop();
    GetDlgItem(IDC_START_CAPTURE)->ShowWindow(SW_SHOW);//有效
    UpdateWindow();
this->Invalidate();

[解决办法]
你把其他业务相关的代码先屏蔽掉,只留界面的代码看看。
[解决办法]


SetWindowLong(pWnd->GetSafeHwnd(), GWL_STYLE, GetWindowLong(pWnd->GetSafeHwnd(), GWL_STYLE) 
[解决办法]
 WS_VISIBLE); //显示


SetWindowLong(pWnd->GetSafeHwnd(), GWL_STYLE, GetWindowLong(pWnd->GetSafeHwnd(), GWL_STYLE) & ~WS_VISIBLE); //隐藏

在加上Invalidate刷新界面,控制界面的话可以也考虑用EnableWindow。


[解决办法]
用EnableWindow不可以吗。
[解决办法]
“两个按钮”
多余,一个够了!

热点排行