●GetOpenFileNameのサンプルプログラム
#include <windows.h>
#include <memory.h>

#define FILENAMESIZE	512

BOOL OpenFileDialog(HWND hwnd,char *szFileName)
{
        char szFilter[] = "テキスト(*.txt)\0*.txt\0すべて(*.*)\0*.*\0";
	OPENFILENAME	ofn;

	memset(&ofn,0,sizeof(OPENFILENAME));
	ofn.lStructSize = sizeof(OPENFILENAME);
	ofn.hwndOwner = hwnd;
	ofn.lpstrFilter = szFilter;
	ofn.nFilterIndex = 1;
	ofn.lpstrFile = szFileName;
	ofn.nMaxFile = FILENAMESIZE;
	ofn.lpstrTitle = "ファイル名の取得";
	ofn.lpstrDefExt = "sqf";
	ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;

	return ( GetOpenFileName(&ofn) );
}

int WINAPI
WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{

	char szMessage[1024];
	char szFileName[FILENAMESIZE];

	if ( OpenFileDialog(NULL,szFileName) ){
		wsprintf(szMessage,"'%s'が選択されました",szFileName);
	} else {
		wsprintf(szMessage,"キャンセルされました");
	}

	MessageBox(NULL,szMessage,"結果",MB_ICONINFORMATION | MB_OK);
	return (0);
}