| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: samples/dll/my_exe.cpp
- // Purpose: Sample showing how to use wx DLL from a Win32 application
- // Author: Vadim Zeitlin
- // Created: 2009-12-07
- // Copyright: (c) 2009 Vadim Zeitlin <vadim@wxwidgets.org>
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- /*
- This program is intentionally as simple as possible and shouldn't be seen
- as an example of how to write a proper Win32 application (why should you
- want to do this anyhow when you have wxWidgets). It's just a test bed for
- the wx DLL which it uses.
- */
- // ============================================================================
- // declarations
- // ============================================================================
- // ----------------------------------------------------------------------------
- // headers
- // ----------------------------------------------------------------------------
- #include <windows.h>
- #include <windowsx.h>
- #include <stdio.h>
- #include <tchar.h>
- #include "my_dll.h"
- namespace
- {
- // ----------------------------------------------------------------------------
- // constants
- // ----------------------------------------------------------------------------
- const TCHAR *MAIN_WIN_CLASS_NAME = _TEXT("my_exe_main_win_class");
- const int IDB_RUN_GUI_FROM_DLL = 100;
- // ----------------------------------------------------------------------------
- // globals
- // ----------------------------------------------------------------------------
- HINSTANCE g_hInstance;
- HWND g_hwndMain;
- // ============================================================================
- // implementation
- // ============================================================================
- // ----------------------------------------------------------------------------
- // callbacks
- // ----------------------------------------------------------------------------
- void
- OnCommand(HWND /* hwnd */, int id, HWND /* hwndCtl */, UINT /* codeNotify */)
- {
- if ( id == IDB_RUN_GUI_FROM_DLL )
- {
- run_wx_gui_from_dll("child instance");
- }
- }
- void OnDestroy(HWND hwnd)
- {
- wx_dll_cleanup();
- PostQuitMessage(0);
- }
- LRESULT CALLBACK MainWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
- {
- switch ( msg )
- {
- HANDLE_MSG(hwnd, WM_COMMAND, OnCommand);
- HANDLE_MSG(hwnd, WM_DESTROY, OnDestroy);
- default:
- return DefWindowProc(hwnd, msg, wParam, lParam);
- }
- return 0;
- }
- // ----------------------------------------------------------------------------
- // initialization functions
- // ----------------------------------------------------------------------------
- bool RegisterMainClass()
- {
- WNDCLASS wc;
- ZeroMemory(&wc, sizeof(wc));
- wc.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;
- wc.lpfnWndProc = MainWndProc;
- wc.hInstance = g_hInstance;
- wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
- wc.hCursor = LoadCursor(NULL, IDC_ARROW);
- wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
- wc.lpszClassName = MAIN_WIN_CLASS_NAME;
- return RegisterClass(&wc) != 0;
- }
- bool CreateMainWindow()
- {
- g_hwndMain = CreateWindow
- (
- MAIN_WIN_CLASS_NAME,
- _TEXT("Main Win32 app"),
- WS_OVERLAPPEDWINDOW,
- CW_USEDEFAULT, CW_USEDEFAULT,
- 400, 300,
- NULL, NULL, g_hInstance, NULL
- );
- if ( !g_hwndMain )
- return false;
- CreateWindow
- (
- _TEXT("static"),
- _TEXT("Main Win32 application"),
- WS_CHILD | WS_VISIBLE,
- 10, 10, 200, 30,
- g_hwndMain, (HMENU)-1, g_hInstance, NULL
- );
- CreateWindow
- (
- _TEXT("button"),
- _TEXT("Run GUI from DLL"),
- WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON,
- 200, 200, 150, 35,
- g_hwndMain, (HMENU)IDB_RUN_GUI_FROM_DLL, g_hInstance, NULL
- );
- return true;
- }
- } // anonymous namespace
- // ----------------------------------------------------------------------------
- // entry point
- // ----------------------------------------------------------------------------
- int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow)
- {
- g_hInstance = hInstance;
- if ( !RegisterMainClass() )
- return 1;
- if ( !CreateMainWindow() )
- return 2;
- ShowWindow(g_hwndMain, nCmdShow);
- MSG msg;
- while ( GetMessage(&msg, NULL, 0, 0) )
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- return 0;
- }
|