Код:
#include <windows.h>
#include <gdiplus.h>
#include "resource.h"
#define SAP_WIDTH 10 //Ширина поля
#define SAP_HEIGHT 10 //Высота поля
#define SAP_TOP 0 //Отступ сверху
#define SAP_LEFT 0 //Отступ слева
#define ID_BUTTON 10000
#define ID_BUTTON1 1000
#define ID_BUTTON2 20
#define ID_BUTTON3 30
#define ID_BUTTON4 40
#define IDD_DIALOG1 102
#pragma comment(lib,"gdiplus.lib")
#define IDB_BITMAP1 101
using namespace Gdiplus;
HINSTANCE hinst;
GdiplusStartupInput gdiplusstartupInput;
LRESULT CALLBACK WindowProc (HWND, UINT, WPARAM, LPARAM);
HWND button;
HWND Static;
ULONG_PTR gdiplustokend;
TCHAR szClassName[] = TEXT("Mywindow");
TCHAR MyClassName[] = TEXT("Mywindow");
LRESULT CALLBACK WindowProc (HWND, UINT, WPARAM, LPARAM);
void OnPaint(HDC hdc)
{
Graphics graphics(hdc);
SolidBrush brush(Color(255,255,0,0));
FontFamily fontfamily(TEXT("Times New Roman"));
Font font(&fontfamily,55,FontStyleRegular,UnitPixel);
PointF pointf(50.0f,5.f);
Bitmap* picture=Bitmap::FromResource(GetModuleHandle(NULL),MAKEINTRESOURCE(IDB_BITMAP1));
graphics.DrawImage(picture,0,0);
delete[] picture;
graphics.DrawString(TEXT(" Игра\nСапер"),-1,&font,pointf,&brush);
}
int WINAPI WinMain (HINSTANCE hinst,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
{
HWND hWnd;
MSG messages;
WNDCLASSEX wincl;
wincl.hInstance = hinst;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProc;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof (WNDCLASSEX);
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL;
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
if (!RegisterClassEx (&wincl))
return 0;
hWnd=CreateWindowEx(0,szClassName,TEXT("Игра Сапер"),WS_MINIMIZEBOX,600,250,310,405,NULL,NULL,NULL,NULL);
GdiplusStartup(&gdiplustokend,&gdiplusstartupInput,NULL);
ShowWindow (hWnd,nFunsterStil);
UpdateWindow(hWnd);
HMENU hMehu=CreateMenu();
AppendMenu(hMehu,MF_POPUP,ID_BUTTON,TEXT("Новая игра"));
AppendMenu(hMehu,MF_POPUP,ID_BUTTON1,TEXT("Выход"));
SetMenu(hWnd, hMehu);
while (GetMessage (&messages, NULL, 0, 0))
{
TranslateMessage(&messages);
DispatchMessage(&messages);
}
return messages.wParam;
}
LRESULT CALLBACK WindowProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
static int sx,sy;
int f[]={10};
BringWindowToTop(hWnd);
switch(message)
{
case WM_DESTROY:
PostQuitMessage(0); // сообщение о выходе из цыкла обработки. Закрытие программы.
break;
case WM_COMMAND:
switch (wParam)
{
case ID_BUTTON1:
DestroyWindow(hWnd); break;
break;
case ID_BUTTON:
MoveWindow(hWnd,600,250,310,405,TRUE);
CreateWindowEx(0,TEXT("button"),TEXT("Новичек"),WS_VISIBLE|WS_CHILD|WS_OVERLAPPED,90,250,100,25,hWnd,(HMENU)ID_BUTTON2,NULL,NULL);
CreateWindowEx(0,TEXT("button"),TEXT("Любитель"),WS_VISIBLE|WS_CHILD,90,280,100,25,hWnd,(HMENU)ID_BUTTON3,hinst,NULL);
CreateWindowEx(0,TEXT("button"),TEXT("Професионал"),WS_VISIBLE|WS_CHILD,90,310,100,25,hWnd,(HMENU)ID_BUTTON4,hinst,NULL);
break;
case ID_BUTTON2:
MoveWindow(hWnd,600,300,305,345,1);
for(int x=0; x<SAP_WIDTH; x++)
for(int y=0; y<SAP_HEIGHT; y++){
//Создаем кнопки с индентификаторами от 1 до ...
CreateWindowEx(0,TEXT("BUTTON"),TEXT(""),
WS_CHILD | WS_VISIBLE | BS_BITMAP, SAP_LEFT+x*29,SAP_TOP+y*29,29,29,
hWnd,NULL,NULL,0);
}
break;
case ID_BUTTON3:
MoveWindow(hWnd,600,300,500,540,1);
for(int x=0; x<16; x++)
for(int y=0; y<16; y++){
//Создаем кнопки с индентификаторами от 1 до ...
CreateWindowEx(0,TEXT("BUTTON"),TEXT(""),
WS_CHILD | WS_VISIBLE | BS_BITMAP, SAP_LEFT+x*30,SAP_TOP+y*30,30,30,
hWnd,NULL,NULL,0);
}
break;
case ID_BUTTON4:
MoveWindow(hWnd,400,200,740,790,1);
for(int x=0; x<24; x++)
for(int y=0; y<24; y++){
//Создаем кнопки с индентификаторами от 1 до ...
CreateWindowEx(0,TEXT("BUTTON"),TEXT(""),
WS_CHILD | WS_VISIBLE | BS_BITMAP, SAP_LEFT+x*30,SAP_TOP+y*30,30,30,
hWnd,NULL,NULL,0);
}
break;
case WM_LBUTTONDOWN:
sx = LOWORD(lParam);
sy = HIWORD(lParam);
break;
default: return 0;
}
case WM_CREATE:
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
OnPaint( hdc);
EndPaint(hWnd,&ps);
break;
default:
return DefWindowProc(hWnd,message,wParam,lParam);
}
return 0;
}