H
Habe folgendes Problem:
Habe bei meiner Anwendung ein Bild auf den Bildschirm gerendet. Jetzt möchte ich über die Windows-Mausnachricht mir die Koordinaten von einem Mausklick holen, damit ich gucken kann, ob ein bestimmter Teil des Bildes angeklickt wurde.
Nur Windows sendet aus irgendeinem Grund keine Mausnachricht, wenn ich auf das Bild klicke. Bei einem einfach schwarz gefüllten Hintergrund wird eine Mausnachricht gesendet und ich bekomme auch die Position, nur wenn ich auf das Bild klicke, kommt nix.
Weiß jemand, woran das liegt und wie ich das Problem vllt lösen könnte?
MfG
Hundefutter
---------------------
Edit:
Bin jetzt schon etwas weitergekommen. Es liegt wohl daran, dass ich ein Childwindow erzeugt habe, in dem ihc vorher ein Video abspiele. Also nimmt das Hauptfenster die klicks an den Stellen nicht an, wo das childwindow drüberliegt.
Das ist die Funktion, in der ich das ChildWindwo erstelle:
void DShow_Play(HWND hWnd,WCHAR* filename)
{
//This creates the filter graph manager
CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC,
IID_IGraphBuilder, (void **)&pGB);
//Query COM interface
pGB->QueryInterface(IID_IMediaControl, (void **)&pMC);
pGB->QueryInterface(IID_IVideoWindow, (void **)&pVW);
pGB->RenderFile(filename,NULL);
//Set the parents window
pVW->put_Owner((OAHWND)hWnd);
//Set the child window
pVW->put_WindowStyle(WS_CHILD | WS_CLIPSIBLINGS);
//Set the Child to this position
pVW->SetWindowPosition(0,96,1024,576);
pMC->Run();
};
Kann ich das Childwindow danach nicht einfach wieder löschen? Wenn ja, wie?
Habe jetzt das Childwindow nach Beenden des Videos einfach mal mit
pVW->SetWindowPosition(0,0,1,1);
ganz klein gemacht. Das funktioniert jetzt zwar, nur ist es natürlich nicht gerade sauber und elegant, wenn da immer noch oben links ein 1x1 window rumliegt. Wäre trotzdem noch gut zu wissen, wie man das Childwindow wieder löschen kann..