информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] Как изменить курсор при клике в System Tray 02.07.03 18:27  Число просмотров: 1342
Автор: Cyril <sc> Статус: Member
<"чистая" ссылка>
> Есть иконка в System Tray, само окно скрыто(SW_HIDE). По
> нажатию левой кнопки мыши на этой иконке, указатель мыши
> должен смениться со стандартного на некоторый другой. Когда
> кнопка отпускается курсор меняется на стандартный. При
> движении мыщи с нажатой левой кнопкой курсор должен
> оставаться в этом измененном (нестандартном) состоянии до
> отпускания кнопки. Для этого и сделал SetCapture.
> Это всё мне нужно примерно для такой фишки, как в Spy++ при
> выборе окна для мониторинга его сообщений. Вот только там
> "прицел" начинает движение из соотв. диалога, а у меня из
> трея.
>
> Пробовал примерно так:
>
> LRESULT OnShellNote(UINT uMsg, WPARAM wParam, LPARAM
> lParam, BOOL& bHandled)
> {
> switch((UINT)lParam)
> {
> case WM_LBUTTONUP:
> ReleaseCapture();
> SetCursor(NULL);
> break;
>
> case WM_LBUTTONDOWN:
> SetCursor(m_hCursor);
> SetCapture();
> break;
> }
>
> return 0;
> }
>
> LRESULT OnSetCursor(UINT uMsg, WPARAM wParam,
> LPARAM lParam, BOOL& bHandled)
> {
> return TRUE;
> }
>
> Не получается.
> SetSystemCursor использовать не хочется.
>
> Подскажите, как быть?
Попробуй так
Вызов вставить в обработчик нажатия левой кнопки мыши на иконе
procedure SetMyCursor;
var
hCurrWnd : THandle;
iMyTID : integer;
iCurrTID : integer;
begin
hCurrWnd := GetForegroundWindow;
iMyTID := GetCurrentThreadId;
iCurrTID := GetWindowThreadProcessId(hCurrWnd, nil);
AttachThreadInput(iMyTID, iCurrTID, TRUE);
Setcursor(LoadCursor(0, IDC_WAIT));
AttachThreadInput(iMyTID, iCurrTID, FALSE);
end;
<programming>
[Win32] Как изменить курсор при клике в System Tray 30.06.03 12:48  
Автор: Green Статус: Незарегистрированный пользователь
Отредактировано 30.06.03 13:01  Количество правок: 1
<"чистая" ссылка>
Есть иконка в System Tray, само окно скрыто(SW_HIDE). По нажатию левой кнопки мыши на этой иконке, указатель мыши должен смениться со стандартного на некоторый другой. Когда кнопка отпускается курсор меняется на стандартный. При движении мыщи с нажатой левой кнопкой курсор должен оставаться в этом измененном (нестандартном) состоянии до отпускания кнопки. Для этого и сделал SetCapture.
Это всё мне нужно примерно для такой фишки, как в Spy++ при выборе окна для мониторинга его сообщений. Вот только там "прицел" начинает движение из соотв. диалога, а у меня из трея.

Пробовал примерно так:

LRESULT OnShellNote(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
switch((UINT)lParam)
{
case WM_LBUTTONUP:
ReleaseCapture();
SetCursor(NULL);
break;

case WM_LBUTTONDOWN:
SetCursor(m_hCursor);
SetCapture();
break;
}

return 0;
}

LRESULT OnSetCursor(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
return TRUE;
}

Не получается.
SetSystemCursor использовать не хочется.

Подскажите, как быть?
[Win32] Как изменить курсор при клике в System Tray 02.07.03 18:27  
Автор: Cyril <sc> Статус: Member
<"чистая" ссылка>
> Есть иконка в System Tray, само окно скрыто(SW_HIDE). По
> нажатию левой кнопки мыши на этой иконке, указатель мыши
> должен смениться со стандартного на некоторый другой. Когда
> кнопка отпускается курсор меняется на стандартный. При
> движении мыщи с нажатой левой кнопкой курсор должен
> оставаться в этом измененном (нестандартном) состоянии до
> отпускания кнопки. Для этого и сделал SetCapture.
> Это всё мне нужно примерно для такой фишки, как в Spy++ при
> выборе окна для мониторинга его сообщений. Вот только там
> "прицел" начинает движение из соотв. диалога, а у меня из
> трея.
>
> Пробовал примерно так:
>
> LRESULT OnShellNote(UINT uMsg, WPARAM wParam, LPARAM
> lParam, BOOL& bHandled)
> {
> switch((UINT)lParam)
> {
> case WM_LBUTTONUP:
> ReleaseCapture();
> SetCursor(NULL);
> break;
>
> case WM_LBUTTONDOWN:
> SetCursor(m_hCursor);
> SetCapture();
> break;
> }
>
> return 0;
> }
>
> LRESULT OnSetCursor(UINT uMsg, WPARAM wParam,
> LPARAM lParam, BOOL& bHandled)
> {
> return TRUE;
> }
>
> Не получается.
> SetSystemCursor использовать не хочется.
>
> Подскажите, как быть?
Попробуй так
Вызов вставить в обработчик нажатия левой кнопки мыши на иконе
procedure SetMyCursor;
var
hCurrWnd : THandle;
iMyTID : integer;
iCurrTID : integer;
begin
hCurrWnd := GetForegroundWindow;
iMyTID := GetCurrentThreadId;
iCurrTID := GetWindowThreadProcessId(hCurrWnd, nil);
AttachThreadInput(iMyTID, iCurrTID, TRUE);
Setcursor(LoadCursor(0, IDC_WAIT));
AttachThreadInput(iMyTID, iCurrTID, FALSE);
end;
Спасибо, помогло! 02.07.03 22:50  
Автор: Green Статус: Незарегистрированный пользователь
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach