//建立EDIT
int ix1 = 880, ix2 = 1050;
CRect editrect1(ix1,123,ix2,150);
m_simocx_edit1.Create(ES_CENTER|ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP|WS_GROUP |WS_EX_DLGMODALFRAME ,editrect1,this,IDC_SIMOCX_EDIT1);
m_simocx_edit1.ShowWindow(SW_SHOW);
//建立ScrollBar
CRect RightScrollbarRect(790,100,815,600);
m_simocx_RightScrollbar.Create(SBS_VERT |SBS_BOTTOMALIGN | WS_CHILD, RightScrollbarRect, this,IDC_SIMOCX_SCROLLBAR1);
m_simocx_RightScrollbar.ShowScrollBar();
// m_simocx_scrollbar1.SetScrollRange(-50,150);
SCROLLINFO RightLpinfo;//= SCROLLINFO;
RightLpinfo.nMax=150;
RightLpinfo.nMin=-50;
RightLpinfo.cbSize=10;
RightLpinfo.nPage=(RightLpinfo.nMax-RightLpinfo.nMin)/2;
RightLpinfo.fMask =SIF_ALL;
m_simocx_RightScrollbar.SetScrollInfo(&RightLpinfo,TRUE);;
//分割視窗
CRect rtLine;
GetDlgItem(IDC_STATIC_LINE)->GetWindowRect(rtLine);
CRect rtDlg;
GetWindowRect(rtDlg);
SetWindowPos(&wndTop,300,220,rtDlg.Width(),rtLine.top,SWP_NOMOVE);
CString str;
if(GetDlgItemText(IDC_BUTTON_DLSZ, str), str == "收縮<<")
{
SetDlgItemText(IDC_BUTTON_DLSZ,"擴充>>");
}
else
{
SetDlgItemText(IDC_BUTTON_DLSZ,"收縮<<");
}
static CRect rectLarge;
static CRect rectSmall;
if(rectLarge.IsRectNull())
{
CRect rectSeparator;
GetWindowRect(&rectLarge);
GetDlgItem(IDC_STATIC_LINE)->GetWindowRect(&rectSeparator);
rectSmall.left=rectLarge.left;
rectSmall.top=rectLarge.top;
rectSmall.right=rectLarge.right;
rectSmall.bottom=rectSeparator.bottom;
}
if(str=="收縮<<")
{
SetWindowPos(NULL,0,0,rectLarge.Width(),rectSmall.Height(),
SWP_NOMOVE | SWP_NOZORDER);
}
else
{SetWindowPos(NULL,0,0,rectSmall.Width(),rectLarge.Height(),
SWP_NOMOVE | SWP_NOZORDER);
}
、、、、、、、、、、、、、、、、、、、、、、、、、
//////////////////////////////////////////////////////////////////////////////////
//設定Edit顏色
CDC * pDC
case CTLCOLOR_EDIT:
pDC->SetBkColor(RGB(0,0,0));
pDC->SetTextColor(RGB(255,255,255));
HBRUSH B = CreateSolidBrush(0); //COLOR是你想設定的顏色
return B;
}
pDC->SetTextColor(RGB(255,255,255));
///////////////////////////////////////////////////////////////三種參數傳遞方式///////////////////
#include <iostream>
void swap1(int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
}
void swap2(int &x,int &y)
{
int temp;
temp=x;
x=y;
y=temp;
}
void swap3(int* x,int* y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
int main()
{
int a=2,b=3;
swap1(a,b);
cout<<"a="<<a<<" "<<"b="<<b<<endl;
swap2(a,b);
cout<<"a="<<a<<" "<<"b="<<b<<endl;
a=2;
b=3;
swap3(&a,&b);
cout<<"a="<<a<<" "<<"b="<<b<<endl;
return 0;
}
以上為三種傳遞參數的方式:
1:值傳遞 swap1()
2:引用傳遞 swap2()
3:指標傳遞 swap3()
值傳遞只是簡單的返回一個值,而要在函數中返回多個改變了的值就要用引用傳遞和指標傳遞。在調用引用作為形參的函數,進行形實結合時,實參的地址和對應的引用參數的地址是一樣的,所以你對形參的操作實際上在對實參進行操作,你操作了幾個引用形參,就可以得到幾個改變了的值,這點很有用,可以用引用調用得到很多改變了的值。(想一想,你怎麼在調用函數時改變多個值?用值傳遞能嗎?)在程式中,引用調用函式宣告必須在形參前加上&,而在調用時和普通函數調用一樣,實參就是你聲明的變數。指標傳值聲明函數時在變數前加*,調用函數時參數必須是地址。個人感覺指標調用和引用調用沒多大區別,唯一的區別是引用傳值時實參的地址就是形參,指標傳值時,形參是指向實參的。但這兩種方式都能得到多個改變了的值,形參和實參是有地址上的聯絡的。只是函式宣告和調用時的形式不一樣而已。值傳遞只能得到一個改變了的值,形參和實參沒有任何地址上的關係,調用時僅僅是用實參初始化形參,讓形參有一個值而已,然後形參和實參就沒有任何關係了,對形參的操作也不會影響到實參。這個很簡單,相信你也很清楚,我就不贅述了。
另外說一下,引用調用是C++的特性,C中是沒有引用調用的。如果你的環境是VC,在建立源檔案時如果不指定副檔名,預設的是.CPP,所以你可以進行引用調用,但如果你指定副檔名是.C,就不能用引用調用了。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT));
其中::SetCursor()是全域函數,用來設定整個常式的游標參數是宏定義游標控制代碼。AfxGetApp ()是一個系統函數,它返回當前的一個CWinApp對象。其成員函數LoadStandardCursor()用來讀取一個系統指標,每一種系統指標的具體宏定義如下:
IDC_APPSTARTING 帶小沙漏的標準箭頭
IDC_ARROW 標準箭頭
IDC_CROSS 十字游標(用於定位)
IDC_HAND Windows 2000:手型
IDC_HELP 帶問號的箭頭
IDC_IBEAM I型標
IDC_ICON Obsolete for applications marked version 4.0 or later.
IDC_NO 禁止符號
IDC_SIZE Obsolete for applications marked version 4.0 or later. Use IDC_SIZEALL.
IDC_SIZEALL 十字箭頭
IDC_SIZENESW 指向東北和西南的雙向箭頭
IDC_SIZENS 指向南和北的雙向箭頭
IDC_SIZENWSE 指向西北和東南的雙向箭頭
IDC_SIZEWE 指向東西的雙向箭頭
IDC_UPARROW 上箭頭
IDC_WAIT 沙漏
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
WSADATA wsaData;
char name[155];//用來存放電腦名稱
char *ip;//用來存放IP地址
PHOSTENT hostinfo;
if ( WSAStartup( MAKEWORD(2,0), &wsaData ) == 0 )
{
if( gethostname ( name, sizeof(name)) == 0)
{
if((hostinfo = gethostbyname(name)) != NULL)
{ //這些就是獲得IP的函數
ip = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
}
}
}
#include<winsock2.h>
#pragma comment(lib,"ws2_32.lib")
然後在把上面的標頭檔添加到StdAfx.h中
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
一:載入讀取xml檔案的動態庫
#import "MSXML4.DLL"
二:
// 建立對象
CoInitialize(NULL); // 初始化COM
// 建立解析器執行個體
MSXML2::IXMLDOMDocumentPtr spXMLDOM;
HRESULT hr = spXMLDOM.CreateInstance(__uuidof(MSXML2::DOMDocument));
BSTR bstrItemText;
CString strbuf;
// spXMLDOM->put_async(VARIANT_FALSE);
// spXMLDOM->put_validateOnParse(VARIANT_FALSE);
// spXMLDOM->put_resolveExternals(VARIANT_FALSE);
// spXMLDOM->put_preserveWhiteSpace(VARIANT_TRUE);
//
CString strpath1 = "E://工作//工作測試工程//xmltest//hero.xml";
BSTR path = strpath1.AllocSysString();
// 裝載XML文檔。
hr=spXMLDOM->load(path);
// 1、讀取裡面全部文本
spXMLDOM->get_text(&bstrItemText); // new
strbuf = bstrItemText; // new
// 2、讀取一個節點
_bstr_t bstrname("heros/hero/name");
_bstr_t bstrlegend("heros/hero/legend");
MSXML2::IXMLDOMNodeListPtr spname = NULL;
spname=spXMLDOM->getElementsByTagName(bstrname); //搜尋"Paragrah"是否正確的得到了指向IDOMNodeList的指標。
MSXML2::IXMLDOMNodeListPtr splegend = NULL;
splegend = spXMLDOM->getElementsByTagName(bstrlegend);
long value;
hr = spname->get_length(&value); //得到所包含的NODE節點的個數
CString bufnaem[10];
CString buflegend[10];
if(SUCCEEDED(hr))
{
spname->reset();
splegend->reset();
for(int ii=0; ii<value; ii++)
{
// CComPtr<IXMLDOMNode> spParagraph;
MSXML2::IXMLDOMNode *pname = NULL;//定義一個結點對象
//得到具體的一個NODE節點
spname->get_item(ii,&pname);
MSXML2::IXMLDOMNode *plegend = NULL;
splegend->get_item(ii,&plegend);
_bstr_t strItemName = pname->Gettext(); //得到NAME值分解
bufnaem[ii] = (LPCSTR)strItemName;
_bstr_t stritmelegend = plegend->Gettext();
buflegend[ii] = (LPCSTR) stritmelegend;
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
一:建立dll工程選擇MFC extension DLL
該模式沒有.h檔案,如果dll中函數多的話可以添加一個.h檔案
在裡面定義函數格式如下
extern "C" _declspec(dllexport) int sum(int a,int b);
在.cpp檔案裡執行如下
extern "C" _declspec(dllexport)int sum(int a, int b)
{
return a+b;
}
二:編譯運行
在debug裡產生.dll和.lib檔案
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////