Я использую VSTO для разработки надстройки Office PowerPoint, и я встроил окно в окно слайд-шоу PowerPoint.Когда я использую инструмент «Перо» в окне слайд-шоу PowerPoint, курсор становится стрелкой, когда мышь перемещается во встроенное окно, это то, чего я хочу, но когда я использую инструмент «Ластик», курсор остается ластиком, когда мышь перемещается ввстроенное окно.
Можно ли как-нибудь помешать PowerPoint превратить курсор в ластик?
Я пробовал WNDPROC, HOOK, SetClassLong, установить курсор на стрелку, но в итоге он был установленв ластик с помощью PowerPoint.
WNDPROC oldWndProc = NULL;
LRESULT CALLBACK newWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
if (message == WM_SETCURSOR || message == WM_MOUSEMOVE ||message==WM_MOUSEHOVER
|| message == WM_MOUSEACTIVATE || message == WM_TIMER) {
HCURSOR hCursor11 = LoadCursorW(NULL, OCR_SIZENS);
::SetClassLong(hwnd, GCL_HCURSOR, (LONG)hCursor11);
::SetCursor(hCursor11);
::SetSystemCursor(hCursor11, 32645); //OCR_SIZENS(32645)
return TRUE;
}
else {
return ::CallWindowProc(oldWndProc, hwnd, message, wParam, lParam);
}
}
oldWndProc = (TWndProc)::SetWindowLongA((HWND)this->winId(), GWL_WNDPROC, (LONG)newWndProc);
LRESULT CALLBACK wndHookProc1(int code, WPARAM wParam, LPARAM lParam) {
if (code >= 0) {
CWPSTRUCT * p = (CWPSTRUCT*)lParam;
if (p->message == WM_SETCURSOR || p->message == WM_MOUSEHOVER || p->message==WM_MOUSEMOVE) {
HCURSOR hCursor22 = LoadCursorW(NULL, IDC_SIZENS);
::SetClassLong(p->hwnd, GCL_HCURSOR, (LONG)hCursor22);
::SetCursor(hCursor22);
::SetSystemCursor(hCursor22, 32645);
return TRUE;
}
else {
return ::CallNextHookEx(gWndHook, code, wParam, lParam);
}
}
else {
return ::CallNextHookEx(gWndHook, code, wParam, lParam);
}
}
gHInstance = GetModuleHandleFromAddress(wndHookProc1);
gWndHook = ::SetWindowsHookExA(WH_CALLWNDPROC, wndHookProc1, gHInstance, NULL);