风已乏 2021-05-07 18:39 采纳率: 0%
浏览 21

windows程序设计文本动画输出程序有bug

#include<windows.h>
#include<tchar.h>
LRESULT CALLBACK WINAPI WndProc
	(HWND,UINT,UINT,LONG);//窗口函数说明

//WinMain入口函数,完成一系列定义和初始化工作,产生消息循环
int WINAPI WinMain
	(HINSTANCE hInstance,//应用程序当前实例句柄
	HINSTANCE hPrevInstance,//应用程序其他实例句柄
	LPSTR szCmdLine,//指向程序命令行参数的指针
	int iCmdShow)//应用程序开始执行时窗口显示方式的整数值标识

{
	WNDCLASS wndcls;//初始化 窗口类的定义
	//为窗口类各个字段赋值
	wndcls.cbClsExtra = NULL;//分配在窗口类结构后的字节数(窗口类无扩展)
	wndcls.cbWndExtra = NULL;//分配在窗口实例后的字节数(窗口实例无扩展)
	wndcls.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//窗口类的背景刷(白色)
	wndcls.hCursor=  LoadCursor(NULL,IDC_CROSS);//光标
	wndcls.hIcon = LoadIcon(NULL,IDI_APPLICATION);//最小化图标为缺省图标
	wndcls.hInstance = hInstance;//创建窗口的应用程序当前句柄
	wndcls.lpfnWndProc = WndProc;//窗口处理函数为WinProc
	wndcls.lpszClassName = _T("win32");//窗口类名
	wndcls.lpszMenuName = NULL;//窗口中无菜单
	wndcls.style = CS_HREDRAW|CS_VREDRAW;//样式

	//注册窗口类
	RegisterClass(&wndcls);

	//创建窗口类
	HWND hwnd = CreateWindow
		(_T("Win32"),//窗口类名
		_T("文本动画输出"),//窗口标题名
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		NULL,
		NULL,
		hInstance,
		NULL);

	//显示窗口
	ShowWindow(hwnd,iCmdShow);
	UpdateWindow(hwnd);//更新并绘制用户区

	//消息循环
	MSG msg;
	while (GetMessage(&msg,NULL,0,0))//从消息队列中读取一条消息并放在MSG结构中
	{
		TranslateMessage(&msg);//将消息虚拟键转换为字符消息
		DispatchMessage(&msg);//将消息传送到指定窗口
	}
	return msg.wParam;//检测到WM_QUIT消息,程序结束循环并退出
};
LRESULT CALLBACK WINAPI WndProc
	(HWND hwnd,//接收消息的窗口句柄
	UINT iMessage,//消息值
	UINT wParam,
	LONG lParam)
{
	int iFontFlag;
	HDC hDC;			//定义设备环境句柄.
	HFONT hF;			//定义字体句柄.
	PAINTSTRUCT ps;		//定义包含绘图信息的结构体变量
	TEXTMETRIC tm;		//定义包含字体信息的结构体变量.
	char lpsz_1[]="欲穷千里目  更上一层楼";	//定义输出字符串.
	char chFont[7];			//定义包含字体的字符串.
	int X=0,Y=0,nCharlen=strlen(lpsz_1);

	switch(iMessage)
	{
	case WM_CREATE:
		SetTimer(hwnd,1,200,NULL);
		//设定定时器.每0.2秒发出WM_TIMER消息.
		break;
	case WM_TIMER:
		InvalidateRect(hwnd,NULL,1);	//刷新用户区.
		break;
	case WM_PAINT:				//处理绘图消息.
		hDC=BeginPaint(hwnd,&ps);		//获取设备环境指针.
		if(iFontFlag/nCharlen==0)		//设置字体颜色.
		{	SetTextColor(hDC,RGB(255,0,0));
		strcpy(chFont,"楷体");
		}
		else if(iFontFlag/nCharlen==1)
		{	SetTextColor(hDC,RGB(0,255,0));
		strcpy(chFont,"隶书");
		}
		else if(iFontFlag/nCharlen==2)
		{	SetTextColor(hDC,RGB(255,255,0));
		strcpy(chFont,"宋体");
		}
		else if(iFontFlag/nCharlen==3)
		{	SetTextColor(hDC,RGB(0,0,255));
		strcpy(chFont,"黑体");
		}
		else
		{	iFontFlag=0;
		SetTextColor(hDC,RGB(255,0,0));
		}
		//设置字体.
		hF=CreateFont(				//获得字体句柄.
			40,				//字体高度
			0,				//系统自动调整宽度.
			0,				//文本水平
			0,				//字体倾斜度为0
			400,				//字体粗度.400为正常.
			0,				//字体不倾斜.
			0,				//无下划线.
			0,				//无中划线.
			GB2312_CHARSET,		//字符集
			OUT_DEFAULT_PRECIS,	//默认输出精度.
			CLIP_DEFAULT_PRECIS,	//默认裁剪精度
			DEFAULT_QUALITY,		//默认输出质量.
			DEFAULT_PITCH|FF_DONTCARE,//默认间距
			chFont);			//字体名称.
		SelectObject(hDC,hF);			//选入字体.
		GetTextMetrics(hDC,&tm);		//得到字体的信息.
		TextOut(hDC,X,Y,&lpsz_1[iFontFlag%nCharlen],
			nCharlen-iFontFlag%nCharlen);		//输出.
		iFontFlag+=2;	//字体标志自增.
		DeleteObject(hF);		//删除字体.
		EndPaint(hwnd,&ps);		//删除设备环境指针.
		return 0;
	case WM_DESTROY:			//结束.
		PostQuitMessage(0);
		KillTimer(hwnd,1);		//删除定时器.
		return 0;
	default:
		return(DefWindowProc(hwnd,iMessage,wParam,lParam));
	}
	return 0;
};

显示end of file found before the left brace '{' was matched

有没有大佬看一下呜呜呜,万分感谢!

  • 写回答

3条回答 默认 最新

  • CSDN专家-Time 2021-05-07 20:42
    关注

    那应该是语法有问题,建议用编译器定位到语句上查看。

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。