clearjun 2014-10-14 08:07 采纳率: 0%
浏览 815

刚刚抄的一个c++画图程序,编译通过无法运行,感谢各位指教,虚心学习

#include
#include
#include
#include
#define pi 3.1415926

long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam);
bool InitWindowsClass(HINSTANCE hIntance);
bool InitWindows(HINSTANCE hInstance,int nCmdShow);

double deTheta=0,dfRange=100.0;//正弦曲线的角度变量
long i=0,j=0;
long lCentreX=0,lCenterY=0,lRadious=(long)(0.2*dfRange);
POINT lpSin[100];
HWND hWndMain;

int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{MSG Message;
if(!InitWindowsClass(hInstance))
return FALSE;
if(!InitWindows(hInstance,nCmdShow))
return FALSE;
//..........消息循环
while(GetMessage(&Message,0,0,0))
{
TranslateMessage(&Message);
DispatchMessage(&Message);
}//............消息循环}
return Message.wParam;
}

//......定义WinProc函数........
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)
{
HDC hDC;//定义设备环境句柄
HBRUSH hBrush;
HPEN hPen;
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));
}
PAINTSTRUCT PtStr;//定义包含绘图信息的结构体变量
switch(iMessage)
{
case WM_PAINT:{ //处理绘图信息
hDC=BeginPaint(hWnd,&PtStr);//获取设备环境指针
SetWindowOrgEx(hDC,-200,-200,NULL);//设置原点
hPen=CreatePen(PS_DASH,1,RGB(255,0,0));
SelectObject(hDC,hPen);
Polyline(hDC,lpSin,100);//绘制正弦曲线
//第一个四分之一周期
if(i<=25)
{
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)
{
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)
{
hPen=CreatePen(PS_DASH,1,RGB(0,0,225));
hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(0,0,225));
lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);
}
//第四个周期
else if(i<=100)
{
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);
long lCentreX=0,lCentreY=0;
lCentreX=lpSin[i].x;
lCentreY=lpSin[i].y;
Ellipse(hDC,lCentreX-lRadious,lCentreY-lRadious,lCentreX+lRadious,lCentreY+lRadious);//画图
i++;
DeleteObject(hPen);
DeleteObject(hBrush);
EndPaint(hWnd,&PtStr);//删除设备指针
Sleep(100);
if(1<100)InvalidateRect(hWnd,NULL,1);//刷新用户区
return 0;
}
case WM_DESTROY:{
PostQuitMessage(0);
return 0;
}
default:
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}}

bool InitWindows(HINSTANCE hInstance,int nCmdShow)
{
HWND hWnd;
hWnd=CreateWindow("WinFill","填充程序",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);
if(!hWnd)
return FALSE;
hWndMain=hWnd;
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
return true;
}
bool InitWindowsClass(HINSTANCE hInstance) //定义窗口类
{WNDCLASS WndClass;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon=LoadIcon(NULL,"END");
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=WndProc;
WndClass.lpszClassName="WinFill";
WndClass.lpszMenuName=NULL;
WndClass.style=CS_HREDRAW|CS_VREDRAW;
return RegisterClass(&WndClass);
}

  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-03-24 19:49
    关注

    该回答引用ChatGPT-3.5

    该程序存在一些问题,无法运行。以下是我发现的一些问题:

    • 缺少头文件。程序需要以下头文件:windows.h, stdlib.h, math.h。

    • 缺少WinMain函数的返回值。应该在WinMain函数中加上return 0;语句。

    • 变量没有初始化。在WndProc函数中,hBrush和hPen变量应该在第一次使用前进行初始化。

    • 没有为每个CreatePen和CreateHatchBrush调用DeleteObject。应该在使用完画笔和画刷后调用DeleteObject函数,以避免内存泄漏。

    • InitWindowsClass函数的WndClass.style没有初始化。应该将其初始化为CS_HREDRAW | CS_VREDRAW,以便在窗口改变大小时自动重绘。

    另外,程序中存在一些不严谨的做法,例如变量名重复,变量作用域不清晰等,应该进行优化。同时,在画图时,应该在WM_PAINT消息处理中处理绘图相关的操作,而不是在循环中绘图。

    评论

报告相同问题?

悬赏问题

  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