关于关闭子窗口,主窗口就无故最小化的问题

时间:2021-10-23 23:49:31
我是先用下面代码建立了主窗口和子窗口:
BOOL CCoolFACEApp::InitInstance()
{
CWinApp::InitInstance();

CMainCoolFACE* pMainCoolFACE = new CMainCoolFACE();
        //主窗体
pMainCoolFACE->CreateEx(0,_T("MAINCOOLFACE"),_T("电脑卫士"),WS_MAXIMIZEBOX|WS_MINIMIZEBOX|WS_POPUPWINDOW|WS_THICKFRAME,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL);
m_pMainWnd = pMainCoolFACE;  
pMainCoolFACE->CenterWindow();
pMainCoolFACE->ShowWindow(SW_SHOW);
pMainCoolFACE->UpdateWindow();

m_pMainSkin = new CMainSkin();
        //子窗口
m_pMainSkin->CreateEx(0,_T("MAINSKIN"),_T("个性空间"),WS_EX_DLGMODALFRAME|WS_MAXIMIZEBOX|WS_MINIMIZEBOX|WS_POPUPWINDOW|WS_THICKFRAME,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,m_pMainWnd->GetSafeHwnd(),NULL);
m_pMainSkin->CenterWindow();

return TRUE;
}


然后在主窗口的换肤按钮的单击事件中加入如下代码:
void CCaptionRightPanel::OnClickedPngBtnSkin()
{
CMainCoolFACE* pMainCoolFACE = (CMainCoolFACE*)AfxGetMainWnd();
pMainCoolFACE->EnableWindow(FALSE);

CMainSkin* pMainSkin = ((CCoolFACEApp*)AfxGetApp())->m_pMainSkin;
pMainSkin->ShowWindow(SW_SHOW);
pMainSkin->UpdateWindow();

}


在子窗口(也就是换肤窗口)的关闭按钮事件中加入如下代码:
void CSkinCaptionRightPanel::OnClickedPngBtnClose()
{
CMainSkin* pMainSkin = ((CCoolFACEApp*)AfxGetApp())->m_pMainSkin;
pMainSkin->ShowWindow(SW_HIDE);

CMainCoolFACE* pMainCoolFACE = (CMainCoolFACE*)AfxGetMainWnd();
pMainCoolFACE->EnableWindow(TRUE);
}


但是当关闭子窗口时,主窗口不知道什么原因,自己就最小化了,是什么原因导致的呢?
我现在就是想关闭子窗口时主窗口还在原位置不动,不最小化,

万分感谢各位兄弟了

13 个解决方案

#1


没有兄弟关注,我自己顶一下,帮我一下吧兄弟们

#2


SW_SHOWNORMAL  ??

#3


引用 2 楼 schlafenhamster 的回复:
SW_SHOWNORMAL  ??


兄弟,你说的是什么意思啊,能不能具体一些啊,万分感谢啊

#4


pMainCoolFACE->ShowWindow(SW_SHOWNORMAL);

我在换肤窗口关闭按钮事件中加入了上面一行,但没有作用

#5


#define SW_HIDE             0
#define SW_SHOWNORMAL       1
#define SW_NORMAL           1
#define SW_SHOWMINIMIZED    2
#define SW_SHOWMAXIMIZED    3
#define SW_MAXIMIZE         3
#define SW_SHOWNOACTIVATE   4
#define SW_SHOW             5
#define SW_MINIMIZE         6
#define SW_SHOWMINNOACTIVE  7
#define SW_SHOWNA           8
#define SW_RESTORE          9
#define SW_SHOWDEFAULT      10
#define SW_FORCEMINIMIZE    11
#define SW_MAX              11

#6


楼上的哥们,你这是怎么用的啊,能不能详细点啊,万分感谢哥们啊

#7


 m_pMainSkin->CreateEx(0,_T("MAINSKIN"),_T("个性空间"), WS_EX_DLGMODALFRAME|WS_MAXIMIZEBOX|WS_MINIMIZEBOX|WS_POPUPWINDOW|WS_THICKFRAME,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,m_pMainWnd->GetSafeHwnd(),NULL);

去 WS_EX_风格试试

#8


