#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