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

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

Release編譯后,點確定,然后點確定或者退出什么的就會當掉,為什么?

Release編譯后,點確定,然后點確定或者退出什么的就會當掉,為什么?

PHP
MYYA 2023-04-22 22:18:30
我創建一個基于對話框的程序,在Debug下執行一切正常,但是Release編譯后,點確定,然后點確定或者退出什么的就會當掉。誰知道為什么?謝謝了編譯器VC++6.0代碼就是框架生成,然后增加的如下代碼WM_LOG消息定義消息影射代碼g_hWnd 是HWND類型全局變量OnOK(){g_hWnd = GetSafeHwnd();DWORD dwThreadID;CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE)TSer,(LPVOID)this, 0, &dwThreadID );}//線程函數DWORD TSer( LPVOID dwParam ){while ( 1 ){::SendMessage( g_hWnd, WM_LOG, 0, 0 );Sleep( 5000 );}return 0;}//WM_LOG消息響應函數void CTeststDlg::OnLog( LPCTSTR strLog ){}
查看完整描述

2 回答

?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

正確的接受窗口消息應該這樣定義...
頭文件 xx.h中
afx_msg LRESULT OnLog(WPARAM wParam,LPARAM lParam);
要和其它AFX_MSG函數寫一起
然后XXX.CPP
LRESULT CTeststDlg::OnLog(WPARAM wParam,LPARAM lParam)
{
.......
return 0;
}
//在消息響應地方這樣寫
ON_MESSAGE(WM_LOG,OnLog) 
你那樣的接收消息函數在VS中無法編譯在VC6.0中雖然能編譯但會出錯!!
如果還有問題可以使用一下CWinThread


查看完整回答
反對 回復 2023-04-26
?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

主程序退出時,你的線程沒有退出啊 
線程找不到老爸了,并且主程序退出后,g_hWnd所代表的窗體是否還存在,如果不存在,肯定宕掉,所以發送消息之前一定要檢查g_hWnd是否還存在
設置一個BOOL變量,在OnOK設置為TRUE,在OnCancel設置為FALSE
在線程函數的循環中檢查該BOOL變量,如果是FALSE就退出

查看完整回答
反對 回復 2023-04-26
  • 2 回答
  • 0 關注
  • 125 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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