接着上次的框架,肯定有疑问那两个窗口类是怎么来的
g_pMainWnd
=
new
CUMFCMainWindow(_T(
"
UMFCMainWindow
"
));
g_pLoginWnd = new CUMFCLoginWindow(_T( " UMFCLoginWindow " ));
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;
... // 若干控件
}
#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);
}
// 事件绑定,第一个参数是窗口类名称,第二个是控件名称,第三个是事件类型的宏
/*
支持的事件类型
//控件事件
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);
}