所以我想要得到正確的設備上下文,所以我可以在N顯示器配置(2+)的個別顯示器上設置伽馬斜坡。做pInvoke並不能得到正確的hDC
我已經試過
[DllImport("gdi32.dll")]
static extern IntPtr CreateDC(string lpszDriver, string lpszDevice, string lpszOutput, IntPtr lpInitData);
用這種方法我用字符串「顯示」爲lpszDriver,我列舉的顯示器與另一PInvoke的方法和得到其最終是什麼顯示設備名稱例如「\ Registry \ Machine \ System \ CurrentControlSet \ Control \ Class {4d36e96e-e325-11ce-bfc1-08002be10318} \ 0042」並傳入爲lpszDevice。 lpszOutput爲null,lpInitData爲IntPtr.Zero。回來的hDC工作,但似乎是全球性的。
和
[DllImport("user32.dll")]
public static extern IntPtr GetDC(IntPtr hWnd);
用這種方法我已經用實際的窗口句柄的形式嘗試。
我使用
[DllImport("gdi32.dll")]
private static extern int SetDeviceGammaRamp(IntPtr hDC, ref RAMP lpRamp);
它設置伽馬坡道,但它總是將兩臺顯示器。 任何想法?
謝謝你的迴應,我試圖讓這個工作。 有一點奇怪的是我得到空白szDevice名稱回來。 我實際上使用互操作在.net中工作。 – 2010-08-24 06:46:27
也不需要調用CreateDC? GetDC只接受一個hWnd作爲參數,其中szDevice是一個名字? – 2010-08-24 06:51:55
找出我的問題與空名稱,愚蠢的錯誤在我的一部分。 非常感謝。 – 2010-08-24 07:12:12