IPB
ЛогинПароль:

> 

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Стили окна под 2000/xp, WinApi, Fpc
сообщение
Сообщение #1


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Цитата

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;




--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Const
WS_EX_LAYERED = $80000;
и используй, где хочешь smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Ухты, работает smile.gif! Спасибо!
Откуда такие данные?


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Исходники FPC + исходники Дельфи + MSDN smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Ого, быстро ты нашел yes2.gif

Она где описана? В модуле windows? Можешь подсказать алгоритм поиска?


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






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
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Признавайся, откуда исходники Delphi взял! smile.gif

Сообщение отредактировано: Bokul -


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Ну, мало ли чего кто где берет... У меня Enterprise Edition, так что весь RTL и еще много чего кроме него - с исходниками...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Так freеpascal не поддерживает WinApi выше 95?


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Да почему "не поддерживает"? Что, SetLayeredWindowAttributes - это Win95 API? Нет, это появилось только в Windows2000, однако в Windows.pas она прекрасно описана...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


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

Сообщение отредактировано: Bokul -


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






А ты видел, КАК описана 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
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Не получается сделать:

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


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






Цитата
вроде все параметры есть:
Только компилятор об этом не знает, а связывание с 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); // <---
...

 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Спасибо 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?


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Гость






Platform SDK - тут: XPSP2 PSDK Full Download with Local Install (осторожнее с размером - 266Мб, все-таки)...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Скачал, установил, запустил все программы с папки Tools, понял что еще много учить, запустил справку, почитал раздел о WinApi (тоже самое что и вmsdn), но заголовочных файлов так и не нашел? Где искать?


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Цитата
Только компилятор об этом не знает, а связывание с DLL происходит уже при линковке, для компилятора надо описывать полный заголовок, а не только имя + тип результата...

Т.е. все функции WinApi можна подгрузить с DLL-ок? Что тогда делает модуль windows?


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Гость






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

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 1.10.2020 20:42
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name