日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

学习笔记总结(VC)

發布時間:2023/12/31 c/c++ 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习笔记总结(VC) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
總結這段時間科研過程中的學習到的一些知識和小技巧。

1。關于SendMessage發送CString的問題

方法1:

Send: CString *str = new CString ("aaa");

?????????????? hwnd->SendMessage(WM_USER,0,(LPARAM)str);

Recv:?? void myproc(.......)? //自定義消息處理函數

{????????? CString *pstr = (CString*)lparam;

??????????? .......

??????????? delete pstr; //注意此處要刪除前面send處new出來的CString????? }

方法2:

CString s="aaa";

hwnd->SendMessage(WM_USER,0,(LPARAM)(LPCTSTR)s);

Recv:?? void myproc(.......)? //自定義消息處理函數

{? LPCTSTR pstr=(LPCTSTR)lparam;

................??????? }

2。查找窗口FindWindow( a, b)

a 窗口類名,根據跟蹤看,VC中用“#32770”代替此參數,即可查找出所有彈出的窗口,一般情況下可作NULL。

b 窗口標題,正常查找某一個窗口,即可用此參數作唯一標識。

3。CEdit滑塊根據內容自動滾動

UpdateData(FALSE);???????? //注意更新控件

m_edit.LineScroll(m_edit.GetLineCount( ),0 );?? //參數一是行數,參數二是該行的字符位置;

注意:edit控件要設為multiline屬性。

用此方法,即可保證在輸入多行字符后,edit控件能自動滾動至最后一行。

?

要滾動CEdit,?? 下面幾種辦法都可以:??
? m_edit.SendMessage(?? WM_VSCROLL,?? SB_LINEDOWN,?? 0?? );??
? m_edit.LineScroll(?? 3,?? 3?? );??
? ::SendMessage(m_edit.m_hWnd,EM_LINESCROLL,3,12);?????
????
? 簡單的方法,讓字符在指定的行數顯示:??
? int?? index?? =?? m_edit.LineIndex(?? 5?? );??
? m_edit.SetSel(?? index,?? index?? );??
? m_edit.ReplaceSel(?? "dir"?? );

4。判斷程序是否已啟動

方法 1:

CYourApp::InitInstance()

{?CreateMutex(?? NULL,?? FALSE,?? "Application?? Mutex"?? );//?? 添加互斥量?,參數3自定義即可??
????
?if(GetLastError()==ERROR_ALREADY_EXISTS)??
?{??
??AfxMessageBox("程序以運行!");??
??return?? FALSE;??
?} }

方法 2 :查找到以后,激活程序到前臺,但FindWindow過程中,如果有同名的文件夾,而程序沒啟,文件夾窗口會被激活-_-||? 方法有些小問題待改進。

CYourApp::InitInstance()

{?CString? strCaption;??
?strCaption.LoadString(AFX_IDS_APP_TITLE);??
?CWnd* pwndFirst = CWnd::FindWindow(NULL, strCaption);??
?if (pwndFirst)??
?{??
??//?? another?? instance?? is?? already?? running?? -?? activate?? it??
??CWnd* pwndPopup = pwndFirst->GetLastActivePopup();??
??pwndFirst->SetForegroundWindow();??
??pwndFirst->ShowWindow(SW_SHOWNORMAL);??
??if(pwndFirst != pwndPopup)??
???pwndPopup->SetForegroundWindow();??
??return FALSE;??
?} }

5。CTreeCtrl傳遞參數問題

插入樹中的TVINSERTSTRUCT結構有參數,可通過lparam傳遞,也可通過SetItemData設置,并通過GetItemData獲取。

注意:傳遞的參數是指針值,所以要注意原始傳遞的參數的有效期,否則傳遞過去的即可能不存在而消失。

????????? 參數可以是普通的CString,也可以是結構指針。

???? TVINSERTSTRUCT tvInsert;
???? tvInsert.hParent = hParent;
???? tvInsert.hInsertAfter = NULL;
???? tvInsert.item.iImage = 0;
???? tvInsert.item.iSelectedImage = 0;
???? tvInsert.item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT | TVIF_PARAM;
???? tvInsert.item.pszText = (LPTSTR)(LPCTSTR)ph.Name; //標題
???? //tvInsert.item.lParam = (LPARAM)(LPCTSTR)ph.Num;? //指針傳值
????
???? HTREEITEM hSub = m_Infotree.InsertItem(&tvInsert);?
???? m_Infotree.SetItemData(hSub2,(DWORD)(LPCTSTR)ph.Num);? //設置該樹枝的參數供傳遞

在onselchange事件中處理參數:

void CTabDlg0::OnSelchangedInfotree(NMHDR* pNMHDR, LRESULT* pResult)
{
?NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
?// TODO: Add your control notification handler code here
?
?/* 獲取TVITEM的lparam參數值
?LPCTSTR str=(LPCTSTR)pNMTreeView->itemNew.lParam;
??if(CString(str)!="")
???? AfxMessageBox(CString(str));*/
????
?//獲取設置的itemData方法,也可在程序其他部分調用該部分獲取傳遞參數

?HTREEITEM hSelected = pNMTreeView->itemNew.hItem;
?LPCTSTR str = (LPCTSTR)m_Infotree.GetItemData(hSelected);
????????
?*pResult = 0;
}

6。CTreeCtrl遍歷循環方法(參考)

?void Tree{

HTREEITEM hitem=NULL;
?CString str;
?hitem=m_Infotree.GetRootItem();??? //取得根節點
?while(hitem)
?{
??//str=m_Infotree.GetItemText (hitem);

??Traversal(hitem);
??hitem=m_Infotree.GetNextSiblingItem (hitem); //取得指定節點hitem的下一個兄弟節點
?}

}

void Traversal(HTREEITEM hitem)??? //函數Traversal( )采用遞歸方法遍歷指定節點hitem的所有子節點
{
??? HTREEITEM hnext;
??? CString str;
??? hnext=m_Infotree.GetChildItem(hitem);??? //取得指定節點hitem的子節點
??? while(hnext)
?{?
//str=m_Infotree.GetItemText (hnext);????????

??????? Traversal(hnext);
??????? hnext=m_Infotree.GetNextSiblingItem(hnext);? //GetPrevSiblingItem( )取兄弟節點的上一節點
??? }
}

總結

以上是生活随笔為你收集整理的学习笔记总结(VC)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。