Следующий код использует кнопку Cancel общего диалога для обновления списка:
BOOL CALLBACK __export FileOpenHook (HWND hDlg, UINT message,
WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_COMMAND:
switch(wParam)
{
// Далее эмулируем двойной щелчёк на списке директорий,
// заставляя диалог по новой считать текущую директорию
// с файлами и обновить список файлов.
case IDCANCEL :
PostMessage( hDlg, WM_COMMAND, lst2,
MAKELPARAM(GetDlgItem(hDlg, lst2),
LBN_DBLCLK);
return TRUE;
}
break;
}
return FALSE;
}
Если приложение для платформы Win32, то уведомительное сообщение отправляется немного подругому; ниже приведён код PostMessage для приложений Win32:
PostMessage (hDlg, WM_COMMAND, MAKEWPARAM (lst2,LBN_DBLCLK),
(LPARAM)GetDlgItem (hDlg, lst2));
Приложения, использующие ID элементов управления общего диалога должны включать файл DLGS.H.
Шаблоны для общих диалогов находятся в директории \SAMPLES\COMMDLG либо в директории \INCLUDE дистрибутива Windows SDK.