|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Displaying a Cursor
Windows automatically displays the class cursor (the cursor associated with the window to which the cursor is pointing). You can assign a class cursor while registering a window class. The following example illustrates this by assigning a cursor handle to the hCursor member of the WNDCLASS structure identified by the wc parameter.
WNDCLASS wc; // Fill the window class structure with parameters that // describe the main window. wc.style = NULL; // class style(s) wc.lpfnWndProc = (WNDPROC) MainWndProc; // window procedure wc.cbClsExtra = 0; // no per-class extra data wc.cbWndExtra = 0; // no per-window extra data wc.hInstance = hinst; // app that owns the class wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); // class icon wc.hCursor = LoadCursor(hinst, MAKEINTRESOURCE(230)); // class cursor
wc.hbrBackground = GetStockObject(WHITE_BRUSH); // class background wc.lpszMenuName = "GenericMenu"; // class menu wc.lpszClassName = "GenericWClass" // class name // Register the window class. return RegisterClass(&wc);
When the window class is registered, the cursor identified by 230 in the application's resource-definition file will be the default cursor for all windows based on the class. Your application can change the design of the cursor by using the SetCursor function and specifying a different cursor handle. However, when the cursor moves, Windows redraws the class cursor at the new location. To prevent the class cursor from being redrawn, you must process the WM_SETCURSOR message. Each time the cursor moves and mouse input is not captured, Windows sends this message to the window in which the cursor is moving.
You can specify different cursors for different conditions while processing WM_SETCURSOR. For example, the following example shows how to display the hCurs3 cursor whenever the cursor moves over the icon of a minimized application.
case WM_SETCURSOR: // If the window is minimized, draw the hCurs3 cursor. // If the window is not minimized, draw the default // cursor (class cursor). if (IsIconic(hwnd)) { SetCursor(hCurs3); break; }
When the window is not minimized, Windows displays the class cursor. You can replace a class cursor by using the SetClassLong function. This function changes the default window settings for all windows of a given class. The following example replaces the existing class cursor with the hCurs2 cursor.
// Change the cursor for window class represented by hwnd. SetClassLong(hwnd, // window handle GCL_HCURSOR, // change cursor (LONG) hCurs2); // new cursor
For more information, see Window Classes and Mouse Input.
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
Отображение Курсора
Окно автоматически отображает курсор класса ( курсор связывался окном на котором курсор указывает). Вы можете назначить курсор класса при регистре класса окна. Следующий пример иллюстрирует это назначая ручку курсора на член hCursor структуры WNDCLASS идентифицированной wc параметром.
wc WNDCLASS; // Наполнитель структура класса окна с параметрами, что // описывать основное окно. wc.style = НЕДЕЙСТВИТЕЛЬНЫЙ; // стиль класса(классов) wc.lpfnWndProc = (WNDPROC) MainWndProc; // окно процедуры wc.cbClsExtra = 0; // никакое за-дополнительные данные класса wc.cbWndExtra = 0; // никакое за-дополнительные данные окна wc.hInstance = hinst; // кв.;инф)прил., что обладает классом wc.hIcon = LoadIcon(НЕДЕЙСТВИТЕЛЬНЫЙ, IDI_APPLICATION); // иконка класса wc.hCursor = LoadCursor(hinst, MAKEINTRESOURCE(230)); // курсор класса
wc.hbrBackground = GetStockObject(WHITE_BRUSH); // фон класса wc.lpszMenuName = "GenericMenu"; // меню класса wc.lpszClassName = "GenericWClass" // имя класса // Зарегистрируйте класс окна. возвращайте RegisterClass(&wc);
Когда класс окна зарегистрирован, курсор идентифицированный к 230 в прикладном ресурсе-определении файла будет по умолчанию курсором для всего окна основанного в классе. Ваше приложение может изменить проект курсора используя функцию SetCursor и определяя другую ручку курсора. Тем не менее, когда курсор перемещает, Windows перерисовывает курсор класса в новой позиции. Чтобы предохранять курсор класса от redrawn, Вы должны обработать сообщение WM_SETCURSOR. Всякий раз, когда курсор перемещается и ввод мыши не захвачен, Windows посылает это сообщение в окно в котором курсор перемещается.
Вы можете определить другие курсоры для других условий при обработке WM_SETCURSOR. Например, следующий пример показывает как, чтобы отображать курсор hCurs3 всякий раз, когда курсор перемещается над иконкой минимизированного приложения.
случай WM_SETCURSOR: // Если окно минимизировано, сделайте курсором hCurs3. // Если окно не минимизировано, сделайте по умолчанию // курсором (курсор класса). если (IsIconic(hwnd)) { SetCursor(hCurs3); прерывание; }
Когда окно не минимизировано, Windows отображает курсор класса. Вы можете заменить курсор класса используя функцию SetClassLong. Эта функция изменяет по умолчанию установочные параметры окна для всего окна данного класса. Следующий пример заменяет существующий курсор класса курсором hCurs2.
// Изменение курсор для класса окна представлялся hwnd. SetClassLong(hwnd, // РУЧКА окна GCL_HCURSOR, // курсор изменения (ДОЛГО (ДЛИНОЙ)) hCurs2); // новый курсор
Более подробно, смотри Классы Окна и Ввода Мыши.
|
|
|
|
| |