窗口类的定义

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

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

 

 

转载于:https://www.cnblogs.com/dwjaissk/archive/2011/05/30/2063202.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值