美文网首页
2020-12-11--34--u盘小偷的界面制作

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

作者: heiqimingren | 来源:发表于2020-12-12 18:37 被阅读0次

    学习收货:
    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

    相关文章

      网友评论

          本文标题:2020-12-11--34--u盘小偷的界面制作

          本文链接:https://www.haomeiwen.com/subject/cftegktx.html