Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.035 c
14-1117699904
REA
2005-06-02 12:11
2005.06.29
А хорошо ли это?


14-1117701386
quickblack
2005-06-02 12:36
2005.06.29
А как войти на форум под своим ником?


14-1117366399
sofs
2005-05-29 15:33
2005.06.29
JBuilder


5-1087896935
Ярослав
2004-06-22 13:35
2005.06.29
Компоненты как в Win XP


14-1117371273
Hypercube
2005-05-29 16:54
2005.06.29
Создание пиринговых сетей нового поколения





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