1、我想用对话框的形式取得某个文件夹的路径,就像CFileDialog类似的,用那个类?好像这种东东的应用好多,我就是找不到是那个类,是不是要自己做呀?
2、我想精确比较两个double型的数据,要怎么做?
2、我想精确比较两个double型的数据,要怎么做?
解决方案 »
- windows驱动相关问题(顶也给分)
- 画任意角度的矩形
- 想取得软件背景颜色用什么函数!
- 求助,我根据《深入浅出MFC》的程序编辑的,但是编译的时候总是出错,请高手帮助!
- 菜鸟问题,如何在一个CTreeView上画一个从右上到左下的斜线?
- 多线程的问题
- 请教:udatedata(false)的具体意义是什么?急需!
- ★★★★★【求救】小问题一个
- 我的程序里使用了STL,发布时需要附加什么dll吗?
- 使用Edit.SendMessage(WM_CHAR,31,00020001)给Edit发送字符"1",为何得不到"1"?
- 往对话框中加入一个windows mediaplayer控件应该注意什么
- 请教,我已知道今天的日期,即年、月、日,我想在程序中实现得到昨天或前天的日期,怎么办呢?
LPBROWSEINFO lpbi
);
1. 可以指定初始目录。当对话框刚刚出现时,自动选择的目录,而一般情况
下缺省的初始目录为"我的电脑"。
2. 在对话框的顶部,可以显示当前用户选择的目录的全路径,而一般的没有。
实际使用时,使用下面的函数SelectFolder就可以了。由于我对MFC不熟,对
CString的用法可能有错。如果那样的话,自己改一下就可以了。struct FolderParam
{
bool Inited;
HWND TitleWnd;
char InitPath[MAX_PATH];
};
#define INIT_TITLE "!@#$%^&*"int CALLBACK BrowseProc(HWND hWnd, UINT msg, LPARAM lParam, LPARAM lpData)
{
char buf[512];
FolderParam* pfp; pfp = (FolderParam*)lpData;
if (pfp->Inited && msg==BFFM_SELCHANGED) {
memset(buf, 0, sizeof(buf));
SHGetPathFromIDList((LPITEMIDLIST)
lParam, buf);
SetWindowText(pfp->TitleWnd, buf);
}
else if(msg == BFFM_INITIALIZED) {
pfp->Inited = true;
if (pfp->InitPath[0] != 0)
SendMessage(hWnd, BFFM_SETSELECTION,
TRUE, (long)pfp->InitPath);
pfp->TitleWnd = FindWindowEx(hWnd, NULL,
NULL, INIT_TITLE);
SetWindowText(pfp->TitleWnd,pfp->InitPath);
}
return 0;
}bool SelectFolder(HWND hWnd, CString& Path)
{
int len;
char buf[512];
BROWSEINFO bi;
LPMALLOC Malloc;
FolderParam Param;
LPITEMIDLIST pidlBrowse; // PIDL selected by user
LPITEMIDLIST pidlDesktop; // PIDL for Desktop folder if (!SUCCEEDED(SHGetMalloc(&Malloc)))
return false; // Get the PIDL for the Desktop folder.
if (!SUCCEEDED(SHGetSpecialFolderLocation(
hWnd, CSIDL_DESKTOP, &pidlDesktop))) {
return false;
} Param.Inited = false;
Param.TitleWnd = NULL;
len = Path.GetLength();
if (len>3 && Path[len]=='\\')
len -= 1;
memcpy(Param.InitPath, (LPCTSTR)
Path, len);
Param.InitPath[len] = 0; bi.hwndOwner = hWnd;
bi.pidlRoot = pidlDesktop;
bi.lpszTitle = INIT_TITLE;
bi.ulFlags = BIF_RETURNONLYFSDIRS;
bi.lpfn = BrowseProc;
bi.lParam = (long)&Param;
bi.pszDisplayName = buf; pidlBrowse = SHBrowseForFolder(&bi);
if (pidlBrowse != NULL) {
memset(buf, 0, sizeof(buf));
Path = SHGetPathFromIDList(
pidlBrowse,buf)?buf:"";
Malloc->Free(pidlBrowse);
}
Malloc->Free(pidlDesktop); return pidlBrowse != NULL;
}
#define DELT 1E-10double f1, f2;
if (fabs(f1-f2) <= DELT)
; //f1 等于 f2
//显示选择文件夹窗口
//参数 sFolderPath:用于返回用户选择的文件夹的路径
//参数 sTitle:用于指定选择文件夹窗口的标题
//返回值 :操作结果,用户取消选择或操作失败返回false,否则true
bool BrowseForFolder(CString &sFolderPath, CString sTitle)
{
BROWSEINFO bi;
char Buffer[_MAX_PATH];
//初始化入口参数bi
bi.hwndOwner = NULL;
bi.pidlRoot = NULL;
bi.pszDisplayName = Buffer;
bi.lpszTitle = sTitle;
bi.ulFlags = 0;
bi.lpfn = NULL;
LPITEMIDLIST pIDList = SHBrowseForFolder(&bi);
//用户取消选择
if(!pIDList)
return false;
SHGetPathFromIDList(pIDList, Buffer);
sFolderPath = Buffer;
LPMALLOC lpMalloc;
if(FAILED(SHGetMalloc(&lpMalloc)))
return false;
//释放内存
lpMalloc->Free(pIDList);
lpMalloc->Release();
return true;
}
2。利用字符串如何?只是一个建议而已。
char strBuf1[100] ;
char strBuf2[100] ;
sprintf(strBuf1,"%ld",double1) ;
sprintf(strBuf2,"%ld",double2) ;
if(strcmp(strBuf1,strBuf2) == 0) //下面的操作。