Изменения свойств и уничтожения перекрывающихся и всплывающих окон

Автор работы: Пользователь скрыл имя, 18 Ноября 2012 в 22:18, курсовая работа

Краткое описание

Целью данной работы является: изучение способов создания, изменения свойств и уничтожения перекрывающихся и всплывающих окон, создания элементов управления на пользовательском блоке диалога с помощью редактора ресурсов, а также программно; применение в приложении вторичных потоков, входная функция которых позволяет реализовать прорисовку графических примитивов; научиться передавать параметры во вторичный поток.

Содержание

ВВЕДЕНИЕ 4
1 Работа с окнами 9
1.1 Условие 9
1.2 Описание программного кода 9
1.3 Пример работы программы 13
2 Работа со стандартными элементами управления 15
2.1 Условие 15
2.2 Описание программного кода 15
2.3 Пример работы программы 19
3 Интерфейс графических устройств 20
3.1 Условие 20
3.2 Описание программного кода 21
3.3 Пример работы программы 23
4 Блоки диалога 24
4.1 Условие 24
4.2 Пользовательский блок диалога 25
4.3 Стандартные блоки диалога 26
4.4 Пример работы программы 27
5 Вторичный поток 31
5.1 Условие 31
5.2 Описание программного кода 31
5.3 Пример работы программы 34
ВЫВОД 36
Список ИСПользуемой литературы 37
Приложение А. Исходный код к заданию №1 38
Приложение Б. Исходный код к заданию №2 40
Приложение В. Исходный код к заданию №3 43
Приложение Г. Исходный код к заданию №4 45
Приложение Д. Исходный код к заданию №5 48

Прикрепленные файлы: 1 файл

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА (Автосохраненный).docx

— 1.27 Мб (Скачать документ)

HDC dc=GetDC(dt->hwnd);

Ellipse(dc,  dt->centerX-dt->dx  ,  dt->centerY-dt->dy  ,dt->centerX+dt->dx  ,  dt->centerY+dt->dy   );  

/* Рисуем эллипс, центpиpованный в огpаничивающем пpямоугольнике, гpаница котоpого наpисована текущим пеpом и заполнена текущей кистью*/

ReleaseDC(dt->hwnd,dc);  /*Освобождаем ресурсы*/

return 0;

}

 

 

 

 

    1. Пример работы программы

 

 

Рис. 5.3.1- Прорисовка эллипса с начальными значениями

 

 

Рис. 5.3.2- Прорисовка эллипса с новыми значениями 

ВЫВОД

 

Выполнив курсовую, не трудно понять, что WinApi является мощным инструментом для создания приложений под Windows. Функции WinApi - это функции непосредственно  самой операционной системы. Следовательно, используя, только WinApi без сторонних  библиотек будет выигрыш в  надежности и стабильности кода, его  скорости, а так же меньше проблем  с переносом программы (проекта) на другие машины.

Но можно  отметить, что WinApi имеет ряд недостатков, которые заставляют программистов  прибегать к его функциям лишь в редких случаях. Огромным недостатком  является не кроссплатформенность разрабатываемых  приложений, поэтому на смену Windows API пришли такие платформы как .NET от Microsoft и Java от Sun Microsystems (ныне принадлежит Oracle). Кроссплатформенное (межплатформенное) программное обеспечение — программное обеспечение, работающее более чем на одной аппаратной платформе и/или операционной системе. Типичным примером является программное обеспечение, предназначенное для работы в операционных системах Linux и Windows одновременно.

Еще одним  важным моментом является цена и качество получаемого приложения. Разрабатывать приложения на .NET или Java значительно проще, а значит дешевле и количество ошибок при разработке значительно меньше. 
Естественно, работая на более высоком уровне абстракции, мы теряем скорость - но это в 99% случаев незаметно конечному пользователю, зато получаем возможность писать быстро, удобно отлаживаться и т.д.

Конечно, общее впечатление говорит о  том, что Windows API обладает огромными  возможностями по работе с операционной системой. Можно даже сказать - безграничными.

 

Список ИСПользуемой литературы

 

  1. Гэри Неббет Справочник по базовым функциям API Windows NT/2000 = Windows NT/2000 Native API Reference. — М.: «Вильямс», 2002. — С. 528. 
  2. Джеффри Рихтер, Кристоф Назар. Windows via C/C++. Программирование на языке Visual C++. Изд-ва: Питер, Русская Редакция, 2009 г., 896 стр 
  3. Юрий Щупак Win32 API. Разработка приложений для Windows. Издательство: Питер,  2008 г., 592 стр.
  4. К. Г. Финогенов Win32. Основы программирования, Издательство: Диалог-МИФИ, 2006 г., 416 стр.
  5. П. В. Румянцев Азбука программирования в Win 32 API ,Издательство: Горячая Линия - Телеком,312 стр.

 

