Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Mausposition ermitteln

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
27.04.2005, 18:24 Uhr
RedEagle



Hi

Ich möchte, wenn jemand auf mein Fenster klick, die Position ermitteln, wo er hingeklickt hat...

Hab folgenden code in der Foren-suche gefunden, aber wenn ich die Linkse Taste drücke, beendet sich das Programm (Oder es stürtzt ab, ohne Fehlermeldung)


C++:
LPPOINT pos=0;
int X=0, Y=0;

//...

     case WM_LBUTTONDOWN: {
                           GetCursorPos(pos);
                           ScreenToClient(hwndmainwnd,pos);
                           //X = pos->x / 20;
                           //Y = pos->y / 20;
                           break;}

     case WM_DESTROY: {
                       PostQuitMessage (0) ;
                       return 0 ;
                                   break;
                      }



Was hab ich Falsch gemacht??

ps.: Ich verwende DirectX 8 in dem Programm, und "male" damit Bitmaps auf das Fenster. Aber ich glaube/hoffe, dass es daran nicht liegt, oder??
--
MFG RedEagle

Dieser Post wurde am 27.04.2005 um 18:24 Uhr von RedEagle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.04.2005, 20:09 Uhr
ao

(Operator)


Du rutschst vom case WM_LBUTTONDOWN durch nach WM_DESTROY. Das break ist unwirksam, weil es innerhalb der Braces steht. Also entweder die Braces weglassen, die brauchst du nicht (es sei denn du willst lokale Variablen deklarieren), oder das break hinter die schließende Klammer verschieben.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.04.2005, 21:08 Uhr
RedEagle



Hab ich gemacht, geht aber immer noch nicht

gibts evtl ne andere Möglichkeit, die Position zu erhalten??

C++:
     case WM_LBUTTONDOWN: {
                           GetCursorPos(pos);
                           ScreenToClient(hwndmainwnd,pos);
                           X = pos->x / 20;
                           Y = pos->y / 20;
                          }break;

     case WM_DESTROY: {
                       PostQuitMessage (0) ;
                       return 0 ;
                      } break;


--
MFG RedEagle

Dieser Post wurde am 27.04.2005 um 21:08 Uhr von RedEagle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.04.2005, 21:18 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


außerdem hast du nen uninitialisierten pointer mit dem du GetCursorPos aufrufst:


C++:
LPPOINT pos = 0;



LP ist "Long Pointer"!

Das sollte eigentlich von der API abgefangen werden, wahrscheinlich ist dein pos->x usw das problem.

Benutz


C++:
POINT pos = {0,0};
GetCursorPos(&pos);
ScreenToClient(hwndmainwnd,&pos);
X = pos.x / 20;
Y = pos.y / 20;


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
28.04.2005, 21:03 Uhr
RedEagle



jo, funktioniert

--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: