代码之家  ›  专栏  ›  技术社区  ›  Stan

控制台应用程序中的句柄

  •  3
  • Stan  · 技术社区  · 15 年前

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

    3 回复  |  直到 15 年前
        1
  •  1
  •   Todd Main    15 年前

    IntPtr hdc = GetDC(System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle); 在.NET控制台应用程序中工作正常。

    我不相信 null 将在.NET中工作。 错误,参数:无法从转换 '<null>' 'System.IntPtr'

        2
  •  3
  •   µBio    15 年前

    在win32 getdc(空)中,应返回上下文(对于整个屏幕)

    MSDN

    所以你应该能做一些像

    IntPtr hdc = GetDC( null );
    if( hdc == null ) 
    {
        OopsError();
    }
    
        3
  •  1
  •   Michael Burr    15 年前

    GetConsoleWindow() ( http://msdn.microsoft.com/en-us/library/ms683175.aspx ):

    检索与调用进程关联的控制台使用的窗口句柄。

    或者,传递空值可能有效。从 GetDC() 文档库 http://msdn.microsoft.com/en-us/library/dd144871.aspx ):

    要检索其DC的窗口的句柄。如果该值为空,getdc将检索整个屏幕的dc。