powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / WM_USER
11 сообщений из 11, страница 1 из 1
WM_USER
    #39734734
AdamAry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для чего используется константа PROGRESS_POS, что значит +1 и что такое WM_USER?

Код: pascal
1.
2.
3.
4.
5.
const
  PROGRESS_POS = WM_USER+1;

  {$EXTERNALSYM WM_USER}
  WM_USER             = $0400;
...
Рейтинг: 0 / 0
WM_USER
    #39734735
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
WM_USER
    #39734738
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
WM_USER
    #39734739
AdamAry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GunSmoker,
то что я понял это сообщения, определяемые классом: $0400 +1,
а что значит знак $?
...
Рейтинг: 0 / 0
WM_USER
    #39734740
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AdamAry,

всё таки перед тем как браться писать программы стоит хотя бы 'алфавит' изучить :)
...
Рейтинг: 0 / 0
WM_USER
    #39734749
AdamAry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon,
понятно,
$ добавляется для 16 ричных цифр (просто не работал с 16 ричными под Delphi).

PROGRESS_POS равный $0400 +1, для чего используется в ?:
Код: 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.



Особенно смущает строка
Код: pascal
1.
2.
  private
        procedure SetProgressPos(var Msg: TMessage); message PROGRESS_POS;


Что значит message PROGRESS_POS и почему он идёт сразу после SetProgressPos?
...
Рейтинг: 0 / 0
WM_USER
    #39734752
AdamAry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon,
$0400 это 1024 в десятичной системе?
...
Рейтинг: 0 / 0
WM_USER
    #39734768
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AdamArymakhaon,
$0400 это 1024 в десятичной системе?А тебя учили пользоваться калькулятором? Похоже, ты рано в Delphi полез...
...
Рейтинг: 0 / 0
WM_USER
    #39734769
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AdamAryЧто значит message PROGRESS_POS и почему он идёт сразу после SetProgressPos ?
...
Рейтинг: 0 / 0
WM_USER
    #39734918
AdamAry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ma1tus,
вот это объясняет:
http://www.cyberguru.ru/programming/delphi/message-methods.html
...
Рейтинг: 0 / 0
WM_USER
    #39734924
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AdamAryma1tus,
вот это объясняет:
http://www.cyberguru.ru/programming/delphi/message-methods.html
off
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / WM_USER
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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