diff --git a/app/SysTray-X/windowctrl-win.cpp b/app/SysTray-X/windowctrl-win.cpp index af6d994..1eae953 100644 --- a/app/SysTray-X/windowctrl-win.cpp +++ b/app/SysTray-X/windowctrl-win.cpp @@ -76,7 +76,9 @@ bool WindowCtrlWin::findWindow( const QString& title ) { m_tb_windows = QList< quint64 >(); - EnumWindows( &enumWindowsTitleProc, (LPARAM)(LPSTR)( title.toStdString().c_str() ) ); + EnumWindowsTitleProcData data{ *this, title.toStdString() }; + + EnumWindows( &enumWindowsTitleProc, reinterpret_cast(&data) ); if( m_tb_windows.length() == 0 ) { @@ -92,11 +94,12 @@ bool WindowCtrlWin::findWindow( const QString& title ) */ BOOL CALLBACK WindowCtrlWin::enumWindowsTitleProc( HWND hwnd, LPARAM lParam ) { + auto& data = *reinterpret_cast(lParam); std::array buffer; int written = GetWindowTextA( hwnd, buffer.data(), int(buffer.size()) ); - if( written && strstr( buffer.data(), (char*)lParam ) != nullptr ) + if( written && strstr( buffer.data(), data.title.c_str() ) != nullptr ) { - m_tb_windows.append( (quint64)hwnd ); + data.window_ctrl.m_tb_windows.append( (quint64)hwnd ); } return TRUE; diff --git a/app/SysTray-X/windowctrl-win.h b/app/SysTray-X/windowctrl-win.h index 8753b25..e41df34 100644 --- a/app/SysTray-X/windowctrl-win.h +++ b/app/SysTray-X/windowctrl-win.h @@ -9,11 +9,21 @@ */ #include +/* + * Standard library includes + */ +#include + /* * Qt includes */ #include +/* + * Forward declarations + */ +class WindowCtrlWin; + /** * @brief The WindowCtrlWin class */ @@ -29,6 +39,12 @@ class WindowCtrlWin : public QObject HWND hwnd; }; + struct EnumWindowsTitleProcData + { + WindowCtrlWin& window_ctrl; + const std::string title; + }; + public: /**