Помощь - Поиск - Пользователи - Календарь
Полная версия: Стили окна под 2000/xp
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Free Pascal, Pascal ABC и другие
Bokul
Цитата

WS_EX_LAYERED
Windows 2000/XP : Creates a layered window. Note that this cannot be used for child windows. Also, this cannot be used if the window has a class style of either CS_OWNDC or CS_CLASSDC.

Можно ли в Fpc юзать такие стили? Если да, то как? Ибо так компилятор ругается


{$mode ObjFpc}
{$Apptype gui}
uses windows;
function MyCreateWindow(ClassName:PChar):hWnd;
begin
MyCreateWindow:=CreateWindowEx(Ws_Ex_Topmost or WS_EX_LAYERED,//Identifier not found "WS_EX_LAYERED"
ClassName,'Salut',
Ws_Overlapped or Ws_Visible,
Cw_Usedefault, Cw_Usedefault,
200,300,
0,0,
System.HInstance,
nil)


end;


volvo
Const
WS_EX_LAYERED = $80000;
и используй, где хочешь smile.gif
Bokul
Ухты, работает smile.gif! Спасибо!
Откуда такие данные?
volvo
Исходники FPC + исходники Дельфи + MSDN smile.gif
Bokul
Ого, быстро ты нашел yes2.gif

Она где описана? В модуле windows? Можешь подсказать алгоритм поиска?
volvo
1) убеждаешься что в последней версии файла fpcbuild-2.0.4\fpcbuild_2.0.4_exp\fpcsrc\rtl\win32\wininc\defines.inc этой константы нету (если есть - повезло, просто перекомпилируешь модуль Windows и пользуешься новым smile.gif )

2) открываешь файл Borland\Delphi\Source\Rtl\Win\Windows.pas и ищешь WS_EX_LAYERED... Если есть - хорошо, нету -

3) открываешь MSDN и делаешь то же самое, в примерах под VB обычно есть все константы...
blum.gif
Bokul
Признавайся, откуда исходники Delphi взял! smile.gif
volvo
Ну, мало ли чего кто где берет... У меня Enterprise Edition, так что весь RTL и еще много чего кроме него - с исходниками...
Bokul
Так freеpascal не поддерживает WinApi выше 95?
volvo
Да почему "не поддерживает"? Что, SetLayeredWindowAttributes - это Win95 API? Нет, это появилось только в Windows2000, однако в Windows.pas она прекрасно описана...
Bokul
AnimateWindow?
Цитата

Function Information

Minimum DLL Version user32.dll
Header Declared in Winuser.h, include Windows.h
Import library User32.lib
Minimum operating systems Windows 98 , Windows 2000

Identifier not found "AnimateWindow". sad.gif
volvo
А ты видел, КАК описана AnimateWindow в Windows.pas в Дельфи?

Вот и подключи так же:
function AnimateWindow; external 'user32.dll' name 'AnimateWindow';
Const
AW_HIDE = $10000;
AW_BLEND = $80000;

...
AnimateWindow(Handle, 500, AW_HIDE or AW_BLEND);
...
smile.gif
Bokul
Не получается сделать:

function AnimateWindow:Bool; external 'user32.dll' name 'AnimateWindow';

Const
Aw_Hide=$10000;
Aw_Blend=$80000;
var Wnd:hWnd;
begin
MyRegisterClass(my_class);
Wnd:=MyCreateWindow(my_class);
AnimateWindow(Wтd,500,Aw_Hide or Aw_Blend);//Wrong number of parameters specified
...


Хотя вроде все параметры есть:


BOOL AnimateWindow(

HWND hwnd,
DWORD dwTime,
DWORD dwFlags
);




Цитата
А ты видел, КАК описана AnimateWindow в Windows.pas в Дельфи?

no1.gif Можешь поделится исходником Windows.pas? 10.gif
volvo
Цитата
вроде все параметры есть:
Только компилятор об этом не знает, а связывание с DLL происходит уже при линковке, для компилятора надо описывать полный заголовок, а не только имя + тип результата...
function AnimateWindow(hWnd: HWND; dwTime: DWORD; dwFlags: DWORD): BOOL;
external 'user32.dll' name 'AnimateWindow';

Const
Aw_Hide=$10000;
Aw_Blend=$80000;

var
Wnd:hWnd;

begin
MyRegisterClass(my_class);
Wnd:=MyCreateWindow(my_class);
AnimateWindow(Wnd,500,Aw_Hide or Aw_Blend); // <---
...

Bokul
Спасибо good.gif

Вот еще прочитал:
Цитата

Each system-defined message has a unique message identifier and a corresponding symbolic constant (defined in the software development kit (SDK) header files )

Можно спросить что такое SDK и где можно взять эти header files?
volvo
Platform SDK - тут: XPSP2 PSDK Full Download with Local Install (осторожнее с размером - 266Мб, все-таки)...
Bokul
Скачал, установил, запустил все программы с папки Tools, понял что еще много учить, запустил справку, почитал раздел о WinApi (тоже самое что и вmsdn), но заголовочных файлов так и не нашел? Где искать?
Bokul
Цитата
Только компилятор об этом не знает, а связывание с DLL происходит уже при линковке, для компилятора надо описывать полный заголовок, а не только имя + тип результата...

Т.е. все функции WinApi можна подгрузить с DLL-ок? Что тогда делает модуль windows?
volvo
Цитата
Что тогда делает модуль windows?
Ну, он как раз этим и занимается... smile.gif Большинство функций в windows.pas (точнее - в func.inc) все-же описано... Если тебе нужно что-то, чего там нет - подключай...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.