亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于在VC++中的goto的問題。請看下面的例子

關于在VC++中的goto的問題。請看下面的例子

Go C
寶慕林4294392 2021-09-14 11:07:44
asd://這兒有一段代碼……LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){PAINTSTRUCT ps;HDC hdc;switch (message){case WM_PAINT://內容省略break;case WM_DESTROY://內容省略break;case WM_LBUTTONDOWN://內容省略goto asd;break;default:return DefWindowProc(hWnd, message, wParam, lParam);}return 0;}這樣有問題嗎?能否從消息處理中轉跳到消息處理外的內容?
查看完整描述

2 回答

?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

有問題的

goto就這個語句處理來看,可以這么執行,但是你這樣做,是有風險的。

你的代碼缺的太多,但是大體看了一下,
CALLBACK WndProc這是一個回調,
它的調用源位于一個線程,假設叫A,那么實際上從內部的調度機制來看,
CALLBACK WndProc這個回調函數當前是運行在線程A上的。

而此時你直接goto到asd: 這個地方,
如果asd運行于另一個線程(并且一般回調的調用源和定義源往往不在一起,所以這種可能性很大),假設叫B,那么會出現一些風險:
如果B優先級大于A,會造成調度發生,A被強制掛起
如果B優先級等于A,會造成調度發生,調度內部會進行時間片輪循
如果B優先級小于A,線程B會進入Active棧

所以,不建議這么做

查看完整回答
反對 回復 2021-09-23
?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

當左鍵按下去 要返回消息循環去確認左鍵按下是是點的哪兒是PAINT還是DESTROY 我是這樣想的 因為這里面還有沒有寄存鼠標當前位置的的那個參數

查看完整回答
反對 回復 2021-09-23
  • 2 回答
  • 0 關注
  • 320 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號