Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Velikaya_shpora_el-ty_upravlenia.doc
Скачиваний:
1
Добавлен:
18.09.2019
Размер:
3.51 Mб
Скачать

Int winapi WinMain(hinstance hInstance, hinstance hPrevInstance, lpstr lpCmdLine, int nCmdShow)

{

char ProgName[]="My Window";

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

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=LPCSTR(IDR_MENU1);

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,Title, WS_OVERLAPPEDWINDOW|WS_HSCROLL|WS_VSCROLL,0,0,

CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);

If (!hWnd) return false;

ShowWindow(hWnd, nCmdShow);

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

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

return msg.wParam;

}

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

{

static HMENU menu, popup_menu;

switch(msg)

{

case WM_COMMAND:

switch (LOWORD(wParam))

{

case ID_FIRST:

AppendMenu(menu, MF_STRING, ID_SECOND, "Второй пункт");

EnableMenuItem(menu, ID_FIRST, MF_GRAYED);

DrawMenuBar(hWnd);

break;

case ID_SECOND:

popup_menu=CreatePopupMenu();

InsertMenu(menu, -2, MF_STRING | MF_POPUP | MF_BYPOSITION, (UINT)popup_menu, "Третий пункт");

AppendMenu(popup_menu, MF_STRING, ID_THIRD, "Третий пункт 1");

AppendMenu(popup_menu,MF_STRING, 40004, "Третий пункт 2");

EnableMenuItem(menu, ID_SECOND, MF_GRAYED);

DrawMenuBar(hWnd);

break;

case ID_THIRD:

DeleteMenu(menu, ID_SECOND, 0);

DeleteMenu(popup_menu,ID_THIRD, 0);

DeleteMenu(popup_menu,40004, 0);

DeleteMenu(menu,(UINT)popup_menu, 0);

EnableMenuItem(menu,ID_FIRST, MF_ENABLED);

SetMenu(hWnd,menu);

break;

}

break;

case WM_CREATE:

menu=CreateMenu();

AppendMenu(menu, MF_STRING, ID_FIRST, "Первый пункт");

SetMenu(hWnd,menu);

break;

case WM_DESTROY:

PostQuitMessage(0);

break;

default:

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

}

return 0;

}

menu

#include <windows.h>

#include <stdio.h>

#include<conio.h>

#define ID_LIST 1001

#define ID_BUTTON_LK 1002

#define ID_BUTTON_D 1003

#define ID_BUTTON_RK 1004

#define ID_BUTTON_P 1005

static HWND List1;

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

char whatToSay[150];

bool flag;

enum Button{On,Off};

typedef struct

{

int Time;

Button Sost;

} Komforka;

class Mechta

{

protected:

int Time;

Button Pitanie;

Komforka LeftK,RightK,DuhK;

public:

Mechta();

void Pitanie_pechi();

void Left_button();

void Right_button();

void Duh_button();

void Work();

};

void Mechta::Pitanie_pechi()

{

if(Pitanie==Off)

{

Pitanie=On;

sprintf(whatToSay,"\nPitanie vklucheno.");

SendMessage(List1,LB_ADDSTRING,0,(LPARAM)whatToSay);

}

else

{

Pitanie=LeftK.Sost=RightK.Sost=DuhK.Sost=Off;

sprintf(whatToSay,"\nPitanie viklucheno");

SendMessage(List1,LB_ADDSTRING,0,(LPARAM)whatToSay);

}

}

void Mechta::Left_button()

{

if(Pitanie!=Off)

{

if(LeftK.Sost==On)

{

LeftK.Sost=Off;

sprintf(whatToSay,"\nlevaya komforka vukluchena!");

}

else if (LeftK.Sost==Off)

{

LeftK.Sost=On;

sprintf(whatToSay,"\n levaya komforka vkluchena!");

}

else if (DuhK.Sost==On && RightK.Sost==On)

{

sprintf(whatToSay,"\n2 komforki uge rabotaut!");

SendMessage(List1,LB_ADDSTRING,0,(LPARAM)whatToSay);

}

else

{

LeftK.Sost=On;

LeftK.Time=60000;

Time=60000;

sprintf(whatToSay,"\nLevaya komforka vkluchena!");

SendMessage(List1,LB_ADDSTRING,0,(LPARAM)whatToSay);

}

}

else

sprintf(whatToSay,"\nPech vikluchena!");

SendMessage(List1,LB_ADDSTRING,0,(LPARAM)whatToSay);

}

