Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
|
[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 Статус: Незарегистрированный пользователь
|
|
|
|