我在.net中有一个控制台应用程序,我正在对字体进行一些处理。我正在使用Win32API,其中一个需要设备上下文来加载字体 - 实际上是IntPtr hdc = GetDC(handle of screen element)
。显然,我的应用程序没有这些句柄,因为它是一个控制台应用程序。有办法解决这个问题吗?
答案 0 :(得分:3)
在win32中,GetDC(null)应该返回一个上下文(对于整个屏幕)
所以你应该可以做一些像
这样的事情IntPtr hdc = GetDC( null );
if( hdc == null )
{
OopsError();
}
答案 1 :(得分:1)
GetConsoleWindow()
(http://msdn.microsoft.com/en-us/library/ms683175.aspx):
检索与调用进程关联的控制台使用的窗口句柄。
或者,传递NULL可能有效。来自GetDC()
文档(http://msdn.microsoft.com/en-us/library/dd144871.aspx):
要检索其DC的窗口的句柄。如果此值为NULL,则GetDC将检索整个屏幕的DC。
答案 2 :(得分:1)
IntPtr hdc = GetDC(System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle);
可以在.Net控制台应用中使用。
我认为null
无法在.Net中运行错误,参数:无法从'<null>'
转换为'System.IntPtr'