Zum Inhalt springen

frankos

Mitglieder
  • Gesamte Inhalte

    7
  • Benutzer seit

  • Letzter Besuch

  1. Hi! Besser ist folgende Methode: Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0 End Sub cu, frankos
  2. Hi! Auf meinem Ergebnisbogen ist beim IHK-Durchschnitt 71,0 % eingetragen (IHK mittlerer Niederrhein). Ich selbst habe 92,2 % frankos
  3. Hi! Die IHK stellt die Lösungen selbst ins Netz: http://www.heilbronn.ihk.de/download/zwischenpr/1195H2.doc cu, frankos
  4. frankos

    Einstieg in C und C++

    Hi! Also, ich finde das Becker-Buch auch gut (viel besser als z.B. C++ in 21 Tagen). Du kriegst es im Augenblick für 14,95 € bei www.terrashop.de. cu, frankos
  5. Hi! Die beste Lösung ist wie so oft die Windows-API. Mit der Funktion SetTimer ist ein Intervall über Tage und Wochen möglich, ohne durch irgendwelche Schleifen den Prozessor unnötig zu belasten. Hier ein Beispiel (besteht aus einer Form und einem Modul): '---------------------------Anfang der Form------------------------------- Option Explicit Private Sub Form_Load() Call Init(1000) 'Initialisierung des Timers mit 1000 millisek End Sub Private Sub Form_Unload(Cancel As Integer) 'Wichtig: Reset des Timers vor Programmende!!! If TimerEnabled Then Call Terminate End Sub '----------------------------Ende der Form-------------------------------- '--------------------------Anfang des Moduls------------------------------ Option Explicit Private Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, _ ByVal nIDEvent As Long, ByVal uElapse As Long, _ ByVal lpTimerFunc As Long) As Long 'API zum Timer setzen Private Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, _ ByVal nIDEvent As Long) As Long 'API zum Timer-Reset Public TimerEnabled As Boolean 'Zum Nachprüfen ob Timer gesetzt Private hTimer As Long 'Nummer des gesetzten Timers '(wird für Reset gebraucht!) Public Sub Init(lInterval As Long) 'Timer setzen hTimer = SetTimer(0, 0, lInterval, AddressOf TimerProc) 'Timer wird mit dem Intervall lInteval gesetzt, bei einem 'Timer-Ereignis wird die Sub TimerProc aufgerufen TimerEnabled = True End Sub Public Sub Terminate() 'Timer resetten (unbedingt bei Programmende!) Call KillTimer(0, hTimer) 'Reset des Timers mit der Nummer hTimer TimerEnabled = False End Sub Private Sub TimerProc(ByVal hWnd As Long, ByVal Msg As Long, _ ByVal idEvent As Long, ByVal dwTime As Long) 'Diese Sub wird bei einem Timer-Ereignis aufgerufen Static lIndex As Long 'Index zur Demo des Timers lIndex = lIndex + 1 Form1.Caption = lIndex End Sub '---------------------------Ende des Moduls------------------------------- Es ist etwas länger als konventionelle Lösungen, aber wie gesagt ist es die beste (weil Prozessorschonende) Lösung. cu, frankos
  6. Hi! Versuchs mal mit dem Steuerelement für Kodak-Bildbearbeitung. Erst die Komponente zu Deinem Projekt hizufügen, dann eine ImgEdit in Dein Formular einfügen und dann: ImgEdit1.Image = "c:\Bildname.tif" ImgEdit1.Display ImgEdit1.PrintImage cu, frankos
  7. Hi! Ich möchte ein Formular subclassen, in etwa so: Option Explicit Private Declare Function SetWindowLong Lib "user32" _ Alias "SetWindowLongA" (ByVal hWnd As Long, _ ByVal nIndex As Long, ByVal dwNewLong As Long) _ As Long Private Declare Function CallWindowProc Lib "user32" _ Alias "CallWindowProcA" (ByVal lpPrevWndFunc _ As Long, ByVal hWnd As Long, ByVal Msg As _ Long, ByVal wParam As Long, ByVal lParam As _ Long) As Long Private Const WM_NCLBUTTONDBLCLK = &HA3 Private Const WM_NCLBUTTONDOWN = &HA1 Private Const WM_NCLBUTTONUP = &HA2 Const GWL_WNDPROC = (-4&) Dim PrevWndProc& Public Sub Init(hWnd As Long) PrevWndProc = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf SubWndProc) End Sub Public Sub Terminate(hWnd As Long) Call SetWindowLong(hWnd, GWL_WNDPROC, PrevWndProc) End Sub Private Function SubWndProc(ByVal hWnd As Long, _ ByVal Msg As Long, _ ByVal wParam As Long, _ ByVal lParam As Long) As Long If Msg = WM_NCLBUTTONDBLCLK Then MsgBox ("DoubleClick") End If SubWndProc = CallWindowProc(PrevWndProc, hWnd, Msg, wParam, lParam) End Function Nun habe ich folgendes Problem: Das Doppelklickereignis wird in den Non-Client-Bereichen mit der Message-Box quittiert, in den Client-Bereichen aber nicht! Hängt die Varieble Msg von dem Bereich ab, auf den ich klicke? Ich hoffe, einer von Euch kann mir helfen. cu, frankos

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...