我想讀的字符串從菜單是這樣的:GetMenuString返回空字符串
char* buf;
int retLength = GetMenuString(menu, IDM_BLABLA, buf, 0, 0);
pclog("Buffer= %s, Length=%i\n", buf, retLength);
輸出是:
Buffer= , Length=11
什麼不對的代碼,該方法返回正確的非零長度,但空字符串?
我想讀的字符串從菜單是這樣的:GetMenuString返回空字符串
char* buf;
int retLength = GetMenuString(menu, IDM_BLABLA, buf, 0, 0);
pclog("Buffer= %s, Length=%i\n", buf, retLength);
輸出是:
Buffer= , Length=11
什麼不對的代碼,該方法返回正確的非零長度,但空字符串?
第四個參數應該是緩衝區的大小。嘗試改寫爲
char buf[100];
int retLength = GetMenuString(menu, IDM_BLABLA, buf, 100, 0);
pclog("Buffer= %s, Length=%i\n", buf, retLength);
通過在0傳遞作爲緩衝GetMenuString
的大小僅返回字符串的長度,所以也沒正是你告訴它做的事。 :-)
分享和享受。
從文檔:http://msdn.microsoft.com/en-us/library/windows/desktop/ms647983(v=vs.85).aspx
您需要提供的最大計數參數指定的最大長度分配的緩衝區。您已向功能指示最大計數爲0
。
您需要爲要複製的文本提供一個緩衝區。
char buff[255];
int retlen = GetMenuString(menu, IDM_BLABLA, buf, 255, 0);
我需要去睡覺)這是荒謬的。 – Conker