Je pige pas comment utiliser PostMessage [MFC] - Programmation
Marsh Posté le 09-07-2001 à 23:22:28
regarde du côté d'Invalidate() et le painting en général.
Marsh Posté le 09-07-2001 à 23:29:17
Ca marche si j'utilise cette définition de la fonction OnKeyDown() de la class CWindow:
void CWindow::OnKeyDown()
{
sprintf(buffer, "Une touche a été pressée." );
RECT rect;
lProg.m_pMainWnd->GetClientRect(&rect);
InvalidateRect(&rect);
}
Mais n'y a-t-il pas moyen d'envoyer un message WM_PAINT qui sera traiter par la fonction OnPaint() de la class CWindow?
Marsh Posté le 09-07-2001 à 23:33:04
heureusement que te dis de mater du côté d'Invalidate() ...
hehehe j'en peux plus c'est du délire ce soir
Marsh Posté le 09-07-2001 à 23:37:53
Ah oui, ça aussi ça marche et c'est plus propre:
void CWindow::OnKeyDown()
{
sprintf(buffer, "Une touche a été pressée." );
lProg.m_pMainWnd->Invalidate();
}
Marsh Posté le 09-07-2001 à 23:00:43
J'ai fais une mini application qui affiche un texte et change de texte quand on appuie sur une touche du clavier.
Mais j'ai un problème avec la fonction PostMessage, je la mets dans ma fonction OnKeyDown() mais quand je lance mon appli ça marche pas.
#include <afxwin.h>
char buffer[256];
class CProg : public CWinApp
{
public:
BOOL InitInstance();
};
class CWindow : public CFrameWnd
{
public:
CWindow();
protected:
afx_msg void OnPaint();
afx_msg void OnKeyDown();
DECLARE_MESSAGE_MAP()
};
BEGIN_MESSAGE_MAP(CWindow, CFrameWnd)
ON_WM_PAINT()
ON_WM_KEYDOWN()
END_MESSAGE_MAP()
CProg lProg;
BOOL CProg::InitInstance()
{
m_pMainWnd = new CWindow;
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return true;
}
CWindow::CWindow()
{
Create( NULL,
"MFC Project",
WS_OVERLAPPEDWINDOW,
CRect(0, 0, 800, 600));
sprintf(buffer, "Hello World." );
}
void CWindow::OnPaint()
{
CPaintDC dc(this);
RECT rect;
lProg.m_pMainWnd->GetClientRect(&rect);
dc.DrawText(buffer, -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
}
void CWindow::OnKeyDown()
{
sprintf(buffer, "Une touche a été pressée." );
PostMessage(WM_PAINT);
}
[edtdd]--Message édité par Alload--[/edtdd]