CButton
-
Hallo.
Gibt es eigentlich eine Möglichkeit beim Buttondruck drauf zu reagieren, das der Button gedrückt wird und nicht darauf, das er losgelassen wird?
Oli
-
jedes control wie auch der button is ein CWnd
CWnd::OnLButtonDown
CWnd::OnLButtonUp
-
Hallo Oli,
du musst nur eine Klasse von CButton ableiten und auf WM_LBUTTONDOWN reagieren,
z.B.#define MY_BN_CLICKING 100 // eigene Notification Message definieren
class CMyButton : public CButton
{
afx_msg void OnLButtonDown(UINT flags, CPoint pt);DECLARE_MESSAGE_MAP(CMyButton, CButton)
};BEGIN_MESSAGE_MAP(CMyButton, CButton)
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()void CMyButton::OnLButtonDown(UINT flags, CPoint pt)
{
CButton::OnLButtonDown(flags, pt);// Jetzt entweder direkt reagieren, oder eine Message an den Dialog schicken:
int id = ::GetDlgCtrlID(m_hWnd);
GetParent()->SendMessage(WM_COMMAND, MAKEWPARAM(id, MY_BN_CLICKING), m_hWnd);
}In der Messagemap vom Dialog sieht's dann beispielsweise so aus:
ON_CONTROL(MY_BN_CLICKING, IDC_MY_BUTTON, OnMyButtonClicking)
...
void CMyDialog::OnMyButtonClicking()
{
...
}
-
danke so klappt es.
Oli
-
Hallo
Hatte genau das selbe problem wie ihr!
habe jetzt aber folgendes Problem,
void CMeinButton::OnLButtonDown(UINT flags, CPoint pt)
{
CButton::OnLButtonDown(flags, pt);int id = ::GetDlgCtrlID(m_hWnd);
GetParent()->SendMessage(WM_COMMAND, MAKEWPARAM(id, MY_BN_CLICKING), m_hWnd);
}beim Compilieren habe ich folgende fehlermeldung:
error C2664: 'SendMessageA' : Konvertierung des Parameters 3 von 'struct HWND__ *' in 'long' nicht moeglich
Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder FunktionsformatCompiler springt auf die zeile mit GetParent()->........
-
Hat ja auch seinen Grund:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_CWnd.3a3a.SendMessage.asp
-
Danke aber ich kann mit der Msdn leider nur sehr wenig anfangen und wenn sie englisch schon gar nicht*g*
Ich programmiere noch nicht lange im visual Cpp!Mfg flo
-
Kann uns da wirklich niemand weiterhelfen? bin schön langsam am verzweifeln da das der wichtigste programmteil ist ;-)!!