📄 课程设计2.cpp
字号:
#include<windows.h>
#include <commdlg.h>
#include"resource.h"
HINSTANCE hinst;
BOOL CALLBACK DlgProc(HWND,UINT,WPARAM,LPARAM);
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hprevlnst,LPSTR lpszcmdline,int ncmdshow)
{HWND hwnd;
MSG msg;
WNDCLASS wndclass;
char classname[]="窗口实例";
char classtitle[]="我的窗口";
wndclass.style =0;
wndclass.lpfnWndProc=WndProc;
wndclass.cbClsExtra =0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hinstance;
wndclass.hIcon=LoadIcon(NULL,(LPCSTR)IDI_ICON1);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName=(LPCSTR)IDR_MENU1;
wndclass.lpszClassName=classname;
if(!RegisterClass(&wndclass))
{MessageBeep(0);
return FALSE;
}
hwnd=CreateWindow(classname,classtitle,WS_OVERLAPPEDWINDOW|WS_HSCROLL|WS_VSCROLL,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hinstance,NULL);
ShowWindow(hwnd,ncmdshow);
UpdateWindow(hwnd);
hinst=hinstance;
while(GetMessage(&msg,NULL,0,0))
{TranslateMessage(&msg);
DispatchMessage(&msg);}
return msg.wParam ;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam)
{HDC hdc;
PAINTSTRUCT ps;
HPEN hpen;
HBRUSH hbush;
TEXTMETRIC tm;
SIZE size;
char str[]=" ";
static char charbuf[30];
static int num=0;
static int pos=0;
int i,hi;
static int x=200,y=200;
switch(message)
{
case WM_COMMAND:
switch(LOWORD(wparam))
{case IDM_EXIT:
PostQuitMessage(0);
//SendMessage(hwnd,WM_DESTROY,0,0);
break;
case IDM_ABOUT:
DialogBox(hinst,(LPCSTR)IDD_DIALOG1,hwnd,(DLGPROC)DlgProc);
break;
}
break;
case WM_CHAR:
{
charbuf[pos]=(unsigned char) wparam;
pos++;
num++;
InvalidateRect(hwnd,NULL,1);
}
break;
//case WM_CREATE:
// hdc=GetDC(hwnd);
// GetTextMetrics(hdc,&tm);
//x=200;
//y=200;
// ReleaseDC(hwnd,hdc);
//break;
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
hpen=(HPEN)GetStockObject(BLACK_PEN);
SelectObject(hdc,hpen);
GetTextMetrics(hdc,&tm);
GetTextExtentPoint32(hdc,charbuf,pos,&size);
hi=tm.tmHeight;
Rectangle(hdc,x,y,x+18*tm.tmAveCharWidth ,y+2*hi);
SetTextColor(hdc,RGB(0,255,0));
if(size.cx>=18*tm.tmAveCharWidth )
{//TextOut(hdc,x,y,str ,20);
num=0;pos=0;}
else
TextOut(hdc,x+1,y+2,charbuf ,num);
//InvalidateRect(hwnd,NULL,1);
//st=CreateFont(16,0,0,0,FW_HEAVY,0,0,0,GB2312_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,
//DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE,"宋体");
//SelectObject(hdc,st);
DeleteObject(hpen);
EndPaint(hwnd,&ps);
return 0;
case WM_KEYDOWN:
{switch(wparam)
{case VK_UP:
y=y-20;
break;
case VK_DOWN:
y=y+20;
break;
case VK_LEFT:
x=x-20;
break;
case VK_RIGHT:
x=x+20;
break;
}
InvalidateRect(hwnd,NULL,1);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,message,wparam,lparam);}
return(0);
}
BOOL CALLBACK DlgProc(HWND hdlg,UINT message,WPARAM wparam,LPARAM lparam)
{
switch(message)
{case WM_INITDIALOG:
return 1;
case WM_COMMAND:
switch(LOWORD(wparam))
{case IDOK:
EndDialog(hdlg,0);
return 1;
}
break;
case WM_CLOSE:
EndDialog(hdlg,0);
return 1;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -