Главная страница
    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.04 c
6-1112244581
Илья
2005-03-31 08:49
2005.06.29
Операционная система


14-1117551392
quickblack
2005-05-31 18:56
2005.06.29
накрылся русский язык в MS Internet Explorer


9-1111248448
Fosgen
2005-03-19 19:07
2005.06.29
Возможно ламерский вопрос по GLScene


1-1117524040
BKV
2005-05-31 11:20
2005.06.29
Приложение в сервис.


3-1116440985
Сергей2345
2005-05-18 22:29
2005.06.29
Поможет ли Delfi?





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