在左键单击时保存位置到pt[]数组中,
然后在右键单击时,让窗口重绘,
在wm_paint消息中绘制图形.窗口过程如下:
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;
}
可是效果却不是我想要的,这是哪里出错了呢?
然后在右键单击时,让窗口重绘,
在wm_paint消息中绘制图形.窗口过程如下:
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;
}
可是效果却不是我想要的,这是哪里出错了呢?
解决方案 »
- 请问一下有没有朋友编译过射手播放器的源码?谢谢
- GetQueuedCompletionStatus() 怎么返回两次发送完成的通知?
- 急~~CListCtrl怎么显示
- ****向各位高手求救:如何在对话框A中,为对话框B中的控件List control添加内容****
- 各位高手请帮忙!!!!关于线程函数的问题?
- 用GDI+遇到的问题!!!
- 哪位大大讲解一下DLL剥离技术?
- ██ 这玩笑开大了 ██ (续编)
- 怎样给并口发命令,help
- 请告诉我ORCALE 9中文版的下载地址?
- VS2008编译的时候总是上次编译成功的结果,要在哪里去设置啊?哪位好心大哥回复我分全是你的了
- 如何用socket一次发送多个数据,接收时分别处理
pt[nCount].y=HIWORD(lParam);