Возникла необходимость заюзать winapi-шную функцию в приложении Windows Forms на C++
Я потратил около шести часов, чтобы найти решение, потому что просто так написать
SendMessage(Handle, WM_CLOSE, 0, 0);
не достаточно. А интуицией догадаться может только экстрасенс.
Короче. В файл stdafx.h после тудушечки добавляем инклюд:
// TODO: Установите здесь ссылки на дополнительные заголовки...
#include "windows.h"
В свойствах проекта идем в Свойства конфигурации — Компоновщик — Ввод, щелкаем по свойству Дополнительные зависимости (у правильных пацанов это называется Linker — Input — Additional dependencies) и выбираем из раскрывающегося списка <наследовать от родителя или от свойств проекта по умолчанию>. Возможно, придется выбрать пункт <Изменить...> и поставить там галку:
И только теперь мы можем вызывать тот же SendMessage()
, но с обязательными предшествующими двойными двоеточиями и преобразованием численного значения указателя к структуре HWND. Вот так:
::SendMessage((HWND)this->Handle.ToInt32(), WM_SYSCOMMAND, SC_MONITORPOWER, 2);
Ура! И главное совершенно очевидно, особенно с настройкой проекта.