Диалоговое окно “О программе…”

Диалоговое окно – это временное окно, которое показывает на экране информацию или запрашивает пользователя о вводе данных. Обобщенное приложение включает в себя блок диалога About (О программе…). Каждое приложение должно включать в себя диалоговое окно About. Блок диалога показывает на экране такую информацию как имя приложения и информацию об авторских правах.

Вы создаете и показываете на экране блок диалога при помощи использования функции DialogBox. Эта функция берет шаблон диалогового окна и создает блок диалога.

Обобщенное приложение включает в себя нижеследующий шаблон диалогового окна в файле определения ресурса:

AboutDlg DIALOG FIXED 6, 21, 198, 99
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "About Generic"
FONT 8, "MS Shell Dlg"
BEGIN   
 DEFPUSHBUTTON   "&OK", IDOK, 72, 74, 40, 14
    LTEXT           "Generic Application", 104, 45, 14,
                    128, 8
    LTEXT           "Written as a sample", 105, 45, 35, 59, 8
    LTEXT           "Microsoft Corporation", 106, 45, 45, 98, 8
    LTEXT           "Copyright (c) 1996", 107, 45,
                    54, 138, 8
END

Имя источника определено как AboutDlg. Для получения дополнительной информации, см. статью Ресурс диалогового окна.

Когда пользователь нажимает кнопку About в меню Help, нижеследующий код в оконной процедуре показывает на экране диалоговое окно About:

case WM_COMMAND:
   switch( wParam ) {
      case IDM_ABOUT:
         DialogBox( ghInstance, "AboutDlg", hWnd, (DLGPROC)
                    AboutDlgProc );
      break;
   }
break;

Последний параметр - указатель на процедуру диалогового окна. Он имеет нижеследующий прототип.

LRESULT WINAPI AboutDlgProc( HWND, UINT, WPARAM, LPARAM );

Процедура диалогового окна похожа на оконную процедуру, но обычно обрабатывает только инициализацию диалогового окна и сообщения ввода данных пользователем. Обобщенное приложение содержит нижеследующее сообщение, обрабатывающее код:

switch( uMsg ) {
   case WM_INITDIALOG:
      return TRUE;
   case WM_COMMAND:
      switch( wParam ) {
         case IDOK:
            EndDialog( hDlg, TRUE );
            return TRUE;
      }
   break;
}

return FALSE;

 

Назад в оглавление
На главную страницу темы

Hosted by uCoz