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

Вниз

В чем ошибка?   Найти похожие ветки 

 
turonix ©   (2002-10-27 21:41) [0]

Здравствуйте уважаемые знатоки. У меня такая проблема: я пытаюсь написать программу,
которая заставляет "летать" кнопку пуск по экрану, но возникает следующая проблема:
при изменении координат кнопки функцией SetWindowPos(THandle(StartButtonBmp),HWND_TOP,2,700,57,22,SWP_NOZORDER);
кнопка координаты вроде изменяет, но при этом становится невидимой! Характерно что ксли координаты не менять (поставить флаг SWP_NOMOVE а изменять размер кнопки, то изменяетя и остается видимой, не пропадает. Объясните в чем дело?

Вот код прорги (многое закомпилированно, т.к я ее пытался отладить):

program Pusk_v03b;

uses
Forms,
windows,
classes, dialogs,sysutils;

{$R *.RES}
var
StartButtonWnd,StartButtonBmp:THandle;
i,l,h:integer;
WRct:TRect;
MWStruct:HDWP;
w:THandle;
begin
StartButtonWnd:=FindWindow("Shell_TrayWnd", nil); //получили идентификатор окна панели задач
StartButtonBmp:=FindWindowEx(StartButtonWnd,HWND(0),"Button", nil); //получили идентификатор кнопки "Пуск"

MWStruct:=BeginDeferWindowPos(1);
l:=3;h:=1;i:=0;
if Pointer(MWStruct)<>nil then
begin
//while (true) do
//begin
GetWindowRect(THandle(StartButtonBmp),WRct); //считывает зразмеры передвигаемого окна и помещает в WRct (здесь работает)

!!!! SetWindowPos(THandle(StartButtonBmp),HWND_TOP,
2,700,57,22,SWP_NOZORDER);
//SetWindowPos

{
if WRct.Top<0 then h:=-3;
if WRct.Top>743 then h:=3;
if WRct.left<1 then l:=3;
if WRct.left>968 then l:=-3; }

EndDeferWindowPos(MWStruct);
//i:=i+1;
//создание пауз
{w:=CreateEvent(nil,true,false,"");
WaitForSingleObject(w,200);
CloseHandle(w);}
//end;
end;
//CloseHandle(w);




end.


 
vidiv ©   (2002-10-28 02:42) [1]

Дело в том, что кнопка Пуск находится на панели задач, и естественно предком ее панель и является. Поэтому когда вы изменяете ее место положение, она скорее всего уходит кудато вниз, за видиму часть экрана. Попробуйте SetParent();


 
turonix ©   (2002-10-31 00:04) [2]

эта ведь функция ( SetParent ) меняет родителя моего(дочернего) окна так? А на какого же родителя мне поменять панель задач?
И еще: я узнал координаты окна кнопки "пуск" и попробовал их подставить в SetWindowPos(), так кнопка пропала как всегда, а ведь она свои координаты не меняла...



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

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

Наверх




Память: 0.47 MB
Время: 0.013 c
1-24934
Calm
2002-12-26 12:19
2003.01.09
Как узнать имя класса окна чужой программы?


1-24874
Separator
2002-12-28 06:37
2003.01.09
StringGrid и полоса проктрутки


14-25023
Morfein
2002-12-19 20:35
2003.01.09
Хостинг


7-25099
DDDeN
2002-10-28 18:07
2003.01.09
Звуковая карта и прога


1-24899
Vint
2002-12-24 14:44
2003.01.09
ImageList поломался