Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

16.11.2008, 13:09

Problem mit GetClipboardFormatName

Hi Leute,
ich wollte mir vor kurzem ein Clipboardtool schreiben. Es funktioniert auch schon alles außer einer Sache. Ich will dem Benutzer eine Liste geben, in der alle Formate mit Namen aufgelistet sind, welche in der Ablage sind. Beim ausführen oder compilieren gibt es keinen Fehler. Aber in der Liste werden so Namen wie "DataObject" angezeigt. Ich hatte aber so etwas wie "CF_TEXT" erwartet. Hier mein Code:

C-/C++-Quelltext

1
2
3
4
5
6
7
format = 0;
         SendMessage(hwndlist, LB_RESETCONTENT, 0, 0);
         while(format = EnumClipboardFormats(format))
         {
          int temii = GetClipboardFormatName(format, temp, MAX_PATH);
          SendMessage(hwndlist, LB_ADDSTRING, 0, (LPARAM) temp);
         }

Ich habe schon die Forensuche benutzt und im Chat gefragt, aber mir konnte keiner helfen. Vielen dank schon mal im voraus für Hilfe.

2

17.11.2008, 15:33

Hat keiner eine Idee? Könnte ich denn die Liste weck lasse? Man kann mit dem Programm schon folgenden Sachen machen: Bitmap einfügen, Text einfügen, Text auslesen, Zwischendatei einfügen und man kann die komplette Ablage leeren. Außerdem wird die Anzahl der Formate, welche in der Ablage sind angezeigt.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

3

17.11.2008, 16:05

Ich seh keine Frage...
@D13_Dreinig

4

17.11.2008, 16:14

Was meinst du mit: "Ich sehe keine Frage..."?

Mordrak

1x Contest-Sieger

Beiträge: 121

Wohnort: München

Beruf: Junior IT Consultant

  • Private Nachricht senden

5

17.11.2008, 16:21

Ahoi,

was auffaellt ist, dass Du GetClipboardFormatName() auch fuer die vordefinierten Typen (wie CF_TEXT) aufrufst. Fuer die tut die Funktion naemlich nichts, und insbesondere wird dein temp[] nicht auf einen Leerstring gesetzt.

Quellcode

1
2
3
4
5
6
7
8
                 ??? : <DataObject>
             CF_TEXT : <>
      CF_UNICODETEXT : <>
                 ??? : <Rich Text Format>
                 ??? : <Hidden Text Banner Format>
           CF_LOCALE : <>
                 ??? : <Ole Private Data>
          CF_OEMTEXT : <>


Hier ist z.B. mal die Ausgabe der Formatnamen meines Clipboards drin, wobei ich in der linken Spalte den 'UINT format'-Wert in Text umgewandelet habe (ueber ein popeliges switch()). "???" steht links fuer nicht vordefinierte CF_... Werte.

Hilft Dir das weiter?

Gruesse,
Mordrak
What's yellow and equivalent to the axiom of choice? The Lemmon of Zorn!

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

6

17.11.2008, 16:24

Zitat von »"Hobby Programmierer"«

Was meinst du mit: "Ich sehe keine Frage..."?


Ich meine, das du keine wirkliche Frage gestellt hast... Zumindest seh ich keine.
@D13_Dreinig

7

18.11.2008, 16:47

David_pb
Ich wollte wissen, ob sich das Programm auch ohne diese Liste sehen lassen kann.
Mordrak
Wie sollte ich das denn bei meinem Programm dann machen?

Mordrak

1x Contest-Sieger

Beiträge: 121

Wohnort: München

Beruf: Junior IT Consultant

  • Private Nachricht senden

8

18.11.2008, 19:40

Zitat von »"Hobby Programmierer"«


Mordrak
Wie sollte ich das denn bei meinem Programm dann machen?


Naja, wenn 'UINT format' einer der vordefinierten Werte ist, dann fuege die passenden zugehoerigen Strings von Hand (naja, in einem switch(){} oder so) ein. Nur falls der UINT format NICHT einem der vordefinierten Werte entspricht, dann verwendest Du GetClipboardFormatName(), um den Namen zu holen (also z.B. im 'default:' von Deinem switch())...

Gruesse,
Mordrak
What's yellow and equivalent to the axiom of choice? The Lemmon of Zorn!

Anonymous

unregistriert

9

18.11.2008, 19:48

Re: Problem mit GetClipboardFormatName

Zitat von »"Hobby Programmierer"«


C-/C++-Quelltext

1
2
         while(format = EnumClipboardFormats(format))
{

Ich habe schon die Forensuche benutzt und im Chat gefragt, aber mir konnte keiner helfen. Vielen dank schon mal im voraus für Hilfe.


Sollte esnicht mit nem "==" sein?

10

19.11.2008, 15:42

wenn ich es so mache:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
          switch(format)
          {
          case CF_TEXT: 
              {
               wsprintf(temp, TEXT("%i"), TEXT("CF_TEXT"));
               SendMessage(hwndlist, LB_ADDSTRING, 0, (LPARAM) temp);
              } break;
          default:
              {
               GetClipboardFormatName(format, temp, MAX_PATH);
               SendMessage(hwndlist, LB_ADDSTRING, 0, (LPARAM) temp);
              }
          }

bekomme ich so eine Zahl: 4287052

Werbeanzeige