Windows 內建一組標準 OEM 位圖(關閉、縮放、箭頭、核取方塊等)與標準圖示(應用程式、錯誤、問號、警告、資訊),可直接透過資源序數或 ID 載入使用,無需自備素材檔。
| 常數 | 序數 | 外觀 |
|---|---|---|
| OBM_CLOSE | 32754 | 關閉按鈕 |
| OBM_UPARROW / DNARROW / RGARROW / LFARROW | 32753~32750 | 四向箭頭 |
| OBM_REDUCE / ZOOM / RESTORE | 32749~32747 | 最小化/最大化/還原 |
| OBM_CHECK / CHECKBOXES | 32760/32759 | 核取記號/核取方塊 |
| OBM_COMBO | 32738 | 下拉式方塊按鈕 |
IDI_APPLICATION (32512), IDI_HAND (32513), IDI_QUESTION (32514), IDI_EXCLAMATION (32515), IDI_ASTERISK (32516), IDI_WINLOGO (32517)
void __fastcall TMainForm::Button1Click(TObject *Sender) {
// 繪製 OEM 位圖 (32734~32763)
for (int i = 0; i < 30; i++) {
HBITMAP hBmp = ::LoadBitmap(NULL, MAKEINTRESOURCE(32734 + i));
TImage *img = new TImage(this);
img->Picture->Bitmap->Handle = hBmp;
Canvas->Draw(9 + i * 16, 9, img->Picture->Bitmap);
delete img;
DeleteObject(hBmp);
}
// 繪製標準圖示
for (int i = 0; i < 5; i++) {
HICON hIco = ::LoadIcon(NULL, MAKEINTRESOURCE(32512 + i));
TImage *img = new TImage(this);
img->Picture->Icon->Handle = hIco;
Canvas->Draw(10 + i * 32, 50, img->Picture->Icon);
delete img;
DestroyIcon(hIco); // 圖示用 DestroyIcon
}
}
注意: LoadBitmap 取得的 HBITMAP 需配對 DeleteObject;LoadIcon 取得的 HICON 需配對 DestroyIcon。系統資源為共享唯讀,切勿修改內容。善用內建資源可減小 EXE 體積並保持系統視覺一致性。