fujitsufan
Erfahrenes Mitglied
Hallo zusammen,
wieder ein Problem.
Ich zeichne einen Kreis, auch ausgefüllt. Funktioniert prächtig.
Es sei denn, dass ich die Funktion welche den Kreis auf den Dialog zeichnet im Dialog-Setup aufgerufen wird.
Ich kann diese Funktion manuell per Button-Click aufrufen. Zu diesem Zeitpunkt ist das Dialogfenster sichtbar und alles wird gut.
Wie kann ich eine Windows Message abfangen, die mir signalisiert, dass das Dialogfenster sichtbar ist?
Mist folgender Funktion geht's nicht. "WM_INITDIALOG" scheint die falsche Message zu sein.
Diese kommt viel zu früh.
Viele Grüße.
fujitsufan
wieder ein Problem.
Ich zeichne einen Kreis, auch ausgefüllt. Funktioniert prächtig.
Es sei denn, dass ich die Funktion welche den Kreis auf den Dialog zeichnet im Dialog-Setup aufgerufen wird.
Ich kann diese Funktion manuell per Button-Click aufrufen. Zu diesem Zeitpunkt ist das Dialogfenster sichtbar und alles wird gut.
C++:
void TElementBeschriftungDialog::PaintClock()
{
int iTest = 0;
DWORD penColor = RGB_GRAY39;
DWORD bgColor = RGB_CYAN4;
RECT rDialog, rClock;
POINT pPoint, pCenterClock;
HDC hDC;
LONG lwidth = 0.0, lHight = 0.0;
LONG dX = 0.0, dY = 50.0, dR = 150.0;
//hDC = GetWindowDC(this->hDlg);
hDC = GetDC(this->hDlg);
HBRUSH backGroundBrush = CreateSolidBrush(bgColor);
HPEN pen = CreatePen(0, 2, penColor);
GetWindowRect(this->hDlg, &rDialog);
lwidth = rDialog.right - rDialog.left, lHight = rDialog.bottom - rDialog.top;
pPoint.x = rDialog.left, pPoint.y = rDialog.top;
ScreenToClient(hDlg, &pPoint);
pCenterClock.x = pPoint.x + lwidth / 2 + dX;
pCenterClock.y = pPoint.y + lHight / 2 + dY;
rClock.left = pCenterClock.x - dR / 2, rClock.right = pCenterClock.x + dR / 2;
rClock.top = pCenterClock.y - dR / 2, rClock.bottom = pCenterClock.y + dR / 2;
SelectObject(hDC, backGroundBrush);
SelectObject(hDC, pen);
Ellipse(hDC, rClock.left, rClock.top, rClock.right, rClock.bottom);
DeleteObject(backGroundBrush);
DeleteObject(pen);
}
Wie kann ich eine Windows Message abfangen, die mir signalisiert, dass das Dialogfenster sichtbar ist?
Mist folgender Funktion geht's nicht. "WM_INITDIALOG" scheint die falsche Message zu sein.
Diese kommt viel zu früh.
C++:
BOOL FAR TElementBeschriftungDialog::MsgProc(HWND hWndDlg, UINT Message, WPARAM wParam, LPARAM lParam)
{
// select text in ctrl that has the focus
if (Message == WM_INITDIALOG)
{
//this->_hDlg = hWndDlg;
}
BOOL ret = TDialog::MsgProc(hWndDlg, Message, wParam, lParam);
return ret;
}
Viele Grüße.
fujitsufan