| Autor |
Thema  |
|
pda-dev
Forum Admin
   
548 Beiträge |
Erstellt am: 30.07.2004 : 21:55:10 Uhr
|
Der heutige Tipp soll zeigen, wie man die Bildschirmtastatur (SIP) des PPC einblenden kann, ohne ein platzraubendens Menu auf dem Formular zu haben. Dazu benutzen wir ein paar nette Win CE - API-Funktionen  Das Beispiel ist in VB.NET, funktioniert aber in C# natürlich analog. Class SIP 'benötigte Konstanten '-------------------- Private Const SIPF_OFF As Integer = &H0 Private Const SIPF_ON As Integer = &H1 Private Const SIPF_DOCKED As Integer = &H2 Private Const SIPF_LOCKED As Integer = &H4 ' SipStatus Private Const SIP_STATUS_UNAVAILABLE As Integer = 0 Private Const SIP_STATUS_AVAILABLE As Integer = 1 'Deklaration der benötigten API-Funktionen '----------------------------------------- 'Anzeige des SIP 'dwFlag: gibt an, ob das SIP angezeigt(SIPF_ON) oder versteckt (SIPF_OFF) werden soll <DllImport("coredll.dll")> _ Private Shared Sub SipShowIM(ByVal dwFlag As Integer) End Sub 'gibt den Status des SIP zurück <DllImport("coredll.dll")> _ Private Shared Function SipStatus() As Integer End Function 'nun kommen die eigentlichen, öffentlichen Funktionen '---------------------------------------------------- 'anzeigen der Tastatur Public Sub Show() If SipStatus() = SIP_STATUS_UNAVAILABLE Then MsgBox("Fehler: Bildschirmtastatur nicht verfügbar!") Return Else SipShowIM(SIPF_ON) End If End Sub 'ausblenden der Tastaur Public Sub Hide() SipShowIM(SIPF_OFF) End Sub 'diese Funktion ermittelt die Größe des SIP 'das ist beispielsweise dann nützlich, wenn man die Anzeige des eigenen Formulars anpassen möchte 'die Struktur RECT für die Größe: Public Structure RECT Public left As Integer Public top As Integer Public right As Integer Public bottom As Integer End Structure 'RECT '...und die Klasse SIPINFO, die die Informationen über das SIP enthält Private Class SIPINFO Public Sub New() cbSize = Marshal.SizeOf(Me) End Sub 'New 'Größe der SIPINFO-Struktur in Bytes Public cbSize As Integer 'Status des SIP (SIPF_DOCKED, SIPF_LOCKED, SIPF_OFF, SIPF_ON) Public fdwFlags As Integer 'sichtbarer Bereich des Desktops, also der Bereich ausserhalb des SIP's Public rcVisibleDesktop As RECT 'Größe des SIP Public rcSipRect As RECT ' Public dwImDataSize As Integer Public pvImData As IntPtr End Class 'SIPINFO 'Funktion zum Füllen der SIPINFO <DllImport("coredll.dll")> _ Private Shared Function SipGetInfo(ByVal pSipInfo As SIPINFO) As Integer End Function Public Function GetRect() As RECT Dim sipInfo As SIPINFO = New SIPINFO If SipGetInfo(sipInfo) <> 0 Then Return sipInfo.rcSipRect End If End Function End Class Die Verwendung ist einfach, da die Methoden als Shared deklariert wurden. Wenn man beispielsweise die Tastatur anzeigen möchte, wenn der Benutzer den Cursor (Fokus) in eine bestimme Textbox setzt, so muss man lediglich in der entsprechenden GetFocus-Ereignisprozedur folgende Zeile einfügen: SIP.Show und bei LostFocus natürlich SIP.Hide Das war's  Mehr Info's über die API-Funktionen und Strukturen gibt es auch hier. Alles Weitere bitte posten  |
Ein Computer wird nie das tun, was du willst - sondern das, was du programmierst! |
|
| |
|
|
Slayer666
Neumitglied
2 Beiträge |
|
|
pda-dev
Forum Admin
   
