锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鍑芥暟鍘熷瀷 COLORREF SetPixel( int x, int y, COLORREF crColor );
COLORREF SetPixel( POINT point, COLORREF crColor );
MoveTo()錛氱Щ鍔ㄥ綋鍓嶄綅緗埌鎸囧畾鐨勫潗鏍囷紝榪斿洖鍊間負浠ュ墠浣嶇疆鐨勫潗鏍囷紱
鍑芥暟鍘熷瀷 CPoint MoveTo( int x, int y );
CPoint MoveTo( POINT point );
LineTo()錛氫粠褰撳墠浣嶇疆鍒版寚瀹氫綅緗敾涓鏉$洿綰匡紝鎴愬姛榪斿洖闈?錛?br> 鍑芥暟鍘熷瀷 BOOL LineTo( int x, int y );
BOOL LineTo( POINT point );
Polyline()錛氫粠褰撳墠浣嶇疆錛岀粯鐢誨鏉℃洸綰匡紝鎴愬姛榪斿洖闈?錛?br> 鍑芥暟鍘熷瀷 BOOL Polyline( LPPOINT lpPoints, int nCount/*鏁扮洰*/ );
Rectangle()錛氭牴鎹寚瀹氬弬鏁扮粯鍒朵竴涓煩褰紝鎴愬姛榪斿洖闈?錛?br> 鍑芥暟鍘熷瀷 BOOL Rectangle( int x1, int y1, int x2, int y2 );
BOOL Rectangle( LPCRECT lpRect );
Ellipse()錛?鏍規嵁鎸囧畾鐨勭煩褰㈢粯鍒朵竴涓唴鍒囨き鍦嗭紝鎴愬姛榪斿洖闈?錛?br> 鍑芥暟鍘熷瀷 BOOL Ellipse( int x1, int y1, int x2, int y2 );
BOOL Ellipse( LPCRECT lpRect );
DrawIcon()錛氬湪鎸囧畾浣嶇疆鐢諱竴涓浘鏍囷紝鎴愬姛榪斿洖闈?錛?br> 鍑芥暟鍘熷瀷 BOOL DrawIcon( int x, int y, HICON hIcon );
BOOL DrawIcon( POINT point, HICON hIcon );
(2)銆佹湁鍏蟲枃鏈鐞嗙殑甯哥敤鍑芥暟錛?br> TextOut()錛氬湪鍑芥暟鍙傛暟鎸囧畾鐨勪綅緗樉紺烘枃鏈覆銆?br> 鍑芥暟鍘熷瀷 virtual BOOL TextOut( int x, int y, LPCTSTR lpszString, int nCount );
BOOL TextOut( int x, int y, const CString& str );
DrawText()錛氬湪鍑芥暟鍙傛暟鎸囧畾鐨勭煩褰㈠尯鍩熷唴鏄劇ず鏂囨湰涓層?br> 鍑芥暟鍘熷瀷 virtual int DrawText( LPCTSTR lpszString, int nCount, LPRECT lpRect, UINT nFormat /*綾誨瀷*/);
int DrawText( const CString& str, LPRECT lpRect, UINT nFormat );
SetTextColor()錛氳緗樉紺烘枃鏈殑棰滆壊錛岃繑鍥炲綋鍓嶆枃鏈琑GB棰滆壊鍊鹼紱
鍑芥暟鍘熷瀷 virtual COLORREF SetTextColor( COLORREF crColor );
GetTextColor()錛氳幏寰楀綋鍓嶆枃鏈鑹詫紱 鍑芥暟鍘熷瀷 COLORREF GetTextColor( ) const;
SetBkColor()錛氳緗樉紺烘枃鏈殑鑳屾櫙棰滆壊錛岃繑鍥炲綋鍓嶆枃鏈儗鏅疪GB棰滆壊鍊鹼紱
鍑芥暟鍘熷瀷 virtual COLORREF SetBkColor( COLORREF crColor );
GetBkColor()錛氳幏寰楀綋鍓嶆枃鏈儗鏅鑹詫紱 鍑芥暟鍘熷瀷 COLORREF GetBkColor( ) const;
SetBkMode()錛氳緗枃鏈殑鑳屾櫙妯″紡錛岃繑鍥炲綋鍓嶈儗鏅ā寮忓鹼紱
鍑芥暟鍘熷瀷 int SetBkMode( int nBkMode /*妯″紡*/); TRANSPARENT閫忔槑錛?strong>OPAQUE 涓嶉忔槑
GetBkMode()錛氳幏寰楀綋鍓嶆枃鏈儗鏅ā寮忥紱 鍑芥暟鍘熷瀷 int GetBkMode( ) const;
SetTextAlign()錛氳緗樉紺烘枃鏈殑瀵歸綈鏂瑰紡錛屾垚鍔熻繑鍥為潪0錛?br> 鍑芥暟鍘熷瀷 UINT SetTextAlign( UINT nFlags );
GetTextAlign()錛氳幏寰楁枃鏈殑瀵歸綈鏂瑰紡錛屽嚱鏁板師鍨?UINT GetTextAlign( ) const;
]]>
鎸囬拡錛屼絾瑕佺粡榪囩被鍨嬭漿鎹?br>姝ラ錛?br>1銆佸垱寤轟竴涓垨澶氫釜灞炴ч〉錛屽熀綾諱負CPropertyPage銆?br>class CPropSet1 : public CPropertyPage
{
// Dialog Data
//{{AFX_DATA(CPropSet1)
enum { IDD = IDD_PROP_SET1 };
int m_MAXVALUEX2;
int m_MINVALUEX2;
//}}AFX_DATA
}
2銆佸緩绔婥Prop琛ㄥ崟錛氬熀綾諱負CPropertySheet銆?br>CPropSheet::CPropSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
:CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
{
AddPage(&m_propSet1); //鍐沖畾page欏哄簭
AddPage(&m_propSet2);
}
3銆佽彍鍗曞嚱鏁幫細
void CDataView::OnPropsheet()
{
// TODO: Add your command handler code here
CPropSheet propSheet("鍙傛暟璁劇疆"); //琛ㄥ崟鍚嶇О錛屽叾浠栦負緙虹渷鍙橀噺
propSheet.m_propSet1.m_MAXVALUEX2=m_XValueMax;
propSheet.m_propSet1.m_MINVALUEX2=m_XValueMin;
if( IDOK==propSheet.DoModal())
{
m_ChartCtrl1.EnableRefresh(false);
m_XValueMax=propSheet.m_propSet1.m_MAXVALUEX2;
m_XValueMin=propSheet.m_propSet1.m_MINVALUEX2;
m_ChartCtrl1.GetBottomAxis()->SetMinMax(m_XValueMin,m_XValueMax);
m_ChartCtrl1.EnableRefresh(true);
}
}
4銆佸緩绔嬪悜瀵鹼細
棣栧厛鍦ㄨ皟鐢ㄥ睘鎬ц〃鍗曞璞$殑DoModal鍑芥暟涔嬪墠錛岃皟鐢⊿etWizardMode鍑芥暟銆?br> propSheet.SetWizardMode();
鐒跺悗閫氳繃SetWizardButtons鍑芥暟璁劇疆鍚戝瀵硅瘽妗嗕笂鐨勬寜閽?br> ((CPropSheet*)GetParent())->SetWizardButtons(PSWIZB_NEXT);
((CPropSheet*)GetParent())->SetWizardButtons(PSWIZB_NEXT | PSWIZB_BACK);
((CPropSheet*)GetParent())->SetWizardButtons(PSWIZB_BACK | PSWIZB_FINISH);
娉ㄦ剰鐐癸細闇鏀規枃瀛楃綾誨拰綾誨瀷銆?
]]>
BOOL CElectronValveView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
pInfo->SetMinPage(1); //璁劇疆鎵撳嵃鏂囦歡璧峰欏?nbsp;
pInfo->SetMaxPage(1); //璁劇疆鎵撳嵃鏂囦歡緇堟欏?br> return DoPreparePrinting(pInfo);
}
void CElectronValveView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
m_ChartCtrl.GetBottomAxis()->GetGrid()->SetColor(BlackColor);//璁劇疆鏍呮牸棰滆壊涓洪粦鑹詫紝涓嶇劧鎵撳嵃鐨勬椂鍊欏お娣?br> m_ChartCtrl.GetLeftAxis()->GetGrid()->SetColor(BlackColor);
}
void CElectronValveView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
m_ChartCtrl.GetBottomAxis()->GetGrid()->SetColor(BlueColor);//鎭㈠棰滆壊錛屼笉鐒舵帶浠朵腑涔熸槸榪欎釜棰滆壊浜嗐?br> m_ChartCtrl.GetLeftAxis()->GetGrid()->SetColor(BlueColor);
}
void CElectronValveView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
// TODO: add customized printing code here
CMainFrame* pMain=(CMainFrame *)AfxGetApp()->m_pMainWnd
CDC *pCurrentDC = GetDC(); // will have dimensions of the client area
CSize PaperPixelsPerInch(pDC->GetDeviceCaps(LOGPIXELSX), pDC->GetDeviceCaps(LOGPIXELSY));
//鑾峰緱鎵撳嵃綰歌澶囨瘡鑻卞鐨勫儚绱犳暟錛屽簲璇ユ槸涓鏍風殑銆?br> CSize ScreenPixelsPerInch(pCurrentDC->GetDeviceCaps(LOGPIXELSX), pCurrentDC->GetDeviceCaps(LOGPIXELSY));
//搴旇鏄幏寰楀睆騫曠殑姣忚嫳瀵哥殑鍍忕礌鏁幫紝搴旇鏄竴鏍風殑
CSize m_PaperSize,m_LogicalPageSize;
m_PaperSize = CSize(pDC->GetDeviceCaps(HORZRES), pDC->GetDeviceCaps(VERTRES));
//鎶婄焊寮犳墍寰楃殑鍍忕礌瀵瑰簲鐨勫睆騫曞ぇ灝忓緱鍒般?br> m_LogicalPageSize.cx = ScreenPixelsPerInch.cx * m_PaperSize.cx / PaperPixelsPerInch.cx * 3 / 4;
m_LogicalPageSize.cy = ScreenPixelsPerInch.cy * m_PaperSize.cy / PaperPixelsPerInch.cy * 3 / 4;
//榪欓噷蹇呴』榪欐牱璁撅紝鏄負浜嗗拰ChartCtrl涓殑鎵撳嵃瀵瑰簲璧鋒潵銆?br> pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowExt(m_LogicalPageSize);
pDC->SetViewportExt(m_PaperSize);
pDC->SetWindowOrg(0, 0);
CRect rcClient,rcClient1;
GetClientRect(&rcClient1); //寰楀埌鐨勪粛鐒舵槸鎵撳嵃棰勮鏄劇ず瀹㈡埛鍖虹殑澶у皬
rcClient=pInfo->m_rectDraw;//鎵撳嵃綰哥殑瀹㈡埛鍖?br> double ratioX,ratioY;
ratioX=(double)rcClient.right/(double)rcClient1.Width();
ratioY=(double)rcClient.bottom/(double)rcClient1.Height();
int nWid,left,right;
CFont *pOldFont;
CFont fnBig,fnBig1;
CPen Pen,*OldPen;
//鐢諱富妗?br> Pen.CreatePen(PS_SOLID,2,RGB(0,0,0));
OldPen=pDC->SelectObject(&Pen);
pDC->Rectangle(20,20,m_LogicalPageSize.cx-20,m_LogicalPageSize.cy-20);
pDC->SelectObject(OldPen);
//鐢繪爣棰樻爮
pDC->MoveTo(20,60);
pDC->LineTo(m_LogicalPageSize.cx-20,60);
pDC->MoveTo(20,85);
pDC->LineTo(m_LogicalPageSize.cx-20,85);
pDC->SelectObject(&Pen);
pDC->MoveTo(20,110);
pDC->LineTo(m_LogicalPageSize.cx-20,110);
pDC->SelectObject(OldPen);
pDC->MoveTo(196,60);
pDC->LineTo(196,110);
pDC->MoveTo(390,60);
pDC->LineTo(390,110);
//鐢葷粨鏋滄爮
pDC->MoveTo(20,430);
pDC->LineTo(m_LogicalPageSize.cx-20,430);
pDC->MoveTo(85,430);
pDC->LineTo(85,470);//嫻嬮噺緇撴灉1鍒嗙晫綰跨珫綰?br> pDC->MoveTo((m_LogicalPageSize.cx-85-100)/4+85,430);//寮鍚搷搴旀椂闂村垎鐣岀嚎
pDC->LineTo((m_LogicalPageSize.cx-85-100)/4+85,470);
pDC->MoveTo((m_LogicalPageSize.cx-85-100)/4*2+85,430);
pDC->LineTo((m_LogicalPageSize.cx-85-100)/4*2+85,470);
pDC->MoveTo((m_LogicalPageSize.cx-85-100)/4*3+85,430);
pDC->LineTo((m_LogicalPageSize.cx-85-100)/4*3+85,470);
pDC->MoveTo((m_LogicalPageSize.cx-85-100)/4*4+85,430);
pDC->LineTo((m_LogicalPageSize.cx-85-100)/4*4+85,470);
pDC->MoveTo(20,450);
pDC->LineTo(m_LogicalPageSize.cx-20,450);
pDC->SelectObject(&Pen);
pDC->MoveTo(20,470);
pDC->LineTo(m_LogicalPageSize.cx-20,470);
pDC->SelectObject(OldPen);
//鍐欐爣棰?br> fnBig.CreatePointFont(200,"榛戜綋",pDC);
pOldFont=pDC->SelectObject(&fnBig);
nWid=rcClient1.Width();
left=rcClient1.left;
right=rcClient1.right;
pDC->SetTextAlign(TA_CENTER);
pDC->TextOut(m_LogicalPageSize.cx/2,30,"XXX鎬ц兘嫻嬭瘯鎶ュ憡");
fnBig.DeleteObject();
fnBig.CreatePointFont(110,"瀹嬩綋",pDC);
pOldFont=pDC->SelectObject(pOldFont);
pOldFont=pDC->SelectObject(&fnBig);
pDC->SetTextAlign(TA_LEFT);
pDC->TextOut(25,67,"浜у搧鍚嶇О錛?+pMain->m_strProductName);
pDC->TextOut(25,92,"浜у搧鍥懼彿錛?+pMain->m_strProductPictureNo);
pDC->TextOut(201,67,"媯嫻嬫椂闂達細"+pMain->m_strMeasureTime0);
pDC->TextOut(201,92,"鐢熶駭鍘傚錛?+pMain->m_strProductFactory);
pDC->TextOut(395,67,"浜у搧緙栧彿錛?+pMain->m_strProductBianHao);
pDC->TextOut(395,92,"媯 楠?鍛橈細"+pMain->m_strMeasurerName);
CString aa;
aa.Format("%d(ms)",m_iPreviousTime1);
fnBig.DeleteObject();
fnBig.CreatePointFont(85,"瀹嬩綋",pDC);
pDC->SelectObject(&fnBig);
pDC->TextOut(25,420,"棰勭疆鐢典俊鍙鋒椂闂達細"+aa);
aa.Format("%d",m_iCurveNumber1);
pDC->TextOut(150,420,"鏇茬嚎鏁伴噺錛?+aa);
fnBig1.CreatePointFont(100,"瀹嬩綋",pDC);
pOldFont=pDC->SelectObject(&fnBig1);
pDC->TextOut(25,455,"嫻嬭瘯緇撴灉");
pDC->TextOut(90,435,"寮鍚搷搴旀椂闂?ms)");
pDC->TextOut(120,455,m_strOpenResponseTime);
pDC->TextOut((m_LogicalPageSize.cx-85-100)/4+85+5,435,"寮鍚崲鍚戞椂闂?ms)");
pDC->TextOut((m_LogicalPageSize.cx-85-100)/4+85+5+30,455,m_strOpenInvertTime);
pDC->TextOut((m_LogicalPageSize.cx-85-100)/4*2+85+5,435,"鍏抽棴鍝嶅簲鏃墮棿(ms)");
pDC->TextOut((m_LogicalPageSize.cx-85-100)/4*2+85+5+30,455,m_strCloseResponseTime);
pDC->TextOut((m_LogicalPageSize.cx-85-100)/4*3+85+5,435,"鍏抽棴鎹㈠悜鏃墮棿(ms)");
pDC->TextOut((m_LogicalPageSize.cx-85-100)/4*3+85+5+30,455,m_strCloseInvertTime);
pDC->TextOut((m_LogicalPageSize.cx-85-100)/4*4+85+10,435,"媯嫻嬬粨璁?);
//鏈鍚庝竴鏍?br> fnBig.DeleteObject();
fnBig.CreatePointFont(130,"瀹嬩綋",pDC);
pDC->SelectObject(&fnBig);
pDC->TextOut(m_LogicalPageSize.cx-180,m_LogicalPageSize.cy-20-20,"瀹℃牳錛?);
pDC->SetTextAlign(TA_LEFT);
CPoint offset(16,110);
m_ChartCtrl.Print1(offset,pDC,pInfo,0);//璋冪敤chart綾繪潵鐢昏〃鏍煎拰鏇茬嚎
fnBig.DeleteObject();
CFormView::OnPrint(pDC, pInfo);
}
鏈▼搴忓埄鐢–hartCtrl鏉ュ疄鐜扮粯鍒惰〃鏍煎拰鏇茬嚎銆?/p>
// 鍒涘緩鍥懼儚鏄劇ず鐨勫璞″茍璇誨叆鍥懼儚鏂囦歡
m_pPicObj = new CPictureObj;
if(!m_pPicObj->Load(lpszFileName))
{
// 璇誨叆鏂囦歡澶辮觸錛屾竻闄ゅ璞?br> m_pPicObj = NULL;
delete m_pPicObj;
// 娓呴櫎鏄劇ず鐨勫浘鍍忓茍鏄劇ず閿欒鎻愮ず
PaintDib(IsValidDib());
return FALSE;
}
PaintDib(IsValidDib());
return TRUE;
}
catch (CFileException* e)
{
m_lpszFileName = NULL;
PaintDib(IsValidDib());
e->Delete();
return FALSE;
}
}
void CDIBStatic::PaintDib(BOOL bDibValid)//鏄劇ず
{
ASSERT_VALID(this);
ClearDib(); // 娓呴櫎浠ュ墠鐨勫浘鍍?br>
CRect PaintRect;
// 鑾峰緱鏄劇ず鍖哄煙
GetClientRect(&PaintRect);
PaintRect.InflateRect(-1, -1);
CClientDC dc(this);
if (bDibValid && m_bPreview)
{
CSize size = m_pPicObj->GetSize(&dc);
int nDestX, nDestY, nDestWidth, nDestHeight;
if ((DWORD)size.cx < (DWORD)PaintRect.Width() && (DWORD)size.cy < (DWORD)PaintRect.Height())
{ // 鍥懼儚灝哄灝忎簬鏄劇ず鍖哄煙灝嗗浘鍍忔樉紺哄湪涓棿
nDestX = PaintRect.left + (PaintRect.Width() - size.cx)/2;
nDestY = PaintRect.top + (PaintRect.Height() - size.cy)/2;
nDestWidth = size.cx;
nDestHeight = size.cy;
}
else
{ // 鍥懼儚灝哄澶т簬鏄劇ず鍖哄煙錛岃繘琛屾瘮渚嬬緝鏀?
if ((PaintRect.Width()/(float)size.cx) <= (PaintRect.Height()/(float)size.cy))
{ // 瀹藉害闄愬埗
nDestWidth = PaintRect.Width();
nDestHeight = (nDestWidth*size.cy) / size.cx;
nDestX = PaintRect.left;
nDestY = PaintRect.top + (PaintRect.Height() - nDestHeight) /2;
}
else
{ // 楂樺害闄愬埗
nDestHeight = PaintRect.Height();
nDestWidth = (nDestHeight*size.cx) / size.cy;
nDestX = PaintRect.left + (PaintRect.Width() - nDestWidth) /2;
nDestY = PaintRect.top;
}
}
// 鑾峰緱鍥懼儚鐨勬樉紺轟綅緗拰澶у皬
CRect RectDest(nDestX, nDestY, nDestX+nDestWidth, nDestY+nDestHeight);
// 鏄劇ず鍥懼儚
m_pPicObj->Draw(&dc,&RectDest,&RectDest);
// 緇欏浘鍍忓姞涓澶栨
CBrush* pOldBrush = (CBrush*)dc.SelectStockObject(NULL_BRUSH);
dc.Rectangle(RectDest);
if(NULL != pOldBrush) { dc.SelectObject(pOldBrush); }
}
else
{
// 鏄劇ず閿欒鎻愮ず淇℃伅
CString strText = "涓嶈兘璇嗗埆鐨勬枃浠舵牸寮?";
if( m_lpszFileName == NULL || strlen(m_lpszFileName) <= 0 )
{
strText = "娌℃湁閫夋嫨鏂囦歡!";
}
if( !m_bPreview )
{
strText = "";
}
dc.DrawText(strText, strText.GetLength(), &PaintRect, DT_SINGLELINE|DT_CENTER|DT_VCENTER|DT_END_ELLIPSIS);
}
return;
}
HBRUSH CDIBSatic::CtlColor(CDC* pDC, UINT nCtlColor)//鐢ㄤ簬閲嶇粯
{
// TODO: Change any attributes of the DC here
PaintDib(IsValidDib());
return (HBRUSH)GetStockObject(NULL_BRUSH);
}
BOOL IsValidDib() const { return (m_pPicObj && m_pPicObj->m_pPict); }
void CDIBSatic::ClearDib()//娓呴櫎鍥劇墖
{
ASSERT_VALID(this);
CClientDC dc(this);
CRect rectPaint;
GetClientRect(&rectPaint);
rectPaint.InflateRect(-1,-1);
CBrush* pBrushWhite; //鐧界敾鍒?br> pBrushWhite = CBrush::FromHandle((HBRUSH)::GetStockObject(WHITE_BRUSH));
dc.FillRect(&rectPaint, pBrushWhite);
}
void RemoveDib() { m_lpszFileName = NULL; delete m_pPicObj; m_pPicObj = NULL; PaintDib(IsValidDib()); }
void SetPreview(BOOL bPreview) { m_bPreview = bPreview; PaintDib(IsValidDib()); }
CPreviewFileDlg婧愪唬鐮侊細
BOOL CPreviewFileDlg::OnInitDialog()
{
CFileDialog::OnInitDialog();
m_DIBStaticCtrl.SubclassDlgItem(IDC_IMAGE, this);
CWnd* pParent = GetParent();
CRect rcParent;
pParent->GetClientRect(&rcParent);
CRect rcPrev;
GetDlgItem(IDC_PREVIEW)->GetClientRect(&rcPrev); //澶嶉夋
CRect rc;
m_DIBStaticCtrl.GetClientRect(&rc);
int height = rc.Height();
rc.top = rcPrev.bottom - 10;//鍥懼儚妗嗚緗?br> rc.bottom = rc.top + height ;
rc.left = 50;
rc.right = rcParent.Width() - rc.left;
m_DIBStaticCtrl.MoveWindow(&rc, true);
GetDlgItem(IDC_PREVIEW)->SendMessage(BM_SETCHECK, (m_bPreview) ? 1 : 0);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CPreviewFileDlg::OnFileNameChange()
{
CFileDialog::OnFileNameChange();
if (m_bPreview)
{
m_DIBStaticCtrl.SetPreview(m_bPreview);//鏄劇ず鍥劇墖
m_DIBStaticCtrl.LoadDib(GetPathName()); //鍔犺澆
}
}//褰撶偣鍑繪枃浠舵椂璋冪敤
void CPreviewFileDlg::OnFolderChange()
{
CFileDialog::OnFolderChange();
m_DIBStaticCtrl.RemoveDib();//娓呴櫎
}
鑿滃崟鏍忔簮浠g爜錛?br>void CPreviewDlg::OnPreview()
{
// TODO: Add extra validation here
static char BASED_CODE szFilter[] = "Bitmap(*.bmp)|*.bmp|JPEG(*.jpg)|*.jpg|GIF(*.gif)|*.gif|WMF(*.wmf)|*.wmf|ICON(*.ico)|*.ico||";
CString strDefName;
char szPath[MAX_PATH];//鏈澶х洰褰曞ぇ灝?br>
CPreviewFileDlg FileDlg(TRUE,"*.*",NULL,
OFN_FILEMUSTEXIST|OFN_NONETWORKBUTTON|
OFN_PATHMUSTEXIST,szFilter);
FileDlg.m_ofn.lpstrInitialDir = szPath;
if( FileDlg.DoModal() != IDOK )
return;
// To get the selected file's path and name
CString strFileName;
strFileName = FileDlg.GetPathName();
if(strFileName.IsEmpty())
{
return;
}
}
1銆佸嚱鏁板師鍨嬪強璇存槑錛?/span>
void *malloc(long NumBytes)錛?/span>
璇ュ嚱鏁板垎閰嶄簡NumBytes涓瓧鑺傦紝騫惰繑鍥炰簡鎸囧悜榪欏潡鍐呭瓨鐨勬寚閽堛傚鏋滃垎閰嶅け璐ワ紝鍒欒繑鍥炰竴涓┖鎸囬拡錛?/span>NULL錛夈?/span>
鍏充簬鍒嗛厤澶辮觸鐨勫師鍥狅紝搴旇鏈夊縐嶏紝姣斿璇寸┖闂翠笉瓚沖氨鏄竴縐嶃?/span>
void free(void *FirstByte)錛?/span>
璇ュ嚱鏁版槸灝嗕箣鍓嶇敤malloc鍒嗛厤鐨勭┖闂磋繕緇欑▼搴忔垨鑰呮槸鎿嶄綔緋葷粺錛屼篃灝辨槸閲婃斁浜嗚繖鍧楀唴瀛橈紝璁╁畠閲嶆柊寰楀埌鑷敱銆?/span>
2銆佸嚱鏁扮殑鐢ㄦ硶錛?/span>
鍏跺疄榪欎袱涓嚱鏁扮敤璧鋒潵鍊掍笉鏄緢闅撅紝涔熷氨鏄?/span>malloc()涔嬪悗瑙夊緱鐢ㄥ浜嗗氨鐢╀簡瀹冩妸瀹冪粰free()浜嗭紝涓句釜綆鍗曚緥瀛愶細
紼嬪簭浠g爜錛?/span>
// Code...
float *YValue;
YValue=(float *)malloc(DataNumberMax*sizeof(float)); //鍔ㄦ佸垎閰嶅唴瀛?/strong>
if (NULL == YValue) exit (1);
gets(YValue);
// code...
free(YValue);
YValue= NULL;
// code...
灝辨槸榪欐牱錛佸綋鐒訛紝鍏蜂綋鎯呭喌瑕佸叿浣撳垎鏋愪互鍙婂叿浣撹В鍐熾傛瘮濡傝錛屼綘瀹氫箟浜嗕竴涓寚閽堬紝鍦ㄤ竴涓嚱鏁伴噷鐢寵浜嗕竴鍧楀唴瀛樼劧鍚庨氳繃鍑芥暟榪斿洖浼犻掔粰榪欎釜鎸囬拡錛岄偅涔堜篃璁擱噴鏀捐繖鍧楀唴瀛樿繖欏瑰伐浣滃氨搴旇鐣欑粰鍏朵粬鍑芥暟浜嗐?/span>
3銆佸叧浜庡嚱鏁頒嬌鐢ㄩ渶瑕?strong>娉ㄦ剰鐨勪竴浜涘湴鏂癸細
A銆佺敵璇蜂簡鍐呭瓨絀洪棿鍚庯紝蹇呴』媯鏌?/strong>鏄惁鍒嗛厤鎴愬姛銆?/span>
B銆佸綋涓嶉渶瑕佸啀浣跨敤鐢寵鐨勫唴瀛樻椂錛岃寰?strong>閲婃斁錛涢噴鏀懼悗搴旇鎶婃寚鍚戣繖鍧楀唴瀛樼殑鎸囬拡鎸囧悜NULL錛岄槻姝㈢▼搴忓悗闈笉灝忓績浣跨敤浜嗗畠銆?/span>
C銆佽繖涓や釜鍑芥暟搴旇鏄?strong>閰嶅銆傚鏋滅敵璇峰悗涓嶉噴鏀懼氨鏄唴瀛樻硠闇詫紱濡傛灉鏃犳晠閲婃斁閭e氨鏄粈涔堜篃娌℃湁鍋氥傞噴鏀懼彧鑳戒竴嬈★紝濡傛灉閲婃斁涓ゆ鍙婁袱嬈′互涓婁細鍑虹幇閿欒錛堥噴鏀劇┖鎸囬拡渚嬪錛岄噴鏀劇┖鎸囬拡鍏跺疄涔熺瓑浜庡暐涔熸病鍋氾紝鎵浠ラ噴鏀劇┖鎸囬拡閲婃斁澶氬皯嬈¢兘娌℃湁闂錛夈?/span>
D銆佽櫧鐒?/span>malloc()鍑芥暟鐨勭被鍨嬫槸(void *),浠諱綍綾誨瀷鐨勬寚閽堥兘鍙互杞崲鎴?/span>(void *),浣嗘槸鏈濂借繕鏄湪鍓嶉潰榪涜寮哄埗綾誨瀷杞崲錛屽洜涓鴻繖鏍峰彲浠ヨ翰榪囦竴浜涚紪璇戝櫒鐨勬鏌ャ?br>
浜屻?/span>malloc()鍒板簳浠庡摢閲屽緱鏉ヤ簡鍐呭瓨絀洪棿錛?/span>
1銆?/span> malloc()鍒板簳浠庡摢閲屽緱鍒頒簡鍐呭瓨絀洪棿錛?/span> 絳旀鏄粠鍫嗛噷闈㈣幏寰楃┖闂淬?/span>涔熷氨鏄鍑芥暟榪斿洖鐨勬寚閽堟槸鎸囧悜鍫嗛噷闈㈢殑涓鍧楀唴瀛?/strong>銆傛搷浣滅郴緇熶腑鏈変竴涓褰曠┖闂插唴瀛樺湴鍧鐨勯摼琛ㄣ傚綋鎿嶄綔緋葷粺鏀跺埌紼嬪簭鐨勭敵璇鋒椂錛屽氨浼氶亶鍘嗚閾捐〃錛岀劧鍚庡氨瀵繪壘絎竴涓┖闂村ぇ浜庢墍鐢寵絀洪棿鐨勫爢緇撶偣錛岀劧鍚庡氨灝嗚緇撶偣浠庣┖闂茬粨鐐歸摼琛ㄤ腑鍒犻櫎錛屽茍灝嗚緇撶偣鐨勭┖闂村垎閰嶇粰紼嬪簭銆傚氨鏄繖鏍鳳紒
2銆?strong>浠涔堟槸鍫嗭細鍫嗘槸澶у鍏辨湁鐨勭┖闂達紝鍒嗗叏灞鍫嗗拰灞閮ㄥ爢銆?/strong>鍏ㄥ眬鍫嗗氨鏄墍鏈夋病鏈夊垎閰嶇殑絀洪棿錛屽眬閮ㄥ爢灝辨槸鐢ㄦ埛鍒嗛厤鐨勭┖闂淬傚爢鍦ㄦ搷浣滅郴緇熷榪涚▼ 鍒濆鍖栫殑鏃跺欏垎閰嶏紝榪愯榪囩▼涓篃鍙互鍚戠郴緇熻棰濆鐨勫爢錛屼絾鏄寰楃敤瀹屼簡瑕佽繕緇欐搷浣滅郴緇燂紝瑕佷笉鐒跺氨鏄唴瀛樻硠婕忋?/span>
浠涔堟槸鏍堬細鏍堟槸綰跨▼鐙湁鐨勶紝淇濆瓨鍏惰繍琛岀姸鎬佸拰灞閮ㄨ嚜鍔ㄥ彉閲忕殑銆?/span>鏍堝湪綰跨▼寮濮嬬殑鏃跺欏垵濮嬪寲錛屾瘡涓嚎紼嬬殑鏍堜簰鐩哥嫭绔嬨傛瘡涓嚱鏁伴兘鏈夎嚜宸辯殑鏍堬紝鏍堣鐢ㄦ潵鍦ㄥ嚱鏁頒箣闂翠紶閫掑弬鏁般?/strong>鎿嶄綔緋葷粺鍦ㄥ垏鎹㈢嚎紼嬬殑鏃跺欎細鑷姩鐨勫垏鎹㈡爤錛屽氨鏄垏鎹?/span>SS/ESP瀵勫瓨鍣ㄣ傛爤絀洪棿涓嶉渶瑕佸湪楂樼駭璇█閲岄潰鏄懼紡鐨勫垎閰嶅拰閲婃斁銆?/span>
閫氳繃涓婇潰瀵規蹇電殑鎻忚堪錛屽彲浠ョ煡閬擄細
鏍堟槸鐢辯紪璇戝櫒鑷姩鍒嗛厤閲婃斁錛屽瓨鏀懼嚱鏁扮殑鍙傛暟鍊箋佸眬閮ㄥ彉閲忕殑鍊肩瓑銆?/span>鎿嶄綔鏂瑰紡綾諱技浜庢暟鎹粨鏋勪腑鐨勬爤銆?/span>
鍫嗕竴鑸敱紼嬪簭鍛樺垎閰嶉噴鏀撅紝鑻ヤ笉閲婃斁錛岀▼搴忕粨鏉熸椂鍙兘鐢?/span>OS鍥炴敹銆傛敞鎰忚繖閲岃鏄彲鑳斤紝騫墮潪涓瀹氥傛墍浠ユ垜鎯沖啀寮鴻皟涓嬈★紝璁板緱瑕侀噴鏀撅紒
鎵浠ワ紝涓句釜渚嬪瓙錛屽鏋滀綘鍦ㄥ嚱鏁頒笂闈㈠畾涔変簡涓涓寚閽堝彉閲忥紝鐒跺悗鍦ㄨ繖涓嚱鏁伴噷鐢寵浜嗕竴鍧楀唴瀛樿鎸囬拡鎸囧悜瀹冦傚疄闄呬笂錛岃繖涓寚閽堢殑鍦板潃鏄湪鏍堜笂錛屼絾鏄畠鎵鎸囧悜鐨勫唴瀹瑰嵈鏄湪鍫嗕笂闈㈢殑錛佽繖涓鐐硅娉ㄦ剰錛佹墍浠ワ紝鍐嶆兂鎯籌紝鍦ㄤ竴涓嚱鏁伴噷鐢寵浜嗙┖闂村悗錛屾瘮濡傝涓嬮潰榪欎釜鍑芥暟錛?/span>
紼嬪簭浠g爜錛?/span>
// code...
void Function(void)
{
char *p = (char *)malloc(100 * sizeof(char));
}
灝辮繖涓緥瀛愶紝鍗冧竾涓嶈璁や負鍑芥暟榪斿洖錛屽嚱鏁版墍鍦ㄧ殑鏍堣閿姣佹寚閽堜篃璺熺潃閿姣侊紝鐢寵鐨勫唴瀛樹篃灝變竴鏍瘋窡鐫閿姣佷簡錛佽繖緇濆鏄敊璇殑錛佸洜涓?strong>鐢寵鐨勫唴瀛樺湪鍫嗕笂錛岃屽嚱鏁版墍鍦ㄧ殑鏍堣閿姣佽窡鍫嗗畬鍏ㄦ病鏈夊暐鍏崇郴銆傛墍浠ワ紝榪樻槸閭e彞璇濓細璁板緱閲婃斁錛?/span>
3銆?/span>free()鍒板簳閲婃斁浜嗕粈涔?/span>
free()閲婃斁鐨勬槸鎸囬拡鎸囧悜鐨勫唴瀛?/span>錛佹敞鎰忥紒閲婃斁鐨勬槸鍐呭瓨錛屼笉鏄寚閽堬紒榪欑偣闈炲父闈炲父閲嶈錛?strong>鎸囬拡鏄竴涓彉閲忥紝鍙湁紼嬪簭緇撴潫鏃舵墠琚攢姣併傞噴鏀句簡鍐呭瓨絀洪棿鍚庯紝鍘熸潵鎸囧悜榪欏潡絀洪棿鐨勬寚閽堣繕鏄瓨鍦紒鍙笉榪囩幇鍦ㄦ寚閽堟寚鍚戠殑鍐呭鐨勫瀮鍦撅紝鏄湭瀹氫箟鐨勶紝鎵浠ヨ鏄瀮鍦俱傚洜姝わ紝鍓嶉潰鎴戝凡緇忚榪囦簡錛岄噴鏀懼唴瀛樺悗鎶婃寚閽堟寚鍚?/span>NULL錛岄槻姝㈡寚閽堝湪鍚庨潰涓嶅皬蹇冨張琚В寮曠敤浜嗐傞潪甯擱噸瑕佸晩榪欎竴鐐癸紒
涓夈?/span>malloc()浠ュ強free()鐨勬満鍒訛細
浜嬪疄涓婏紝浠旂粏鐪嬩竴涓?/span>free()鐨勫嚱鏁板師鍨嬶紝涔熻涔熶細鍙戠幇浼間箮寰堢濂囷紝free()鍑芥暟闈炲父綆鍗曪紝鍙湁涓涓弬鏁幫紝鍙鎶婃寚鍚戠敵璇風┖闂寸殑鎸囬拡浼犻?/span>
緇?/span>free()涓殑鍙傛暟灝卞彲浠ュ畬鎴愰噴鏀懼伐浣滐紒榪欓噷瑕佽拷韙埌malloc()鐨勭敵璇烽棶棰樹簡銆?strong>鐢寵鐨勬椂鍊欏疄闄呬笂鍗犵敤鐨勫唴瀛樿姣旂敵璇風殑澶с傚洜涓鴻秴鍑虹殑絀洪棿鏄敤鏉ヨ褰曞榪欏潡鍐呭瓨鐨勭鐞嗕俊鎭?/strong>
malloc()鐢寵鐨勭┖闂村疄闄呮垜瑙夊緱灝辨槸鍒嗕簡涓や釜涓嶅悓鎬ц川鐨勭┖闂淬?strong>涓涓氨鏄敤鏉ヨ褰曠鐞嗕俊鎭殑絀洪棿錛屽彟澶栦竴涓氨鏄彲鐢ㄧ┖闂翠簡銆?/strong>鑰岀敤鏉ヨ褰曠鐞嗕俊鎭殑瀹為檯涓婃槸涓涓粨鏋勪綋銆傚湪C璇█涓紝鐢ㄧ粨鏋勪綋鏉ヨ褰曞悓涓涓璞$殑涓嶅悓淇℃伅鏄?/span>
涓嬮潰鐪嬬湅榪欎釜緇撴瀯浣撶殑鍘熷瀷錛?/span>
紼嬪簭浠g爜錛?/span>
struct mem_control_block {
int is_available; //榪欐槸涓涓爣璁幫紵
int size; //榪欐槸瀹為檯絀洪棿鐨勫ぇ灝?/span>
};
瀵逛簬size,榪欎釜鏄疄闄呯┖闂村ぇ灝忋傝繖閲屽叾瀹炴垜鏈変釜鐤戦棶錛?/span>is_available鏄惁鏄竴涓爣璁幫紵鍥犱負鎴戠湅浜?/span>free()鐨勬簮浠g爜涔嬪悗瀵硅繖涓彉閲忔劅瑙夋湁鐐圭撼闂鳳紙婧愪唬鐮佸湪涓嬮潰鍒嗘瀽錛夈傝繖閲岃繕璇峰ぇ瀹舵寚鍑猴紒
鎵浠ワ紝free()灝辨槸鏍規嵁榪欎釜緇撴瀯浣撶殑淇℃伅鏉ラ噴鏀?/span>malloc()鐢寵鐨勭┖闂達紒鑰岀粨鏋勪綋鐨勪袱涓垚鍛樼殑澶у皬鎴戞兂搴旇鏄搷浣滅郴緇熺殑浜嬩簡銆備絾鏄繖閲屾湁涓涓棶棰橈紝malloc()鐢寵絀洪棿鍚庤繑鍥炰竴涓寚閽堝簲璇ユ槸鎸囧悜絎簩縐嶇┖闂達紝涔熷氨鏄彲鐢ㄧ┖闂達紒涓嶇劧錛屽鏋滄寚鍚戠鐞嗕俊鎭┖闂寸殑璇濓紝鍐欏叆鐨勫唴瀹瑰拰緇撴瀯浣撶殑綾誨瀷鏈夊彲鑳戒笉涓鑷達紝鎴栬呬細鎶婄鐞嗕俊鎭睆钄芥帀錛岄偅灝辨病娉曢噴鏀懼唴瀛樼┖闂翠簡錛屾墍浠ヤ細鍙戠敓閿欒錛侊紙鎰熻鑷繁榪欓噷璇寸殑鏄簾璇濓級
濂戒簡錛佷笅闈㈢湅鐪?/span>free()鐨勬簮浠g爜錛屾垜鑷繁鍒嗘瀽浜嗕竴涓嬶紝瑙夊緱姣旇搗malloc()鐨勬簮浠g爜鍊掓槸瀹規槗綆鍗曞緢澶氥傚彧鏄湁涓枒闂紝涓嬮潰鎸囧嚭錛?/span>
紼嬪簭浠g爜錛?/span>
// code...
void free(void *ptr)
{
struct mem_control_block *free;
free = ptr - sizeof(struct mem_control_block);
free->is_available = 1;
return;
}
鐪嬩竴涓嬪嚱鏁扮浜屽彞錛岃繖鍙ラ潪甯擱噸瑕佸拰鍏抽敭銆傚叾瀹炶繖鍙ュ氨鏄妸鎸囧悜鍙敤絀洪棿鐨勬寚閽堝掑洖鍘伙紝璁╁畠鎸囧悜綆$悊淇℃伅鐨勯偅鍧楃┖闂達紝鍥犱負榪欓噷鏄湪鍊間笂鍑忓幓浜嗕竴涓粨鏋勪綋鐨勫ぇ灝忥紒鍚庨潰閭d竴鍙?/span>free->is_available = 1;鎴戞湁鐐圭撼闂鳳紒鎴戠殑鎯蟲硶鏄細榪欓噷is_available搴旇鍙槸涓涓爣璁拌屽凡錛佸洜涓轟粠榪欎釜鍙橀噺鐨勫悕縐頒笂鏉ョ湅錛?/span>is_available 緲昏瘧榪囨潵灝辨槸“鏄彲浠ョ敤”銆備笉瑕佽鎴戝湡錛佹垜瑙夊緱鍙橀噺鍚嶅瓧鍙互鍙嶆槧涓涓彉閲忕殑浣滅敤錛岀壒鍒槸涓ヨ皚鐨勪唬鐮併傝繖鏄簮浠g爜錛屾墍浠ユ垜瑙夊緱緇濆鏄弗璋ㄧ殑錛侊紒榪欎釜鍙橀噺鐨勫兼槸1錛岃〃鏄庢槸鍙互鐢ㄧ殑絀洪棿錛佸彧鏄繖閲屾垜鎯充簡鎯籌紝濡傛灉鎶婂畠鏀逛負0鎴栬呮槸鍏朵粬鍊間笉鐭ラ亾浼氬彂鐢熶粈涔堜簨錛燂紒浣嗘槸鏈変竴鐐規垜鍙互鑲畾錛屽氨鏄噴鏀劇粷瀵逛笉浼氶偅涔堥『鍒╄繘琛岋紒鍥犱負榪欐槸涓涓爣璁幫紒
褰撶劧錛岃繖閲屽彲鑳借繕鏄湁浜轟細鏈夌枒闂紝涓轟粈涔堣繖鏍峰氨鍙互閲婃斁鍛紵錛熸垜鍒氭墠涔熸湁榪欎釜鐤戦棶銆傚悗鏉ユ垜鎯沖埌錛岄噴鏀炬槸鎿嶄綔緋葷粺鐨勪簨錛岄偅涔堝氨free()榪欎釜婧愪唬鐮佹潵鐪嬶紝浠涔堜篃娌℃湁閲婃斁錛屽鍚э紵浣嗘槸瀹冪‘瀹炴槸紜畾浜嗙鐞嗕俊鎭殑閭e潡鍐呭瓨鐨勫唴瀹廣傛墍浠ワ紝free()鍙槸璁板綍浜嗕竴浜涗俊鎭紝鐒跺悗鍛婅瘔鎿嶄綔緋葷粺閭e潡鍐呭瓨鍙互鍘婚噴鏀撅紝鍏蜂綋鎬庝箞鍛婅瘔鎿嶄綔緋葷粺鐨勬垜涓嶆竻妤氾紝浣嗘垜瑙夊緱榪欎釜宸茬粡瓚呭嚭浜嗘垜榪欑瘒鏂囩珷鐨勮璁鴻寖鍥翠簡銆?/span>
閭d箞錛屾垜涔嬪墠鏈変釜閿欒鐨勮璇嗭紝灝辨槸璁や負鎸囧悜閭e潡鍐呭瓨鐨勬寚閽堜笉綆$Щ鍒伴偅鍧楀唴瀛樹腑鐨勫摢涓綅緗兘鍙互閲婃斁閭e潡鍐呭瓨錛佷絾鏄紝榪欐槸澶ч敊鐗歸敊錛侀噴鏀炬槸涓嶅彲浠ラ噴鏀句竴閮ㄥ垎鐨勶紒棣栧厛榪欑偣搴旇瑕佹槑鐧姐傝屼笖錛屼粠 free()鐨勬簮浠g爜鐪嬶紝ptr鍙兘鎸囧悜鍙敤絀洪棿鐨勯鍦板潃錛屼笉鐒訛紝鍑忓幓緇撴瀯浣撳ぇ灝忎箣鍚庝竴瀹氫笉鏄寚鍚戠鐞嗕俊鎭┖闂寸殑棣栧湴鍧銆傛墍浠ワ紝瑕佺‘淇濇寚閽堟寚鍚戝彲鐢ㄧ┖闂寸殑棣栧湴鍧錛?br>紼嬪簭浠g爜錛?br>float *YValuePoint;
while ( !feof(file) && i<DataNumberMax) //璇繪暟
{
fscanf(file,"%f ",&data);
YValue[i]=data;
sum+=YValue[i];
pLineSerie->AddPoint(XValue++,YValue[i]);
i++;
}
average=sum/DataNumberMax;
max=*YValue;
min=*(YValue+2);
YValuePoint=YValue; //淇濆瓨棣栧湴鍧
for(int j=0;j<DataNumberMax;j++)
{
if(max <* YValue)
{
max =* YValue;
}
else
{
if(min > *YValue) min = *YValue;
}
YValue++; //YValue鍦板潃鍊?1
}
free(YValuePoint); //閲婃斁鍐呭瓨錛岄噴鏀句粠璇ュ唴瀛樼┖闂寸殑棣栧湴鍧寮濮?/strong>
涓錛?鍥為【鎸囬拡姒傚康錛?/strong> #include<stdio.h> printf("璇瘋緭鍏ヤ竴緇存暟緇勭殑鍊?\n"); printf("璇瘋緭鍏ヤ簩緇存暟緇勭殑鍊?\n"); printf("鐢ㄦ寚閽堣緭鍑轟竴緇存暟緇?\n"); printf("鐢ㄦ寚鍚戞寚閽堢殑鎸囬拡鍙橀噺杈撳嚭涓緇存暟緇?1):\n"); printf("鐢ㄦ寚閽堣緭鍑轟簩緇存暟緇?\n"); printf("鐢ㄦ寚鍚戞寚閽堢殑鎸囬拡鍙橀噺杈撳嚭浜岀淮鏁扮粍(1):\n"); 鍒╃敤鎸囧悜鎸囬拡鐨勬寚閽堝彉閲忓浜岀淮瀛楃鏁扮粍鐨勮闂?/p>
#include<stdio.h> for(i=0;i<4;i++)/*鎸夎杈撳嚭瀛楃涓?/ } } printf("鐢ㄦ寚鍚戞寚閽堢殑鎸囬拡鍙橀噺杈撳嚭浜岀淮鏁扮粍(2):\n"); }
鏃╁湪鏈郴鍒楃浜岀瘒涓垜灝卞鎸囬拡鐨勫疄璐ㄨ繘琛屼簡闃愯堪銆備粖澶╂垜浠張瑕?a onclick="javascript:tagshow(event, '%D1%A7%CF%B0');" href="javascript:;" target=_self>瀛︿範涓涓彨鍋氭寚鍚戝彟涓鎸囬拡鍦板潃鐨勬寚閽堛傝鎴戜滑鍏堝洖欏句竴涓嬫寚閽堢殑姒傚康鍚э紒
褰撴垜浠▼搴忓涓嬬敵鏄庡彉閲忥細
short int i;
char a;
short int * pi;
紼嬪簭浼氬湪鍐呭瓨鏌愬湴鍧絀洪棿涓婁負鍚勫彉閲忓紑杈熺┖闂達紝濡備笅鍥炬墍紺恒?br>鍐呭瓨鍦板潃→6 7 8 9 10 11 12 13 14 15
-------------------------------------------------------------------------------------
… | | | | | | | | | |
-------------------------------------------------------------------------------------
|short int i |char a| |short int * pi|
鍥句腑鎵紺轟腑鍙湅鍑猴細
i 鍙橀噺鍦ㄥ唴瀛樺湴鍧5鐨勪綅緗紝鍗犱袱涓瓧鑺傘?br>a鍙橀噺鍦ㄥ唴瀛樺湴鍧7鐨勪綅緗紝鍗犱竴涓瓧鑺傘?br>pi鍙橀噺鍦ㄥ唴瀛樺湴鍧9鐨勪綅緗紝鍗犱袱涓瓧鑺傘?娉細pi 鏄寚閽堬紝鎴戣繖閲屾寚閽堢殑瀹藉害鍙湁涓や釜瀛楄妭錛?2浣嶇郴緇熸槸鍥涗釜瀛楄妭)
鎺ヤ笅鏉ュ涓嬭祴鍊?
i=50;
pi=&i;
緇忚繃涓婂湪涓ゅ彞鐨勮祴鍊鹼紝鍙橀噺鐨勫唴瀛樻槧璞″涓?
鍐呭瓨鍦板潃→6 7 8 9 10 11 12 13 14 15
--------------------------------------------------------------------------------------
… | 50 | | | 6 | | | |
--------------------------------------------------------------------------------------
|short int i |char a| |short int * pi|
鐪嬪埌娌℃湁錛氱煭鏁村瀷鎸囬拡鍙橀噺pi鐨勫間負6錛屽畠灝辨槸I鍙橀噺鐨勫唴瀛樿搗濮嬪湴鍧銆傛墍浠ワ紝榪欐椂褰撴垜浠*pi榪涜璇誨啓鎿嶄綔鏃訛紝鍏跺疄灝辨槸瀵筰鍙橀噺鐨勮鍐欐搷浣溿傚錛?br>*pi=5; //灝辨槸絳変環浜嶪=5;
浜岋紟 鎸囬拡鐨勫湴鍧涓庢寚鍚戝彟涓鎸囬拡鍦板潃鐨勬寚閽?/strong>
鍦ㄤ笂涓鑺備腑錛屾垜浠湅鍒幫紝鎸囬拡鍙橀噺鏈韓涓?a onclick="javascript:tagshow(event, '%C6%E4%CB%FC');" href="javascript:;" target=_self>鍏跺畠鍙橀噺涓鏍蜂篃鏄湪鏌愪釜鍐呭瓨鍦板潃涓殑錛屽pi鐨勫唴瀛樿搗濮嬪湴鍧鏄?0銆傚悓鏍風殑錛屾垜浠篃鍙兘璁╂煇涓寚閽堟寚鍚戣繖涓湴鍧銆?br>鐪嬩笅闈唬鐮侊細
short int * * ppi; //榪欐槸涓涓寚鍚戞寚閽堢殑鎸囬拡錛屾敞鎰忔湁涓や釜*鍙?br>ppi=pi
絎竴鍙ワ細short int * * ppi;鈥斺旂敵鏄庝簡涓涓寚閽堝彉閲弍pi錛岃繖涓猵pi鏄敤鏉ュ瓨鍌紙鎴栫О鎸囧悜錛変竴涓猻hort int * 綾誨瀷鎸囬拡鍙橀噺鐨勫湴鍧銆?br>絎簩鍙ワ細&pi閭e氨鏄彇pi鐨勫湴鍧錛宲pi=pi灝辨槸鎶妏i鐨勫湴鍧璧嬬粰浜唒pi銆傚嵆灝嗗湴鍧鍊?0璧嬪肩粰ppi銆傚涓嬪浘錛?br>鍐呭瓨鍦板潃→6 7 8 9 10 11 12 13 14 15
------------------------------------------------------------------------------------
… | 50 | | | 6 | 10 | |
------------------------------------------------------------------------------------
|short int i|char a| |short int * pi|short int ** ppi|
浠庡浘涓湅鍑猴紝鎸囬拡鍙橀噺ppi鐨勫唴瀹瑰氨鏄寚閽堝彉閲弍i鐨勮搗濮嬪湴鍧銆備簬鏄?#8230;…
ppi鐨勫兼槸澶氬皯鍛紵鈥斺?0銆?br>*ppi鐨勫兼槸澶氬皯鍛紵鈥斺?,鍗硃i鐨勫箋?br>**ppi鐨勫兼槸澶氬皯鍛紵鈥斺?0,鍗矷鐨勫鹼紝涔熸槸*pi鐨勫箋?br>鍛靛懙錛佷笉鐢ㄦ垜璇村お澶氫簡錛屾垜鐩鎬俊浣犲簲鏄庣櫧榪欑鎸囬拡浜嗗惂錛?br>
涓夛紟 涓涓簲鐢ㄥ疄渚?/strong>
1錛?璁捐涓涓嚱鏁幫細void find1(char array[], char search, char * pi)
瑕佹眰錛?/strong>榪欎釜鍑芥暟鍙傛暟涓殑鏁扮粍array鏄互0鍊間負緇撴潫鐨勫瓧絎︿覆錛岃姹傚湪瀛楃涓瞐rray涓煡鎵懼瓧絎︽槸鍙傛暟search閲岀殑瀛楃銆傚鏋滄壘鍒幫紝鍑芥暟閫氳繃絎笁涓弬鏁幫紙pa錛夎繑鍥炲間負array瀛楃涓蹭腑絎竴涓壘鍒扮殑瀛楃鐨勫湴鍧銆傚鏋滄病鎵懼埌錛屽垯涓簆a涓?銆?br>璁捐錛?/strong>渚濋鎰忥紝瀹炵幇浠g爜濡備笅銆?br>void find1(char array[] , char search, char * pa)
{
int i;
for (i=0;*(array+i)!=0;i++)
{
if (*(array+i)==search)
{
pa=array+i
break;
}
else if (*(array+i)==0)
{
pa=0;
break;
}
}
}
浣犺寰楄繖涓嚱鏁拌兘瀹炵幇鎵瑕佹眰鐨勫姛鑳藉悧錛?br>璋冭瘯錛?/strong>
鎴戜笅闈㈣皟鐢ㄨ繖涓嚱鏁拌瘯璇曘?br>void main()
{
char str[]={“afsdfsdfdf\0”}; //寰呮煡鎵劇殑瀛楃涓?br> char a=’d’; //璁劇疆瑕佹煡鎵劇殑瀛楃
char * p=0; //濡傛灉鏌ユ壘鍒板悗鎸囬拡p灝嗘寚鍚戝瓧絎︿覆涓煡鎵懼埌鐨勭涓涓瓧絎︾殑鍦板潃銆?br> find1(str,a,p); //璋冪敤鍑芥暟浠ュ疄鐜版墍瑕佹搷浣溿?br> if (0==p )
{
printf (“娌℃壘鍒幫紒\n”);//1.濡傛灉娌℃壘鍒板垯杈撳嚭姝ゅ彞
}
else
{
printf(“鎵懼埌浜嗭紝p=%d”,p); //濡傛灉鎵懼埌鍒欒緭鍑烘鍙?br> }
}
鍒嗘瀽錛?/strong>
涓婇潰浠g爜錛屼綘璁や負浼氭槸杈撳嚭浠涔堝憿錛?br>榪愯璇曡瘯銆?br>鍞夛紒鎬庝箞杈撳嚭鐨勬槸錛氭病鏈夋壘鍒幫紒
鑰屼笉鏄細鎵懼埌浜嗭紝……銆?br>鏄庢槑a鍊間負’d’錛岃宻tr瀛楃涓茬殑絎洓涓瓧絎︽槸’d’錛屽簲璇ユ壘寰楀埌鍛錛?br>鍐嶇湅鍑芥暟瀹氫箟澶勶細void find1(char array[] , char search, char * pa)
鐪嬭皟鐢ㄥ錛歠ind1(str,a,p);
渚濇垜鍦ㄧ浜旂瘒鐨勫垎鏋愭柟娉曪紝鍑芥暟璋冪敤鏃朵細瀵規瘡涓涓弬鏁拌繘琛屼竴涓殣鍚殑璧嬪兼搷浣溿?br>鏁翠釜璋冪敤濡備笅錛?br> array=str;
search=a;
pa=p; //璇鋒敞鎰忥細浠ヤ笂涓夊彞鏄皟鐢ㄦ椂闅愬惈鐨勫姩浣溿?br> int i;
for (i=0;*(array+i)!=0;i++)
{
if (*(array+i)==search)
{
pa=array+i
break;
}
else if (*(array+i)==0)
{
pa=0;
break;
}
}
鍝︼紒鍙傛暟pa涓庡弬鏁皊earch鐨勪紶閫掑茍娌℃湁浠涔堜笉鍚岋紝閮芥槸鍊間紶閫掑槢錛堝皬璇細鍦板潃浼犻掑叾瀹炲氨鏄湴鍧鍊間紶閫掑槢錛夛紒鎵浠ュ褰㈠弬鍙橀噺pa鍊鹼紙褰撶劧鍊兼槸涓涓湴鍧鍊鹼級鐨勪慨鏀瑰茍涓嶄細鏀瑰彉瀹炲弬鍙橀噺p鍊鹼紝鍥犳p鐨勫煎茍娌℃湁鏀瑰彉(鍗硃鐨勬寚鍚戝茍娌℃湁琚敼鍙?銆?br>錛堝鏋滆繕鏈夌枒闂紝鍐嶇湅涓鐪嬨婂嚱鏁板弬鏁扮殑浼犻掋嬩簡銆傦級
淇錛?/strong>
void find2(char [] array, char search, char ** ppa)
{
int i;
for (i=0;*(array+i)!=0;i++)
{
if (*(array+i)==search)
{
*ppa=array+i
break;
}
else if (*(array+i)==0)
{
*ppa=0;
break;
}
}
}
涓誨嚱鏁扮殑璋冪敤澶勬敼濡備笅錛?br> find2(str,a,&p); //璋冪敤鍑芥暟浠ュ疄鐜版墍瑕佹搷浣溿?br>鍐嶅垎鏋愶細
榪欐牱璋冪敤鍑芥暟鏃剁殑鏁翠釜鎿嶄綔鍙樻垚濡備笅錛?br> array=str;
search=a;
ppa=&p; //璇鋒敞鎰忥細浠ヤ笂涓夊彞鏄皟鐢ㄦ椂闅愬惈鐨勫姩浣溿?br> int i;
for (i=0;*(array+i)!=0;i++)
{
if (*(array+i)==search)
{
*ppa=array+i
break;
}
else if (*(array+i)==0)
{
*ppa=0;
break;
}
}
鐪嬫槑鐧戒簡鍚楋紵
ppa鎸囧悜鎸囬拡p鐨勫湴鍧銆?br>瀵?ppa鐨勪慨鏀瑰氨鏄p鍊肩殑淇敼銆?br>涓嬮潰鐪嬩竴涓嬫寚鍚戞寚閽堝彉閲忕殑鎸囬拡鍙橀噺鎬庢牱姝g‘寮曠敤銆?br>鐢ㄦ寚鍚戞寚閽堢殑鎸囬拡鍙橀噺璁塊棶涓緇村拰浜岀淮鏁扮粍銆?/p>
#include<stdlib.h>
main()
{
int a[3],b[2][2],*p1,*p2,**p3,i,j;
for(i=0;i<3;i++)
scanf("%d",&a[i]);/*涓緇存暟緇勭殑杈撳叆*/
for(i=0;i<2;i++)
for(j=0;j<2;j++)
scanf("%d",&b[i][j]);/*浜岀淮鏁扮粍杈撳叆*/
for(p1=a,i=0;i<3;i++) /* 鐢ㄦ寚閽堣緭鍑轟竴緇存暟緇?/
{
printf("%4d",*(p1+i));
}
printf("\n");
for(p1=a,p3=&p1,i=0;i<3;i++)
printf("%4d",*(*p3+i));/*鐢ㄦ寚鍚戞寚閽堢殑鎸囬拡鍙橀噺杈撳嚭涓緇存暟緇?/
printf("\n");
printf("鐢ㄦ寚鍚戞寚閽堢殑鎸囬拡鍙橀噺杈撳嚭涓緇存暟緇?2):\n");
for(p1=a;p1-a<3;p1++)/*鐢ㄦ寚鍚戞寚閽堢殑鎸囬拡鍙橀噺杈撳嚭涓緇存暟緇?/
{
p3=&p1;
printf("%4d",**p3);
}
printf("\n");
for(i=0;i<2;i++) /*鐢ㄦ寚閽堣緭鍑轟簩緇存暟緇?/
{
p2=b[i] ;
for(int j=0;j<2;j++)
{
printf("%4d",*(p2+j)) ;
}
}
printf("\n");
for(i=0;i<2;i++)/*鐢ㄦ寚鍚戞寚閽堢殑鎸囬拡鍙橀噺杈撳嚭浜岀淮鏁扮粍*/
{
p2=b[i];
p3=&p2;
for(j=0;j<2;j++)
printf("%4d",*(*p3+j));
#include<stdlib.h>
main()
{
int i;
char * ptr;
static char c[][16]={"clanguage","fox","computer","homepage"};
/*浜岀淮瀛楃鏁扮粍*/
static char *cp[]={c[0],c[1],c[2],c[3]};/*鎸囬拡鏁扮粍*/
static char **cpp;/*鎸囧悜瀛楃鎸囬拡鐨勬寚閽堝彉閲?/
cpp=cp;/*灝嗘寚閽堟暟緇勭殑棣栧湴鍧浼犻掔粰鎸囧悜瀛楃鎸囬拡鐨勬寚閽堝彉閲?/
for(i=0;i<4;i++)/*鎸夎杈撳嚭瀛楃涓?/
printf("%s\n",*cpp++);
printf("-----------\n");
{
cpp=&cp[i];
printf("%s\n",*cpp);
}
printf("-----------\n");
for(i=0;i<4;i++)
{
ptr=c[i];
printf("%s",ptr);
printf("\n");
}
printf("\n");
for(i=0;i<2;i++)/*鐢ㄦ寚鍚戞寚閽堢殑鎸囬拡鍙橀噺杈撳嚭浜岀淮鏁扮粍*/
{
p2=b[i];
for(p2=b[i];p2-b[i]<2;p2++)
{
p3=&p2;
printf("%4d",**p3);
}
printf("\n");
}
#include <iostream.h>
class Metal
{
public:
unsigned atomicNumber;
float atomicWeight;
float pricePerounce;
public:
Metal( unsigned Number=0,
float Weight=0.000000,
float Perounce=0.000000)
{
atomicNumber=Number;
atomicWeight=Weight;
pricePerounce=Perounce;
}
~Metal() {}
unsigned GetNumber(void) {return atomicNumber;} //鍐呰仈鍑芥暟
float GetWeight(void) {return atomicWeight;}
float Getprice(void) {return pricePerounce;}
virtual void output()
{
cout << "The atomic weight =" << atomicWeight << endl;
cout << "The atomic number =" << atomicNumber << endl;
cout << "Price per ounce =" << pricePerounce << endl;
}
};
class Pb : public Metal //鍏湁緇ф壙錛屽崟緇ф壙
{
public:
Pb (unsigned Number=82,float Weight=207,float Perounce=0.01):Metal(Number,Weight,Perounce) {}
//瀛愮被鏋勯犻鍏堣皟鐢ㄥ熀綾繪瀯閫犲嚱鏁?br>};
class Au : public Metal
{
public:
Au (unsigned Number=79,float Weight=196.9665,float Perounce=450.75):Metal(Number,Weight,Perounce) {}
Au (Pb& lemp) //鎷瘋礉鍑芥暟
{
atomicNumber=lemp.GetNumber()-3;
atomicWeight=lemp.GetWeight()-10.2335;
pricePerounce=lemp.Getprice()+450.74;
}
};
void main ()
{
Pb m;
Au n=m; //鎷瘋礉
n.output();
}
銆銆媧劇敓綾葷殑涓夌緇ф壙鏂瑰紡錛氬叕鏈夌戶鎵?public)銆佺鏈夌戶鎵?private)銆佷繚鎶ょ戶鎵?protected)鏄父鐢ㄧ殑涓夌緇ф壙鏂瑰紡錛?br> 鍏湁緇ф壙鏃訛紝姘村鉤璁塊棶鍜屽瀭鐩磋闂鍩虹被涓殑鍏湁鎴愬憳涓嶅彈闄愬埗錛?br> 縐佹湁緇ф壙鏃訛紝姘村鉤璁塊棶鍜屽瀭鐩磋闂鍩虹被涓殑鍏湁鎴愬憳涔熶笉鑳借闂紱
淇濇姢緇ф壙鏃訛紝瀵逛簬鍨傜洿璁塊棶鍚屼簬鍏湁緇ф壙錛屽浜庢按騫寵闂悓浜庣鏈夌戶鎵褲?br>
浠諱綍涓涓被閮藉彲浠ユ淳鐢熷嚭涓涓柊綾伙紝媧劇敓綾諱篃鍙互鍐嶆淳鐢熷嚭鏂扮被銆?/span>
// Destroy any previous menu
if (m_hMenu)
{
::DestroyMenu(m_hMenu);
m_hMenu = NULL;
m_hParentWndMenu = NULL;
m_bMenuDisplayed = FALSE;
} // if
// Load menu
if (nMenu)
{
// Find correct resource handle
hInstResource = AfxFindResourceHandle(MAKEINTRESOURCE(nMenu), RT_MENU);
// Load menu resource
m_hMenu = ::LoadMenu(hInstResource, MAKEINTRESOURCE(nMenu));
m_hParentWndMenu = hParentWnd;
// If something wrong
if (m_hMenu == NULL) return BTNST_INVALIDRESOURCE;
} // if
// Repaint the button
if (bRepaint) Invalidate();
return BTNST_OK;
} // End of SetMenu
DWORD CButtonST::SetMenu(UINT nMenu, HWND hParentWnd, BOOL bWinXPStyle, UINT nToolbarID, CSize sizeToolbarIcon, COLORREF crToolbarBk, BOOL bRepaint) //闄ゅ墠涓や釜鍙傛暟錛屽叾浠栧弬鏁伴兘鏈夊垵濮嬪?br>{
BOOL bRetValue = FALSE;
// Destroy any previous menu
if (m_menuPopup.m_hMenu)
{
m_menuPopup.DestroyMenu();
m_hParentWndMenu = NULL;
m_bMenuDisplayed = FALSE;
} // if
// Load menu
if (nMenu)
{
m_menuPopup.SetMenuDrawMode(bWinXPStyle);
// Load menu
bRetValue = m_menuPopup.LoadMenu(nMenu);
// If something wrong
if (bRetValue == FALSE) return BTNST_INVALIDRESOURCE;
// Load toolbar
if (nToolbarID)
{
m_menuPopup.SetBitmapBackground(crToolbarBk);
m_menuPopup.SetIconSize(sizeToolbarIcon.cx, sizeToolbarIcon.cy);
bRetValue = m_menuPopup.LoadToolbar(nToolbarID);
// If something wrong
if (bRetValue == FALSE)
{
m_menuPopup.DestroyMenu();
return BTNST_INVALIDRESOURCE;
} // if
} // if
m_hParentWndMenu = hParentWnd;
} // if
// Repaint the button
if (bRepaint) Invalidate();
return BTNST_OK;
} // End of SetMenu