2013-11-08 2 views
0

Я пытаюсь получить монитор, чтобы проверить, выключено или нет.Попытка обнаружить монитор

Перед проверкой с GetDevicePowerState, я пытаюсь получить монитор таким образом:

#include <cstdlib> 
#include <iostream> 
#include <windows.h> 
#include <winuser.h> 
using namespace std; 

int main(int argc, char *argv[]) 
{ 
    POINT* p = new POINT; 
    p->x=0; 
    p->y=0; 
    HMONITOR* monitor = MonitorFromPoint(p,DWORD.MONITOR_DEFAULTTOPRIMARY); 
    system("PAUSE"); 
    return EXIT_SUCCESS; 
} 

Но постоянно дает мне:

main.cpp `MonitorFromPoint' undeclared (first use this function) 

Где я не так?

+0

Вы пишете код C, а не код на C++. –

+0

Но он «использует пространство имен std;'! Это ** должно быть C++;) – IInspectable

ответ

7

У вашего кода есть ряд проблем, но ни одно из них не должно вызывать сообщение об ошибке, которое вы видите. Вот код с некоторыми исправлениями, и немного больше добавлено, чтобы показать, по крайней мере, какой-то результат от теста:

#include <iostream> 
#include <windows.h> 

int main(int argc, char *argv[]) 
{ 
    POINT p{ 0, 0 }; 
    HMONITOR monitor = MonitorFromPoint(p, MONITOR_DEFAULTTONULL); 

    if (monitor == NULL) 
     std::cout << "No monitor found for point (0, 0)\n"; 
    else { 
     MONITORINFOEX info; 
     info.cbSize = sizeof(info); 

     GetMonitorInfo(monitor, &info); 
     std::cout << "Monitor: " << info.szDevice << "\n"; 
    } 
} 

Я проверил это как с VC++ 2013 и MinGW 4.8.1, и в обоих случаях это составлены и запущены без каких-либо проблем, производство:

Monitor: \\.\DISPLAY1 

... как его выход в обоих случаях.

+0

привет! Я пытаюсь скомпилировать ваш код, но я получаю эту ошибку: main.cpp: В функции 'int main (int, char **) ': main.cpp: 6: ошибка: ожидаемое первичное выражение перед« p » main .cpp: 6: error: expected '; ' перед «p» main.cpp: 7: ошибка: 'p 'undeclared (сначала использовать эту функцию) main.cpp: 7: error: (Каждый необъявленный идентификатор сообщается только один раз для каждой функции, в которой он появляется.) main .cpp: 7: ошибка: «MONITOR_DEFAULTTONULL» uneclared (сначала использовать эту функцию) main.cpp: 7: ошибка: «MonitorFromPoint» uneclared (сначала использовать эту функцию) make.exe: *** [main.o] Ошибка 1 Выполнение прекращено – JackTurky

+0

@JackTurky: Возможно, вы используете дефектную (или только древнюю) версию Windows.h, которая не содержит деклараций соответствующих структур, функций и т. Д.? Как уже отмечалось, я компилировал и запускал код с текущими версиями как VC++, так и MinGW. –

+0

Я использую windows xp pro sp3. вы что-то негодное? – JackTurky

Смежные вопросы