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

Mordrak

1x Contest-Sieger

Beiträge: 121

Wohnort: München

Beruf: Junior IT Consultant

  • Private Nachricht senden

11

19.11.2008, 15:56

Zitat von »"Hobby Programmierer"«

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


Der Rueckgabewert von GetClipboardFormatName() waere schon wichtig zu verwenden, falls naemlich format irgendein anderer der CF_-Werte ist, dann liefert es 0 zurueck UND temp[] wird NICHT geaendert. Also egal was da gerade fuer Muell drinsteht, es bleibt drin....

Kopier doch vor dem Aufruf von GetClipboard... einfach mal "<Lazy Programmer>" in temp[] rein :-)

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

12

20.11.2008, 17:44

wenn ich das da rein kopiere, dann habe ich, wenn ich Text in der Ablage habe, 3mal dort <Lazy Programmer> und einmal diese Zahl. Ich glaube, ich bin zu blöd, kannst du mir mal deinen Vorschlag als Code zeigen?

Mordrak

1x Contest-Sieger

Beiträge: 121

Wohnort: München

Beruf: Junior IT Consultant

  • Private Nachricht senden

13

20.11.2008, 22:28

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
            format = 0; 
            while(format = EnumClipboardFormats(format)) { 
                char *ptr="???";
                temp[0]=0;
                switch( format ) {
                    case CF_TEXT:           ptr="CF_TEXT"; break;
                    case CF_BITMAP:         ptr="CF_BITMAP"; break;
                    case CF_METAFILEPICT:   ptr="CF_METAFILEPICT"; break;
                    case CF_SYLK:           ptr="CF_SYLK"; break;
                    case CF_DIF:            ptr="CF_DIF"; break;
                    case CF_TIFF:           ptr="CF_TIFF"; break;
                    case CF_OEMTEXT:        ptr="CF_OEMTEXT"; break;
                    case CF_DIB:            ptr="CF_DIB"; break;
                    case CF_PALETTE:        ptr="CF_PALETTE"; break;
                    case CF_PENDATA:        ptr="CF_PENDATA"; break;
                    case CF_RIFF:           ptr="CF_RIFF"; break;
                    case CF_WAVE:           ptr="CF_WAVE"; break;
                    case CF_UNICODETEXT:    ptr="CF_UNICODETEXT"; break;
                    case CF_ENHMETAFILE:    ptr="CF_ENHMETAFILE"; break;
                    case CF_HDROP:          ptr="CF_HDROP"; break;
                    case CF_LOCALE:         ptr="CF_LOCALE"; break;
                    case CF_DIBV5:          ptr="CF_DIBV5"; break;
                    default:
                        break;
                }
                int temii = GetClipboardFormatName(format, temp, 65536); 
                printf("%20s : <%s>\n", ptr, temp );
            } 


Das fuehrt zu der Ausgabe von oben - wenn temp[] ein Leerstring ist, dann hat ptr den CF-Namen, ansonsten hat temp[] den (anwendungsspezifischen) Namen.

Gruesse,
Mordrak

PS: Grummel, irgendwie hat's die Formatierung etwas verschoben...
What's yellow and equivalent to the axiom of choice? The Lemmon of Zorn!

14

21.11.2008, 15:55

ich habe es jetzt erstmal so gemacht:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
         format = 0;
         SendMessage(hwndlist, LB_RESETCONTENT, 0, 0);
         while(format = EnumClipboardFormats(format))
         {
          TCHAR * ptr = TEXT("???");
          temp[0] = 0;
          switch(format)
          {
          case CF_TEXT: 
              ptr = TEXT("CF_TEXT"); break;
          case CF_OEMTEXT:        
              ptr = TEXT("CF_OEMTEXT"); break;
          default:
               break;
          } 
           int itempi = GetClipboardFormatName(format, temp, MAX_PATH);
           wsprintf(sztemp, TEXT("%20s : <%s>"), ptr, temp);
           SendMessage(hwndlist, LB_ADDSTRING, 0, (LPARAM) temp);
         }

Aber jetzt sehe ich nur lehre Listeneinträge. Abe ich konnte mit dem Debugger erfahren, dass die Strings jetzt richtig ausgefüllt werden.

15

21.11.2008, 15:57

oh, ich muss ja sztemp benutzen! Jetzt geht es, vielen dank. Habe es jetzt aauch verstanden! :roll: :)

Werbeanzeige