看看这个哪里出错了,该怎么处理
看看这个哪里出错了
在左键单击时保存位置到pt[]数组中,
然后在右键单击时,让窗口重绘,
在wm_paint消息中绘制图形.
窗口过程如下:
可是效果却不是我想要的,这是哪里出错了呢?
------解决方案--------------------
pt[nCount].x=LOWORD(lParam);
pt[nCount].y=HIWORD(lParam);
在左键单击时保存位置到pt[]数组中,
然后在右键单击时,让窗口重绘,
在wm_paint消息中绘制图形.
窗口过程如下:
- C/C++ code
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; TCHAR szHello[MAX_LOADSTRING]; static POINT pt[MAXPOINT]; static int nCount=0; int i,j; switch (message) { case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Parse the menu selections: switch (wmId) { case IDM_ABOUT: DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About); break; case IDM_EXIT: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } break; case WM_LBUTTONDOWN: pt[nCount].x=LOWORD(lParam); pt[nCount].y=LOWORD(lParam); SetPixel(hdc,LOWORD(lParam),HIWORD(lParam),RGB(255,0,0)); nCount++; break; case WM_RBUTTONDOWN: InvalidateRect(hWnd,NULL,TRUE); break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // TODO: Add any drawing code here... SetCursor(LoadCursor(NULL,IDC_WAIT)); ShowCursor(TRUE); for (i=0;i<nCount-1;i++) { for (j=i+1;j<nCount;j++) { MoveToEx(hdc,pt[i].x,pt[i].y,NULL); LineTo(hdc,pt[j].x,pt[j].y); } } ShowCursor(FALSE); SetCursor(LoadCursor(NULL,IDC_ARROW)); RECT rt; GetClientRect(hWnd, &rt); EndPaint(hWnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }
可是效果却不是我想要的,这是哪里出错了呢?
------解决方案--------------------
pt[nCount].x=LOWORD(lParam);
pt[nCount].y=HIWORD(lParam);