MCPcopy Create free account
hub / github.com/ProgerXP/Notepad2e / LoadThemedDialogTemplate

Function LoadThemedDialogTemplate

src/Helpers.c:1780–1841  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1778}
1779
1780DLGTEMPLATE *LoadThemedDialogTemplate ( LPCTSTR lpDialogTemplateID, HINSTANCE hInstance )
1781{
1782 HRSRC hRsrc;
1783 HGLOBAL hRsrcMem;
1784 DLGTEMPLATE *pRsrcMem;
1785 DLGTEMPLATE *pTemplate;
1786 UINT dwTemplateSize = 0;
1787 WCHAR wchFaceName[LF_FACESIZE];
1788 WORD wFontSize;
1789 BOOL bDialogEx;
1790 BOOL bHasFont;
1791 int cbFontAttr;
1792 int cbNew;
1793 int cbOld;
1794 BYTE *pbNew;
1795 BYTE *pb;
1796 BYTE *pOldControls;
1797 BYTE *pNewControls;
1798 WORD nCtrl;
1799 hRsrc = FindResource ( hInstance, lpDialogTemplateID, RT_DIALOG );
1800 if ( hRsrc == NULL ) {
1801 return ( NULL );
1802 }
1803 hRsrcMem = LoadResource ( hInstance, hRsrc );
1804 pRsrcMem = ( DLGTEMPLATE * ) LockResource ( hRsrcMem );
1805 dwTemplateSize = ( UINT ) SizeofResource ( hInstance, hRsrc );
1806 if ( ( dwTemplateSize == 0 ) ||
1807 ( pTemplate = LocalAlloc ( LPTR, dwTemplateSize + LF_FACESIZE * 2 ) ) == NULL ) {
1808 UnlockResource ( hRsrcMem );
1809 FreeResource ( hRsrcMem );
1810 return ( NULL );
1811 }
1812 CopyMemory ( ( BYTE * ) pTemplate, pRsrcMem, ( size_t ) dwTemplateSize );
1813 UnlockResource ( hRsrcMem );
1814 FreeResource ( hRsrcMem );
1815 if ( !GetThemedDialogFont ( wchFaceName, &wFontSize ) ) {
1816 return ( pTemplate );
1817 }
1818 bDialogEx = DialogTemplate_IsDialogEx ( pTemplate );
1819 bHasFont = DialogTemplate_HasFont ( pTemplate );
1820 cbFontAttr = DialogTemplate_FontAttrSize ( bDialogEx );
1821 if ( bDialogEx ) {
1822 ( ( DLGTEMPLATEEX * ) pTemplate )->style |= DS_SHELLFONT;
1823 } else {
1824 pTemplate->style |= DS_SHELLFONT;
1825 }
1826 cbNew = cbFontAttr + ( ( lstrlen ( wchFaceName ) + 1 ) * sizeof ( WCHAR ) );
1827 pbNew = ( BYTE * ) wchFaceName;
1828 pb = DialogTemplate_GetFontSizeField ( pTemplate );
1829 cbOld = ( int ) ( bHasFont ? cbFontAttr + 2 * ( lstrlen ( ( WCHAR * ) ( pb + cbFontAttr ) ) + 1 ) : 0 );
1830 pOldControls = ( BYTE * ) ( ( ( DWORD_PTR ) pb + cbOld + 3 ) & ~ ( DWORD_PTR ) 3 );
1831 pNewControls = ( BYTE * ) ( ( ( DWORD_PTR ) pb + cbNew + 3 ) & ~ ( DWORD_PTR ) 3 );
1832 nCtrl = bDialogEx ?
1833 ( WORD ) ( ( DLGTEMPLATEEX * ) pTemplate )->cDlgItems :
1834 ( WORD ) pTemplate->cdit;
1835 if ( cbNew != cbOld && nCtrl > 0 ) {
1836 MoveMemory ( pNewControls, pOldControls, ( size_t ) ( dwTemplateSize - ( pOldControls - ( BYTE * ) pTemplate ) ) );
1837 }

Callers 3

ThemedDialogBoxParamFunction · 0.85
CreateThemedDialogParamFunction · 0.85
EditPrintSetupFunction · 0.85

Calls 5

GetThemedDialogFontFunction · 0.85
DialogTemplate_HasFontFunction · 0.85

Tested by

no test coverage detected