我编了一个简单的聊天程序,在一个对话框中有一个CIPAddressCtrl控件,用于存放server的IP地址。在这个对话框的OnOk()被调用时
IP地址被存入CONFIG.DAT的文件。我编了一个CFileOperation类,包含一个CFile的m_CFile成员。以下是成员函数:
CFileOperation::CFileOperation()
{
m_CFile.Open(_T("C:\\config.dat"), CFile::modeCreate | CFile::modeNoTruncate | CFile::shareExclusive);
}CFileOperation::~CFileOperation()
{
m_CFile.Close();
}
void CFileOperation::writefile(DWORD& pIP)
{
m_CFile.Write(&pIP, sizeof(DWORD));
}DWORD CFileOperation::readfile()
{
DWORD* p_IP = 0;
m_CFile.Read(p_IP, sizeof(DWORD));
if(p_IP == NULL)
return 0;
DWORD IP = *p_IP;
return IP;
}编译,连接无错误。但是每次这个包含IP地址控件的对话框DoModal的时候都会有断言失败的错误,在filecore.cpp line225请教!
IP地址被存入CONFIG.DAT的文件。我编了一个CFileOperation类,包含一个CFile的m_CFile成员。以下是成员函数:
CFileOperation::CFileOperation()
{
m_CFile.Open(_T("C:\\config.dat"), CFile::modeCreate | CFile::modeNoTruncate | CFile::shareExclusive);
}CFileOperation::~CFileOperation()
{
m_CFile.Close();
}
void CFileOperation::writefile(DWORD& pIP)
{
m_CFile.Write(&pIP, sizeof(DWORD));
}DWORD CFileOperation::readfile()
{
DWORD* p_IP = 0;
m_CFile.Read(p_IP, sizeof(DWORD));
if(p_IP == NULL)
return 0;
DWORD IP = *p_IP;
return IP;
}编译,连接无错误。但是每次这个包含IP地址控件的对话框DoModal的时候都会有断言失败的错误,在filecore.cpp line225请教!
我又在OnInitDialog中加入如下代码,不过还是出错。 CWnd* p_IPControl = GetDlgItem(IDC_IPADDRESS_SERVER);
CWnd* p_Dialog = GetDlgItem(IDD_DIALOG_SYSTEM);
CRect rect;
p_IPControl->GetClientRect(rect);
m_ServerIP.Create(WS_CHILD, rect, p_Dialog, IDC_IPADDRESS_SERVER);error: wincore.cpp line735
void CSystem::OnOK()
{
DWORD IP;
m_ServerIP.GetAddress(IP);
CFileOperation obj;
obj.writefile(IP);
CDialog::OnOK();
}BOOL CSystem::OnInitDialog()
{
CDialog::OnInitDialog();
CFileOperation obj;
DWORD IP = obj.readfile();
if(IP == 0)
return TRUE;
else
{
m_ServerIP.SetAddress(IP);
return TRUE;
}
}如果不拦截WM_ONINITDIALOG消息的话,对话框可以DoModal。但是在OnOk()时出错,access to config.dat was denied。我设置了断点,是在CFileOperation::CFileOperation()
出错,m_CFile.Open(...)时。
是不是这个函数用的不对?