Приложение А. Исходный код к заданию №1

#include <stdio.h>

#include <windows.h>

 

LONG WinProcMain(HWND, UINT, WPARAM, LPARAM);

BOOL RegWinClass(WNDPROC, LPCTSTR, UINT);

HWND hWnd;

static HWND hwndPopup;

MSG msg;

HINSTANCE hInst;

POINT LeftCorner;

RECT rect;

char ClassNameMain[]="MainWindow";

 

 

//-------------------------------вход в программу----------------------------------

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

{

hInst = hInstance;

    if (!RegWinClass((WNDPROC)WinProcMain, ClassNameMain, COLOR_WINDOW))

return false;

hWnd=CreateWindow(ClassNameMain, "Заголовок", WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);

if (!hWnd) return false;

GetWindowRect(hWnd,&rect);

hwndPopup=CreateWindow( ClassNameMain, 0, WS_POPUPWINDOW | WS_VISIBLE, rect.left, rect.top ,rect.right/5, rect.bottom/5, hWnd, NULL, hInst, NULL);

if (!hwndPopup) return false;

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

DispatchMessage(&msg);

return int(msg.wParam);

}

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

BOOL RegWinClass(WNDPROC proc, LPCTSTR lpszClassName, UINT hrBackGround)

{

WNDCLASS w;

w.lpszClassName=lpszClassName;

w.hInstance=hInst;

w.lpfnWndProc=proc;

w.hCursor=LoadCursor(NULL, IDC_ARROW);

w.hIcon=LoadIcon(NULL, lpszClassName);

w.lpszMenuName=NULL;

w.hbrBackground=(HBRUSH)(hrBackGround+1);

w.style=CS_HREDRAW | CS_VREDRAW;

w.cbClsExtra=0;

w.cbWndExtra=0;

return (RegisterClass(&w)!=0);

}

 

//-------------------------------------обработка сообщений-----------------------------

LONG  WinProcMain(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)

{

static int corner=0;

switch(msg)

{

case WM_CREATE:

hwndPopup=0;

break;

case WM_LBUTTONDOWN:

if (hWnd!=hwndPopup)

{

GetWindowRect(hWnd,&rect);

switch(corner)

{

case 0:

LeftCorner.x=rect.right;

LeftCorner.y=rect.top;

corner++;

break;

case 1:

LeftCorner.x=rect.right;

LeftCorner.y=rect.bottom;

corner++;

break;

case 2:

LeftCorner.x=rect.left;

LeftCorner.y=rect.bottom;

corner++;

break;

case 3:

LeftCorner.x=rect.left;

LeftCorner.y=rect.top;

corner=0;

break;

}

MoveWindow(hwndPopup, LeftCorner.x, LeftCorner.y, rect.right/4, rect.bottom/4, TRUE);

}

break;

case WM_DESTROY:

PostQuitMessage(0);

break;

default:

return LONG(DefWindowProc( hWnd, msg, wParam, lParam));

}

return 0;

}

 

 

Приложение Б. Исходный код к заданию №2

#include <windows.h>

#include <commctrl.h>

#include <tchar.h>

#include<stdio.h>

#pragma comment(lib, "comctl32.lib")

#define ID_STATUS 1

#define IDC_VERT -1

#define MAX_RANGE 50

 

 

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

HWND hMainWnd;

HWND hWndVertScroll;

char szClassName[] = "MyClass";

MSG msg;

WNDCLASSEX wc;

 

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

{

// Заполняем структуру  класса окна

wc.cbSize = sizeof(wc);

wc.style = CS_HREDRAW | CS_VREDRAW;

wc.lpfnWndProc = WndProc;

wc.cbClsExtra = 0;

wc.cbWndExtra = 0;

wc.hInstance = hInstance;

wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);

wc.hCursor = LoadCursor(NULL, IDC_ARROW);

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

wc.lpszMenuName = NULL;

wc.lpszClassName = szClassName;

wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

 

// Регистрируем класс окна

if (!RegisterClassEx(&wc))

{

MessageBox(NULL, "Cannot register class", "Error", MB_OK);

return 0;

}

 

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

hMainWnd = CreateWindow(szClassName, "Лабораторная № 2", WS_OVERLAPPEDWINDOW|WS_VSCROLL,CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,(HWND)NULL, (HMENU)NULL,(HINSTANCE)hInstance, NULL);

if (!hMainWnd)

