[英]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.