ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
539
539
EMPFEHLEN
-
20.01.08 14:48 #1
- Registriert seit
- Jan 2008
- Beiträge
- 7
Hallo!
Ich versuche, mittels "getdevicecaps" die aktuelle Bildschirmauflösung zu ermitteln (s. Codeschnipsel) :
Code :1 2 3 4 5 6 7 8 9 10 11
Public Declare Function GetDeviceCaps Lib "gdi32" (ByVal hDC As Integer, ByVal nIndex As Integer) As Integer Public Sub GetCurrentSettings(ByVal hDC As Integer, ByRef x As Short, ByRef y As Short, ByRef Colors As Short, ByRef Frequenz As Short) x = GetDeviceCaps(hDC, HORZRES) y = GetDeviceCaps(hDC, VERTRES) Colors = GetDeviceCaps(hDC, BITSPIXEL) Frequenz = GetDeviceCaps(hDC, VREFRESH) End Sub
Das funktioniert unter VB 6.0 auch einwandfrei.
Nun habe ich versucht, das ganze in VB 2005 Express Edition zu übertragen, aber "getdevicecaps" scheint hier nicht zu funktionieren. Ich bekomme für alle Werte (x,y,Colors,Frequenz) immer nur den Wert "0".
Es gibt keinerlei Fehlermeldung oder Warnung vom Debugger.
Ich habe schon stundenlang "gegooglet" und auch dieses Forum durchsucht, aber niemand scheint dieses Problem zu haben.
Was habe ich übersehen? Warum funktioniert "getdevicecaps" nicht unter VB2005?
Mein Betriebssystem: Vista.
Vielen Dank,
Henning
-
20.01.08 14:52 #2
- Registriert seit
- Apr 2005
- Beiträge
- 120
Hallo henning,
das Problem ist, dass sich die Datentypen von v.6 zu .NET geändert haben. So auch die Syntax der DLL-Funktionen. Der hDC-Parameter muss nun vom Typ IntPtr sein, dann sollte es funktionieren.
Gruß
PhoenixLoe
-
20.01.08 15:02 #3
- Registriert seit
- Jan 2008
- Beiträge
- 7
Hallo!
Danke für die Antwort!
Aber auch so funktioniert es nicht. Die ermittelten Werte sind immer noch alle 0.
Code :1 2
Public Declare Function GetDeviceCaps Lib "gdi32" (ByVal hDC As IntPtr, ByVal nIndex As Int32) As Int32
Gruss,
Henning
-
20.01.08 15:11 #4
- Registriert seit
- Apr 2005
- Beiträge
- 120
Die einzige Erklärung dafür, die ich hätte, wäre, dass das übergebene Device-Handle ungültig ist. Wie erhälst du denn den hDC-Parameter eigentlich?
-
20.01.08 15:20 #5
- Registriert seit
- Jan 2008
- Beiträge
- 7
Ich habe ein einfaches Testprogramm erzeugt.
Die Variablen habe ich in der Klasse Form1 deklariert:
Code :1 2 3 4 5 6 7 8 9 10
Friend Class Form1 Inherits System.Windows.Forms.Form Dim Colors As Short Dim Frequenz As Short Dim x As Short Dim y As Short Dim hDC As Integer .......
Und in dieser Klasse rufe ich dann beim Programmstart die Funktion GetCurrentSettings auf.
Code :1 2 3 4 5 6 7
Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load GetCurrentSettings(Me.hDC, x, y, Colors, Frequenz) ...........
"getdevicecaps" und "GetCurrentSettings" stehen in einem Modul.
Hoffe, das beantwortet Deine Frage!? (Bin noch nicht soooo lange dabei...)
-
20.01.08 15:39 #6
- Registriert seit
- Apr 2005
- Beiträge
- 120
Naja, ich bin mir zwar gerade nicht wirklich sicher, aber ich glaube, dass ein Fenster für diese Funktion kein geeigneter Gerätekontext ist. Schließlich bräuchtest du das Handle des Bildschirms, nicht des Fensters.
Versuche mal herauszufinden, wie man das Handle des Bildschirms ermitteln kann. Ich bleibe auch dran.
Gruß
PhoenixLoe
-
20.01.08 15:44 #7
- Registriert seit
- Jan 2008
- Beiträge
- 7
Oki, vielen Dank erstmal!
Ich werde es weiter versuchen und falls ich draufkomme, werd ich mich melden.
Gruss,
Henning
-
20.01.08 15:53 #8
- Registriert seit
- Jan 2008
- Beiträge
- 7
So, ich hab nun noch ein wenig gestöbert und im Hilfesystem von VB2005 unter folgender Url was gefunden:
Hier werden Unterschiede von VB6 und VB 2005 aufgelistet. Und da steht zu hDC folgendes:ms-help://MS.VSExpressCC.v80/MS.NETFramework.v20.de/dv_VBVers/html/24cd2d55-ebf1-42d6-b755-00e9001f1cb8.htm
Es gibt diese Implementierung für VB2005 wohl nicht mehr.
HDC-Eigenschaft
Neue Implementierung. Gerätekontexte werden mit GDI+ nicht mehr benötigt.
Nun werde ich mich wohl mit GDI+ auseinandersetzen müssen?!
Na ja,
Henning
Ähnliche Themen
-
VB.net Selbsterstellte "Wait" Funktion funktioniert nicht unter Vist x64
Von Ichbinalex im Forum .NET CaféAntworten: 6Letzter Beitrag: 17.02.09, 10:49 -
"getdevicecaps" funktioniert nicht unter VB 2005 Express
Von henning246 im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 20.01.08, 14:49 -
Server-Anmeldung, method="post" unter firefox u.a. funktioniert nicht immer
Von consoleone im Forum Hosting & WebserverAntworten: 1Letzter Beitrag: 28.08.07, 09:38 -
Frage zu "Visual C++ 2005 Express Edition": dynamische Arrays im Debugger
Von busenbach im Forum C/C++Antworten: 4Letzter Beitrag: 24.08.07, 15:58 -
getURL("http://abc.de" "_blank"); - funktioniert nicht mehr
Von ali-gator im Forum Flash PlattformAntworten: 5Letzter Beitrag: 04.05.06, 10:31





Zitieren
Login