void Mechta::Right_button()

{

if(Pitanie!=Off)

{

if(RightK.Sost==On)

{

RightK.Sost=Off;

sprintf(whatToSay,"\nPravaya komforka vukluchena!");

}

else if (RightK.Sost==Off)

{

RightK.Sost=On;

sprintf(whatToSay,"\n Pravaya komforka vkluchena!");

}

else if (DuhK.Sost==On&&LeftK.Sost==On)

{

sprintf(whatToSay,"\n2 komforki uge rabotaut!");

SendMessage(List1,LB_ADDSTRING,0,(LPARAM)whatToSay);

}

else

{

RightK.Sost=On;

RightK.Time=60000;

Time+=60000;

sprintf(whatToSay,"\nPravaya komforka vkluchena!");

SendMessage(List1,LB_ADDSTRING,0,(LPARAM)whatToSay);

}

}

else

sprintf(whatToSay,"\nPech vikluchena!");

SendMessage(List1,LB_ADDSTRING,0,(LPARAM)whatToSay);

}

void Mechta::Duh_button()

{

if(Pitanie!=Off)

{

if(DuhK.Sost==On)

{

DuhK.Sost=Off;

sprintf(whatToSay,"\nduhovka vukluchena!");

}

else if (DuhK.Sost==Off)

{

DuhK.Sost=On;

sprintf(whatToSay,"\n duhovka vkluchena!");

}

else if (RightK.Sost==On&&LeftK.Sost==On)

{

sprintf(whatToSay,"\n2 komforki uge rabotaut!");

SendMessage(List1,LB_ADDSTRING,0,(LPARAM)whatToSay);

}

else

{

DuhK.Sost=On;

DuhK.Time=60000;

Time=60000;

sprintf(whatToSay,"\nDuhovka vkluchena!");

SendMessage(List1,LB_ADDSTRING,0,(LPARAM)whatToSay);

}

}

else

sprintf(whatToSay,"\nPech vikluchena!");

SendMessage(List1,LB_ADDSTRING,0,(LPARAM)whatToSay);

}

Mechta::Mechta()

{

RightK.Time=-1;

DuhK.Time=-1;

LeftK.Time=-1;

Pitanie=Off;

}

void Mechta::Work()

{

}

Mechta * TRAL = new Mechta();

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

{

static HWND ButtonLk, ButtonRk,ButtonDuh, ButtonPit, Combo;

int nwhatToSay;

switch(msg)

{

case WM_RBUTTONDOWN:

SendMessage(List1,LB_RESETCONTENT,0,0);

break;

case WM_COMMAND:

switch (LOWORD(wParam))

{

case ID_LIST:

break;

case ID_BUTTON_LK:

TRAL->Left_button();

break;

case ID_BUTTON_RK:

TRAL->Right_button();

break;

case ID_BUTTON_D:

TRAL->Duh_button();

break;

case ID_BUTTON_P:

TRAL->Pitanie_pechi();

if (flag)

{

EnableWindow(ButtonDuh, FALSE);

EnableWindow(ButtonLk, FALSE);

EnableWindow(ButtonRk, FALSE);

flag=FALSE;

}

else

{

EnableWindow(ButtonDuh, TRUE);

EnableWindow(ButtonLk, TRUE);

EnableWindow(ButtonRk, TRUE);

flag=TRUE;}

break;

}

break;

case WM_CREATE:

ButtonLk=CreateWindow("button","Levaia komforka", WS_CHILD|WS_VISIBLE,250,10,150,30,hWnd,(HMENU)ID_BUTTON_LK,NULL,NULL);

ButtonRk=CreateWindow("button","Pravaia komforka", WS_CHILD|WS_VISIBLE,250,90,150,30,hWnd,(HMENU)ID_BUTTON_RK,NULL,NULL);

ButtonDuh=CreateWindow("button","Duhovka", WS_CHILD|WS_VISIBLE,250,50,150,30,hWnd,(HMENU)ID_BUTTON_D,NULL,NULL);

ButtonPit=CreateWindow("button","Pitanie", WS_CHILD|WS_VISIBLE,250,130,150,30,hWnd,(HMENU)ID_BUTTON_P,NULL,NULL);

flag=FALSE;

EnableWindow(ButtonDuh,FALSE);

EnableWindow(ButtonLk, FALSE);

EnableWindow(ButtonRk, FALSE);

List1=CreateWindow("listbox",NULL,WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_HSCROLL|LBS_STANDARD|LBS_SORT|LBS_NOINTEGRALHEIGHT|BS_MULTILINE, 10,10,230,300,hWnd,(HMENU)ID_LIST,NULL,NULL);

SendMessage(List1,LB_SETHORIZONTALEXTENT,400,0);

SendMessage(List1,LB_ADDSTRING,0,(LPARAM)"\nPech Mechta\n - Pech Vikluchena!\n");

break;

case WM_DESTROY:

PostQuitMessage(0);

break;

default:

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

}

return 0;

}