{

MessageBox(NULL, "Cannot create main window", "Error", MB_OK);

return 0;

}

ShowWindow(hMainWnd, nCmdShow);

 

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

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

 

return msg.wParam;

}

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

{

HDC hDC;

PAINTSTRUCT ps;

RECT rect;

static short cx;

static int pParts[4];

static HWND hStatus;

static HWND hScroll;

SYSTEMTIME st;

int day, month, year, sec, min, hour;

char Buf[256];

char pos[256];

static int maxX;

static int curX,pageX;

static int minX;

 

 

switch (msg)

{

case WM_PAINT:

hDC = BeginPaint(hWnd, &ps);

GetClientRect(hWnd, &rect);

DrawText(hDC, "В элементе 'StatusBar' будет отображаться положение элемента 'ScrollBar', дата и время.", -1, &rect,DT_SINGLELINE | DT_CENTER | DT_VCENTER );

EndPaint(hWnd, &ps);

return 0;

case WM_SIZE:

MoveWindow(hStatus, 0,0,0,0, TRUE);

cx=LOWORD(lParam);

pParts[0]=cx-500;

pParts[1]=cx-300;

pParts[2]=cx-150;

pParts[3]=cx;

SendMessage(hStatus, SB_SETPARTS, 4, (LPARAM)pParts);

return 0;

case WM_CREATE:

hStatus=CreateStatusWindow(WS_CHILD|WS_VISIBLE, "Положение ScrollBar:", hWnd, ID_STATUS);

SendMessage(hStatus, SB_SETTEXT, 0, (LONG)"Положение ScrollBar:");

SetTimer(hWnd, 1, 1000, NULL);

minX=0;

maxX=100;

pageX=10;

curX=30;

SetScrollRange(hMainWnd,SB_VERT,minX,maxX,TRUE);

SetScrollPos(hMainWnd,SB_VERT,curX,TRUE);

return 0;

/*===============================Управление ScrollBar================================================*/

case WM_VSCROLL:

switch(LOWORD(wParam))

{

case SB_LINEUP:

curX--;

break;

case SB_LINEDOWN:

curX++;

break;

case SB_THUMBPOSITION:

case SB_THUMBTRACK:

curX=HIWORD(wParam);

break;

 

}

  if (curX>=maxX)

{

EnableScrollBar(hMainWnd, SB_VERT, ESB_ENABLE_BOTH);

curX=maxX;

EnableScrollBar(hMainWnd, SB_VERT, ESB_DISABLE_DOWN);

 

}

  else

  if (curX<=minX)

{

EnableScrollBar(hMainWnd, SB_VERT, ESB_ENABLE_BOTH);

curX=minX;

EnableScrollBar(hMainWnd, SB_VERT, ESB_DISABLE_UP);

}

  else EnableScrollBar(hMainWnd, SB_VERT, ESB_ENABLE_BOTH);

 

SetScrollPos(hMainWnd, SB_VERT, curX, TRUE);

sprintf(pos,"%d",curX);

SendMessage(hStatus, SB_SETTEXT, 1, (LONG)pos);

break;

return 0;

/*===================================================================================================*/

/*====================================Время для StatusBar============================================*/

case WM_TIMER:

GetLocalTime(&st);

day=st.wDay;

month=st.wMonth;

year=st.wYear;

hour=st.wHour;

min=st.wMinute;

sec=st.wSecond;

sprintf(Buf, "%02d.%02d.%02d", day, month, year);

SendMessage(hStatus, SB_SETTEXT, 2, (LONG)Buf);

sprintf(Buf, "%02d:%02d:%02d", hour, min, sec);

SendMessage(hStatus, SB_SETTEXT, 3, (LONG)Buf);

return 0;

/*===================================================================================================*/

case WM_CLOSE:

DestroyWindow(hWnd);

return 0;

case WM_DESTROY:

PostQuitMessage(0);

KillTimer(hWnd,1);

return 0;

default:

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

}

 

return 0;

}

 

 

 

Приложение В. Исходный код к заданию №3

#include <stdio.h>

#include <windows.h>

 

LONG WinProcMain(HWND, UINT, WPARAM, LPARAM);

BOOL RegWinClass(WNDPROC, LPCTSTR, UINT);

HWND hWnd;

static HWND hwndPopup;

MSG msg;

HINSTANCE hInst;

POINT LeftCorner;

RECT rect;

char ClassNameMain[]="MainWindow";

 

//===========================Pen=====================

HDC hdc;

PAINTSTRUCT ps;

HPEN pen;

HFONT font;

 

//-------------------------------вход в  программу----------------------------------

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

