我正在将我的代码移植到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代码块中设置了断点,但它没有进入
答案 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”
一旦我解决了这个问题,对话框会按预期弹出。