zoukankan      html  css  js  c++  java
  • WTL编程小技巧汇编

    1、设置窗体生成大小并中央显示窗口

    2、设置窗体最大/小尺寸

    3、动态设置窗体标题

    4、设置对话框的字体和背景颜色

    5、设置窗体控件默认字体

    以下技巧可应用于SDI和MDI程序:

    1、设置窗体生成大小并中央显示窗口

      在全局函数Run中创建了CMainFrame,修改创建的语句就可以指定窗口的初始大小。在这个函数中,在ShowWindow()之前调用CenterWindow()可以将主窗口在屏幕中央显示,参见代码:

    int Run(LPTSTR /*lpstrCmdLine*/ = NULL, int nCmdShow = SW_SHOWDEFAULT)
    {
        ... ...
    
        RECT rc = {0, 0, 300, 600};        // 设置窗口的初始位置(0,0)、大小(300,600)
        if(wndMain.CreateEx(NULL, rc) == NULL)
        {
            ATLTRACE(_T("Main window creation failed!
    "));
            return 0;
        }
      
    wndMain.CenterWindow();       // 居中显示窗口
      wndMain.ShowWindow(nCmdShow);
    ... ...
    return nRet;
    }

     2、设置窗体最大/小尺寸

       在CMainFrame中有一个消息叫做WM_GETMINMAXINFO负责控制窗体最大/小尺寸的,实现这个消息的响应函数就行了:

    BEGIN_MSG_MAP(CMainFrame)
        ... ...
        MESSAGE_HANDLER(WM_GETMINMAXINFO, OnGetMinMaxInfo)
    END_MSG_MAP()
    
    ... ...
    
    LRESULT CMainFrame::OnGetMinMaxInfo(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/)
    {
        // TODO: 这里设置窗体的最大/小属性
        LPMINMAXINFO lpInfor = (LPMINMAXINFO)lParam;
        lpInfor->ptMinTrackSize.x = 200;
        lpInfor->ptMinTrackSize.y = 400;
        lpInfor->ptMaxTrackSize.x = 800;
        lpInfor->ptMaxTrackSize.y = 600;
    
        return 0;
    }

     3、动态设置窗体标题

      可以通过加载系统资源中的字符串,并把字符串作为窗体标题显示出来。要用到CString需加载头文件<atlmisc.h>,在CMainFrame::OnCreate函数中可以设置窗体标题:

    CString strInfor;
    strInfor.LoadString(IDS_EDITSTRING);
    SetWindowText(strInfor);

    4、设置对话框的字体和背景颜色

      比如说设置“关于”对话框的字体和背景色,可以设置两个消息的映射:WM_CTLCOLORDLG 和 WM_CTLCOLORSTATIC。在消息响应函数中可以设置字体颜色和背景色:

    MESSAGE_HANDLER(WM_CTLCOLORDLG, OnCtrlColor)
    MESSAGE_HANDLER(WM_CTLCOLORSTATIC, OnCtrlColor)
    
    ... ...
    
    LRESULT OnCtrlColor(UINT, WPARAM, LPARAM, BOOL&) 
    {
        // 设置背景模式和文字颜色 
        SetBkMode((HDC)wParam, TRANSPARENT);         // 透明背景
        SetTextColor((HDC)wParam, RGB(255255255));  // 白色文字  
        return (LRESULT)AtlGetStockBrush(BLACK_BRUSH); 
    }

     5、设置窗体控件默认字体

      当一个控件被放置在对话框上时,控件就采用对话框的缺省字体。然而,当一个控件如视图或者分割面板被使用在窗口中时,将使用SYSTEM_FONT字体,这种字体不是很漂亮。要改变字体的话,只要在工程中增加atlmisc.h文件,然后调用AtlGetStockFont取得truetype字体DEFAULT_GUI_FONT,将控件设置成这种字体:

    MyControl.SetFont(AtlGetStockFont(DEFAULT_GUI_FONT), TRUE);
  • 相关阅读:
    数据库ALL和ANY的区别
    数据库-关系代数-投影
    数据库关系代数表达式学习
    数据模型的三要素
    题解 P2812 【校园网络【[USACO]Network of Schools加强版】】
    题解 P2746 【[USACO5.3]校园网Network of Schools】
    题解 P2257 【YY的GCD】
    题解 P6476 【[NOI Online #2 提高组]涂色游戏】
    题解 P2522 【[HAOI2011]Problem b】
    题解 P4782 【【模板】2-SAT 问题】
  • 原文地址:https://www.cnblogs.com/kuliuheng/p/5455726.html
Copyright © 2011-2022 走看看