Add Application and basic dialog
This commit is contained in:
		
							parent
							
								
									6d1d7ed8d7
								
							
						
					
					
						commit
						c0f04232b4
					
				@ -1,5 +1,5 @@
 | 
				
			|||||||
# Mainspring app CMakeLists.txt
 | 
					# Mainspring app CMakeLists.txt
 | 
				
			||||||
add_executable(Mainspring WIN32 "src/main.cpp" "src/pch.h")
 | 
					add_executable(Mainspring WIN32 "src/main.cpp" "src/pch.h" "src/Application.h" "src/Application.cpp" "resource.rc" "src/resources.h")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set_property(TARGET Mainspring PROPERTY CXX_STANDARD 20)
 | 
					set_property(TARGET Mainspring PROPERTY CXX_STANDARD 20)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -12,6 +12,6 @@ endif()
 | 
				
			|||||||
target_precompile_headers(Mainspring PUBLIC "src/pch.h")
 | 
					target_precompile_headers(Mainspring PUBLIC "src/pch.h")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
find_package(Git)
 | 
					find_package(Git)
 | 
				
			||||||
execute_process(COMMAND ${GIT_EXECUTABLE} describe OUTPUT_VARIABLE MAINSPRING_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
 | 
					execute_process(COMMAND ${GIT_EXECUTABLE} describe OUTPUT_VARIABLE APPVERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
 | 
				
			||||||
configure_file(src/version.h.in version.h)
 | 
					configure_file(src/version.h.in version.h)
 | 
				
			||||||
target_include_directories(Mainspring PUBLIC "${PROJECT_BINARY_DIR}/Mainspring")
 | 
					target_include_directories(Mainspring PUBLIC "${PROJECT_BINARY_DIR}/Mainspring")
 | 
				
			||||||
							
								
								
									
										9
									
								
								Mainspring/resource.rc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								Mainspring/resource.rc
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					// Mainspring resource script
 | 
				
			||||||
 | 
					#include "windows.h"
 | 
				
			||||||
 | 
					#include "src/resources.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IDD_DIALOGMAIN DIALOGEX 0, 0, 150, 75
 | 
				
			||||||
 | 
					STYLE WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_POPUP
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
							
								
								
									
										53
									
								
								Mainspring/src/Application.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								Mainspring/src/Application.cpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,53 @@
 | 
				
			|||||||
 | 
					// Application class implementation
 | 
				
			||||||
 | 
					#include "pch.h"
 | 
				
			||||||
 | 
					#include "Application.h"
 | 
				
			||||||
 | 
					#include "resources.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Enable visual styles
 | 
				
			||||||
 | 
					#pragma comment(linker, "\"/manifestdependency:type='win32' \
 | 
				
			||||||
 | 
					name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
 | 
				
			||||||
 | 
					processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace mainspring {
 | 
				
			||||||
 | 
					    Application::Application(const char* appName, const char* appVersion)
 | 
				
			||||||
 | 
					        : m_appName(appName)
 | 
				
			||||||
 | 
					        , m_appVersion(appVersion)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        std::cout << std::format("{} {}\n", m_appName, m_appVersion);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void Application::run() {
 | 
				
			||||||
 | 
					        DialogBoxParam(nullptr, MAKEINTRESOURCE(IDD_DIALOGMAIN), nullptr, reinterpret_cast<DLGPROC>(mainDlgProc), reinterpret_cast<LPARAM>(this));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    BOOL CALLBACK Application::mainDlgProc(HWND dlg, UINT msg, WPARAM wParam, LPARAM lParam) {
 | 
				
			||||||
 | 
					        static Application* app = nullptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        switch (msg) {
 | 
				
			||||||
 | 
					            case WM_INITDIALOG: {
 | 
				
			||||||
 | 
					                app = reinterpret_cast<Application*>(lParam);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                SetWindowText(dlg, app->m_appName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                POINT cursor = {};
 | 
				
			||||||
 | 
					                GetCursorPos(&cursor);
 | 
				
			||||||
 | 
					                MONITORINFO mi = {};
 | 
				
			||||||
 | 
					                mi.cbSize = sizeof(mi);
 | 
				
			||||||
 | 
					                GetMonitorInfo(MonitorFromPoint(cursor, MONITOR_DEFAULTTONEAREST), &mi);
 | 
				
			||||||
 | 
					                SetWindowPos(dlg, nullptr, mi.rcMonitor.left + 100, mi.rcMonitor.top + 100, 0, 0, SWP_NOZORDER | SWP_NOSIZE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                return TRUE;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            case WM_CLOSE:
 | 
				
			||||||
 | 
					                EndDialog(dlg, 0);
 | 
				
			||||||
 | 
					                return TRUE;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return FALSE;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Application::~Application() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										17
									
								
								Mainspring/src/Application.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								Mainspring/src/Application.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					// Application class header
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace mainspring {
 | 
				
			||||||
 | 
					    class Application {
 | 
				
			||||||
 | 
					    public:
 | 
				
			||||||
 | 
					        Application(const char* appName, const char* appVersion);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        void run();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ~Application();
 | 
				
			||||||
 | 
					    private:
 | 
				
			||||||
 | 
					        static BOOL CALLBACK mainDlgProc(HWND dlg, UINT msg, WPARAM wParam, LPARAM lParam);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        const char* m_appName;
 | 
				
			||||||
 | 
					        const char* m_appVersion;
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -2,15 +2,16 @@
 | 
				
			|||||||
#include "pch.h"
 | 
					#include "pch.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "version.h"
 | 
					#include "version.h"
 | 
				
			||||||
 | 
					#include "Application.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Enable visual styles
 | 
					#define APPNAME "Mainspring"
 | 
				
			||||||
#pragma comment(linker, "\"/manifestdependency:type='win32' \
 | 
					 | 
				
			||||||
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
 | 
					 | 
				
			||||||
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
int main(int argc, char* argv[]) {
 | 
					int main(int argc, char* argv[]) {
 | 
				
			||||||
    std::cout << std::format("Mainspring {}\n", MAINSPRING_VERSION);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    std::cin.get();
 | 
					    {
 | 
				
			||||||
 | 
					        mainspring::Application app(APPNAME, APPVERSION);
 | 
				
			||||||
 | 
					        app.run();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return EXIT_SUCCESS;
 | 
					    return EXIT_SUCCESS;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
							
								
								
									
										2
									
								
								Mainspring/src/resources.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								Mainspring/src/resources.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					// Win32 resources
 | 
				
			||||||
 | 
					#define IDD_DIALOGMAIN 101
 | 
				
			||||||
@ -1,2 +1,2 @@
 | 
				
			|||||||
// Version configured header file
 | 
					// Version configured header file
 | 
				
			||||||
#define MAINSPRING_VERSION "@MAINSPRING_VERSION@"
 | 
					#define APPVERSION "@APPVERSION@"
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user