VB编程题,救命啊!! 20
二、使用WindowsGDI函数在DC上绘图(1)编写一个Windows应用程序,要求在屏幕上出现一个时钟,该时钟能显示系统当前时间,并实现随时间的流逝而转动。提示-用到...
二、使用Windows GDI函数在DC上绘图
(1)编写一个Windows应用程序,要求在屏幕上出现一个时钟,该时钟能显示系统当前时间,并实现随时间的流逝而转动。
提示-用到相关函数:
获取当前时间的函数
VOID GetLocalTime(
LPSYSTEMTIME lpSystemTime // address of system time structure
);
时间结构体:
typedef struct _SYSTEMTIME { // st
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME;
(2)编写一个Windows应用程序,要求屏幕上显示一个球,该球以与水平成45度夹角做直线运动,当遇到边界时,反弹回来,仍然与水平成45度角继续运动。
三、使用Windows GDI函数实现文本的输出
(1)将一首四句的古诗从右到左竖排逐列输出。
(2)编写程序实现用键盘动态输入文本,要求输入过程中有插字符显示,输入文本长度为最大为10个字符。按向左的箭头键时插字符能向左移动,按向右的箭头键时插字符能向右移动,按回退键时能实现向前删除字符,按Delete键时能实现向后删除字符。
提示-插字符(光标插入点)的相关说明:
①在窗口有输入焦点时显示插字符,没有输入焦点时不显示
case WM_SETFOCUS: //处理活动焦点消息(窗口激活时产生)
{CreateCaret(hWnd,NULL,0,nLnHeight); //创建系统定义的宽度为系统默认,高度为nLnHeight的插字符
SetCaretPos(xCaret,yCaret); //设置插字符左上角的X,Y坐标
ShowCaret(hWnd); //在活动焦点的窗口中显示插字符
}
break;
case WM_KILLFOCUS: //处理失去焦点消息
DestroyCaret();
break;
②在输入字符、删除字符、左右移动的过程中改变插字符的左上角坐标的值,达到移动插字符的目的
四、编写用键盘和鼠标消息控制的Windows应用程序(其中用到资源)
(1)编写一个Windows应用程序,要求窗口上有菜单资源,通过选中不同的菜单项(要求有热键和加速键)可以画线段,画矩形和画椭圆,并有模态对话框对该程序进行介绍。
(2)设计一个打击类游戏程序,要求在屏幕上出现一个随机移动的笑脸,当用鼠标左键点击笑脸时表示被击中,笑脸变为哭脸,并输出提示红色文本“好惨”。最好还可以在屏幕上显示计时和打中次数,但打中次数达到一定数量时,出现“恭喜,挑战成功”字样。(要求:用自己设计的光标和图标)
提示-生成随机数的相关函数用法:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
main()
{
int i;
srand(time(0));/*设置种子,并生成伪随机序列*/
for(i=0;i<N;++i)
printf("%d\n",rand()%9);/*得到[0,8]伪随机数*/
}
不好意思,是VC++ 展开
(1)编写一个Windows应用程序,要求在屏幕上出现一个时钟,该时钟能显示系统当前时间,并实现随时间的流逝而转动。
提示-用到相关函数:
获取当前时间的函数
VOID GetLocalTime(
LPSYSTEMTIME lpSystemTime // address of system time structure
);
时间结构体:
typedef struct _SYSTEMTIME { // st
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME;
(2)编写一个Windows应用程序,要求屏幕上显示一个球,该球以与水平成45度夹角做直线运动,当遇到边界时,反弹回来,仍然与水平成45度角继续运动。
三、使用Windows GDI函数实现文本的输出
(1)将一首四句的古诗从右到左竖排逐列输出。
(2)编写程序实现用键盘动态输入文本,要求输入过程中有插字符显示,输入文本长度为最大为10个字符。按向左的箭头键时插字符能向左移动,按向右的箭头键时插字符能向右移动,按回退键时能实现向前删除字符,按Delete键时能实现向后删除字符。
提示-插字符(光标插入点)的相关说明:
①在窗口有输入焦点时显示插字符,没有输入焦点时不显示
case WM_SETFOCUS: //处理活动焦点消息(窗口激活时产生)
{CreateCaret(hWnd,NULL,0,nLnHeight); //创建系统定义的宽度为系统默认,高度为nLnHeight的插字符
SetCaretPos(xCaret,yCaret); //设置插字符左上角的X,Y坐标
ShowCaret(hWnd); //在活动焦点的窗口中显示插字符
}
break;
case WM_KILLFOCUS: //处理失去焦点消息
DestroyCaret();
break;
②在输入字符、删除字符、左右移动的过程中改变插字符的左上角坐标的值,达到移动插字符的目的
四、编写用键盘和鼠标消息控制的Windows应用程序(其中用到资源)
(1)编写一个Windows应用程序,要求窗口上有菜单资源,通过选中不同的菜单项(要求有热键和加速键)可以画线段,画矩形和画椭圆,并有模态对话框对该程序进行介绍。
(2)设计一个打击类游戏程序,要求在屏幕上出现一个随机移动的笑脸,当用鼠标左键点击笑脸时表示被击中,笑脸变为哭脸,并输出提示红色文本“好惨”。最好还可以在屏幕上显示计时和打中次数,但打中次数达到一定数量时,出现“恭喜,挑战成功”字样。(要求:用自己设计的光标和图标)
提示-生成随机数的相关函数用法:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
main()
{
int i;
srand(time(0));/*设置种子,并生成伪随机序列*/
for(i=0;i<N;++i)
printf("%d\n",rand()%9);/*得到[0,8]伪随机数*/
}
不好意思,是VC++ 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询