├── .gitignore ├── .vscode ├── c_cpp_properties.json ├── launch.json └── tasks.json ├── LICENCE ├── README.md ├── dep ├── linux │ └── readme ├── mac │ └── readme └── win │ └── readme ├── doc ├── linux.pages ├── linux.pdf ├── mac.pages ├── mac.pdf ├── raspbian.pages ├── raspbian.pdf ├── win.pages └── win.pdf ├── out └── readme └── src └── main.cpp /.gitignore: -------------------------------------------------------------------------------- 1 | dep 2 | out 3 | .DS_Store -------------------------------------------------------------------------------- /.vscode/c_cpp_properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "configurations": [ 3 | { 4 | "name": "Win32", 5 | "includePath": [ 6 | "${workspaceFolder}/src/**", 7 | "${workspaceFolder}/dep/win/lib/gcc_lib/mswu", 8 | "${workspaceFolder}/dep/win/include" 9 | ], 10 | "defines": [ 11 | "_WINDOWS", 12 | "_UNICODE", 13 | "__WXMSW__", 14 | "NDEBUG", 15 | "NOPCH" 16 | ], 17 | "compilerPath": "c:\\mingw-w64\\mingw64\\bin\\g++.exe", 18 | "cStandard": "c11", 19 | "cppStandard": "gnu++14", 20 | "intelliSenseMode": "gcc-x86" 21 | }, 22 | { 23 | "name": "Mac", 24 | "includePath": [ 25 | "${workspaceFolder}/src/**", 26 | "${workspaceFolder}/dep/mac/mac_lib/lib/wx/include/osx_cocoa-unicode-static-3.2", 27 | "${workspaceFolder}/dep/mac/include" 28 | ], 29 | "defines": [ 30 | "WX_PRECOMP", 31 | "__WXOSX_COCOA__", 32 | "_FILE_OFFSET_BITS=64", 33 | "__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=1" 34 | ], 35 | "compilerPath": "/usr/bin/g++", 36 | "cStandard": "c11", 37 | "cppStandard": "gnu++17", 38 | "intelliSenseMode": "clang-x86" 39 | }, 40 | { 41 | "name": "Linux", 42 | "includePath": [ 43 | "${workspaceFolder}/src/**", 44 | "${workspaceFolder}/dep/linux/linux_lib/lib/wx/include/gtk3-unicode-static-3.2", 45 | "${workspaceFolder}/dep/linux/include" 46 | ], 47 | "defines": [ 48 | "WX_PRECOMP", 49 | "__WXGTK__", 50 | "_FILE_OFFSET_BITS=64" 51 | ], 52 | "compilerPath": "/usr/bin/g++", 53 | "cStandard": "c11", 54 | "cppStandard": "gnu++17", 55 | "intelliSenseMode": "gcc-x64" 56 | } 57 | ], 58 | "version": 4 59 | } -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": "Launch", 9 | "type": "cppdbg", 10 | "request": "launch", 11 | "linux": { 12 | "program": "${workspaceRoot}/out/myapp", 13 | "MIMode": "gdb", 14 | "miDebuggerPath": "/usr/bin/gdb", 15 | }, 16 | "osx": { 17 | "program": "${workspaceRoot}/out/myapp", 18 | "MIMode": "lldb" 19 | }, 20 | "windows": { 21 | "program": "${workspaceRoot}\\out\\myapp.exe", 22 | "MIMode": "gdb", 23 | "miDebuggerPath": "C:\\mingw-w64\\mingw64\\bin\\gdb.exe" 24 | }, 25 | "stopAtEntry": false, 26 | "cwd": "${workspaceFolder}/out", 27 | "program": "${workspaceFolder}/out/myapp", 28 | "environment": [], 29 | "externalConsole": false, 30 | "setupCommands": [ 31 | { 32 | "description": "Enable pretty-printing for gdb", 33 | "text": "-enable-pretty-printing", 34 | "ignoreFailures": true 35 | } 36 | ], 37 | "preLaunchTask": "Compile & Link" 38 | } 39 | ] 40 | } -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "type": "shell", 6 | "label": "Compile & Link", 7 | "linux":{ 8 | "command": "g++", 9 | "args": [ 10 | "-o", 11 | "${workspaceFolder}/out/myapp", 12 | "${workspaceFolder}/out/**.o", 13 | "-L${workspaceFolder}/dep/linux/linux_lib/lib", 14 | "-Bstatic", 15 | "-pthread", 16 | "-lwx_gtk3u_core-3.2", 17 | "-lwx_baseu-3.2", 18 | "-ltiff", 19 | "-ljpeg", 20 | "-lxkbcommon", 21 | "-lgtk-3", 22 | "-lgdk-3", 23 | "-lpangocairo-1.0", 24 | "-lpango-1.0", 25 | "-lharfbuzz", 26 | "-latk-1.0", 27 | "-lcairo-gobject", 28 | "-lcairo", 29 | "-lgdk_pixbuf-2.0", 30 | "-lgio-2.0", 31 | "-lgobject-2.0", 32 | "-lgthread-2.0", 33 | "-lglib-2.0", 34 | "-lX11", 35 | "-lSM", 36 | "-lpng", 37 | "-lz", 38 | "-ldl", 39 | "-lm", 40 | "-lXtst", 41 | "-lpangoft2-1.0", 42 | "-lfontconfig", 43 | "-lfreetype" 44 | ] 45 | }, 46 | "osx":{ 47 | "command": "g++", 48 | "args": [ 49 | "-I${workspaceFolder}/dep/mac/mac_lib/lib/wx/include/osx_cocoa-unicode-static-3.2", 50 | "-I${workspaceFolder}/dep/mac/include", 51 | "-isysroot", 52 | "/Library/Developer/CommandLineTools/SDKs/MacOSX12.3.sdk", 53 | "-mmacosx-version-min=12.3", 54 | "${workspaceFolder}/out/**.o", 55 | "-o", 56 | "${workspaceFolder}/out/myapp", 57 | "-L${workspaceFolder}/dep/mac/mac_lib/lib", 58 | "-Bstatic", 59 | "-framework", 60 | "IOKit", 61 | "-framework", 62 | "Carbon", 63 | "-framework", 64 | "Cocoa", 65 | "-framework", 66 | "AudioToolbox", 67 | "-framework", 68 | "System", 69 | "-framework", 70 | "OpenGL", 71 | "-framework", 72 | "WebKit", 73 | "-framework", 74 | "Security", 75 | "-framework", 76 | "QuartzCore", 77 | "-lwx_osx_cocoau_core-3.2", 78 | "-lwx_baseu-3.2", 79 | "-lwxtiff-3.2", 80 | "-lwxjpeg-3.2", 81 | "-lwxpng-3.2", 82 | "-lwxregexu-3.2", 83 | "-lz", 84 | "-lpthread", 85 | "-liconv", 86 | "-llzma" 87 | ], 88 | }, 89 | "windows": { 90 | "command": "g++", 91 | "args": [ 92 | "-L${workspaceFolder}\\dep\\win\\lib\\gcc_lib", 93 | "-Lc:\\mingw-w64\\mingw64\\x86_64-w64-mingw32\\lib", 94 | "-mwindows", 95 | "-static", 96 | "${workspaceFolder}\\out\\**.o", 97 | "-o", 98 | "${workspaceFolder}\\out\\myapp.exe", 99 | "-lwxmsw32u_core", 100 | "-lwxbase32u", 101 | "-lwxpng", 102 | "-lcomdlg32", 103 | "-lgdi32", 104 | "-lcomctl32", 105 | "-lole32", 106 | "-loleaut32", 107 | "-ldmoguids", 108 | "-luuid", 109 | "-lwinspool", 110 | "-lz", 111 | "-lwxregexu", 112 | "-lwxzlib", 113 | "-luxtheme", 114 | "-loleacc", 115 | "-lshlwapi", 116 | "-lversion" 117 | ], 118 | }, 119 | "group": { 120 | "kind": "build", 121 | "isDefault": true 122 | }, 123 | "options": { 124 | "cwd": "${workspaceFolder}" 125 | }, 126 | "problemMatcher": [ 127 | "$gcc" 128 | ], 129 | "dependsOn": [ 130 | "MoveObjects" 131 | ] 132 | }, 133 | { 134 | "type": "shell", 135 | "label": "Compile", 136 | "linux":{ 137 | "command": "g++", 138 | "args": [ 139 | "-c", 140 | "$(find", 141 | "${workspaceFolder}/src/", 142 | "-type", 143 | "f", 144 | "-iregex", 145 | "'.*\\.cpp')", 146 | "-g", 147 | "-D__WXGTK__", 148 | "-D_FILE_OFFSET_BITS=64", 149 | "-DWX_PRECOMP", 150 | "-fno-strict-aliasing", 151 | "-pthread", 152 | "-I${workspaceFolder}/dep/linux/linux_lib/lib/wx/include/gtk3-unicode-static-3.2", 153 | "-I${workspaceFolder}/dep/linux/include", 154 | "-I/usr/include/gtk-3.0", 155 | "-I/usr/include/at-spi2-atk/2.0", 156 | "-I/usr/include/at-spi-2.0", 157 | "-I/usr/include/dbus-1.0", 158 | "-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include", 159 | "-I/usr/include/gio-unix-2.0", 160 | "-I/usr/include/cairo", 161 | "-I/usr/include/pango-1.0", 162 | "-I/usr/include/fribidi", 163 | "-I/usr/include/harfbuzz", 164 | "-I/usr/include/atk-1.0", 165 | "-I/usr/include/pixman-1", 166 | "-I/usr/include/uuid", 167 | "-I/usr/include/freetype2", 168 | "-I/usr/include/libpng16", 169 | "-I/usr/include/gdk-pixbuf-2.0", 170 | "-I/usr/include/libmount", 171 | "-I/usr/include/blkid", 172 | "-I/usr/include/glib-2.0", 173 | "-I/usr/lib/x86_64-linux-gnu/glib-2.0/include", 174 | "-I/usr/include/gtk-3.0/unix-print", 175 | "-Wall" 176 | ] 177 | }, 178 | "osx":{ 179 | "command": "g++", 180 | "args": [ 181 | "-I${workspaceFolder}/dep/mac/mac_lib/lib/wx/include/osx_cocoa-unicode-static-3.2", 182 | "-I${workspaceFolder}/dep/mac/include", 183 | "-isysroot", 184 | "/Library/Developer/CommandLineTools/SDKs/MacOSX12.3.sdk", 185 | "-mmacosx-version-min=12.3", 186 | "-c", 187 | "$(find", 188 | "${workspaceFolder}/src/", 189 | "-type", 190 | "f", 191 | "-iregex", 192 | "'.*\\.cpp')", 193 | "-g", 194 | "-D__WXOSX_COCOA__", 195 | "-D_FILE_OFFSET_BITS=64", 196 | "-D__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=1", 197 | "-DWX_PRECOMP", 198 | "-fno-strict-aliasing", 199 | "-fno-common", 200 | "-Wall" 201 | ] 202 | }, 203 | "windows": { 204 | "command": "g++", 205 | "args": [ 206 | "-I${workspaceFolder}\\dep\\win\\lib\\gcc_lib\\mswu", 207 | "-I${workspaceFolder}\\dep\\win\\include", 208 | "-c", 209 | "$(", 210 | "dir", 211 | "-Path", 212 | "${workspaceFolder}\\src", 213 | "-Filter", 214 | "*.cpp", 215 | "-Recurse", 216 | "|", 217 | "%{$_.FullName}", 218 | ")", 219 | "-g", 220 | "-Wall", 221 | "-D_WINDOWS", 222 | "-D_UNICODE", 223 | "-D__WXMSW__", 224 | "-DNDEBUG", 225 | "-DNOPCH" 226 | ], 227 | }, 228 | "options": { 229 | "cwd": "${workspaceFolder}" 230 | }, 231 | "problemMatcher": [ 232 | "$gcc" 233 | ] 234 | }, 235 | { 236 | "type": "shell", 237 | "label": "MoveObjects", 238 | "linux":{ 239 | "command": "mv", 240 | "args": [ 241 | "${workspaceFolder}/*.o", 242 | "${workspaceFolder}/out/" 243 | ] 244 | }, 245 | "osx":{ 246 | "command": "mv", 247 | "args": [ 248 | "${workspaceFolder}/*.o", 249 | "${workspaceFolder}/out/" 250 | ] 251 | }, 252 | "windows": { 253 | "command": "Move-Item", 254 | "args": [ 255 | "-Path", 256 | "${workspaceFolder}\\*.o", 257 | "-Destination", 258 | "${workspaceFolder}\\out", 259 | "-Force" 260 | ], 261 | }, 262 | "options": { 263 | "cwd": "${workspaceFolder}" 264 | }, 265 | "problemMatcher": [], 266 | "dependsOn": [ 267 | "Compile" 268 | ] 269 | } 270 | ] 271 | } -------------------------------------------------------------------------------- /LICENCE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2020 huckor 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # wxWidgets "Hello World" project for Visual Studio Code 2 | wxWidgets "Hello World" project made in Visual Studio Code. Can be used for making Windows, Linux and macOS GUI applications using C++ language. Project support compiling & debugging & intellisense in Visual Studio Code. 3 | Motivation for make this project was to use one IDE and one source code for all 3 major OS's. 4 | 5 | ## Different versions of wxWidgets 6 | This Visual Studio Code project keep changing because wxWidgets are in active development. For this reason I'm keeping few permanent branches in this repository. You need to pick correct branch or release according wxWidgets version you decide to use. 7 | 8 | **Pick according this list** 9 | 10 | - wxWidgets 3.2.3: 11 | [Git Branch](https://github.com/huckor/wxwidgets-vscode/tree/master) or [Release](https://github.com/huckor/wxwidgets-vscode/releases/tag/wx_3.2.3) 12 | 13 | - wxWidgets 3.1.6: 14 | [Git Branch](https://github.com/huckor/wxwidgets-vscode/tree/develop_wx_3.1.6) or [Release](https://github.com/huckor/wxwidgets-vscode/releases/tag/wx_3.1.6) 15 | 16 | - wxWidgets 3.1.4 or 3.1.5: 17 | [Git Branch](https://github.com/huckor/wxwidgets-vscode/tree/develop_wx_3.1.5) or [Release](https://github.com/huckor/wxwidgets-vscode/releases/tag/wx_3.1.4_v2) 18 | 19 | - wxWidgets 3.0.5: 20 | [Git Branch](https://github.com/huckor/wxwidgets-vscode/tree/develop_wx_3.0.5) or [Release](https://github.com/huckor/wxwidgets-vscode/releases/tag/wx_3.0.5_v2) 21 | 22 | ## Prerequisites 23 | 1. Install Visual Studio Code with C/C++ extension for VS Code. You can follow this [official tutorial](https://code.visualstudio.com/docs/cpp/config-mingw) 24 | 25 | 2. wxWidgets have to be compiled before you'll be able to compile this project. See /doc folder for info how to do it. There is separate pdf document per Operating System. 26 | Project is using wxWidgets libraries from folders structure as it's explained in /doc folder. In case you use different folders structure you need to modify tasks.json, launch.json and c_cpp_properties.json. 27 | 28 | 3. When you pass step 2 of prerequisites section then your environment should be ready for compiling this project. Which means compiler, linker, SDK and libraries are installed. 29 | MacOS project possibly require few changes in tasks.json file in case you used different MacOS SDK than one mentioned in /doc/mac.pdf. Required changes are explained in /doc/mac.pdf file on second page. 30 | 31 | ## Compile 32 | * In vscode hit CTRL + SHIFT + B for Linux & Windows 33 | * In vscode hit CMD + SHIFT + B for macOS. 34 | * Or in vscode select Terminal -> Run Build Task ... 35 | 36 | ## What's new 37 | * Update project to comply with wxWidgets 3.1.6 38 | 39 | ## How to Contribute 40 | 41 | Contributions are highly encouraged and appreciated! If you have any ideas, suggestions, or bug fixes, please feel free to contribute. Here's how you can get started: 42 | 43 | 1. Fork this repository to your GitHub account. 44 | 2. Make the desired changes or add new features to your forked repository. 45 | 3. Write test cases for your changes. 46 | 4. Submit a pull request, explaining the changes you have made and why they are beneficial. 47 | 5. I will review your pull request as soon as possible and provide feedback if needed. 48 | 6. Once your changes are approved, they will be merged into the main repository. 49 | 7. Congratulations! You have successfully contributed to this project. 50 | 51 | ## Code Style and Guidelines 52 | 53 | To maintain code consistency and readability, please adhere to the following guidelines: 54 | 55 | - Write clean and self-explanatory code. 56 | - Use meaningful variable and function names. 57 | - Follow the established coding style and formatting. 58 | - Add comments where necessary to improve code understanding. 59 | 60 | ## Issues and Bug Reports 61 | 62 | If you come across any issues or bugs while using this project, please report them using the GitHub issue tracker. Include a detailed description of the problem, steps to reproduce it, and any relevant information that might help in resolving the issue. 63 | 64 | ## Support 65 | 66 | If you need any assistance or have questions regarding this project, feel free to reach out to me. I'll do my best to help you. 67 | 68 | ## Spread the Word 69 | 70 | If you find this project helpful or interesting, consider giving it a star on GitHub. Also, sharing it with others who might benefit from it would be greatly appreciated. 71 | 72 | Thank you for your interest in this project. -------------------------------------------------------------------------------- /dep/linux/readme: -------------------------------------------------------------------------------- 1 | Check /doc folder for this dependency -------------------------------------------------------------------------------- /dep/mac/readme: -------------------------------------------------------------------------------- 1 | Check /doc folder for this dependency -------------------------------------------------------------------------------- /dep/win/readme: -------------------------------------------------------------------------------- 1 | Check /doc folder for this dependency -------------------------------------------------------------------------------- /doc/linux.pages: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huckor/wxwidgets-vscode/6fdf4abf4d2629640d39a94dec45832e3c916f50/doc/linux.pages -------------------------------------------------------------------------------- /doc/linux.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huckor/wxwidgets-vscode/6fdf4abf4d2629640d39a94dec45832e3c916f50/doc/linux.pdf -------------------------------------------------------------------------------- /doc/mac.pages: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huckor/wxwidgets-vscode/6fdf4abf4d2629640d39a94dec45832e3c916f50/doc/mac.pages -------------------------------------------------------------------------------- /doc/mac.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huckor/wxwidgets-vscode/6fdf4abf4d2629640d39a94dec45832e3c916f50/doc/mac.pdf -------------------------------------------------------------------------------- /doc/raspbian.pages: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huckor/wxwidgets-vscode/6fdf4abf4d2629640d39a94dec45832e3c916f50/doc/raspbian.pages -------------------------------------------------------------------------------- /doc/raspbian.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huckor/wxwidgets-vscode/6fdf4abf4d2629640d39a94dec45832e3c916f50/doc/raspbian.pdf -------------------------------------------------------------------------------- /doc/win.pages: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huckor/wxwidgets-vscode/6fdf4abf4d2629640d39a94dec45832e3c916f50/doc/win.pages -------------------------------------------------------------------------------- /doc/win.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huckor/wxwidgets-vscode/6fdf4abf4d2629640d39a94dec45832e3c916f50/doc/win.pdf -------------------------------------------------------------------------------- /out/readme: -------------------------------------------------------------------------------- 1 | Output of compilation will be in this folder -------------------------------------------------------------------------------- /src/main.cpp: -------------------------------------------------------------------------------- 1 | // wxWidgets "Hello World" Program available on https://docs.wxwidgets.org/trunk/overview_helloworld.html 2 | 3 | // For compilers that support precompilation, includes "wx/wx.h". 4 | #include 5 | #ifndef WX_PRECOMP 6 | #include 7 | #endif 8 | 9 | class MyApp : public wxApp 10 | { 11 | public: 12 | virtual bool OnInit(); 13 | }; 14 | 15 | class MyFrame : public wxFrame 16 | { 17 | public: 18 | MyFrame(); 19 | private: 20 | void OnHello(wxCommandEvent& event); 21 | void OnExit(wxCommandEvent& event); 22 | void OnAbout(wxCommandEvent& event); 23 | }; 24 | 25 | enum 26 | { 27 | ID_Hello = 1 28 | }; 29 | 30 | wxIMPLEMENT_APP(MyApp); 31 | 32 | bool MyApp::OnInit() 33 | { 34 | MyFrame *frame = new MyFrame(); 35 | frame->Show(true); 36 | return true; 37 | } 38 | 39 | MyFrame::MyFrame() : wxFrame(NULL, wxID_ANY, "Hello World") 40 | { 41 | wxMenu *menuFile = new wxMenu; 42 | menuFile->Append(ID_Hello, "&Hello...\tCtrl-H", "Help string shown in status bar for this menu item"); 43 | menuFile->AppendSeparator(); 44 | menuFile->Append(wxID_EXIT); 45 | 46 | wxMenu *menuHelp = new wxMenu; 47 | menuHelp->Append(wxID_ABOUT); 48 | 49 | wxMenuBar *menuBar = new wxMenuBar; 50 | menuBar->Append(menuFile, "&File"); 51 | menuBar->Append(menuHelp, "&Help"); 52 | SetMenuBar( menuBar ); 53 | 54 | CreateStatusBar(); 55 | 56 | SetStatusText("Welcome to wxWidgets!"); 57 | 58 | Bind(wxEVT_MENU, &MyFrame::OnHello, this, ID_Hello); 59 | Bind(wxEVT_MENU, &MyFrame::OnAbout, this, wxID_ABOUT); 60 | Bind(wxEVT_MENU, &MyFrame::OnExit, this, wxID_EXIT); 61 | } 62 | 63 | void MyFrame::OnExit(wxCommandEvent& event) 64 | { 65 | Close(true); 66 | } 67 | 68 | void MyFrame::OnAbout(wxCommandEvent& event) 69 | { 70 | wxMessageBox("This is a wxWidgets Hello World example", "About Hello World", wxOK | wxICON_INFORMATION); 71 | } 72 | 73 | void MyFrame::OnHello(wxCommandEvent& event) 74 | { 75 | wxLogMessage("Hello world from wxWidgets!"); 76 | } 77 | --------------------------------------------------------------------------------