#include <windows.h>

#include <winuser.h>

#include <math.h>

#include <cstdio>

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

static const HMENU ADD1=(HMENU)123,

DEL1=(HMENU)124,

ADD2=(HMENU)125,

DEL2=(HMENU)126,

SUM1=(HMENU)127,

SUM2=(HMENU)128;

HWND arr1_label,arr2_label,add1_edit,del1_edit,add2_edit,del2_edit,array1,array2;

class Array{

protected:

int size;

double array[255];

char *format;

public:

Array(){

size=0;

format="Массив 1 (размер = %d): ";

}

void addElement(double value) // добавление элемента

{

if(size<255)

{

size+=1;

array[size-1]=value;

}

}

virtual void deleteElement(int index){ // удаление элемента

if(size>0)

{

size-=1;

for(int i=index;i<size;i++)

array[i]=array[i+1];

}

}

double getSummOfPositives() // подсчет суммы ненулевых элементов

{

double S=0;

for(int i=0;i<size;i++)

if(array[i]!=0)

S+=1;

return S;

}

void printArray(HWND field,HWND label)

{

char str[255]="";

char one_elt[80]="";

for(int i=0;i<size;i++)

{

sprintf(one_elt, "%1.0f ", array[i]);

strcat(str, one_elt);

}

SetWindowText(field, str);

sprintf(one_elt, format, size);

SetWindowText(label, one_elt);

}

};

class Array_New:public Array{

private:

public:

Array_New(){

format="Массив 2 (размер = %d): ";

}

void deleteElement(int index){

if(array[index]==0)

{

if(index>0 && index<size-1)

{

array[index-1]=0;

array[index+1]=0;

}

if(index==0)

array[index+1]=0;

if(index==size)

array[index-1]=0;

}

size-=1;

for(int i=index;i<size;i++)

array[i]=array[i+1];

}

};

Array *arr[2];

int WINAPI …

hWnd=CreateWindow

(

ProgName, //имя класса

Title, //имя окна (заголовок)

WS_SYSMENU|WS_BORDER, //стиль окна

100, //x-координата окна

100, //y-координата окна

340, //ширина окна

295, //высота окна

NULL, // дескриптор родительского или окна владельца

NULL, // дескриптор меню или идентификатор дочернего окна

hInstance, // дескриптор экземпляра приложения

NULL // указатель на данные создания окна

);

CreateWindow("STATIC", "Лабараторная работа №7", WS_CHILD|WS_VISIBLE|SS_LEFT, 10, 1, 180, 20, hWnd, NULL, hInstance, NULL);

// МАССИВ 1

arr1_label = CreateWindow("STATIC", "Массив 1 (размер = 0):", WS_CHILD|WS_VISIBLE|SS_LEFT, 10, 30, 180, 20, hWnd, NULL, hInstance, NULL);

CreateWindow("STATIC", "Добавить эл-т:", WS_CHILD|WS_VISIBLE|SS_LEFT, 30, 55, 150, 20, hWnd, NULL, hInstance, NULL);

add1_edit = CreateWindow("EDIT", "0", WS_CHILD|WS_VISIBLE|ES_LEFT|WS_BORDER, 140, 55, 30, 20, hWnd, NULL, hInstance, NULL);

CreateWindow("BUTTON", "Добавить", WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, 180, 55, 70, 20, hWnd, ADD1, hInstance, NULL);

