Рейтинг:
12
M@gelearn
Ну, я действительно что-то изменил и в некоторых случаях, как это работает, но не на 100%
Я удаляю строку в WNDCLASSW
wc.hCursor = (HCURSOR)LoadImage(GetModuleHandle(NULL),
MAKEINTRESOURCE(IDC_CURSOR), IMAGE_CURSOR, 16, 16, 0);
И я заявляю в глобальном масштабе
HCURSOR redarrow = (HCURSOR)LoadImage(GetModuleHandle(NULL),
MAKEINTRESOURCE(IDC_CURSOR), IMAGE_CURSOR, 16, 16, 0);
case WM_SETCURSOR:
{
SetCursor(redarrow);
return 1;
}
return DefWindowProcW(hWnd, msg, wp, lp);
Это работает, но у меня есть, как и несколько других окон, которые всплывают, как о или окно справки, где курсор меняется на курсор окна по умолчанию из системы.
Richard MacCutchan
Курсоры принадлежат окнам, поэтому каждое окно будет отображать курсор, определенный для его класса. Если вы хотите иметь один курсор для всех окон, то вам нужно будет подклассировать все, что вы не создали для себя.
M@gelearn
Спасибо, Ричард.. Я вставляю WM_SETCURSOR в другие окна, которые у меня есть в проекте, и теперь он работает отлично..
Еще один случай, когда я не знаю, как изменить курсор..
У меня есть окно About и кнопка OK, которая определена в файле .rc следующим образом:
DEFPUSHBUTTON "&Ok", IDOK, 174, 66, 50, 14
Мне пришлось удалить эту кнопку, потому что при прохождении курсора она меняется на стандартную стрелку системы. И я понятия не имею, как изменить курсор, когда он проходит над IDOK
дело WM_COMMAND:
переключатель(wp)
{
случае значение Idok:
EndDialog(hWnd, IDOK);
перерыв;
}
перерыв;
Richard MacCutchan
Окно "о программе" - это диалоговое окно, поэтому оно будет использовать курсор по умолчанию для диалогового окна и его кнопок.
M@gelearn
Ну, как я и сказал .. Я просто удалил IDOK из диалогового окна, чтобы пользователь мог использовать только X, чтобы закрыть его, и это прекрасно работает с пользовательским курсором.
Эй, еще раз спасибо за помощь... ура!