rlm@1: #include "stdafx.h" rlm@1: #include "WinResUtil.h" rlm@1: rlm@1: static HINSTANCE winResGetInstance(LPCTSTR resType, LPCTSTR resName) rlm@1: { rlm@1: // TODO: make language DLL first rlm@1: return AfxFindResourceHandle(resName, resType); rlm@1: } rlm@1: rlm@1: UCHAR *winResGetResource(LPCTSTR resType, LPCTSTR resName) rlm@1: { rlm@1: HINSTANCE winResInstance = winResGetInstance(resType, resName); rlm@1: rlm@1: HRSRC hRsrc = FindResourceEx(winResInstance, resType, resName, 0); rlm@1: rlm@1: if (hRsrc != NULL) rlm@1: { rlm@1: HGLOBAL hGlobal = LoadResource(winResInstance, hRsrc); rlm@1: rlm@1: if (hGlobal != NULL) rlm@1: { rlm@1: UCHAR *b = (UCHAR *)LockResource(hGlobal); rlm@1: rlm@1: return b; rlm@1: } rlm@1: } rlm@1: return NULL; rlm@1: } rlm@1: rlm@1: HMENU winResLoadMenu(LPCTSTR menuName) rlm@1: { rlm@1: UCHAR *b = winResGetResource(RT_MENU, menuName); rlm@1: rlm@1: if (b != NULL) rlm@1: { rlm@1: HMENU menu = LoadMenuIndirect((CONST MENUTEMPLATE *)b); rlm@1: rlm@1: if (menu != NULL) rlm@1: return menu; rlm@1: } rlm@1: rlm@1: return LoadMenu(NULL, menuName); rlm@1: } rlm@1: rlm@1: int winResDialogBox(LPCTSTR boxName, HWND parent, DLGPROC dlgProc, LPARAM lParam) rlm@1: { rlm@1: /* rlm@1: UCHAR * b = winResGetResource(RT_DIALOG, boxName); rlm@1: rlm@1: if(b != NULL) { rlm@1: rlm@1: return DialogBoxIndirectParam(hInstance, rlm@1: (LPCDLGTEMPLATE)b, rlm@1: parent, rlm@1: dlgProc, rlm@1: lParam); rlm@1: } rlm@1: rlm@1: return DialogBoxParam(hInstance, rlm@1: boxName, rlm@1: parent, rlm@1: dlgProc, rlm@1: lParam); rlm@1: */ rlm@1: return 0; rlm@1: } rlm@1: rlm@1: int winResDialogBox(LPCTSTR boxName, HWND parent, DLGPROC dlgProc) rlm@1: { rlm@1: return winResDialogBox(boxName, rlm@1: parent, rlm@1: dlgProc, rlm@1: 0); rlm@1: } rlm@1: rlm@1: CString winResLoadString(UINT id) rlm@1: { rlm@1: int stId = id / 16 + 1; rlm@1: HINSTANCE inst = winResGetInstance(RT_STRING, MAKEINTRESOURCE(stId)); rlm@1: rlm@1: CString res; rlm@1: if (!res.LoadString(id)) rlm@1: { rlm@1: // TODO: handle case where string is only in the default English rlm@1: res = ""; rlm@1: } rlm@1: rlm@1: res.Replace('_', '|'); rlm@1: rlm@1: return res; rlm@1: } rlm@1: rlm@1: CString winResLoadFilter(UINT id) rlm@1: { rlm@1: CString res = winResLoadString(id); rlm@1: res.Replace('_', '|'); rlm@1: rlm@1: return res; rlm@1: }