Вход на сайт
Философия каретки 14.01.2025
120
NEW Вчера, 14:03
Всем привет!
Сегодня поговорим про каретку или курсор. На английском курсор в Windows называется caret, с английского переводится как каретка см. https://translate.google.de/?sl=en&tl=ru&text=caret&op=tra.... Будем играться в Dev-C++.
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
Вчера, 14:10
в ответ uscheswoi_82 Вчера, 14:03
Чтобы появилась каретка в окне нужно 3 функции вызвать - CreateCaret - создаёт каретку, там устанавливается ширина и высота каретки. SetCaretPos - устанавливает позицию каретки на x, y. ShowCaret - отображает каретку в определённом окне.
Например вот небольшой код:
CreateCaret(hwnd, NULL, 2, 15); /* Создаём узкую но длинную каретку */ SetCaretPos(10, 10); /* Устанавливаем каретку в окне на позиция x = 10, y = 10*/ ShowCaret(hwnd); /* Отображаем каретку в окне */
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
NEW Вчера, 14:21
в ответ uscheswoi_82 Вчера, 14:10
Я буду программировать в Dev-C++. Показывать не буду как я создавал проект итд. А вот код main.c:
#include <windows.h> LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM); char szClassName[] = "WinCaretApp"; int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil) { HWND hwnd; MSG messages; WNDCLASSEX wincl; wincl.hInstance = hThisInstance; wincl.lpszClassName = szClassName; wincl.lpfnWndProc = WindowProcedure; wincl.style = CS_DBLCLKS; wincl.cbSize = sizeof(WNDCLASSEX); wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION); wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION); wincl.hCursor = LoadCursor(NULL, IDC_ARROW); wincl.lpszMenuName = NULL; wincl.cbClsExtra = 0; wincl.cbWndExtra = 0; wincl.hbrBackground = (HBRUSH)COLOR_BACKGROUND; if(!RegisterClassEx(&wincl)) return 0; hwnd = CreateWindowEx(0, szClassName, "", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 150, 60, HWND_DESKTOP, NULL, hThisInstance, NULL ); ShowWindow(hwnd, nFunsterStil); while(GetMessage(&messages, NULL, 0, 0)) { TranslateMessage(&messages); DispatchMessage(&messages); } return messages.wParam; } LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_CREATE: CreateCaret(hwnd, NULL, 2, 15); /* Создаём узкую но длинную каретку */ SetCaretPos(10, 10); /* Устанавливаем каретку в окне на позиция x = 10, y = 10*/ ShowCaret(hwnd); /* Отображаем каретку в окне */ break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd, message, wParam, lParam); } return 0; }
Вуаля! А вот и результат, курсор видно и мигает:
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение