相关疑难解决方法(0)

如何使AllocateHwnd线程安全?

VCL组件设计为仅从应用程序的主线程使用.对于视觉组件,这从未给我带来任何困难.但是,我有时希望能够使用例如TTimer来自后台线程的非可视组件.或者确实只是创建一个隐藏的窗口.由于依赖,这是不安全的AllocateHwnd.现在,AllocateHwnd我理解的不是线程安全是设计的.

是否有一个简单的解决方案,允许我AllocateHwnd从后台线程使用?

delphi

18
推荐指数
2
解决办法
3288
查看次数

如何将自定义格式剪贴板数据粘贴到TMemo中?

这个问题引用了这个问题以及在stackoverflow上发布的已接受的答案.

我对Windows API编程感到不舒服.

探索方式EasyGPS通过Topografix处理剪贴板操作,我发现它使用了自定义的剪贴板格式命名GPX至极实际上是纯XML文本(GPX要准确).使用Clipboard.AsText被排除在外.

我在这个阶段偶然发现:

program ProbeClipboard;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  Windows,
  ClipBrd;

var
  CF_GPX: Cardinal;
  ClipboardData: THandle;

begin
  CF_GPX:=RegisterClipboardFormat('GPX');

  if ClipBoard.HasFormat(CF_GPX) then
  begin
    Writeln('GPX format available in clipboard');
    //
    OpenClipboard(0);

    ClipboardData := GetClipboardData(CF_GPX);

    if ClipboardData = 0 then
      raise Exception.Create('Clipboard data Error');

    /// How to use GlobalLock and GlobalUnLock
    /// so that I can paste the Clipboard data
    /// to a TMemo instance …
Run Code Online (Sandbox Code Playgroud)

delphi clipboard winapi tmemo gpx

2
推荐指数
1
解决办法
2830
查看次数

标签 统计

delphi ×2

clipboard ×1

gpx ×1

tmemo ×1

winapi ×1