Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cResDialog.h
Go to the documentation of this file.
1 //
5 
6 #ifndef _INC_cResDialog_H
7 #define _INC_cResDialog_H
8 #ifndef NO_PRAGMA_ONCE
9 #pragma once
10 #endif
11 
12 #include "../GrayLibBase.h"
13 #include "../Geometry/cRectI.h" // cPoint2i
18 #include "GrayCore/include/StrChar.h" // CODEPAGE_t
19 
20 #ifdef _WIN32
21 #define USE_DIALOG_TEMPLATE_SAVE
22 
23 #elif defined(__linux__)
24 
25 #else
26 #error NOOS
27 #endif
28 
29 namespace GrayLib
30 {
32 
33 #ifndef _MFC_VER
34 #define RT_DLGINIT cWinResMod::MakeIntResource(240)
35 #define RT_TOOLBAR cWinResMod::MakeIntResource(241)
36 #endif
37 
38 #pragma pack(push, 1)
39 
41  {
42  WORD dlgVer;
43  WORD signature;
44  UINT32 helpID;
45  UINT32 exStyle;
46  UINT32 style;
47  WORD cDlgItems;
48  short x;
49  short y;
50  short cx;
51  short cy;
53 
55  {
56  UINT32 helpID;
57  UINT32 exStyle;
58  UINT32 style;
59  short x;
60  short y;
61  short cx;
62  short cy;
63  UINT32 id;
65 
66 #pragma pack(pop)
67 
68  typedef UINT DLGID_t;
69 
71  {
74  public:
77  cString m_strString; // m_nMsg specific data.
78 
79  public:
80  cResDlgInitItem() noexcept
81  : m_nIDC(0), m_nMsg(WM_NULL)
82  {}
83  HRESULT ReadDataBlock(const BYTE* pData);
84  };
85 
87 
89  {
98  };
99 
101  {
104  public:
106  WORD m_wID;
107  public:
109  void SetClear();
110  cString get_String() const;
111  size_t get_Size() const;
112  void Read(const BYTE* &seeker, CODEPAGE_t uCodePage);
113  void Write(BYTE* &seeker, CODEPAGE_t uCodePage);
114  };
115 
117  {
121  public:
122  static const int k_DLU_X = 4;
123  static const int k_DLU_Y = 8;
124 
126  UINT32 m_dwHelpId;
127 
130  UINT32 m_dwExStyle;
131  UINT32 m_dwStyle;
132 
135 
136  public:
137  void SetCopy(const cResDlgBase* pItem);
138  void SetClear();
139 
140  cPoint2i get_XYPosDLU(void) noexcept
141  {
143  return(m_point);
144  }
145  short get_WidthDLU() const
146  {
149 
150  ASSERT(m_size.cx < SHRT_MAX);
151  return (short)m_size.cx;
152  }
153  short get_HeightDLU() const
154  {
157  ASSERT(m_size.cy < SHRT_MAX);
158  return (short)m_size.cy;
159  }
160  cRectI get_Rect() const
161  {
162  return cRectI(m_point.x, m_point.y, m_point.x + get_WidthDLU(), m_point.y + get_HeightDLU());
163  }
164 
165 #if defined(_WIN32)
166  static void GRAYCALL PixelsToDlgUnits(short& x, short& y, HWND hDlg);
167  static void GRAYCALL DlgUnitsToPixels(short& x, short& y, HWND hDlg);
168 #endif
169  };
170 
172  {
175 
176  public:
178  public:
181 
182  void SetCopy(const cResDlgTemplateItem* pItem);
183  void SetClear();
184  };
185 
187 
189  {
194 
195  public:
196  bool m_bExtended;
197 
199 
200  // Only if DS_FONT style is set _GTN(LOGFONT)
201  short m_sFontSize;
206 
209 
211 
212  public:
213  cResDialog(const BYTE* pResource = nullptr, CODEPAGE_t uCodePage = CP_ACP);
214  virtual ~cResDialog();
215 
216  ITERATE_t ReadResourceData(const BYTE* pResource, CODEPAGE_t uCodePage = CP_ACP);
217 #ifdef _WIN32
218  HRESULT ReadResource(const GChar_t* pszResName, CODEPAGE_t uCodePage = CP_ACP, HMODULE hMod = HMODULE_NULL);
219 #endif
220 
221  void GetFontCfg(cWinFontCfg& fontcfg) const;
222  void SetFontClear();
223  void SetFont(const GChar_t* pszFaceName, WORD wFontSize);
224 
225  cResDlgTemplateItemPtr GetItemID(DLGID_t wId) const;
226  cResDlgTemplateItemPtr GetItemEnum(int i) const;
227 
228  bool RemoveItemID(DLGID_t wId);
229  void AddItem(cResDlgTemplateItem* pItem);
230  void MoveAll(short x, short y);
231  void Resize(short x, short y);
232 #ifndef UNDER_CE
233  void ConvertToRTL();
234 #endif
235 
236 #ifdef USE_DIALOG_TEMPLATE_SAVE
237  void SaveCreate(cHeapBlock& block);
238  size_t GetSaveSize() const;
239 #ifdef _WIN32
240  HWND CreateDummyDialog();
241  void PixelsToDlgUnits(short& x, short& y);
242  void DlgUnitsToPixels(short& x, short& y);
243  cWinSize GetStringSize(DLGID_t id, const GChar_t* pszText);
244  void RTrimToString(DLGID_t id, const GChar_t* pszText, int margins);
245  void LTrimToString(DLGID_t id, const GChar_t* pszText, int margins);
246  void CTrimToString(DLGID_t id, const GChar_t* pszText, int margins);
247 #endif
248 #endif
249 
251  };
252 
254  {
259  public:
261  public:
262  HRESULT ReadDlgInitData(const BYTE* pResource);
263  HRESULT ReadDlgInit(const GChar_t* pszName, HMODULE hModule = HMODULE_NULL);
264  ITERATE_t InitDialogData(HWND hWnd) const;
265  };
266 };
267 
268 #endif // _INC_cResDialog_H
#define GRAYCALL
declare calling convention for static functions so everyone knows the arg passing scheme....
Definition: GrayCore.h:36
#define CATTR_PACKED
Definition: GrayCore.h:87
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
UINT WINMSG_t
Supplement _WIN32 "windows.h".
Definition: WinTypes.h:111
#define WM_NULL
Windows HWND messages not always defined.
Definition: WinTypes.h:115
#define ASSERT(exp)
Definition: cDebugAssert.h:87
#define HMODULE_NULL
Definition: cOSModule.h:31
Definition: cPoint2.h:20
Definition: cRectI.h:22
Definition: cResDialog.h:254
HRESULT ReadDlgInit(const GChar_t *pszName, HMODULE hModule=HMODULE_NULL)
ITERATE_t InitDialogData(HWND hWnd) const
cArrayRef< cResDlgInitItem > m_aDlgInitItems
Definition: cResDialog.h:260
Definition: cResDialog.h:189
CODEPAGE_t m_uCodePage
For (en/de)coding Unicode.
Definition: cResDialog.h:208
BYTE m_bFontCharset
Extended only.
Definition: cResDialog.h:204
UNITTEST2_PREDEF(cResDialog)
cArrayRef< cResDlgTemplateItem > m_aItems
Definition: cResDialog.h:210
short m_sFontSize
Definition: cResDialog.h:201
short m_sFontWeight
Extended only.
Definition: cResDialog.h:202
cResDlgStringOrId m_FontFace
Definition: cResDialog.h:205
BYTE m_bFontItalic
Extended only.
Definition: cResDialog.h:203
cResDlgStringOrId m_Menu
Definition: cResDialog.h:198
bool m_bExtended
DLGTEMPLATEEX.
Definition: cResDialog.h:196
Definition: cResDialog.h:117
cResDlgStringOrId m_Class
"BUTTON","LISTBOX" etc. DIALOG or DIALOGEX ?
Definition: cResDialog.h:133
UINT32 m_dwExStyle
Definition: cResDialog.h:130
cPoint2i get_XYPosDLU(void) noexcept
Definition: cResDialog.h:140
UINT32 m_dwHelpId
Extended only RESOURCEID_t.
Definition: cResDialog.h:126
cPoint2i m_point
dialog units = 4x8 units of the current selected font. k_DLU_X
Definition: cResDialog.h:128
cWinSize m_size
in dialog units. k_DLU_X
Definition: cResDialog.h:129
short get_WidthDLU() const
Definition: cResDialog.h:145
short get_HeightDLU() const
Definition: cResDialog.h:153
UINT32 m_dwStyle
Definition: cResDialog.h:131
DLGID_t m_wId
old format this is a WORD, EX format this is UINT32.
Definition: cResDialog.h:125
cResDlgStringOrId m_Title
Definition: cResDialog.h:134
cRectI get_Rect() const
Definition: cResDialog.h:160
Definition: cResDialog.h:71
DLGID_t m_nIDC
what dialog item does this data apply to ?
Definition: cResDialog.h:75
cResDlgInitItem() noexcept
Definition: cResDialog.h:80
cString m_strString
Definition: cResDialog.h:77
WINMSG_t m_nMsg
WORD WINMSG_t LB_ADDSTRING etc
Definition: cResDialog.h:76
Definition: cResDialog.h:101
cString m_sText
Definition: cResDialog.h:105
WORD m_wID
alternate id in the same union space. RESOURCEID_t
Definition: cResDialog.h:106
Definition: cResDialog.h:172
cHeapBlock m_CreationData
extra stuff. // Extended only?
Definition: cResDialog.h:177
TYPE x
Definition: cVecT.h:490
TYPE y
Definition: cVecT.h:490
Definition: WinTypes.h:168
Definition: WinTypes.h:128
Definition: cArrayRef.h:21
Definition: cHeap.h:156
Definition: cRefPtr.h:22
Definition: cRefPtr.h:225
Definition: cMesh.h:22
struct CATTR_PACKED GrayLib::tagDLGITEMTEMPLATEEX DLGITEMTEMPLATEEX
UNITTEST2_PREDEF(cQuadtree)
cRefPtr< cResDlgInitItem > cResDlgInitItemPtr
Definition: cResDialog.h:86
struct CATTR_PACKED GrayLib::tagDLGTEMPLATEEX DLGTEMPLATEEX
UINT DLGID_t
old window format this was a WORD, EX format this is UINT32.
Definition: cResDialog.h:68
cRefPtr< cResDlgTemplateItem > cResDlgTemplateItemPtr
Definition: cResDialog.h:186
RESDLG_CLASSID_TYPE
Definition: cResDialog.h:89
@ RESDLG_CLASSID_ListBox
Definition: cResDialog.h:95
@ RESDLG_CLASSID_Edit
Definition: cResDialog.h:93
@ RESDLG_CLASSID_Static
Definition: cResDialog.h:94
@ RESDLG_CLASSID_ScrollBar
Definition: cResDialog.h:96
@ RESDLG_CLASSID_Button
Definition: cResDialog.h:92
@ RESDLG_CLASSID_ComboBox
Definition: cResDialog.h:97
int ITERATE_t
like size_t but signed
Definition: Index.h:28
CODEPAGE_t
Definition: StrChar.h:33
@ CP_ACP
default to ANSI code page. All the _WIN32 A suffix functions.
Definition: StrChar.h:34
char GChar_t
My version of TCHAR, _TCHAR.
Definition: StrConst.h:26
Definition: cResDialog.h:55
short cx
Definition: cResDialog.h:61
UINT32 style
Definition: cResDialog.h:58
UINT32 exStyle
Definition: cResDialog.h:57
UINT32 helpID
Definition: cResDialog.h:56
short y
Definition: cResDialog.h:60
UINT32 id
Definition: cResDialog.h:63
short x
Definition: cResDialog.h:59
short cy
Definition: cResDialog.h:62
Definition: cResDialog.h:41
WORD dlgVer
Definition: cResDialog.h:42
WORD cDlgItems
Definition: cResDialog.h:47
UINT32 style
Definition: cResDialog.h:46
short y
Definition: cResDialog.h:49
short x
Definition: cResDialog.h:48
short cx
Definition: cResDialog.h:50
UINT32 exStyle
Definition: cResDialog.h:45
short cy
Definition: cResDialog.h:51
WORD signature
Definition: cResDialog.h:43
UINT32 helpID
Definition: cResDialog.h:44