Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programmirovanie_elektronnykh_ustroystv.doc
Скачиваний:
53
Добавлен:
28.05.2015
Размер:
1.44 Mб
Скачать

Void OnServerAccept(wparam, lparam);

bool Start(HWND);

void Stop();

char g_szStatus[512];

SOCKET g_serverSocket;

// Функция вызывается автоматически, когда программа запускается

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)

{

HWND hWnd;

MSG msg;

WNDCLASSEX wndclass;

// Настройка класса окна

wndclass.cbSize = sizeof(WNDCLASSEX);

wndclass.style = CS_HREDRAW | CS_VREDRAW;

wndclass.lpfnWndProc = WndProc;

wndclass.cbClsExtra = 0;

wndclass.cbWndExtra = 0;

wndclass.hInstance = hInstance;

wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);

wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);

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

wndclass.lpszMenuName = NULL;

wndclass.lpszClassName = “Window Class”; // Имя класса

wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

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

if(RegisterClassEx(&wndclass) == 0)

{

// Сбой программы, выход

return 0;

}

// Создание окна

hWnd = CreateWindowEx(

WS_EX_OVERLAPPEDWINDOW,

«Window Class», // Имя класса

«Сервер», // Текст заголовка

WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX,

CW_USEDEFAULT,

CW_USEDEFAULT,

600,

100,

NULL,

NULL,

hInstance,

NULL);

// Отображение окна

ShowWindow(hWnd, iCmdShow);

// Обработка сообщений, пока программа не будет прервана

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

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

return (int)msg.wParam;

}

// Функция обратного вызова для обработки сообщений

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

{

HDC hDC;

PAINTSTRUCT ps;

switch(iMsg)

{

// Вызывается сразу же при создании окна функцией CreateWindow() (или CreateWindowEx())

case WM_CREATE:

strcpy(g_szStatus, «Щелкните левой кнопкой мыши для запуска сервера, правой для его остановки»);

// g_serverSocket инициализируется значением недействительного сокета

g_serverSocket = INVALID_SOCKET;

break;

// Вызывается, когда пользователь отпускает левую кнопку мыши

case WM_LBUTTONUP:

// Запуск сервера

Start(hWnd);

// Перерисовка окна (генерация сообщения WM_PAINT)

InvalidateRect(hWnd, NULL, TRUE);

break;

// Вызывается, когда пользователь отпускает правую кнопку мыши

case WM_RBUTTONUP:

// Остановка сервера

Stop();

InvalidateRect(hWnd, NULL, TRUE);

break;

case WM_SERVER_ACCEPT:

OnServerAccept(wParam, lParam);

InvalidateRect(hWnd, null, true);

break;

// Вызывается, когда окно обновляется

case WM_PAINT:

hDC = BeginPaint(hWnd, &ps);

TextOut(hDC, 20, 20, g_szStatus, (int)strlen(g_szStatus));

EndPaint(hWnd, &ps);

break;

// Вызывается, когда пользователь закрывает окно

case WM_DESTROY:

// Остановка сервера при закрытии окна

Stop();

PostQuitMessage(0);

break;

default:

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

}

return 0;

}

Void OnServerAccept(wparam wParam, lparam lParam)

{

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