[問題] MFC Dialog 資料傳遞 與CFile問題

看板C_and_CPP (C/C++)作者 (世界恐怖童話故事)時間15年前 (2010/08/05 23:32), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 我是MFC新手 有幾個問題想請教 懇請指教 程式目的: 讀取一個Zone.ini的檔案 ,在 Dialog上 作操作,在寫回Zone.ini 在產生一 個 test.ini擋 希望得到的正確結果: 問題1: 想請問當我按下Button時,要如何將 3個 CheckBox 1個 ComboBox值,寫回 Zone.ini擋 問題2: 寫回後,要如何產生一個 text.ini 將 zone.ini中的檔案 寫成 文字存取 程式跑出來的錯誤結果: 值寫不回去 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) MFC 有問題的code: (請善用置底文標色功能) 我程式碼擷取如下: <xxDlg.h> public: CComboBox m_combo; CButton m_Daynight; CButton m_SBAS; CButton m_Dis_warn; typedef struct _Zone{ /* UINT8 m_disable_warning; UINT8 m_day_light; UINT16 m_zone_offset; UINT8 m_zone_index; UINT8 m_sbas; UINT8 buff[6]; UINT16 nlen;*/ UINT16 nlen; UINT8 buff[6]; UINT8 m_sbas; UINT8 m_zone_index; UINT16 m_zone_offset; UINT8 m_day_light; UINT8 m_disable_warning; }Zone; #define TimeZone_size (sizeof(TimeZone)/sizeof(char)) protected: Zone TimeZone; <xxDlg.cpp> BOOL CxxDlg::OnInitDialog() { for ( int i=0;i<100;i++) // ComboBox 下拉選單內容 { CString strF; strF.LoadString(3000+i); m_combo.AddString(strF); } CFile file; file.Open(_T("C:\\REC\\Zone.ini"), CFile::modeCreate | CFile::modeReadWrite | CFile::modeNoTruncate); memset(&TimeZone,0, TimeZone_size); // 初始化 讀檔 buffer set 0 file.Read(&TimeZone, TimeZone_size); /*寫入 Zone.ini 初始化*/ m_combo.SetCurSel(TimeZone.m_zone_index); m_Daynight.SetCheck(TimeZone.m_day_light); //不知道有沒有寫錯 m_Dis_warn.SetCheck(TimeZone.m_disable_warning); m_SBAS.SetCheck(TimeZone.m_sbas); file.Seek(0,CFile::begin); file.Write(&TimeZone, TimeZone_size); file.Close(); ....... void CxxDlg::OnBnClickedOk() { // TODO: 在此加入控制項告知處理常式程式碼 if (m_Daynight.GetCheck()) TimeZone.m_day_light = 1; else TimeZone.m_day_light = 0; //TimeZone.m_day_light = m_Daynight.GetCheck() == BST_CHECKED ? 1 : 0; if(m_SBAS.GetCheck()) TimeZone.m_sbas = 1; else TimeZone.m_sbas = 0; if(m_Dis_warn.GetCheck()) TimeZone.m_disable_warning = 1; else TimeZone.m_disable_warning = 0; UpdateData(FALSE); } <xxDlg.rc> 此 Dialog 中有 3個 CheckBox 1個 ComboBox 補充說明: 此程式中,要如何使用 memset memcmp 與 writeprofilestring 這我已經奮鬥兩天 還是寫不出來 懇請指教 謝謝~ -- ↘▉↙ ▋ ◢◣ 豪洨只會造成無謂的犧牲,為什麼還不明白呢? -□︵□-▌╱ -3-◤  ███▄~●~●~●~●~●~●~●~● █≡█~●▋ ▋ █▉█◤ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.136.215.148

08/06 11:57, , 1F
直接用WritePrivateProfileString()就不用CFile了吧
08/06 11:57, 1F

08/06 11:58, , 2F
而且你CFile::Write是在InitDialog裡?
08/06 11:58, 2F

08/06 11:58, , 3F
你不是要在button click的時候寫回去嗎
08/06 11:58, 3F

08/09 03:40, , 4F
多謝 樓上大大 指點迷津
08/09 03:40, 4F
文章代碼(AID): #1CMjcEfH (C_and_CPP)
文章代碼(AID): #1CMjcEfH (C_and_CPP)