"Andre Wisplinghoff" <andre.wisplingh...@gmail.com> wrote: >>> +INT_PTR CALLBACK >>> +comboedit_wndproc (HWND hEdit, UINT uMsg, WPARAM wParam, LPARAM lParam) >> >> INT_PTR is wrong return value type for a window proc. > > so it should be HRESULT?
No. > INT_PTR is used for other window procs in > programs/winecfg/libraries.c, too. INT_PTR is used for dialog procs. >>> + /* subclass dllcombo's edit to allow return keypress handling */ >>> + GetComboBoxInfo(GetDlgItem(dialog, IDC_DLLCOMBO), &cbinfo); >>> + edit = cbinfo.hwndItem; /* retrieve edit box handle */ >>> + oldWndProc = (LONG_PTR)SetWindowLong(edit, GWL_WNDPROC, >>> + (DWORD) comboedit_wndproc); >>> + SetWindowLong(edit, GWL_USERDATA, (DWORD)oldWndProc); >> >> The code is above is not 64-bit safe. > > I'm not used to 64-bit programming but willing to learn. Is using > SetWindowLongPtr enough to make it 64-bit safe?: > > oldWndProc = SetWindowLongPtr(edit, GWL_WNDPROC, > (LONG_PTR) comboedit_wndproc); > SetWindowLongPtr(edit, GWL_USERDATA, (LONG_PTR) oldWndProc); Yes, along with GWLP_WNDPROC. -- Dmitry.