打点画线 function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();} #include <windows.h>LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine, int iCmdShow)...{ static TCHAR szAppName[] = TEXT("Bezier"); HWND hwnd; MSG msg; WNDCLASS wndclass; wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = WndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = szAppName; if(!RegisterClass(&wndclass)) ...{ MessageBox(NULL, TEXT("Program requires Windows NT!"), szAppName, MB_ICONERROR); return 0; } hwnd = CreateWindow(szAppName, TEXT("Bezier Splines"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); ShowWindow(hwnd, iCmdShow); UpdateWindow(hwnd); while(GetMessage(&msg, NULL, 0, 0)) ...{ TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam;}LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)...{ static HDC hdc; static HPEN hPen1, hPen2; int cxClient, cyClient; static int nCount = 0; static int crColor = RGB(255, 0, 0); static POINT apt[256]; PAINTSTRUCT ps; switch(message) ...{ case WM_SIZE: cxClient = LOWORD(lParam); cyClient = HIWORD(lParam); hdc = GetDC(hwnd); crColor = RGB(0, 0, 255); hPen1 = CreatePen(PS_SOLID, 5, crColor); crColor = RGB(255, 0, 0); hPen2 = CreatePen(PS_SOLID, 1, crColor); return 0; case WM_LBUTTONDOWN: apt[nCount].x = LOWORD(lParam); apt[nCount].y = HIWORD(lParam); nCount++; SelectObject(hdc, (HGDIOBJ) hPen1); MoveToEx(hdc, LOWORD(lParam), HIWORD(lParam), NULL); LineTo(hdc, LOWORD(lParam), HIWORD(lParam)); return 0; case WM_RBUTTONDOWN: SelectObject(hdc, (HGDIOBJ) hPen2); apt[nCount].x = apt[0].x; apt[nCount].y = apt[0].y; Polyline(hdc, apt, nCount + 1); nCount = 0; return 0; /**//*case WM_PAINT: InvalidateRect(hwnd, NULL, TRUE); hdc = BeginPaint(hwnd, &ps); SetPixel(hdc, mx, my, crColor); EndPaint(hwnd, &ps); return 0;*/ case WM_DESTROY: ReleaseDC(hwnd, hdc); DeleteObject(hPen1); DeleteObject(hPen2); PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, message, wParam, lParam);}一个比较简单的,画线的程序。先用鼠标左键点画点,然后点一下鼠标右键。就会按顺序将这些点用连起来。修改自《Windows程序设计》上的一个例子,刚刚学习Win32 SDK编程时做的代码看起来挺笨拙的。
打点画线
最新推荐文章于 2025-08-09 18:46:25 发布