哥们,测试了,无效啊。

#9


学会使用Spy++软件。

Setting a Breakpoint on a Message Received by a Windows Function
You can set message breakpoints to stop the debugger when a particular WndProc function message is received.

Note   Message breakpoints work only on x86- or Pentium-based systems.

To set a breakpoint on a message 

From the Edit menu, click Breakpoints. 
The Breakpoints dialog box appears.

Click the Messages tab.


In the Break At WndProc text box, type the name of the Windows function. 
If you are setting a breakpoint during a debug session, the list contains the exported functions in your project. 

In the Set One Breakpoint For Each Message To Watch list box, select the message.


To set another breakpoint, press ENTER, and then repeat steps 3 and 4. 
The Breakpoints list displays the currently active breakpoints.

Click OK to set the breakpoints. 
Note If you interrupt execution while Windows or other system code is running, the results can be unpredictable.

#10


下断点了,没看出来什么啊,我是新手,求大侠帮助,万分感谢, 

#11


w32 中"如果没有对SetForegroundWindow的调用,在关闭模态窗口之后父窗口会最小化。"
MFC 应该不会

#12


您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了 疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖
相关规定详见界面 界面版关于版主结帖工作的具体办法

#13


你好版主,  这个问题还没有解决,能不能不结啊

#1


没有兄弟关注,我自己顶一下,帮我一下吧兄弟们

#2


SW_SHOWNORMAL  ??

#3


引用 2 楼 schlafenhamster 的回复:
SW_SHOWNORMAL  ??


兄弟,你说的是什么意思啊,能不能具体一些啊,万分感谢啊

#4


pMainCoolFACE->ShowWindow(SW_SHOWNORMAL);

我在换肤窗口关闭按钮事件中加入了上面一行,但没有作用

#5


#define SW_HIDE             0
#define SW_SHOWNORMAL       1
#define SW_NORMAL           1
#define SW_SHOWMINIMIZED    2
#define SW_SHOWMAXIMIZED    3
#define SW_MAXIMIZE         3
#define SW_SHOWNOACTIVATE   4
#define SW_SHOW             5
#define SW_MINIMIZE         6
#define SW_SHOWMINNOACTIVE  7
#define SW_SHOWNA           8
#define SW_RESTORE          9
#define SW_SHOWDEFAULT      10
#define SW_FORCEMINIMIZE    11
#define SW_MAX              11

#6


楼上的哥们,你这是怎么用的啊,能不能详细点啊,万分感谢哥们啊

#7


 m_pMainSkin->CreateEx(0,_T("MAINSKIN"),_T("个性空间"), WS_EX_DLGMODALFRAME|WS_MAXIMIZEBOX|WS_MINIMIZEBOX|WS_POPUPWINDOW|WS_THICKFRAME,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,m_pMainWnd->GetSafeHwnd(),NULL);

去 WS_EX_风格试试

#8


哥们,测试了,无效啊。

#9


学会使用Spy++软件。

Setting a Breakpoint on a Message Received by a Windows Function
You can set message breakpoints to stop the debugger when a particular WndProc function message is received.

Note   Message breakpoints work only on x86- or Pentium-based systems.

To set a breakpoint on a message 

From the Edit menu, click Breakpoints. 
The Breakpoints dialog box appears.

Click the Messages tab.


In the Break At WndProc text box, type the name of the Windows function. 
If you are setting a breakpoint during a debug session, the list contains the exported functions in your project. 

In the Set One Breakpoint For Each Message To Watch list box, select the message.


To set another breakpoint, press ENTER, and then repeat steps 3 and 4. 
The Breakpoints list displays the currently active breakpoints.

Click OK to set the breakpoints. 
Note If you interrupt execution while Windows or other system code is running, the results can be unpredictable.

#10


下断点了,没看出来什么啊,我是新手,求大侠帮助,万分感谢, 

#11


w32 中"如果没有对SetForegroundWindow的调用,在关闭模态窗口之后父窗口会最小化。"
MFC 应该不会

#12


您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了 疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖
相关规定详见界面 界面版关于版主结帖工作的具体办法

#13


你好版主,  这个问题还没有解决,能不能不结啊