Гость
Форумы / C++ [игнор отключен] [закрыт для гостей] / работа с API-функциями в MFC-приложении / 7 сообщений из 7, страница 1 из 1
02.12.2002, 13:47
    #32074603
Glass
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с API-функциями в MFC-приложении
Добрый день.
Вопрос в следующем:
известно, что в MFC-приложениях не рекомендуется использовать апишные функции, а использовать заменяющие их специальные, например: MessageBox -> AfxMessageBox, и т.д.

Как же их все-таки использовать?

Конкретно, мне нужна функция UpdateLayeredWindow.
Соответственно, я подключаю Winuser.h.

А он требует в свою очередь подключения windows.h - что делать нельзя.

Как быть? Надеюсь на помощь.
...
Рейтинг: 0 / 0
02.12.2002, 15:44
    #32074700
repin777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с API-функциями в MFC-приложении
Подключаешь <windows.h> и в вкладке Link соответствующую *.lib
...
Рейтинг: 0 / 0
02.12.2002, 17:08
    #32074765
Glass
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с API-функциями в MFC-приложении
он ругается на подключение Windows.h

MFC сам его подключает.
...
Рейтинг: 0 / 0
16.12.2002, 16:31
    #32080022
maratka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с API-функциями в MFC-приложении
Вообще говоря, практич. любой проект MFC подрубает неявно
практич. все заголовочные файлы win через подключение файла
afxwin.h (проекты, имеющие окно), или afx.h (static library) -
посмотрите stdafx.h своего проекта. Через afx.h включается windows.h,
который включает в свою очередь winuser.h. Так что winuser.h
самому подключать не нужно. Однако, если открыть в редакторе winuser.h,
то ф-ю UpdateLayeredWindow я там не нашел (VC 6.0, SP5) :), хотя
User32.lib ее действительно экспортирует (за разъяснениями обращайтесь
в Редмонт или лично к Гейтсу :)). Что делать? Придется ручками описать
прототип этой ф-ии в заголовочном файле, в котором нужно вызывать
ф-ю или, еще проще, в stdafx.h:

myfile.h:
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
BOOL WINAPI UpdateLayeredWindow(
HWND hwnd, // handle to layered window
HDC hdcDst, // handle to screen DC
POINT *pptDst, // new screen position
SIZE *psize, // new size of the layered window
HDC hdcSrc, // handle to surface DC
POINT *pptSrc, // layer position
COLORREF crKey, // color key
BLENDFUNCTION *pblend, // blend function
DWORD dwFlags // options
);
#ifdef __cplusplus
}
#endif /* __cplusplus */
...

myfile.cpp:
...
bError = ::UpdateLayeredWindow(::GetActiveWindow(), NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL);
if (!bError)
dwError = GetLastError(); // для отладки примера
// у меня возврат bError == 0 (ошибка, естессно)
// dwError == ERROR_INVALID_PARAMETER // что похоже на правду, т.е.
// ф-я вроде вызвалась и отработала :)

p.s. насчет того что не рекомендуется использовать апишные ф-ии - слышу впервые,
кроме случая с AfxBeginThread(..) вместо ::CreateThread(..), но это вроде не отсюда...
да, в проекте MFC App User32.lib подрубать не надо также (как и windows.h :),
MFC его сам подрубает (однако, ошибки сборки не будет).
удачи.
...
Рейтинг: 0 / 0
16.12.2002, 17:33
    #32080058
Glass
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с API-функциями в MFC-приложении
ладно, поковыряюсь еще... прототип updateLayeredWindow есть в Winuser.h - только не в стандартной установке, не важно какой SP... Нужно скачать MS SDK поновее... У меня на работе диск валялся, я оттуда поставил.

Спасибо.
...
Рейтинг: 0 / 0
17.12.2002, 14:48
    #32080472
maratka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с API-функциями в MFC-приложении
насчет SDK вы правы. тогда проблем не должно возникнуть.
...
Рейтинг: 0 / 0
18.12.2002, 17:21
    #32081255
i_dev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с API-функциями в MFC-приложении
Перед вызовом функции поставь "::"!
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / работа с API-функциями в MFC-приложении / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]