Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include <stdio.h>
- #pragma comment(lib,"user32.lib");
- #pragma comment(lib,"gdi32.lib");
- LRESULT CALLBACK MyWndProc(HWND, UINT, WPARAM, LPARAM);
- HDC hdc;
- RECT rt;
- COPYDATASTRUCT data;
- int WINAPI WinMain(HINSTANCE hInstance,
- HINSTANCE hPrevInstance,
- LPSTR lpCmdLine,
- int nCmdShow){
- HWND hWnd;
- MSG msg;
- WNDCLASS wc;
- LPCSTR lpszAppName="CTemplate2";
- BOOL ret;
- wc.lpszClassName = lpszAppName; //Имя класса окна
- wc.hInstance=hInstance; //дескриптор экземпляра приложения
- wc.lpfnWndProc = (WNDPROC)MyWndProc;//указатель
- wc.hCursor = LoadCursor(NULL, IDC_ARROW); //вид курсора над
- wc.hIcon = 0;
- //LoadIcon(hInstance,(LPCTSTR)IDI_CTEMPLATE); //идентификатор
- //пиктограммы
- wc.lpszMenuName = 0; //идентификатор ресурса меню
- wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); //цвет
- //закраски окна
- wc.style = CS_HREDRAW | CS_VREDRAW; //стиль окна
- wc.cbClsExtra = 0; //рудимент, инициализируется нулём
- wc.cbWndExtra = 0; //рудимент, инициализируется нулём
- if(!RegisterClass(&wc)) //Регистрация класса окна
- return 0;
- hWnd = CreateWindow( lpszAppName, //Имя класса окна
- lpszAppName, //Имя окна
- WS_OVERLAPPEDWINDOW, //Стиль
- //окна (перекрывающееся окно)
- 100, //CW_USEDEFAULT,
- //x-коорд. верхнего-левого угла
- 100, //y-коорд. верхнего-левого угла
- 400, //CW_USEDEFAULT, ширина
- 200, //высота
- NULL, //дескриптор родительского окна
- NULL, //дескриптор меню
- hInstance, //дескриптор экземпляра приложения
- NULL); //указатель на структуру, содержащую
- ret=RegisterHotKey(hWnd,0xB001, MOD_CONTROL | MOD_ALT, 'W');
- ShowWindow(hWnd, SW_SHOW); //SW_SHOW...
- //способ представления окна
- UpdateWindow(hWnd); //прорисовывает клиентскую область окна,
- //генерирует сообщение WM_PAINT
- while (GetMessage(&msg, NULL, 0, 0)) {//Извлечение сообщения
- //из очереди
- //сообщений
- TranslateMessage(&msg); //трансляция сообщений
- //виртуальных ключей WM_KEYDOWN,
- //WM_KEYDOWN, WM_KEYUP и т.п.
- //в сообщение символа WM_CHAR
- DispatchMessage(&msg); //направляет сообщения оконной процедуре
- }
- return msg.wParam;
- }
- LRESULT CALLBACK MyWndProc(HWND hWnd, UINT message,
- WPARAM wParam, LPARAM lParam)
- {
- HDC hdc;
- HINSTANCE hInst;
- PAINTSTRUCT ps;
- static HWND hBtn; // дескриптор кнопки
- static HWND hEdt1;
- static HWND hStat;
- static HWND hStat2;
- static HWND hStat3;
- static HWND hStat4;
- TCHAR StrA[20];
- int Len;
- switch (message){
- case WM_CREATE: // сообщение создания окна
- hInst = ((LPCREATESTRUCT)lParam)->hInstance; // дескриптор приложения
- // Создаем и показываем первое поле редактирования
- hEdt1 = CreateWindow("edit", "0",
- WS_CHILD | WS_VISIBLE | WS_BORDER | ES_RIGHT, 50, 50, 60, 20,
- hWnd, 0, hInst, NULL);
- ShowWindow(hEdt1, SW_SHOWNORMAL);
- // Создаем и показываем кнопку
- hBtn = CreateWindow("button", "==",
- WS_CHILD | WS_VISIBLE | WS_BORDER,
- 50, 100, 120, 30, hWnd, 0, hInst, NULL);
- ShowWindow(hBtn, SW_SHOWNORMAL);
- // Создаем и показываем поле текста для результата
- hStat = CreateWindow("static", "", WS_CHILD | WS_VISIBLE,
- 170, 100, 120, 20, hWnd, 0, hInst, NULL);
- ShowWindow(hStat, SW_SHOWNORMAL);
- hStat2 = CreateWindow("static", "", WS_CHILD | WS_VISIBLE,
- 170, 80, 120, 20, hWnd, 0, hInst, NULL);
- ShowWindow(hStat, SW_SHOWNORMAL);
- hStat3 = CreateWindow("static", "", WS_CHILD | WS_VISIBLE,
- 170, 60, 120, 20, hWnd, 0, hInst, NULL);
- ShowWindow(hStat, SW_SHOWNORMAL);
- hStat4 = CreateWindow("static", "", WS_CHILD | WS_VISIBLE,
- 170, 40, 120, 20, hWnd, 0, hInst, NULL);
- ShowWindow(hStat, SW_SHOWNORMAL);
- break;
- case WM_COMMAND: // сообщение о команде
- if (lParam == (LPARAM)hBtn) // если нажали на кнопку
- {
- Len = GetWindowText(hEdt1, StrA, 20);
- data.cbData=strlen(StrA);
- data.lpData=StrA;
- HWND hWnd = FindWindow("CTemplate1","CTemplate1");
- SendMessage(hWnd, WM_COPYDATA,
- (WPARAM)GetFocus(),
- (LPARAM)&data);
- //SetWindowText(hStat, StrA); // выводим результат в статическое поле
- }
- break;
- case WM_DESTROY: //сообщение генерируется при уничтожении окна
- PostQuitMessage(0); //указывает системе штатно выполнить
- break;
- case WM_HOTKEY:
- ShowWindow(hWnd,SW_SHOWNORMAL);
- break;
- case WM_PAINT:
- hdc = BeginPaint(hWnd, &ps);
- GetClientRect(hWnd, &rt);
- DrawText(hdc, "From Paint", strlen("From Paint"), &rt, DT_CENTER);
- EndPaint(hWnd, &ps);
- break;
- case WM_COPYDATA:
- GetClientRect(hWnd, &rt);
- hdc =GetDC(hWnd);
- //DrawText(hdc, (char*)(
- //((COPYDATASTRUCT*)lParam)->lpData),
- //((COPYDATASTRUCT*)lParam)->cbData, &rt, DT_LEFT);
- Len = GetWindowText(hStat3, StrA, 20);
- SetWindowText(hStat4, StrA);
- Len = GetWindowText(hStat2, StrA, 20);
- SetWindowText(hStat3, StrA);
- Len = GetWindowText(hStat, StrA, 20);
- SetWindowText(hStat2, StrA);
- SetWindowText(hStat, (char*)(
- ((COPYDATASTRUCT*)lParam)->lpData));
- ReleaseDC(hWnd,hdc);
- break;
- default:
- return DefWindowProc(hWnd, message, wParam, lParam);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement