如何使用FMX C ++在任务栏上显示辅助表单?

毛罗阿劳霍

尝试同时在任务栏上显示多个表单时,我遇到了一个小问题。我发现我需要使用以下内容:

WS_EX_APPWINDOW

因此,我搜索了更多内容,然后找到了它:

class TForm2 : public TForm
{
__published:    // IDE-managed Components
private:        // User declarations
public:         // User declarations
        __fastcall TForm2(TComponent* Owner);
        void __fastcall CreateParams(Controls::TCreateParams &Params);

};

void __fastcall TForm2::CreateParams(Controls::TCreateParams &Params)
{
  TForm::CreateParams(Params);
  Params.ExStyle   = Params.ExStyle | WS_EX_APPWINDOW;
  Params.WndParent = ParentWindow;
}

但是,该函数仅适用于VCL(TCreateParams不是Fmx :: Controls的成员)。

因此,我再次搜索了一下,然后找到了它(此函数位于OnCreate表单函数中):

SetWindowLong(Handle, GWL_EXSTYLE, WS_EX_APPWINDOW); 

但是我说错了以下内容:

[bcc32 Error] Codigo.cpp(19): E2034 Cannot convert 'TWindowHandle * const' to 'HWND__ *'
  Full parser context
    Codigo.cpp(18): parsing: void _fastcall TfrmCodigo::FormCreate(TObject *)
[bcc32 Error] Codigo.cpp(19): E2342 Type mismatch in parameter 'hWnd' (wanted 'HWND__ *', got 'TWindowHandle *')
  Full parser context
    Codigo.cpp(18): parsing: void _fastcall TfrmCodigo::FormCreate(TObject *)

您知道其他替代方法吗?从现在开始,如果您能不能帮助我,请多多关照!

雷米·勒博(Remy Lebeau)

您显示的代码段仅适用于VCL。

FireMonkey不允许您像VCL一样自定义窗体的HWND的创建。HWND创建隐藏在FireMonkey内部使用的专用接口(TPlatformWin.CreateWindow())的后面这就是为什么CreateParamsFireMonkey中没有

但是,您仍然可以访问HWND,但只能在创建HWND之后。有一个WindowHandleToPlatform()函数(代替旧的FmxHandleToHWND()函数)和一个FormToHWND函数(WindowHandleToPlatform()内部使用)。所有这些功能都是特定于Windows的,因此,#ifdef如果要编写在多个平台上运行的FireMonkey代码,则必须用来包装它们

试试这个:

#ifdef _Windows
#include <FMX.Platform.Win.hpp>
#endif

...

#ifdef _Windows
//HWND hWnd = FmxHandleToHWND(Form2->Handle);
//HWND hWnd = WindowHandleToPlatform(Form2->Handle)->Wnd;
HWND hWnd = FormToHWND(Form2);
if (hWnd != NULL)
{
    LONG Style = GetWindowLong(hWnd, GWL_EXSTYLE); // <-- don't forget this step!
    SetWindowLong(hWnd, GWL_EXSTYLE, Style | WS_EX_APPWINDOW); 
}
#endif

另请参阅:

Embarcadero WindowHandleToPlatform C ++的示例

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在任务栏上显示图标,而不在表单本身上显示图标?

来自分类Dev

如何使用Winform C#4.5在任务栏中显示进度

来自分类Dev

Telerik RadWindow图标未显示在任务栏上C#WPF

来自分类Dev

如何在任务栏上并排显示相同的窗口

来自分类Dev

如何在任务栏时钟中显示秒?

来自分类Dev

在C ++中使用Win32 Api在任务栏中设置NOTIFY ICON

来自分类Dev

如何在任务栏上仅显示Cortana的“麦克风”图标,而不是搜索字段+麦克风?

来自分类Dev

C#在任务栏缩略图上显示按钮

来自分类Dev

如何使用C#在Windows 10中的任务栏上创建工具栏工具

来自分类Dev

如何使Qt应用程序不显示在任务栏中(X11)

来自分类Dev

如何在任务栏的Windows 10时钟中显示工作日?

