powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / message PROGRESS_POS
7 сообщений из 7, страница 1 из 1
message PROGRESS_POS
    #39734737
AdamAry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что такое message PROGRESS_POS; в приватной секции объявлений?:
Код: pascal
1.
2.
  private
        procedure SetProgressPos(var Msg: TMessage); message PROGRESS_POS;
...
Рейтинг: 0 / 0
message PROGRESS_POS
    #39734753
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AdamAry,

Он будет вызван, если данному окну будет послано такое сообщение. RTFM о посылке/ обработке сообщений.
...
Рейтинг: 0 / 0
message PROGRESS_POS
    #39734754
AdamAry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad F,
"данному окну" это какому окну?:
Код: pascal
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.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, XPMan, SyncObjs;

const
  PROGRESS_POS = WM_USER+1;

type
  TForm1 = class(TForm)
    Button2: TButton;
    ProgressBar2: TProgressBar;
    Button3: TButton;
    ProgressBar3: TProgressBar;
    Button4: TButton;
    ProgressBar4: TProgressBar;
    XPManifest1: TXPManifest;
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
        procedure SetProgressPos(var Msg: TMessage); message PROGRESS_POS;
  public
    { Public declarations }
  end;

  // Для показа примеров я создам
  // 3 разных класса, наследника TThread

  TSyncThread = class(TThread)
  private
    Progress: integer;
    procedure SetProgress;
  protected
    procedure Execute; override;
  end;

  TMessageThread = class(TThread)
  private
  protected
    procedure Execute; override;
  end;

  TCriricalThread = class(TThread)
  private
  protected
    procedure Execute; override;
  end;

var
  Form1: TForm1;
  CriticalSection: TCriticalSection;

implementation

{$R *.dfm}

{ TSyncThread }

procedure TSyncThread.Execute;
var
  i: integer;
begin
  for i:=0 to 100 do
  begin
    sleep(50);
    Progress:=i;
    Synchronize(SetProgress);
  end;
end;

procedure TSyncThread.SetProgress;
begin
  Form1.ProgressBar2.Position:=Progress;
end;

{ TMessageThread }

procedure TMessageThread.Execute;
var
  i: integer;
begin
  for i:=0 to 100 do
  begin
    sleep(50);
    // в WParam передаём, какой ProgressBar крутить
    SendMessage(Form1.Handle,PROGRESS_POS,0,i);
  end;
end;

{ TCriricalThread }

procedure TCriricalThread.Execute;
var
  i: integer;
begin
  CriticalSection.Enter;
  for i:=0 to 100 do
  begin
    sleep(50);
    // в WParam передаём, какой ProgressBar крутить
    SendMessage(Form1.Handle,PROGRESS_POS,1,i);
  end;
  CriticalSection.Leave;
end;


{ TForm1 }

procedure TForm1.SetProgressPos(var Msg: TMessage);
begin
  case Msg.WParam of
    0: ProgressBar3.Position:=Msg.LParam;
    1: ProgressBar4.Position:=Msg.LParam;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  SyncThread: TSyncThread;
begin
  SyncThread:=TSyncThread.Create(true);
  SyncThread.FreeOnTerminate:=true;
  SyncThread.Priority:=tpLower;
  // SyncThread.Resume;
  SyncThread.Start;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  MessageThread: TMessageThread;
begin
  MessageThread:=TMessageThread.Create(true);
  MessageThread.FreeOnTerminate:=true;
  MessageThread.Priority:=tpLower;
  // MessageThread.Resume;
  MessageThread.Start;
end;

procedure TForm1.Button4Click(Sender: TObject);
var
  CriricalThread: TCriricalThread;
begin
  CriricalThread:=TCriricalThread.Create(true);
  CriricalThread.FreeOnTerminate:=true;
  CriricalThread.Priority:=tpLower;
  // CriricalThread.Resume;
  CriricalThread.Start;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   CriticalSection:=TCriticalSection.Create;
end;

end.

...
Рейтинг: 0 / 0
message PROGRESS_POS
    #39734756
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AdamAry,

Данному, это тому экземпляру TForm1, с использованием Handle которого будет вызван SendMessage().
...
Рейтинг: 0 / 0
message PROGRESS_POS
    #39734757
AdamAry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad F,

а что значимт 0 и 1 в ?:
Код: pascal
1.
2.
3.
SendMessage(Form1.Handle,PROGRESS_POS,0,i);
...
SendMessage(Form1.Handle,PROGRESS_POS,1,i);




всё равно не до конца понятно
Код: pascal
1.
 procedure SetProgressPos(var Msg: TMessage); message PROGRESS_POS;


это что ?:
Код: pascal
1.
procedure SetProgressPos(var Msg: TMessage);


жёстко привязано (или связано) с ?:
Код: pascal
1.
procedure SetProgressPos(var Msg: TMessage);



и вообще как это связано с запуском?:
Код: pascal
1.
SendMessage
...
Рейтинг: 0 / 0
message PROGRESS_POS
    #39734760
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AdamAry,

Заглянул в сеседние темы и начинаю догадываться. Украл чужой курсовик и не в состоянии переварить.
...
Рейтинг: 0 / 0
message PROGRESS_POS
    #39734761
AdamAry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad F,
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1370
авторначинаю догадываться
переварим всё.

Кстати этот пример как раз даёт утечку leak если нажимать на все кнопки подряд много раз, это зависание снимается только CTRL+F2.

Мне нужно понять и искусственно вызвать утечку памяти для потока, без многократных нажатий кнопок, у тебя нет такого рода "курсовика"?
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / message PROGRESS_POS
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]