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

Вниз

Разные винды - разный результат   Найти похожие ветки 

 
MUHAMOR ©   (2005-04-28 21:40) [0]

Привет всем, у меня такая проблема, пишу прогу использую только API и при изменении размера (использую MoveWindow) окна добавленая часть не ресуется, хотя сам размер изменяется, cудя по рамке при перетаскивании.

И что самое интересное то это не происходит под теми виндами под которыми я компилировал. Т.е. если я в ХР скомпил то в ХР все будет работать, но под 98 будет выше сказаное, и наоборот. Подскажите что нибудь.


 
Чапаев ©   (2005-04-29 11:39) [1]

Попробуй SetWindowPos().


 
alpet ©   (2005-04-29 12:18) [2]

Прототип функции в Windows.pas:

function MoveWindow(hWnd: HWND; X, Y, nWidth, nHeight: Integer; bRepaint: BOOL): BOOL; stdcall;

Ты устанавливаешь последний параметр в TRUE ?


 
DVM ©   (2005-04-29 14:30) [3]


> Т.е. если я в ХР скомпил то в ХР все будет работать, но
> под 98 будет выше сказаное, и наоборот

Не может такого быть для этой функции по крайней мере.


 
MUHAMOR ©   (2005-04-29 17:27) [4]

Меняю вот так:

GetWindowRect(MainWND,TmpRect);
Movewindow(MainWnd,TmpRect.Left,TmpRect.Top,614,488,True);

>Не может такого быть для этой функции по крайней мере.
Ну я покрайней мере на 5 машинах тестил, все именно так как есть, я сам с таким первый раз столкнулся, запара полная, просто незнаю что поменять для нормальной работы.


 
alpet ©   (2005-04-29 17:40) [5]

У тебя в коде ошибки, и указанная функция абсолютно не причем. Выложи лучше код который отвечает за перерисовку окна, если таковой есть (обработчик WM_PAINT).


 
MUHAMOR ©   (2005-04-30 08:48) [6]

Процедура перерисовки:

Procedure PaintForm;
Var
 I:Byte;
Begin
MainFonBB.Draw(MainDC,0,0);
If EditWindow Then Begin
 SelectObject(MainDc,MainFonBB.Font);
 SetBkMode(MainDc, Windows.TRANSPARENT);
 SetTextColor(MainDC, $000000);
 TextOut(MainDC,101,41,PChar(TXTEdit),Length(TXTEdit));
 SetTextColor(MainDC, $AAFFAA);
 TextOut(MainDC,100,40,PChar(TXTEdit),Length(TXTEdit));
 SelectObject(MainDc,MainFont);
For I:=1 To 8 Do Begin
 TXT:=EditWND[I].Name;
 SetBkMode(MainDC, Windows.TRANSPARENT);
 SetTextColor(MainDC, $000000);
 TextOut(MainDC,EditWND[I].X+2,EditWND[I].Y-18,PChar(EditWnd[I].Name),Length(EditWnd[I].Name));
 SetTextColor(MainDC, $FFFFFF);
 TextOut(MainDC,EditWND[I].X,EditWND[I].Y-20,PChar(EditWnd[I].Name),Length(EditWnd[I].Name));
 End;
 End;

If FoundWindow Then Begin
 SelectObject(MainDc,MainFonBB.Font);
 SetBkMode(MainDc, Windows.TRANSPARENT);
 SetTextColor(MainDC, $000000);
 TXT:="ÏÎÈÙÅÌ ???";
 TextOut(MainDC,48,401,PChar(TXT),Length(TXT));
 SetTextColor(MainDC, $AAFFAA);
 TextOut(MainDC,48,400,PChar(TXT),Length(TXT));
 SelectObject(MainDc,MainFont);
 TXT:=EditWND[9].Name;
 SetBkMode(MainDC, Windows.TRANSPARENT);
 SetTextColor(MainDC, $000000);
 TextOut(MainDC,EditWND[9].X+2,EditWND[9].Y-18,PChar(EditWnd[9].Name),Length(EditWnd[9].Name));
 SetTextColor(MainDC, $FFFFFF);
 TextOut(MainDC,EditWND[9].X,EditWND[9].Y-20,PChar(EditWnd[9].Name),Length(EditWnd[9].Name));
 TXT:="Ãäå èñêàòü...";
 SetTextColor(MainDC, $000000);
 TextOut(MainDC,291,391,PChar(TXT),Length(TXT));
 SetTextColor(MainDC, $FFFFFF);
 TextOut(MainDC,290,390,PChar(TXT),Length(TXT));
 End;

If FoundDRParam Then Begin
 SetBkMode(MainDC, Windows.TRANSPARENT);
 SelectObject(MainDC,MainFonBB.Font);
 SetTextColor(MainDC, $000000);
 TXT:="Ñåãîäÿ "+ToDay+" èìåíèííèêè:";
 TextOut(MainDC,32,37,PChar(TXT),28);
 SetTextColor(MainDC, $9999FF);
 TextOut(MainDC,30,35,PChar(TXT),28);
 End;
End;

Отрисовка кнопок:

Procedure PaintButton;
Var
 I:Byte;
Begin
MainDC:=GetDC(MainWND);
For I:=1 To TotalButton Do
  If I=SelectButton Then  Begin
      If MouseDown Then Button[I].Pic3.Draw(MainDC,Button[I].X,Button[I].Y)
         Else
         Button[I].Pic2.Draw(MainDC,Button[I].X,Button[I].Y);
      End
      Else
      If Button[I].Visable Then
         Button[I].Pic1.Draw(MainDC,Button[I].X,Button[I].Y);
 ReleaseDC(MainWND,MainDC);
End;

Обработка WM_PAINT:

WM_PAINT  : Begin
           BeginPaint(MainWND,PS);
           MainDC:=PS.hdc;
           PaintForm;
           EndPaint(MainWND,PS);
           PaintButton;
           Result:=0;
           Exit;
           End;

Ну вот вроде все что связано с перерисовкой.



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

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

Наверх




Память: 0.49 MB
Время: 0.058 c
14-1117299118
lookin
2005-05-28 20:51
2005.06.29
Предлагаю послушать песню Ивана Демьяна


4-1115309163
Гость_01
2005-05-05 20:06
2005.06.29
Как запустить программу и получить handle ее окна ?


1-1117719711
Roman_Vladivostok
2005-06-02 17:41
2005.06.29
Как перейти в Memo на первую строчку?


14-1117733614
kaif
2005-06-02 21:33
2005.06.29
Москва и москвичи


1-1117955736
Motion
2005-06-05 11:15
2005.06.29
Проверка значения переменной