Я пытаюсь использовать шаблон с GetOpenFileName без успеха. Я нашел очень мало по этой теме в MSDN или в Интернете. Я основал свою попытку на том, что увидел здесь
http://visual -c.itags.org / видео-с-с ++ / 77687 /
Мой код следующий. Комментарии ШАБЛОНА показывают, где я внес изменения в код b4 попытки шаблона; в основном для удаления определенных строк. Отображаются открытые окна обычного типа проводника Windows, но без дополнений, которые я хочу сделать с шаблоном. Я совсем не уверен, что должно быть в функции ловушки, но я знаю, что она не вызывается, поскольку я установил точку останова там.
// Global variable
OPENFILENAME IFN;
// In WndProc
case WM_CREATE:
IFN.hInstance = ((LPCREATESTRUCT)lParam)->hInstance; // TEMPLATE
IFN.hwndOwner = hWnd; // TEMPLATE
break;
// In WndProc menu processing
case IDM_INPUT_FILE:
{
// OPENFILENAME IFN; // TEMPLATE
strcpy (szFile,"NEWEXPORT.GED");
IFN.lStructSize = sizeof(IFN);
// IFN.hwndOwner = hWnd; // TEMPLATE
// IFN.hInstance = NULL; // TEMPLATE
IFN.lpstrFilter = "All\0*.*\0GEDCOM\0*.GED\0";
IFN.nFilterIndex = 2;
IFN.lpstrCustomFilter = NULL;
IFN.lpstrFile = szFile;
IFN.nMaxFile = 510;
IFN.lpstrFileTitle = NULL;
IFN.lpstrInitialDir = NULL;
IFN.lpstrTitle = NULL;
IFN.Flags = OFN_FILEMUSTEXIST || OFN_PATHMUSTEXIST || OFN_EXPLORER || OFN_ENABLETEMPLATE || OFN_ENABLEHOOK ; // TEMPLATE
IFN.lpstrDefExt = NULL;
IFN.lpfnHook = FileAddOn; // TEMPLATE NULL;
IFN.lpTemplateName = MAKEINTRESOURCE(IDD_FILEADDON); // TEMPLATE
if (!GetOpenFileName(&IFN))
{
Beep (1000,500);
break;
}
// **************** Hook function
UINT_PTR CALLBACK FileAddOn (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
break;
}
return TRUE;
}
// IDD_FILEADDON was made with the visual C dialog editor and has the following properties
// Style=Child, Border=none,clip siblings,3D look