【发布时间】:2014-04-23 11:47:42
【问题描述】:
我正在使用 C++ 在 WinApi 中创建贝塞尔曲线,我的问题是我的右按钮不起作用。这是我的代码:
if (wParam & MK_LBUTTON)
{
HGDIOBJ original = NULL;
//Saving the original object
original = SelectObject(hdc,GetStockObject(DC_PEN));
hdc = GetDC (hwnd) ;
SelectObject(hdc, GetStockObject(DC_PEN));
SetDCPenColor(hdc, RGB(246, 245, 243));
myBezier.DrawBezier (hdc, apt) ;
if (wParam & MK_LBUTTON)
{
apt[1].x = LOWORD (lParam) ;
apt[1].y = HIWORD (lParam) ;
}
else if (wParam & MK_RBUTTON)
{
apt[2].x = LOWORD (lParam) ;
apt[2].y = HIWORD (lParam) ;
}
SelectObject (hdc, GetStockObject(BLACK_PEN)) ;
myBezier.DrawBezier (hdc, apt) ;
ReleaseDC (hwnd, hdc) ;
DeleteObject(original);
}
Left Button 工作正常,但我不知道为什么 RightButton 和其他键甚至 MidButton 都不能正常工作。有什么想法吗?
用左键我可以调整左线,用右键调整右线。但在这种情况下,永远不会得到正确的按钮。
【问题讨论】:
-
你应该确保你没有粘贴制表符来缩进,否则你的代码看起来很疯狂。
-
考虑到您的整个代码块都需要按下左键,您期望会发生什么?
if (wParam & MK_LBUTTON)在顶部... -
对不起,我想重构,但它告诉我有人编辑了它:D
-
你应该如何检测鼠标左键 if 语句中的鼠标右键??
-
抱歉@nico,我最终抹掉了代码更改吗?我想我格式化了原始帖子。
标签: c++ winapi bezier win32gui