#include "ECTrainerGUI.h"
#define CVUI_IMPLEMENTATION
#include "cvui.h"
// 初期化
bool ECTrainerGUI::Init() {
// 実行環境の情報取得
GetDisplayInfo();
// GUIウインドウ
cvui::init(WIN_MAIN);
// 刺激提示ウインドウ
cv::namedWindow(WIN_DISP, cv::WINDOW_NORMAL | cv::WINDOW_OPENGL);
if (_Displays.size() > 1) {
// マルチモニタの場合 サブ画面でフルスクリーン化
cv::moveWindow(WIN_DISP, _Displays[1].left, _Displays[1].top);
cv::setWindowProperty(WIN_DISP, cv::WND_PROP_FULLSCREEN, cv::WINDOW_FULLSCREEN);
}
else {
// シングルモニタの場合
cv::moveWindow(WIN_DISP, _Displays[0].left, _Displays[0].top);
}
return true;
}
// イベントループ
void ECTrainerGUI::MainLoop() {
}
// 全ディスプレイの情報を取得
void ECTrainerGUI::GetDisplayInfo() {
EnumDisplayMonitors(NULL, NULL,
(MONITORENUMPROC)MonitorEnumProc, (LPARAM)&_Displays);
#ifdef _DEBUG
for (int i = 0; i < _Displays.size(); i++) {
std::cout << "Monitor" << i << " : "
<< _Displays[i].left << "," << _Displays[i].top << ","
<< _Displays[i].right << "," << _Displays[i].bottom << std::endl;
}
#endif // _DEBUG
}
// 各ディスプレイの情報を取得
BOOL CALLBACK ECTrainerGUI::MonitorEnumProc(
HMONITOR hMon, HDC hdcMon, LPRECT lpMon, LPARAM dwData) {
std::vector<RECT>* displays = (std::vector<RECT>*)dwData;
displays->push_back(*lpMon);
return TRUE;
}