MFC中动态创建一个控件
在View类中动态创建一个Edit控件如下:
editT1.Create(ES_MULTILINE
| WS_CHILD | WS_VISIBLE | WS_TABSTOP |
WS_BORDER,CRect(0,0,50,20),this, IDC_EDITT1);
现在想实现类似对话框中的数据交换功能。
我的方法是:
void CMatlabPrintView::DoDataExchange(CDataExchange* pDX)
{
// TODO: Add your specialized code here and/or call the base class
CView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMatlabPrintView)
DDX_Text(pDX, IDC_EDITT1, m_dT1);
//}}AFX_DATA_MAP
}
在运行DoDataExchange时,你的编辑框还没有生成,IDC_EDITT1和m_dT1当然关联不上.
_____________________________________________________________________________
我同意着个说法,所以我的做法是:
在初始化(OnInitDialog())函数里加:
editT1 = new CEdit();//要加这条语句
editT1->Create(ES_MULTILINE | WS_CHILD | WS_VISIBLE
| WS_TABSTOP | WS_BORDER,CRect(0,0,50,20),this, IDC_EDITT1);
在函数的开头声名一个全局的控件变量:CEdit *editT1;
在函数的其他地方使用editT1去处理这个edit,如:editT1->SetWindowText("edit");
IDC_EDITT1为自定义资源ID
VC里程序的资源定义,后面的数字只是为了表示特定的资源,避免重复,具体的值并没有意义。
#define
IDD_ABOUTBOX 100 就是说有个ID为IDD_ABOUTBOX的对话框资源