注册 登录
编程论坛 C++教室

求助在MFC里创建文件夹的问题

李昊逸Lion 发布于 2018-03-14 18:21, 1957 次点击
我做了一个MFC的登录框,里面做了一个注册界面,按照网上的方法先创建文件夹再放密码,结果发现文件夹无法创建,手动创建出文件夹后密码是乱码,求助一下
程序代码:
void Make::OnBnClickedOk()
{
    UpdateData(true);
    if (Again == NewPassword) {
        USES_CONVERSION;
        string name = W2A(NewName.LockBuffer());
        NewName.UnlockBuffer();
        char buf[100],buf2[100];
        sprintf_s(buf2, "D:\\Valiant_game\\%s", name.c_str());
        CString   strFolderPath;
        strFolderPath.Format(_T("%s"), "D:\\Valiant_game");
            //   判断路径是否存在   
        if (!PathIsDirectory(strFolderPath))
        {
            CreateDirectory(strFolderPath, NULL);
        }
        strFolderPath.Format(_T("%s"), buf2);
        if (!PathIsDirectory(strFolderPath))
        {
            CreateDirectory(strFolderPath, NULL);
        }
        else
        {
            MessageBox(_T("此用户已注册"), _T("错误"), MB_OK);
        }
        sprintf_s(buf, "D:\\Valiant_game\\%s\\Password", name.c_str());
        ofstream fout(buf);
        fout << NewPassword;
    }
    else
    {
        MessageBox(_T("确认密码错误"), _T("错误"), MB_OK);
    }
    // TODO: 在此添加控件通知处理程序代码
    CDialogEx::OnOK();
}
4 回复
#2
李昊逸Lion2018-03-14 18:23
NewName,NewPassword,Again都是文本框里输入的,分别是姓名,密码,确认密码
#3
rjsp2018-03-14 20:01
两处Format的第二个参数应该是什么类型,char*,wchar_t*?
虽然我猜不出,但前后是不一致的
#4
李昊逸Lion2018-03-16 18:14
回复 3楼 rjsp
我感觉没什么区别,而且两个都没有作用
#5
李昊逸Lion2018-03-16 20:12
我自己去查了一些办法,最后有效的是这个
程序代码:
void Make::OnBnClickedOk()
{
    UpdateData(true);
    if (Again == NewPassword) {
        USES_CONVERSION;
        string name = W2A(NewName.LockBuffer());
        NewName.UnlockBuffer();
        string password = W2A(NewPassword.LockBuffer());
        NewPassword.UnlockBuffer();
        char buf[100],buf2[100];
        sprintf_s(buf2, "D:\\Valiant_game\\%s", name.c_str());
        CString   strFolderPath;
        strFolderPath=A2T( "D:\\Valiant_game");
            //   判断路径是否存在   
        if (!PathIsDirectory((LPCTSTR)strFolderPath))
        {
            CreateDirectory((LPCTSTR)strFolderPath, NULL);
        }
        strFolderPath=A2T(buf2);
        if (!PathIsDirectory((LPCTSTR)strFolderPath))
        {
            CreateDirectory((LPCTSTR)strFolderPath, NULL);
        }
        else
        {
            MessageBox(_T("此用户已注册"), _T("错误"), MB_OK);
        }
        sprintf_s(buf, "D:\\Valiant_game\\%s\\Password", name.c_str());
        ofstream fout(buf);
        fout << password;
    }
    else
    {
        MessageBox(_T("确认密码错误"), _T("错误"), MB_OK);
    }
    // TODO: 在此添加控件通知处理程序代码
    CDialogEx::OnOK();
}
1