2008/12/27 Andre Wisplinghoff andre.wisplinghoff@gmail.com:
2008/12/27 Dmitry Timoshkov dmitry@codeweavers.com:
"Andre Wisplinghoff" andre.wisplinghoff@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? INT_PTR is used for other window procs in programs/winecfg/libraries.c, too.
LRESULT is the return type for WndProc functions. HRESULT is used by COM.
The signatures for the other WndProc functions should be fixed too, but in a different patch.
- /* 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);
Should be. However, you should use GWLP_WNDPROC and GWLP_USERDATA instead (http://msdn.microsoft.com/en-us/library/ms644898(VS.85).aspx).
- Reece