C++源码分析Kit.docx
- 文档编号:9737898
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:12
- 大小:16.52KB
C++源码分析Kit.docx
《C++源码分析Kit.docx》由会员分享,可在线阅读,更多相关《C++源码分析Kit.docx(12页珍藏版)》请在冰豆网上搜索。
C++源码分析Kit
C++源码分析Kit2020
#include"stdafx.h"
#include"a1.h"
#include"ListCtrlPop.h"
#include"BaseList.h"
#ifdef_ifQDEBUG
#definenewDEBUG_ifQNEW
#undefTHIS_ifQFILE
staticcharTHIS_ifQFILE[]=_ifQ_ifQFILE_ifQ_ifQ;
#endif
CListCtrlPopdialog
CListCtrlPop:
:
CListCtrlPop(CWndpParent=NULL)
:
CDialog(CListCtrlPop:
:
IDD,pParent)
{
{{AFX_ifQDATA_ifQINIT(CListCtrlPop)
NOTE:
theClassWizardwilladdmemberinitializationhere
}}AFX_ifQDATA_ifQINIT
m_ifQlistctrl=newCListCtrl;
}
voidCListCtrlPop:
:
DoDataExchange(CDataExchangepDX)
{
CDialog:
:
DoDataExchange(pDX);
{
{AFX_ifQDATA_ifQMAP(CListCtrlPop)
NOTE:
theClassWizardwilladdDDXandDDVcallshere
}
}AFX_ifQDATA_ifQMAP
}
BEGIN_ifQMESSAGE_ifQMAP(CListCtrlPop,CDialog)
{{AFX_ifQMSG_ifQMAP(CListCtrlPop)
ON_ifQNOTIFY(NM_ifQDBLCLK,
ID_ifQPOP_ifQLISTCTRL,OnDblclkList1)
ON_ifQWM_ifQSHOWWINDOW()
ON_ifQNOTIFY(NM_ifQSETFOCUS,
ID_ifQPOP_ifQLISTCTRL,OnSetfocusList1)
}}AFX_ifQMSG_ifQMAP
END_ifQMESSAGE_ifQMAP()
CListCtrlPopmessagehandlers
voidCListCtrlPop:
:
OnOK()
{
this->SetStrWindowText();
}
voidCListCtrlPop:
:
OnCancel()
{
if(m_ifQwndStrEdited!
=NULL)
{
m_ifQwndStrEdited->SetFocus();
this->m_ifQwndStrEdited->PostMessage(WM_ifQKEYDOWN,27,0);
}
this->ShowWindow(SW_ifQHIDE);
}
boolCListCtrlPop:
:
Create(CWndparent)
{
boolresult=CDialog:
:
Create(IDD,parent);
this->ShowWindow(SW_ifQHIDE);
this->InitListCtrl();
this->GetClientRect(&this->m_ifQrectShow);
returntrue;
}
voidCListCtrlPop:
:
SetShowPosition(constCRect&
rect,CWndwndedited)
{
//确定显示位置,要考虑到,显示器的长,宽.
m_ifQptPosition.x=rect.left;
m_ifQptPosition.y=rect.bottom;
ASSERT_ifQVALID(wndedited);
ASSERT_ifQKINDOF(CWnd,wndedited);
m_ifQwndStrEdited=wndedited;
intiScreenWidth=:
:
GetSystemMetrics(SM_ifQCXSCREEN);
intiScreenHeight=:
:
GetSystemMetrics(SM_ifQCYSCREEN);
if(iScreenWidth m_ifQptPosition.x=iScreenWidth-m_ifQrectShow.Width()-20; if(iScreenHeight m_ifQptPosition.y=m_ifQptPosition.y-m_ifQrectShow.Height()-rect.Height()-5; afxDump<<"\nSetShowPosition=m_ifQptPosition"< } voidCListCtrlPop: : ClearListCtrlItems() { this->m_ifQlistctrl->DeleteAllItems(); } CStringCListCtrlPop: : GetListCtrlSel(intsubitem) { intmark=this->m_ifQlistctrl->GetSelectionMark(); returnm_ifQlistctrl->GetItemText(mark,subitem); } boolCListCtrlPop: : RefreshListCtrlView(intsubitem,CStringedited) { if(subitem>this->m_ifQiColumns-1) returnfalse; if(edited=="") returnthis->ShowAllStringList(); m_ifQiSubItem=subitem; m_ifQlistctrl->SetRedraw(false); m_ifQlistctrl->DeleteAllItems(); intj=0; CStringstr; CStrings_ifQsubitem; POSITIONpos=this->m_ifQstrlist[m_ifQiSubItem].FindIndex (1); for(inti=1;pos! =NULL;i++) { str=m_ifQstrlist[m_ifQiSubItem].GetNext(pos); if(str.Find(edited)! =-1) { for(intk=0;k { CStringvalue=m_ifQstrlist[k].GetAt(m_ifQstrlist[k].FindIndex(i)); if(! k) { m_ifQlistctrl->InsertItem(j,value); } else { m_ifQlistctrl->SetItemText(j,k,value); } } j++; } } inttemp=0; for(i=0;i if(edited==m_ifQlistctrl->GetItemText(i,subitem)) { temp=i; break; } m_ifQlistctrl->SetSelectionMark(temp); m_ifQlistctrl->SetHotItem(temp); m_ifQlistctrl->SetRedraw(true); returntrue; } boolCListCtrlPop: : InitListCtrl() { m_ifQlistctrl->Create(WS_ifQCHILD| WS_ifQVISIBLE|WS_ifQVSCROLL|WS_ifQHSCROLL| LVS_ifQSHOWSELALWAYS| LVS_ifQSINGLESEL|LVS_ifQREPORT, CRect(0,0,0,0),this,ID_ifQPOP_ifQLISTCTRL); m_ifQlistctrl->Create(WS_ifQCHILD|WS_ifQVSCROLL|WS_ifQVISIBLE|LVS_ifQREPORT|WS_ifQBORDER, CRect(0,0,100,100),this,ID_ifQPOP_ifQLISTCTRL); this->m_ifQlistctrl->ModifyStyle(LVS_ifQEDITLABELS,0L);禁止标题编辑 m_ifQlistctrl->ModifyStyle(0L,LVS_ifQREPORT);设为Report类型 m_ifQlistctrl->ModifyStyle(0L,LVS_ifQSHOWSELALWAYS);始终高亮度被选中的表项 m_ifQlistctrl->ModifyStyle(0L,LVS_ifQNOSORTHEADER); m_ifQlistctrl->ModifyStyle(LVS_ifQOWNERDRAWFIXED,0L); m_ifQlistctrl->SetExtendedStyle(LVS_ifQEX_ifQFULLROWSELECT|允许整行选中 LVS_ifQEX_ifQGRIDLINES|画出网格线 LVS_ifQEX_ifQFLATSB扁平风格的滚动条 ); returntrue; } CStringListCListCtrlPop: : SelectStringList(intnumber,CStringListnewstringlist) { if(number<0) { MessageBox("stringlists.number<0"); returnNULL; } ASSERT(newstringlist! =NULL); CStringListtemp=m_ifQstrlist; m_ifQiColumns=number; this->m_ifQstrlist=newstringlist; this->ClearListAllColumn();将上次显示的数据删除; intlength=0;记录总长度 CStringstr; intcol_ifQlength=newint[m_ifQiColumns];记录每列最长的长度 for(intk=0;k col_ifQlength[k]=8; for(inti=0;i { this->m_ifQlistctrl->InsertColumn(i,m_ifQstrlist[i].GetHead()); col_ifQlength[i]=max(col_ifQlength[i],m_ifQstrlist[i].GetHead().GetLength()); POSITIONpos=m_ifQstrlist[i].FindIndex (1); for(intj=1;pos! =NULL;j++) { str=m_ifQstrlist[i].GetNext(pos); col_ifQlength[i]=max(col_ifQlength[i],str.GetLength()); } m_ifQlistctrl->SetColumnWidth(i,col_ifQlength[i]10);LVSCW_ifQAUTOSIZE_ifQUSEHEADER } for(k=0;k length=length+col_ifQlength[k]; m_ifQlistctrl->MoveWindow(0,0,length10+18,this->m_ifQrectShow.Height()-7); m_ifQrectShow.right=length10+26; delete[]col_ifQlength; returntemp; } voidCListCtrlPop: : ClearListAllColumn() { this->m_ifQlistctrl->DeleteAllItems(); intn=m_ifQlistctrl->GetHeaderCtrl()->GetItemCount(); for(inti=n-1;i>=0;i--) this->m_ifQlistctrl->DeleteColumn(i); } voidCListCtrlPop: : OnDblclkList1(NMHDRpNMHDR,LRESULTpResult) { intmark=m_ifQlistctrl->GetSelectionMark(); POSITIONpos=m_ifQlistctrl->GetFirstSelectedItemPosition(); for(;pos! =NULL;) { if(mark==m_ifQlistctrl->GetNextSelectedItem(pos)) this->SetStrWindowText(); } pResult=0; } voidCListCtrlPop: : SetStrWindowText() { : : PostMessage(m_ifQwndStrEdited->GetSafeHwnd(),WM_ifQKEYDOWN,13,0); PostMessage(WM_ifQSHOWWINDOW,0,0); } boolCListCtrlPop: : RefreshListCtrlView(intsubitem,CStringedited,CStringsCankao,intcankao_ifQsubitem) { this->RefreshListCtrlView(subitem,edited); inttemp=-1; inttemp2=-1; for(inti=0;i { if(sCankao==m_ifQlistctrl->GetItemText(i,cankao_ifQsubitem)) { temp2=i; break; } if(edited==m_ifQlistctrl->GetItemText(i,subitem)) { if(temp==-1) temp=i; } } if(temp2! =-1) temp=temp2; if(temp==-1) temp=0; m_ifQlistctrl->SetSelectionMark(temp); m_ifQlistctrl->SetHotItem(temp); returntrue; } voidCListCtrlPop: : OnShowWindow(BOOLbShow,UINTnStatus) { CDialog: : OnShowWindow(bShow,nStatus); TRACE("OnShowWindow\n"); if(bShow&&this->m_ifQwndStrEdited! =NULL) if(this->m_ifQwndStrEdited->GetSafeHwnd()! =NULL) { : : PostMessage(m_ifQwndStrEdited->GetSafeHwnd(),WM_ifQACTIVATE,WA_ifQCLICKACTIVE,0); TRACE("m_ifQwndStrEdited->GetSafeHwnd(),WM_ifQSETFOCUS,\n"); } } voidCListCtrlPop: : ShowListPop() { TRACE("voidCListCtrlPop: : ShowListPop()\n"); afxDump<<"\nShowPosition="< this->MoveWindow(this->m_ifQptPosition.x,this->m_ifQptPosition.y, this->m_ifQrectShow.Width(),this->m_ifQrectShow.Height()); this->ShowWindow(SW_ifQSHOWNOACTIVATE);SW_ifQSHOW } voidCListCtrlPop: : SendTheUDNPMessage(UINTKEY) { : : SendMessage(this->m_ifQlistctrl->GetSafeHwnd(),WM_ifQKEYDOWN,KEY,0); m_ifQlistctrl->SetHotItem(m_ifQlistctrl->GetSelectionMark()); } voidCListCtrlPop: : OnSetfocusList1(NMHDRpNMHDR,LRESULTpResult) { ASSERT_ifQVALID(this->m_ifQwndStrEdited); ASSERT_ifQKINDOF(CWnd,m_ifQwndStrEdited); this->m_ifQwndStrEdited->ShowWindow(SW_ifQSHOW); this->m_ifQlistctrl->SetHotItem(-1); pResult=0; } CWndCListCtrlPop: : GetCurEditWnd() { ASSERT_ifQVALID(this->m_ifQwndStrEdited); ASSERT_ifQKINDOF(CWnd,m_ifQwndStrEdited); returnthis->m_ifQwndStrEdited; } BOOLCListCtrlPop: : DestroyWindow() { if(m_ifQlistctrl->m_ifQhWnd! =NULL) m_ifQlistctrl->DestroyWindow(); returnCDialog: : DestroyWindow(); } intCListCtrlPop: : GetSelectedMark() { returnm_ifQlistctrl->GetSelectionMark(); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 源码 分析 Kit