{

hInst = hInstance;

    if (!RegWinClass((WNDPROC)WinProcMain, ClassNameMain, COLOR_WINDOW))

return false;

hWnd=CreateWindow(ClassNameMain, "Лабораторная № 3", WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);

if (!hWnd) return false;

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

DispatchMessage(&msg);

return int(msg.wParam);

}

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

BOOL RegWinClass(WNDPROC proc, LPCTSTR lpszClassName, UINT hrBackGround)

{

WNDCLASS w;

w.lpszClassName=lpszClassName;

w.hInstance=hInst;

w.lpfnWndProc=proc;

w.hCursor=LoadCursor(NULL, IDC_ARROW);

w.hIcon=LoadIcon(NULL, lpszClassName);

w.lpszMenuName=NULL;

w.hbrBackground=(HBRUSH)(hrBackGround+1);

w.style=CS_HREDRAW | CS_VREDRAW;

w.cbClsExtra=0;

w.cbWndExtra=0;

return (RegisterClass(&w)!=0);

}

 

//-------------------------------------обработка сообщений-----------------------------

LONG  WinProcMain(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)

{

static int corner=0;

switch(msg)

{

case WM_CREATE:

hwndPopup=0;

break;

case WM_PAINT:

GetClientRect(hWnd,& rect);

hdc = BeginPaint(hWnd, &ps);

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

SelectObject(hdc, pen);

MoveToEx(hdc, 0,rect.bottom/2, NULL);

LineTo(hdc,rect.right,rect.bottom/2);

DeleteObject(pen);

font=CreateFont(20,10,0,0,FW_BOLD,1,1,0,RUSSIAN_CHARSET,OUT_TT_ONLY_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, VARIABLE_PITCH|FF_ROMAN, NULL);

SelectObject(hdc, font);

SetTextColor(hdc,RGB(255,0,255));

TextOut(hdc,rect.right-200,rect.bottom-100,"Hello! World!!!",15);

DeleteObject(font);

EndPaint(hWnd,&ps);

break;

case WM_DESTROY:

PostQuitMessage(0);

break;

default:

return LONG(DefWindowProc( hWnd, msg, wParam, lParam));

}

return 0;

}

 

 

Приложение Г. Исходный код к заданию №4

#include <windows.h>

#include <stdio.h>

#include <string.h>

#include "resource.h"

 

#define ID_BUTTON1 2001

#define EditID 777

int penstyle;

LONG MyWinP(HWND, UINT,WPARAM,LPARAM);

LRESULT DialProc(HWND, UINT,WPARAM,LPARAM);

POINT p[7];

 

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

{

char Title[]="Заголовок окна";

char ProgName[]="My Window";

HWND hWnd;

MSG msg;

WNDCLASS w;

 

w.lpszClassName=ProgName;

w.hInstance=hInstance;

w.lpfnWndProc=(WNDPROC)MyWinP;

w.hCursor=LoadCursor(NULL, IDC_HAND);

w.hIcon=LoadIcon(NULL, IDI_ASTERISK);

w.lpszMenuName=NULL;

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

w.style=CS_HREDRAW | CS_VREDRAW;

w.cbClsExtra=0;

w.cbWndExtra=0;

if(!RegisterClass(&w)) return false;

 

hWnd=CreateWindow(ProgName,"OwnWindow",WS_SYSMENU|WS_MINIMIZEBOX|WS_THICKFRAME,0,0,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);

ShowWindow(hWnd,nCmdShow);

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

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

return int(msg.wParam);

}

 

LONG  MyWinP(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)

