系统通用对话框的调用

#include "commdlg.h"
switch (message)
	{
	case WM_COMMAND:
		wmId    = LOWORD(wParam);
		wmEvent = HIWORD(wParam);
		// 分析菜单选择: 
		switch (wmId)
		{
             //打开文件对话框
		case ID_32773:
		{
			OPENFILENAME ofn;
			TCHAR ext[] = TEXT(".dat");
			TCHAR szFile[MAX_PATH] = TEXT("default");
			TCHAR szFilter[] = TEXT("文本文件 (*.txt)\0*.txt\0")
				TEXT("数据文件 (*.dat)\0*.dat\0")
				TEXT("All Files (*.*)\0*.*\0\0");

			ZeroMemory(&ofn, sizeof(ofn));
			ofn.lStructSize = sizeof(ofn);
			ofn.hwndOwner = hWnd;
			ofn.lpstrFilter = szFilter;
			ofn.nFilterIndex = 1;		  // 1 to default show *.txt type file; 2 to default show *.dat type file.
			ofn.lpstrFile = szFile;
			ofn.nMaxFile = MAX_PATH;
			ofn.lpstrDefExt = ext;
			ofn.Flags = OFN_PATHMUSTEXIST | OFN_OVERWRITEPROMPT;
			if (GetOpenFileName(&ofn))//GetOpenFileName, GetSaveFileName
			{
				//将选择的文件输出到窗口
				LPTSTR file = ofn.lpstrFile; //file就是保存或者打开的文件名
				hdc = GetDC(hWnd);
				TextOut(hdc, 200, 50, ofn.lpstrFile, _tcslen(ofn.lpstrFile));
				ReleaseDC(hWnd, hdc);
			}
		}
		break;
              //保存文件对话框
		case ID_32774:
		{
			OPENFILENAME ofn;
			TCHAR ext[] = TEXT(".dat");
			TCHAR szFile[MAX_PATH] = TEXT("default");
			TCHAR szFilter[] = TEXT("文本文件 (*.txt)\0*.txt\0")
				TEXT("数据文件 (*.dat)\0*.dat\0")
				TEXT("All Files (*.*)\0*.*\0\0");

			ZeroMemory(&ofn, sizeof(ofn));
			ofn.lStructSize = sizeof(ofn);
			ofn.hwndOwner = hWnd;
			ofn.lpstrFilter = szFilter;
			ofn.nFilterIndex = 1;		  // 1 to default show *.txt type file; 2 to default show *.dat type file.
			ofn.lpstrFile = szFile;
			ofn.nMaxFile = MAX_PATH;
			ofn.lpstrDefExt = ext;
			ofn.Flags = OFN_PATHMUSTEXIST | OFN_OVERWRITEPROMPT;
			if (GetSaveFileName(&ofn))//GetOpenFileName, GetSaveFileName
			{
				//将选择的文件输出到窗口
				LPTSTR file = ofn.lpstrFile; //file就是保存或者打开的文件名
				hdc = GetDC(hWnd);
				TextOut(hdc, 200, 50, ofn.lpstrFile, _tcslen(ofn.lpstrFile));
				ReleaseDC(hWnd, hdc);
			}
		}
		break;
                //颜色选择对话框
		case ID_32778:
		{
			CHOOSECOLOR cc;
			static COLORREF acrCustClr[16];

			ZeroMemory(&cc, sizeof(cc));
			cc.lStructSize = sizeof(cc);
			cc.hwndOwner = hWnd;
			cc.lpCustColors = (LPDWORD)acrCustClr;
			if (ChooseColor(&cc))
			{
				//用选择的颜色画一个实心矩形
				RECT rect = { 240, 100, 340, 140 };
				hdc = GetDC(hWnd);
				HBRUSH hBrush = CreateSolidBrush(cc.rgbResult);
				SelectObject(hdc, hBrush);
				FillRect(hdc, &rect, hBrush);
				DeleteObject(hBrush);
				ReleaseDC(hWnd, hdc);
			}
		}
			break;
              //字体选择对话框
		case ID_32779:
		{
			CHOOSEFONT cf;
			LOGFONT lf;
			ZeroMemory(&cf, sizeof(cf));
			cf.lStructSize = sizeof(cf);
			cf.hwndOwner = hWnd;
			cf.lpLogFont = &lf;
			cf.Flags = CF_SCREENFONTS | CF_EFFECTS;
			if (ChooseFont(&cf))
			{
				//用选择的字体输出一行测试文本
				TCHAR str[] = TEXT("Font 测试!");
				HFONT hFont = CreateFontIndirect(cf.lpLogFont);
				DWORD rgbCurrent = cf.rgbColors;
				hdc = GetDC(hWnd);
				SelectObject(hdc, hFont);
				SetTextColor(hdc, cf.rgbColors);
				TextOut(hdc, 200, 170, str, _tcslen(str));
				DeleteObject(hFont);
				ReleaseDC(hWnd, hdc);
			}
		}
		break;
		case IDM_ABOUT:
			DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
			break;
		case IDM_EXIT:
			DestroyWindow(hWnd);
			break;
		default:
			return DefWindowProc(hWnd, message, wParam, lParam);
		}
		break;
	case WM_PAINT:
		hdc = BeginPaint(hWnd, &ps);
		// TODO:  在此添加任意绘图代码...
		EndPaint(hWnd, &ps);
		break;
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
	default:
		return DefWindowProc(hWnd, message, wParam, lParam);
	}


 今天刚刚学会的调用系统对话框(VC 可视化编程)

      所用资源文件

      resource.h

#define IDC_MYICON                      2
#define IDD_MY21TH21_DIALOG             102
#define IDS_APP_TITLE                   103
#define IDD_ABOUTBOX                    103
#define IDM_ABOUT                       104
#define IDM_EXIT                        105
#define IDI_MY21TH21                    107
#define IDI_SMALL                       108
#define IDC_MY21TH21                    109
#define IDR_MAINFRAME                   128
#define ID_32771                        32771
#define ID_32772                        32772
#define ID_32773                        32773
#define ID_32774                        32774
#define ID_32775                        32775
#define ID_32776                        32776
#define ID_32777                        32777
#define ID_32778                        32778
#define ID_32779                        32779
#define IDC_STATIC                      -1

  .rc 文件内部的菜单id

IDC_MY21TH21 MENU
BEGIN
    POPUP "文件(&F)"
    BEGIN
        MENUITEM "新建(M)",                       ID_32772
        MENUITEM "打开(O)",                       ID_32773
        MENUITEM "另存为(S)",                      ID_32774
        MENUITEM "页面设置(Y)",                     ID_32775
        MENUITEM "打印(P)",                       ID_32776
        MENUITEM "退出(&X)",                      IDM_EXIT
    END
    POPUP "编辑(&B)"
    BEGIN
        MENUITEM "字体(Z)",                       ID_32778
        MENUITEM "颜色(Y)",                       ID_32779
    END
    POPUP "帮助(&H)"
    BEGIN
        MENUITEM "关于(&A) ...",                  IDM_ABOUT
    END
END

  

转载于:https://www.cnblogs.com/gtt1025/p/5496418.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值