用MFC能实现局部重绘吗? MFC如何重绘对话框 效果如图

MFC \u867d\u7136Invalidate\u53ef\u4ee5\u91cd\u7ed8\u7a97\u53e3\uff0c\u4f46\u662f\u5b83\u662f\u5148\u628a\u5c4f\u5e55\u5f04\u767d\u518d\u91cd\u753b

\u51fa\u73b0\u95ea\u70c1\u7684\u539f\u56e0\u4e0d\u662f\u56e0\u4e3a\u5f04\u767d\u518d\u753b
\u800c\u662f\u4e00\u6beb\u79d2\u5185\u5237\u65b0\u6b21\u6570\u8fc7\u591a
\u5982\u679c\u4f60\u670950\u4e2a\u5bf9\u8c61\u8981\u753b\u5230dc\u4e0a \u5b83\u5c31\u4f1a\u5237\u65b050\u6b21,\u5fc5\u7136\u4f1a\u95ea\u70c1
\u9632\u6b62\u95ea\u70c1\u7684\u65b9\u6cd5\u662f\u7528\u53cc\u7f13\u51b2
\u65e2\u5148\u628a\u6240\u6709\u5bf9\u8c61\u753b\u5230dc2\u4e0a,\u5168\u90e8\u753b\u597d\u540e\u518d\u4e00\u6b21\u4ecedc2\u753b\u5230dc\u4e0a
//CPaintDC dc(this);
//CDC dc2;
//dc2.createcompatableDC(&dc);

\u91cd\u8f7dCDialog\u7c7b\uff0c\u54cd\u5e94WM_NCPAINT\u6d88\u606f\uff0cNC\u662fNonclient\uff0c\u975e\u5ba2\u6237\u533a\u7684\u610f\u601d\u3002\u5728OnNcPaint\u4e2d\u753b\u7a97\u53e3\u7684\u6837\u5b50\uff0c\u6ce8\u610f\u4e0d\u8981\u8c03\u7528\u57fa\u7c7bCDialog\u7684OnNcPaint\uff0c\u5426\u5219\u53c8\u4f1a\u753b\u4e0a\u9ed8\u8ba4\u7684\u5bf9\u8bdd\u6846\u8fb9\u6846\u3002

\u53e6\u5916\uff0c\u5982\u679c\u8bbe\u8ba1Windows Vista\u6216\u8005Windows 7\u7684\u7a0b\u5e8f\uff0c\u53ef\u4ee5\u53c2\u8003\u5fae\u8f6f\u7684\u8fd9\u7bc7\u6587\u7ae0\uff0c\u4ed6\u63cf\u8ff0\u4e86\u60f3Word 2007\u4ee5\u53caInternet Explorer 7\u8fd9\u6837\u7684\u754c\u9762\u662f\u5982\u4f55\u5b9e\u73b0\u7684\uff1a
http://msdn.microsoft.com/en-us/library/bb688195(v=vs.85).aspx

PS.\u8d34\u56fe\u7684\u7a97\u53e3\u4e2a\u4eba\u89c9\u5f97\u5f88\u4e0d\u597d\u770b\u3002\u3002

可以的
用InvalidateRect(CRect &rect);//重绘一块Rect矩形区域
我当时写连连看的时候也是遇到闪烁这个问题,不过就算用
InvalidateRect(&rect);如果把rect设成整块大矩形,闪烁的问题一样存在.我是用重绘一小块图形(就是每个小图片)的区域来解决闪烁的.

  • 鐢∕FC鑳藉疄鐜板眬閮ㄩ噸缁樺悧?
    绛旓細鍙互鐨 鐢↖nvalidateRect(CRect &rect);//閲嶇粯涓鍧桼ect鐭╁舰鍖哄煙 鎴戝綋鏃跺啓杩炶繛鐪嬬殑鏃跺欎篃鏄亣鍒伴棯鐑佽繖涓棶棰橈紝涓嶈繃灏辩畻鐢 InvalidateRect(&rect);濡傛灉鎶妑ect璁炬垚鏁村潡澶х煩褰,闂儊鐨勯棶棰樹竴鏍峰瓨鍦.鎴戞槸鐢ㄩ噸缁樹竴灏忓潡鍥惧舰(灏辨槸姣忎釜灏忓浘鐗)鐨勫尯鍩熸潵瑙e喅闂儊鐨.
  • MFC鍗曟枃妗e簲鐢ㄧ▼搴,鍒╃敤鏂囦欢--->鎵撳紑-->鎵撳紑涓涓枃浠,浼氫娇瑙嗙被瀹㈡埛鍖...
    绛旓細棣栧厛璇达紝閲嶇粯鏄繀鐒剁殑銆備絾杩欎釜閲嶇粯鍒嗕袱绉嶆儏鍐点傛棤璁虹偣鍑烩滄墦寮鈥濊繕鏄濆彇娑堚滐紝鍥犱负瀵硅瘽妗嗛伄鐩栦簡瑙嗗浘鍖哄煙锛屽璇濇鍏抽棴鍚庯紝琚鐩栫殑鍖哄煙灏变細浜х敓鍖哄煙閲嶇粯銆傛洿閲嶈鐨勬槸锛屽鏋滀綘鐐瑰嚮浜嗏濇墦寮鈥滐紝鍦∕FC鍗曟枃妗g▼搴忎腑锛岃繖鏄噸鏂板缓绔嬩簡涓涓柊鐨勬枃妗h鍥炬ā鏉匡紝鍘熸湁鐨勮鍥惧凡缁忚閿姣侊紝杩欎釜蹇呴』瑕佲濋噸缁樷滐紒杩欏凡缁...
  • 鍏充簬MFC涓獥鍙閲嶇粯鐨勯棶棰
    绛旓細浠讳綍绐楀彛绋嬪簭鐨閲嶇粯锛堝寘鎷MFC绋嬪簭锛夛紝閮芥槸鈥滈渶瑕佲濈殑鏃跺欓噸缁橈紝涓嶉渶瑕佹垨鑰呮病鏈夊己鍒堕噸缁樺懡浠ょ殑鏃跺欙紝鏄笉浼氶噸缁樼殑锛屽洜姝ゆ病鏈夆滈鐜団濈殑姒傚康銆侻FC绋嬪簭锛屾枃妗h鍥剧粨鏋勭殑锛岃鍥剧被鐨凮nDraw鏄滈噸缁樻秷鎭搷搴斿嚱鏁扳濓紝璇撮噸缁樼殑鍑芥暟鏄笉鍑嗙‘鐨勩傝屽璇濇鎴栬呮櫘閫氱獥鍙g▼搴忥紝閲嶇粯鍝嶅簲鍑芥暟涓篛nPaint锛堝叾瀹濾iew瑙嗗浘涔熸湁杩...
  • MFC涓瀹炵幇绐楀彛閲嶇粯鐨勫绉嶆柟娉
    绛旓細杩樻湁InvalidateRect()鍜孶pdateWindow().浣咺nvalidate鏄娇寰楁暣涓獥鍙f棤鏁堬紝褰㈡垚鏃犳晥鐭╁舰锛岃孖nvalidateRect()鏄娇寰楁寚瀹氱殑鍖哄煙鏃犳晥锛孯edrawWindow()RedrawWindow()鍒欐槸鍏锋湁Invalidate()鍜孶pdateWindow()鐨勫弻鐗规с傚0鏄庣獥鍙g殑鐘舵佷负鏃犳晥锛屽苟绔嬪嵆鏇存柊绐楀彛锛岀珛鍗宠皟鐢╓M_PAINT娑堟伅澶勭悊銆
  • 鎬庢牱鍗忚皟濂MFC涓璷ndraw涓巓ntimer鐨勫叧绯
    绛旓細OnTimer 鏄畾鏃跺櫒鍑芥暟锛屾牴鎹渶瑕鍙互鍐欏叆鍒峰睆浠g爜锛屽鏋滄椂闂撮棿闅旀瘮杈冨皬鐨勮瘽 浼氭湁闂儊锛孫nDraw 鍑芥暟鍦ㄧ郴缁熷皢瑕佹樉绀烘椂璋冪敤锛屼絾涔熷彲鍦ㄧ被鐨勫叾浠栧嚱鏁颁腑璋冪敤浣跨獥鍙f棤鏁堢殑鍑芥暟锛堝invalidate锛夛紝涔熷彲浠ュ紩鍙閲嶇粯銆傚叿浣撹皟鐢ㄥ嚑娆℃牴鎹綘鐨勪唬鐮佽缃洿鏂板嵆鍙傚彟澶栫獥鍙h瑕嗙洊鎴栨棤鏁堢劧鍚庨噸鏂版樉绀烘椂鍙嚜鍔ㄥ紩鍙戦噸缁樸
  • 鍦ㄥ熀浜庡璇濇鐨MFC缂栫▼涓,鏈夋病鏈夎鍗曠嫭涓涓帶浠閲嶇粯鐨勬柟娉,
    绛旓細缁樺浘浣跨敤鍙岀紦鍐叉柟娉曪紝鍙互娑堥櫎闂儊锛屽埛鏂板彲浠ヨ嚜宸卞畾涓涓畾鏃跺櫒锛1s閲嶆柊璋冪敤涓娆$粯鍥惧嚱鏁
  • MFC:鍏充簬绐楀彛閲嶇粯鐨勯棶棰
    绛旓細1. OnDraw鍙礋璐e鎴峰尯鐨閮ㄥ垎锛屾墍鏈夌殑宸ュ叿鏍忥紝鑿滃崟鏍忛兘涓嶅睘浜庡鎴峰尯锛2. Windows铏界劧浼氬彂閫乄M_PAINT浣嗘槸浠栧苟涓嶄竴瀹氫細瑕佹眰閲嶇粯鍏ㄩ儴鐨勫唴瀹癸紝濡傛灉浣犲彧鏇存敼鐨勪竴鐐瑰ぇ灏忥紝閭d箞Windows鍙戦乄M_PAINT鐨勬椂鍊欎綘閫氳繃BeginPaint锛堣API鍑芥暟鐢MFC鑷姩璋冪敤锛夎幏寰楃殑澶辨晥鍖哄煙灏卞彧鏈夎繖涓ぇ灏忥紝鑰屽嵆渚夸綘鍦∣nDraw閲岄潰鐢讳簡鏁翠釜鍖哄煙...
  • mfc鎬庝箞璁╁師鏉ョ敾鐨勪笢瑗垮幓闄ゆ帀,灏辨槸缁欎粬瑕嗙洊鎺
    绛旓細鍏ㄩ儴娓呴櫎鍙互璋冪敤鑳屾櫙閲嶇粯 鍙︿竴绉嶅氨鏄敤SetROP2鍑芥暟锛屽皢鐢荤瑪棰滆壊璁剧疆鍜岃儗鏅浉鍚岋紝鎶婅鎿﹂櫎鐨勫浘鍍忛噸缁樹竴閬 鍏蜂綋鍙互鐪媘sdn鎴栬呭瓩閼殑mfc娣卞叆娴呭嚭
  • MFC閲嶇粯闈炲鎴峰尯闂
    绛旓細InvalidateRect()鐩存帴鎸囧畾鏃犳晥鍖哄煙閲嶇粯涓嶅氨鍙互浜嗭紝浣曞繀鏉ヤ釜闈炲鎴峰尯銆傚仛QQ杩欐牱鐨勶紝鐢ㄥ璇濇妯″紡锛屽啀鍔犲叆鍒楄〃鎺т欢涔嬬被鐨勶紝浣犻噸缁樻寚瀹氱殑鎺т欢鍖哄煙涓嶅氨瀹屼簡銆
  • MFC涓敤CDC绫閲嶇粯闂
    绛旓細p2) { pt1=p1; pt2=p2; } void CLine::DrawLine(CDC *pDC) { pDC->MoveTo(pt1); pDC->LineTo(pt2); } 瑕佷娇鐢ㄤ竴涓姩鎬佹暟缁勬潵淇濆瓨宸茬敾濂界殑绾挎锛屼负姝ゅ湪鏂囨。绫籆***Doc鐨勫ご鏂囦欢涓畾涔変笅闈㈢殑鎴愬憳鍙橀噺鍜屾垚鍛樺嚱鏁帮紝骞跺寘鍚畾涔夌被Line鐨勫ご鏂囦欢锛 #include "Line.h" #include //浣跨敤MFC绫...
  • 扩展阅读:一体化电磁流量计mfc ... 以下哪个不是amf的功能 ... mfc流量计说明书 ... 以下属于amf的功能是 ... 锅炉mft动作后如何处理 ... mf47型万用表 ... msm国内禁用是真的吗 ... mfc值得学吗 ... mfc有必要学吗 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网