• 窗口类的定义


    接着上次的框架,肯定有疑问那两个窗口类是怎么来的

        g_pMainWnd = new CUMFCMainWindow(_T("UMFCMainWindow"));
        g_pLoginWnd 
    = new CUMFCLoginWindow(_T("UMFCLoginWindow"));

     今天就接着讲解窗口类的来历。

    #pragma once
    #include 
    "EasyUI.h"
    #include 
    "EasyDialog.h"
    #include 
    "EasyEventDelgate.h"
    #include 
    "EasyList.h"
    #include 
    "EasyStatic.h"
    #include 
    "EasyProgress.h"
    #include 
    "EasyTrayIcon.h"
    #include 
    "EasyRadioButton.h"
    #include 
    "EasyMenu.h"
    using namespace easyui;

    class CUMFCMainWindow 
    public CEasyDialogWinWnd  //windows窗口基类
    {
    public:
        CUMFCMainWindow(LPCTSTR pszWndName);
    //构造函数,需要传入窗口名称,这个名称就是xml里面配置的窗口名称,name属性的值
        LPCTSTR GetWindowClassName() const;//给窗口类指定一个名称
        UINT GetClassStyle() const;//窗口的style,不需要可以直接返回null
            
    //上面三个方法是窗口类必须实现的

        
    bool OnCreate();
        
    void OnDestory();
            
    //消息处理函数
        LRESULT OnWndMsg(UINT uMsg, WPARAM wParam,LPARAM lParam);
           
        
    //事件处理函数(下面会详细讲解)
        DECLARE_EVENT_FUN(OnMenuOpen);
        DECLARE_EVENT_FUN(OnMenuQuit);
        ....
    //若干个事件处理函数
        DECLARE_EASY_EVENT(CUMFCMainWindow);//这个是必须调用的,用来绑定事件处理函数的,参数就是窗口类名
        DECLARE_EASY_CONTROL_BIND();//这个也是必须调用的,用来绑定控件到成员变量,方便访问 
        
    //注意:关于事件控件绑定,后面文章会详细讲解
       
    public//控件变量
        CEasyStatic    *m_pStcUsrname;
        CEasyList    
    *m_pListRun; 
            ...
    //若干控件 

     大致的头文件就这样子了。(这里没有给出完整版本,如果需要完整版本的例子工程,可以联系我QQ发送,或者留下邮箱)

    CPP文件也有一些必须的工作:

    BEGIN_ULTRANT_EVENT_MAP(CUMFCMainWindow)//事件绑定开始的宏
        
    //事件绑定,第一个参数是窗口类名称,第二个是控件名称,第三个是事件类型的宏
        /*
        支持的事件类型
        //控件事件
        enum EVENT_ID
        {
            EVENT_SKIN_BEFORE,
            EVENT_SKIN_AFTER,
            EVENT_TIMER,
            EVENT_BTN_LCLICK,
            EVENT_BTN_RCLICK,
            EVENT_BTN_LDBCLICK,
            EVENT_BTN_RDBCLICK,
            EVENT_CHK_SELECT,
            EVENT_RADIO_SELECT,
            EVENT_SLIDER_SCROLL,
            EVENT_LSTBOX_SELCHANGE,
            EVENT_LSTBOX_DBLCLICK,
            EVENT_LST_ROW_SELCHANGE,
            EVENT_LST_ITEM_SELCHANGE,
            EVENT_LST_DBLCLICK,
            EVENT_TREE_SEL_CHANGE,
            EVENT_TREE_DBCLICK,
            EVENT_MENU_SELECT,
            EVENT_COMBOX_SELCHANGE,
            EVENT_EDIT_TEXT_INPUT,
            EVENT_EDIT_TEXT_CHANGE,
            EVENT_STEP_NUM_CHANGE,
            EVENT_END,//扩展的event需要从这里开始
        };
        
    */
        ON_ULTRANT_EVENT(_T(
    "UMFCMainWindow"),     _T("btnaddtask"),          EVENT_BTN_LCLICK,            &CUMFCMainWindow::OnAddTask);
        ON_ULTRANT_EVENT(_T(
    "UMFCMainWindow"),     _T("btndeltask"),          EVENT_BTN_LCLICK,            &CUMFCMainWindow::OnDelTask);
        ....
    //不同的事件绑定
        ON_ULTRANT_EVENT(_T("menutray"),         _T("start"),              EVENT_MENU_SELECT,            &CUMFCMainWindow::OnMenuStart);
        ON_ULTRANT_EVENT(_T(
    "menutray"),         _T("stop"),              EVENT_MENU_SELECT,            &CUMFCMainWindow::OnMenuStop);
    END_ULTRANT_EVENT_MAP()
    //结束的宏

    //控件绑定 CUMFCMainWindow类名,_T("UMFCMainWindow")窗口名
    BEGIN_ULTRANT_CONTROL_BIND(CUMFCMainWindow, _T("UMFCMainWindow"))
        
    //CUltrantList* 指针类型的成员变量, m_pListRun成员变量,_T("listrun")控件名 
        BIND_CONTROL(CUltrantList*,        m_pListRun,        _T("listrun"));
        BIND_CONTROL(CUltrantList
    *,        m_pListDel,        _T("listdel"));
        ......
        BIND_CONTROL(CUltrantStatic
    *,    m_pStcUsrname,    _T("stcaccount"));
        BIND_CONTROL(CUltrantRadioButton
    *,    m_pBtnListDel,    _T("radiodel"));
    END_ULTRANT_CONTROL_BIND()


    CUMFCMainWindow::CUMFCMainWindow(LPCTSTR pszWndName) 
    : CUltrantDialogWinWnd(pszWndName)
    //基类初始化需要窗口名
    {
    }

    LPCTSTR CUMFCMainWindow::GetWindowClassName() 
    const 
    {
        
    return _T("UMFCMainWindow"); //注册一个窗口类名称
    }

    UINT CUMFCMainWindow::GetClassStyle() 
    const
    {
        
    return CS_VREDRAW | CS_HREDRAW | CS_DBLCLKS; 
    }

    //事件处理函数 CUMFCMainWindow窗口类,OnSelectRunLst函数名
    IMP_EVENT_FUN(CUMFCMainWindow, OnSelectRunLst)
    {
        
    //data是处理函数给的参数,具体事件类型不同给的数据不同
        _OnSwitchLst(EM_BTN_STATUS_TWO == data->lParam);
    }

  • 相关阅读:
    PKU1008
    PKU 1007
    PKU 3983
    PKU 1005
    PKU1004
    PKU 1003解题
    new.target
    debugger 关键字
    React 高阶组件
    CSS|规范
  • 原文地址:https://www.cnblogs.com/dwjaissk/p/2063202.html
Copyright © 2020-2023  润新知