目录对话诓的问题
我得这段代码主要想在SHbrowseForFolder调用浏览目录诓时,定位在一个特定的目录上。
大家帮忙看看,我这个程序错误在什么地方?
[C++ Error] Unit1.cpp(18): E2108 Improper use of typedef 'HWND'
[C++ Error] Unit1.cpp(18): E2293 ) expected
#define NO_WIN32_LEAN_AND_MEAN
#include <shlobj.h>
#include <vcl.h>
#include "winbase.h"
#include "FileCtrl.hpp"
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int CALLBACK BrowseCallbackProc(HWND hwnd,UNIT uMsg,LPARAM lParam,LPARAM lpData)
//^^^^^^^问题就在这里
{
char path[256];
TForm1 * pMain=(TForm1 *)lpData;
switch(uMsg)
{
case BFFM_INITIALIZED:
{
SendMessage(hwnd,BFFM_SETSELETCTION,1,(LPARAM)(pMain->InitDir.c_str()));
return 0;
}
default:
return 0;
}
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
bool __fastcall TForm1::BrowseDirectory(AnsiString InitialPath,AnsiString &NewPath)
{
TBrowseInfo browse;
AnsiString InitDir;
if(DirectoryExists(InitialPath))
InitDir=InitialPath;
else
InitDir="";
ZeroMemory(&browse,sizeof(TBrowseInfo));
browse.hwndOwner=Handle;
browse.lpszTitle="Select a directory";
browse.lpfn=BrowseCallbackProc;
browse.lParam=(long)this;
browse.ulFlags=BIF_RETURNONLYFSDIRS |BIF_RETURNFSANCESTORS;
LPITEMIDLIST pDir=SHBrowseForFolder(&browse);
NewPath="";
if(pDir)
{
char Path[MAX_PATH];
SHGetPathFromIDList(pDir,Path);
CoTaskMemFree(pDir);
NewPath=Path;
}
return NewPath!="";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn3Click(TObject *Sender)
{
AnsiString NewPath;
if(BrowseDirectory("c:\\windows",NewPath))
ShowMessage(NewPath);
}
//---------------------------------------------------------------------------