由于非模态对话框显示的时候程序不会暂停等待用户操作,如果使用临时变量的话,对象的生命周期在OnDialog()执行完之后就结束,这样就无法正常显示,所以可采用创建对象指针的方式,由于动态创建的指针对象是分配在堆内存上,堆内存上的变量周期可应用程序相同。
1 CTestDlg *pDlg=new CTestDlg;
2 pDlg->Create(IDD_DIALOG1,this);
3 pDlg->ShowWindow(SW_SHOW);
这里又涉及一个动态内存释放的问题。。。
7.3 动态创建按钮
参见MSDN,CButton的Create函数。
01 CButton myButton1, myButton2, myButton3, myButton4;
02 // Create a push button.
03 myButton1.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
04 CRect(10,10,100,30), this, 1);//当前窗口
05 // Create a radio button.
06 myButton2.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_RADIOBUTTON,
07 CRect(10,40,100,70), this, 2); //当前窗口
08 // Create an auto 3-state button.
09 myButton3.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_AUTO3STATE,
10 CRect(10,70,100,100), GetParent( ), 3); //父窗口
11 // Create an auto check box.