抄了个windows程序,可是把生成的exe程序关了之后,在任务管理其中依然还存在
它的进程,该怎么改一下啊?(出学,不要搞的很复杂啊)
#include <windows.h>
#include <stdlib.h>
#include <math.h>
const double Pi = 3.1415926;
LRESULT CALLBACK WndProc(//窗口过程函数
HWND hWnd,
UINT iMesssage,
WPARAM wParam,
LPARAM lParam
);
double dfTheta = 0, dfRange = 100; //正弦曲线的角度变量
long i = 0, j =0;
long lCenterX=0,lCenterY=0,lRadious=(long)(0.2*dfRange); //定义圆心坐标和半径
POINT lpSin[100]; //定义正弦曲线的点坐标
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
WNDCLASS WndClass;
WndClass.cbClsExtra = 0;
WndClass.cbWndExtra = 0;
WndClass.hbrBackground = (HBRUSH)(GetStockObject(WHITE_BRUSH));
WndClass.hCursor = LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
WndClass.hInstance = hInstance;
WndClass.lpfnWndProc = WndProc;
WndClass.lpszClassName = "SIN";
WndClass.lpszMenuName = NULL;
WndClass.style = 0;
if(!RegisterClass(&WndClass))
{
MessageBeep(0);
return FALSE;
}
HWND hWnd;
hWnd = CreateWindow("SIN","移动的圆",WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,0,
CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
for(int j=0;j<100;j++) //生成正弦曲线的点坐标
{
lpSin[j].x = (long)(j*2*Pi/100*60);
lpSin[j].y = (long)(dfRange*sin(j*2*Pi/100));
}
MSG Message;
while(GetMessage(&Message,hWnd,0,0))
{
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}
LRESULT CALLBACK WndProc(
HWND hWnd,
UINT iMessage,
WPARAM wParam,
LPARAM lParam
)
{
switch(iMessage)
{
case WM_PAINT:
HBRUSH hBrush;
HDC hDC;
PAINTSTRUCT PtStr;
hDC = BeginPaint(hWnd,&PtStr);
SetWindowOrgEx(hDC,-200,-200,NULL); //设置圆点坐标为(-200,-200)
HPEN hPen;
hPen = CreatePen(PS_DASH,1,RGB(255,0,0));
SelectObject(hDC,hPen);
Polyline(hDC,lpSin,100); //绘制正弦曲线
if(i<25) //第一个1/4周期
{
hPen = CreatePen(PS_DASH,1,RGB(255,0,0)); //创新红画笔
hBrush = CreateHatchBrush(HS_BDIAGONAL,RGB(255,0,0)); //创新红画刷
lRadious = (long)(dfRange*0.2+i%25*dfRange*0.4/25); //计算半径
}
else if(i<=50) //第二个1/4个周期
{
hPen = CreatePen(PS_DASH,1,RGB(0,255,0)); //创新绿画笔
hBrush = CreateHatchBrush(HS_BDIAGONAL,RGB(0,255,0)); //创新绿画刷
lRadious = (long)(dfRange*0.2+i%25*dfRange*0.4/25); //计算半径
}
else if(i<=75) //第三个1/4个周期
{
hPen = CreatePen(PS_DASH,1,RGB(0,0,255)); //创蓝绿画笔
hBrush = CreateHatchBrush(HS_BDIAGONAL,RGB(0,0,255)); //创新绿画刷
lRadious = (long)(dfRange*0.2+i%25*dfRange*0.4/25); //计算半径
}
else //第二个1/4个周期
{
hPen = CreatePen(PS_DASH,1,RGB(255,255,0)); //创新黄画笔
hBrush = CreateHatchBrush(HS_BDIAGONAL,RGB(255,255,0)); //创新黄画刷
lRadious = (long)(dfRange*0.2+i%25*dfRange*0.4/25); //计算半径
}
SelectObject(hDC,hBrush);
SelectObject(hDC,hPen);
lCenterX = lpSin[i].x; //圆心x坐标
lCenterY = lpSin[i].y;
Ellipse(hDC,lCenterX-lRadious,lCenterY-lRadious,
lCenterX+lRadious,lCenterY+lRadious);
i++;
DeleteObject(hPen); //删除画笔
DeleteObject(hBrush);
EndPaint(hWnd,&PtStr); //删除设备环境指针
Sleep(100); //挺0。1秒
if(i<100) InvalidateRect(hWnd,NULL,1); //刷新用户区
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
}
[解决办法]
- C/C++ code
while(GetMessage(&Message,hWnd,0,0)) { TranslateMessage(&Message); DispatchMessage(&Message); }