[英]E2010 Incompatible types: 'HWND' and 'TWindowHandle'
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
FMX.Edit, FMX.Controls.Presentation, Windows, IOUtils;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
procedure TForm1.Button1Click(Sender: TObject);
var
Res : Integer;
begin
Res := MessageBox(
Self.Handle
, PChar('Сообщение в окне диалога.')
, PChar('Заголовок окна')
, MB_YESNOCANCEL + MB_ICONINFORMATION
);
case Res of
IDYES : begin
//Действия в случае, когда пользователь нажал кнопку "Да".
end;
IDNO : begin
//Действия в случае, когда пользователь нажал кнопку "Нет".
end;
IDCANCEL : begin
//Действия в случае, когда пользователь нажал кнопку "Отмена".
end;
end;
end;
end.
出现以下错误:
[dcc64 错误] Unit1.pas(34):E2010 不兼容的类型:“HWND”和“TWindowHandle”
[dcc64 致命错误] Project1.dpr(6): F2063 无法编译使用的单元“Unit1.pas”
我该如何解决这些问题?
FMX 中的Self.handle
不是 HWND 类型。 您应该使用WindowHandleToPlatform()
的Wnd
属性将 TWindowHandle 转换为 HWND。 所以您的部分代码将如下所示:
...
Res := MessageBox(
WindowHandleToPlatform(Self.Handle).Wnd
, PChar('Сообщение в окне диалога.')
, PChar('Заголовок окна')
, MB_YESNOCANCEL or MB_ICONINFORMATION
);
更新 1 : WindowHandleToPlatform
function 位于FMX.Platform.Win
单元中。 您应该将其添加到使用条款中。
更新 2:正如评论中提到的@andreas-rejbrand,使用or
代替+
来组合标志
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.