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;
    	}
    }
  • 相关阅读:
    Find the Smallest K Elements in an Array
    Count of Smaller Number
    Number of Inversion Couple
    Delete False Elements
    Sort Array
    Tree Diameter
    Segment Tree Implementation
    Java Programming Mock Tests
    zz Morris Traversal方法遍历二叉树(非递归,不用栈,O(1)空间)
    Algorithm about SubArrays & SubStrings
  • 原文地址:https://www.cnblogs.com/iwanc/p/2654625.html
Copyright © 2011-2022 走看看