Главная страница
    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.045 c
1-1117740974
Slawutich
2005-06-02 23:36
2005.06.29
Можно ли както сохранить картинку в переменную


14-1117863334
Гость4
2005-06-04 09:35
2005.06.29
Россия-Латвия


6-1112085248
Ves
2005-03-29 12:34
2005.06.29
Автоввод логина и пароля на проксю


1-1118330218
uran
2005-06-09 19:16
2005.06.29
проблема с изменением WindowState в FormActivate после создания


14-1117216020
Человек
2005-05-27 21:47
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский