zoukankan      html  css  js  c++  java
  • 窗口类的定义

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

        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);
    }

  • 相关阅读:
    scikit-learn算法选择路径图
    mac 添加new file.md
    mac-VBox-Centos6.6安装增强功能
    VirtualBox中安装CentOS使得在ssh和外网都能正常链接
    vboxnetctl: no such file or directory
    mac vim 配色
    埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 B合约数
    codeforces 965E Trie+multiset
    bzoj 4337 树的同构
    codeforces 963B Destruction of a Tree
  • 原文地址:https://www.cnblogs.com/dwjaissk/p/2063202.html
Copyright © 2011-2022 走看看