我编了一个简单的聊天程序,在一个对话框中有一个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请教!

解决方案 »

  1.   

    是不是你把ip地址赋给ip控件的时候,ip控件还没有句柄
      

  2.   

    我直接在对话框的classwizard里添加了一个ip控件,在这个对话框的构造函数和OnInitDialog中都没有再对ip控件做初始化。我查了下MSDN,里面说还要Create()。
    我又在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
      

  3.   

    对话框DoModal的时候没有对文件作读取或是写入操作。
    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(...)时。
    是不是这个函数用的不对?
      

  4.   

    sorry,对话框DoModal有对文件作read操作,但断点显示在构造的时候就出错了