diff --git a/samples/CPlusPlusWidgets/.gitignore b/samples/CPlusPlusWidgets/.gitignore new file mode 100644 index 00000000..40683bd4 --- /dev/null +++ b/samples/CPlusPlusWidgets/.gitignore @@ -0,0 +1,7 @@ +build +build-dbg +.DS_Store +cmake-build-debug +cmake-build-release +.vscode +.idea \ No newline at end of file diff --git a/samples/CPlusPlusWidgets/CMakeLists.txt b/samples/CPlusPlusWidgets/CMakeLists.txt new file mode 100644 index 00000000..d743d57d --- /dev/null +++ b/samples/CPlusPlusWidgets/CMakeLists.txt @@ -0,0 +1,36 @@ +cmake_minimum_required(VERSION 3.14 FATAL_ERROR) + +project(VelopackCppWidgetsSample LANGUAGES CXX) + +include(FetchContent) + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +set(wxBUILD_SHARED OFF) + +message(STATUS "Fetching wxWidgets...") + +FetchContent_Declare( + wxWidgets + GIT_REPOSITORY https://github.com/wxWidgets/wxWidgets.git + GIT_SHALLOW ON +) +FetchContent_MakeAvailable(wxWidgets) + +set(SRCS main.cpp) + +if(APPLE) + # create bundle on apple compiles + add_executable(main MACOSX_BUNDLE ${SRCS}) + + # Set a custom plist file for the app bundle - needed for Mac OS Retina display + set_target_properties(main PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist) +else() + # the WIN32 is needed for Windows in order for it to look for WinMain + # instead of the main function. This is ignored on other systems, + # so it works on all platforms + add_executable(main WIN32 ${SRCS} main.exe.manifest) +endif() + +target_link_libraries(main PRIVATE wxcore wxnet) diff --git a/samples/CPlusPlusWidgets/main.cpp b/samples/CPlusPlusWidgets/main.cpp new file mode 100644 index 00000000..0d267ed7 --- /dev/null +++ b/samples/CPlusPlusWidgets/main.cpp @@ -0,0 +1,28 @@ +#include + +class MyApp : public wxApp +{ +public: + virtual bool OnInit(); +}; + +class MyFrame : public wxFrame +{ +public: + MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size); +}; + +wxIMPLEMENT_APP(MyApp); + +bool MyApp::OnInit() +{ + MyFrame* frame = new MyFrame("Hello Everyone!", wxDefaultPosition, wxDefaultSize); + frame->Show(true); + return true; +} + +MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) + : wxFrame(NULL, wxID_ANY, title, pos, size) +{ + new wxStaticText(this, wxID_ANY, "Good Morning!"); // no need to delete - the parent will do it automatically +} diff --git a/samples/CPlusPlusWidgets/main.exe.manifest b/samples/CPlusPlusWidgets/main.exe.manifest new file mode 100644 index 00000000..3107f647 --- /dev/null +++ b/samples/CPlusPlusWidgets/main.exe.manifest @@ -0,0 +1,9 @@ + + + + + true + PerMonitorV2 + + + \ No newline at end of file