MFC动态创建的控件怎么为它关联变量? 比如说动态创建一个Eidt, 怎么关联一个CString对象?
展开全部
动态的不需要DoDataExchange关联。 直接用对象操作。如在View中加入一个编辑框(CEdit类对象),和一个按钮,显示后,在编辑框输入, 在按钮事件函数中就可以提取编辑框中内容。
头文件
class CtestjdtView : public CView
{
protected: // 仅从序列化创建
CtestjdtView();
DECLARE_DYNCREATE(CtestjdtView)
CButton *m_pTestButton;
CEdit *m_pedtMyInput;
// 属性
public:
CtestjdtDoc* GetDocument() const;
。。。
映射表
IMPLEMENT_DYNCREATE(CtestjdtView, CView)
BEGIN_MESSAGE_MAP(CtestjdtView, CView)
// 标准打印命令
ON_BN_CLICKED(IDB_TEST_BUTTON, &CtestjdtView::OnTestButton)
ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CtestjdtView::OnFilePrintPreview)
ON_WM_CREATE()
ON_WM_TIMER()
END_MESSAGE_MAP()
Oncreate()中加入
int CtestjdtView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
CRect rct(20,20,80,40);
m_pTestButton = new CButton();
m_pTestButton->Create(_T("开始"),WS_CHILD|BS_PUSHBUTTON,rct,this, IDB_TEST_BUTTON);
m_pTestButton->ShowWindow(SW_SHOW);
rct.SetRect(80,80,110,100);
m_pedtMyInput = new CEdit();
m_pedtMyInput->Create(ES_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER,rct,this, 88888);
m_pedtMyInput->ShowWindow(SW_SHOW);
。。。
在按钮事件中提取编辑框内容
void CtestjdtView::OnTestButton()
{
CString str;
if (NULL != m_pedtMyInput)
{
m_pedtMyInput->GetWindowText(str);
}
。。。
有问题随时找我。
头文件
class CtestjdtView : public CView
{
protected: // 仅从序列化创建
CtestjdtView();
DECLARE_DYNCREATE(CtestjdtView)
CButton *m_pTestButton;
CEdit *m_pedtMyInput;
// 属性
public:
CtestjdtDoc* GetDocument() const;
。。。
映射表
IMPLEMENT_DYNCREATE(CtestjdtView, CView)
BEGIN_MESSAGE_MAP(CtestjdtView, CView)
// 标准打印命令
ON_BN_CLICKED(IDB_TEST_BUTTON, &CtestjdtView::OnTestButton)
ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CtestjdtView::OnFilePrintPreview)
ON_WM_CREATE()
ON_WM_TIMER()
END_MESSAGE_MAP()
Oncreate()中加入
int CtestjdtView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
CRect rct(20,20,80,40);
m_pTestButton = new CButton();
m_pTestButton->Create(_T("开始"),WS_CHILD|BS_PUSHBUTTON,rct,this, IDB_TEST_BUTTON);
m_pTestButton->ShowWindow(SW_SHOW);
rct.SetRect(80,80,110,100);
m_pedtMyInput = new CEdit();
m_pedtMyInput->Create(ES_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER,rct,this, 88888);
m_pedtMyInput->ShowWindow(SW_SHOW);
。。。
在按钮事件中提取编辑框内容
void CtestjdtView::OnTestButton()
{
CString str;
if (NULL != m_pedtMyInput)
{
m_pedtMyInput->GetWindowText(str);
}
。。。
有问题随时找我。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询