窗口类的定义

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

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

 

 

posted @ 2011-05-30 13:13  健忘猪  阅读(837)  评论(3编辑  收藏  举报