目录
MFC Cstring转string
MFC获取系统时间
MFC创建文件夹
MFC创建子对话框
总结
MFC utf-8转ANSI
MFC选择文件
MFC选择文件夹
MFC获取文件名
MFC修改字体
判断string是否全为数字
错误:class std::vector
//使用 Unicode 字符集
//方法1
CString filePath= L"D:\\111\\123.txt";
USES_CONVERSION;
string str(W2A(filePath)); //CStrig -> string
//方法2
CString theCStr = L"Lena.png";
std::string STDStr(CW2A(theCStr.GetString()));
//使用非Unicode 字符集
CString theCStr = "Lena.png";
std::string STDStr = theCStr.GetBuffer();
CTime time = CTime::GetCurrentTime(); ///构造baiCTime对象
CString m_strTime ;
m_strTime = time.Format("%Y_%m_%d_%H_%M_%S");
if (!PathIsDirectory(filepath))
{
CreateDirectory(filepath, 0);//不存在则创建
}
找到资源视图->Dialog
新建一个Dialog
可以看到多了一个对话框
找到新建的窗口,鼠标右键打开
可以看到新建的界面
鼠标右键红色区域 -> 添加类
输入类名,点击完成
可以看到以下两个文件
还是右键红色框,选择类向导->虚函数->添加OnInitDialog->确定
在OnInitDialog中添加如下代码(便于调试)
MessageBox(_T("hello child"));
在createChildDemoDlg.h中加入子窗口头文件
同时在主对话框的类中添加子对话框的对象
双击主窗口确定按钮,进入函数
添加如下代码
m_CchildDlg.Create(IDD_DIALOG1, this);
m_CchildDlg.ShowWindow(SW_SHOW);
运行代码
点击主窗口确定按钮,即可看到效果。
1.在资源视图对话框中新建一个Dialog
2.进入Dialog视图界面,右键单击添加类
3.添加子对话框的初始化函数 界面上右击->添加虚函数OnInitDialog,把需要初始化的东西放在里面
4、在主对话框中使用子对话框
①在主对话框的类中建立一个子对话框的对象
Cchild m_CchildDlg;
②在需要使用的地方中添加创建窗口语句
m_CchildDlg.Create(Dialog名字, this);
m_CchildDlg.ShowWindow(SW_SHOW);
std::string uToAnsi(std::string strUTF8)
{
UINT nLen = MultiByteToWideChar(CP_UTF8, NULL, strUTF8.c_str(), -1, NULL, NULL);
WCHAR *wszBuffer = new WCHAR[nLen + 1];
nLen = MultiByteToWideChar(CP_UTF8, NULL, strUTF8.c_str(), -1, wszBuffer, nLen);
wszBuffer[nLen] = 0;
nLen = WideCharToMultiByte(936, NULL, wszBuffer, -1, NULL, NULL, NULL, NULL);
CHAR *szBuffer = new CHAR[nLen + 1];
nLen = WideCharToMultiByte(936, NULL, wszBuffer, -1, szBuffer, nLen, NULL, NULL);
szBuffer[nLen] = 0;
strUTF8 = szBuffer;
delete[]szBuffer;
delete[]wszBuffer;
return strUTF8;
}
TCHAR szFilter[] = _T("所有文件(*.*)|*.*||");
CFileDialog fileDlg(TRUE, _T("avi"), NULL, 0, szFilter, this);
if (IDOK == fileDlg.DoModal())
{
//获取文件名
CString filePath = fileDlg.GetPathName();
USES_CONVERSION;
string str(W2A(filePath)); //CStrig -> string
CString suffix;
int Which = filePath.ReverseFind('.');
suffix = filePath.Right(filePath.GetLength() - Which - 1);
if (suffix == "mp4" || suffix == "avi" || suffix == "flv" || suffix == "rmvb")
{
//添加执行代码
}
else
MessageBox(_T("请打开正确格式的文件!"), 0);
}
TCHAR szPath[MAX_PATH]; //存放选择的目录路径
ZeroMemory(szPath, sizeof(szPath));
BROWSEINFO bi;
bi.hwndOwner = m_hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = szPath;
bi.lpszTitle = _T("请选择需要查看的目录:");
bi.ulFlags = 0;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;
bi.pidlRoot = ILCreateFromPath(_T("E:\\vs_code\\MFC界面框架\\dShow界面扩展项目\\AI\\Directshow_Mfc\\saveImg\\"));
//弹出选择目录对话框
LPITEMIDLIST lp = SHBrowseForFolder(&bi);
if (lp && SHGetPathFromIDList(lp, szPath))
{
/*selectFile.Format(_T("选择的目录为 %s"), szPath);*/
selectFile.Format(_T("%s"), szPath);
MessageBox(selectFile);
}
else
MessageBox(_T("无效的目录,请重新选择"));
int pos1 = string.rfind("\\");
string image_name1 = string.substr(pos1 + 1);
//CFont m_oFont;
//CEdit m_edit;
m_oFont.CreatePointFont(180, _T("隶书"));
m_edit.SetFont(&m_oFont);
bool AllisNum(string str)
{
for (int i = 0; i < str.size(); i++)
{
int tmp = (int)str[i];
if (tmp >= 48 && tmp <= 57)
{
continue;
}
else
{
return false;
}
}
return true;
}
在link commandline加上一行 /FORCE:MULTIPLE
点击OK
就解决了;简单说就是VS的STL从import变成static了