文档视图应用程序实例

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;

	}

}

你可能感兴趣的:(应用程序)