
- •Int pascal WinMain (hinstance hInst, hinstance hPreInst,
- •If(!hPreInst)
- •Int pascal WinMain (hinstance hInst, hinstance hPreInst,
- •If(!hPreInst)
- •ValidateRect(hWnd, null);
- •ValidateRect(hWnd, null);
- •ValidateRect(hWnd, null);
- •If(!hPreInst) {
- •If(!hPreInst){
- •ValidateRect(hWnd, null);
- •If(!hPreInst){
- •ValidateRect(hWnd, null);
- •If(!hPreInst){
- •If(!hPreInst){
- •ValidateRect(hWnd, null);
- •If(!hPreInst){
- •ValidateRect(hWnd, null);
- •If(!hPreInst){
- •ValidateRect(hWnd, null);
- •If(!hPreInst){
- •// Resource.H
- •If(!hPreInst)
If(!hPreInst){
wcApp.lpszClassName = (LPCWSTR)szProgName;
wcApp.hInstance = hInst;
wcApp.lpfnWndProc = WndProc;
wcApp.hCursor = LoadCursor(NULL, IDC_ARROW);
wcApp.hIcon = NULL;
//wcApp.lpszMenuName = (LPCWSTR)szApplName;
wcApp.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);
wcApp.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wcApp.style = CS_HREDRAW | CS_VREDRAW;
wcApp.cbClsExtra = 0;
wcApp.cbWndExtra = 0;
if(!RegisterClass(&wcApp))
return 0;
}
hWnd = CreateWindow((LPCWSTR)szProgName, (LPCWSTR)_T("Sizing A Rectangle"),
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT,(HWND)NULL,
(HMENU)NULL, (HINSTANCE)hInst,(LPSTR)NULL);
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
while(GetMessage(&lpMsg, NULL, 0, 0)){
TranslateMessage(&lpMsg);
DispatchMessage(&lpMsg);
}
return(lpMsg.wParam);
}
LRESULT CALLBACK WINAPI WndProc(HWND hWnd, UINT messg,
WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
static int xClientView, yClientView;
switch(messg){
case WM_COMMAND:
#ifdef _WIN32
switch(LOWORD(wParam)){
#else
switch(wParam){
#endif
case IDM_SMALL:
wSize=30;
break;
case IDM_MEDIUM:
wSize=60;
break;
case IDM_LARGE:
wSize=90;
break;
default:
break;
}
InvalidateRect(hWnd, NULL, TRUE);
break;
case WM_SIZE:
xClientView = LOWORD(lParam);
yClientView = HIWORD(lParam);
break;
case WM_PAINT:
hdc=BeginPaint(hWnd, &ps);
//-----Начало фрагмента пользователя-----
SetMapMode(hdc, MM_ISOTROPIC);
SetWindowExtEx(hdc, 500, 500, NULL);
SetViewportExtEx(hdc, xClientView, -yClientView, NULL);
SetViewportOrgEx(hdc, xClientView / 2, yClientView / 2, NULL);
Rectangle(hdc, -(wSize * 2), -wSize, (wSize * 2), wSize);
TextOut(hdc, -(wSize*2), (wSize * 2) + 20, (LPCWSTR)_T("A Sized Rectangle"), 17);
//-----Конец фрагмента пользователя-----
ValidateRect(hWnd, null);
EndPaint(hWnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return(DefWindowProc(hWnd, messg, wParam, lParam));
}
return(0);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// menu2.cpp
// resource.h
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by menu2.rc
//
#define IDR_MENU1 101
#define IDR_ACCELERATOR1 102
#define IDM_SMALL 40004
#define IDM_MEDIUM 40005
#define IDM_LARGE 40006
#define IDM_BLACK 40019
#define IDM_WHITE 40020
#define IDM_RED 40021
#define IDM_ORANGE 40022
#define IDM_YELLOW 40023
#define IDM_GREEN 40024
#define IDM_BLUE 40025
#define IDM_MAGENTA 40026
#define IDM_LTGREEN 40027
#define IDM_LTBLUE 40028
#define IDM_LTRED 40029
#define IDM_LTGRAY 40030
#define ID_BACKGROUND_BLACK 40031
// menu2.rc
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
IDR_MENU1 MENU
BEGIN
POPUP "&Rectangle_Size"
BEGIN
MENUITEM "&small", IDM_SMALL
MENUITEM "&Medium", IDM_MEDIUM
MENUITEM "&LARGE", IDM_LARGE
END
POPUP "Ba&ckground_Colors"
BEGIN
MENUITEM "BLAC&K\tF1", IDM_BLACK
MENUITEM "&WHITE\tF2", IDM_WHITE
MENUITEM "&RED\tF3", IDM_RED
MENUITEM "&ORANGE\tF4", IDM_ORANGE
MENUITEM "&YELLOW\tF5", IDM_YELLOW
MENUITEM "GREE&N\tF6", IDM_GREEN
MENUITEM "&BLUE\tF7", IDM_BLUE
MENUITEM "&MAGENTA\tF8", IDM_MAGENTA
MENUITEM SEPARATOR
MENUITEM "Lt GR&EEN\tF9", IDM_LTGREEN
MENUITEM "Lt BL&UE\tF10", IDM_LTBLUE
MENUITEM "Lt RE&D\tF11", IDM_LTRED
MENUITEM "Lt GR&AY\tF12", IDM_LTGRAY
END
END
/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//
IDR_ACCELERATOR1 ACCELERATORS
BEGIN
VK_F1, IDM_BLACK, VIRTKEY, NOINVERT
VK_F7, IDM_BLUE, VIRTKEY, NOINVERT
VK_F6, IDM_GREEN, VIRTKEY, NOINVERT
VK_F10, IDM_LTBLUE, VIRTKEY, NOINVERT
VK_F12, IDM_LTGRAY, VIRTKEY, NOINVERT
VK_F9, IDM_LTGREEN, VIRTKEY, NOINVERT
VK_F11, IDM_LTRED, VIRTKEY, NOINVERT
VK_F8, IDM_MAGENTA, VIRTKEY, NOINVERT
VK_F4, IDM_ORANGE, VIRTKEY, NOINVERT
VK_F3, IDM_RED, VIRTKEY, NOINVERT
VK_F2, IDM_WHITE, VIRTKEY, NOINVERT
VK_F5, IDM_YELLOW, VIRTKEY, NOINVERT
END
// menu2.сpp
// menu2.сpp
///…
LRESULT CALLBACK WINAPI WndProc(HWND, UINT, WPARAM, LPARAM);
char szProgName[] = "ProgName";
char szApplName[] = "IDR_MENU1"; // IDR_MENU1===ShapeMenu
static WORD wSize = 30;
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPreInst,
LPSTR lpszCmdLine,int nCmdShow)
{
///…