[問題] 關於 open file dialog的問題

看板C_and_CPP (C/C++)作者 (我愛阿蓉)時間16年前 (2009/07/08 19:37), 編輯推噓1(1017)
留言18則, 4人參與, 最新討論串1/1
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

07/09 01:06, , 1F
會不會是因為沒給file name
07/09 01:06, 1F

07/09 01:07, , 2F
所以轉出來的szFilename_wchar是亂碼?
07/09 01:07, 2F

07/09 01:09, , 3F
把szFilename_wchar清空為0, mbstowcs_s拿掉試試看
07/09 01:09, 3F

07/09 01:09, , 4F
以上亂猜的
07/09 01:09, 4F

07/09 01:17, , 5F
另外以前抄來的範例
07/09 01:17, 5F

07/09 01:18, , 6F
這行好像要改成這樣 TEXT("Binary file\0*.bin\0\0")
07/09 01:18, 6F

07/09 01:20, , 7F
函式不改, 把這行 char filePath[256] = {0};
07/09 01:20, 7F

07/09 01:21, , 8F
試試有沒有用
07/09 01:21, 8F

07/09 11:09, , 9F
因為 我遇到這問題是不定時出錯 超奇怪 如果每次都壞就還好..
07/09 11:09, 9F

07/09 11:09, , 10F
我試試看!!
07/09 11:09, 10F

07/09 11:23, , 11F
之前是看到學長寫filepath[0]=0;不知道啥用意
07/09 11:23, 11F

07/09 11:25, , 12F
剛剛故意這樣寫 好像就沒有出錯了 刻意跑了10幾次
07/09 11:25, 12F

07/09 19:02, , 13F
filepath[0]=0 跟 filepath[0]='\0' 一樣的意思吧@@
07/09 19:02, 13F

07/09 19:02, , 14F
就是先給一個null terminate啊....
07/09 19:02, 14F

07/09 20:03, , 15F
恩!!只是不知道為什麼刻意要先給個值@@ 導致他"有時"會壞
07/09 20:03, 15F

07/09 23:57, , 16F
使用FileDialog時, 可以指定"預設"的檔名,filepath是可以
07/09 23:57, 16F

07/09 23:58, , 17F
有預設檔名的, 當filepath為空字串時, 無預設檔名
07/09 23:58, 17F

07/09 23:58, , 18F
但你完全沒指定初始值就會有問題了... 這很正常
07/09 23:58, 18F
文章代碼(AID): #1AL8JdMy (C_and_CPP)
文章代碼(AID): #1AL8JdMy (C_and_CPP)