📄 hxmullan.cpp
字号:
HINSTANCE hTempDLL; // First Check in Language DLLs for (int ndx = 0; ndx < g_nLangDLLs; ndx++) { if (g_hLangDLLs[ndx]) { hTempDLL = g_hLangDLLs[ndx]; output = LoadString(hTempDLL, idResource, OS_STRING2(lpszBuffer, cbBuffer), cbBuffer); if (output) { bLoaded = TRUE; break; // for } // if output } // if some handle } // for if (!bLoaded) { output = LoadString(g_hInstBase, idResource, OS_STRING2(lpszBuffer, cbBuffer), cbBuffer); } return output;}HBITMAP HXLoadBitmap(LPCSTR pszName){ BOOL bLoaded = FALSE; HBITMAP output = NULL; HXCheckLocale(); HINSTANCE hTempDLL; // First Check in Language DLLs for (int ndx = 0; ndx < g_nLangDLLs; ndx++) { if (g_hLangDLLs[ndx]) { hTempDLL = g_hLangDLLs[ndx]; output = LoadBitmap(hTempDLL, OS_STRING(pszName)); if (output) { bLoaded = TRUE; break; // for } // if output } // if some handle } // for if (!bLoaded) { output = LoadBitmap(g_hInstBase, OS_STRING(pszName)); } return output;}HICON HXLoadIcon(LPCSTR pszName){ BOOL bLoaded = FALSE; HICON output = NULL; HXCheckLocale(); HINSTANCE hTempDLL; // First Check in Language DLLs for (int ndx = 0; ndx < g_nLangDLLs; ndx++) { if (g_hLangDLLs[ndx]) { hTempDLL = g_hLangDLLs[ndx]; output = LoadIcon(hTempDLL, OS_STRING(pszName)); if (output) { bLoaded = TRUE; break; // for } // if output } // if some handle } // for if (!bLoaded) { output = LoadIcon(g_hInstBase, OS_STRING(pszName)); } return output;}HCURSOR HXLoadCursor(LPCSTR pszName){ BOOL bLoaded = FALSE; HCURSOR output = NULL; HXCheckLocale(); HINSTANCE hTempDLL; // First Check in Language DLLs for (int ndx = 0; ndx < g_nLangDLLs; ndx++) { if (g_hLangDLLs[ndx]) { hTempDLL = g_hLangDLLs[ndx]; output = LoadCursor(hTempDLL, OS_STRING(pszName)); if (output) { bLoaded = TRUE; break; // for } // if output } // if some handle } // for if (!bLoaded) { output = LoadCursor(g_hInstBase, OS_STRING(pszName)); } return output;}HMENU HXLoadMenu(LPCSTR pszName){ BOOL bLoaded = FALSE; HMENU output = NULL; HXCheckLocale(); HINSTANCE hTempDLL; // First Check in Language DLLs for (int ndx = 0; ndx < g_nLangDLLs; ndx++) { if (g_hLangDLLs[ndx]) { hTempDLL = g_hLangDLLs[ndx]; output = LoadMenu(hTempDLL, OS_STRING(pszName)); if (output) { bLoaded = TRUE; break; // for } // if output } // if some handle } // for if (!bLoaded) { output = LoadMenu(g_hInstBase, OS_STRING(pszName)); } return output;}void * LoadDialogBoxTemplate(HINSTANCE hInst, LPCSTR pszName, HGLOBAL * pHMem){ *pHMem = NULL; HRSRC hRsrc = FindResource(hInst, OS_STRING(pszName),RT_DIALOG); if (hRsrc) { *pHMem = LoadResource(hInst,hRsrc); return LockResource(*pHMem); } return NULL;}void * HXLoadDialogBoxTemplate(LPCSTR pszName, HGLOBAL * pHMem){ BOOL bLoaded = FALSE; void * pTemplate = NULL; *pHMem = NULL; HXCheckLocale(); HINSTANCE hTempDLL; // First Check in Language DLLs for (int ndx = 0; ndx < g_nLangDLLs; ndx++) { if (g_hLangDLLs[ndx]) { hTempDLL = g_hLangDLLs[ndx]; pTemplate = LoadDialogBoxTemplate(hTempDLL, pszName, pHMem); if (pTemplate) { bLoaded = TRUE; break; // for } // if output } // if some handle } // for if (!bLoaded) { pTemplate = LoadDialogBoxTemplate(g_hInstBase, pszName, pHMem); } return pTemplate;}int HXDialogBox(LPCSTR pszName, HWND hwndOwner, DLGPROC dlgprc){ int output = 0; HGLOBAL hMem;#ifdef _WIN32 LPDLGTEMPLATE pDlgTemp = (LPDLGTEMPLATE)HXLoadDialogBoxTemplate(pszName, &hMem);#else void * pDlgTemp = HXLoadDialogBoxTemplate(pszName, &hMem);#endif if (pDlgTemp && hMem) {#ifdef _WIN32 output = DialogBoxIndirect(g_hInstBase, pDlgTemp, hwndOwner, dlgprc);#else output = DialogBoxIndirect(g_hInstBase, hMem, hwndOwner, dlgprc); UnlockResource(hMem); FreeResource(hMem);#endif } return output;}int HXDialogBoxParam(LPCSTR pszName, HWND hwndOwner, DLGPROC dlgprc, LPARAM lParamInit){ int output = 0; HGLOBAL hMem;#ifdef _WIN32 LPDLGTEMPLATE pDlgTemp = (LPDLGTEMPLATE)HXLoadDialogBoxTemplate(pszName, &hMem);#else void * pDlgTemp = HXLoadDialogBoxTemplate(pszName, &hMem);#endif if (pDlgTemp && hMem) {#ifdef _WIN32 output = DialogBoxIndirectParam(g_hInstBase, pDlgTemp, hwndOwner, dlgprc, lParamInit);#else output = DialogBoxIndirectParam(g_hInstBase, hMem, hwndOwner, dlgprc, lParamInit); UnlockResource(hMem); FreeResource(hMem);#endif } return output;}HWND HXCreateDialog(LPCSTR pszName, HWND hwndOwner, DLGPROC dlgprc){ HWND output = 0; HGLOBAL hMem;#ifdef _WIN32 LPDLGTEMPLATE pDlgTemp = (LPDLGTEMPLATE)HXLoadDialogBoxTemplate(pszName, &hMem);#else void * pDlgTemp = HXLoadDialogBoxTemplate(pszName, &hMem);#endif if (pDlgTemp && hMem) { output = CreateDialogIndirect(g_hInstBase, pDlgTemp, hwndOwner, dlgprc);#ifdef _WIN16 UnlockResource(hMem); FreeResource(hMem);#endif } return output;}HWND HXCreateDialogParam(LPCSTR pszName, HWND hwndOwner, DLGPROC dlgprc, LPARAM lParamInit){ HWND output = 0; HGLOBAL hMem;#ifdef _WIN32 LPDLGTEMPLATE pDlgTemp = (LPDLGTEMPLATE)HXLoadDialogBoxTemplate(pszName, &hMem);#else void * pDlgTemp = HXLoadDialogBoxTemplate(pszName, &hMem);#endif if (pDlgTemp && hMem) { output = CreateDialogIndirectParam(g_hInstBase, pDlgTemp, hwndOwner, dlgprc, lParamInit);#ifdef _WIN16 UnlockResource(hMem); FreeResource(hMem);#endif } return output;}void HXResetWindowText(HWND hwnd, UINT idResource){ char szText[256]; /* Flawfinder: ignore */ int nCharCount = HXLoadString(idResource,szText,255); if (nCharCount > 0) { // Try and set the new text SetWindowText(hwnd, OS_STRING(szText)); } }#ifndef WIN32_PLATFORM_PSPCvoid HXResetWindowMenu(HWND hwnd, LPCSTR pszName){ HMENU hNewMenu = HXLoadMenu(pszName); HMENU hOldMenu = GetMenu(hwnd); // Try and set the new menu if (SetMenu(hwnd,hNewMenu)) { hNewMenu = NULL; } // If we succesfully set the new menu than it // will be NULL, otherwise we need to clean it // up correctly. if (hNewMenu) { DestroyMenu(hNewMenu); } // Normally we got the old menu and we need to // clean it up. Otherwise we don't need to do // anything. if (hOldMenu) { DestroyMenu(hOldMenu); } }HMENU HXLoadPopupMenu(LPCSTR pMenuName){ HMENU hPopup = NULL; HMENU hMenu = HXLoadMenu(pMenuName); if (hMenu) { hPopup = CreatePopupMenu(); int nItemCount = GetMenuItemCount(hMenu); for (int nItem = 0; nItem < nItemCount; nItem++) { char buffer[256]; /* Flawfinder: ignore */ UINT unID = GetMenuItemID(hMenu,nItem); UINT unState = GetMenuState(hMenu,nItem,MF_BYPOSITION); GetMenuString(hMenu,nItem,buffer,sizeof(buffer)-1,MF_BYPOSITION); AppendMenu(hPopup,unState | MF_STRING,unID,buffer); } } return hPopup;}HFONT HXCreateFont (int nHeight, int nWidth, int nEscapement, int nOrientation, int fnWeight, DWORD fdwItalic, DWORD fdwUnderline, DWORD fdwStrikeOut, DWORD fdwCharSet, DWORD fdwOutputPrecision, DWORD fdwClipPrecision, DWORD fdwQuality, DWORD fdwPitchAndFamily, LPCSTR lpszFace){ HINSTANCE hTempDLL; HFONT rtnFont; CREATE_FONT Create_Font_Func = NULL; BOOL bLoaded = FALSE; int output = 0; HXCheckLocale(); // First Check in Language DLLs for (int ndx = 0; ndx < g_nLangDLLs; ndx++) { if (g_hLangDLLs[ndx]) { hTempDLL = g_hLangDLLs[ndx]; Create_Font_Func = (CREATE_FONT)GetProcAddress((HINSTANCE)hTempDLL, OS_STRING(Name_Create_Font)); if (Create_Font_Func) { bLoaded = TRUE; rtnFont = (* Create_Font_Func) (nHeight, nWidth, nEscapement, nOrientation, fnWeight, fdwItalic, fdwUnderline, fdwStrikeOut, fdwCharSet, fdwOutputPrecision, fdwClipPrecision, fdwQuality, fdwPitchAndFamily, lpszFace); break; // for } // if output } // if some handle } // for if (!bLoaded) { // NOTE: Win32 and Win16 versions take different sized parameters! rtnFont = CreateFont(nHeight, nWidth, nEscapement, nOrientation, fnWeight, #ifdef _WIN32 fdwItalic, fdwUnderline, fdwStrikeOut, fdwCharSet, fdwOutputPrecision, fdwClipPrecision, fdwQuality, fdwPitchAndFamily,#else (BYTE)fdwItalic, (BYTE)fdwUnderline, (BYTE)fdwStrikeOut, (BYTE)fdwCharSet, (BYTE)fdwOutputPrecision, (BYTE)fdwClipPrecision, (BYTE)fdwQuality, (BYTE)fdwPitchAndFamily,#endif lpszFace); } return rtnFont;}HFONT HXGetStockFont ( int stockFontId ){ HINSTANCE hTempDLL; HFONT rtnFont; LOAD_FONT Load_Font_Func = NULL; BOOL bLoaded = FALSE; int output = 0; HXCheckLocale(); // First Check in Language DLLs for (int ndx = 0; ndx < g_nLangDLLs; ndx++) { if (g_hLangDLLs[ndx]) { hTempDLL = g_hLangDLLs[ndx]; Load_Font_Func = (LOAD_FONT)GetProcAddress((HINSTANCE)hTempDLL, OS_STRING(Name_Load_Font)); if (Load_Font_Func) { bLoaded = TRUE; rtnFont = (* Load_Font_Func) ( stockFontId ); break; } } } if (!bLoaded) { return (HFONT) GetStockObject ( stockFontId ); } return rtnFont;}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -