MDI 程序,如何在启动时不自动建立新文档?
BOOL CPoissonApp::InitInstance()
{
......
CCommandLineInfo cmdInfo;
// Alter behaviour to not open window immediately
cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;
}
如何启动窗口时,主窗口和子窗口就最大化?
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT cs)
{
cs.style = WS_OVERLAPPED | WS_CAPTION | FWS_ADDTOTITLE | WS_THICKFRAME |
WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_MAXIMIZE;
return TRUE;
}
BOOL CPoissonApp::InitInstance()
{
......
// The main window has been initialized, so show and update it.
pMainFrame- ShowWindow(SW_SHOWMAXIMIZED);//正常显示改为 SW_SHOWNORMAL
pMainFrame- UpdateWindow();
return TRUE;
}
BOOL CChildFrame::PreCreateWindow(CREATESTRUCT cs)
{
......
cs.style = WS_CHILD | WS_VISIBLE | WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU |
FWS_ADDTOTITLE | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_MAXIMIZE;
return TRUE;
}
请问如何使用代码改变子窗口的大小?
在用MFC库开发的应用程序中, 视图是被框架窗口所围绕的一个子窗口。为了改变一个视图的大小,可以通过在视图的InitialUpdate(...)
中调用函数GetParentFrame()
来得到框架窗口的指针,然后调用函数MoveWindow()
/SetWindowPos()
来改变父窗口的大小。当父框架窗口改变大小时,视图也会自动地改变大小来适应父窗口。如下:
CFrameWnd *pFrame = this->GetParentFrame();
if (pFrame)
{
pFrame->SetWindowPos(NULL, 0, 0, 160, 160, SWP_NOZORDER);
}
ON_UPDATE_COMMAND_UI_RANGE
的用法
afx_msg void OnUpdateMenu(CCmdUI *pCmdUI);
在 cpp 文件 messgae map 处添加 ON_UPDATE_COMMAND_UI_RANGE( id2, id2, OnUpdateMenu)
,id1
和 id2
是你的菜单项的起始和最终ID,在 OnUpdateMenu(CCmdUI *pCmdUI)
中通过判断pCmdUI
的m_nID
或m_nIndex
来实现你自己的逻辑。
为 MFC 程序添加 XP 主题
C***App
的cpp中:
BOOL CFaceliftApp::InitInstance()
{
// 主题风格
InitCommonControls();
}
参考
http://hi.baidu.com/shilyx/blog/item/837fa5ec7babc62663d09f3f.html *
PREVIOUSON_MESSAGE使用方法