Форум: "Основная";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
ВнизМеню Найти похожие ветки
← →
_SuN_ (2007-02-02 18:56) [0]Как сделать полупрозрачное меню, меню с горизонтально расположенными итемами?
← →
GrayFace © (2007-02-03 09:52) [1]Для горизонтально расположеных пунктов меняй свойство Break.
Вот полупрозрачное PopupMenu. (с MainMenu тфкой фокус не проходит)type
int = integer;
procedure SetLayeredAttribs(Handle:HWnd;
AlphaBlend:boolean; AlphaBlendValue:byte;
TransparentColor:boolean; TransparentColorValue:int);
const
cUseAlpha: array [Boolean] of Integer = (0, LWA_ALPHA);
cUseColorKey: array [Boolean] of Integer = (0, LWA_COLORKEY);
var
Style: Integer;
begin
if not CheckWin32Version(5, 0) then exit;
Style := GetWindowLong(Handle, GWL_EXSTYLE);
if AlphaBlend or TransparentColor then
begin
if (Style and WS_EX_LAYERED) = 0 then
SetWindowLong(Handle, GWL_EXSTYLE, Style or WS_EX_LAYERED);
SetLayeredWindowAttributes(Handle, TransparentColorValue, AlphaBlendValue,
cUseAlpha[AlphaBlend] or cUseColorKey[TransparentColor]);
end else
if (Style and WS_EX_LAYERED) <> 0 then
begin
SetWindowLong(Handle, GWL_EXSTYLE, Style and not WS_EX_LAYERED);
RedrawWindow(Handle, nil, 0, RDW_ERASE or RDW_INVALIDATE or RDW_FRAME or RDW_ALLCHILDREN);
end;
end;
var
Hook: int;
function EditHookProc(Code, wParam:int; lParam:PMsg):int; stdcall;
begin
if Code <> MSGF_MENU then
begin
Result:= CallNextHookEx(Hook, Code, wParam, int(lParam));
exit;
end;
Result:=0;
with lParam^ do
if message = WM_PAINT then
begin
SetLayeredAttribs(hwnd, true, 180, false, 0);
Result:=0;
end else
Result:= CallNextHookEx(Hook, Code, wParam, int(lParam));
end;
procedure HookMenu;
begin
if Hook<>0 then exit;
Hook:= SetWindowsHookEx(WH_MSGFILTER, @EditHookProc, 0, GetCurrentThreadId);
Win32Check(Hook<>0);
end;
procedure UnhookMenu;
begin
if Hook = 0 then exit;
UnhookWindowsHookEx(Hook);
Hook:=0;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
HookMenu;
with Mouse.CursorPos do
PopupMenu1.Popup(X, Y);
UnhookMenu;
end;
← →
_SuN_ (2007-02-03 22:44) [2]попробовал, становятся полупрозрачными все окна приложения, тоесть не пойдёт такой вариант (((((
а про размещение итемов в горизонтальном положении никто ничего не знает??? как это делает, например Windows Live Messenger выбор смайлов селан в таком меню
← →
Olivetti (2007-02-03 22:56) [3]а про размещение итемов в горизонтальном положении никто ничего не знает??? как это делает, например Windows Live Messenger выбор смайлов селан в таком меню
Меню - тоже окно.
выбор смайлов селан в таком меню
В окне.
в меню
В окне.
← →
GrayFace © (2007-02-04 22:20) [4]_SuN_ (03.02.07 22:44) [2]
попробовал, становятся полупрозрачными все окна приложения
Странно.
_SuN_ (03.02.07 22:44) [2]
а про размещение итемов в горизонтальном положении никто ничего не знает???
GrayFace © (03.02.07 9:52) [1]
Для горизонтально расположеных пунктов меняй свойство Break.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.048 c