------------------------------------------------------------------------------
	gsgetfile.dll version 0.04
	Copyright(C) 2002 Y.Nagamidori
	JҌ}jA
------------------------------------------------------------------------------
@Tv
PocketPCW"t@CJ"_CAO"Otĕۑ"̃t@CI_CAO
My Documents̈ꕔ̌ꂽtH_ɂ̂݃ANZXłsւłB
܂AHPCŴ̂PCpWindowŝ̂@\Ăsc܂B
gsgetfile.dllPocketPCHPCȏ̃t@CI_CAO̒񋟂ƁAHPCŕW
t@CI_CAOȏ̋@\̃_CAO񋟂DLLi_Ci~bNNCu)łB

PocketPC / HPC / ||y (HPC̉320pixel) / Palm-sizePC(HPC̉240pixel)ɂă_CAO؂ւ܂B


@AѕKvDLL
WindowsCE2.11{ňȏ̂
vbgz[Ɉˑ܂B
\[XrhꍇWindowsCE 2.0łgpłƎv܂B


@KvJ
embedded Visual C++ 3.0


@mF
jornada720 / GENIOe550X / E-65œmFsĂ܂B


@gp@
includetH_gsgetfile.hCN[hA
libtH_gsgetfile.libNĎgpĂB
܂LoadLibrary֐dll[hꍇ͕svłB
ΉCPUlibdllꍇ̓\[X玩ŃrhĂB

libtH_gsgetlib.libgsgetfile.dll݂gsgetfile.dllgpA
݂Ȃꍇ́AOSŴ̂Ăяo֐X^eBbNCułB
includetH_gsgetlib.hCN[hĂD݂ɂgpĂB


@t@X
gsgetfile.dllɂOSW̃R_CAOƓ̊֐Ă܂B
{IɃR_CAOGetOpenFileNameGetSaveFileNameƎgp@͓łB
----------------------------------------------------------------------
BOOL gsGetOpenFileName(OPENFILENAME* pofn)
----------------------------------------------------------------------
@\:	t@CI_CAO(J_CAO)\t@C擾B
:	OPENFILENAME* pofn:	\̂ւ̃|C^
߂l:	TRUE:  / FALSE: s
ڍ:	R_CAOGetOpenFileName()Ɠ̓܂B

----------------------------------------------------------------------
BOOL gsGetSaveFileName(OPENFILENAME* pofn)
----------------------------------------------------------------------
@\:	t@CI_CAO(ۑ_CAO)\t@C擾B
:	OPENFILENAME* pofn:	\̂ւ̃|C^
߂l:	TRUE:  / FALSE: s
ڍ:	R_CAOGetSaveFileName()Ɠ̓܂B

----------------------------------------------------------------------
\ OPENFILENAME
----------------------------------------------------------------------
\ OPENFILENAMÊ͎悤ɒ`Ă܂B
E͊el̒ӎłB
ɒӓ_̂Ȃ̂̓T|[gĂtB[hłB

typedef struct tagOFN {
   DWORD        lStructSize; // \̂̃TCY: Ksizeof(OPENFILENAME)ZbgĂB
   HWND         hwndOwner;
   HINSTANCE    hInstance;   // T|[g
   LPCTSTR      lpstrFilter; // ̊gq̃T|[g(1)
   LPTSTR       lpstrCustomFilter; // T|[g
   DWORD        nMaxCustFilter; // T|[g
   DWORD        nFilterIndex;
   LPTSTR       lpstrFile;
   DWORD        nMaxFile;
   LPTSTR       lpstrFileTitle; // (2)
   DWORD        nMaxFileTitle;
   LPCTSTR      lpstrInitialDir;
   LPCTSTR      lpstrTitle;
   DWORD        Flags; // LOPENFILENAME̒lFlags̃T|[g󋵂Q
   WORD         nFileOffset; // T|[g
   WORD         nFileExtension; // T|[g
   LPCTSTR      lpstrDefExt;
   LPARAM       lCustData; // T|[g
   LPOFNHOOKPROC lpfnHook; // T|[g
   LPCTSTR      lpTemplateName; // T|[g
} OPENFILENAME, *LPOPENFILENAME;

1: HPCł"*.mp3;*mp2;*.mpa"̂悤ɊgqJ}؂ŕw肷邱Ƃł܂
gsgetfile.dllł͂̃J}؂ł̎wT|[gĂ܂B(̋@\ԗ~B)

2: OFN_ALLOWMULTISELECTtOŃt@CI͒li[܂B
PCpWindows̃_CAOƓłB

etB[h̏ڂMSDNCuȂǂQƂĂB

----------------------------------------------------------------------
OPENFILENAMEFlags̃T|[g
----------------------------------------------------------------------
ȉ̃tO̓T|[gĂ܂B
OFN_ALLOWMULTISELECT
OFN_CREATEPROMPT
OFN_OVERWRITEPROMPT
OFN_PATHMUSTEXIST
OFN_FILEMUSTEXIST

ȉ̃tO͖T|[głB
OFN_ENABLEHOOK
OFN_ENABLESIZING
OFN_ENABLETEMPLATE
OFN_ENABLETEMPLATEHANDLE
OFN_EXPLORER
OFN_HIDEREADONLY
OFN_LONGNAMES
OFN_NOCHANGEDIR
OFN_NODEREFERENCELINKS
OFN_NOLONGNAMES
OFN_NONETWORKBUTTON
OFN_NOREADONLYRETURN
OFN_NOTESTFILECREATE
OFN_NOVALIDATE
OFN_PROJECT
OFN_PROPERTY
OFN_READONLY
OFN_SHAREAWARE
OFN_SHOWHELP

ȉ̃tO͌ł͖T|[głKvȂΏIɃT|[g邩܂B
OFN_EXTENSIONDIFFERENT

etȌڂMSDNCuȂǂQƂĂB


@
OFN_ALLOWMULTISELECTɂ
t@C̑IłBT|[gĂ܂BGetOpenFileNameł̂ݗLłB
P̃t@CIOPENFILENAME\̂lpstrFileɃtpXi[܂A
Iɂ
  <pX>NULL<t@C1>NULL<t@C2>NULL<t@C3>...
̂悤Ɋi[܂B
PCpWindowsGetOpenFileNameƓ̓łB

HPCł̓쐧
HPCɂ̓fXNgbv݂OSŴ̂ł̓fXNgbvɃANZX\ł
gsgetfile.dllł̓ANZXł܂B

mFsĂȂfoCXł̓
tH_̃ACRȂǂ\Ȃꍇ܂B
\ȂfoCX܂҂ɕ񍐂ĂBT|[gs܂B

G[̎擾
GetOpenFileName()/GetSaveFileName()sꍇACommDlgExtendedError()ŃG[
擾ł܂Agsgetfile.dllł͎擾ł܂B


@dll{̂̎gp
gsgetfile.dll̓t[\tgłBdll{̂̍Ĕzz/]ڂȂǎRɍsĂB͂܂B


@\[XR[h̎gp
\[XɊւĂ͎gp܂B

EvIȃoO҂ɕ񍐂邱
EmF̂ȂfoCXł̓mF҂ɒ񋟂邱Ɓil'agendaƂۂۂ؁j
łB
Ƃ͂ǂ̂悤ɗpĂ܂܂B
ppAϔł̔zzA\tgւ̑gݍ݂ȂǂȂǂDȂ悤ɎgpĂB
̒x̂̂Ŗׂ悤Ƃv܂񂵁B

Ƃ͂AOςă\[XɂƂǉzʂ̖OăVFAEFAɂ
ƂȂsׂ͂܂肵ȂƎv܂ǁixx mascotj


@TvR[h
gsgetfile.dll݂ꍇgsgetfile.dllgp
݂ȂꍇOSŴтĂяo֐̂[ (gsgetlib.lib甲)
BOOL GetOpenFileNameEx(OPENFILENAME* pofn)
{
	HINSTANCE hInst = LoadLibrary(_T("gsgetfile.dll"));
	if (hInst) {
		BOOL (*gsGetOpenFileName)(OPENFILENAME* pofn);
		(FARPROC&)gsGetOpenFileName = GetProcAddress(hInst, _T("gsGetOpenFileName"));
		if (gsGetOpenFileName) {
			BOOL ret = gsGetOpenFileName(pofn);
			FreeLibrary(hInst);
			return ret;
		}
		FreeLibrary(hInst);
	}
	return GetOpenFileName(pofn);
}

ʏ"t@CJ"_CAO\R[h
void OnFileOpen()
{
	WCHAR szFile[MAX_PATH] = L"\0";
	OPENFILENAME ofn;

	memset(&(ofn), 0, sizeof(ofn));
	ofn.lStructSize	= sizeof(ofn);
	ofn.hwndOwner   = m_hWnd;
	ofn.lpstrFile   = szFile;
	ofn.nMaxFile    = MAX_PATH;	
	ofn.lpstrTitle  = L"MP3̧قJ...";
	ofn.lpstrFilter = L"gp\ȃt@C\0*.mp3;*.rmp;*.mp2;*.mpa\0MP3̧ (*.MP3)\0*.mp3\0RMP̧ (*.RMP)\0*.rmp\0Layer-2 (*.mp2)\0*.mp2\0Layer-1 (*.mpa)\0*.mpa\0ׂĂ̧ (*.*)\0*.*\0\0";
	ofn.Flags       = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT;
	ofn.lpstrInitialDir = m_szInitDir;
	if (GetOpenFileName(&ofn) == IDOK)
	{
		// ꍇ̏
	}
}




@Ql
HPCW̃t@CI_CAOƂ̈Ⴂ
Et@C̕I\
EfXNgbvɃANZXłȂ
EVKtH_쐬{^Ȃ
EJ}؂蕡gqw肪\

PocketPCW̃t@CI_CAOƂ̈Ⴂ
EMy DocumentsȊÕtH_̃t@C̃ANZX\
Et@C̕I\
EPocketPCŴ͖̂ɒx

tgetfile.dllƂ̈Ⴂ
ESDKA\[X
Et@C̕I\
Etgetfile.dll̓GfBbg{bNX*.*Ȃǂ̃tB^ł񂾂Ƃ̓삪
Etgetfile.dll̓tH_̃V[gJbgɑΉĂȂ
Etgetfile.dll͓t̕\@OSW̌`ɂ킹ĂȂ
Etgetfile.dll̓t@CƂĎgpĂ͂Ȃ̃`FbNĂȂlq
肪rłBSDKVFAEFAłcB
Ȃ肷΂炵T|[gĂƂƂȂł傤B


@ō쐬I
vłςƍ̂łBH2炢B
\[XɂقƂǃRgȂBNȂ̂ɂȂĂ܂B


@XV
0.00	ō쐬
0.01	t@C̒PIɊgqꍇA삵ȂߏC
	PocketPCŕI̓ύX
0.02	320pixelΉ
	eLXg{bNXɃtB^ł񂾂Ƃ̓C
	tH_̃V[gJbg2dɕ\oOFix
0.03	t@CXgIȂꍇAgqȂoOFix
	tH_2\ꍇߏC
	gqȂꍇj󂵂ĂߏC
0.04	I\ׂđI{^ǉ(PocketPC)
	L[{[hV[gJbg(Ctrl+A)Ή(HPC)


@JҌA惁[AhX
y_nagamidori@mail.goo.ne.jp