{

PAINTSTRUCT ps;

HDC hdc;

RECT rt;

TEXTMETRIC tm;

HPEN pen;

/*---------------Диалоговое окно для шрифта---------------------*/

char str[256];

static CHOOSEFONT cfont;

static LOGFONT lf;

static COLORREF colfont;

HFONT font;

/*-------------------------------------------------------------*/

/*---------------Диалоговое окно  для цвета---------------------*/

static COLORREF colorPen;

static CHOOSECOLOR cc = {0};

cc.lStructSize = sizeof(cc);

COLORREF cust_colors[16] = { 0 };

cc.lpCustColors = cust_colors;

/*--------------------------------------------------------------*/

switch(msg)

{

case WM_CREATE:

penstyle=PS_DASHDOT;

ZeroMemory(&lf,sizeof(lf));

lf.lfHeight=30;

lf.lfItalic=1;

lf.lfWeight=FW_BOLD;

 

strcpy(lf.lfFaceName,"Arial");

colfont=RGB(255,0,0);

 

cfont.lStructSize=sizeof(cfont);

cfont.Flags=CF_SCREENFONTS|CF_EFFECTS|CF_INITTOLOGFONTSTRUCT;

cfont.lpLogFont=&lf;

cfont.rgbColors=colfont;

 

break;

case WM_KEYDOWN:

switch(LOWORD(wParam))

{

case VK_F4:       //Выбор цвета

if (ChooseColor(&cc))

{

colorPen=cc.rgbResult;

InvalidateRect(hWnd,NULL,TRUE);

}

break;

case VK_F5:       //Выбор шрифта

if (ChooseFont(&cfont))

{

lf=*cfont.lpLogFont;

colfont=cfont.rgbColors;

InvalidateRect(hWnd,NULL,TRUE);

}

break;

case VK_F3:       //Координаты первой точки

if (DialogBox(NULL,(LPSTR)IDD_DIALOG1,hWnd,(DLGPROC)DialProc)==IDOK)

{

InvalidateRect(hWnd,NULL,TRUE);

}

break;

}

break;

case WM_PAINT:

hdc=BeginPaint(hWnd, &ps);

GetClientRect(hWnd,&rt);

pen=CreatePen(penstyle,1,colorPen);

SelectObject(hdc,pen);

p[0].x=rt.right/2;

p[0].y=rt.bottom/2;

p[1].x=rt.right/2-40;

p[1].y=rt.bottom/2-20;

p[2].x=rt.right/2+40;

p[2].y=rt.bottom/2-10;

p[3].x=rt.right/2-50;

p[3].y=rt.bottom/2-80;

p[4].x=rt.right/2-31;

p[4].y=rt.bottom/2-10;

Polyline(hdc,p,4);

font=CreateFontIndirect(&lf);

SelectObject(hdc,font);

SetTextColor(hdc,colfont);

GetTextMetrics(hdc,&tm);

TextOut(hdc,rt.right-tm.tmAveCharWidth*4,rt.bottom-tm.tmHeight,"text",4);

DeleteObject(font);

DeleteObject(pen);

EndPaint(hWnd, &ps);

break;

case WM_DESTROY:

PostQuitMessage(0);

break;

default:

return LONG(DefWindowProc(hWnd, msg, wParam, lParam));

}

return 0;

}

 

 

LRESULT DialProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)

{

static HWND hBut[6], hStatic;

static HWND Edit;

static char buf[512];

RECT rect;

switch(msg)

{

case WM_INITDIALOG:

hStatic=CreateWindow("static","Первая точка линии.", WS_TABSTOP|WS_CHILD|WS_VISIBLE,10,10,145,20,hDlg,0,NULL,NULL);

Edit=CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT",NULL,ES_AUTOHSCROLL|WS_CHILD|WS_VISIBLE,10, 100,170,20,hDlg,(HMENU) EditID,NULL,NULL);

sprintf(buf, "P[0](x;y) = P[0](%02d;%02d)",p[0].x,p[0].y);

SetDlgItemText(hDlg,EditID,buf);

return TRUE;

 

case WM_COMMAND:

switch(LOWORD(wParam))

{

case IDOK:

EndDialog(hDlg,IDOK);

break;

case IDCANCEL:

EndDialog(hDlg,IDCANCEL);

break;

}

return 0;

 

}

return 0;

}

 

Приложение Д. Исходный код к заданию №5

#include <windows.h>

#include <string.h>

#include <stdio.h>

#define ButtonID 2109

#define EditID1 21100

#define EditID2 21110

#define EditID3 21120

#define EditID4 21130

typedef struct

{

HWND hwnd;

int centerX, centerY;  //точка центра эллипса

int dx, dy;      //длина полуосей

}

datas;

HWND butClick;

HWND Edit1,Edit2,Edit3,Edit4;

HWND hStatic1,hStatic2,hStatic3,hStatic4;

LONG MyWinP(HWND, UINT,WPARAM,LPARAM);

DWORD WINAPI Thread2(LPVOID params);

 

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

{

char ProgName[]="DoubleThread";

char Title[]="TitleProgram";

RECT value;

HWND hWnd; MSG msg;

WNDCLASS w;

w.lpszClassName=ProgName;

w.hInstance=hInstance;

w.lpfnWndProc=(WNDPROC)MyWinP;

w.hCursor=LoadCursor(NULL, IDC_ARROW);

w.hIcon=LoadIcon(NULL, IDI_APPLICATION);

w.lpszMenuName=NULL;

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

w.style=CS_HREDRAW | CS_VREDRAW;

w.cbClsExtra=0;

w.cbWndExtra=0;

Информация о работе Изменения свойств и уничтожения перекрывающихся и всплывающих окон