Лаба

Лаба


// Win32Project1.cpp : Defines the entry point for the application.

//


#include "stdafx.h"

#include "Win32Project1.h"

#include <commctrl.h>



#define MAX_LOADSTRING 100


// Global Variables:

HINSTANCE hInst;                // current instance

WCHAR szTitle[MAX_LOADSTRING];         // The title bar text

WCHAR szWindowClass[MAX_LOADSTRING];      // the main window class name


// Forward declarations of functions included in this code module:

ATOM        MyRegisterClass(HINSTANCE hInstance);

BOOL        InitInstance(HINSTANCE, int);

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

INT_PTR CALLBACK  About(HWND, UINT, WPARAM, LPARAM);


static HWND hwndToolBar;


TBBUTTON tbb[] = {

{

STD_FILENEW, ID_FILE_NEW, TBSTATE_ENABLED, TBSTYLE_BUTTON,0,0,0,0 },

{

STD_FILEOPEN, ID_FILE_OPEN,TBSTATE_ENABLED, TBSTYLE_BUTTON,0,0,0,0 },

{ STD_FILESAVE, ID_FILE_SAVE,TBSTATE_ENABLED, TBSTYLE_BUTTON,0,0,0,0 } 

};


int APIENTRY wWinMain(_In_ HINSTANCE hInstance,

           _In_opt_ HINSTANCE hPrevInstance,

           _In_ LPWSTR  lpCmdLine,

           _In_ int    nCmdShow)

{

  UNREFERENCED_PARAMETER(hPrevInstance);

  UNREFERENCED_PARAMETER(lpCmdLine);


  // TODO: Place code here.


  // Initialize global strings

  LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);

  LoadStringW(hInstance, IDC_WIN32PROJECT1, szWindowClass, MAX_LOADSTRING);

  MyRegisterClass(hInstance);


  // Perform application initialization:

  if (!InitInstance (hInstance, nCmdShow))

  {

    return FALSE;

  }


  HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WIN32PROJECT1));


  MSG msg;


  // Main message loop:

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

  {

    if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))

    {

      TranslateMessage(&msg);

      DispatchMessage(&msg);

    }

  }


  return (int) msg.wParam;

}




//

// FUNCTION: MyRegisterClass()

//

// PURPOSE: Registers the window class.

//

ATOM MyRegisterClass(HINSTANCE hInstance)

{

  WNDCLASSEXW wcex;


  wcex.cbSize = sizeof(WNDCLASSEX);


  wcex.style     = CS_HREDRAW | CS_VREDRAW;

  wcex.lpfnWndProc  = WndProc;

  wcex.cbClsExtra   = 0;

  wcex.cbWndExtra   = 0;

  wcex.hInstance   = hInstance;

  wcex.hIcon     = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WIN32PROJECT1));

  wcex.hCursor    = LoadCursor(nullptr, IDC_ARROW);

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

  wcex.lpszMenuName  = MAKEINTRESOURCEW(IDC_WIN32PROJECT1);

  wcex.lpszClassName = szWindowClass;

  wcex.hIconSm    = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));


  return RegisterClassExW(&wcex);

}


//

//  FUNCTION: InitInstance(HINSTANCE, int)

//

//  PURPOSE: Saves instance handle and creates main window

//

//  COMMENTS:

//

//    In this function, we save the instance handle in a global variable and

//    create and display the main program window.

//

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)

{

  hInst = hInstance; // Store instance handle in our global variable


  HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,

   CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);


  if (!hWnd)

  {

   return FALSE;

  }


  ShowWindow(hWnd, nCmdShow);

  UpdateWindow(hWnd);


  return TRUE;

}


//

// FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)

//

// PURPOSE: Processes messages for the main window.

//

// WM_COMMAND - process the application menu

// WM_PAINT  - Paint the main window

// WM_DESTROY - post a quit message and return

//

//

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


{

int wmId, wmEvent;

PAINTSTRUCT ps;

HDC hdc;

//переменная для панели управления

static HWND hwndToolBar;


switch (message)

{

//создание панели управления с 3 кнопками

case WM_CREATE:

hwndToolBar = CreateToolbarEx(hWnd, WS_CHILD | WS_VISIBLE | CCS_TOP, 1, 0, HINST_COMMCTRL, IDB_STD_SMALL_COLOR, tbb, 3, 0, 0, 0, 0, sizeof(TBBUTTON));

break;

//обработка сообщений от кнопок с панели управления


case WM_COMMAND:

if ((LOWORD(wParam) == ID_FILE_NEW))

MessageBox(hWnd, _T("Вы выбрали на панели управления кнопку ID_FILE_NEW"), _T("MessageBox"), MB_OK | MB_ICONWARNING);

if ((LOWORD(wParam) == ID_FILE_OPEN))

MessageBox(hWnd, _T("Вы выбрали на панели управления кнопку ID_FILE_OPEN"), _T("MessageBox"), MB_OK | MB_ICONWARNING);

if ((LOWORD(wParam) == ID_FILE_SAVE))

MessageBox(hWnd, _T("Вы выбрали на панели управления кнопку ID_FILE_SAVE"), _T("MessageBox"), MB_OK | MB_ICONWARNING);


wmId = LOWORD(wParam);

wmEvent = HIWORD(wParam);

// Parse the menu selections:

switch (wmId)

{

case IDM_ABOUT:

DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);

break;

case IDM_EXIT:

DestroyWindow(hWnd);

break;

default:

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

}

break;

case WM_PAINT:

hdc = BeginPaint(hWnd, &ps);

// TODO: Add any drawing code here...

EndPaint(hWnd, &ps);

break;

case WM_DESTROY:

PostQuitMessage(0);

break;

default:

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

}

return 0;

}


// Message handler for about box.

INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)

{

  UNREFERENCED_PARAMETER(lParam);

  switch (message)

  {

  case WM_INITDIALOG:

    return (INT_PTR)TRUE;


  case WM_COMMAND:

    if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)

    {

      EndDialog(hDlg, LOWORD(wParam));

      return (INT_PTR)TRUE;

    }

    break;

  }

  return (INT_PTR)FALSE;

}


Report Page