It's easier than you think if you are using MFC:

Code:
  CFileDialog fileDlg(TRUE, L"txt", L"foo.txt");
  // Display the file dialog. When user clicks OK, fileDlg.DoModal() 
  // returns IDOK.
  if( fileDlg.DoModal ()==IDOK )
  {
     CString filename =  fileDlg.GetPathName();
     ...
  }
For non-MFC it is slightly trickier, but straightforward:

Code:
OPENFILENAME ofn;       // common dialog box structure
char szFile[260];       // buffer for file name
HWND hwnd;              // owner window
HANDLE hf;              // file handle

// Initialize OPENFILENAME
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;
ofn.lpstrFile = szFile;

// Set lpstrFile[0] to '\0' so that GetOpenFileName does not 
// use the contents of szFile to initialize itself.
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = "Text\0*.TXT\0";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;

// Display the Open dialog box. 
if (GetOpenFileName(&ofn)==TRUE) {
    ...
    ofn.lpstrFile contains the file name
}