学习收货:
01,界面制作太简单了,我跟着视频就学会了
02,作业,给控件添加变量。
--------然后代码中会有2个地方有变化
第一,在头文件当中的,public部分增加了一个类成员
例如,给编辑框添加的控件变量
image.png
然后,在类实现的cpp文件当中,有详细展示
image.png
---总结,基本上就会有2个地方有变化。如果删除这2个部分,那么就可以重新定义控件变量了。
03,老师完成的作业案例,我研究了一下,搞定了。
image.png image.png
04,在上一条,我又接触到了一个api函数,或者封装的类
image.png
api函数:GetModuleFileName
image.png
//得到当前文件夹目录。
BOOL CUdiskThieftDlg::GetCurrDirectory(LPTSTR lpBuffer, DWORD nBufferLength)
{
//如果文件路径和路径长度小于0,那么就返回,此步骤相当于检验一下。
if (!lpBuffer || nBufferLength <= 0) return FALSE;
TCHAR szPath[MAX_PATH] = { 0 };
DWORD dwRet = GetModuleFileName(NULL, szPath, MAX_PATH);
/*
需要获得程序当前的运行目录,这时就可以使用GetModuleFileNam
DWORD WINAPI GetModuleFileName(
HMODULE hModule, //要获取文件名的模块名柄,null表示当前模块
LPTSTR lpFileName, //输出参数,存放取得的文件名
DWORD nSize //lpFileName参数的长度
);
返回值:
如果返回为成功,将在lpFileName的缓冲区当中返回相应模块的路径,如果所设的nSize过小,那么返回仅按所设置缓冲区大小返回相应字符串内容。
如果函数失败,返回值将为0,利用GetLastError可获得异常代码。
*/
if (dwRet <= 0) return FALSE;
//获得当前路径的长度,存储在dwPathLen当中。
DWORD dwPathLen = _tcslen(szPath);
//从后往前遍历文件目录字符串,发现第一个\,就去掉,换成结束符\0;
for (DWORD dwIdx = dwPathLen - 1; dwIdx >= 0; --dwIdx)
{
if (szPath[dwIdx] != '\\') continue;
szPath[dwIdx] = '\0';
break;
}
//再次得到处理过后的,文件夹路径长度
dwPathLen = _tcslen(szPath);
//判断一下 nBufferLength是否比dwPathLen小?如果小于,那就选择nBufferLength,否则选择dwPathLen
DWORD dwCopyLen = (nBufferLength - 1 <= dwPathLen) ? nBufferLength : dwPathLen;
//把dwCopyLen,作为结果传输到函数外,留着作别的使用。
_tcsncpy_s(lpBuffer, nBufferLength, szPath, dwCopyLen);
return TRUE;
}
void CUdiskThieftDlg::OnBnClickedButton1()
{
//设置字符串数组存储 当前文件夹路径
TCHAR szCurrPath[MAX_PATH] = { 0 };
//得到当前文件夹路径,储存在szCurrPath当中。
GetCurrDirectory(szCurrPath, MAX_PATH);
CFolderPickerDialog dlg(szCurrPath);
/*CFolderPickerDialog类封装了Windows常用的目录选择对话框
中文翻译为"文件夹拾取对话框".是Visual C++ 2008中新引入的针对文件夹选择对话框设计的类,此类替代了传统的SDK方法,而且具有更好的外观.但是,此类仅适用于vista及以上windows操作系统.
头文件: afxdlgs.h
构造参数
explicit CFolderPickerDialog(
LPCTSTR lpszFolder = NULL, //初始目录
DWORD dwFlags = 0, //个性化窗口标志位
CWnd* pParentWnd = NULL, //父窗口句柄
DWORD dwSize = 0 //OPENFILENAME结构的大小
);
*/
if (dlg.DoModal())
{
CString strFolderPath = dlg.GetPathName();
//设置文件框的文字。把处理过的路径,送到文字框当中显示出来
SetDlgItemText(IDC_EDIT2, strFolderPath);
}
}
=============
image.png
image.png
网友评论