在什麼情況下Win32調用GetMenuItemCount可以返回-1,除了提供一個無效的句柄菜單?GetMenuItemCount返回-1
0
A
回答
3
您可以假設的是GetMenuItemCount在失敗時返回-1。
此API調用失敗的具體原因未記錄 - 即,它們不是已發佈合同的一部分。它們是可以隨時間變化的實現細節,所以你的代碼不能依賴它們。
如果您需要在發生故障時獲得更多信息,請根據文檔建議致電GetLastError。
+0
我想加入David的說法,假設你通過了一個有效的句柄,「如果這個API調用失敗,你完全有權終止這個過程」,但是我不想把言辭放在嘴邊。你所說的一切對於合同都是完全正確的,但實際上,這個API不會失敗,並且你不需要浪費時間編寫一堆複雜的錯誤處理代碼。 –
相關問題
- 1. getyx返回-1 -1
- 2. `[1] == [1]`返回「false」並且`[1] == 1`返回「true」?
- 3. ABRecordGetRecordID返回-1
- 4. isset返回'1'
- 5. Indexof()返回-1
- 6. request.contentLength返回-1
- 7. Socket_read返回'1'..?
- 8. SystemInformation.PowerStatus.BatteryLifeRemaining返回-1?
- 9. getLastVisiblePosition返回-1
- 10. mysql_affected_rows()返回-1
- 11. Popen.poll()返回1
- 12. awk:mktime返回-1
- 13. PipedInputStream.read()返回-1
- 14. db2_num_rows()返回-1
- 15. ExecuteNonQuery返回-1
- 16. Libnodave:connectPLC返回-1
- 17. entity.getContentLength()返回-1
- 18. clGetDeviceIds返回-1
- 19. getch返回-1?
- 20. JNI:AttachCurrentThread返回-1
- 21. videoview.getDuration()返回-1
- 22. URLConnection.getContentLength()返回-1
- 23. Media.getduration返回-1
- 24. 爲什麼(true && 1)返回1,但(1 && true)返回true?
- 25. Random.nextInt(1);只返回1
- 26. isNaN(1)isNaN(「1」)返回false
- 27. 回調函數返回返回($ var&1)?
- 28. 返回1並返回0 VS返回true並返回false
- 29. C#ObservableCollection.IndexOf(...)返回-1
- 30. Android Cursor.getColumnIndex返回-1
該問題不能回答。你已經確定了最常見的原因。如果返回-1,則調用'GetLastError'來找出錯誤。如果此API調用失敗,則您完全有權終止該進程。 –
奇怪的是'HMENU'參數被標記爲可選的。如何通過'NULL'菜單處理該函數的有效調用? –
@CodyGray:我猜'_In_opt_'註釋在合同的實現方面開始了它的生命。它被放在那裏,以便編譯器在實現不測試'NULL'的情況下投訴。然後將它複製到界面上,它在語義上沒有意義。這是猜測,但。也許還有更多。 – IInspectable