Windows实验报告第二次实验
Windows实验报告
计算机科学与技术学院 计112 1113022032 康照玲
一、实验一
1、题目:在一个窗口中央加载一个任意位图,位图尺寸为窗口面积的四分之一,当单击鼠标左键或键盘上的向上箭头时,位图向上移动,当移动到窗口的上边界时,在模式对话框中显示“不能再向上移动了”字样;当单击鼠标右键或键盘上的向下箭头时,位图向下移动,当到达窗口的下边界时,在模式对话框中显示“不能再向下移动了”字样;当单击键盘上的向左箭头时,位图向左移动,当移动到窗口的左边界时,在模式对话框中显示“不能再向左移动了”字样;当单击键盘上的向右箭头时,位图向右移动,当移动到窗口的右边界时,在模式对话框中显示“不能再向右移动了”字样。并要求图片在移动到窗口的任意边界时不消失。
2、关键代码分析
首先设置窗口大小,加载位图,获得位图左上角的坐标,在按下上下左右键的时候对相关坐标进行加减,同时建立相关的模式对话框,在对位图进行移动到相关边界时出现相关对话框。
相关代码:
PAINTSTRUCT ps; //定义包含绘图信息的结构变量
switch(iMessage)
{
case WM_KEYDOWN:
switch(wParam)
{
case VK_UP: //按上箭头时,位置-10
iY=iY-10;
break;
case VK_DOWN: //按下箭头时,位置+10
iY=iY+10;
break;
case VK_LEFT: //按左箭头时,位置-10
iX=iX-10;
break;
case VK_RIGHT: //按右箭头时,位置+10
iX=iX+10;
break;
}
InvalidateRect(hWnd,NULL,1);//刷新用户区
break;
case WM_CREATE: //初始化窗口消息
hDC=GetDC(hWnd); //得到设备环境指针
hdcmem=CreateCompatibleDC(hDC); //得到内存指针
ReleaseDC(hWnd,hDC); //删除设备环境指针
case WM_PAINT: //处理绘图消息
hDC=BeginPaint(hWnd,&ps); //得到设备环境指针
if(iX>0&&iX<iWindowWidth/2) //当位图完整的在窗口中时
{
SelectObject(hdcmem,hBm); //选入内存句柄
BitBlt(hDC,iX,iY,bm.bmWidth,bm.bmHeight,hdcmem,0,0,SRCCOPY);//输出位图 }
else if(iX<=0) //当位图的左边界超出了窗口时
{
DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG3),hWnd,(DLGPROC)ModalDlgProc); }
else //当位图的右边界超出了窗口时
{
DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG4),hWnd,(DLGPROC)ModalDlgProc);
}
if(iY>0&&iY<iWindowHeight/2) //当位图完整的在窗口中时
{
SelectObject(hdcmem,hBm); //选入内存句柄
BitBlt(hDC,iX,iY,bm.bmWidth,bm.bmHeight,hdcmem,0,0,SRCCOPY); break; //输出位图 }
else if(iY<=0) //当位图的上边界超出了窗口时
{
DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG1),hWnd,(DLGPROC)ModalDlgProc);
}
else //当位图的下边界超出了窗口时
{
DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG2),hWnd,(DLGPROC)ModalDlgProc); }
EndPaint(hWnd,&ps); //输出环境指针
break;
case WM_DESTROY: //关闭窗口消息
DeleteObject(hBm); //删除内存句柄
PostQuitMessage(0);
return 0;
default:
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
return 0;
3、模式对话框的设置,相关代码如下:
IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 187, 96
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "对话"
FONT 10, "System"
BEGIN
PUSHBUTTON "确定",IDCANCEL,130,82,50,14
LTEXT "不能再向上移动了"IDC_STATIC,50,35,170,10
END
IDD_DIALOG2 DIALOG DISCARDABLE 0, 0, 187, 96
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "对话"
FONT 10, "System"
BEGIN
PUSHBUTTON "确定",IDCANCEL,130,82,50,14
LTEXT "不能再向下移动了"IDC_STATIC,50,35,170,10
END
IDD_DIALOG3 DIALOG DISCARDABLE 0, 0, 187, 96
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "对话"
FONT 10, "System"
BEGIN
PUSHBUTTON "确定",IDCANCEL,130,82,50,14
LTEXT "不能再向左移动了"IDC_STATIC,50,35,170,10
END
IDD_DIALOG4 DIALOG DISCARDABLE 0, 0, 187, 96
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "对话"
FONT 10, "System"
BEGIN
PUSHBUTTON "确定",IDCANCEL,130,82,50,14
LTEXT "不能再向右移动了"IDC_STATIC,50,35,170,10
END
二、实验二
1、题目:建立两套菜单,第一套菜单
:
单击menu2,窗口加载第二套
菜单:给每套菜单的每个菜单项放置热键和加速键,单击menu1后,加载第一套菜单。
2、关键代码分析:
首先设置两套菜单,在窗口中分别加载菜单,在点击相应的菜单选项是出现菜单的转换。在需要点击图形时,设置相关画图标志以及填充颜色标志,点击时出现的相应图形和相应颜色的填充。
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
HBRUSH hbrush;
static BOOL bColorR=FALSE,bColorY=FALSE;
static BOOL bCircle = FALSE,bRect = FALSE; //设置绘制圆和矩形的标志变量 switch (message)
{
case WM_COMMAND:
wmId= LOWORD(wParam);
wmEvent = HIWORD(wParam);
// 分析菜单选择:
switch (wmId)
{
case ID_MENU1:
hmenu1 = LoadMenu(hInst,MAKEINTRESOURCE(IDC_MY7_91)); //得到菜单句柄
SetMenu(hWnd,hmenu1);
DrawMenuBar(hWnd);
bCircle = FALSE; //绘圆标志为假
bRect = FALSE; //绘矩形标志为假 break;
case ID_MENU2:
hmenu2 = LoadMenu(hInst,MAKEINTRESOURCE(IDR_MENU1)); //得到菜单句柄
SetMenu(hWnd,hmenu2);
DrawMenuBar(hWnd);
bCircle = FALSE; //绘圆标志为假
bRect = FALSE; //绘矩形标志为假 break;
case ID_CIRCLE: //绘制圆形
bCircle = TRUE; //绘圆标志为真 bRect = FALSE; //绘矩形标志为假
InvalidateRect(hWnd,NULL,TRUE); //发出刷新信息
break;
case ID_RANGLE: //绘制矩形
bCircle = FALSE; //绘圆标志为假
bRect = TRUE; //绘矩形标志为真
InvalidateRect(hWnd,NULL,TRUE); //发出刷新信息
break;
case ID_RED:
…… 此处隐藏:3449字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [文秘资料]班长职务辞职报告
- [文秘资料]完美的辞职报告
- [文秘资料]经典的员工辞职报告
- [文秘资料]医院口腔医生辞职报告
- [文秘资料]总经理辞职报告范文四篇
- [文秘资料]超市职员个人辞职报告
- [文秘资料]村妇联主任的辞职报告
- [文秘资料]辞职报告书格式
- [文秘资料]酒店辞职报告简单范文
- [文秘资料]联通的辞职报告
- [文秘资料]2017最新私企员工辞职报告范文
- [文秘资料]2019年度医院基层党组织书记抓党建述职
- [文秘资料]工作时间长辞职报告
- [文秘资料]辞职报告怎么写出来
- [文秘资料]个人能力原因辞职报告
- [文秘资料]网络工程师辞职报告
- [文秘资料]项目部辞职报告
- [文秘资料]缝纫工辞职报告怎么写
- [文秘资料]XXX州委书记述职报告
- [文秘资料]抓基层党建工作述职报告
- (王虎应老师讲课记录)六爻理象思维
- 八个常见投影机故障排除法
- 质量专业综合知识(中级)第一章质量管理
- 煤矿班组建设实施意见
- 我国快餐业与肯德基经营模式的比较与分
- 汽车保险杠模具标准化模架技术工艺研究
- 汽车二级维护作业团体赛比赛规程
- 装卸搬运工安全操作规程
- 高效的工作方法-刘铁
- 依据《生产安全事故报告和调查处理条例
- 2015专业PS夜景亮化效果图制作教程
- 企业劳动定额定员浅析
- 中枢神经系统医学影像学本科五年制第五
- 长城汽车参观探营第三站:研发试验中心
- 小升初语文专项训练
- 建筑工程质量检测资质分类与等级标准
- 周燕珉-我国养老社区的发展现状与规划
- 《生命里最后的读书会》读后感
- 实验室管理评审报告
- CCNA思科网院教程精华之网络基础知识




