Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Создание меню из трех пунктов, в первых двух – по 2 подпункта, по нажатию пкм – контекстное меню из тех же двух подпунктов.Содержание книги
Поиск на нашем сайте 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); if (!hWnd) return false; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); }
return int(msg.wParam); }
BOOL MyRegisterClass… LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; wchar_t szHello[MAX_LOADSTRING];
switch (message) { case WM_NCCREATE: { dllInstance =::LoadLibrary (L"dll.dll"); if (dllInstance == NULL) { ::MessageBox (0, L"В процессе загрузки динамической библиотеки произошла ошибка.", L"Ошибка", MB_OK); return 0; }
DrawFunc = (_DrawFunc)::GetProcAddress (dllInstance, "Draw"); if (DrawFunc == NULL) { ::MessageBox (0, L"В процессе загрузки динамической библиотеки произошла ошибка.", L"Ошибка", MB_OK); return 0; }
return 1; }
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps); DrawFunc (hWnd, hdc, 0.1, 10); ::EndPaint (hWnd, &ps); break;
case WM_DESTROY: PostQuitMessage(0); break;
default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }
***** void Draw (HWND hWnd, HDC hdc, double xMin, double xMax) { Xmin = xMin; Xmax = xMax; FillArray();
#include <windows.h> #include <stdio.h> #define ID_EDIT 1001 #define ID_BUTTON 1002
LONG WinProc(HWND, UINT, WPARAM, LPARAM); HINSTANCE hInstance; char szTitle[]="Однострочный редактор"; int zna=1; // WINMAIN int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pCmdLine, int nCmdShow){ char ProgName[]="Labrab";
HWND hWnd; MSG msg; //РЕГИСТРАЦИЯ ОКОННОГО КЛАССА WNDCLASS w; w.lpszClassName=ProgName; w.hInstance=hInstance; w.lpfnWndProc=(WNDPROC)WinProc; 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, //имя класса szTitle, //имя окна (заголовок) WS_OVERLAPPEDWINDOW, //стиль окна 100, //x-координата окна 100, //y-координата окна GetSystemMetrics(SM_CXSCREEN)/2, //ширина окна GetSystemMetrics(SM_CYSCREEN)/2, //высота окна NULL, // дескриптор родительского или окна владельца NULL, // дескриптор меню или идентификатор дочернего окна hInstance, // дескриптор экземпляра приложения NULL // указатель на данные создания окна ); //CreateWindow("STATIC","Подготовка ко второму модулю",WS_CHILD|WS_VISIBLE|SS_LEFT,10,1,220,20,hWnd,NULL,hInstance,NULL);
ShowWindow(hWnd, nCmdShow); while(GetMessage(&msg, NULL, 0, 0)) //цикл обработки сообщений { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } //
//ОКОННАЯ ПРОЦЕДУРА LONG WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){ //POINT LeftCorner; RECT rect; //int x,y,x1,y1; //POINT pt; //чтобы преобразовать чар в бу НАДО СПРИНТФ
static HWND hEdit, hButton, hStatic; char chBuff[80]=" ";
switch(msg){ case WM_CREATE: { hStatic=CreateWindow("static","Введите строку и нажмите кнопку ОК",WS_CHILD|WS_VISIBLE|SS_CENTER,30,10,300,20,hWnd,(HMENU)0,hInstance,NULL); hEdit=CreateWindow("edit",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER|ES_LEFT,30,40,300,30,hWnd,(HMENU)ID_EDIT,hInstance,NULL); hButton=CreateWindow("button","OK",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,130,85,100,30,hWnd,(HMENU)ID_BUTTON,hInstance,NULL); SetFocus(hEdit); return 0; } case WM_COMMAND: { switch(LOWORD(wParam)) { case ID_EDIT: { if((HIWORD(wParam))==EN_ERRSPACE) { MessageBox(hWnd,"Мало памяти",szTitle,MB_OK); } return 0; } case ID_BUTTON: { SendMessage(hEdit,EM_GETLINE,0,(LPARAM)chBuff); //MessageBox(hWnd,chBuff,"Нежданчик",MB_OK); SetWindowText(hEdit,"\0"); SetFocus(hEdit); sscanf(chBuff,"%d", &zna); //GetClientRect(hWnd, &rect); InvalidateRect(hWnd,NULL,TRUE);
//sprintf(chBuff,"%d", &zna); //MessageBox(hWnd,chBuff,"Нежданчик",MB_OK); return 0;
} } return 0; } case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd,&ps); MoveToEx(hdc,30,150,NULL), LineTo(hdc,2*zna+130,150);
//sprintf(chBuff,"%d", zna); //MessageBox(hWnd,chBuff,"Нежданчик",MB_OK); UpdateWindow(hWnd); //ValidateRect(hWnd,NULL); EndPaint(hWnd,&ps);
return 0; } case WM_DESTROY: PostQuitMessage(0); break;
case WM_LBUTTONDOWN:
break;
default: return DefWindowProc(hWnd, msg, wParam, lParam); break;
} return 0; }
ЧЕК БАТТОН В СТАТУС БАР =)
#include <windows.h> #include <stdio.h> #include <commctrl.h> #pragma comment(lib,"comctl32.lib")
#define ID_BUTTON1 1001 #define ID_CHECK1 1001 #define ID_CHECK2 1002 #define ID_CHECK3 1003 #define ID_CHECK4 1004 #define ID_CHECK5 1005 #define ID_STATBAR 2001
HINSTANCE hInst;
LONG WinProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {char ProgName[]="My Window"; char Title[]="Window"; HWND hWnd; MSG msg; WNDCLASS w; w.lpszClassName=ProgName; w.hInstance=hInstance; w.lpfnWndProc=(WNDPROC)WinProc; w.hCursor=LoadCursor(NULL,IDC_ARROW); w.hIcon=LoadIcon(NULL,IDI_APPLICATION); w.lpszMenuName=NULL; w.hbrBackground=(HBRUSH)(COLOR_WINDOW+7); w.style=CS_HREDRAW|CS_VREDRAW; w.cbClsExtra=0; w.cbWndExtra=0; hInst=hInstance; if(!RegisterClass(&w)) return false; hWnd=CreateWindow(ProgName, Title, WS_OVERLAPPEDWINDOW, 200,0,1010,740,NULL,NULL,hInstance,NULL); ShowWindow(hWnd,nShowCmd); while(GetMessage(&msg,NULL,0,0)) {TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }
LONG WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
static HWND r1,r2,r3,r4; static HWND rButton[10]; static HWND hStatus; char bname[40],buf[40]; int i; static int che=-1;
switch(msg) {case WM_CREATE: hStatus=CreateStatusWindow(WS_CHILD|WS_VISIBLE,(LPCSTR)"Вывод",hWnd,ID_STATBAR); for(i=0;i<5;i++) { if (i==0) sprintf(bname,"1"); if (i==1) sprintf(bname,"2"); if (i==2) sprintf(bname,"3"); if (i==3) sprintf(bname,"4"); if (i==4) sprintf(bname,"5"); rButton[i]=CreateWindow("button",bname,WS_TABSTOP|WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON|BS_FLAT,500,140+i*20,35,25,hWnd,(HMENU)(ID_BUTTON1+i),NULL,NULL); } break;
case WM_COMMAND: switch(LOWORD(wParam)) { case ID_CHECK1: { che=1; sprintf(buf,"%d",che); SetWindowText(hStatus,buf); } break; case ID_CHECK2: { che=2; sprintf(buf,"%d",che); SetWindowText(hStatus,buf); } break; case ID_CHECK3: { che=3; sprintf(buf,"%d",che); SetWindowText(hStatus,buf); } break; case ID_CHECK4: { che=4; sprintf(buf,"%d",che); SetWindowText(hStatus,buf); } break; case ID_CHECK5: { che=5; sprintf(buf,"%d",che); SetWindowText(hStatus,buf); } break; } break;
case WM_SIZE: MoveWindow(hStatus,0,0,0,0,TRUE); break;
case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, msg, wParam, lParam); } return 0; }
РИСОВАНИЕ ОТРЕЗКА
#include <windows.h>
#define ID_EDIT1 1001 #define ID_EDIT2 1002 #define ID_EDIT3 1003 #define ID_EDIT4 1004 #define ID_BUTTON 2001
HINSTANCE hInst; LONG MyWinP(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {char ProgName[]="My Window"; char Title[]="Window"; 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+7); w.style=CS_HREDRAW|CS_VREDRAW; w.cbClsExtra=0; w.cbWndExtra=0; hInst=hInstance; if(!RegisterClass(&w)) return false; hWnd=CreateWindow(ProgName, Title, WS_OVERLAPPEDWINDOW, 200,30,800,540,NULL,NULL,hInstance,NULL); ShowWindow(hWnd,nShowCmd); while(GetMessage(&msg,NULL,0,0)) {TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }
LONG MyWinP(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { static HDC hdc; static PAINTSTRUCT ps; static RECT rt; static HWND edit1,edit2,edit3,edit4,btn; static char buf[100],old_edit[100]; static int n_x,n_y,k_x,k_y;
switch(msg) {case WM_CREATE: CreateWindow("static","Координаты начала отрезка:",WS_CHILD|WS_VISIBLE|SS_CENTER,150,30,230,20,hWnd,NULL,NULL,NULL); CreateWindow("static","x:",WS_CHILD|WS_VISIBLE|SS_CENTER,220,55,30,20,hWnd,NULL,NULL,NULL); CreateWindow("static","y:",WS_CHILD|WS_VISIBLE|SS_CENTER,320,55,30,20,hWnd,NULL,NULL,NULL); CreateWindow("static","Координаты конца отрезка:",WS_CHILD|WS_VISIBLE|SS_CENTER,390,30,230,20,hWnd,NULL,NULL,NULL); CreateWindow("static","x:",WS_CHILD|WS_VISIBLE|SS_CENTER,420,55,30,20,hWnd,NULL,NULL,NULL); CreateWindow("static","y:",WS_CHILD|WS_VISIBLE|SS_CENTER,520,55,30,20,hWnd,NULL,NULL,NULL); edit1=CreateWindow("edit",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER|ES_CENTER|ES_LOWERCASE,200,80,70,20,hWnd,(HMENU)ID_EDIT1,NULL,NULL); edit2=CreateWindow("edit",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER|ES_CENTER|ES_LOWERCASE,300,80,70,20,hWnd,(HMENU)ID_EDIT2,NULL,NULL); edit3=CreateWindow("edit",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER|ES_CENTER|ES_LOWERCASE,400,80,70,20,hWnd,(HMENU)ID_EDIT3,NULL,NULL); edit4=CreateWindow("edit",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER|ES_CENTER|ES_LOWERCASE,500,80,70,20,hWnd,(HMENU)ID_EDIT4,NULL,NULL); btn=CreateWindow("button","Enter",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,340,130,100,30,hWnd,HMENU(ID_BUTTON),NULL,NULL); break;
case WM_COMMAND: switch(LOWORD(wParam)) {case ID_BUTTON: GetWindowText(edit1,buf,sizeof(buf)); n_x=atof(buf); GetWindowText(edit2,buf,sizeof(buf)); n_y=atof(buf); GetWindowText(edit3,buf,sizeof(buf)); k_x=atof(buf); GetWindowText(edit4,buf,sizeof(buf)); k_y=atof(buf); GetClientRect(hWnd,&rt); InvalidateRect(hWnd,&rt,TRUE); break;
} break;
case WM_PAINT:
hdc=BeginPaint(hWnd,&ps); MoveToEx(hdc,n_x,n_y,NULL); LineTo(hdc,k_x,k_y); EndPaint(hWnd,&ps); break;
case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, msg, wParam, lParam); } return 0; }
ИЗ СПИСКА В ТЕКСТОВОЕ ПОЛЕ
#include <windows.h> #include <stdio.h>
#define ID_LIST 1001 #define ID_EDIT 2001 #define ID_BUTTON 3001
HINSTANCE hInst; LONG MyWinP(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {char ProgName[]="My Window"; char Title[]="Window"; 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+7); w.style=CS_HREDRAW|CS_VREDRAW; w.cbClsExtra=0; w.cbWndExtra=0; hInst=hInstance; if(!RegisterClass(&w)) return false; hWnd=CreateWindow(ProgName, Title, WS_OVERLAPPEDWINDOW, 200,30,800,540,NULL,NULL,hInstance,NULL); ShowWindow(hWnd,nShowCmd); while(GetMessage(&msg,NULL,0,0)) {TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }
LONG MyWinP(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { static HDC hdc; static PAINTSTRUCT ps; static RECT rt; static HWND list,edit,btn; static char l[100]; static int tmp;
switch(msg) {case WM_CREATE: list=CreateWindow("listbox",NULL,WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_VSCROLL,300,80,130,130,hWnd,(HMENU)ID_LIST,NULL,NULL); SendMessage(list,LB_ADDSTRING,0,(LPARAM)"Choise 1"); SendMessage(list,LB_ADDSTRING,0,(LPARAM)"Choise 2"); SendMessage(list,LB_ADDSTRING,0,(LPARAM)"Choise 3"); edit=CreateWindow("edit",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER|ES_CENTER|ES_LOWERCASE,470,120,170,20,hWnd,(HMENU)ID_EDIT,NULL,NULL); btn=CreateWindow("button","Enter",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,400,230,100,30,hWnd,HMENU(ID_BUTTON),NULL,NULL); break;
case WM_COMMAND: switch(LOWORD(wParam)) { case ID_LIST: tmp=(int)SendMessage(list,LB_GETCURSEL,0,0); if(tmp==0) sprintf(l, "Choise 1"); if(tmp==1) sprintf(l, "Choise 2"); if(tmp==2) sprintf(l, "Choise 3"); break; case ID_BUTTON: SetWindowText(edit,l); break;
} break;
case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, msg, wParam, lParam); } return 0; }
Пример 1 Пример 2 Пример 3 Пример 4 Пример 5 Создание скролбара #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; switch(msg) { case WM_CREATE: Scroll1=CreateWindow("scrollbar",NULL, SBS_SIZEBOX|WS_CHILD|WS_VISIBLE,10,10,16,16,hWnd,(HMENU)0,NULL,NULL); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, msg, wParam, lParam); }return 0;}
Пример 6 Пример 7 Пример 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 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); if (!hWnd) return false; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); }
return int(msg.wParam); }
BOOL MyRegisterClass… LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; wchar_t szHello[MAX_LOADSTRING];
switch (message) { case WM_NCCREATE: { dllInstance =::LoadLibrary (L"dll.dll"); if (dllInstance == NULL) { ::MessageBox (0, L"В процессе загрузки динамической библиотеки произошла ошибка.", L"Ошибка", MB_OK); return 0; }
DrawFunc = (_DrawFunc)::GetProcAddress (dllInstance, "Draw"); if (DrawFunc == NULL) { ::MessageBox (0, L"В процессе загрузки динамической библиотеки произошла ошибка.", L"Ошибка", MB_OK); return 0; }
return 1; }
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps); DrawFunc (hWnd, hdc, 0.1, 10); ::EndPaint (hWnd, &ps); break;
case WM_DESTROY: PostQuitMessage(0); break;
default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }
***** void Draw (HWND hWnd, HDC hdc, double xMin, double xMax) { Xmin = xMin; Xmax = xMax; FillArray();
#include <windows.h> #include <stdio.h> #define ID_EDIT 1001 #define ID_BUTTON 1002
LONG WinProc(HWND, UINT, WPARAM, LPARAM); HINSTANCE hInstance; char szTitle[]="Однострочный редактор"; int zna=1; // WINMAIN int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pCmdLine, int nCmdShow){ char ProgName[]="Labrab";
HWND hWnd; MSG msg; //РЕГИСТРАЦИЯ ОКОННОГО КЛАССА WNDCLASS w; w.lpszClassName=ProgName; w.hInstance=hInstance; w.lpfnWndProc=(WNDPROC)WinProc; 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, //имя класса szTitle, //имя окна (заголовок) WS_OVERLAPPEDWINDOW, //стиль окна 100, //x-координата окна 100, //y-координата окна GetSystemMetrics(SM_CXSCREEN)/2, //ширина окна GetSystemMetrics(SM_CYSCREEN)/2, //высота окна NULL, // дескриптор родительского или окна владельца NULL, // дескриптор меню или идентификатор дочернего окна hInstance, // дескриптор экземпляра приложения NULL // указатель на данные создания окна ); //CreateWindow("STATIC","Подготовка ко второму модулю",WS_CHILD|WS_VISIBLE|SS_LEFT,10,1,220,20,hWnd,NULL,hInstance,NULL);
ShowWindow(hWnd, nCmdShow); while(GetMessage(&msg, NULL, 0, 0)) //цикл обработки сообщений { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } //
//ОКОННАЯ ПРОЦЕДУРА LONG WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){ //POINT LeftCorner; RECT rect; //int x,y,x1,y1; //POINT pt; //чтобы преобразовать чар в бу НАДО СПРИНТФ
static HWND hEdit, hButton, hStatic; char chBuff[80]=" ";
switch(msg){ case WM_CREATE: { hStatic=CreateWindow("static","Введите строку и нажмите кнопку ОК",WS_CHILD|WS_VISIBLE|SS_CENTER,30,10,300,20,hWnd,(HMENU)0,hInstance,NULL); hEdit=CreateWindow("edit",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER|ES_LEFT,30,40,300,30,hWnd,(HMENU)ID_EDIT,hInstance,NULL); hButton=CreateWindow("button","OK",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,130,85,100,30,hWnd,(HMENU)ID_BUTTON,hInstance,NULL); SetFocus(hEdit); return 0; } case WM_COMMAND: { switch(LOWORD(wParam)) { case ID_EDIT: { if((HIWORD(wParam))==EN_ERRSPACE) { MessageBox(hWnd,"Мало памяти",szTitle,MB_OK); } return 0; } case ID_BUTTON: { SendMessage(hEdit,EM_GETLINE,0,(LPARAM)chBuff); //MessageBox(hWnd,chBuff,"Нежданчик",MB_OK); SetWindowText(hEdit,"\0"); SetFocus(hEdit); sscanf(chBuff,"%d", &zna); //GetClientRect(hWnd, &rect); InvalidateRect(hWnd,NULL,TRUE);
//sprintf(chBuff,"%d", &zna); //MessageBox(hWnd,chBuff,"Нежданчик",MB_OK); return 0;
} } return 0; } case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd,&ps); MoveToEx(hdc,30,150,NULL), LineTo(hdc,2*zna+130,150);
//sprintf(chBuff,"%d", zna); //MessageBox(hWnd,chBuff,"Нежданчик",MB_OK); UpdateWindow(hWnd); //ValidateRect(hWnd,NULL); EndPaint(hWnd,&ps);
return 0; } case WM_DESTROY: PostQuitMessage(0); break;
case WM_LBUTTONDOWN:
break;
default: return DefWindowProc(hWnd, msg, wParam, lParam); break;
} return 0; }
ЧЕК БАТТОН В СТАТУС БАР =)
#include <windows.h> #include <stdio.h> #include <commctrl.h> #pragma comment(lib,"comctl32.lib")
#define ID_BUTTON1 1001 #define ID_CHECK1 1001 #define ID_CHECK2 1002 #define ID_CHECK3 1003 #define ID_CHECK4 1004 #define ID_CHECK5 1005 #define ID_STATBAR 2001
HINSTANCE hInst;
LONG WinProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {char ProgName[]="My Window"; char Title[]="Window"; HWND hWnd; MSG msg; WNDCLASS w; w.lpszClassName=ProgName; w.hInstance=hInstance; w.lpfnWndProc=(WNDPROC)WinProc; w.hCursor=LoadCursor(NULL,IDC_ARROW); w.hIcon=LoadIcon(NULL,IDI_APPLICATION); w.lpszMenuName=NULL; w.hbrBackground=(HBRUSH)(COLOR_WINDOW+7); w.style=CS_HREDRAW|CS_VREDRAW; w.cbClsExtra=0; w.cbWndExtra=0; hInst=hInstance; if(!RegisterClass(&w)) return false; hWnd=CreateWindow(ProgName, Title, WS_OVERLAPPEDWINDOW, 200,0,1010,740,NULL,NULL,hInstance,NULL); ShowWindow(hWnd,nShowCmd); while(GetMessage(&msg,NULL,0,0)) {TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }
LONG WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
static HWND r1,r2,r3,r4; static HWND rButton[10]; static HWND hStatus; char bname[40],buf[40]; int i; static int che=-1;
switch(msg) {case WM_CREATE: hStatus=CreateStatusWindow(WS_CHILD|WS_VISIBLE,(LPCSTR)"Вывод",hWnd,ID_STATBAR); for(i=0;i<5;i++) { if (i==0) sprintf(bname,"1"); if (i==1) sprintf(bname,"2"); if (i==2) sprintf(bname,"3"); if (i==3) sprintf(bname,"4"); if (i==4) sprintf(bname,"5"); rButton[i]=CreateWindow("button",bname,WS_TABSTOP|WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON|BS_FLAT,500,140+i*20,35,25,hWnd,(HMENU)(ID_BUTTON1+i),NULL,NULL); } break;
case WM_COMMAND: switch(LOWORD(wParam)) { case ID_CHECK1: { che=1; sprintf(buf,"%d",che); SetWindowText(hStatus,buf); } break; case ID_CHECK2: { che=2; sprintf(buf,"%d",che); SetWindowText(hStatus,buf); } break; case ID_CHECK3: { che=3; sprintf(buf,"%d",che); SetWindowText(hStatus,buf); } break; case ID_CHECK4: { che=4; sprintf(buf,"%d",che); SetWindowText(hStatus,buf); } break; case ID_CHECK5: { che=5; sprintf(buf,"%d",che); SetWindowText(hStatus,buf); } break; } break;
case WM_SIZE: MoveWindow(hStatus,0,0,0,0,TRUE); break;
case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, msg, wParam, lParam); } return 0; }
РИСОВАНИЕ ОТРЕЗКА
#include <windows.h>
#define ID_EDIT1 1001 #define ID_EDIT2 1002 #define ID_EDIT3 1003 #define ID_EDIT4 1004 #define ID_BUTTON 2001
HINSTANCE hInst; LONG MyWinP(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {char ProgName[]="My Window"; char Title[]="Window"; 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+7); w.style=CS_HREDRAW|CS_VREDRAW; w.cbClsExtra=0; w.cbWndExtra=0; hInst=hInstance; if(!RegisterClass(&w)) return false; hWnd=CreateWindow(ProgName, Title, WS_OVERLAPPEDWINDOW, 200,30,800,540,NULL,NULL,hInstance,NULL); ShowWindow(hWnd,nShowCmd); while(GetMessage(&msg,NULL,0,0)) {TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }
LONG MyWinP(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { static HDC hdc; static PAINTSTRUCT ps; static RECT rt; static HWND edit1,edit2,edit3,edit4,btn; static char buf[100],old_edit[100]; static int n_x,n_y,k_x,k_y;
switch(msg) {case WM_CREATE: CreateWindow("static","Координаты начала отрезка:",WS_CHILD|WS_VISIBLE|SS_CENTER,150,30,230,20,hWnd,NULL,NULL,NULL); CreateWindow("static","x:",WS_CHILD|WS_VISIBLE|SS_CENTER,220,55,30,20,hWnd,NULL,NULL,NULL); CreateWindow("static","y:",WS_CHILD|WS_VISIBLE|SS_CENTER,320,55,30,20,hWnd,NULL,NULL,NULL); CreateWindow("static","Координаты конца отрезка:",WS_CHILD|WS_VISIBLE|SS_CENTER,390,30,230,20,hWnd,NULL,NULL,NULL); CreateWindow("static","x:",WS_CHILD|WS_VISIBLE|SS_CENTER,420,55,30,20,hWnd,NULL,NULL,NULL); CreateWindow("static","y:",WS_CHILD|WS_VISIBLE|SS_CENTER,520,55,30,20,hWnd,NULL,NULL,NULL); edit1=CreateWindow("edit",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER|ES_CENTER|ES_LOWERCASE,200,80,70,20,hWnd,(HMENU)ID_EDIT1,NULL,NULL); edit2=CreateWindow("edit",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER|ES_CENTER|ES_LOWERCASE,300,80,70,20,hWnd,(HMENU)ID_EDIT2,NULL,NULL); edit3=CreateWindow("edit",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER|ES_CENTER|ES_LOWERCASE,400,80,70,20,hWnd,(HMENU)ID_EDIT3,NULL,NULL); edit4=CreateWindow("edit",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER|ES_CENTER|ES_LOWERCASE,500,80,70,20,hWnd,(HMENU)ID_EDIT4,NULL,NULL); btn=CreateWindow("button","Enter",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,340,130,100,30,hWnd,HMENU(ID_BUTTON),NULL,NULL); break;
case WM_COMMAND: switch(LOWORD(wParam)) {case ID_BUTTON: GetWindowText(edit1,buf,sizeof(buf)); n_x=atof(buf); GetWindowText(edit2,buf,sizeof(buf)); n_y=atof(buf); GetWindowText(edit3,buf,sizeof(buf)); k_x=atof(buf); GetWindowText(edit4,buf,sizeof(buf)); k_y=atof(buf); GetClientRect(hWnd,&rt); InvalidateRect(hWnd,&rt,TRUE); break;
} break;
case WM_PAINT:
hdc=BeginPaint(hWnd,&ps); MoveToEx(hdc,n_x,n_y,NULL); LineTo(hdc,k_x,k_y); EndPaint(hWnd,&ps); break;
case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, msg, wParam, lParam); } return 0; }
ИЗ СПИСКА В ТЕКСТОВОЕ ПОЛЕ
#include <windows.h> #include <stdio.h>
#define ID_LIST 1001 #define ID_EDIT 2001 #define ID_BUTTON 3001
HINSTANCE hInst; LONG MyWinP(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {char ProgName[]="My Window"; char Title[]="Window"; 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+7); w.style=CS_HREDRAW|CS_VREDRAW; w.cbClsExtra=0; w.cbWndExtra=0; hInst=hInstance; if(!RegisterClass(&w)) return false; hWnd=CreateWindow(ProgName, Title, WS_OVERLAPPEDWINDOW, 200,30,800,540,NULL,NULL,hInstance,NULL); ShowWindow(hWnd,nShowCmd); while(GetMessage(&msg,NULL,0,0)) {TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }
LONG MyWinP(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { static HDC hdc; static PAINTSTRUCT ps; static RECT rt; static HWND list,edit,btn; static char l[100]; static int tmp;
switch(msg) {case WM_CREATE: list=CreateWindow("listbox",NULL,WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_VSCROLL,300,80,130,130,hWnd,(HMENU)ID_LIST,NULL,NULL); SendMessage(list,LB_ADDSTRING,0,(LPARAM)"Choise 1"); SendMessage(list,LB_ADDSTRING,0,(LPARAM)"Choise 2"); SendMessage(list,LB_ADDSTRING,0,(LPARAM)"Choise 3"); edit=CreateWindow("edit",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER|ES_CENTER|ES_LOWERCASE,470,120,170,20,hWnd,(HMENU)ID_EDIT,NULL,NULL); btn=CreateWindow("button","Enter",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,400,230,100,30,hWnd,HMENU(ID_BUTTON),NULL,NULL); break;
case WM_COMMAND: switch(LOWORD(wParam)) { case ID_LIST: tmp=(int)SendMessage(list,LB_GETCURSEL,0,0); if(tmp==0) sprintf(l, "Choise 1"); if(tmp==1) sprintf(l, "Choise 2"); if(tmp==2) sprintf(l, "Choise 3"); break; case ID_BUTTON: SetWindowText(edit,l); break;
} break;
case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, msg, wParam, lParam); } return 0; }
Пример 1 Создание меню из трех пунктов, в первых двух – по 2 подпункта, по нажатию ПКМ – контекстное меню из тех же двух подпунктов. #include <windows.h> #include "resource.h" 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; HMENU menu; 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; menu=LoadMenu(NULL,(LPCTSTR)IDR_MENU1); hWnd=CreateWindow(ProgName,Title, WS_OVERLAPPEDWINDOW|WS_HSCROLL|WS_VSCROLL,0,0, CW_USEDEFAULT, CW_USEDEFAULT, NULL, menu, 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) { PAINTSTRUCT ps; HDC hdc; HBRUSH brush; static COLORREF clf; HMENU popupmenu; int x,y; RECT rt; static HMENU systemmenu; switch(msg) { case WM_COMMAND: switch (LOWORD(wParam)) { case ID_RED: clf=RGB(255,0,0); GetClientRect(hWnd, &rt); InvalidateRect(hWnd,&rt,TRUE); break; case ID_GREEN: clf=RGB(0,255,0); GetClientRect(hWnd, &rt); InvalidateRect(hWnd,&rt,TRUE); break; case ID_BLUE: clf=RGB(0,0,255); GetClientRect(hWnd, &rt); InvalidateRect(hWnd,&rt,TRUE); break; } break; case WM_CREATE: clf=RGB(255,0,0); systemmenu=GetSystemMenu(hWnd,FALSE); AppendMenu(systemmenu,MF_SEPARATOR,0,0); AppendMenu(systemmenu,0,5000,"Зеленый"); AppendMenu(systemmenu,MF_SEPARATOR,0,0); AppendMenu(systemmenu,0,5001,"Сообщение1"); break; case WM_CONTEXTMENU: popupmenu=GetSubMenu(GetMenu(hWnd),0); x=LOWORD(lParam); y=HIWORD(lParam); TrackPopupMenu(popupmenu,TPM_CENTERALIGN|TPM_LEFTBUTTON|TPM_VCENTERALIGN,x,y,0,hWnd,NULL); break; case WM_SYSCOMMAND: if (LOWORD(wParam)==5000) { clf=RGB(0,255,0); GetClientRect(hWnd, &rt); InvalidateRect(hWnd,&rt,TRUE); break; } if (LOWORD(wParam)==5001) { MessageBox(hWnd,"Сообщение 1",NULL,MB_OK); break; } return DefWindowProc(hWnd, msg, wParam, lParam); break;
case WM_PAINT: hdc=BeginPaint(hWnd,&ps); brush=CreateSolidBrush(clf); SelectObject(hdc, brush); GetClientRect(hWnd, &rt); Rectangle(hdc,rt.left,rt.top,rt.right,rt.bottom);
EndPaint(hWnd,&ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, msg, wParam, lParam); } return 0; }
Пример 2
|
||
|
Последнее изменение этой страницы: 2016-07-14; просмотров: 269; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.007 с.) |