小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

在一個窗口中央加載一個任意位圖,位圖尺寸為窗口面積的四分之一,當(dāng)單擊鼠標(biāo)左鍵或鍵盤上的向上箭頭時,位圖向上移動,當(dāng)移動到窗口的上邊界時,窗口顯示“不能再向上移動了”字樣,當(dāng)單擊鼠標(biāo)右鍵或鍵盤上的向下箭

 wangprince2017 2018-07-14

南京信息工程大學(xué)  實驗(實習(xí))報告

實驗(實習(xí))名稱資源在基于SDK的程序設(shè)計中的應(yīng)用實驗(實習(xí))日期

 

一、實驗?zāi)康?/span>

1掌握各種資源的應(yīng)用及資源應(yīng)用的程序設(shè)計方法。

 

二、實驗內(nèi)容及步驟

 實驗任務(wù)

1.熟悉菜單資源的創(chuàng)建過程;

2.熟悉位圖資源的創(chuàng)建;

3.熟悉對話框資源的應(yīng)用;

4.熟悉圖標(biāo)資源。

 

 實驗內(nèi)容

   在一個窗口中央加載一個任意位圖,位圖尺寸為窗口面積的四分之一,當(dāng)單擊鼠標(biāo)左鍵或鍵盤上的向上箭頭時,位圖向上移動,當(dāng)移動到窗口的上邊界時,窗口顯示不能再向上移動了字樣,當(dāng)單擊鼠標(biāo)右鍵或鍵盤上的向下箭頭時,位圖向下移動,當(dāng)?shù)竭_(dá)窗口的下邊界時,屏幕顯示不能再向下移動了字樣。

程序代碼:

#include <windows.h>

long WINAPI WndProc(HWND hWnd,UINT iMessage,

UINT wParam,LONG lParam); //消息處理函數(shù)聲明.

BOOL InitWindowsClass(HINSTANCE hInstance); //初始化窗口類聲明

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

HWND hWndMain; //定義窗口句柄

HDC hDC; //定義設(shè)備環(huán)境句柄

HDC hdcmem; //定義內(nèi)存句柄

HBITMAP hBm; //定義位圖句柄

BITMAP bm; //定義位圖結(jié)構(gòu)變量

int iY=80; //位圖左上角初始y坐標(biāo)

int iWindowWidth,iWindowHeight; //窗口的寬度和高度

char cUpWarn[]="不能再向上移動了"; //向上警告字符串

char cDownWarn[]="不能再向下移動了"; //向下警告字符串

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,

LPSTR lpCmdLine,int nCmdShow)

{

MSG Message; //定義消息變量

hBm=LoadBitmap(hInstance,"forest"); //加載位圖

GetObject(hBm,sizeof(BITMAP),(LPVOID)&bm); //獲得位圖信息

iWindowWidth=2*bm.bmWidth; //得到窗口的寬度

iWindowHeight=2*bm.bmHeight; //得到窗口的高度

if(!InitWindowsClass(hInstance)) //初始化窗口類

return FALSE;

if(!InitWindows(hInstance,nCmdShow)) //初始化窗口

return FALSE;

while(GetMessage(&Message,0,0,0))

{

TranslateMessage(&Message); //消息循環(huán)

DispatchMessage(&Message);

}

return Message.wParam;

}

long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)

