如何在C#的WndProc中返回值
本文关键字:WndProc 返回值 | 更新日期: 2023-09-27 18:27:56
在我的应用程序中,我使用SetCursor(NULL)
隐藏了光标,为了确保Windows不会重置光标状态,我在WndProc
方法中处理了WM_SETCURSOR
。
然而,在C++的msdn文档中,为了处理WM_SETCURSOR
,我必须使用return TRUE
。然而,在C#的WndProc中,它是一个void方法,所以我不能返回任何值。
那么,我该如何在C#中完成return语句呢?
C++变体:
static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam,
{
case WM_SETCURSOR:
if (LOWORD(lParam) == HTCLIENT)
{
SetCursor(hCursor);
return TRUE;
}
break;
}
您可以在不调用base.WndProc
:的情况下返回
protected override void WndProc(ref Message m){
if(m.Msg == WM_SETCURSOR) {
int lowWord = (m.LParam.ToInt32() << 16) >> 16;
if(lowWord == HTCLIENT){
SetCursor(hCursor);
return;
}
}
base.WndProc(ref m);
}
我想这也适用(我在一些消息中经历过,但不确定WM_SETCURSOR
):
protected override void WndProc(ref Message m){
base.WndProc(ref m);
if(m.Msg == WM_SETCURSOR) {
int lowWord = (m.LParam.ToInt32() << 16) >> 16;
if(lowWord == HTCLIENT){
SetCursor(hCursor);
m.Result = new IntPtr(1);
}
}
}