Int WINAPI WinMain ( HINSTANCE hInst, HINSTANCE, LPSTR, int )

{

char szClassName[]="MainWindow";

char szTitle[]="Программа 2-1";

MSG Msg;

WNDCLASS wc;

// --- Обнуление и инициализация структуры wc

memset ( &wc, 0, sizeof(wc) );

wc.lpfnWndProc = WndProc;

wc.hInstance = hInst;

wc.hIcon = LoadIcon ( NULL, IDI_APPLICATION );

wc.hCursor = LoadCursor ( NULL, IDC_ARROW );

wc.hbrBackground = GetStockBrush ( LTGRAY_BRUSH );

wc.lpszClassName = szClassName;

// --- Регистрация класса главного окна в системе

RegisterClass ( &wc );

// --- Создние главного окна

HWND hwnd = CreateWindow ( szClassName, szTitle,

WS_OVERLAPPEDWINDOW, 10, 10, 250, 100,

HWND_DESKTOP, NULL, hInst, NULL );

// --- Показать главное окно

ShowWindow ( hwnd, SW_SHOWNORMAL );

// --- Цикл обработки оконных сообщений

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

DispatchMessage ( &Msg );

// --- Возврат в систему

return 0;

}

/* --- Оконная функция главного окна */

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

{

Switch ( msg )

{ case WM_DESTROY:

PostQuitMessage ( 0 );

return 0;

default:

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

}

}

// File 8-3.cpp

#define STRICT

#include <windows.h>

#include <windowsx.h>

#include <commctrl.h>

#include <math.h> // sin(), acos()

#include "8-3.h"

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

//int nPhase=0; // Сдвиг фаз

int nFreq=1; // Отношение частот

HINSTANCE hInstance;

HWND hwndGraph, hwndTrack, hwndScroll, hwndStatic;

HPEN hRedPen;

HBRUSH hGreyBrush;

SCROLLINFO sinfo;

/* --- Главная функция */

Int WINAPI WinMain ( HINSTANCE hInst, HINSTANCE, LPSTR, int )

{

char szClassName[]="MainWindow";

char szTitle[]="Программа 8-3";

MSG Msg;

WNDCLASS wc;

// --- Обнуление и инициализация структуры wc главного окна

hInstance = hInst;

InitCommonControls();

memset ( &wc, 0, sizeof(wc) );

wc.lpfnWndProc = WndProc;

wc.hInstance = hInst;

wc.hIcon = LoadIcon ( NULL, IDI_APPLICATION );

wc.hCursor = LoadCursor ( NULL, IDC_ARROW );

//wc.hbrBackground = GetStockBrush ( LTGRAY_BRUSH );

hGreyBrush = CreateSolidBrush ( RGB ( 160, 160, 160 ) );

wc.hbrBackground = hGreyBrush;

wc.lpszClassName = szClassName;

// --- Регистрация класса главного окна в системе

RegisterClass ( &wc );

// --- Инициализация структуры wc окна графики

wc.lpszClassName = "Graph";

wc.lpfnWndProc = GraphWndProc;

wc.hbrBackground = GetStockBrush ( WHITE_BRUSH );

// --- Регистрация класса окна графики в системе

RegisterClass ( &wc );

// --- Создние главного окна

HWND hwnd = CreateWindow ( szClassName, szTitle,

WS_OVERLAPPEDWINDOW, 10, 10, 0, 0,

HWND_DESKTOP, NULL, hInst, NULL );

// --- Показать главное окно

ShowWindow ( hwnd, SW_SHOWNORMAL );

// --- Цикл обработки оконных сообщений

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

DispatchMessage ( &Msg );

// --- Возврат в систему

return 0;

}

/* --- Оконная функция главного окна */

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

{

Switch ( msg )

{ HANDLE_MSG ( hwnd, WM_CREATE, OnCreate );

HANDLE_MSG ( hwnd, WM_HSCROLL, OnHScroll );

HANDLE_MSG ( hwnd, WM_GETMINMAXINFO, OnGetMinMaxInfo );

HANDLE_MSG ( hwnd, WM_DESTROY, OnDestroy );

default:

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

}

}

/* --- Обработчик сообщения WM_CREATE */

BOOL OnCreate ( HWND hwnd, LPCREATESTRUCT )

{

// --- Окно графики

hRedPen = CreatePen ( PS_SOLID, 1, RGB ( 255, 0, 0 ) );

hwndGraph = CreateWindow ( "Graph", NULL,

WS_CHILD|WS_VISIBLE|WS_BORDER,

10, 10, 220, 220,

hwnd, NULL, hInstance, NULL );

// --- Линейка с ползунком

hwndTrack = CreateWindowEx ( 0, TRACKBAR_CLASS, NULL,

WS_CHILD|WS_VISIBLE|TBS_AUTOTICKS,

250, 55, 208, 30,

hwnd, NULL, hInstance, NULL );

SendMessage ( hwndTrack, TBM_SETRANGE, TRUE, MAKELPARAM(1,10) );

SendMessage ( hwndTrack, TBM_SETPAGESIZE, 0, 1 );

SendMessage ( hwndTrack, TBM_SETPOS, TRUE, 1 );

// --- Поясняющие надписи на линейке с ползунком

CreateWindow ( "STATIC", "Отношение частот по осям",

WS_CHILD|WS_VISIBLE|SS_LEFT,

260, 25, 220, 22,

hwnd, NULL, hInstance, NULL );

CreateWindow ( "STATIC", "1 2 3 4 5 6 7 8 9 10",

WS_CHILD|WS_VISIBLE|SS_LEFT,

260, 85, 220, 22,

hwnd, NULL, hInstance, NULL );

// --- Линейка прокрутки

sinfo.cbSize = sizeof(SCROLLINFO);

sinfo.fMask = SIF_ALL;

sinfo.nMin = 0;

sinfo.nMax = 180;

sinfo.nPage = 15;

sinfo.nPos = 0;

hwndScroll = CreateWindow ( "SCROLLBAR", NULL,

WS_CHILD|WS_VISIBLE,

260, 160, 200, 20,

hwnd, NULL, hInstance, NULL );

SetScrollInfo ( hwndScroll, SB_CTL,&sinfo, TRUE );

// --- Поясняющие надписи для линейки прокрутки

CreateWindow ( "STATIC", "Сдвиг фаз в градусах",

WS_CHILD|WS_VISIBLE|SS_LEFT,

280, 130, 200, 22,

hwnd, NULL, hInstance, NULL );

CreateWindow ( "STATIC", "0",

WS_CHILD|WS_VISIBLE|SS_LEFT,

280, 180, 22, 22,

hwnd, NULL, hInstance, NULL );

CreateWindow ( "STATIC", "180",

WS_CHILD|WS_VISIBLE|SS_LEFT,

430, 180, 40, 22,

hwnd, NULL, hInstance, NULL );

// --- Статический элемент для вывода сдвига фаз

hwndStatic = CreateWindow ( "STATIC", "00",

WS_CHILD|WS_VISIBLE|SS_LEFT,

355, 200, 50, 20,

hwnd, NULL, hInstance, NULL );

return TRUE;

}

Наши рекомендации