Форум: "Система";
Текущий архив: 2003.01.09;
Скачать: [xml.tar.bz2];
ВнизВ чем ошибка? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c