Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Buttonabfrage ohne Click 2ter Teil

Empfohlene Antworten

Veröffentlicht

Hallo, an die mit der Glaskugel.

Mein Problem hatte ich schon mal beschrieben " Button abfrage ohne Click", nun das ich die Button abfragen kann funktioniert ,in dem ich die Cursorpos abgefragt habe(siehe unten) doch durch diese Methode lassen sich die Button aber nicht mehr mit der Maus anklicken, das sollte aber schon noch möglich sein. Gibt es den keine Funktion die mir die Resource-Nummer oder so was eindeutiges zurückgibt? (für die MFC aber)

Bin dankbar für alles, mir gehen langsam die Ideen aus. :confused:

---Code--------------------------------------------------------------------------

void CCd3Dlg::Test(CPoint point)

{

CRect rc;

GetClientRect(&rc);

if(rc.PtInRect(point))

{

if(point.x>10&&point.x<85&&point.y>10&&point.y<35)//Cursorabfrag eingrenzen

{

//tue das

}

SetCapture();

}

else if(!rc.PtInRect(point))

{

//tue das

ReleaseCapture();

}

}

------------------------------------------------------------------------------------

*Glaskugelanschau*

.....meine Kugel sagt mir folgendes.......Du hast keine Klasse fuer deine Buttons geschrieben (und das ist nicht gut so :) ) du bekommst wohl dein MouseMove ueber deinen MainDlg. Durch das SetCapture() geht aber nun alles an Mouseaktivitaeten an deinen MainDlg und somit wuerd ich sagen kannst du keine Buttons druecken :OD

....die Glaskugel erlischt...

Bye

Goos

In der oben genannte Klasse wird das gliche behandelt, nur eben mit einem Static.

Wenn man über das Static(den Button) fährt, ändert sich der Cursor, klickt man ihn an, öffnet sich ne HP.

Da ein static genau wie ein Button auch nur ein Fenster ist, solltest du die funktionsweise eigentlich leicht auf dein Prog übertragen können.

Such einfach mal nach "Paul Dilascia CStaticLink" und wuschel dich dann durch. ist eigentlich sehr einfach. Und ne neue Klasse ist auch nicht von nöten.

(Hatte das Damals in einem FormView und einem Dialog verwirklicht)

Greez

Hallo Babybaer!

Sorry, tut mir leid, daß das so lange ging, aber weil meine Neffen zu Besuch waren hat´s leider länger gedauert... keine Zeit ... weißt Du ja. Deshalb konnte ich mich erst jetzt ransetzen.

Hier die Lösung:


	POINT pnt;

	GetCursorPos(&pnt);

	int dlgID=WindowFromPoint(pnt)->GetDlgCtrlID();

Mit der ID kann man dann ordentlich arbeiten. Alle Standard-Fenster vom System (virtuelle Funktionen wie der OK oder Exit-Button) starten mit 1 und sind von da an durchnummeriert. Eigens erstellte Elemente starten bei 1000 .. kann man aber auch von Hand in der Resource abändern. 0=nicht zum Dialog zugehöriges Fenster.

Es ist also nicht unbedingt notwendig überall eigene Klassen abzuleiten.

Man kann aber auch die Message-Queue selber filtern, indem man im public: der Klasse vom Dialog


	virtual BOOL PreTranslateMessage(MSG* pMsg);

und in der .cpp

BOOL CTest8Dlg::PreTranslateMessage(MSG* pMsg) 

{

	MSG mymsg=*pMsg;

	if (mymsg.message==WM_MOUSEMOVE)

	{

		int dlgID=WindowFromPoint(mymsg.pt)->GetDlgCtrlID();

		TRACE("%d %d %d\n",dlgID,mymsg.pt.x,mymsg.pt.y);

	}

	return CDialog::PreTranslateMessage(pMsg);

}

Den Trace sieht man dann in der Aufrufliste vom Debugger (mach ich halt gerne so)

Das schöne ist, man kann alle Messages vom Dialog abfangen, filtern und dann alles damit anstellen (ähnlich wie einen MessageProc Hook).

Das ist genau so wie ich es mir vorgestellt habe, PERFEKT.

Dank auch an die, die es versucht haben.

;)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.