IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   ПРозрачные ФОрмы (http://www.imho.ws/showthread.php?t=61456)

Avanturist 11.06.2004 11:03

ПРозрачные ФОрмы
 
Прочитал что в W2k добавлена возможность создавать прозрачные формы. Но идентефикаторов нет, нашел их в инете, объявил через define, а теперь другая проблема - компилятор кричит, что функции то которая делает прозрачность нет, хотя библиотеки подключены так как написано в MSDN. Я так понял, что нужно так сказать обновить Visual Studio. А где взять эти обновления, помогите????

Dimm 11.06.2004 15:06

Avanturist

Речж идёт о фунkции Win32 API - SetLayeredWindowAttributes:

Код:

BOOL SetLayeredWindowAttributes(          HWND hwnd,
    COLORREF crKey,
    BYTE bAlpha,
    DWORD dwFlags
);

С define её определять не надо. Функция определена в Winuser.h.
Тебе надо включить Windows.h. И не забыть прилинковаться к User32.lib.

Так-же установить define версии (в stdafx.h) равным 5.

Avanturist 11.06.2004 15:39

Через define я определил константы для этой функции, т.к. их нет в файле ни в winuser.h,windows.h. А функция не определена в winuser.h я открывал файл и запускал поиск, ее прототипа там нет. Насчет линковки, что подразумевается чтобы в сеттингах проекта на закладке ЛИНК в списке была библиотека user32.lib, так она есть. Объясни пожалуйста!!!

Dimm 11.06.2004 18:58

Avanturist

у меня есть (в winuser.h):
...
WINUSERAPI
BOOL
WINAPI
SetLayeredWindowAttributes(
HWND hwnd,
COLORREF crKey,
BYTE bAlpha,
DWORD dwFlags);

#define LWA_COLORKEY 0x00000001
#define LWA_ALPHA 0x00000002


#define ULW_COLORKEY 0x00000001
#define ULW_ALPHA 0x00000002
#define ULW_OPAQUE 0x00000004


#endif /* _WIN32_WINNT >= 0x0500 */


Обрати внимание, _WIN32_WINNT должно быть определено 5 и больше (как я говорил).

Я не знаю какая у тебя Visual Studio.
Попробуй скачай последий SDK с сайта Microsoft.
Установишь его, там будут все последние библиотеки.
Сделаешь include на windows.h который будет в этом SDK.

Avanturist 15.06.2004 11:17

Все я сам разобрался. Прикол был в том, что в самой lib этой функции не было, а вот в user32.dll была, я взял и через GetProcAddress получил ее адрес и все ок, а константа WIN32_WINNT вообще нафиг не нужны, по крайней мере в WIN2k и ХР запускается и работает без проблем. По моему она нужны если хочешь под 98 запускать функции из w2k API.
Всем спасибо!!!

Dimm 15.06.2004 11:35

Avanturist

кому всем? :biggrin:

Avanturist 15.06.2004 13:41

Ну типа, всем кто читал, думал, делал. Хотя если честно я не посмотрел что мы туту в двоем токо были.


Часовой пояс GMT +4, время: 10:39.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.