您的位置:首页 > 其它

文档视图应用程序实例

2012-08-24 18:15 204 查看
1.窗体操作 实现启动时无子窗口的 MDI 程序

BOOL CNoChildWndApp::InitInstance()
{
CCommandLineInfo cmdInfo;         //命令行信息类
ParseCommandLine(cmdInfo);

//禁止程序启动时自动创建子窗口
cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;
cmdInfo.m_strFileName = "c:\\test.txt";
}

实现 MDI 应用程序启动时子窗口默认最大化

BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CMDIChildWnd::PreCreateWindow(cs) )
return FALSE;
//修改子窗口的类型为最大化样式
cs.style = cs.style | WS_MAXIMIZE | WS_VISIBLE;
return TRUE;
}

MDI 应用程序启动时主窗口默认最大化

BOOL CNoChildWndApp::InitInstance()
{
//pMainFrame->ShowWindow(m_nCmdShow);               //原程序代码
pMainFrame->ShowWindow(SW_SHOWMAXIMIZED); //修改的代码
pMainFrame->UpdateWindow();

return TRUE;
}


SW_HIDE 隐藏窗口,激活另外一个窗口.

SW_MINIMIZE 最小化窗口,激活另外一个窗口.

SW_RESTORE 显示窗口.如果窗口是最大化或最小化,显示为原来大小.

SW_SHOW 显示窗口,窗口处于活动状态.

SW_SHOWMAXIMIZED 最大化显示窗口,窗口处于活动状态.

SW_SHOWMINIMIZED 最小化显示窗口,窗口处于活动状态.

SW_SHOWMINNOACTIVE 最小化窗口,保持原来活动状态.

SW_SHOWNA 保持原活动状态显示窗口.

SW_SHOWNOACTIVATE 以最近的大小位置显示窗口.

SW_SHOWNORMAL 显示窗口.如果窗口是最大化或最小化,显示为原来大小.

具有图片背景的 MDI 主窗口①导入背景位图 IDB_BITMAP1. ②添加新类 CBgWnd(基类:generic CWnd). ③重载 CBgWnd 类中的 OnEraseBkgnd(CDC* pDC)函数.

BOOL CBgWnd::OnEraseBkgnd(CDC* pDC)
{
CRect rectClient;				// 客户区
CDC dcMen;						// 内存设备描述表
CBitmap bmp;					// 位图对象
bmp.LoadBitmap(IDB_BITMAP1);	// 从资源加载位图

BITMAP tmpBitmap;
bmp.GetObject(sizeof(BITMAP), &tmpBitmap);
CSize bmpSize(tmpBitmap.bmWidth, tmpBitmap.bmHeight);	// 得到位图的大小

dcMen.CreateCompatibleDC(pDC);							// 创建兼容的设备描述表
CBitmap *pOld=dcMen.SelectObject(&bmp);					// 选入新的位图对象并保存旧的位图对象
GetClientRect(&rectClient);									// 取得客户区的大小
// 从内存向屏幕复制位图对象
pDC->StretchBlt(rectClient.left, rectClient.top, rectClient.Width(), rectClient.Height(),
&dcMen, 0, 0, bmpSize.cx, bmpSize.cy, SRCCOPY);

dcMen.SelectObject(pOld);		// 恢复旧的位图对象
dcMen.DeleteDC();				// 删除内存设备描述表
return true;
}

④重载 CBgWnd 类中的 OnSize(UINT nType,int cx,int cy)函数.

void CBgWnd::OnSize(UINT nType, int cx, int cy)
{
CWnd::OnSize(nType, cx, cy);
Invalidate();
}

⑤在 CMainFrame 类中增加 CBgWnd 类型变量.

private:
CBgWnd m_wndBg;

⑥CMainFrame 类中添加实现代码.

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;

// 把m_wndBg子类化为主窗口的客户窗口
if(!m_wndBg.SubclassWindow(m_hWndMDIClient))
{
TRACE("Fail to subclass MDI client window\n");
return -1;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: