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

Comments

  1. C++ - Enumdisplaymonitors Callback - >>>>> Download Now

    >>>>> Download Full

    C++ - Enumdisplaymonitors Callback - >>>>> Download LINK

    >>>>> Download Now

    C++ - Enumdisplaymonitors Callback - >>>>> Download Full

    >>>>> Download LINK lC

    ReplyDelete

Post a Comment

Popular posts from this blog

formatting - SAS SQL Datepart function returning odd values -

c++ - Apple Mach-O Linker Error(Duplicate Symbols For Architecture armv7) -

php - Yii 2: Unable to find a class into the extension 'yii2-admin' -