来自分类Dev

如何在任务栏上订购同一程序的窗口

来自分类Dev

无论如何移动(交换)通过键盘固定在任务栏上的图标?

来自分类Dev

如何在任务栏中禁用Winamp代理?

来自分类Dev

如何在任务栏中恢复 OneDrive 图标?

来自分类Dev

如何在任务栏中的电池图标上显示电池百分比而无需悬停或单击?

来自分类Dev

如何在任务栏中仅显示活动桌面的应用程序?(Lubuntu 18.10)

来自分类Dev

如何在任务栏中仅显示当前虚拟桌面的数量?(KDE等离子)

来自分类Dev

如何检测任务栏上的单击?

来自分类Dev

如何让任务栏分布在多行上?

来自分类Dev

如何在任务栏上为简单的win32对话框添加图标?

来自分类Dev

Windows 7如何确定哪些进程堆积在任务栏上?(不同的行为取决于Windows安装的语言...)

来自分类Dev

如何在任务栏上的Steam上下文菜单中将应用程序添加到Pinned

来自分类Dev

如何始终在Windows 7任务栏缩略图预览上显示标题?

来自分类Dev

如何在Windows系统任务栏日历上显示星期数?

来自分类Dev

如何在LXDE面板上显示KDE系统任务栏图标?

来自分类Dev

如何在KDE Plasma 5中更改任务栏上窗口的突出显示颜色?

来自分类Dev

如何让 Visual Studio Code 在 Windows 10 的任务栏上显示其图标?

来自分类Dev

在任务栏上显示隐藏的图标

Related 相关文章

  1. 1

    如何在任务栏上显示图标,而不在表单本身上显示图标?

  2. 2

    如何使用Winform C#4.5在任务栏中显示进度

  3. 3

    Telerik RadWindow图标未显示在任务栏上C#WPF

  4. 4

    如何在任务栏上并排显示相同的窗口

  5. 5

    如何在任务栏时钟中显示秒?

  6. 6

    在C ++中使用Win32 Api在任务栏中设置NOTIFY ICON

  7. 7

    如何在任务栏上仅显示Cortana的“麦克风”图标,而不是搜索字段+麦克风?

  8. 8

    C#在任务栏缩略图上显示按钮

  9. 9

    如何使用C#在Windows 10中的任务栏上创建工具栏工具

  10. 10

    如何使Qt应用程序不显示在任务栏中(X11)

  11. 11

    如何在任务栏的Windows 10时钟中显示工作日?

  12. 12

    如何在任务栏上订购同一程序的窗口

  13. 13

    无论如何移动(交换)通过键盘固定在任务栏上的图标?

  14. 14

    如何在任务栏中禁用Winamp代理?

  15. 15

    如何在任务栏中恢复 OneDrive 图标?

  16. 16

    如何在任务栏中的电池图标上显示电池百分比而无需悬停或单击?

  17. 17

    如何在任务栏中仅显示活动桌面的应用程序?(Lubuntu 18.10)

  18. 18

    如何在任务栏中仅显示当前虚拟桌面的数量?(KDE等离子)

  19. 19

    如何检测任务栏上的单击?

  20. 20

    如何让任务栏分布在多行上?

  21. 21

    如何在任务栏上为简单的win32对话框添加图标?

  22. 22

    Windows 7如何确定哪些进程堆积在任务栏上?(不同的行为取决于Windows安装的语言...)

  23. 23

    如何在任务栏上的Steam上下文菜单中将应用程序添加到Pinned

  24. 24

    如何始终在Windows 7任务栏缩略图预览上显示标题?

  25. 25

    如何在Windows系统任务栏日历上显示星期数?

  26. 26

    如何在LXDE面板上显示KDE系统任务栏图标?

  27. 27

    如何在KDE Plasma 5中更改任务栏上窗口的突出显示颜色?

  28. 28

    如何让 Visual Studio Code 在 Windows 10 的任务栏上显示其图标?

  29. 29

    在任务栏上显示隐藏的图标

热门标签

归档