GENERIC.C

Generic.c содержит код Обобщенного приложения. Он включает в себя Generic.h.

/********************************************************************\

*               generic.c: Источниковый код для generic *

* Комментарий: Обобщенное приложение *

* Функции: *

* WinMain - точка входа в приложение *

* MainWndProc - главная оконная процедура *

* AboutDlgProc - процедура диалога About *

\********************************************************************/

/********************* Заголовочные файлы *********************/

#include <windows.h>

#include "generic.h"

/********************* Прототипы функций ***********************/

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

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

/******************* Глобальные переменные ********************/

HANDLE ghInstance;

/********************************************************************\

* Функция: int PASCAL WinMain(HINSTANCE, HINSTANCE, LPSTR, int) *

* Назначение: Инициализация приложения *

* Комментарий: Регистрирует класс окна, создает и показывает главное*

окно и запускает цикл сообщений. *

\********************************************************************/

int PASCAL WinMain( HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpszCmdLine,

int nCmdShow )

{

WNDCLASS wc;

MSG msg;

HWND hWnd;

BOOL bRet;

if( !hPrevInstance )

{

wc.lpszClassName = "GenericAppClass";

wc.lpfnWndProc = MainWndProc;

wc.style = CS_OWNDC | CS_VREDRAW | CS_HREDRAW;

wc.hInstance = hInstance;

wc.hIcon = LoadIcon( NULL, IDI_APPLICATION );

wc.hCursor = LoadCursor( NULL, IDC_ARROW );

wc.hbrBackground = (HBRUSH)( COLOR_WINDOW+1 );

wc.lpszMenuName = "GenericAppMenu";

wc.cbClsExtra = 0;

wc.cbWndExtra = 0;

RegisterClass( &wc );

}

ghInstance = hInstance;

hWnd = CreateWindow( "GenericAppClass",

"Generic Application",

WS_OVERLAPPEDWINDOW|WS_HSCROLL|WS_VSCROLL,

0,

0,

CW_USEDEFAULT,

CW_USEDEFAULT,

NULL,

NULL,

hInstance,

NULL

);

ShowWindow( hWnd, nCmdShow );

while( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0 )

{

if (bRet == -1)

{

// обработка ошибки и возможный выход из программы

}

else

{

TranslateMessage( &msg );

DispatchMessage( &msg );

}

}

return (int)msg.wParam;

}

/********************************************************************\

* Функция: LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM) *

* Назначение: Обрабатывает сообщения приложения *

* Комментарий: Обрабатываются следующие сообщения *

 WM_PAINT *

 WM_COMMAND *

 WM_DESTROY *

\********************************************************************/

LRESULT CALLBACK MainWndProc( HWND hWnd, UINT msg, WPARAM wParam,

LPARAM lParam )

{

PAINTSTRUCT ps;

HDC hDC;

switch( msg ) {

/**************************************************************\

* WM_PAINT: *

\**************************************************************/

case WM_PAINT:

hDC = BeginPaint( hWnd, &ps );

TextOut( hDC, 10, 10, "Hello, World!", 13 );

EndPaint( hWnd, &ps );

break;

/**************************************************************\

* WM_COMMAND: *

\**************************************************************/

case WM_COMMAND:

switch( wParam ) {

case IDM_ABOUT:

DialogBox( ghInstance, "AboutDlg", hWnd, (DLGPROC)

AboutDlgProc );

break;

}

break;

/**************************************************************\

* WM_DESTROY: Вызывается PostQuitMessage() *

\**************************************************************/

case WM_DESTROY:

PostQuitMessage( 0 );

break;

/**************************************************************\

* Даем возможность оконной процедуре по умолчанию обрабатывать*

* все другие сообщения *

\**************************************************************/

default:

return( DefWindowProc( hWnd, msg, wParam, lParam ));

}

return 0;

}

/********************************************************************\

* Функция : LRESULT CALLBACK AboutDlgProc(HWND, UINT, WPARAM, LPARAM)*

* Назначение: Обрабатывать сообщения диалогового окна "About" *

* Комментарий: Диалог About показывается га экране тогда, когда *

* пользователь щелкает по About в меню Help. *

\********************************************************************/

LRESULT CALLBACK AboutDlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM 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