548 Beiträge |
Erstellt am: 07.01.2005 : 13:48:28 Uhr
|
Hallo Slayer, was genau meinst du mit "die untere menü-leisten mit der eingabe rechts" ? Vermutlich eine normale Menübar? Diese kannst du einfach über den Formulardesigner (dort heisst es MainMenu) auf deine Form ziehen und fertig  Besonderer Quellcode ist da nicht erforderlich - die Tastatur wird dann automatisch eingeblendet, wenn der Benutzer das Symbol rechts in der Menübar klickt. Gruß, Frank |
Ein Computer wird nie das tun, was du willst - sondern das, was du programmierst! |
 |
|
|
heino
PDA-Interessierter

19 Beiträge |
|
|
ReinerZ
PDA-Spezialist
  
347 Beiträge |
|
|
heino
PDA-Interessierter

19 Beiträge |
|
|
ReinerZ
PDA-Spezialist
  
347 Beiträge |
Erstellt am: 22.06.2007 : 15:18:26 Uhr
|
Hallo Heino, folgender Code müsste funktionieren: Private Const SIPF_OFF As Integer = &H0 Private Const SIPF_ON As Integer = &H1 <DllImport("coredll.dll")> _ Private Shared Sub SipShowIM(ByVal dwFlag As Integer) End Sub Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button1.Click ' Blendet SIP ein... SipShowIM(SIP_ON) End Sub Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button2.Click ' Blendet SIP aus... SipShowIM(SIP_OFF) End Sub Viele Grüsse Reiner PS: Was deinen Nachsatz betrifft: Ich gelobe Besserung *g*... PPS: Ich bin NICHT allwissend, es gibt etliche Sachen unter Windows CE-/Mobile, die ich auch noch nicht "geknackt" habe. |
 |
|
|
heino
PDA-Interessierter

19 Beiträge |
|
|
Notausstieg
URL does not exist or can't load the page
PDA-Programmierer
 
39 Beiträge |
|
|
ReinerZ
PDA-Spezialist
  
347 Beiträge |
Erstellt am: 23.06.2007 : 02:16:39 Uhr
|
Hallo Heino, hab doch noch was für dich gefunden: Private Const SHFS_SHOWTASKBAR As Integer = &H0001 Private Const SHFS_HIDETASKBAR As Integer = &H0002 Private Const SHFS_SHOWSIPBUTTON As Integer = &H0004 Private Const SHFS_HIDESIPBUTTON As Integer = &H0008 Private Const SHFS_SHOWSTARTICON As Integer = &H0010 Private Const SHFS_HIDESTARTICON As Integer = &H0020 <DllImport("aygshell.dll")> _ Private Shared Sub SHFullScreen(ByVal hWnd As System.IntPtr _ ByVal dwFlags As System.UInt32) End Sub ' SIP ausblenden... Private Sub HideSipButton() SHFullScreen(Me.Handle, SHFS_HIDESIPBUTTON) End Sub ' SIP einblenden... Private Sub ShowSipButton() SHFullScreen(Me.Handle, SHFS_SHOWSIPBUTTON) End Sub Wenn das nicht funktioniert, weiss ich's auch nicht mehr... Ich hoffe, die VB-Syntax ist okay. Hab nämlich wenig bis gar keine Ahnung von VB *g*... Gruss Reiner |
 |
|
|
ReinerZ
PDA-Spezialist
  
347 Beiträge |
|
|
Notausstieg
PDA-Programmierer
 
39 Beiträge |
|
|
ReinerZ
PDA-Spezialist
  
347 Beiträge |
|
|
Notausstieg
PDA-Programmierer
 
39 Beiträge |
|
|
Notausstieg
PDA-Programmierer
 
39 Beiträge |
|
|
ReinerZ
PDA-Spezialist
  
347 Beiträge |
|
Thema  |
|