CreateWindow("BUTTON", "Cумма", WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, 255, 55, 70, 20, hWnd, SUM1, hInstance, NULL);

CreateWindow("STATIC", "Удалить эл-т с индексом:", WS_CHILD|WS_VISIBLE|SS_LEFT, 30, 80, 200, 20, hWnd, NULL, hInstance, NULL);

del1_edit = CreateWindow("EDIT", "0", WS_CHILD|WS_VISIBLE|ES_LEFT|WS_BORDER, 210, 80, 30, 20, hWnd, NULL, hInstance, NULL);

CreateWindow("BUTTON", "Удалить", WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, 250, 80, 70, 20, hWnd, DEL1, hInstance, NULL);

array1 = CreateWindow("EDIT", "", WS_CHILD|WS_VISIBLE|ES_MULTILINE|ES_WANTRETURN|ES_LEFT|WS_BORDER, 30, 105, 290, 40, hWnd, NULL, hInstance, NULL);

// МАССИВ 2

arr2_label = CreateWindow("STATIC", "Массив 2 (размер = 0):", WS_CHILD|WS_VISIBLE|SS_LEFT, 10, 150, 320, 20, hWnd, NULL, hInstance, NULL);

CreateWindow("STATIC", "Добавить эл-т:", WS_CHILD|WS_VISIBLE|SS_LEFT, 30, 170, 150, 20, hWnd, NULL, hInstance, NULL);

add2_edit = CreateWindow("EDIT", "0", WS_CHILD|WS_VISIBLE|ES_LEFT|WS_BORDER, 140, 170, 30, 20, hWnd, NULL, hInstance, NULL);

CreateWindow("BUTTON", "Добавить", WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, 180, 170, 70, 20, hWnd, ADD2, hInstance, NULL);

CreateWindow("BUTTON", "Cумма", WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, 255, 170, 70, 20, hWnd, SUM2, hInstance, NULL);

CreateWindow("STATIC", "Удалить эл-т с индексом", WS_CHILD|WS_VISIBLE|SS_LEFT, 30, 195, 200, 20, hWnd, NULL, hInstance, NULL);

del2_edit = CreateWindow("EDIT", "0", WS_CHILD|WS_VISIBLE|ES_LEFT|WS_BORDER, 210, 195, 30, 20, hWnd, NULL, hInstance, NULL);

CreateWindow("BUTTON", "Удалить", WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, 250, 195, 70, 20, hWnd, DEL2, hInstance, NULL);

array2 = CreateWindow("EDIT", "", WS_CHILD|WS_VISIBLE|ES_MULTILINE|ES_WANTRETURN|ES_LEFT|WS_BORDER, 30, 220, 290, 40, hWnd, NULL, hInstance, NULL);

ShowWindow(hWnd, nCmdShow);

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

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

return msg.wParam;

}

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

{

switch(msg)

{

case WM_CREATE:

arr[0]=new Array();

arr[1]=new Array_New();

break;

case WM_DESTROY:

PostQuitMessage(0);

break;

case WM_COMMAND:

switch(wParam)

{

case ADD1:

{

char buf[15];

GetWindowText(add1_edit, buf, GetWindowTextLength(add1_edit)+1);

double t = atof(buf);

arr[0]->addElement(t); // позднее связывание

arr[0]->printArray(array1, arr1_label);

}break;

case DEL1:

{

char buf[15];

GetWindowText(del1_edit, buf, GetWindowTextLength(del1_edit)+1);

int t = atoi(buf);

arr[0]->deleteElement(t);

arr[0]->printArray(array1, arr1_label);

}break;

case SUM1:

{

char buf[50];

sprintf(buf, "Сумма ненулевых элементов = %1.0f", arr[0]->getSummOfPositives());

MessageBox(hWnd, buf, "Сумма", MB_OK);

}break;

case ADD2:

{

char buf[15];

GetWindowText(add2_edit, buf, GetWindowTextLength(add2_edit)+1);

double t = atof(buf);

arr[1]->addElement(t); // позднее связывание

arr[1]->printArray(array2, arr2_label);

}break;

case DEL2:

{

char buf[15];

GetWindowText(del2_edit, buf, GetWindowTextLength(del2_edit)+1);

int t = atoi(buf);

arr[1]->deleteElement(t);

arr[1]->printArray(array2, arr2_label);

}break;

case SUM2:

{

char buf[50];

sprintf(buf, "Сумма ненулевых элементов = %1.0f", arr[1]->getSummOfPositives());

MessageBox(hWnd, buf, "Сумма", MB_OK);

}break;

}

break;

default:

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

break;

}

return 0;

}

