sendmessage(WM 为什么该WM_PAINI消息没能让窗口重绘?

\u5982\u4f55\u8ba9\u7a97\u53e3\u91cd\u753b\u2014\u2014Invalidate()\u3001SendMessage(WM_PAINT)\u548cUpdateWindow()

@1.Invalidate()\u51fd\u6570\u53ea\u662f\u6807\u8bb0\u7a97\u53e3\u533a\u57df\u9700\u8981\u91cd\u753b\uff0c\u4f46\u4e0d\u610f\u5473\u7740\u7a97\u53e3\u4f1a\u88ab\u76f4\u63a5\u91cd\u753b\u3002\u5b83\u53ea\u4f1a\u5728\u4e0b\u4e00\u4e2aWM_PAINT\u6d88\u606f\u88ab\u63a5\u6536\u5230\u65f6\uff0c\u8c03\u7528OnPaint()\u624d\u88ab\u91cd\u753b\u3002
@3.\u5f53\u7a97\u53e3\u533a\u57df\u5728\u88abInvalidate()\u6389\u540e\uff0c\u5e76\u4e14\u5728WM_PAINT\u6d88\u606f\u63a5\u6536\u5230\u4e4b\u524d\uff0c\u6211\u4eec\u4ecd\u7136\u53ef\u4ee5\u8c03\u7528ValidateRect(NULL)\u6765\u53d6\u6d88\u6389\u8fd9\u6b21\u7a97\u53e3\u91cd\u753b\u3002
@4.\u5f53\u4f60\u9700\u8981\u8ba9\u7a97\u53e3\u5728Invalidate()\u540e\u7acb\u5373\u91cd\u753b\uff0c\u6807\u51c6\u7684\u505a\u6cd5\u5e94\u8be5\u662fInvalidate()\u4e4b\u540e\u9a6c\u4e0a\u8c03\u7528UpdateWindow()\uff0c\u8fd9\u6837\u7a97\u53e3\u4f1a\u7acb\u5373\u628a\u81ea\u5df1\u91cd\u753b\u4e00\u6b21\u3002
@5.UpdateWindow()\u7684\u5b9e\u73b0\u65b9\u5f0f\uff0c\u4ecd\u7136\u662f\u5bf9\u7a97\u53e3\u7684Client area\u53d1\u9001\u4e00\u4e2aWM_PAINT\u6d88\u606f\uff0c\u8fd9\u4e2a\u673a\u5236\u4e5f\u53ef\u4ee5\u7528SendMessage(WM_PAINT)\u505a\u5230\u3002

case WM_PAINT:
HDC hDC;
PAINTSTRUCT ps;
hDC = BeginPaint(hwnd,&ps);
TextOut(hDC,0,50,"www.baidu.com",strlen("www.baidu.com"));
EndPaint(hwnd,&ps);
break;
\u4f60\u5bf9\u6bd4\u770b\u4e0b\u5427\u3002

窗口只有在无效的时候才会重绘,其实你不发送消息窗口也会不断地执行OnPaint()这个函数,所以你最小化窗口时窗口无效,再打开后窗口自动重绘,无需发送消息,你也可以用另一个窗口盖住你的窗口再移开,窗口也绘重绘.
那么你若想重绘窗口就首先使窗口无效,具体方法,可以使用Invalidate, InvalidateRect(Rect)这两个函数,前者重绘整个窗口,与RedrawWindow功能一样,后者重绘指定的区域(由Rect决定).

送消息没用,必须指定更新区
使用Invalidate, InvalidateRect(NULL).
RedrawWindow(NULL)
更新全部客户区,(当然也可以指定要更新的区域)

sendmessage(WM_PAINT)
只是在内存里画好了
但没有画到视图里,接着要更新窗口,InvalidateRect(hWnd,&rect,true);

你是老大,你厉害,你竟然敢对窗口发送WM_PAINT?你问过比尔盖兹同意没有?WM_PAINT是你可以随便发的了的吗?

  • SendMessage()涓 WM_GETTEXT鍙傛暟鐨勫洶鎯
    绛旓細TTreeView:(寮曠敤CommCtrl)SendMessage(TreeView.Handle,TVM_SETBKCOLOR,0,RGB(255,0,0)); 璁剧疆TV鑳屾櫙棰滆壊 SendMessage(Button.Handle,WM_LBUTTONDOWN,0,0); 榧犳爣宸﹂敭鎸変笅 SendMessage(Button.Handle,WM_LBUTTONUP,0,0); 榧犳爣宸﹂敭鎶捣 SendMessage(Edit.Handle,WM_SETTEXT,255,Integer(PChar(...
  • 鎬庝箞鐢sendmessage()鍙戦佷袱涓
    绛旓細绗3涓拰绗4涓垜浠彲浠ョ悊瑙f垚:浣犺鍙戦佽繖涓秷鎭殑闄勫姞鍙傛暟.姣斿鍚,浣犵幇鍦ㄨ鍙戦2涓暟鍊煎埌hWnd鍘,杩欎釜娑堟伅鏄WM_SETTEXT(涓轰簡鏂逛究澶勭悊,鎴戜滑鍦ㄥ彂閫佽繖涓秷鎭,浣犲彂閫佹暟鎹彲浠ュ弬鑰僕M_COPYDATA绛),2涓暟瀛楁槸:100,200鐨勮瘽:SendMessage(hWnd, WM_SETTEXT, 100锛 200);鐒跺悗鍦ㄤ綘鐨刪Wnd绐楀彛鐨勬秷鎭鐞(澶勭悊WM_...
  • VB涓SendMessage鍜宲ostmessage鐨勮缁嗙敤娉曘
    绛旓細姣斿锛 Dim msg As Microsoft.WindowsCE.Forms.Message = _ Microsoft.WindowsCE.Forms.Message.Create(MsgWin.Hwnd, _ MsgWindow.WM_CUSTOMMSG, New IntPtr(e.X), New IntPtr(e.Y)) MessageWindow.SendMessage(msg)MsgWin.Hwnd 锛氳〃绀烘秷鎭殑鍙ユ焺銆侻sgWindow.WM_CUSTOMMSG 锛...
  • vc++ SendMessage鍜WM_SETTEXT闂.
    绛旓細void CFsaDlg::OnButton1() { HWND hwnd,Ahwnd; hwnd=::FindWindow(NULL,"Form1"); Ahwnd=::FindWindowEx(hwnd,0,"ThunderRT6TextBox",""); CString s; s="鍛靛懙"; ::SendMessage(Ahwnd,WM_SETTEXT,s,0); } hwnd,Ahwnd閮借兘鎴愬姛鑾峰緱鍙ユ焺. ... 灞曞紑 void CFsaDlg::OnButton1(){ ...
  • SendMessage(hWnd,WM_SYSCOMMAND,SC_KEYMENU,(WPARAM)0x4c);杩欏彞鏈変粈...
    绛旓細SendMessage() 鏄笉鍚岀獥浣撻棿鍙戦佹秷鎭殑锛宧Wnd 鏄獥浣撳彞鏌勶紱 WM_SYSCOMMAND 褰撶敤鎴烽夋嫨绐楀彛鑿滃崟鐨勪竴鏉″懡浠ゆ垨褰撶敤鎴烽夋嫨鏈澶у寲鎴栨渶灏忓寲鏃堕偅涓獥鍙d細鏀跺埌姝ゆ秷鎭紱SC_KEYMENU 鏄郴缁熻彍鍗曡皟鐢ㄨЕ鍙戜簨浠躲傝繖涓殑浣滅敤搴旇鏄繑鍥炵獥鍙h彍鍗曠殑銆
  • 濡備綍鐢SendMessage()鍑芥暟浼犻掑瓧绗︿覆
    绛旓細鍑芥暟浼犻掑瓧绗︿覆 --- 涓銆佷袱涓弬鏁伴兘甯﹀瓧绗︿覆鐨勫舰寮忥細void CAaaDlg::OnButton1(){char p1 = "Willis";char p2 = "VCHelp";SendMessage(WM_CURRENTINFO,(WPARAM)p1,(LPARAM)p2 );}LRESULT CAaaDlg::OnCurrentInfo(WPARAM wParam,LPARAM lParam ){MessageBox((LPSTR)wParam,(LPSTR)lParam,0...
  • 濡備綍浣跨敤SendMessage鍑芥暟瀹炵幇妯℃嫙榧犳爣鐐瑰嚮鎸夐挳浜嬩欢
    绛旓細SendMessage(hWnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(x, y));SendMessage(hWnd, WM_LBUTTONUP, NULL, MAKELPARAM(x, y));hWnd 鏄彂閫佺殑鐩爣鎺т欢鍙ユ焺锛屾瘮濡傛槸鎸夐挳閭e氨鎸夐挳鍙ユ焺銆倄銆亂 鏄紶鏍囩浉瀵逛簬璇ユ帶浠跺鎴峰尯宸︿笂瑙掔殑鍧愭爣锛屾瘮濡 0銆0 灏辫〃绀哄湪鎸夐挳鐨勬渶宸︿笂瑙掔偣鍑汇
  • 鎬庝箞鐢SendMessage鍚戝叾浠栫獥鍙e彂閫佹寜閿
    绛旓細濡傛灉鏄竴涓寜閽殑璇濓紝閭d箞鐩存帴鍙戦佷竴涓偣鍑荤殑娑堟伅鍗冲彲锛 SendMessage(hWnd, BM_CLICK, 0, 0); 濡傛灉涓瀹氳鍙戦 Enter 娑堟伅锛屽彲浠ヨ繖鏍凤細 SendMessage(hWnd, WM_KEYDOWN, VK_RETURN, 0); SendMessage(hWnd, WM_KEYUP, VK_RETURN, 0); hWnd 浠h〃鎸夐挳 ...
  • SendMessage, postmessage妯℃嫙榧犳爣宸﹂敭
    绛旓細SendMessage(hWnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(x, y));SendMessage(hWnd, WM_LBUTTONUP, NULL, MAKELPARAM(x, y));hWnd 鏄彂閫佺殑鐩爣鎺т欢鍙ユ焺锛寈銆亂 鏄紶鏍囩浉瀵逛簬璇ユ帶浠跺鎴峰尯宸︿笂瑙掔殑鍧愭爣锛屽 0銆0 灏辫〃绀哄湪鐩爣鍙ユ焺鐨勬帶浠跺乏涓婃柟鐐瑰嚮锛岃岄潪灞忓箷鍧愭爣銆
  • [姹傚姪]濡備綍浣跨敤SendMessage鍜WM_KEYDOWN鍚戝叾浠栫獥鍙e彂閫佹寜閿
    绛旓細鑰岄偅涓┖鏍奸偅涓及璁℃槸浣犵殑浠g爜閿欎簡锛屼綘鍙互杩欐牱鍐欒瘯璇曪細SendMessage(htextbox, WM_CHAR, 鈥榎t鈥, 0);濡傛灉浣犳兂锛屽湪鍒汉绋嬪簭鐨勮繘绋嬮噷闈⑩滀负鎵娆蹭负鈥濓紝寤鸿浣犲涔犱竴涓嬮挬瀛愶紙hook锛夛紝灞閮ㄩ挬瀛愬拰鍏ㄥ眬閽╁瓙锛屽緢寮哄ぇ鍝︼紝杩欐牱浣犲嚑涔庡彲浠ュ仛浠讳綍鑷繁鎯冲仛鐨勪簨鎯呬簡 锛屼笉杩囪淇濇姢濂借嚜宸辩殑浠g爜锛屽皬蹇冩潃姣掕蒋浠 锛...
  • 扩展阅读:www.sony.com.cn ... mindmaster永久免费版 ... 94色域tn屏幕 ... www.968777.cn ... 国产xboxone ... 国产ea888 ... 天堂switch官网地址 ... apple日本网站 ... uussee奇兵 ...

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