2009-04-13 12 views
7

मुझे सी ++ (http://www.codeproject.com/KB/tips/resswitch.aspx) का उपयोग करके अच्छे उदाहरण मिल गए हैं, लेकिन सी # में नहीं।सी # का उपयोग कर उपलब्ध वीडियो मोड कैसे सूचीबद्ध करें?

क्या कोई मदद कर सकता है, कृपया?

संपादित करें: सटीक समारोह है कि वीडियो मोड सूची है:

BOOL CVideoModes::GetAvailableVideoModes(CAvailableVideoModes& modes) 
{ 
    modes.SetSize(0, 5); 
    int i=0; 
    DEVMODE dm; 

    while (EnumDisplaySettings(NULL, i, &dm)) 
    { 
    CVideoMode thismode(dm.dmBitsPerPel, dm.dmPelsWidth, 
         dm.dmPelsHeight, dm.dmDisplayFrequency); 
    modes.SetAtGrow(i, thismode); 
    ++i; 
    } 

    modes.FreeExtra(); 

    return (i>0); 
} 

लेकिन sincerelly मैं नहीं समझ सकता है कि सी ++ कोड। जहां मैं "यह मोड" फ़ंक्शन पा सकता हूं?

+0

मैं अतिथि है कि आपके पास वीसी ++ के साथ ज्यादा अनुभव नहीं हैं? यह मोड CVideoMode का एक उदाहरण है। अपनी समस्या को हल करने के लिए, आप EnumDisplaySettings/EnumDisplaySettingsEx को आजमा सकते हैं। वे Win32 एपीआई हैं, इसलिए आप सीधे कॉल नहीं कर सकते हैं। अधिक जानकारी के लिए मेरे उत्तर का संदर्भ लें :) – Vimvq1987

+0

मुझे EnumDisplaySettings/EnumDisplaySettingsEx पता है, लेकिन मुझे नहीं पता कि कैसे कार्यान्वित किया जाए ... एकमात्र कोड जो मैंने पाया वह सी ++ में था, लेकिन मैं decypher नहीं कर सकता ... –

+0

मैंने अभी किया है सी # में एक छोटा सा कार्यक्रम लिखा। उममीद है कि इससे मदद मिलेगी! – Vimvq1987

उत्तर

13

तुम्हारा मतलब वीडियो मोड उपलब्ध संकल्प कर रहे हैं, को लागू करने की कोशिश EnumDisplaySettingsEx

जानकारी यहां पाया जा सकता है:

http://msdn.microsoft.com/en-us/library/dd162612(VS.85).aspx

छोटे प्रोग्राम है जो उपलब्ध प्रस्तावों को सूचीबद्ध करता है:

using System; 
using System.Linq; 
using System.Runtime.InteropServices; 
using System.Windows.Forms; 

namespace ListResolutions 
{ 

    class Program 
    { 
     [DllImport("user32.dll")] 
     public static extern bool EnumDisplaySettings(
       string deviceName, int modeNum, ref DEVMODE devMode); 
     const int ENUM_CURRENT_SETTINGS = -1; 

     const int ENUM_REGISTRY_SETTINGS = -2; 

     [StructLayout(LayoutKind.Sequential)] 
     public struct DEVMODE 
     { 

      private const int CCHDEVICENAME = 0x20; 
      private const int CCHFORMNAME = 0x20; 
      [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0x20)] 
      public string dmDeviceName; 
      public short dmSpecVersion; 
      public short dmDriverVersion; 
      public short dmSize; 
      public short dmDriverExtra; 
      public int dmFields; 
      public int dmPositionX; 
      public int dmPositionY; 
      public ScreenOrientation dmDisplayOrientation; 
      public int dmDisplayFixedOutput; 
      public short dmColor; 
      public short dmDuplex; 
      public short dmYResolution; 
      public short dmTTOption; 
      public short dmCollate; 
      [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0x20)] 
      public string dmFormName; 
      public short dmLogPixels; 
      public int dmBitsPerPel; 
      public int dmPelsWidth; 
      public int dmPelsHeight; 
      public int dmDisplayFlags; 
      public int dmDisplayFrequency; 
      public int dmICMMethod; 
      public int dmICMIntent; 
      public int dmMediaType; 
      public int dmDitherType; 
      public int dmReserved1; 
      public int dmReserved2; 
      public int dmPanningWidth; 
      public int dmPanningHeight; 

     } 

     static void Main(string[] args) 
     {    
       DEVMODE vDevMode = new DEVMODE(); 
       int i = 0; 
       while (EnumDisplaySettings(null, i, ref vDevMode)) 
       { 
        Console.WriteLine("Width:{0} Height:{1} Color:{2} Frequency:{3}", 
              vDevMode.dmPelsWidth, 
              vDevMode.dmPelsHeight, 
              1 << vDevMode.dmBitsPerPel,   vDevMode.dmDisplayFrequency 
             ); 
       i++; 
       } 
     } 

    } 

} 
+0

बिल्कुल सही! धन्यवाद! –

संबंधित मुद्दे

 संबंधित मुद्दे