簡體   English   中英

MAKEINTRESOURCE((id>>4)+1) 是什么意思?

[英]What is the meaning of MAKEINTRESOURCE((id>>4)+1)?

我試圖模仿CString::LoadString(HINSTANCE hInst, DWORD id, WORD langID)的行為,而不會將對 MFC 的依賴引入我的應用程序。 所以我遍歷了源頭。 它做的第一件事是立即調用AtlGetStringResourceImage(hInst, id, langID) ,然后這又包含以下代碼行:

    hResource = ::FindResourceExW(hInst, (LPWSTR)RT_STRING, MAKEINTRESOURCEW((id>>4)+1), langID);

(不是這樣逐字逐句的,但我刪掉了一些不重要的東西)。

把ID移4加1是什么意思? 根據 FindResourceEx 的文檔,您應該傳入MAKEINTRESOURCE(id) ,並且在將其傳遞給MAKEINTRESOURCE之前,我找不到任何正在操縱 id 的示例代碼。 同時,如果我讓我的代碼調用MAKEINTRESOURCE(id)那么它不起作用並且FindResourceEx返回 null,而如果我使用上面的 shift + add,那么它確實起作用。

誰能解釋一下?

來自STRINGTABLE 資源文檔:

RC 為每個部分分配 16 個字符串,並使用標識符值來確定哪個部分將包含該字符串。 標識符僅在低 4 位上不同的字符串被放置在同一部分中。

您感興趣的代碼通過忽略低 4 位來定位存儲給定字符串標識符的部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM