c++ - EnumDisplayMonitors callback -
c++ - EnumDisplayMonitors callback -
i trying utilize enumdisplaymonitors create dynamic array of each monitor , store display_device structure. why below code not correct?
bool callback myinfoenumproc(hmonitor hmonitor, hdc hdcmonitor, lprect lprcmonitor, lparam dwdata) { monitorinfoex imonitor; imonitor.cbsize = sizeof(monitorinfoex); getmonitorinfo(hmonitor, &imonitor); if (imonitor.dwflags == display_device_mirroring_driver) { homecoming true; } else { *reinterpret_cast<screenarray*>(dwdata) = screenarray(&imonitor); homecoming true; }; }
called using
screenarray monitorarray[15]; int = 0; enumdisplaymonitors(null, null, myinfoenumproc, reinterpret_cast<lparam>(&monitorarray[i++]));
the first in array (monitorarray[0]) returns right info sec monitor monitorarray[1] max values.
edit: solved method used implementing function created:
monitorarray *ma = reinterpret_cast<monitorarray*>(dwdata); ma->addscreen(&imonitor);
the callback called 1 time each monitor, callback not incrementing through array each time called. need more instead:
struct screenarrayinfo { screenarray *array; int count; int maxcount; }; bool callback myinfoenumproc(hmonitor hmonitor, hdc hdcmonitor, lprect lprcmonitor, lparam dwdata) { monitorinfoex imonitor; imonitor.cbsize = sizeof(monitorinfoex); getmonitorinfo(hmonitor, &imonitor); if (imonitor.dwflags == display_device_mirroring_driver) { homecoming true; } else { screenarrayinfo *info = reinterpret_cast<screenarrayinfo*>(dwdata); if (info->count == info->maxcount) homecoming false; info->array[info->count] = screenarray(&imonitor); info->count++; homecoming true; }; } screenarray monitorarray[15]; screenarrayinfo info; info.array = monitorarray; info.count = 0; info.maxcount = 15; enumdisplaymonitors(null, null, &myinfoenumproc, reinterpret_cast<lparam>(&info));
alternatively:
#include <vector> bool callback myinfoenumproc(hmonitor hmonitor, hdc hdcmonitor, lprect lprcmonitor, lparam dwdata) { monitorinfoex imonitor; imonitor.cbsize = sizeof(monitorinfoex); getmonitorinfo(hmonitor, &imonitor); if (imonitor.dwflags == display_device_mirroring_driver) { homecoming true; } else { reinterpret_cast< std::vector<screenarray>* >(dwdata)->push_back(screenarray(&imonitor)); homecoming true; }; } std::vector<screenarray> monitorarray; enumdisplaymonitors(null, null, &myinfoenumproc, reinterpret_cast<lparam>(&monitorarray));
c++ windows winapi callback
C++ - Enumdisplaymonitors Callback - >>>>> Download Now
ReplyDelete>>>>> Download Full
C++ - Enumdisplaymonitors Callback - >>>>> Download LINK
>>>>> Download Now
C++ - Enumdisplaymonitors Callback - >>>>> Download Full
>>>>> Download LINK lC