Winapi CreateDC()、CreateCompatibleDC()或类似文件,用于不带桌面的内存DC
我想创建一个可用于调用GDI函数、绘制窗口(使用Winapi CreateDC()、CreateCompatibleDC()或类似文件,用于不带桌面的内存DC,winapi,gdi,Winapi,Gdi,我想创建一个可用于调用GDI函数、绘制窗口(使用WM_PRINTCLIENT)等的程序,该程序无法访问桌面(例如,从没有桌面权限或锁定屏幕的windows服务) 通常,我会使用CreateCompatibleDC(),但它需要源hDC进行复制,因此如果调用程序没有桌面,则此函数不可用。同样,由于同样的原因,CreateDC(“DISPLAY”,…)将在此处失败 我需要的是一个能够运行任何正常DC调用的软件设备上下文,但要绑定到一个特定的位图,我可以使用它来获取结果 有办法解决这个问题吗?也许是从
WM_PRINTCLIENT
)等的程序,该程序无法访问桌面(例如,从没有桌面权限或锁定屏幕的windows服务)
通常,我会使用CreateCompatibleDC()
,但它需要源hDC进行复制,因此如果调用程序没有桌面,则此函数不可用。同样,由于同样的原因,CreateDC(“DISPLAY”,…)
将在此处失败
我需要的是一个能够运行任何正常DC调用的软件设备上下文,但要绑定到一个特定的位图,我可以使用它来获取结果
有办法解决这个问题吗?也许是从打印机驱动程序那里借来的?(我不需要高性能)
< P>我需要在Windows Server 2019上工作,我可以使用C,C++,p> >代码> CueCeCuMultBeLeC(NulLPTR)< /C>将在这个实例中工作。<>代码> CaltEngCubBuleDC(NulLPTR)< /C>将在这个实例中工作。 CudieCuMultBeBeLeC(NulLPTR)< /C>不工作。@ JoaahanPoter不跨越会话边界, no@RemyLebeau我不认为我需要跨越会话边界。我想与一个与我的课程相同的课程互动;他们都在同一个会话中,没有真正的桌面(想想Docker)。@JonathanPotter结果是
CreateCompatibleDC(nullptr)
确实有效,至少在我的情况下是如此CreateCompatibleDC(nullptr)
不起作用?@JonathanPotter没有跨越会话边界,no@RemyLebeau我不认为我需要跨越会话边界。我想与一个与我的课程相同的课程互动;他们都在同一个会话中,没有真正的桌面(想想Docker)。@JonathanPotter结果是CreateCompatibleDC(nullptr)
确实有效,至少在我的情况下是如此。