Страница 9 из 28 Отображение курсора Windows автоматически отображает курсор класса (курсор, связанный с окном, в котором он указывает). Вы можете назначать курсор класса при регистрации класса окна. Следующий пример иллюстрирует это, назначая дескриптор курсора в элементе hCursor структуры WNDCLASS, идентифицированной параметром wc. WNDCLASS wc; //заполнение структуры класса окна параметрами, которые описывают главное окно.
style = NULL; // стиль(и) класса wc.lpfnWndProc = (WNDPROC) MainWndProc; // оконная процедура wc.cbClsExtra = 0; // дополнительных данных в классе нет wc.cbWndExtra = 0; // дополнительных данных для окна нет wc.hInstance = hinst; // приложение, которое владеет классом wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); // иконка класса wc.hCursor = LoadCursor(hinst, MAKEINTRESOURCE(230)); // курсор класса wc.hbrBackground = GetStockObject(WHITE_BRUSH); // фон класса wc.lpszMenuName = "GenericMenu"; // меню класса wc.lpszClassName = "GenericWClass" // имя класса // регистрация класса окна. return RegisterClass(&wc);
Когда класс окна зарегистрирован, курсор, идентифицированный как 230 в файле определения ресурса прикладной программы, будет задан по умолчанию как курсор для всех окон, основанных на классе. Ваша прикладная программа может изменить внешний вид курсора, используя функцию SetCursor и определяя дескриптор другого курсора. Однако, когда курсор перемещается, Windows в новом месте снова рисует курсор класса. Чтобы предотвратить повторный вывод курсора класса, вы должны обрабатывать сообщение WM_SETCURSOR. Каждый раз, когда курсор перемещается, а ввод информации от мыши не захвачен, Windows посылает это сообщению окну, в котором перемещается курсор. Вы можете устанавливать различные курсоры для различных условий при обработке WM_SETCURSOR. Например, следующий пример показывает, как всякий раз отображать курсор hCurs3, когда он перемещается поверх пиктограммы свернутой прикладной программы. case WM_SETCURSOR:
// Если окно свернуто рисуется курсор hCurs3. // Если окно не свернуто, рисуется курсор // по умолчанию (курсор класса). if (IsIconic(hwnd)) { SetCursor(hCurs3); break; }
Когда окно не свернуто, Windows отображает курсор класса. Вы можете заменить курсор класса, используя функцию SetClassLong. Эта функция изменяет заданные по умолчанию параметры настройки окна для всех окон данного класса. В следующем примере заменяется существующий курсор класса на курсор hCurs2. // изменение курсора класса окна, представляемого hwnd SetClassLong(hwnd, // дескриптор окна GCL_HCURSOR, // изменяемый курсор (LONG) hCurs2); // новый курсор За более подробной информацией, обратитесь к статьям Классы окна и Информация вводимая от Мыши. |