📄 rcdemo.cpp
字号:
#include <windows.h>
#include "resource.h"
//窗口过程函数声明
long WINAPI WndProc(HWND hWnd,UINT iMessage,
WPARAM wParam,LPARAM lParam);
//对话框处理函数声明
BOOL CALLBACK DlgProc(HWND,UINT,WPARAM,LPARAM);
HWND hDlg; //定义对话框句柄
HINSTANCE hInst; //定义应用程序实例句柄
HDC hdc=NULL;
HDC hdcmem=NULL;
HBITMAP hBitmap;
BITMAP bm;
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG Message; //定义消息变量
HWND hWnd; //定义窗口句柄
WNDCLASS WndClass; //定义窗口类
WndClass.cbClsExtra=0; //无窗口类扩展
WndClass.cbWndExtra=0; //无窗口实例扩展
//背景为白色
WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));
WndClass.hCursor=LoadCursor(hInstance,MAKEINTRESOURCE(IDC_CURSOR1));//光标为为箭头
//WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//采用缺省图标
WndClass.hIcon=LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON1));
WndClass.hInstance=hInstance; //当前实例
WndClass.lpfnWndProc=WndProc; //消息处理函数
WndClass.lpszClassName="DlgInstance";//窗口类名称
WndClass.lpszMenuName=NULL;//无菜单
WndClass.style=0;//缺省窗口风格
HMENU hmenu;
hmenu=LoadMenu(hInstance,MAKEINTRESOURCE(IDR_MENU1));
if(!RegisterClass(&WndClass))//注册窗口.
{
MessageBeep(0); //注册失败发出警告声.
return FALSE;
}
hWnd=CreateWindow("DlgInstance", //窗口类名称
"对话框设计程序", //标题栏名称
WS_OVERLAPPEDWINDOW, //窗口样式
CW_USEDEFAULT, //窗口左上角坐标
0,
CW_USEDEFAULT, //采用自定义的高度和宽度
0,
NULL, //无父窗口
hmenu, //自定义的菜单
hInstance, //当前应用实例句柄
NULL); //指向传递给窗口的参数的指针
hBitmap=LoadBitmap(hInstance,MAKEINTRESOURCE(IDB_BITMAP1));
GetObject(hBitmap,sizeof(BITMAP),(LPVOID)&bm);
hInst=hInstance; //将应用程序句柄传递给全局变量
ShowWindow(hWnd,nCmdShow); //显示窗口
UpdateWindow(hWnd); //刷新用户区
while(GetMessage(&Message,0,0,0))
{
//若是对话框消息,发往对话框处理函数
if(!IsDialogMessage(hDlg,&Message))
{
TranslateMessage(&Message); //消息循环
DispatchMessage(&Message);
}
}
return Message.wParam;
}
long WINAPI WndProc(HWND hWnd,
UINT iMessage,
WPARAM wParam,
LPARAM lParam)
{
PAINTSTRUCT ps;
switch(iMessage)
{
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDM_DIALOG1://点击New菜单
//显示模态对话框
DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG1),hWnd,(DLGPROC)DlgProc);
break;
case IDM_BITMAP://点击Open菜单
hdc=GetDC(hWnd);//获取内存设备环境句柄
if(hdcmem==NULL)
hdcmem=CreateCompatibleDC(hdc);
ReleaseDC(hWnd,hdc);//释放设备环境句柄
InvalidateRect(hWnd,NULL,TRUE);
break;
case IDM_DIALOG2://点击Save菜单
if(hDlg)
DestroyWindow(hDlg);
//显示非模态对话框
hDlg=CreateDialog(hInst,MAKEINTRESOURCE(IDD_DIALOG2),hWnd,(DLGPROC)DlgProc);
break;
case IDM_HELLO://点击SaveAsn菜单
DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG3),hWnd,(DLGPROC)DlgProc);
break;
case IDM_CLOSE: //点击Close菜单
if(hDlg)
DestroyWindow(hDlg);//删除非模态对话框
break;
case IDM_EXIT://点击Exit菜单
SendMessage(hWnd,WM_DESTROY,0,0);//发送退出消息
break;
}
break;
case WM_PAINT:
hdc=BeginPaint(hWnd,&ps);
SelectObject(hdcmem,hBitmap);
BitBlt(hdc,240,100,bm.bmWidth,bm.bmHeight,hdcmem,0,0,SRCCOPY);
EndPaint(hWnd,&ps);
break;
case WM_DESTROY://退出
DeleteObject(hBitmap);
PostQuitMessage(0);
break;
default:
return(DefWindowProc(hWnd,iMessage,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:
if(hDlg)
DestroyWindow(hDlg);
EndDialog( hdlg, 0) ;//关闭对话框
return 1;
}
break ;
case WM_CLOSE:
if(hDlg)
DestroyWindow(hDlg);
EndDialog( hdlg, 0) ;
return 1;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -