Динамическое создание 10 кнопок, по нажатию на первые 5 – меняется заголовок окна, по нажатию на остальные – меняется название самой кнопки. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Динамическое создание 10 кнопок, по нажатию на первые 5 – меняется заголовок окна, по нажатию на остальные – меняется название самой кнопки.



 

#include <windows.h>

#include <stdio.h>

#include <string.h>

#define ID_BUTTON1 1001

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=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 HWND rButton[10];

int i;

char bname[40];

switch(msg)

{

case WM_COMMAND:

if (LOWORD(wParam)>=ID_BUTTON1 && LOWORD(wParam)<=ID_BUTTON1+4)

{

sprintf(bname,"Нажата %d кнопка",LOWORD(wParam)-ID_BUTTON1);

SetWindowText(hWnd, bname);

}

if (LOWORD(wParam)>=ID_BUTTON1+5)

{

for(i=5; i<10; i++)

{

sprintf(bname,"%d button",i);

SetWindowText(rButton[i], bname);

}

sprintf(bname,"Нажата %d кнопка",LOWORD(wParam)-ID_BUTTON1);

SetWindowText(rButton[LOWORD(wParam)-ID_BUTTON1], bname);

}

break;

 

case WM_CREATE:

for(i=0; i<10; i++)

{

sprintf(bname,"%d button",i);

if (i==0 || i==5)

rButton[i]=CreateWindow("button",bname,WS_TABSTOP|WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON|BS_FLAT|BS_PUSHLIKE|WS_GROUP, 10, 10+i*25, 145, 25, hWnd, (HMENU)(ID_BUTTON1+i),NULL,NULL);

else

rButton[i]=CreateWindow("button",bname,WS_TABSTOP|WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON|BS_FLAT|BS_PUSHLIKE, 10, 10+i*25, 145, 25, hWnd, (HMENU)(ID_BUTTON1+i),NULL,NULL);

 

}

SendMessage(rButton[0], BM_SETCHECK,1,0);

SetWindowText(hWnd, "Нажата 0 кнопка");

break;

case WM_DESTROY:

PostQuitMessage(0);

break;

default:

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

}

return 0;

}

Пример 7

Динамическое создание скролла, по его перемещению – в заголовке окна выдается расстояние

#include <windows.h>

#include <stdio.h>

#include <string.h>

#define ID_SCROLL 1001

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=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,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 HWND Scroll1;

static int nPage, nCurPos, nPosMin, nPosMax;

char pos[5];

switch(msg)

{

case WM_CREATE:

Scroll1=CreateWindow("scrollbar",NULL, SBS_HORZ|SBS_BOTTOMALIGN|WS_CHILD|WS_VISIBLE,10,10,160,16,hWnd,(HMENU)0,NULL,NULL);

nPage=10;

nPosMin=1;

nPosMax=150;

nCurPos=30;

SetScrollRange(Scroll1, SB_CTL, nPosMin, nPosMax, TRUE);

SetScrollPos(Scroll1, SB_CTL, nCurPos, TRUE);

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

SetWindowText(hWnd, pos);

break;

case WM_HSCROLL:

switch (LOWORD(wParam))

{

case SB_LEFT:

nCurPos=nPosMin;

break;

case SB_LINELEFT:

nCurPos--;

break;

case SB_PAGELEFT:

nCurPos-=nPage;

break;

case SB_RIGHT:

nCurPos=nPosMax;

break;

case SB_LINERIGHT:

nCurPos++;

break;

case SB_PAGERIGHT:

nCurPos+=nPage;

break;

case SB_THUMBPOSITION:

case SB_THUMBTRACK:

nCurPos=HIWORD(wParam);

break;

 

}

if (nCurPos>=nPosMax)

{

nCurPos=nPosMax;

EnableScrollBar(Scroll1, SB_CTL, ESB_DISABLE_RIGHT);

}

if (nCurPos<=nPosMin)

{

nCurPos=nPosMin;

EnableScrollBar(Scroll1, SB_CTL, ESB_DISABLE_LEFT);

}

SetScrollPos(Scroll1, SB_CTL, nCurPos, TRUE);

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

SetWindowText(hWnd, pos);

break;

case WM_DESTROY:

PostQuitMessage(0);

break;

default:

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

}

return 0;

}

Пример 8

Создание тулбара


#include <windows.h>

#include <commctrl.h>

#define ID_TOOLBAR 100

#define ID_FILEOPEN 40001

#define ID_FILESAVE 40002

#define ID_FILENEW 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=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 TBBUTTON but[5];

static HWND hToolBar;

switch(msg)

{ case WM_CREATE:

but[0].fsStyle=TBSTYLE_SEP;

but[1].iBitmap=STD_FILENEW;

but[1].idCommand=ID_FILENEW;

but[1].fsState=TBSTATE_ENABLED;

but[1].fsStyle=TBSTYLE_GROUP;

but[2].fsStyle=TBSTYLE_SEP;

but[3].iBitmap=STD_FILEOPEN;

but[3].idCommand=ID_FILEOPEN;

but[3].fsState=TBSTATE_ENABLED;

but[3].fsStyle=TBSTYLE_GROUP;

but[4].iBitmap=STD_FILESAVE;

but[4].idCommand=ID_FILESAVE;

but[4].fsState=TBSTATE_ENABLED;

but[4].fsStyle=TBSTYLE_GROUP;

hToolBar=CreateToolbarEx(hWnd,WS_CHILD|WS_VISIBLE|WS_DLGFRAME,ID_TOOLBAR,0,HINST_COMMCTRL,IDB_STD_LARGE_COLOR,but,5,0,0,0,0,sizeof(TBBUTTON));

break;

case WM_SIZE:

MoveWindow(hToolBar,0,0,0,0,TRUE);

break;

case WM_COMMAND:

switch(LOWORD(wParam))

{

case ID_FILEOPEN:

MessageBox(hWnd,"Открыть файл","",MB_OK);

break;

case ID_FILESAVE:

MessageBox(hWnd,"Сохранить файл","",MB_OK);

break;

case ID_FILENEW:

MessageBox(hWnd,"Новый файл","",MB_OK);

break;

} break;

case WM_DESTROY:

PostQuitMessage(0);

break;

default:

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

}

return 0;}

Пример 9



Поделиться:


Последнее изменение этой страницы: 2016-07-14; просмотров: 161; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.170.183 (0.019 с.)