zoukankan      html  css  js  c++  java
  • 文档视图应用程序实例

    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;
    	}
    }
  • 相关阅读:
    用python对汉诺塔动态的实现
    用python语言算π值并且带有进度条
    turtle库的学习笔记
    Leetcode 230 二叉搜索树中第k小的元素
    Leetcode 665 非递减数列
    Leetcode 1423 可获得的最大点数
    Leetcode 222 完全二叉树的节点个数
    Leetcode 1208尽可能使字符串相等
    Leetcode 199 二叉树的右视图
    Leetcode 634 子数组最大平均数
  • 原文地址:https://www.cnblogs.com/iwanc/p/2654625.html
Copyright © 2011-2022 走看看