#pragma once
// CEditEx
class CEditEx : public CEdit
{
DECLARE_DYNAMIC(CEditEx)
public:
CEditEx();
virtual ~CEditEx();
protected:
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnChildActivate();
afx_msg void OnKillFocus(CWnd* pNewWnd);
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
};
// EditEx.cpp : 实现文件
//
#include "stdafx.h"
#include "MFCApplication7.h"
#include "EditEx.h"
// CEditEx
IMPLEMENT_DYNAMIC(CEditEx, CEdit)
CEditEx::CEditEx()
{
}
CEditEx::~CEditEx()
{
}
BEGIN_MESSAGE_MAP(CEditEx, CEdit)
ON_WM_CREATE()
END_MESSAGE_MAP()
// CEditEx 消息处理程序
int CEditEx::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CEdit::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 在此添加您专用的创建代码
SetWindowText(_T("OnCreate"));
return 0;
}
好像OnCreate根本不运行啊,怎么实现,求解?
解决方法如下:
PreSubclassWindow
PreSubclassWindow是一个很好的定制控件的位置。如果我们通过重载CWnd::PreCreateWindow定制控件,而用户在对话框中使用控件。由于对话框中的控件窗口是通过CreateDlgIndirect创建,不经过CWnd::CreateEx函数,PreCreateWindow函数不会被调用。
其实,用户要在对话框中使用定制控件,必须用DDX或者SubclassDlgItem函数子类化控件,这时PreSubclassWindow一定会被调用。
如果用户直接创建定制控件窗口,CWnd::CreateEx函数就一定会被调用,控件窗口一定会被子类化以安装MFC消息泵。所以在MFC中,PreSubclassWindow是创建窗口的必经之路。
所以重写PreSubclassWindow就可以啦-_-
C++ VS中用MFC新建子类继承CEdit类,给编辑框赋予初值,怎么实现?
答案:2 悬赏:80
解决时间 2021-03-01 21:51
- 提问者网友:他的思颖
- 2021-03-01 11:57
最佳答案
- 二级知识专家网友:啵啵桃汀
- 2021-03-01 13:00
给成员变量构造的时候赋值
全部回答
- 1楼网友:留下所有热言
- 2021-03-01 13:15
行高的话,自己拖动改变就可以了啊
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