Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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
1-24908
NAN
2002-12-25 07:48
2003.01.09
Вопрос про сообщение NAN?


1-24848
MVova
2002-12-27 16:10
2003.01.09
TTreeViev.FullExpand прокручивает в низ??


14-25096
Mik.rob
2002-12-21 23:08
2003.01.09
Как работать с Active Skin


14-25036
vajo
2002-12-20 08:57
2003.01.09
Регистрация действий на компьютере


4-25142
Azerg
2002-11-21 15:12
2003.01.09
Получение переменной среды USERPROFILE





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский