| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- 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
|