Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ch-11.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
1.26 Mб
Скачать

Создание окна диалога About

Даже в тех программах для Windows, в которых ввод не требуется, окно диалога будет появляться достаточно часто, оно вызывается опцией About меню большинства программ. В этом окне диалога на экран выводится имя и значок программы, сведения об авторских правах, кнопка с надписью OK и, может быть, еще какая-то информация. Предлагаемая вашему вниманию программа не делает ничего, кроме отображения окна диалога About. Программа ABOUT1 представлена на рис. 11.1.

ABOUT1.MAK

#----------------------

# ABOUT1.MAK make file

#----------------------

about1.exe : about1.obj about1.res

$(LINKER) $(GUIFLAGS) -OUT:about1.exe about1.obj about1.res $(GUILIBS)

about1.obj : about1.c about1.h

$(CC) $(CFLAGS) about1.c

about1.res : about1.rc about1.h about1.ico

$(RC) $(RCVARS) about1.rc

ABOUT1.C

/*------------------------------------------

ABOUT1.C -- About Box Demo Program No. 1

(c) Charles Petzold, 1996

------------------------------------------*/

#include <windows.h>

#include "about1.h"

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

BOOL CALLBACK AboutDlgProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,

PSTR szCmdLine, int iCmdShow)

{

static char szAppName[] = "About1" ;

MSG msg ;

HWND hwnd ;

WNDCLASSEX wndclass ;

wndclass.cbSize = sizeof (wndclass) ;

wndclass.style = CS_HREDRAW | CS_VREDRAW ;

wndclass.lpfnWndProc = WndProc ;

wndclass.cbClsExtra = 0 ;

wndclass.cbWndExtra = 0 ;

wndclass.hInstance = hInstance ;

wndclass.hIcon = LoadIcon (hInstance, szAppName) ;

wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;

wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;

wndclass.lpszMenuName = szAppName ;

wndclass.lpszClassName = szAppName ;

wndclass.hIconSm = LoadIcon (hInstance, szAppName) ;

RegisterClassEx (&wndclass) ;

hwnd = CreateWindow (szAppName, "About Box Demo Program",

WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT, CW_USEDEFAULT,

CW_USEDEFAULT, CW_USEDEFAULT,

NULL, NULL, hInstance, NULL) ;

ShowWindow (hwnd, iCmdShow) ;

UpdateWindow (hwnd) ;

while (GetMessage (&msg, NULL, 0, 0))

{

TranslateMessage (&msg) ;

DispatchMessage (&msg) ;

}

return msg.wParam ;

}

LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)

{

static WNDPROC lpfnAboutDlgProc ;

static HINSTANCE hInstance ;

switch (iMsg)

{

case WM_CREATE :

hInstance = ((LPCREATESTRUCT) lParam)->hInstance ;

return 0 ;

case WM_COMMAND :

switch (LOWORD (wParam))

{

case IDM_ABOUT :

DialogBox (hInstance, "AboutBox", hwnd, AboutDlgProc) ;

return 0 ;

}

break ;

case WM_DESTROY :

PostQuitMessage (0) ;

return 0 ;

}

return DefWindowProc (hwnd, iMsg, wParam, lParam) ;

}

BOOL CALLBACK AboutDlgProc (HWND hDlg, UINT iMsg, WPARAM wParam, LPARAM lParam)

{

switch (iMsg)

{

case WM_INITDIALOG :

return TRUE ;

case WM_COMMAND :

switch (LOWORD (wParam))

{

case IDOK :

case IDCANCEL :

EndDialog (hDlg, 0) ;

return TRUE ;

}

break ;

}

return FALSE ;

}

ABOUT1.RC

/*---------------------------

ABOUT1.RC resource script

---------------------------*/

#include <windows.h>

#include "about1.h"

About1 ICON about1.ico

About1 MENU

{

POPUP "&Help"

{

MENUITEM "&About About1...", IDM_ABOUT

}

}

AboutBox DIALOG 20, 20, 160, 80

STYLE WS_POPUP | WS_DLGFRAME

{

CTEXT "About1" -1, 0, 12, 160, 8

ICON "About1" -1, 8, 8, 0, 0

CTEXT "About Box Demo Program" -1, 0, 36, 160, 8

CTEXT "(c) Charles Petzold, 1996" -1, 0, 48, 160, 8

DEFPUSHBUTTON "OK" IDOK, 64, 60, 32, 14, WS_GROUP

}

ABOUT1.H

/*----------------------

ABOUT1.H header file

----------------------*/

#define IDM_ABOUT 1

ABOUT1.ICO

Рис. 11.1. Программа ABOUT1

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]