处理控制台应用程序

时间:2010-08-03 23:09:31

标签: .net winapi gdi+

我在.net中有一个控制台应用程序,我正在对字体进行一些处理。我正在使用Win32API,其中一个需要设备上下文来加载字体 - 实际上是IntPtr hdc = GetDC(handle of screen element)。显然,我的应用程序没有这些句柄,因为它是一个控制台应用程序。有办法解决这个问题吗?

3 个答案:

答案 0 :(得分:3)

在win32中,GetDC(null)应该返回一个上下文(对于整个屏幕)

MSDN

所以你应该可以做一些像

这样的事情
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'

相关问题