七月工作笔记 7.7 - 7.11
1. vs第二次單步調(diào)試崩潰。。
一開始不知道為什么,重裝無數(shù)次。
。
后來發(fā)現(xiàn)是VAssistX 插件的問題。
。。
將下載下來的插件包中的VA_X.dll ?復(fù)制到VAssistX 的安裝路徑下就可以。
2. 發(fā)現(xiàn)了一個非常棒的vs配色方案的站點 ? http://studiostyl.es/
3. sendmessage和postmessage的差別
PostMessage僅僅負(fù)責(zé)將消息放到消息隊列中,不確定何時及是否處理
SendMessage要等到受到消息處理的返回碼(DWord類型)后才繼續(xù)
PostMessage運(yùn)行后立即返回
SendMessage必須等到消息被處理后才會返回。
4. MakeLower()函數(shù)
像這樣改變大寫和小寫的函數(shù),除非一下子全然改變。否則現(xiàn)用現(xiàn)改,不要過早調(diào)用此類函數(shù)。
5. 消息中想要發(fā)送字符串,用以下方式
發(fā)送端:
CString relatedID = _T("123");
GetParent()->SendMessage(WM_MYHIDE,WPARAM(TRUE),(LPARAM)relatedID.GetBuffer(20));
reatedID.releaseBuffer();
在消息響應(yīng)端:
void CDrawProgramDoc::SetYcProperty(WPARAM wParam)
{
?CString str((TCHAR*)lParam);
}
6. PostMessage和::PostMessage的差別
PostMessage的定義是這種:
_AFXWIN_INLINE BOOL CWnd::PostMessage(UINT message, WPARAM wParam, LPARAM lParam)
{ ASSERT(::IsWindow(m_hWnd)); return ::PostMessage(m_hWnd, message, wParam, lParam); }
所以在Release下。它和::PostMessage全然等價。所以能用PostMessage就不要用::PostMessage了,由于前者少一個參數(shù),輸入快。曾經(jīng)我也有疑問,以為用PostMessage會損失效率。結(jié)果未必,MFC的東西并不總是慢。有些時候他們與API等價的快。
PostMessage:不須要指定接收消息的窗體,可是消息僅僅能發(fā)往本窗體
::PostMessage:須要指定接收消息的窗體,可是消息能夠發(fā)往隨意窗體
7. 模態(tài)對話框與非模態(tài)對話框的差別
一般來說,Windows應(yīng)用程序中。對話框分為模態(tài)對話框和非模態(tài)對話框兩種。二者的差別在于當(dāng)對話框打開時,是否同意用戶進(jìn)行其它對象的操作。
模態(tài)對話框壟斷了用戶的輸入。
當(dāng)一個模態(tài)對話框打開時,用戶僅僅能與該對話框進(jìn)行交互,而其它用戶界面對象收不到輸入信息。模態(tài)對話框下。用戶須要操作目標(biāo)對話框就必須先操作模態(tài)對話框。
用戶對模態(tài)對話框的處理如圖所看到的。
模態(tài)對話框的處理過程
模態(tài)對話框的處理過程
非模態(tài)對話框(Nonmodal Dialogue Box。又叫做無模式對話框),與模態(tài)對話框不同。當(dāng)用戶打開非模態(tài)對話框時。依舊能夠操作其它窗體。
建立模塊對話框通常調(diào)用DoModal()這種方法,而非模態(tài)對話框則調(diào)用Create()和ShowWindow()這兩個函數(shù)。
8.遇到一個奇妙錯誤。
。winocc.cpp 329行
錯誤本來是這種,有這么一段代碼:
//消息函數(shù)
LRESULT CPESetToolDlg::OnSocketGetInstallList(WPARAM wParam, LPARAM lParam)
{
?//發(fā)消息給進(jìn)度條,讓他一下子跑完
?PostMessage(WM_PROGRESS_STEP_SEND, PROGESS_RANGE_NUM / 1, 0);
?//定義一個dlg
?CApkInstallDlg apkID;
?apkID.SetApkList((CSTRING_LIST*)wParam);
?//顯示dlg
?return apkID.DoModal();
}
單步調(diào)試的時候發(fā)現(xiàn)。僅僅有在DoModal() 的時候才崩潰,接著調(diào)試發(fā)現(xiàn)不正確,是在消息函數(shù)中崩潰的。
。
后來發(fā)現(xiàn),假設(shè)在PostMessage以下讓他彈一個框就沒問題。。只是還是不知道怎么解決這個問題,后來發(fā)現(xiàn)。是由于消息這個東西。在隊列里面,運(yùn)行順序非常亂,不能用post,所以就改成了send,採用堵塞的方式,。。結(jié)果還是不行,后來發(fā)現(xiàn),原來的send之后進(jìn)入的消息函數(shù)里面還有個post。。我想了想。。僅僅好又重寫了一個函數(shù)。。- -#。。
我發(fā)現(xiàn)如今我干的最多的事就是重寫函數(shù)了。
另外有篇文章寫得不錯。能夠看看:http://hi.baidu.com/vc_net/item/82e10f0c4a1e776dd55a113f
轉(zhuǎn)載于:https://www.cnblogs.com/liguangsunls/p/7079101.html
總結(jié)
以上是生活随笔為你收集整理的七月工作笔记 7.7 - 7.11的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Web Api 转
- 下一篇: SSAS parent/child di