最近在做基于HTML通信的MFC程序的时候,发现创建的基于Html的对话框或者单文档程序,无法为控件添加变量,原因应该在于在创建对话框或文档类程序的时候选择了基于Html的程序导致的,可能是VS安装不完全的问题(至于重装VS是否能解决此问题,我并未尝试),网上所说的删除ncb文件只适用于VS2008以前的版本,VS2010以后程序并没有生成ncb文件,我采用一种有局限性的方法进行解决。
解决方法:
1.在对应的头文件,类定义里面添加变量,如:CString m_test
2.在构造函数中初始化变量(不需要初始化的控件变量可以忽略此步),如
CWebBrowser_TestDlg::CWebBrowser_TestDlg(CWnd* pParent /*=NULL*/)
: CDHtmlDialog(CWebBrowser_TestDlg::IDD, CWebBrowser_TestDlg::IDH, pParent)
,m_test("aaa")
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
3.变量与控件绑定,如
void CWebBrowser_TestDlg::DoDataExchange(CDataExchange* pDX)
{
CDHtmlDialog::DoDataExchange(pDX);
DDX_Text(pDX,IDD_WEBBROWSER_TEST_DIALOG,m_test);
}
局限性:
与控件绑定的变量只能是DDX_Text函数中所规定的17种类型,如果用户自定义类型或类则无法使用此方法进行变量与控件的绑定。