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

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

 
 Ответить  Открыть новую тему 
> Bdr_raisedouter, WinApi
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 32
Пол: Мужской

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


Не подскажите к чему относится параметр BDR_RAISEDOUTER. В VCL это вроде бы bvRaised и относится к свойству BevelOuter , а как прописать это в WinApi?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Что значит "к чему относится"? Это одна из констант, используемая, например при вызове DrawEdge

Цитата
как прописать это в WinApi?
А это и есть WinAPI...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 32
Пол: Мужской

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


Мдя...

Вообщем рисую я панель через апи.


Цитата
PanelS:=CreateWindowEx(0,'Static',nil,WS_VISIBLE or WS_CHILD,0,0,145,251,
WND,0, hInstance, nil );


Но панель получается не такой, как я привык. Всмысле получается она как бы ниже фона окна. Потом я посмотрел на инспекторе объектов, что за такой вид получается если значение свойства BevelOuter равно
bvLowered, а мне надо, чтобы было bvRaised. Как написать это?

Мож сейчас понятней smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






PanelS:=CreateWindowEx(WS_EX_WINDOWEDGE,'Static',nil,WS_VISIBLE or WS_CHILD,0,0,145,251,WND,0, hInstance, nil );
попробуй...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 32
Пол: Мужской

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


Неа, не получается. Выложу-ка код(вдруг ошибся где-нибудь)

program Project1;

uses
Windows,
Messages;

const
WndClass = 'TWinApiWnd';
WndCaption = 'Changen 1.0 ';

PnlClass='Static';

var
Wc:TWndClassEx;
Wnd:HWND;
Msg:TMsg;
Pc:TWndClassEx;
PanelS:HWND;


function WindowProc( Wnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM ): LRESULT; stdcall;
begin
case Msg of
WM_DESTROY: begin
PostQuitMessage( 0 );
Result := 0;
Exit;
end;
else
Result := DefWindowProc( Wnd, Msg, wParam, lParam );
end;
end;



begin
with Wc do
begin
cbSize := SizeOf( Wc );
style := CS_HREDRAW or CS_VREDRAW;
lpfnWndProc := @WindowProc;
cbClsExtra := 0;
cbWndExtra := 0;
hInstance := hInstance;
hIcon := LoadIcon( 0, IDI_APPLICATION );
hCursor := LoadCursor( 0, IDC_ARROW );
hbrBackground := COLOR_BTNFACE+1;
lpszMenuName := nil;
lpszClassName := WndClass;
end;
RegisterClassEx( Wc );

Wnd := CreateWindowEx( 0, WndClass, WndCaption, WS_MINIMIZEBOX,
10, 10, 345, 251, 0, 0, hInstance, nil );

ShowWindow( Wnd, SW_NORMAL );

//панелька

with Pc do
begin
cbSize := SizeOf( Pc );
style := CS_HREDRAW or CS_VREDRAW;
lpfnWndProc := @WindowProc;
cbClsExtra := 0;
cbWndExtra := 0;
//:= BDR_RAISEDOUTER;
hInstance := hInstance;
hCursor := LoadCursor( 0, IDC_ARROW );
hbrBackground := COLOR_BTNFACE+1;
lpszMenuName := nil;
lpszClassName := PnlClass;
end;



RegisterClassEx( Pc );
PanelS:=CreateWindowEx(0,PnlClass,nil,WS_VISIBLE or WS_CHILD or WS_BORDER ,0,0,145,251,
WND,0, hInstance, nil );





while GetMessage( Msg, 0, 0, 0 ) do
begin
TranslateMessage( Msg );
DispatchMessage( Msg );
end;
Halt( Msg.wParam );





end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Ты знаешь, в чем дело? В том, что Raised и Sunken можно применить только к Border-у, размер которого меняется. Иначе будет можно делать только Sunken (утопленный) контрол...
...
begin
with Wc do begin
cbSize := SizeOf(Wc);
style := CS_HREDRAW or CS_VREDRAW;
lpfnWndProc := @WindowProc;
cbClsExtra := 0;
cbWndExtra := 0;
hInstance := hInstance;
hIcon := LoadIcon(0, IDI_APPLICATION);
hCursor := LoadCursor(0, IDC_ARROW);
hbrBackground := COLOR_BTNFACE+1;
lpszMenuName := nil;
lpszClassName := WndClass;
end;
RegisterClassEx(Wc);

Wnd := CreateWindowEx(0, WndClass, WndCaption,
WS_MINIMIZEBOX, 10, 10, 345, 251, 0, 0, hInstance, nil);
ShowWindow( Wnd, SW_NORMAL );

with Pc do begin
cbSize := SizeOf(Pc);
style := CS_HREDRAW or CS_VREDRAW;
lpfnWndProc := @WindowProc;
cbClsExtra := 0;
cbWndExtra := 0;

hInstance := hInstance;
hCursor := LoadCursor(0, IDC_ARROW);
hbrBackground := COLOR_BTNFACE+1;
lpszMenuName := nil;
lpszClassName := PnlClass;
end;
RegisterClassEx(Pc);
PanelS := CreateWindowEx(WS_EX_TOOLWINDOW, PnlClass, nil,
WS_THICKFRAME or WS_CHILD or WS_VISIBLE, // Обрати внимание на ThickFrame
0, 0, 145, 201,
WND, 0, hInstance, nil);

while GetMessage(Msg, 0, 0, 0) do begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
Halt(Msg.wParam);
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 32
Пол: Мужской

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


Спасибо, спасибо, спасибо. Теперь все нормально.

Только уточнить: WS_THICKFRAME отвечает за вид?
А WS_EX_TOOLWINDOW за то, что Border может менять размер, так.
Еще раз спасибо. smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Нет... Наоборот. WS_THICKFRAME отвечает за то, что контрол может менять размер... А WS_EX_TOOLWINDOW - это... Как бы сказать. Ну, лучше, чем в MSDN все равно не скажешь:
Цитата
WS_EX_TOOLWINDOW
Creates a tool window; that is, a window intended to be used as a floating toolbar. A tool window has a title bar that is shorter than a normal title bar, and the window title is drawn using a smaller font. A tool window does not appear in the taskbar or in the dialog that appears when the user presses ALT+TAB. If a tool window has a system menu, its icon is not displayed on the title bar. However, you can display the system menu by right-clicking or by typing ALT+SPACE.

Перевод:
Цитата
WS_EX_TOOLWINDOW
Создает окно инструментальных средств; то есть окно предполагается использовать как плавающую инструментальную панель. Окно инструментальных средств имеет строку заголовка, которая является более короткой, чем нормальная строка заголовка, а заголовок окна выводится с использованием меньшего шрифта. Окно инструментальных средств не появляется в панели задач или в диалоговом окне, которое появляется, когда пользователь нажимает ALT+TAB. Если окно инструментальных средств имеет системное меню, его иконка не отображается в заголовке, однако, доступ к системному меню возможен через нажатие правой кнопкой мыши или нажатие Alt+Space
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 32
Пол: Мужской

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


Мдя, попутал.

Переводил сам или транслейтером?

Сообщение отредактировано: Klose -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 




- Текстовая версия 26.09.2017 23:31
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"