比如說我修改了一個靜態文本控制元件的文本,舊文本和新文本會同時出現,這是時候就需要重繪了Invalidate();
怎么才能實作只重繪這個控制元件,而不是整個對話框
uj5u.com熱心網友回復:
GetParent()->GetDlgItem(btnID)->Invalidate();為毛這樣寫沒效果,不會重繪啊?
GetParent()->Invalidate();
只能這樣重繪整個對話框???
uj5u.com熱心網友回復:
Invalidate默認引數是真還是假來著?改一下引數試試呢?uj5u.com熱心網友回復:
SetWinbowText () 后,控制元件自己會 重繪, 不需要 Invalidate();如果 視窗已經無效 可以用Validate();要使視窗有效
uj5u.com熱心網友回復:
如{// SetFont() will InvalidateRect !! Then program be recurcive .
pWnd->SetFont(&m_objFntEdt);
pWnd->ValidateRect(0);
}
uj5u.com熱心網友回復:
GetParent()->Invalidate();可以生效GetParent()->GetDlgItem(btnID)->Invalidate();這句沒達到預期重繪btnID控制元件的目標
所以我認為和默認引數無關
uj5u.com熱心網友回復:
又如// do not draw all Ctls !
#if 1 // if 0 ,see "To Do"
CWnd* pWnd = GetTopWindow();// child window
while(pWnd != NULL)
{
// afxDump << pWnd->GetDlgCtrlID() << "\n";
// 1005 1000 1001 1002 1003 1004 1006 1007 1010 1011 1008 1009 1012
// 1005 = IDC_STATIC1 TabOrder=1
pWnd->GetClientRect(&rc);
pWnd->ValidateRect(&rc);
pWnd = pWnd->GetNextWindow();
}
#endif
uj5u.com熱心網友回復:
我這是打個比方,我有其他地方需要用到指定控制元件的重繪,比如定義了一個二維陣列,點擊一個按鈕后,文本根據這個按鈕ID,發生變更;這個時候就需要重繪了,我還有個按鈕圖片也要重繪,不好描述,就不提了uj5u.com熱心網友回復:
而且SetWinbowText ()后,原來的文本還顯示在對話框背景上uj5u.com熱心網友回復:
很多問題 都是 自繪 引起 的 !uj5u.com熱心網友回復:
試試(GetParent()->GetDlgItem(btnID))->Invalidate();
uj5u.com熱心網友回復:
好像括號不能跨越->吧?識別成(GetParent(),然后報錯了
GetParent()->GetDlgItem(btnID)->Invalidate();是有這種用法的嗎?我試過很多次,一直以來都是不生效的,不知道為啥
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/250337.html
標籤:界面
上一篇:imwrite存盤圖片問題
