2020-12-11--34--u盘小偷的界面制作

2020-12-12  本文已影响0人  heiqimingren

学习收货:
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
上一篇 下一篇

猜你喜欢

热点阅读