Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > XProfan > Helfer & Tools

Helfer & Tools Programme für und in XProfan und Fragen dazu.

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag Hilfe bei Script Erstellung
Aufrufe: 15, Antworten: 6
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26731, Antworten: 4207
Gehe zum ersten neuen Beitrag Von Live CD Windowspfad...
Aufrufe: 121, Antworten: 15
Gehe zum ersten neuen Beitrag Grand Prix 2012 Eurovision
Aufrufe: 36, Antworten: 4
Gehe zum ersten neuen Beitrag Bundesliga-Tippspiel Saision...
Aufrufe: 7572, Antworten: 179
Gehe zum ersten neuen Beitrag Verlust der Internetverbindung
Aufrufe: 43, Antworten: 2
Gehe zum ersten neuen Beitrag avs4you_com Lizenz oder Abo?
Aufrufe: 34, Antworten: 2
Gehe zum ersten neuen Beitrag Acer Aspire 8745ZG fährt...
Aufrufe: 25, Antworten: 4
Gehe zum ersten neuen Beitrag Dateien lassen sich nicht...
Aufrufe: 34, Antworten: 3
Gehe zum ersten neuen Beitrag Programmvorstellung:...
Aufrufe: 22, Antworten: 1
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 14.02.2011, 19:58   #16 (Direktlink)
Forenmaskottchen
 
Registriert seit: 23.01.2011
Ort: Bernburg
Alter: 58
Beiträge: 756
Standard

Hallo Frank

Da war ich in der Tat inkonsequent. Ich wollte es nicht editierbar und über die Kontextfunktionen ging es doch.
So sollte das nun besser laufen.
Code:
$H windows.ph
$H messages.ph
Declare OrgWinProc&
Declare Titel$, NextViewer&, LastSender&, Text&, Static&, DelBtn&, EditBtn&, CopyBtn&, IsText&, IsPic&, Font&, Static$
Declare Rect#
Declare RRect#
Declare Bitmap#
Declare Buffer#
Struct Rect = ~TRect
Struct Bitmap = ~TBitmap
DIM Rect#, Rect
DIM RRect#, Rect
DIM Bitmap#, Bitmap
DIM Buffer#, 60

Proc EditSubClass
  Parameters _Wnd&, _Msg&, _WParam&, _LParam&
  Case _Msg& = ~wm_ContextMenu : Return 1
  Return ~CallWindowProc(OrgWinProc&, _Wnd&, _Msg&, _WParam&, _LParam&)
EndProc

