📄 hxmullan.cpp
字号:
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_PSPC
void 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 + -