WTL下如何子类化控件
来源:互联网 发布:伊斯兰教是邪教吗 知乎 编辑:程序博客网 时间:2024/06/13 11:48
在开发中,大部分情况控件是直接通过rc文件创建的,但也有时候需要在程序中通过CreateWindow来创建控件,下面以Button控件为例说明子类化控件的两种方法。
class CButtonImpl :
public CWindowImpl<CButtonImpl, CButton>
{
public:
CButtonImpl(void)
{
}
~CButtonImpl(void)
{
}
BEGIN_MSG_MAP(CButtonImpl)
MESSAGE_HANDLER(WM_GETDLGCODE, OnGetDlgCode)
DEFAULT_REFLECTION_HANDLER()
END_MSG_MAP()
……
};
方法一:使用DDX
class CTestDlg:
public CDialogImpl<CTestDlg>,
public CWinDataExchange<CTestDlg>,
{
BEGIN_MSG_MAP(CTestDlg)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
END_MSG_MAP()
BEGIN_DDX_MAP(CTestDlg)
DDX_CONTROL(IDC_BUTTON, m_button)
END_DDX_MAP()
……
CButtonImpl m_button;
}
LRESULT CTestDlg::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled)
{
DoDataExchange(FALSE);
return bHandled = FALSE;
}
方法二:使用SubclassWindow
class CTestDlg:
public CDialogImpl<CTestDlg>
{
BEGIN_MSG_MAP(CTestDlg)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
END_MSG_MAP()
……
CButtonImpl m_button;
}
LRESULT CTestDlg::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled)
{
HWND hButton = CreateWindow(TEXT("BUTTON"), _T("test"), WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON, 0, 0, 0, 0, m_hWnd, (HMENU)0, hInst, 0); //程序中创建Button
m_button.SubclassWindow(hButton );//子类化
}
- WTL下如何子类化控件
- WTL下如何子类化控件
- WTL中如何子类化控件(转帖)
- WTL的窗口子类化与超类化
- VS2005下如何安装WTL
- VS2005下如何安装WTL
- VS2005下如何安装WTL
- VS2005下如何安装WTL
- VS2005下如何安装WTL
- VS2005下如何安装WTL
- 控件子类化
- 子类化控件
- MFC-- 子类化控件
- MFC子类化控件
- WTL-窗口超类化(superclassing),窗口子类化(subclassing)
- VC控件-子类化控件
- 如何子类化
- VC控件的子类化
- 2009年网页设计趋势上(转)
- 关于向上转型和向下转型(转)
- 中国式报表
- SQL 实用操作
- 使用 库创建关联容器
- WTL下如何子类化控件
- WTL源码剖析 --- ATLAPP.H
- WTL流程分析
- WTL编程的十个技巧
- Asp.net 与 Asp 的一些区别
- 图片上传以及文章加水印
- 在SQLite中使用索引优化查询速度
- 创建有个性的对话框之ATL/WTL篇
- WTL头文件中包含的类