看板 C_and_CPP 關於我們 聯絡資訊
http://gist.github.com/142753 以上是我使用的程式碼 (跟同學要的) 我呼叫的時候是 char filePath[256]; if(GetFileName(filePath, false, TEXT("Binary file\0*.bin\0"), 18)) 我遇到的問題是..... 程式不定時的會跑到 case FNERR_INVALIDFILENAME : 這行 出現壞掉的時機流程為 執行程式->點某button 馬上跑上面那兩行 有時候順利 就跑出dialog出來 有時候 直接就跑到 FNERR_INVALIDFILENAME.. dialog沒跑出來 他的錯誤error訊息明明就是不合法的file name 但是我根本沒有給他file name阿 dialog根本沒跑出來= = 但是我完全找不到任何問題@@ 請問有沒有人遇過這情況............不知道怎麼De掉這bug... 以下是他error 的函意 http://msdn.microsoft.com/en-us/library/ms646927(VS.85).aspx 感謝各位 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.207.187
tsaiminghan:會不會是因為沒給file name 07/09 01:06
tsaiminghan:所以轉出來的szFilename_wchar是亂碼? 07/09 01:07
tsaiminghan:把szFilename_wchar清空為0, mbstowcs_s拿掉試試看 07/09 01:09
tsaiminghan:以上亂猜的 07/09 01:09
tsaiminghan:另外以前抄來的範例 07/09 01:17
tsaiminghan:這行好像要改成這樣 TEXT("Binary file\0*.bin\0\0") 07/09 01:18
tsaiminghan:函式不改, 把這行 char filePath[256] = {0}; 07/09 01:20
tsaiminghan:試試有沒有用 07/09 01:21
QQ29:因為 我遇到這問題是不定時出錯 超奇怪 如果每次都壞就還好.. 07/09 11:09
QQ29:我試試看!! 07/09 11:09
QQ29:之前是看到學長寫filepath[0]=0;不知道啥用意 07/09 11:23
QQ29:剛剛故意這樣寫 好像就沒有出錯了 刻意跑了10幾次 07/09 11:25
VictorTom:filepath[0]=0 跟 filepath[0]='\0' 一樣的意思吧@@ 07/09 19:02
VictorTom:就是先給一個null terminate啊.... 07/09 19:02
QQ29:恩!!只是不知道為什麼刻意要先給個值@@ 導致他"有時"會壞 07/09 20:03
WPC001:使用FileDialog時, 可以指定"預設"的檔名,filepath是可以 07/09 23:57
WPC001:有預設檔名的, 當filepath為空字串時, 無預設檔名 07/09 23:58
WPC001:但你完全沒指定初始值就會有問題了... 這很正常 07/09 23:58