MFC动态创建的控件怎么为它关联变量? 比如说动态创建一个Eidt, 怎么关联一个CString对象?

静态的控件可以在DoDataExchange里关联,那动态的呢?... 静态的控件可以在DoDataExchange里关联, 那动态的呢? 展开
 我来答
NVworkshop
2015-03-02 · TA获得超过377个赞
知道小有建树答主
回答量:174
采纳率:100%
帮助的人:172万
展开全部
动态的不需要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);
}

。。。

有问题随时找我。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式