ClipBoardText in ComboBox



  • Hallo,
    immer wenn der Inhalt des ClipBoards geänderd wird, soll jener Inhalt (logischerweise nur TEXT(CF_TEXT)) in meine ComboBox eingefügt werden. Hier der Ausschnitt aus der WindowProc:

    case WM_DRAWCLIPBOARD:
    			{
    				HGLOBAL hGlobal;
    				LPTSTR lptstr;
    				OpenClipboard(NULL);
    				hGlobal = NULL;
    				hGlobal = GetClipboardData(CF_TEXT);
    				if (hGlobal != NULL)
    				{
    					lptstr = (LPTSTR)GlobalLock(hGlobal);
    					SendMessage(hComboBox, CB_INSERTSTRING, 0, [b](LPARAM)lptstr)[/b];
    				}
    				GlobalUnlock(hGlobal);
    				CloseClipboard();
    			}break;
    

    Es liegt sicherlich am fett markierten letzten Argument der SendMessage()-Funktion, dass immer nur Quatsch in die ComboBox geschrieben wird. Was hab' ich vergessen bzw. wo ist mein Fehler?

    Danke!

    MfG dust



  • Hoi,

    hast Du geprüft, ob in der Zwischenablage auch Text vorliegt (IsClipboardFormatAvailable ➡ CF_TEXT)? Sieht nämlich nicht so aus 😉 .

    Hast Du weiterhin das beachtet?:

    MSDN zu WM_DRAWCLIPBOARD schrieb:

    Each window that receives the WM_DRAWCLIPBOARD message must call the SendMessage function to pass the message on to the next window in the clipboard viewer chain. The handle to the next window in the chain is returned by SetClipboardViewer, and may change in response to a WM_CHANGECBCHAIN message.

    Du kannst außerdem vorher mal prüfen, ob in lptstr generell ein sinnvoller String steht, z.B. mit:

    MessageBox(hWnd, lptstr, NULL, MB_OK);
    

    (Oder Du verwendest den Debugger, evtl. noch einfacher.



  • 🙂



  • falls das von Bedeutung ist, ich benutze:
    Visual Studio 2008 Professional Edition
    unter:
    Windows XP



  • Falls dieser Thread jemals wieder das Tageslicht erblickt:

    Mit CF_UNICODETEXT funktionierts!

    MfG dust


Anmelden zum Antworten