|||
中心思想是在子对话框的代码中添加OnInitDialog()函数 进行重载 这样的话 在父对话框中Button的响应事件中创建一个模态对话框时 系统会首先调用OnInitDialog函数来进行子对话框初始化
当然了 我还是个菜鸟 说的可能有许多不对的地方 以下代码 我在TQ2440+WINCE5.0上测试通过:
假设父对话框为A 子对话框为B
1 建立一个基于对话框的应用程序,添加Button控件
2 添加一个新的Dialog资源 双击该对话框界面 为它关联一个类 比如CBDlg
3 在A中添加B的头文件 在B中添加A的头文件
4 在Button的响应事件中 代码如下:
CBDlg dlg;
dlg.DoModal();
这样就创建了一个模态对话框 是A的子对话框
5 子对话框B中添加ComboBox控件 子类B的头文件中添加ComboBox指针pComboBox
CBDlg.h中添加 ComboBox *pComboBox;
添加初始化函数 BOOL OnInitDialog();//父对话框中会有OnInitDialog函数 子对话框需要自己手动添加,这一点需要注意!!!
6 子对话框的初始化函数添加ComboBox初始化代码:
BOOL CChildDlg::OnInitDialog()
{
CDialog::OnInitDialog();//这是我从父对话框的初始化函数抄来的
pComboBox=((CComboBox*)GetDlgItem(IDC_COMBO1));
pComboBox->AddString(_T("内容"));
pComboBox->AddString(_T("价格"));
pComboBox->SetCurSel(0);
printf("CChildDlg init is finished");
return TRUE;
}
7 双击ComboBox控件 在ComboBox的OnCbnSelchange的响应事件中添加响应代码:
CString str;
int nIndex = pComboBox->GetCurSel();//获取用户选项
pComboBox->GetLBText(nIndex, str);//将当前显示内容置为当前选项
CClientDC dc(this);//以下是将用户选中的内容显示到屏幕上 看看程序是否正确
CPoint point1(0,0),point2(50,50);
CRect rect(point1,point2);
dc.DrawText(str,rect,DT_LEFT);
以上代码在TQ2440+WINCE5.0平台测试通过