📄 main.cpp
字号:
#include <windows.h>
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
HBITMAP hBm;
BITMAP bm;
HDC hDcmem;
int y=80;
int windowwidth,windowheight;
HDC hDc ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
hBm = (HBITMAP)LoadImage
(hInstance,
"Arraw.bmp",
IMAGE_BITMAP,
0,
0,
LR_LOADFROMFILE|LR_CREATEDIBSECTION
);
GetObject(hBm,sizeof(BITMAP),(LPVOID)&bm);
windowwidth = 2*bm.bmWidth;
windowheight = 2*bm.bmHeight;
static TCHAR szAppName[] = TEXT ("HelloWin") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wc ;
wc.style = 0 ;
wc.lpfnWndProc = WndProc ;
wc.cbClsExtra = 0 ;
wc.cbWndExtra = 0 ;
wc.hInstance = hInstance ;
wc.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wc.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wc.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wc.lpszMenuName = NULL ;
wc.lpszClassName = szAppName ;
if (!RegisterClass (&wc))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}
hwnd = CreateWindow (szAppName,
TEXT ("实验三"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
0,
windowwidth,
windowheight,
NULL,
NULL,
hInstance,
NULL) ;
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps ;
RECT rect ;
switch (message)
{
case WM_CREATE:
hDc = GetDC(hWnd);
hDcmem = CreateCompatibleDC(hDc);
ReleaseDC(hWnd,hDc);
case WM_KEYDOWN:
switch (wParam)
{
case VK_UP: y=y-10;
break;
case VK_DOWN: y=y+10;
break;
}
InvalidateRect(hWnd,NULL,1);
break;
case WM_LBUTTONDOWN:
y = y-10;
InvalidateRect(hWnd,NULL,1);
break;
case WM_RBUTTONDOWN:
y = y+10;
InvalidateRect(hWnd,NULL,1);
break;
case WM_PAINT:
hDc = BeginPaint (hWnd, &ps) ;
GetClientRect (hWnd, &rect) ;
if(y>0&&y<windowheight/2)
{
SelectObject(hDcmem,hBm);
BitBlt(hDc,windowheight/4,y,bm.bmWidth,bm.bmHeight,hDcmem,0,0,SRCCOPY);
}
else if(y<0)
{
TextOut(hDc,0,0,"不能再向上移动了 ",sizeof("不能再向上移动了 "));
y = 0;
}
else
{
TextOut(hDc,0,0,"不能再向下移动了 ",sizeof("不能再向下移动了 "));
y = windowheight/2;
}
EndPaint (hWnd, &ps) ;
return 0 ;
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hWnd, message, wParam, lParam) ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -