![]() |
Platforms, Frameworks & Libraries »
WTL »
General
Intermediate
Resourceless dialogsBy TrilobyteHow to create a resourceless dialog in wtl using the Resourceless Dialog Toolkit from Trilobyte-Solutions.nl |
C++, Windows, Visual Studio, WTL, Dev
|
|
Advanced Search Add to IE Search |
|
|
|
||||||||||||||||

There is one problem if you have designed a dialog and you want to share it
with other people. For example: I thinking about creating a typical "Tip of the
Day" dialog able to read in a xml file. I wanted to share it with anyone who
needs it. The problem was: How can I distribute the code without messing around
with multiple resource scripts. I searched the Internet for a while and found
some information about the Windows API. It was rather easy, but it had some
nasty things you needed to look out for. Example all data had to be aligned at
DWORD boundaries. I found out is was really hard to create a dialog
without the dialog editor, so I wrote a small tool capable of parsing a resource
script and export a dialog from it. I packet those two things together and the
Resourceless Dialog Toolkit was born.
I have spent a few hours to create documentation and a tutorial, so I'm giving you a small class showing you how the code works.
class CSampleDlg: public CResourcelessDlg<CSampleDlg>, public CWinDataExchange<CSampleDlg> { public: BEGIN_MSG_MAP(CSampleDlg) MSG_WM_INITDIALOG(OnInitDialog) CHAIN_MSG_MAP(CResourcelessDlg<CSampleDlg>) END_MSG_MAP() BEGIN_DDX_MAP(CSampleDlg) END_DDX_MAP() // Dialog function void CreateDlg() { CreateDlgTemplate("About", DS_SETFONT|DS_MODALFRAME |WS_CAPTION|WS_SYSMENU, 0, 0, 0, 186, 138, 8, "MS Sans Serif", "", ""); AddStatic("Dialog Extractor v1.0", 0, 0, 60, 20, 67, 8, IDC_STATIC); AddStatic(IDR_MAINFRAME, SS_ICON, 0, 20, 20, 20, 20, 18); AddButton("", 0 | BS_GROUPBOX, 0, 7, 7, 172, 103, IDC_STATIC); AddStatic("(c) Copyright 2004", 0, 0, 60, 30, 58, 8, IDC_STATIC); AddStatic("By: Trilobyte-Solutions", 0, 0, 60, 41, 70, 8, IDC_STATIC); AddStatic("Updates and additional information about" " this program can be found at the Trilobyte Solutions website.", 0, 0, 60, 59, 113, 26, IDC_STATIC); AddStatic("www.Trilobyte-Solutions.nl", 0, 0, 60, 94, 84, 8, IDC_STATIC); AddButton("OK", 0|BS_DEFPUSHBUTTON, 0, 67, 117, 50, 14, IDOK); } LRESULT OnInitDialog(HWND, LPARAM) { DoDataExchange(false); CenterWindow(GetParent()); return IDOK; } };As you see it is really easy to use the code. More information can be found in the documentation and tutorial inside the toolkit.
If you want to know more about the underlaying technique. Look one of the
following items up in the MSDN: DLGTEMPLATE,
DLGITEMTEMPLATE, CreateDialogIndirectParam and
DialogBoxIndirectParam. If there are enough request, I will write a
article about the Windows dialog API.
The dialog I told you about earlier in this article is not ready yet. At the end of the next week it probably will be ready.
The code is version 1.0. The tool is version 1.1, there were some bugs found.
For additional information, questions and bug report, visit my website: http://www.trilobyte-solutions.nl/, or contact me at bertwillems@trilobyte-solutions.nl.
General
News
Question
Answer
Joke
Rant
Admin
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 16 Aug 2004 Editor: Nishant Sivakumar |
Copyright 2004 by Trilobyte Everything else Copyright © CodeProject, 1999-2009 Web18 | Advertise on the Code Project |