Top.Mail.Ru
Ответы
Аватар пользователя
11лет
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Visual C++ подключения библиотеки "windows.h"

Когда в консольных приложения подключаюбиблиотеку "windows.h" и работаю с winapi функциями, то все работает как надо.

То когда тоже самое делаю на Windows Form, например подключаю

#include "windows.h"
...
и вызываю например SendMessage, то выдает много ошибок.

Я в книжке вижел пример, там перед тем как использовать winapi функцию делаю так:

[DllImportAttribute("user32.dll")]
static int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);

почему все так?

почему не работает обычное подключение библиотеки?

Получается для каждой функции и процедуры надо его определить?

По дате
По рейтингу
Аватар пользователя
Новичок
11лет

Потому что Windows Forms - это .Net, там куча дополнительных приколов и заморочек. Кури мануалы.

Аватар пользователя
Ученик
11лет

Виртуальные библиотеки не надо возвращать книги

Аватар пользователя
Мыслитель
11лет

"почему не работает обычное подключение библиотеки?"
1) Файл Windows.h нужно добавить во внешние зависимости проекта.
Меню Проект - Добавить - Существующий элемент - C:\Program Files\Microsoft SDKs\...версия_винды...\Includes\Windows.h
2) #include <windows.h> нужно добавить в stdafx.h
3) Туда же - #pragma comment(lib, "user32.lib") - для вызова функций из user32.dll

По поводу первого пункта, есть сомнения, что проект будет компилироваться на виндах других версий, ведь той папки там может не оказаться.
Лучше этот файл - а также включенные в него WinUser, WinGdi и т.д. - распространять вместе с исходником и подключать соответственно.

"почему не работает обычное подключение библиотеки?"
Windows.h - не библиотека, а заголовочный файл.
В нём библиотека user32.dll тоже подключена похожим образом, можете сами посмотреть.