Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.28;
Скачать: CL | DM;

Вниз

Технология написания Shell a для Windows   Найти похожие ветки 

 
Globa ©   (2003-06-15 11:57) [0]

На работе возникла острая необходимость написания специализированного Shell"a. В связт с эти возникли вопросы.
Ну вопервых как я понял таскбар - основное окно, а форма заполняющая собой фон - дочерняя. Собственно говоря как сделать так, чтобы дочерняя форма была всегда внизу по оси Z, а таскбар вверху. Пробовал отлавливать сообщение WM_ACTIVATE и делать SetWindowPos(HWND_BOTOOM....) - для фона и HWND_TOPMOST - для таскбара. Все бы хорошо да возникает некрасивых эффект мерцания других окон от других приложения, т.е. они сначала помещаются за фон потом ловится WM_ACTIVATE моей формой и окна снова появляются.

Может кто нибудь занимался данными вопросами или разрабатывал свой Shell, был бы безумно благодарен.
Или на худой конец ткните носом где почитать можно.


 
DVM ©   (2003-06-15 15:00) [1]

Чтобы форма всегда всегда была внизу обрабатывай WM_WINDOWPOSCHANGING. Или есть функция SetShellWindow (правда с VCL окнами почему то неработающая).

Таскбар можно расположить сверху с помощью SetWindowPos и при каждой активации какого-либо окна опять его надо двигать наверх.
Или использовать SHAppbarMessage как это сделано в Explorer.

Тут в двух словах не скажешь. Пиши по почте. Тут где то есть ветка Shell (большая такая) там почитай. И обязательно посмотри исходники LiteStep, BlackBox и прочих оболочек.


 
_ALEXey_ ©   (2003-06-16 17:04) [2]

DVM, а где лежат исходники LiteStep, BlackBox?


 
DVM ©   (2003-06-16 17:56) [3]

Не помню... Но начать искать можно отсюда:

http://www.shellfront.org/


 
demonyator ©   (2003-06-17 00:07) [4]

Вот чего нарыл.

Heres a Implementation of using
ShAppBarMessage() That works and places the
bar INTO the rect. this example places it on
the bottom..
This one actually works

var
Mainfrm: TMainfrm;
AppData: TAppBarData;

implementation

{$R *.dfm}

procedure TMainfrm.FormCreate(Sender: TObject);
var
scrht:integer;
begin
mainfrm.Left := 0;
mainfrm.Width := screen.Width;
scrht := screen.Height;//for some reason we have to get this first
with AppData do //structure setup
begin

AppData.cbSize := 20;
Appdata.hWnd := mainfrm.Handle;
AppData.uEdge := ABE_Bottom;
AppData.rc.Left := 0;
AppData.rc.Top := Screen.WorkAreaHeight-Mainfrm.Height-10;
AppData.rc.Right := Mainfrm.Width;
AppData.rc.Bottom := screen.height-20;
SHAppBarMessage(ABM_NEW, AppData); //Add to system list
SHAppBarMessage(ABM_ACTIVATE, AppData); //Activate it
SHAppBarMessage(ABM_SETPOS, AppData); //Position it
end;
application.ProcessMessages;
end;



Страницы: 1 вся ветка

Текущий архив: 2003.08.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
11-92086
Alexander
2002-12-26 09:44
2003.08.28
Впрос по PIniFile: есть такой файл (для примера):


8-92120
Opera
2003-04-09 09:08
2003.08.28
Громкость и её изменение


14-92230
HardClubber
2003-08-09 23:25
2003.08.28
Внешний вид приложения под ХР


14-92202
vidiv
2003-08-10 14:32
2003.08.28
http://olimp.ws/index.html?vidiv


14-92177
panov
2003-08-08 23:00
2003.08.28
О форумах.