21xrx.com
2024-12-27 20:56:38 Friday
登录
文章检索 我的文章 写文章
C++如何打开对话框?
2023-07-13 04:25:59 深夜i     --     --
C++ 对话框 打开

在C++中,可以通过使用Windows API函数来打开对话框,例如打开文件或者保存文件对话框、颜色对话框、字体对话框等等。下面给出一些常用对话框的示例代码。

打开文件对话框:


#include <Windows.h>

#include <Commdlg.h>

// 定义对话框结构体

OPENFILENAME ofn;

// 设置对话框结构体初始值

ZeroMemory(&ofn, sizeof(ofn));

ofn.lStructSize = sizeof(ofn);

ofn.hwndOwner = NULL;

ofn.lpstrFile = lpstrFile; // 文件名

ofn.nMaxFile = sizeof(lpstrFile); // 文件名缓冲区大小

ofn.lpstrFilter = "文本文件 (*.txt)\0*.txt\0所有文件 (*.*)\0*.*\0"; // 文件筛选器

ofn.nFilterIndex = 1;

ofn.lpstrFileTitle = NULL;

ofn.nMaxFileTitle = 0;

ofn.lpstrInitialDir = NULL;

ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;

// 显示打开文件对话框

if(GetOpenFileName(&ofn))

  // 用户选择了一个文件

保存文件对话框:


#include <Windows.h>

#include <Commdlg.h>

// 定义对话框结构体

OPENFILENAME ofn;

// 设置对话框结构体初始值

ZeroMemory(&ofn, sizeof(ofn));

ofn.lStructSize = sizeof(ofn);

ofn.hwndOwner = NULL;

ofn.lpstrFile = lpstrFile; // 文件名

ofn.nMaxFile = sizeof(lpstrFile); // 文件名缓冲区大小

ofn.lpstrFilter = "文本文件 (*.txt)\0*.txt\0所有文件 (*.*)\0*.*\0"; // 文件筛选器

ofn.nFilterIndex = 1;

ofn.lpstrFileTitle = NULL;

ofn.nMaxFileTitle = 0;

ofn.lpstrInitialDir = NULL;

ofn.Flags = OFN_PATHMUSTEXIST | OFN_OVERWRITEPROMPT;

// 显示保存文件对话框

if(GetSaveFileName(&ofn))

  // 用户选择了保存的文件名

颜色对话框:


#include <Windows.h>

#include <Commdlg.h>

// 定义对话框结构体

CHOOSECOLOR cc;

// 设置对话框结构体初始值

ZeroMemory(&cc, sizeof(cc));

cc.lStructSize = sizeof(cc);

cc.hwndOwner = NULL;

cc.lpCustColors = (LPDWORD)acrCustClr;

cc.rgbResult = RGB(255, 255, 255);

cc.Flags = CC_FULLOPEN | CC_RGBINIT;

// 显示颜色对话框

if(ChooseColor(&cc))

  // 用户选择了颜色

字体对话框:


#include <Windows.h>

#include <Commdlg.h>

// 定义对话框结构体

LOGFONT lf;

CHOOSEFONT cf;

// 设置对话框结构体初始值

ZeroMemory(&lf, sizeof(lf));

lf.lfHeight = 20;

lf.lfWidth = 0;

lf.lfWeight = FW_NORMAL;

lf.lfItalic = FALSE;

lf.lfUnderline = FALSE;

lf.lfStrikeOut = FALSE;

lf.lfCharSet = DEFAULT_CHARSET;

lf.lfOutPrecision = OUT_DEFAULT_PRECIS;

lf.lfClipPrecision = CLIP_DEFAULT_PRECIS;

lf.lfQuality = DEFAULT_QUALITY;

lf.lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE;

strcpy_s(lf.lfFaceName, "宋体");

ZeroMemory(&cf, sizeof(cf));

cf.lStructSize = sizeof(cf);

cf.hwndOwner = NULL;

cf.lpLogFont = &lf;

cf.Flags = CF_SCREENFONTS | CF_EFFECTS;

// 显示字体对话框

if(ChooseFont(&cf))

  // 用户选择了字体

以上是一些常用对话框的示例代码,可以根据实际需求进行修改和扩展。要使用Windows API函数,需要在程序中包含Windows.h头文件,并进行编译和链接。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复