1、多文档程序运行是,默认不新建文档:在APP类的InitInstance中CCommandLineInfo cmdInfo;和 ParseCommandLine(cmdInfo);中间添加语句 cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;
2、多文档程序运行时,主窗体默认最大化:在APP类的InitInstance中将pMainFrame->ShowWindow(m_nCmdShow);替换为 pMainFrame->ShowWindow(SW_MAXIMIZE);
3、多文档程序打开或新建文档时,最大化处理:在CChildFrame::PreCreateWindow方法中添加cs.style |= WS_VISIBLE | WS_MAXIMIZE;作为第一句。
4、多文档程序中,默认打开指定文件::在APP类的InitInstance中CCommandLineInfo cmdInfo;和 ParseCommandLine(cmdInfo);中间添加语句cmdInfo.m_nShellCommand = CCommandLineInfo::FileOpen; cmdInfo.m_strFileName = _TEXT("文件名");即可!
5、窗体的任何区域可以拖动功能
通过添加消息响应函数
afx_msg LRESULT OnNcHitTest(CPoint point);
添加宏
ON_WM_NCHITTEST()
然后, 定义OnNcHitTest的行为即可, OnNcHitTest的代码如下:
LRESULT CBaseDlg::OnNcHitTest(CPoint point)
{
CRect rect;
GetClientRect(rect);
ClientToScreen(rect);
if(rect.PtInRect(point))
{
return HTCAPTION;
}
return CDialogEx::OnNcHitTest(point);
}
注意:CBaseDlg可以是你的窗体基类,也可以设置成你自己的窗体类,只要对应就好;LRESULT返回值在不同的VS中,返回值可能不同,有的是UINT,如果编译有问题,直接按照提示修改就行。更加简化的实现如下:
UINT CBaseDlg::OnNcHitTest(CPoint point)
{
UINT uRet = CDialogEx::OnNcHitTest(point);
if(HTCLIENT == uRet)
return HTCAPTION;
return uRet;
}
或
UINT CBaseDlg::OnNcHitTest(CPoint point)
{
UINT uRet = CDialogEx::OnNcHitTest(point);
return (HTCLIENT == uRet) ? HTCAPTION : uRet;
}