2015-02-23 74 views
0

我想在VC++中製作一個MFC SDI應用程序,以便在單擊相應按鈕時繪製不同的形狀。我們在OnDraw()函數內編寫了我們的代碼。但是Ondraw會自動調用運行該應用程序。我們希望只在各個按鈕的onclick上調用它。我們如何繼續......?在MFC SDI應用程序中調用OnDraw

回答

0

你不能防止OnDraw只在你按下按鈕時被調用。

WM_PAINT到達時調用視圖中的OnDraw,並要求窗口重新繪製自己。不執行OnDraw將導致根本沒有任何東西被繪製。

當您的應用程序被最小化並再次最大化時,或當窗口大小改變時,OnDraw也會被調用。

此外,我不能想一個場景,我只想在按下按鈕時進行繪製。你需要更精確。這裏。

+0

我想顯示基於鼠標點擊不同的形狀。例如,如果用戶點擊正方形,應繪製正方形。所以繪製的代碼是用onDraw寫的。所以如何在點擊時只繪製特定的形狀。 – 2015-02-23 10:16:27

+0

您應該在繪圖和創建之間做出區別。在你看來你創造一個形狀。之後,你必須繪製它。在doneon OnDraw中繪製。創建通常在命令處理程序內完成。 – xMRi 2015-02-23 10:35:32

0

OnDraw,就像xMRi所說的那樣,被框架調用......但是如果只想在點擊按鈕時繪製某些東西,爲什麼不創建成員變量,單擊按鈕時的設置,並在OnDraw執行時得到計數?

void CYourAppView::OnDraw(CDC* pDC) 
{ 
    // MFC code 
    if(m_bButtonWasClicked) 
    { 
     // draw what ever you want 
    } 
} 
0
  1. 當一個形狀按鈕,點擊設置會記住你想畫什麼樣的一個成員變量。
  2. 呼叫無效。這將導致OnDraw被框架調用。
  3. 在OnDraw中檢查成員變量並繪製形狀。

您必須允許OnDraw在每次由框架調用它時進行繪製。這是如何窗口圖像恢復後,被揭露,unminimized,調整大小等。