Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / WM_USER / 11 сообщений из 11, страница 1 из 1
18.11.2018, 11:13
    #39734734
AdamAry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WM_USER
Для чего используется константа 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
18.11.2018, 11:18
    #39734735
GunSmoker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WM_USER
...
Рейтинг: 0 / 0
18.11.2018, 11:21
    #39734738
GunSmoker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WM_USER
...
Рейтинг: 0 / 0
18.11.2018, 11:23
    #39734739
AdamAry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WM_USER
GunSmoker,
то что я понял это сообщения, определяемые классом: $0400 +1,
а что значит знак $?
...
Рейтинг: 0 / 0
18.11.2018, 11:29
    #39734740
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WM_USER
AdamAry,

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


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