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