#include <windows.h>

#include <math.h>

#include <cstdio>

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

typedef void (WINAPI *DrawGraph_func)(HWND, HDC, int, int);

DrawGraph_func DrawGraph;

int WINAPI WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR pCmdLine,

int nCmdShow)

{

char ProgName[]="Labrab";

char Title[]="Лабараторная работа №";

HWND hWnd;

MSG msg;

//РЕГИСТРАЦИЯ ОКОННОГО КЛАССА

hWnd=CreateWindow

(

ProgName, //имя класса

Title, //имя окна (заголовок)

WS_OVERLAPPEDWINDOW, //стиль окна

100, //x-координата окна

100, //y-координата окна

400, //ширина окна

200, //высота окна

NULL, // дескриптор родительского или окна владельца

NULL, // дескриптор меню или идентификатор дочернего окна

hInstance, // дескриптор экземпляра приложения

NULL // указатель на данные создания окна

);

HINSTANCE hDll;

hDll=LoadLibrary("graph"); // ДИНАМИЧЕСКОЕ ПОДКЛЮЧЕНИЕ DLL

if (hDll==NULL){

MessageBox(0, "Не найдена Dll",0,MB_OK);

return 1;

}

DrawGraph = (DrawGraph_func) GetProcAddress(hDll, "_draw_graph@16");

if (DrawGraph==NULL){

MessageBox(0,"Не найдена функция",0,MB_OK);

return 1;

}

ShowWindow(hWnd, nCmdShow);

while(GetMessage(&msg, NULL, 0, 0)) //цикл обработки сообщений

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

FreeLibrary(hDll);

return msg.wParam;

}

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

{

switch(msg)

{

PAINTSTRUCT ps;

HDC hdc;

case WM_DESTROY:

PostQuitMessage(0);

break;

case WM_PAINT:

hdc = BeginPaint(hWnd, &ps);

(*DrawGraph)(hWnd, hdc, -1, 1);

EndPaint(hWnd, &ps);

break;

default:

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

break;

}

return 0; }

Dll.h

#pragma once

#include "Windows.h"

#include <math.h>

#include <stdio.h>

#define BORDER 5

#define FONTHEIGHT 30

#define FONTWIDTH 5

#define a 5.0

#ifdef __cplusplus

extern "C" {

#endif

extern wchar_t s[128];

extern int slen;

extern double Xmin,Xmax,Ymin,Ymax,CenterX,CenterY;

extern int XAxisDigits,YAxisDigits;

extern double aFunctionPoints[2][1001];

extern HPEN penC, pen;

extern RECT rect;

extern int iWindowWidth;

extern int iWindowHeight;

extern double kX;

extern double kY;

extern int xPoints;

extern int yPoints;

extern int i;

extern double temp;

extern RECT rt;

void FillArray ( );

int calcdigits(double temp);

__declspec(dllexport) void Draw ( HWND hWnd, HDC hdc, double xMin, double xMax );

#ifdef __cplusplus

}

#endif

l4.cpp

#include <windows.h>

#include <stdio.h>

#include <math.h>

#define MAX_LOADSTRING 100

HINSTANCE hInst;

wchar_t szTitle[MAX_LOADSTRING];

wchar_t szWindowClass[MAX_LOADSTRING];

wchar_t ClassNameMain[] = L"MainWindow";

BOOL MyRegisterClass(WNDPROC, LPCTSTR, UINT);

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

PAINTSTRUCT ps;

HDC hdc;

typedef void ( __cdecl *_DrawFunc ) ( HWND hWnd, HDC hdc, double xMin, double xMax );

_DrawFunc DrawFunc;

HINSTANCE dllInstance;

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

{

HWND hWnd;

MSG msg;

hInst = hInstance;

if (!MyRegisterClass((WNDPROC)WndProc, ClassNameMain, COLOR_WINDOW)) return false;

hWnd=CreateWindow(ClassNameMain, L"Лр4", WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);

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