请问如何在PreCreateWindow中实现窗口显示的最大化?

时间:2022-07-06 10:52:43
对于SDI框架程序,最大化放在CWinApp::InitInstance()中没问题,但如何放在PreCreateWindow中呢?

19 个解决方案

#1


cs.cx=GetSystemMetrics (SM_CXSCREEN) ;
cs.cy=GetSystemMetrics (SM_CYSCREEN) ;

#2


cs.cx=GetSystemMetrics (SM_CXSCREEN) ;
cs.cy=GetSystemMetrics (SM_CYSCREEN) ;

#3


但是这样仅仅是将窗口大小设置成了最大的了,而没有实现最大化按钮的效果!
明白吗?

#4


ShowWindow(SW_MAXIMIZE);

#5


但是这样仅仅是将窗口大小设置成了最大的了,而没有实现最大化按钮的效果!
明白吗?

i don't understand your means;

#6



BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;


cs.style = WS_OVERLAPPED | WS_CAPTION |WS_THICKFRAME
| WS_SYSMENU | WS_MAXIMIZE;
return TRUE;
}
记得给分,谢谢。

#7


不行呀!

#8


怎么不行?

#9


用POSTMESSAGE
post 一个WM_SYSCOMMAND模拟选中“最大化”菜单项
看看MSDN中关于WM_SYSCOMMAND的描述

#10


应该使用下面的代码
AfxGetApp()->m_nCmdShow = SW_SHOWMAXIMIZED;

#11


你试试就知道了,不行就是不行的!
另外,我说的是在PreCreateWindow如何实现最大化的效果(将窗口设置为最大化除外)!

#12


BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
      ........
      cs.style = SW_MAXIMIZE;
      
      return TRUE; 
}

#13


搞不明白什么意思

#14


拜托,我所说的方法就是加在PreCreateWindow中的
应该使用下面的代码
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
    .................
    AfxGetApp()->m_nCmdShow = SW_SHOWMAXIMIZED;
    return TRUE;
}

#15


上面说的方法都不完美!!

To JerryGR (沉思的人) :完美的方法是不在PreCreateWindow加如何代码 :)

而是:
1.用类指针的方法创建你的CMainFrame实体。
2.改变CMainFrame实体关于的属性(如上面各位所写的代码),再show。
或者更简单的调用CMainFrame的ShowWindow(SW_MAXIMIZE)。
最后,一切okey,给分。 呵呵
sample:(the following code are in the InitInstance() of CYourApp)
CMainFrame* pMainFrame = new CMainFrame;
m_pMainWnd = pMainFrame;
if (!pMainFrame->Create(NULL, _T("name")))
    return FALSE;

m_pMainWnd->ShowWindow(SW_MAXIMIZE);

#16


忘了说了,上面代码的关键是那个Create!! :)

#17


仔细一看,还漏了一行:
m_pMainWnd->UpdateWindow();
很久不写了,呵呵,抱歉!

还有如果你的MainFrame没有 winne_ll(feiyang)所说的那几个属性,就得在显示前加上了。

#18


ShowWindow(SW_MAXIMIZE);
very good

#19


kamphkb(依栏望海) ,如果那样的话,应该是创建了自己的框,而成为系统的主线程,如果用mfc的话,应该还会存在mfc的框架。是不是?

#1


cs.cx=GetSystemMetrics (SM_CXSCREEN) ;
cs.cy=GetSystemMetrics (SM_CYSCREEN) ;

#2


cs.cx=GetSystemMetrics (SM_CXSCREEN) ;
cs.cy=GetSystemMetrics (SM_CYSCREEN) ;

#3


但是这样仅仅是将窗口大小设置成了最大的了,而没有实现最大化按钮的效果!
明白吗?

#4


ShowWindow(SW_MAXIMIZE);

#5


但是这样仅仅是将窗口大小设置成了最大的了,而没有实现最大化按钮的效果!
明白吗?

i don't understand your means;

#6



BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;


cs.style = WS_OVERLAPPED | WS_CAPTION |WS_THICKFRAME
| WS_SYSMENU | WS_MAXIMIZE;
return TRUE;
}
记得给分,谢谢。

#7


不行呀!

#8


怎么不行?

#9


用POSTMESSAGE
post 一个WM_SYSCOMMAND模拟选中“最大化”菜单项
看看MSDN中关于WM_SYSCOMMAND的描述

#10


应该使用下面的代码
AfxGetApp()->m_nCmdShow = SW_SHOWMAXIMIZED;

#11


你试试就知道了,不行就是不行的!
另外,我说的是在PreCreateWindow如何实现最大化的效果(将窗口设置为最大化除外)!

#12


BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
      ........
      cs.style = SW_MAXIMIZE;
      
      return TRUE; 
}

#13


搞不明白什么意思

#14


拜托,我所说的方法就是加在PreCreateWindow中的
应该使用下面的代码
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
    .................
    AfxGetApp()->m_nCmdShow = SW_SHOWMAXIMIZED;
    return TRUE;
}

#15


上面说的方法都不完美!!

To JerryGR (沉思的人) :完美的方法是不在PreCreateWindow加如何代码 :)

而是:
1.用类指针的方法创建你的CMainFrame实体。
2.改变CMainFrame实体关于的属性(如上面各位所写的代码),再show。
或者更简单的调用CMainFrame的ShowWindow(SW_MAXIMIZE)。
最后,一切okey,给分。 呵呵
sample:(the following code are in the InitInstance() of CYourApp)
CMainFrame* pMainFrame = new CMainFrame;
m_pMainWnd = pMainFrame;
if (!pMainFrame->Create(NULL, _T("name")))
    return FALSE;

m_pMainWnd->ShowWindow(SW_MAXIMIZE);

#16


忘了说了,上面代码的关键是那个Create!! :)

#17


仔细一看,还漏了一行:
m_pMainWnd->UpdateWindow();
很久不写了,呵呵,抱歉!

还有如果你的MainFrame没有 winne_ll(feiyang)所说的那几个属性,就得在显示前加上了。

#18


ShowWindow(SW_MAXIMIZE);
very good

#19


kamphkb(依栏望海) ,如果那样的话,应该是创建了自己的框,而成为系统的主线程,如果用mfc的话,应该还会存在mfc的框架。是不是?

#20