1 Special notes about writing wxMSW code 2 ====================================== 3 40. Purpose 5---------- 6 7This is just a collection of various notes which should be useful to anybody 8working on wxMSW codebase, please feel free to add more here. 9 10This text assumes familiarity with both Windows programming and wxWidgets so it 11doesn't cover any wxWidgets-wide issues not specific to Windows. 12 13 141. Windows headers wrappers 15--------------------------- 16 17In no event should the Windows headers such as <windows.h> or <commctrl.h> be 18included directly. So instead of #include <...> use "wx/msw/wrapwin.h" or 19"wx/msw/wrapcctl.h". 20 21For convenience it is also possible to replace #include <commdlg.h> and 22<shlobj.h> with #include "wx/msw/wrapcdlg.h" and wrapshl.h but this is less 23vital. 24 25Also notice that many convenient (albeit undocumented) functions and classes 26are declared in "wx/msw/private.h", please do become familiar with this file 27contents and use the utility classes and functions from it instead of 28duplicating their functionality (which can often be done only in exception 29unsafe way). 30 31 322. Windows features checks 33-------------------------- 34 35All checks of features not present in all Windows versions must be done both at 36compile-time (because, even though we use maximal value for WINVER in our code, 37some compilers come with headers too old to declare them) and at run-time 38(because wxMSW applications should run everywhere). 39 40The functions wxGetWinVersion() (from wx/msw/private.h) and wxApp:: 41GetComCtl32Version() should be used to check Windows and comctl32.dll versions 42respectively. 43 44Any functions which may not be present in kernel32.dll/user32.dll/... in all 45Windows versions should be resolved dynamically, i.e. using wxDynamicLibrary as 46otherwise any wx application -- even not needing them at all -- would refuse to 47start up on Windows versions not implementing the feature in question. As an 48example, look at AlphaBlt()-related code in src/msw/dc.cpp. 49 50 51=== EOF === 52 53Author: VZ 54Version: $Id: tn0019.txt 34601 2005-06-08 21:42:39Z VZ $ 55