|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2017/9/21 19:56:52 |
标题: |
Multi-Device Application 在win32下不能接收消息 |
浏览:1396 |
|
加入我的收藏 |
楼主: |
同样的代码在VCL下就可以接收自定义消息。 请问如何在Multi-Device Application下接收。 谢谢 Multi-Device Application 可以发。
----------------------------------------------
- |
作者: |
|
2017/9/21 20:12:22 |
1楼: |
procedure wmme(var message:TMessage);message My_message; procedure DefaultHandler(var Message); override; 前两种没有反应 procedure WndProc(var Message: TMessage); override; 这种提示[dcc32 Error] Unit1.pas(17): E2137 Method 'WndProc' not found in base class
----------------------------------------------
-
|
作者: |
|
2017/9/22 7:22:15 |
2楼: |
Multi-Device Application已经不支持这种消息传递机制了。 procedure wmme(var message:TMessage);message My_message;这种方式是windows下特有的,而Multi-Device Application是跨平台的,所以肯定不支持。
----------------------------------------------
-
|
作者: |
|
2017/9/22 8:46:32 |
3楼: |
消息机制是windows系统特有的,你见过Linux有消息?
----------------------------------------------
-只会复制粘贴!
|
作者: |
|
2017/9/22 9:12:58 |
4楼: |
fmx有一套自己的消息处理机制。类似这样:
unit Unit1;
interface
uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Presentation.Messages, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.StdCtrls;
type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } FMessageSender: TMessageSender; public { Public declarations } procedure DefaultHandler(var Message); override; end;
var Form1: TForm1;
implementation
{$R *.fmx}
procedure TForm1.Button1Click(Sender: TObject); begin FMessageSender.SendMessage(10, 'aaa'); end;
procedure TForm1.DefaultHandler(var Message); begin inherited; ShowMessage(TDispatchMessage(Message).MsgID.ToString()); ShowMessage(TDispatchMessageWithValue<String>(Message).Value); end;
procedure TForm1.FormCreate(Sender: TObject); begin FMessageSender := TMessageSender.Create(); FMessageSender.Receiver := Self; end;
procedure TForm1.FormDestroy(Sender: TObject); begin FMessageSender.DisposeOf(); end;
end.
----------------------------------------------
--
|
作者: |
|
2017/9/22 14:10:36 |
5楼: |
fmx 的 窗体其实是可以进行消息处理的,前提是你能找在哪里写代码。 FMX 官方源码,你要是认真看过,就不会这种低级问题了。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
janker (janker) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2017/9/22 17:51:02 |
6楼: |
fmx下,处理消息很方便的,可以在2个实例间传递消息,参考System.Messaging,也支持VCL下的,就是发布/订阅模式。 以下是帮助的内容:
unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls, System.Messaging, FMX.Edit; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm1; implementation {$R *.fmx} procedure TForm1.Button1Click(Sender: TObject); var MessageManager: TMessageManager; Message: TMessage; begin MessageManager := TMessageManager.DefaultManager; Message := TMessage<UnicodeString>.Create(Edit1.Text); MessageManager.SendMessage(Sender, Message, True); end; procedure TForm1.FormCreate(Sender: TObject); var SubscriptionId: Integer; MessageManager: TMessageManager; begin MessageManager := TMessageManager.DefaultManager; SubscriptionId := MessageManager.SubscribeToMessage(TMessage<UnicodeString>, procedure(const Sender: TObject; const M: TMessage) begin ShowMessage((M as TMessage<UnicodeString>).Value); end); end; end.
----------------------------------------------
-
|
作者: |
|
2017/9/22 20:45:29 |
7楼: |
谢谢!
----------------------------------------------
-
|
作者: |
|
2017/9/25 13:26:53 |
8楼: |
我实践了一下,直接上demo,您自己看着用。上面2位的代码都用了。
----------------------------------------------
Delphi 的移动程序开发,是您不可再错失的机遇:http://blog.163.com/you888@188/blog/static/6723961920169319529515/
|
作者: |
|
2017/9/29 20:55:45 |
10楼: |
这个搞得成。亲试 http://tieba.baidu.com/p/1652569885
----------------------------------------------
-
|
|