if-Abfrage in OnPaint



  • In der Funktion OnPaint bei einer dialogfeldbasierten Anwendung, die mit dem MFC-Anwendungs-Assistenten erstellt wurde, befindet sich folgender Code:

    if (IsIconic())
    {
    	CPaintDC dc(this);
    
    	SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
    
    	int cxIcon = GetSystemMetrics(SM_CXICON);
    	int cyIcon = GetSystemMetrics(SM_CYICON);
    	CRect rect;
    	GetClientRect(&rect);
    	int x = (rect.Width() - cxIcon + 1) / 2;
    	int y = (rect.Height() - cyIcon + 1) / 2;
    
    	dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
    	CDialog::OnPaint();
    }
    

    Was muß passieren, damit die Bedingung if (IsIconic()) eintritt? Ich habe gelesen, daß das was mit dem Minimieren zu tun hat, aber ich habe den Debug-Modus gestartet und in die Bedingung einen Breakpoint gesetzt. Trotzdem konnte ich machen, was ich wollte. Das Programm hat immer den else-Zweig gewählt.
    Was muß ich also tun, damit er mal in die if-Anweisungen reingeht?



  • Hab ich mich auch schon gefragt, und dann hab ich heute endlich dannach gesucht und das gefunden: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/pantdraw_0gxj.asp



  • hmmm, aber auch wenn man das class icon auf NULL setzt, liefert IsIconic nie TRUE zurück. 🙄 🙄


Anmelden zum Antworten