Proc BildHolen
  Declare _Ratio!, _Ratio$, _BMH&
  If ~OpenClipBoard(%HWnd) <> 0
    IsPic& = 1
    _BMH& = ~GetClipboardData(~cf_Bitmap)
    ~GetObject(_BMH&, 28, Bitmap#)
    ~CloseClipboard()
    MCLS Bitmap#.bmWidth&, Bitmap#.bmheight&
    StartPaint -1
    ClipLoadBMP 0, 0; 0
    Endpaint
    ' Verhältnis Breite zu Höhe für Anzeige berechnen
    _Ratio! = Bitmap#.bmheight& / Bitmap#.bmWidth&
    _Ratio$ = "  [B : H = 1 : " + Format$ ("0.00", _Ratio!) + "]"
    If _Ratio! < 1
      _Ratio! = Bitmap#.bmWidth& / Bitmap#.bmheight&
      _Ratio$ = "  [B : H = " + Format$ ("0.00", _Ratio!) + " : 1]"
    EndIf
    Static$ = "Bild (" + Str$(Bitmap#.bmWidth&) + " x " + Str$(Bitmap#.bmheight&) + ") Pixel"
    SetText Static&, Static$ + _Ratio$
  Else
    SetText Static&, "Bildholen gescheitert"
    IsPic& = 0
  EndIf
EndProc

Proc BildSetzen
  Declare _Zoom1!, _Zoom2!, _BW&, _BH&
  Case IsPic& = 2  : BildHolen        ' War Fenster verkleinert, Bild jetzt holen
                        ' BildHolen funktioniert nicht, wenn Programm verkleinert!
  If IsPic& = 1
    ' Proportional in vorhandene Fenstergröße einpassen
    _Zoom1! = %BMPX / Rect#.Right&
    _Zoom2! = %BMPY / (Rect#.Bottom& - 49)
    If _Zoom1! > _Zoom2!
      _BW& = %BMPX / _Zoom1!
      _BH& = %BMPY / _Zoom1!
    Else
      _BW& = %BMPX / _Zoom2!
      _BH& = %BMPY / _Zoom2!
    EndIf
    MCopySizedBMP 0, 0 - %BMPX, %BMPY > 0, 26 - _BW&, _BH&; 0  ' Bild in Fenster einzoomen
  EndIf
EndProc

Proc Size       ' Größenänderung Fenster
  Case ~IsIconic(%HWnd) : Return        ' nichts tun bei verkleinertem Fenster
                                        ' Vorschau wird ohnehin nicht aktualisiert
                                        ' und Bildeinfügen ist hier nicht möglich
  CLS ~GetSysColor(~Color_BtnFace)
  ~GetClientRect(%HWnd, Rect#)
  RRect#.Left& = -1
  RRect#.Top& = -1
  RRect#.Right& = Rect#,Right& - 6
  RRect#.Bottom& = 25
  ~DrawEdge(%HDC, RRect#, 9, 15)
  ~DrawEdge(%HDC2, RRect#, 9, 15)
  SetWindowPos Static& = 2, (Rect#.Bottom& - 22) - (Rect#.Right& - 3), 22
  If IsText&    ' Textdisplay einpassen
    SetWindowPos Text& = 0, 26 - Rect#.Right&, Rect#.Bottom& - 48
    SetText Static&, Static$
    ShowWindow(Text&, 1)
  ElseIf IsPic& ' Bild einpassen
    BildSetzen
  Else
    SetText Static&, Static$
  EndIf
EndProc

Proc ShowText   ' Steuerung Sichtbarkeit Textdisplay
  Parameters _Text&
  IsText& = _Text&
  Case IsText& : IsPic& = 0
  ShowWindow (Text&, IsText&<>0)
  ShowWindow (EditBtn&, IsText&=1)
  ShowWindow (CopyBtn&, IsText&=1)
  EnableWindow CopyBtn&, 0
  SetCheck EditBtn&, 0
EndProc

Proc TextFormat ' Aktion Text
  Declare _Text$, _Len&
  _Text$ = GetClip$()
  _Len& = Len (_Text$)
  ShowText 1
  SetText Text&, _Text$
  Static$ = "Text (" + Str$(_Len&) + " Zeichen)"
EndProc

Proc BildFormat ' Aktion Bild
  ShowText 0
  IsPic& = 2  ' Veranlaßt Bildholen wenn Fenster anzeigebereit ist
EndProc

Proc AnsiString
  Parameters _Offs&
  Declare _AString$
  _AString$ = MkStr$(Chr$(0), 260)
  ~WideCharToMultiByte(~CP_ACP,0,_Offs&,-1,Addr(_AString$),260,0,0)
  Return Trim$(_AString$)
EndProc

Proc DropFileFormat
  Declare _Data&, _Offs&, _File$, _FileList$, _Files&
  If ~OpenClipBoard(%HWnd) <> 0
    _Data& = ~GetClipboardData(~cf_HDrop)
    _Offs& = Long(_Data&, 0)
    _File$ = AnsiString (_Data& + _Offs&)
    While _File$ <> ""
      Inc _Files&
      _FileList$ = _FileList$ + Chr$(13) + Chr$(10) + _File$
      _Offs& = _Offs& + Len(_File$)*2 + 2
      _File$ = AnsiString (_Data& + _Offs&)
    EndWhile
  EndIf
  ~CloseClipboard()
  SetText Text&, @Del$(_FileList$, 1, 2)
  Static$ = "HDrop-Struktur mit " + Str$(_Files&) + " Einträgen"
  ShowText 2
EndProc

Proc XFormat    ' Aktion Unbekanntes Format
  Parameters _Static$
  ShowText 0
  Static$ = _Static$
  IsPic& = 0
EndProc

Proc ClipAction         ' Änderungen des Inhalts der Zwischenanlage auswerten
  Declare _Icon&
  CLS ~GetSysColor(~Color_BtnShadow)
  If ~CountClipboardFormats()
    If ~IsClipboardFormatAvailable(~cf_Text)
      Textformat
    ElseIf ~IsClipboardFormatAvailable(~cf_Bitmap)
      BildFormat
    ElseIf ~IsClipboardFormatAvailable(~cf_HDrop)
      DropFileFormat
    Else
      XFormat "Nicht darstellbar"
    EndIf
  Else
    XFormat "Leer"
  EndIf
  Size
  Case NextViewer& : SendMessage(NextViewer&, ~wm_DrawClipboard, &uwParam, &ulParam)
  ' Kommando durchreichen an nächsten Viewer
EndProc

Proc CopyEdit
  ClearClip
  PutClip GetText$(Text&)
  ClipAction
EndProc

Proc CBChain    ' Änderung der Viewerkette behandeln
  If &uwParam = NextViewer&
    NextViewer& = &ulParam
  ElseIf NextViewer& <> 0
    SendMessage(NextViewer&, ~wm_ChangeCBChain, &uwParam, &ulParam)
  EndIf
EndProc

Proc MakeTextDisplay
  Font& = ~GetStockObject(~Default_GUI_Font)
  ~GetObject(Font&, 60, Buffer#)
  Long Buffer#, 0 = 16
  Long Buffer#, 4 = 0
  Font& = ~CreateFontIndirectA(Buffer#)                 ' Eigenen Font basiert auf Systemschrift Default_GUI_Font
  SetDialogFont Font&
  Text& = Create("MultiEdit", %HWnd, "", 0, 0, 0, -1)   ' Textanzeige
  SendMessage(Text&, ~em_SetReadOnly, 1, 0)             ' Text als NurLesen anzeigen
  IsText& = 1
  Static& = Control("Static", "", $50000000, 0, 0, 0, 0, %HWnd, 100, %HInstance, $200)  ' Statusanzeige
  DelBtn& = Create("Button", %HWnd, "Löschen", 2, 2, 64, 22)
  EditBtn& = Create("CheckBox", %HWnd, "Bearbeiten", 88, 3, 88, 20)
  CopyBtn& = Create("Button", %HWnd, "Alles kopieren", 176, 2, 96, 22)
  OrgWinProc& = ~GetWindowLong(Text&, ~gwl_WndProc)
  ~SetWindowLong(Text&, ~gwl_WndProc, ProcAddr("EditSubClass", 4))
  Size
EndProc

Proc EditEnable
  Declare _CanEdit&
  _CanEdit& = GetCheck (EditBtn&)
  SendMessage(Text&, ~em_SetReadOnly, Not(_CanEdit&), 0)
  EnableWindow CopyBtn&, _CanEdit&
  If _CanEdit&
    ~SetWindowLong(Text&, ~gwl_WndProc, OrgWinProc&)
  Else
    ~SetWindowLong(Text&, ~gwl_WndProc, ProcAddr("EditSubClass", 4))
  EndIf
EndProc

WindowStyle 575
WindowTitle "ClipView"
Window %MaxX\12, %MaxY\12 - %MaxX\2, %MaxY\2
UseIcon "Windows"
CLS ~GetSysColor(~Color_BtnShadow)
Set("FastMode", 1)
Set("ErrorLevel", 0)
MakeTextDisplay
NextViewer& = ~SetClipboardViewer(%HWnd)        ' Viewer anmelden
UserMessages ~wm_DrawClipboard, ~wm_ChangeCBChain
ClipAction
While 1
  WaitInput
  EditEnable
  If %Key = 2
    Break
  ElseIf %Key = 4
    Size
  ElseIf %UMessage = ~wm_DrawClipboard
    ClipAction
  ElseIf %UMessage = ~wm_ChangeCBChain
    CBChain
  ElseIf %Key = 255
    If GetFocus(DelBtn&)
      ClearClip
      ClipAction
    EndIf
  ElseIf GetFocus(CopyBtn&)
    CopyEdit
  EndIf
EndWhile
Dispose Rect#
Dispose Bitmap#
Dispose Buffer#
DeleteObject Font&
~ChangeClipboardChain(%HWnd, NextViewer&)       ' Viewer abmelden, unbedingt bei Ende ausführen!!!
Man kann zwar immer noch was markieren, aber nichts mehr kopieren, wenn der Editmodus nicht eingeschalten ist.

Gruß Volkmar
Volkmar ist gerade online   Mit Zitat antworten
Alt 14.02.2011, 20:29   #17 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
Standard

Sehr schön. Aber ich kann's noch löschen, obwohl Bearbeiten verboten ist...
Dein Subclassing benutzt auch noch die unsicherere ProcAddr-Methode. Welche XProfan-Version verwendest du?
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist offline   Mit Zitat antworten
Alt 14.02.2011, 20:38   #18 (Direktlink)
Forenmaskottchen
 
Registriert seit: 23.01.2011
Ort: Bernburg
Alter: 58
Beiträge: 756
Standard

Löschen ja, mit der Löschtaste. Die gilt immer. Wollte Thomas generell für jeden Inhalt drin haben. Und das Löschen war auch bei MS im Menü des Viewers drin, wenn ich mich da recht entsinne. Oder gibts noch was, was ich immer noch nicht gesehen habe?

Gruß Volkmar
Volkmar ist gerade online   Mit Zitat antworten
Alt 14.02.2011, 20:52   #19 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
Standard

Nein, das war's, was ich gemeint hatte.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist offline   Mit Zitat antworten
Alt 14.02.2011, 20:54   #20 (Direktlink)
Forenmaskottchen
 
Registriert seit: 23.01.2011
Ort: Bernburg
Alter: 58
Beiträge: 756
Standard

Na super, dann kann ich jetzgt beruhigt ins Bett gehen. Hust - Schnief

Gruß Volkmar
Volkmar ist gerade online   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 14.02.2011, 20:59   #21 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
Standard

Ach du auch? Na dann gute Besserung und angenehme Nachtruhe!
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist offline   Mit Zitat antworten
Alt 14.02.2011, 21:18   #22 (Direktlink)
Forenmaskottchen
 
Benutzerbild von ts-soft
 
Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
Standard

Lasst mir bloß mein Löschknöpje, Ihr kranken Hühner .
Ich bin Gesund und will Knöpje drücke
__________________
Gruß Thomas

Wenn mir früher jemand gesagt hätte, ich würde
freiwillig eine Wanze mit mir herum tragen und sie
auch noch selbst aufladen, hätte ich laut gelacht.

Heute habe ich ein Smartphone.


http://realsource.de
ts-soft ist gerade online   Mit Zitat antworten
Alt 14.02.2011, 22:01   #23 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
Standard

Volkmar, speziell für Thomas solltest du eine Löschautomatik einbauen.
30 oder 40 mal pro Minute oder so...
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist offline   Mit Zitat antworten
Alt 15.02.2011, 15:52   #24 (Direktlink)
Forenmaskottchen
 
Registriert seit: 23.01.2011
Ort: Bernburg
Alter: 58
Beiträge: 756
Standard

@Frank
Erst mal danke und Dir auch.
Und ansonsten, Thomas kann ja auch programmieren. Eine Löschautomatik per Timer einbauen sollte für ihn kein Problem sein. aber das will er ja nicht, er will ja Knöpje drücke.

Gruß Volkmar
Volkmar ist gerade online   Mit Zitat antworten
Alt 15.02.2011, 17:11   #25 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
Standard

Genau.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Antwort

  Paules-PC-Forum.de > Programmierung > XProfan > Helfer & Tools

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an




Alle Zeitangaben in WEZ +2. Es ist jetzt 16:51 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2