Code source de la cinquième édition de la programmation Windows --- CONNECT

Le code source est le suivant:

#include <windows.h>
#define MAXPOINTS 1000

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
RECT rect;    
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
    
        
	static TCHAR szAppName[] = TEXT ("Connect");    
	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("This program requires Window NT!"), szAppName, MB_ICONERROR);        
    		return 0;    
    	}
    	hwnd = CreateWindow (szAppName, TEXT("Connect-the-Points Mouse Demo"),
    	                        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 POINT    pt[MAXPOINTS];    
	static int      iCount;    
	HDC             hdc;    
	int             i, j;               
	PAINTSTRUCT     ps;        

	switch (message)    
	{
    
        
	case WM_LBUTTONDOWN:        
		iCount = 0;        
		InvalidateRect(hwnd, NULL, TRUE);        
		return 0;        

	case WM_MOUSEMOVE:        
		if(wParam & MK_LBUTTON && iCount < 1000)        
		{
    
                
			pt[iCount].x = LOWORD(lParam);            
			pt[iCount++].y = HIWORD(lParam);                        
			hdc = GetDC(hwnd);            
			SetPixel(hdc, LOWORD(lParam), HIWORD(lParam), 0);            
			ReleaseDC(hwnd, hdc);        
		}        
		return 0;
    	
    	case WM_LBUTTONUP:        
    		InvalidateRect(hwnd, NULL, FALSE);        
    		return 0;        

	case WM_PAINT:        
		hdc = BeginPaint(hwnd, &ps);                
		SetCursor(LoadCursor(NULL, IDC_WAIT));        
		ShowCursor(TRUE);                

		for(i = 0; i < iCount - 1; i++)            
			for(j = i + 1; j < iCount; 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));                

		EndPaint(hwnd, &ps);        
		return 0;        
	case WM_DESTROY:        
		PostQuitMessage(0);        
		return 0;    
	}    	
	return DefWindowProc (hwnd, message, wParam, lParam);
}

Les résultats sont indiqués sur la figure:

Déplacez le pointeur de la souris vers la zone cliente, appuyez sur le bouton gauche, déplacez légèrement la souris, puis relâchez le bouton gauche. Appuyez sur le bouton gauche et déplacez rapidement la souris pour obtenir une courbe qui passe par plusieurs points.

Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/weixin_43574277/article/details/105331322
conseillé
Classement