Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Windows.h>
- #include <stdio.h>
- enum { LITERA1, LITERA2, TEKST };
- LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
- {
- static HWND IloscLiter1, IloscLiter2, Litera1, Litera2, tekst;
- switch (msg)
- {
- case WM_CREATE:
- {
- HINSTANCE &hInstance = ((LPCREATESTRUCT)lParam)->hInstance;
- Litera1 = CreateWindowEx(0, TEXT("EDIT"), TEXT(""), WS_CHILD | WS_VISIBLE | WS_BORDER,
- 110, 150, 150, 20, hwnd, (HMENU)0, hInstance, NULL);
- Litera2 = CreateWindowEx(0, TEXT("EDIT"), TEXT(""), WS_CHILD | WS_VISIBLE | WS_BORDER,
- 110, 150, 150, 20, hwnd, (HMENU)1, hInstance, NULL);
- tekst = CreateWindowEx(0, TEXT("EDIT"), TEXT("Ala ma kota"), WS_CHILD | WS_VISIBLE | WS_BORDER,
- 110, 150, 150, 20, hwnd, (HMENU)2, hInstance, NULL);
- IloscLiter1 = CreateWindowEx(0, TEXT("STATIC"), TEXT("0"), WS_CHILD | WS_VISIBLE | WS_BORDER,
- 10, 150, 150, 20, hwnd, (HMENU)3, hInstance, NULL);
- IloscLiter2 = CreateWindowEx(0, TEXT("STATIC"), TEXT("0"), WS_CHILD | WS_VISIBLE | WS_BORDER,
- 110, 150, 150, 20, hwnd, (HMENU)4, hInstance, NULL);
- SendMessage(Litera1, EM_LIMITTEXT, 1, NULL); // ustalamy limit wprowadzanego tekstu na jeden znak
- SendMessage(Litera2, EM_LIMITTEXT, 1, NULL);
- }break;
- case WM_COMMAND:
- {
- static TCHAR znak1[2], znak2[2], _tekst[128];
- int liczbaZnakow1 = 0, liczbaZnakow2 = 0;
- TCHAR ileZnakow1[4], ileZnakow2[4];
- GetWindowText(tekst, _tekst, 127);
- switch (LOWORD(wParam))//Uzyskanie ID klikniętej kontrolki.
- {
- case LITERA1://Zaznaczenie pierwszego, odznaczenie drugiego radiobuttona:
- {
- GetWindowText(Litera1, znak1, 2);
- znak1[1] = 0;
- }break;
- case LITERA2://Zaznaczenie pierwszego, odznaczenie drugiego radiobuttona:
- {
- GetWindowText(Litera2, znak2, 2);
- znak2[1] = 0;
- }break;
- case TEKST://Zaznaczenie pierwszego, odznaczenie drugiego radiobuttona:
- {
- GetWindowText(tekst, _tekst, 127);
- _tekst[127] = 0;
- }break;
- };
- for (int i = 0; i < wcslen(_tekst); i++)
- {
- if (_tekst[i] == znak1[0])
- {
- liczbaZnakow1++;
- }
- if (_tekst[i] == znak2[0])
- {
- liczbaZnakow2++;
- }
- }
- wsprintf(ileZnakow1, TEXT("%d"), liczbaZnakow1);
- wsprintf(ileZnakow2, TEXT("%d"), liczbaZnakow2);
- SetWindowText(IloscLiter1, ileZnakow1);
- SetWindowText(IloscLiter2, ileZnakow2);
- }break;
- case WM_SIZE:
- {
- RECT windowRect;
- GetClientRect(hwnd, &windowRect);
- int static_x = (windowRect.right -100) / 2;
- int static_y = (windowRect.bottom -100) / 2;
- int edit_x = static_x + 100;
- int edit_y = static_y;
- //ustawiamy kontrolki w okienku
- MoveWindow(IloscLiter1, static_x, static_y, 70, 20, TRUE);
- MoveWindow(IloscLiter2, static_x, static_y+30, 70, 20, TRUE);
- MoveWindow(Litera1, edit_x, static_y, 70, 20, TRUE);
- MoveWindow(Litera2, edit_x, static_y + 30, 70, 20, TRUE);
- MoveWindow(tekst, edit_x - 100, static_y+60, 170, 20, TRUE);
- }break;
- case WM_CLOSE:
- if (MessageBox(NULL, TEXT("Czy na pewno chcesz zamknąć okno?"), TEXT("Pytanie"), MB_ICONQUESTION | MB_OKCANCEL) == IDOK)
- DestroyWindow(hwnd);
- break;
- case WM_DESTROY:
- PostQuitMessage(0);
- break;
- case WM_GETMINMAXINFO://Ustawianie minimalnego rozmiaru okna:
- ((MINMAXINFO *)lParam)->ptMinTrackSize.x = 300;
- ((MINMAXINFO *)lParam)->ptMinTrackSize.y = 200;
- break;
- default:
- return DefWindowProc(hwnd, msg, wParam, lParam);
- }
- return 0;
- }
- int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR ilCmdLine, int nCmdShow)
- {
- WNDCLASSEX window;
- HWND hwnd = NULL;
- MSG msg;
- TCHAR ClassName[] = TEXT("KlasaOkna");
- TCHAR WindowTitle[] = TEXT("Przeliczanie");
- window.cbClsExtra = NULL;
- window.cbSize = sizeof(WNDCLASSEX);
- window.cbWndExtra = NULL;
- window.hbrBackground = (HBRUSH)(COLOR_WINDOW);
- window.hCursor = LoadCursor(NULL, IDC_ARROW);
- window.hIcon = LoadIcon(NULL, IDI_APPLICATION);
- window.hIconSm = NULL;
- window.hInstance = hInstance;
- window.lpfnWndProc = WndProc;
- window.lpszClassName = ClassName;
- window.lpszMenuName = 0;
- window.style = CS_VREDRAW | CS_HREDRAW;
- RegisterClassEx(&window);
- hwnd = CreateWindowEx(WS_EX_WINDOWEDGE, ClassName, WindowTitle,
- WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT,
- 400, 400, NULL, NULL, hInstance, NULL);
- ShowWindow(hwnd, nCmdShow);
- UpdateWindow(hwnd);
- while (GetMessage(&msg, NULL, 0, 0))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- UnregisterClass(ClassName, hInstance);
- return msg.wParam;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement