根據您的喜好調整對話方塊中的控制項的大小 位置

2022-02-12 14:55:12 字數 2029 閱讀 5383

this->addresizablectrl(null);
或 隱藏,複製code

this->addresizablectrl(null, _t("

r"));

如果你不確定,將其中乙個新增到cyourdlg: oninitdialog句子前()返回true;看到效果。當然,前兩個步驟在正確使用需要編譯的**。 的興趣點 現在我將討論一些關於如何避免控制閃爍時盡可能的對話方塊。那些只是想使用類可以跳過本節。 第乙個改進是重繪標誌設定為false之前控制後,恢復真正的移動控制如下: 隱藏,複製code

pctrl->setredraw(false);

pctrl->movewindow(&rcctrl);

pctrl->setredraw(true);

(原始**是不同的可見狀態控制。) 第二個改進是清除舊的矩形(例如,rcctrlold)控制。而不是使用這個→invalidaterect(及rcctrlold),我們只是更新區域屬於rcctrlold同時不屬於rcctrl控制保持目前的地方。這是實現以下功能: 隱藏,複製code

void csizingdialog::invalidatectrlborder(     //

xr: erase lprectold - lprectnew

lpcrect lprectold, lpcrect lprectnew, bool berase /*

= true*/)

還有當你移動groupbox控制問題。前兩個步驟不能解決這些問題。有一些舊的痕跡留在新groupbox控制。但是如果你不運用這兩個步驟,groupbox控制和其他控制groupbox控制將閃爍嚴重。 我的解決方案是把groupbox控制面積為9部分。每個部分都是乙個單獨的矩形。所做的工作是以下函式: 隱藏,複製code

void getgroupboxrgn(const cwnd* pgbox, const cwnd* pparent, crect* prc)
中華人民共和國與9個元素指向乙個繪圖用的矩形類陣列。中國元素的意義groupbox說明如下,0表示整個矩形。 隱藏,複製code

//        ______________9____________

// | |

// 7 8

// |_____5_____[ 4 ]_____6_____|

// | |

// | |

// | |

// | |

// 2 3

// | |

// | |

// | |

// | |

// |_____________1_____________|

注意,7日,8日和9日的一部分groupbox控制不存在在groupbox預設風格。 所以可以視為groupbox 9「控制」。每個人都可以應用前兩個步驟,問題已經解決了。但我不認為這是乙個好的解決方案。 的24種典型控制,以下型別的控制仍然閃爍或多或少地在移動即使應用兩個步驟。它們是: comboboxlistboxslider controllist controltree controltab控制 需要更多的努力來解決這個問題。 修訂歷史 2023年10月8日- v1.2:關鍵問題已經固定在類中使用乙個非模態的對話方塊。2023年9月7日- v1.1:四個語句由機器不支援修改,所以類現在可以用在乙個專案開發的機器。2023年9月5日- v1.0 本文**於:

VC中對話方塊的「所有」控制項?

初學vc,接觸最多的自然是dialog based了。我知道每個對話方塊模版都是乙個控制項容器,既然是容器,就應該有經典的for each操作吧。比如,我如果想讓對話方塊中所有控制項都失效,那麼這個 所有 怎麼表示呢?怎麼程式設計實現呢?查cdialog類的msdn,貌似沒有這樣的成員函式可以得到乙...

獲取對話方塊中的控制項指標

1.採用getdlgcontrol獲取控制項指標 cpp view plain copy 以ie控制項為例 ccomptrspiwebbrowser2 getdlgcontrol idc explorer,iid iwebbrowser2,void spiwebbrowser2 2.通過atlaxg...

獲取對話方塊中的控制項指標

1.採用getdlgcontrol獲取控制項指標 cpp view plain copy 以ie控制項為例 ccomptrspiwebbrowser2 getdlgcontrol idc explorer,iid iwebbrowser2,void spiwebbrowser2 2.通過atlaxg...