草庐IT

bitmapDC

全部标签

windows - 窗口的屏幕截图

我一直在编写一些代码来抓取窗口的屏幕(在Windows中)。代码工作正常,但是在屏幕抓取之前,我必须将窗口带到我想要捕获的前面并强制重绘。我用InvalidateRect强制重绘,然后我必须从消息循环中提取一些消息以便WM_PAINT得到处理。这显然有点蹩脚,因为我不知道要发送多少消息。我尝试将RedrawWindow与RDW_ALLCHILDREN一起使用,但是我从中抓取屏幕的应用程序是一个MDI应用程序,似乎并没有重绘它的所有子项。所以我的问题是,有没有更好的方法在屏幕抓取之前重绘窗口?干杯丰富 最佳答案 由于您没有提到您使用的

windows - 如何使用 Windows API 将菜单背景渐变复制或复制到位图上?

我正在尝试(未成功)将Windows菜单栏的背景渐变复制/复制到位图上。在下面的IconToBitmap函数中,FillRect(一厢情愿地)使用GetSysColorBrush(COLOR_MENU)尝试让它按照Windows中的方式绘制菜单背景(毫不奇怪,画笔不是渐变,但值得试一试。)它下面的BitBlt是一种“作弊”的尝试。捕获一部分已经绘制的菜单栏并使用它。这也不起作用,我怀疑原因可能是因为在主窗口的WM_CREATE期间调用了函数IconToBitmap(我不确定菜单栏是否存在于窗口创建的早期。)我之前确实需要背景窗口首先可见,这就是在处理WM_CREATE时调用该函数的原因