"Michael Martin" martinmnet@hotmail.com wrote:
+WNDPROC editWndProc;
Should be static.
+static INT_PTR CALLBACK edit_control_wndproc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
INT_PTR is wrong return type for a window proc.
+{
- static int timerCount = 0;
- HGLOBAL cbData;
- LPTSTR lptStrCopy;
- LPARAM mousePos;
- HWND findHwnd;
- RECT winRect;
- ok(msg != WM_COMMAND, "Should not have received WM_COMMAND\n");
- switch(msg)
- {
case WM_TIMER:
switch(timerCount)
{
case 0:
/* Copy some data to clipboard */
cbData = GlobalAlloc(GMEM_MOVEABLE, 5);
lptStrCopy = (TCHAR*)GlobalLock(cbData);
memcpy(lptStrCopy, "test", 4);
OpenClipboard(hwnd);
SetClipboardData(CF_TEXT, cbData);
CloseClipboard();
TCHAR should be never used in Wine. String above is not 0 terminated. A comment explaining that you want to enable some menu item would be helpful as well.
/* Move mouse to upper left of text control */
GetWindowRect(hwnd, &winRect);
SetCursorPos(winRect.left, winRect.top);
mousePos = MAKELPARAM(winRect.left + 20, winRect.top + 20);
/* Show the Context Menu */
PostMessage(hwnd, WM_CONTEXTMENU, (WPARAM)hwnd, mousePos);
break;
case 1:
case 2:
case 3:
case 4:
/* Find the menu window and send keydown */
findHwnd = FindWindowEx(NULL, NULL, MAKEINTATOM(0x8000), NULL);
PostMessage(findHwnd, WM_KEYDOWN, VK_DOWN,0);
break;
case 5:
/* Find the menu window and send return, selecting the menu item */
findHwnd = FindWindowEx(NULL, NULL, MAKEINTATOM(0x8000), NULL);
PostMessage(findHwnd, WM_KEYDOWN, VK_RETURN,0);
break;
You should use the menu notification messages instead of FindWindowEx above.
- editWndProc = (WNDPROC)SetWindowLong(hwEdit, GWL_WNDPROC,(LONG)edit_control_wndproc);
SetWindowLongPtr() should be used here with appropriate GWLP_ value.
If the test doesn't pass under Wine you sould use todo_wine().