DialogBoxParam无法在64位平台上运行

时间:2014-01-03 04:43:25

标签: delphi 64-bit dialog

我正在将我的代码移植到64位平台。但是我遇到了一个问题,DialogBoxParam.it可以正常使用32位平台而不是64位。我在下面使用它

DialogBoxParam(Hinstance,MAKEINTRESOURCE(DLG_INPUTBOX),owner,@DialogProc,NativeInt(@info))

DLG_INPUTBOX来自资源文件

unit resource_gui;

接口

CONST
  DLG_INPUTBOX = 8810;

  DLG_PROGRESS = 8800;

  DLG_AREYOUSURE = 8809;

  BITMPAT_UNCHECKED = 8804;

  BITMPAT_CHECKED = 8805;
{$R DLGRES.res}

这是dialogpro

  function DialogProc(hwndDlg:HWND;uMsg:UINT ;wParam:WPARAM ;lParam:LPARAM ):NativeInt;stdcall;
  var
    info:Pinfo;
    OldEditValue:String;
    CanClose:boolean;
  begin
    Result := EIINT(0);
    case uMsg of
      WM_INITDIALOG:begin
        setWindowLong(hwndDlg,GWL_USERDATA,lParam);
      end;
      WM_SHOWWINDOW:begin
      .......

我在WM_INITDIALOG代码块中设置了断点,但它没有进入

1 个答案:

答案 0 :(得分:0)

看看这是否有帮助:

DialogBoxParam - works in win32, but doesn‎

  

我一直在将代码更改为64位,并遇到了我的DialogBox程序。我对DialogBoxParam进行初始化对话框的调用将不再以64位编译,因此我将我的过程从返回BOOL更改为返回INT_PTR。

     

现在,当我运行代码时,我的对话框永远不会显示出来。   我在DialogBox过程中设置了一个断点,它得到:

     

WM_SETFONT   WM_DESTROY   WM_NCDESTROY

     按顺序

消息。我再也没有收到过WM_INITDIALOG消息了!

     

我对DialogBoxParam的调用返回-1,GetLastError返回0

  

今天我遇到了同样的问题。我发现我的清单文件与其关联的处理器架构错误。

     

ProcessorArchitecture用于= “86”

     

而不是

     

ProcessorArchitecture用于= “AMD64”

     

一旦我解决了这个问题,对话框会按预期弹出。