Главная страница
    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
4-25144
valler
2002-11-20 20:05
2003.01.09
AnimateWindow - Как Использовать


14-25041
Дмитрий К.К.
2002-12-20 05:59
2003.01.09
Именинники 20 декабря


1-24878
b-Ars
2002-12-27 14:04
2003.01.09
Возможно ли сделать оптимальней?


6-24993
Александр
2002-11-08 12:50
2003.01.09
Как назначить безопасность на папку для определённой группы польз


3-24806
al_bee
2002-12-15 17:33
2003.01.09
Помогите разобраться





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский