OS X C ++的Windows Postmessage的等价物

时间:2013-05-15 23:42:50

标签: c++ xcode macos lazarus

我有一个用于Windows的c ++ dll,它使用postmessage将消息传递给FPC(Lazarus)应用程序。这是非常简单的东西,因为我是一个非常简单的人。它是adobe photshop SDK的一部分:

extern "C" BASICEXTERNALOBJECT_API long sendMessage(TaggedData* argv, long argc, TaggedData * retval)

{   
    // The returned value type
    retval->type = kTypeString;
    string s (argv[0].data.string);
    int i = (int)(argv[1].data.fltval); 
    retval->data.string = "Not Found";

    std::wstring stemp = s2ws(s);
        LPCWSTR win = stemp.c_str();

    HWND myApp= FindWindow(0,win);

    if (myApp != NULL){
      retval->data.string = "Found it";
      PostMessage(myApp, WM_USER + 1, i,0);

    } 
    return kESErrOK;
}

我正在努力使Lazarus应用程序在OS X上运行 - 这工作正常。我现在需要在XCODE c ++中编译上面的代码来传递一个将由以下FPC代码接收的参数:

procedure TForm1.WndProc(var Message: TLMessage);
var
  mykey : integer;
begin
  inherited;
  case Message.Msg of
    WM_MY_MESSAGE:
      begin
        mykey := Message.WParam;
        if (mykey > 0) and (mykey < 13) then
           myActionFunction(mykey);
      end;
  end;
end; 

有人能指出我在Xcode中如何做到这一点的例子吗?我相信这很容易,但到目前为止谷歌并没有给我太多帮助....

2 个答案:

答案 0 :(得分:0)

您是否尝试在“命令行实用程序”组中打开C ++工具?这样你就可以用C ++构建它而不必转换它

答案 1 :(得分:0)

您现有的源代码仅适用于Windows。

TForm1.WndProc部分代码看起来像Delphi代码,而Delphi VCL框架仅适用于Windows。没有支持交叉编译。

在我看来,唯一可行的解​​决方案是从头开始重写整个应用程序。