Страница 1 из 1

Непонятное поведение диалога, вызываемого из WFX

Добавлено: Ср июн 11, 2008 22:00
mmm3396
Пишу файлсистемный плагин. Нужно вызвать диалог для задания режимов работы. Для этого создал "псевдокаталог". Вызываю из FsFindFirst (пишу на Visual C++ 6.0):
DialogBox(HInstance, MAKEINTRESOURCE(IDD_DIALOG1), window, DlgProc);
Ну, и пишу DlgProc.

Код: Выделить всё

BOOL CALLBACK DlgProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
  switch (uMsg){
    case WM_INITDIALOG:
      break;
    case WM_CLOSE:
      EndDialog(hWnd,0);
      break;
    default:
      return FALSE;
  }// switch
  return TRUE;
}
К сожалению, наблюдается странность. :( После запуска Total Commander диалог появляется, и с ним можно работать. Но стоит перезапустить TC, и диалог уже не показывается. Надо либо перезагружать компьютер, либо что-то немного изменить в исходниках программы, чтобы выполнилась перекомпиляция. До следующего перезапуска TC можно работать.
Я не являюсь крутым программистом, на поиски в литературе или в сети каких-то упоминаний о чем-то подобном могу потратить недели (и уже потратил), поэтому решился обратиться сюда за возможной консультацией... :?

Добавлено: Чт июн 12, 2008 03:19
VadiMGP
Похоже, что ты привел не реальный код, а, только иллюстрацию. По крайней мере диалог с такой процедурой ничего делать не может. Даже на кнопку ОК нету обработки.
Лучше покажи код полностью.
И кто является у тебя родительским окном?

Добавлено: Чт июн 12, 2008 21:43
mmm3396
Спасибо за намек! "И кто является у тебя родительским окном?"
Я начал внимательнее изучать тему, посвященную определению хэндла окна, и обнаружил твое добавление к ней: "if (strcmp(WindowClass,"TTOTAL_CMD")==0)".
Вставил, и как будто заработало. До этого использовалось "if(IsWindowVisible(hWindow))".
Спавибо! Похоже, тема закрывается...