{

PAINTSTRUCT ps; //定義包含繪圖信息的結(jié)構(gòu)變量

switch(iMessage)

{

case WM_LBUTTONDOWN: //點擊鼠標(biāo)左鍵

iY=iY-10; //位圖高度-10

InvalidateRect(hWnd,NULL,1); //刷新用戶區(qū)

break;

case WM_RBUTTONDOWN: //點擊鼠標(biāo)右鍵

iY=iY+10; //位圖高度+10

InvalidateRect(hWnd,NULL,1); //刷新用戶區(qū)

break;

case WM_KEYDOWN:

switch(wParam)

{

case VK_UP: //按上箭頭時,位置-10

iY=iY-10;

break;

case VK_DOWN: //按下箭頭時,位置+10

iY=iY+10;

break;

}

InvalidateRect(hWnd,NULL,1); //刷新用戶區(qū)

break;

case WM_CREATE: //初始化窗口消息

hDC=GetDC(hWnd); //得到設(shè)備環(huán)境指針

hdcmem=CreateCompatibleDC(hDC); //得到內(nèi)存指針

ReleaseDC(hWnd,hDC); //刪除設(shè)備環(huán)境指針

case WM_PAINT: //處理繪圖消息

hDC=BeginPaint(hWnd,&ps); //得到設(shè)備環(huán)境指針

if(iY>0&&iY<iWindowHeight/2) //當(dāng)位圖完整的在窗口中時

{

SelectObject(hdcmem,hBm); //選入內(nèi)存句柄

BitBlt(hDC,60,iY,bm.bmWidth,bm.bmHeight,hdcmem,0,0,SRCCOPY);//輸出位圖

}

else if(iY<=0) //當(dāng)位圖的上邊界超出了窗口時

{

TextOut(hDC,0,0,cUpWarn,sizeof(cUpWarn)); //輸出警告

}

else //當(dāng)位圖的下邊界超出了窗口時

{

TextOut(hDC,0,0,cDownWarn,sizeof(cDownWarn)); //輸出警告

}

EndPaint(hWnd,&ps); //輸出環(huán)境句柄

break;

case WM_DESTROY: //關(guān)閉窗口消息

DeleteObject(hBm); //刪除內(nèi)存句柄

PostQuitMessage(0);

return 0;

default:

return(DefWindowProc(hWnd,iMessage,wParam,lParam));

}

return 0;

}

BOOL InitWindows(HINSTANCE hInstance, int nCmdShow)

{

HWND hWnd;

hWnd=CreateWindow("BitmapInstance", //窗口類名稱

"位圖顯示實例程序", //標(biāo)題欄名稱

WS_OVERLAPPEDWINDOW, //窗口樣式

CW_USEDEFAULT, //窗口左上角坐標(biāo)

0,

iWindowWidth, //采用自定義的高度和寬度

iWindowHeight,

NULL, //無父窗口

NULL, //無菜單

hInstance, //當(dāng)前應(yīng)用實例句柄

NULL); //指向傳遞給窗口的參數(shù)的指針

if(!hWnd) //創(chuàng)建失敗

return FALSE;

hWndMain=hWnd; //給全局窗口句柄付值

ShowWindow(hWnd,nCmdShow); //顯示窗口

UpdateWindow(hWnd); //刷新用戶區(qū)

return TRUE;

}

BOOL InitWindowsClass(HINSTANCE hInstance)

{

WNDCLASS WndClass;

WndClass.cbClsExtra=0; //無窗口類擴(kuò)展

WndClass.cbWndExtra=0; //無窗口實例擴(kuò)展

WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH)); //背景為白色

WndClass.hCursor=LoadCursor(NULL,IDC_ARROW); //光標(biāo)為為箭頭

WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION); //采用缺省圖標(biāo)

WndClass.hInstance=hInstance; //當(dāng)前實例

WndClass.lpfnWndProc=WndProc; //消息處理函數(shù)

WndClass.lpszClassName="BitmapInstance"; //窗口類名稱

WndClass.lpszMenuName="Menu"; //定義菜單為Menu

WndClass.style=0; //缺省窗口風(fēng)格

return RegisterClass(&WndClass); //返回窗口注冊值

}程序運行結(jié)果

 

 

 

 

三、實驗結(jié)果

  通過本次試驗掌握了各種資源的應(yīng)用及資源應(yīng)用的程序設(shè)計方法,熟悉了菜單資源,位圖資源,對話框資源,以及圖標(biāo)資源的創(chuàng)建和應(yīng)用過程。

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多