Форум программистов, компьютерный форум, киберфорум
Delphi: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 18.05.2013
Сообщений: 2
1

Как заставить сделать фигуры статической

19.05.2013, 23:14. Показов 762. Ответов 2
Метки нет (Все метки)

Доброго времени суток , очень нужна ваша помощь с api функциями есть задание . Создать графической приложение при помощи API-функций которое может выводить 8-10 отрезков с разными свойствами толщина , цвет..и т.п. с обязательной перерисовкой граф. объекта при изменении размерность окна или манипуляцией окна ...вот вопрос как заставить граф объект быть статическим т.е. оставаться таким же при первом запуске в окне =), каждый раз у меня изменяется , кодинг не мой, чуток переделал его под себя.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
uses
  windows,
  messages;       //интерфейсные модули
 
{$R *.RES}
var
  MyWin: HWND;    //переменная-дескриптор главного окна
 
function WindowFunc(MyWin: HWND; Mess,wParam,lParam: longint):longint; export; stdcall;
var ps : TPaintStruct;
    i : Integer;
    brush : HBRUSH;
begin
  WindowFunc:=0;
  case Mess of
   WM_DESTROY: begin         //обработчик сообщения
               PostQuitMessage(0);
               Exit;
               end;
 
   WM_Paint: begin          //обработчик события
              BeginPaint(MyWin, ps);
                for i := 0 to 5 do
                begin
                  brush := SelectObject(ps.hdc, CreateSolidBrush(Random($ffffff + 1)));
                    rectangle(ps.hdc,
                      200 + i * 9,
                      200 + i * 9,
                      300 - i * 9,
                      300 - i * 9);
                  DeleteObject( SelectObject(ps.hdc, brush));
                end;
              EndPaint(MyWin, ps);
             end;
  end;
   WindowFunc:=DefWindowProc(MyWin, Mess, wParam, lParam);  //вызов стандартного системного обработчика
  end;
 
procedure WinMain;  //основная функция приложения
var
  Mess: TMsg;      //переменная-сообщение
  MyWClass: TWndClass;  //переменная для описания оконного класса
begin
 
  MyWClass.lpfnWndProc:= @WindowFunc;  //поле-адрес оконной функции
  MyWClass.lpszClassName:= 'MyClass';   //поле-имя оконного класса
  MyWClass.lpszMenuName:= nil;  //поле-меню
  MyWClass.hCursor:= LoadCursor(0,IDC_ARROW);  //поле-тип курсора
  MyWClass.hbrBackground:= Hbrush (COLOR_WINDOW);   //поле-фон окна
  MyWClass.hIcon:= LoadIcon(0, IDI_ASTERISK);    //поле-пиктограмма
  MyWClass.Style:= cs_VRedraw OR cs_HRedraw OR cs_DblClks;
  MyWClass.cbClsExtra:= 0;
  MyWClass.cbWndExtra:= 0;
  MyWClass.hInstance:= hInstance;    //заполнение структуры типа TWNDCLASS
   // регестрируем класс окна
 if RegisterClass(MyWClass)=0 then Exit; //если неудачная регистрация
     //создаем главное окно
  MyWin:= CreateWindow('MyClass', 'Графическое приложение с использованием API-функций ,выполнил : Евгений Мустафаев ',
                         WS_OVERLAPPEDWINDOW,
                         100, 100, 700, 700, 0, 0,
                         hInstance, nil);
 
ShowWindow(MyWin, CmdShow);  //вывод на экран главное окно
  UpdateWindow(MyWin);
  while GetMessage(Mess, 0, 0, 0) do  //цикл обработки сообщений
    begin
     TranslateMessage(Mess);
     DispatchMessage(Mess);
    end;
end;
 
begin
  WinMain;   //запуск приложения
end.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2013, 23:14
Ответы с готовыми решениями:

Как заставить работать кнопку, которая находится на другом объекте (статической панели)?
Подскажите пожалуйста! Не знаю как получить событие от кнопки1. Имеются две кнопки, которая...

Как заставить фигуры двигаться и отталкиваться друг от друга и от стенок формы
Ребят, подскажите плиз, как заставить эти фигуры двигаться и отталкиваться друг от друга и от...

Как сделать MFC статической, а не динамической?
это всё тоже из серии "Не работает exe файл на других компах" я предлагаю засунуть в эту тему все...

Как сделать, чтоб заголовки на статической странице были чем то вроде CUT тегов э
Как сделать, чтоб заголовки на статической странице были чем то вроде CUT тегов этого форума? На...

2
2474 / 1850 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
20.05.2013, 01:07 2
Delphi
1
2
3
4
5
6
7
8
9
10
11
  WM_Paint: 
  begin          //обработчик события
    BeginPaint(MyWin, ps);
    for i := 0 to 5 do
    begin
      brush := SelectObject(ps.hdc, CreateSolidBrush(Random($ffffff + 1)));
      rectangle(ps.hdc, 200 + i * 9, 200 + i * 9, 300 - i * 9, 300 - i * 9);
      DeleteObject( SelectObject(ps.hdc, brush));
    end;
    EndPaint(MyWin, ps);
  end;
Код между BeginPaint и EndPaint вынести в WM_CREATE, где предварительно создаётся битмап и вся отрисовка идёт в него. В WM_PAINT, только копируется этот битмап на канвас окна.
1
0 / 0 / 0
Регистрация: 18.05.2013
Сообщений: 2
20.05.2013, 08:01  [ТС] 3
Ща попробую
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2013, 08:01

Как заставить Bash скрипт сделать 'cd'
Есть путь к файлам -> название одной из промежуточных папок содержит пробелы. Не могу никак...

Как заставить форму сделать переадресацию
Есть код <!DOCTYPE html> <html> <head> <script type="text/javascript"> function f(){...

Как заставить сделать интервал между кликами??
Не умею я с таймером обращаться... Подскажите последовательность действий... Допустим надо чтобы...

Проблема с взаимодействием динамической и статической памяти - обращение к статической переменной
Здравствуйте! Помогите решить проблему! Задача такая: написать сортировку бинарным деревом, так...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.