Форум: "Прочее";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];
ВнизSHAppBarMessage(ABM_SETSTATE, pabd) - занчение константы :( Найти похожие ветки
← →
Мефисто (2006-07-09 10:31) [0]Здрасте всем!
Вотс и задам пожалуй вопросец на форум :)
Для воего taskbar нужно установить свойста: ABS_AUTOHIDE | ABS_ALWAYSONTOP
В MSDN есть такая запись: SHAppBarMessage(ABM_SETSTATE, pabd), дабы установить нужные мне значения. Но в D7, в ее модулях, константа ABM_SETSTATE не объявлена :( Кто знает, какое значение должно быть присвоено данной константе?
← →
Юрий Зотов © (2006-07-09 12:19) [1]
////
//// AppBar stuff
////
#define ABM_NEW 0x00000000
#define ABM_REMOVE 0x00000001
#define ABM_QUERYPOS 0x00000002
#define ABM_SETPOS 0x00000003
#define ABM_GETSTATE 0x00000004
#define ABM_GETTASKBARPOS 0x00000005
#define ABM_ACTIVATE 0x00000006 // lParam == TRUE/FALSE means activate/deactivate
#define ABM_GETAUTOHIDEBAR 0x00000007
#define ABM_SETAUTOHIDEBAR 0x00000008 // this can fail at any time. MUST check the result
// lParam = TRUE/FALSE Set/Unset
// uEdge = what edge
#define ABM_WINDOWPOSCHANGED 0x0000009
#define ABM_SETSTATE 0x0000000a
// these are put in the wparam of callback messages
#define ABN_STATECHANGE 0x0000000
#define ABN_POSCHANGED 0x0000001
#define ABN_FULLSCREENAPP 0x0000002
#define ABN_WINDOWARRANGE 0x0000003 // lParam == TRUE means hide
// flags for get state
#define ABS_AUTOHIDE 0x0000001
#define ABS_ALWAYSONTOP 0x0000002
#define ABE_LEFT 0
#define ABE_TOP 1
#define ABE_RIGHT 2
#define ABE_BOTTOM 3
typedef struct _AppBarData
{
DWORD cbSize;
HWND hWnd;
UINT uCallbackMessage;
UINT uEdge;
RECT rc;
LPARAM lParam; // message specific
} APPBARDATA, *PAPPBARDATA;
SHSTDAPI_(UINT_PTR) SHAppBarMessage(DWORD dwMessage, PAPPBARDATA pData);
////
//// EndAppBar
////
← →
Мефисто (2006-07-09 12:23) [2]Спасибо, большое, дядь Юра! ;)
← →
Мефисто (2006-07-09 16:20) [3]Вот жешь, блин. Не выходит у меня чего-то каменный цветок, не могу приготовить свой TaskBar :(
Думал щяс, как по маслу... Ага, размечтался...
У меня почему-то параметры ABS_AUTOHIDE и ABS_ALWAYSONTOP передаются родному (системному) TaskBar-у, а не моему :)
Собственно листинг кода:
private
FABD: TAppBarData;
{ Private declarations }
protected
procedure CreateParams(var Params: TCreateParams); override;
const
ABM_SETSTATE = 10;
// Регистрируем новый Bar в системе
procedure TAppForm.bnNewClick(Sender: TObject);
begin
FillChar(FABD, SizeOf(TAppBarData), #0);
FABD.cbSize := SizeOf(TAppBarData);
FABD.hWnd := AppForm.Handle;
FABD.uCallbackMessage := 0;
FABD.uEdge := ABE_Top;
FABD.rc := Rect(0, 0, 1280, 80);
FABD.lParam := 0;
SHAppBarMessage(ABM_NEW, FABD);
end;
// Удалем ранее зарегестрированный Bar
procedure TAppForm.bnRemClick(Sender: TObject);
begin
SHAppBarMessage(ABM_REMOVE, FABD);
end;
// Устанавливаю клиентскую область под Bar и в эту область равняю форму AppForm
procedure TAppForm.bnSetClick(Sender: TObject);
begin
SHAppBarMessage(ABM_SETPOS, FABD);
AppForm.BoundsRect := FABD.rc;
// Здесь пытаюсь назначить стиль автоматически скрываться и
// всегда быть сверху, но почемуто данные параметры передаются
// родному системному TaskBar-у
FABD.lParam := LParam(ABS_AUTOHIDE or ABS_ALWAYSONTOP);
SHAppBarMessage(ABM_SETSTATE, FABD);
end;
// Как я понял не всякое окно можно прилепить в область TaskBar-а.
// В связи с чем изменил стиль окна
procedure TAppForm.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := Params.Style - WS_SYSMENU or WS_MAXIMIZEBOX or WS_MINIMIZEBOX;
Params.ExStyle := Params.ExStyle + WS_EX_APPWINDOW + WS_EX_TOOLWINDOW;
end;
Вопрос на данный момент таков: как ABS_AUTOHIDE и ABS_ALWAYSONTOP назначить для моего собственного TaskBar-а? Как тут правильно его (TaskBar) "приготовить"? :)
P.S. Подозреваю, что вопросов по TaskBar может еще добавться. Если, что модераторам данную ветку можно перенсти в соотвествующую конференцию.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.011 c