Initial
This commit is contained in:
56
dialog/DLGTMPL.CPP
Normal file
56
dialog/DLGTMPL.CPP
Normal file
@@ -0,0 +1,56 @@
|
||||
#include <common/widestr.hpp>
|
||||
#include <dialog/dlgtmpl.hpp>
|
||||
|
||||
DialogTemplate::operator DLGTEMPLATE *(void)
|
||||
{
|
||||
DLGTEMPLATE *lpDLGTEMPLATE=0;
|
||||
DLGITEMTEMPLATE *lpDLGITEMTEMPLATE;
|
||||
BYTE *lpCharByte;
|
||||
DWORD sizeData;
|
||||
|
||||
if(!itemCount())return lpDLGTEMPLATE;
|
||||
sizeData=MaxTemplateBytes;
|
||||
mItemData.size(sizeData,GMEM_FIXED|GMEM_ZEROINIT);
|
||||
lpDLGTEMPLATE=(DLGTEMPLATE*)((BYTE*)&mItemData[0]);
|
||||
::memcpy(lpDLGTEMPLATE,&((DLGTEMPLATE&)*this),sizeof(DLGTEMPLATE));
|
||||
lpCharByte=((BYTE*)lpDLGTEMPLATE)+sizeof(DLGTEMPLATE);
|
||||
*((WORD*)lpCharByte)=0x0000; // no menu
|
||||
lpCharByte+=sizeof(WORD);
|
||||
if(className().isNull()){*((WORD*)lpCharByte)=0x0000;lpCharByte+=sizeof(WORD);}
|
||||
else lpCharByte=copyString(lpCharByte,className());
|
||||
if(titleText().isNull()){*((WORD*)lpCharByte)=0x0000;lpCharByte+=sizeof(WORD);}
|
||||
else lpCharByte=copyString(lpCharByte,titleText());
|
||||
if(style()&DS_SETFONT)
|
||||
{
|
||||
*((WORD*)lpCharByte)=pointSize();
|
||||
lpCharByte+=sizeof(WORD);
|
||||
lpCharByte=copyString(lpCharByte,typeFace());
|
||||
}
|
||||
lpCharByte=alignBoundary(lpCharByte);
|
||||
lpDLGITEMTEMPLATE=(DLGITEMTEMPLATE*)lpCharByte;
|
||||
for(short itemIndex=0;itemIndex<itemCount();itemIndex++)
|
||||
{
|
||||
DialogItemTemplate dlgItem(mDlgItems[itemIndex]);
|
||||
if(dlgItem.className().isNull())continue;
|
||||
::memcpy(lpDLGITEMTEMPLATE,&dlgItem,sizeof(DLGITEMTEMPLATE));
|
||||
lpCharByte=((BYTE*)lpDLGITEMTEMPLATE)+sizeof(DLGITEMTEMPLATE);
|
||||
lpCharByte=copyString(lpCharByte,dlgItem.className());
|
||||
lpCharByte=copyString(lpCharByte,dlgItem.titleText());
|
||||
*((WORD*)lpCharByte)=0;
|
||||
lpCharByte+=sizeof(WORD);
|
||||
lpCharByte=alignBoundary(lpCharByte);
|
||||
lpDLGITEMTEMPLATE=(DLGITEMTEMPLATE*)lpCharByte;
|
||||
}
|
||||
return lpDLGTEMPLATE;
|
||||
}
|
||||
|
||||
BYTE *DialogTemplate::copyString(BYTE *lpCharByte,const String &someString)const
|
||||
{
|
||||
WideString wideString(someString);
|
||||
if(!wideString.size())return lpCharByte;
|
||||
for(short itemIndex=0;itemIndex<wideString.size();itemIndex++)
|
||||
((WORD*)lpCharByte)[itemIndex]=(WORD)wideString.operator[](itemIndex);
|
||||
lpCharByte+=wideString.size()*sizeof(WORD);
|
||||
return lpCharByte;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user