⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rcdemo.cpp

📁 c++从入门到精通
💻 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 + -