]> git.saurik.com Git - wxWidgets.git/commitdiff
added tech note for MSW programmers
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 8 Jun 2005 21:42:39 +0000 (21:42 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 8 Jun 2005 21:42:39 +0000 (21:42 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34601 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/tech/index.txt
docs/tech/tn0019.txt [new file with mode: 0644]

index f73bcf7303e295559cebc28baf118ba0ef96a221..4eefe506e5b304348836b3f6a0858f2d83e3cf24 100644 (file)
@@ -19,6 +19,7 @@ tn0015.txt   How to add new bitmaps to wxWidgets UI elements
 tn0016.txt   How to add new files and libraries to wxWidgets build system (Bakefile)
 tn0017.txt   How to write unit tests for wxWidgets classes
 tn0018.txt   How to add a new font encoding/charset to wxWidgets
+tn0019.txt   Special notes about writing wxMSW code
 
 
 Version: $Id$
diff --git a/docs/tech/tn0019.txt b/docs/tech/tn0019.txt
new file mode 100644 (file)
index 0000000..52d8c5b
--- /dev/null
@@ -0,0 +1,54 @@
+                    Special notes about writing wxMSW code
+                    ======================================
+
+0. Purpose
+----------
+
+This is just a collection of various notes which should be useful to anybody
+working on wxMSW codebase, please feel free to add more here.
+
+This text assumes familiarity with both Windows programming and wxWidgets so it
+doesn't cover any wxWidgets-wide issues not specific to Windows.
+
+
+1. Windows headers wrappers
+---------------------------
+
+In no event should the Windows headers such as <windows.h> or <commctrl.h> be
+included directly. So instead of #include <...> use "wx/msw/wrapwin.h" or
+"wx/msw/wrapcctl.h".
+
+For convenience it is also possible to replace #include <commdlg.h> and
+<shlobj.h> with #include "wx/msw/wrapcdlg.h" and wrapshl.h but this is less
+vital.
+
+Also notice that many convenient (albeit undocumented) functions and classes
+are declared in "wx/msw/private.h", please do become familiar with this file
+contents and use the utility classes and functions from it instead of
+duplicating their functionality (which can often be done only in exception
+unsafe way).
+
+
+2. Windows features checks
+--------------------------
+
+All checks of features not present in all Windows versions must be done both at
+compile-time (because, even though we use maximal value for WINVER in our code,
+some compilers come with headers too old to declare them) and at run-time
+(because wxMSW applications should run everywhere).
+
+The functions wxGetWinVersion() (from wx/msw/private.h) and wxApp::
+GetComCtl32Version() should be used to check Windows and comctl32.dll versions
+respectively.
+
+Any functions which may not be present in kernel32.dll/user32.dll/... in all
+Windows versions should be resolved dynamically, i.e. using wxDynamicLibrary as
+otherwise any wx application -- even not needing them at all -- would refuse to
+start up on Windows versions not implementing the feature in question. As an
+example, look at AlphaBlt()-related code in src/msw/dc.cpp.
+
+
+=== EOF ===
+
+Author:  VZ
+Version: $Id$