《可视化编程技术》实验报告实验五

2019-04-08 20:15

实验报告 实验一

《可视化编程技术》实验报告

—— 实验五

一、实验目的和要求

1.了解资源的的概念;

2.熟练掌握菜单资源的创建过程;

3.掌握加速键资源、光标资源、图标资源的创建过程; 二、实验内容 :

问题描述:

在保持实验四程序功能的基础上进行简单扩充。首先,分别取自己姓名中的一个字作为应用程序的图标和光标。其次,为窗口添加主菜单,主菜单上只有一个弹出式菜单“Move(Alt+M为热键)”,下面分别有四个菜单项Up(Ctrl+U为热键,shift+U为加速键)、Down(Ctrl+D为热键,shift+D为加速键)、Left(Ctrl+L为热键,shift+L为加速键)、Right(Ctrl+R为热键,shift+R为加速键),分别实现键上四个方向键所对应的相同功能。所不同的是,当通过菜单的操作将绘制图形移动至窗口边界时,不再弹出提示消息框,而是使相应的菜单项变为灰色,当可再次向窗口边界移动时,相应菜单项变为激活状态。

窗口标题栏写明姓名和学号。

三、程序代码

#include #include #include

实验报告 实验一

#include \

long WINAPI WndProc(HWND hWnd, UINT iMessage, UINT wParam,

LONG lParam);

//消息处理函数声明.

//初始化窗口类声明

BOOL InitWindowsClass(HINSTANCE hInstance);

BOOL InitWindows(HINSTANCE hInstance, int nCmdShow);//初始化窗口声明.

HWND hWndMain; //定义全局窗口句柄. RECT rect1; //定义矩形结构体.记录了图形的信息. RECT ClientRect;

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;

}

long WINAPI WndProc(HWND hWnd,

UINT iMessage, UINT wParam, LONG lParam)

//消息处理函数.

{

HMENU hMenu;

HDC hDC; //定义设备环境句柄. HBRUSH hB1,hB2;

WORD x,y; //定义鼠标的位置坐标.

static BOOL bCircle=FALSE,bRect=FALSE; //设置绘制圆和矩形的标志变

//定义绘图结构体变量. //得到鼠标的位置.

量.

PAINTSTRUCT ps;

x = LOWORD(lParam); y = HIWORD(lParam);

GetClientRect(hWnd,&ClientRect); // 获得窗口大小

实验报告 实验一

static int flag=0;

switch(iMessage) {

case WM_COMMAND:

switch(LOWORD(wParam))

{

case IDM_UP:

rect1.top -=10; rect1.bottom -=10;

if(bRect == TRUE || bCircle == TRUE) {

InvalidateRect(hWnd,NULL,TRUE); //发出重绘信息. {

if(rect1.bottom

hMenu=GetMenu(hWnd);

EnableMenuItem(hMenu,IDM_DOWN,MF_HILITE); CheckMenuItem(hMenu,IDM_DOWN,MF_UNCHECKED); }

if(rect1.top<=0) {

hMenu=GetMenu(hWnd);

EnableMenuItem(hMenu,IDM_UP,MF_GRAYED); CheckMenuItem(hMenu,IDM_UP,MF_CHECKED); } } }

break;

case IDM_DOWN:

rect1.top +=10;

rect1.bottom +=10;

if(bRect == TRUE || bCircle == TRUE)

{

InvalidateRect(hWnd,NULL,TRUE); //发出重绘信息. {

if(rect1.top>0)

{ }

if(rect1.bottom>=ClientRect.bottom) {

hMenu=GetMenu(hWnd);

hMenu=GetMenu(hWnd);

EnableMenuItem(hMenu,IDM_UP,MF_HILITE); CheckMenuItem(hMenu,IDM_UP,MF_UNCHECKED);

实验报告 实验一

EnableMenuItem(hMenu,IDM_DOWN,MF_GRAYED);

CheckMenuItem(hMenu,IDM_DOWN,MF_CHECKED); } } }

break;

case IDM_RIGHT:

rect1.left +=10; rect1.right +=10;

if(bRect == TRUE || bCircle == TRUE) {

InvalidateRect(hWnd,NULL,TRUE); //发出重绘信息. {

if(rect1.left>0)

{

hMenu=GetMenu(hWnd);

EnableMenuItem(hMenu,IDM_LEFT,MF_HILITE); CheckMenuItem(hMenu,IDM_LEFT,MF_UNCHECKED); }

if(rect1.right>=ClientRect.right) {

hMenu=GetMenu(hWnd);

EnableMenuItem(hMenu,IDM_RIGHT,MF_GRAYED); CheckMenuItem(hMenu,IDM_RIGHT,MF_CHECKED); }

} }

break;

case IDM_LEFT:

rect1.left -=10;

rect1.right -=10;

if(bRect == TRUE || bCircle == TRUE)

{

InvalidateRect(hWnd,NULL,TRUE); //发出重绘信息. {

if(rect1.right

{

hMenu=GetMenu(hWnd);

EnableMenuItem(hMenu,IDM_RIGHT,MF_HILITE); CheckMenuItem(hMenu,IDM_RIGHT,MF_UNCHECKED);

}

if(rect1.left<=0) {

实验报告 实验一

}

}

hMenu=GetMenu(hWnd);

EnableMenuItem(hMenu,IDM_LEFT,MF_GRAYED); CheckMenuItem(hMenu,IDM_LEFT,MF_CHECKED); }

break; }

break;

//处理按下鼠标左键消息.

if(wParam&MK_CONTROL) //同时按下Ctrl键时. {

flag=0;

bCircle = TRUE; bRect = FALSE;

//画圆.

//圆的左上角坐标为当前鼠标位置.

case WM_LBUTTONDOWN:

rect1.left = x; rect1.top = y; }

else if(wParam&MK_SHIFT) //同时按下shift键时. {

flag=0;

bRect = TRUE; bCircle = FALSE; rect1.left = x; rect1.top = y;

//画矩形.

//矩形的左上角坐标为当前鼠标位置.

}

break;

case WM_KEYDOWN: switch(wParam) {

case VK_UP: rect1.top -=10;

//按UP键时,向上移动.

rect1.bottom -=10;

if(bRect == TRUE || bCircle == TRUE) {

InvalidateRect(hWnd,NULL,TRUE); //发出重绘信息. {

if(rect1.top<=0) {

MessageBox(hWnd,\已经到达顶点\ } } }

break;


《可视化编程技术》实验报告实验五.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2017年监理员考试判断题(5套题附答案)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: