【发布时间】:2015-06-19 01:58:13
【问题描述】:
我想创建一个完全透明的矩形,我试试这段代码。知道该怎么做吗?
BOOL CHtmlDlgTestDlg::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_MOUSEMOVE && (pMsg->wParam & MK_LBUTTON))
{
CPoint p = pMsg->pt;
ScreenToClient(&p);
CRect r(10, 15, 380, 50);
CDC* pCDC = GetDC();
pCDC->Rectangle(r);
CBrush brush;
brush.CreateSolidBrush(RGB(255, 255, 0));
pCDC->FillRect(&r, &brush);
if (r.PtInRect(p))
{
ReleaseCapture();
SendMessage(WM_NCLBUTTONDOWN, HTCAPTION, 0);
SendMessage(WM_NCLBUTTONUP, HTCAPTION, 0);
return 1;
}
}
return CDHtmlDialog::PreTranslateMessage(pMsg);
}
这是 mfc c++ 代码示例。
【问题讨论】:
-
“完全透明”是什么意思?如果它是完全透明的,您将无法看到它。
-
这就是我想要的。我不想看到。
-
这非常困难,因为
CDHtmlDialog对话框是位于不同线程中的 webBrowser 控件。窗口的非客户区是 MFC 进程的一部分,它让您获得有限的控制权,只能移动窗口和其他东西。过度使用PreTranslateMessage可能会给您带来麻烦,因为消息可能会变成递归调用。我能问一下你想做什么吗?使用纯 HTML5 和 javascript 可以做很多事情。另一个选项是CHtmlEditCtrl,您可以将这些控件放在CDialog中。
标签: c++ visual-studio-2013 mfc