[英]DialogBoxParam didn't work on 64-bit platform
我正在將代碼移植到64位平台上,但DialogBoxParam出現問題。它在32位平台上工作正常,但在64位平台上工作不正常。
DialogBoxParam(Hinstance,MAKEINTRESOURCE(DLG_INPUTBOX),owner,@DialogProc,NativeInt(@info))
DLG_INPUTBOX來自資源文件
單位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代碼塊中設置了一個斷點,但是它沒有出現
看看是否有幫助:
我將代碼更改為64位,並遇到了DialogBox Procedures。 我對DialogBoxParam進行的初始化對話框的調用將不再以64位編譯,因此我將過程從返回BOOL更改為返回INT_PTR。
現在,當我運行代碼時,對話框永遠不會顯示。 我在DialogBox Procedure中放置一個斷點,它得到:
WM_SETFONT WM_DESTROY WM_NCDESTROY
消息順序。 我再也沒有收到WM_INITDIALOG消息了!
我對DialogBoxParam的調用返回-1,而GetLastError返回0
我今天有完全一樣的問題。 我發現清單文件具有錯誤的處理器架構。
processorArchitecture =“ x86”
代替
processorArchitecture =“ amd64”
修復該問題后,該對話框將按預期方式彈出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.