MAKEINTRESOURCE的作用

MAKEINTRESOURCE是一個資源名轉換的宏, 
  VC的定義是(winuser.h): 
  #define MAKEINTRESOURCEA(i) (LPSTR)((ULONG_PTR)((WORD)(i))) 
  #define MAKEINTRESOURCEW(i) (LPWSTR)((ULONG_PTR)((WORD)(i))) 
  #ifdef UNICODE 
  #define MAKEINTRESOURCE MAKEINTRESOURCEW 
  #else 
  #define MAKEINTRESOURCE MAKEINTRESOURCEA 
  #endif // !UNICODE 
  這個宏是把一個數字類型轉換成指針類型的宏,它不存在釋放的問題. 
  用這個宏的主要原因是有的資源是用序號定義的,而不是字符串.所以要把數字轉換成字符串指針,然後再傳遞給LoadResource之類的函數,這樣才加載了資源. 
  要釋放資源(用LoadResource加載的)可以調用FreeResource函數把LoadResource返回的指針傳遞給FreeResource.
  MAKEINTRESOURCE 的作用: 
  是把一個"數字形ID",轉化爲"字符串".但是執行前後,輸入的數據的內容和長度是不變的!它只不過就是C語言裏面"強制類型轉換"而已. 
  請看 Winuser.h 代碼: 
  #define MAKEINTRESOURCEA(i) (LPSTR)((DWORD)((WORD)(i))) 
  #define MAKEINTRESOURCEW(i) (LPWSTR)((DWORD)((WORD)(i))) 
  #ifdef UNICODE 
  #define MAKEINTRESOURCE MAKEINTRESOURCEW 
  #else 
  #define MAKEINTRESOURCE MAKEINTRESOURCEA 
  #endif // !UNICODE 
  現在,再來歸納它的用法.就用FindResource來說明.(這個函數與MFC的AfxFindResourceHandle) 
  HRSRC FindResource( 
  HMODULE hModule, // module handle 
  LPCTSTR lpName, // resource name 
  LPCTSTR lpType // resource type 
  ); 
  就是lpName參數需要使用MAKEINTRESOURCE ,因爲它需要LPCTSTR類型的參數輸入.那麼,情況就很清楚了.凡涉及"資源"的API或者MFC類,在參數類型爲LPCTSTR時,就應該使用 MAKEINTRESOURCE.這是針對"資源名字"爲"數字類型"時的情況.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章