Home > Software engineering >  Win32 draw a straight line
Win32 draw a straight line

Time:09-27

#include

# include & lt; stdio.h>

LRESULT a CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);

The ATOM MyWindowsClass (HINSTANCE HINSTANCE);

The HWND Create (HINSTANCE HINSTANCE, int nCmdShow);

Void MyDrawLine (HWND HWND, HDC HDC);

Int GetMousePos_x (int mousePos_x);

Int GetMousePos_y (int mousePos_y);

int i=1;
///////////////////////////////////////////////////
Int APIENTRY WinMain (HINSTANCE HINSTANCE,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
Int nCmdShow)
{
DWORD dwTime=1000, dwOldTime=0;

MSG MSG.

MyWindowsClass (hInstance);

The HWND HWND;

HWnd=the Create (hInstance, nCmdShow);



While (GetMessage (& amp; MSG, NULL, 0, 0))
{
TranslateMessage (& amp; MSG);
DispatchMessage (& amp; MSG);

}

Return MSG. WParam;
}
///////////////////////////////////////////////////////////////////
The ATOM MyWindowsClass (HINSTANCE HINSTANCE)
{
Modifed WNDCLASSEX wcex;

Wcex. CbSize=sizeof (modifed WNDCLASSEX);

Wcex. Style=CS_HREDRAW | CS_VREDRAW;
WNDPROC wcex. LpfnWndProc=(WNDPROC);
Wcex. CbClsExtra=0;
Wcex. CbWndExtra=0;
Wcex. HInstance=hInstance;
Wcex. HIcon=LoadIcon (NULL, IDI_APPLICATION);
Wcex. HCursor=LoadCursor (NULL, IDC_ARROW);
Wcex. HbrBackground=(HBRUSH) (COLOR_WINDOW + 1);
Wcex. LpszMenuName=NULL;
Wcex. LpszClassName="MyFirstWindow";
Wcex. HIconSm=LoadIcon (NULL, IDI_APPLICATION);

Return RegisterClassEx (& amp; Wcex);
}
//////////////////////////////////////////////////////////////////////////////
The HWND Create (HINSTANCE HINSTANCE, int nCmdShow)
{
The HWND HWND;
HWnd=CreateWindow (" MyFirstWindow, "
"My Windows," WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
0,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
HInstance,
NULL);

if (! HWnd)
{
return FALSE;
}

ShowWindow (hWnd, nCmdShow);
UpdateWindow (hWnd);
Return the hWnd;
}
////////////////////////////////////////////////////////////////////////////////
LRESULT a CALLBACK WndProc (HWND HWND, UINT message, WPARAM WPARAM, LPARAM LPARAM)
{
Static int xBeg yBeg, xEnd, yEnd;
PAINTSTRUCT ps;
Int mousePos_x mousePos_y;
Int x [10000], [10000] y;
X [0]=0;
Y [0]=0;
HDC HDC.
Char c [256];
//int x=100;


The switch (the message)
{
Case WM_LBUTTONDOWN:

MousePos_x=LOWORD (lParam);
MousePos_y=HIWORD (lParam);
HDC=GetDC (hWnd);


[I]=x GetMousePos_x (mousePos_x);
[I] y=GetMousePos_y (mousePos_y);


//x=200;
//output the location of the mouse point
//itoa (I, c, 10);
//TextOut (HDC, 100200 c, strlen (c));
MoveToEx (HDC, 0, 0, NULL);
LineTo (HDC, x [2], [2] y);

Itoa (x [2], c, 10);
TextOut (HDC, 100200 c, strlen (c));

HDC=GetDC (hWnd);

I=I + 1;
break;
//case WM_PAINT:

Case WM_DESTROY:
The PostQuitMessage (0);
break;
Default:
Return DefWindowProc (hWnd, message, wParam, lParam);
}
return 0;
}

Int GetMousePos_x (int mousePos_x)
{
Int a, [10000].
A [I]=mousePos_x;
Return a [I];
}

Int GetMousePos_y (int mousePos_y)
{
Int b [10000];
B [I]=mousePos_y;
Return b [I];
}


Now reached from (0, 0) to the location of the mouse click form a straight line, the problem is to the mouse to click next, click continue from the end of the last place to new place, the problem is the point of a mouse coordinates as if can only be saved in when the time the mouse to click, click next time to refresh, inquired how to achieve this effect

CodePudding user response:

Change the

 
#include
# include & lt; Tchar. H>
# include & lt; stdio.h>

LRESULT a CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);

The ATOM MyWindowsClass (HINSTANCE HINSTANCE);

The HWND Create (HINSTANCE HINSTANCE, int nCmdShow);

Void MyDrawLine (HWND HWND, HDC HDC);

Int GetMousePos_x (int mousePos_x);

Int GetMousePos_y (int mousePos_y);

int i=1;
///////////////////////////////////////////////////
Int APIENTRY WinMain (HINSTANCE HINSTANCE,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
Int nCmdShow)
{
DWORD dwTime=1000, dwOldTime=0;

MSG MSG.

MyWindowsClass (hInstance);

The HWND HWND;

HWnd=the Create (hInstance, nCmdShow);



While (GetMessage (& amp; MSG, NULL, 0, 0))
{
TranslateMessage (& amp; MSG);
DispatchMessage (& amp; MSG);

}

Return MSG. WParam;
}
///////////////////////////////////////////////////////////////////
The ATOM MyWindowsClass (HINSTANCE HINSTANCE)
{
Modifed WNDCLASSEX wcex;

Wcex. CbSize=sizeof (modifed WNDCLASSEX);

Wcex. Style=CS_HREDRAW | CS_VREDRAW;
WNDPROC wcex. LpfnWndProc=(WNDPROC);
Wcex. CbClsExtra=0; nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
  • Related