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

InvalidateRect(hWnd,&rt,true);

}

break;

case WM_PAINT:

hdc=BeginPaint(hWnd,&ps);

GetClientRect(hWnd,&rt);

brush=CreateSolidBrush(clf);

hOldBrush=SelectObject(hdc,brush);

font=CreateFontIndirect(&lf);

hOldFont=SelectObject(hdc,font);

SetTextColor(hdc,colfont);

SetBkColor(hdc,clf);

Rectangle(hdc,rt.left,rt.top,rt.right,rt.bottom);

TextOut(hdc,20,20,lf.lfFaceName,strlen(lf.lfFaceName));

SelectObject(hdc, hOldBrush);

DeleteObject(brush);

SelectObject(hdc, hOldFont);

DeleteObject(hOldFont);

EndPaint(hWnd,&ps);

break;

case WM_DESTROY:

PostQuitMessage(0);

break;

default:

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

}

return 0;

}

Пример 3

По нажатию на первый пункт меню - появляется второй пункт, по нажатию на второй – появляется третий пункт, по наведению на который появляются еще 2 подпункта.

#include <windows.h>

#define ID_FIRST 40001

#define ID_SECOND 40002

#define ID_THIRD 40003

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

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, -1, 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;

}

Пример 4

Динамическое создание листбокса, комбобокса и кнопки, по нажатию на кнопку – в листбокс дописываются записи, по четному нажатию - листбокс активен, по нечетному – неактивен.

#include <windows.h>

#include <stdio.h>

#include <string.h>

#define ID_LIST 1001

#define ID_BUTTON 1002

#define ID_COMBO 1003

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

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