网易掌握C++教程.docx
- 文档编号:23349680
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:70
- 大小:63.03KB
网易掌握C++教程.docx
《网易掌握C++教程.docx》由会员分享,可在线阅读,更多相关《网易掌握C++教程.docx(70页珍藏版)》请在冰豆网上搜索。
网易掌握C++教程
教你如何更好的掌握C++的基础
2011-03-1616:
59:
13| 分类:
默认分类 | 标签:
it动态 |字号 订阅
1. 如何获取系统日期
CTimetm=CTime:
:
GetCurrentTime();
CStringstrTime=tm.Format(_TEXT(“%Y-%M-%d%H:
%M:
%S));
MessageBox(strTime);
2. 动态分配二维数组
int**array;
array=newint*[col];
if(array==0)exit(-1);
for(inti=0;i
array[i]=newint[row];
if(array[i]==0)
exit(-1);}
//释放
for(i=0;i
delete[]array[i];}
delete[]array;
3. 如何定义一个二维字符串数组
① char **str=“abcdef”;//一维
② char *str[row][col]={“abc”,“cdf”,“efg”…..};//row×col个
4. 将一个十六进制”FF”、”FA”等字符串数组等转化为十进制数组
intarray[32][32];
inta,b,n=0;
intresult1;
char*str;
for(inti=0;i<32;i++)
for(intj=0;j<32;j++){
str=str[i][j];
if(str[0]>=‘A’&&str[1]>=’A’){ //”AF”
a=str[0]–‘A’;
b=str[1]–‘A’;
result1=(a+10)*16+(b+10)*1;}
elseif(str[0]>=‘A’&&str[1]<’A’){//”A9”
a=str[0]–‘A’;
b=‘A’ –str[1]+1;
result1=(a+10)*16+b;}
elseif(str[0]<‘A’&&str[1]>=’A’){//”8B”
a=‘A’–str[0]+1;
b=str[1]–‘A’;
result1=a*16+(b+10)*1;}
else{ //”87”
a=‘A’–str[0]+1;
b=‘A’ –str[1]+1;
result1=a*16+b;}
array[i][j]=reslut1;
printf(“%5d”,array[i][j]);
n++;
if(n%32==0) printf(“"n”);}
将这个矩阵数组在屏幕上显示:
#include
#include
#include
#include
DWORDcolor_;
HDChMyDC=GetDC(NULL);
for(i=0;i<32;i++)
for(j=0;j<32;j++){
color_=array[i][j];
color_=color_*256*256+color_*256+color_;
SetPixel(hMyDC,j,i,color_);}
5. 将一个整型转化为一个字符串_itoa
//将从位图信息头得到的图像宽度和高度显示出来
char buffer1[20],buffer2[20];
_itoa(width,buffer1,10);
_itoa(height,buffer2,10);
charstr[80];
strcpy(str,“width=”);
strcat(str,buffer1);
strcat(str,“,hight=”;
strcat(str,buffer2);
AfxMesageBox(str,MB_OK,0);
6. 当把二维数组地址用作参数传递,而又要此地址不断递增时,可以另外定义一个同类型指针,指向二维数组第一个元素的地址,把这个赋值放在循环外:
unsignedchar*p;
p=&m_pImage[0][0];
然后在循环中,可以p+m_count*4096;
7. 改变最近打开文档的个数
在InitInstance()中的LoadStdProfileSetting(8);//括号里是要设置的个数
8. 打开调色板对话框
CColorDialog dlg;
dlg.Domodal();
9. 如何添加工具栏,如何使用Slider?
在OnInitDialog()中添加:
CSliderCtrl*pSliderCtrl=(CSliderCtrl*)GetDlgItem(IDC_SLIDER1);
pSliderCtrl->SetRange(0,255,TRUE);//设置滑动条的范围
pSliderCtrl->SetPos(100);//设置滑动条的初始位置
在Dlg类中响应WM_HSCROLL消息:
CSliderCtrl*pSliderCtrl=(CSliderCtrl*)GetDlgItem(IDC_SLIDER1);
m_nCur=pSliderCtrl->GetPos();//获得当前的位置值
10. 更改光标
:
:
SetCursor(:
:
LoadCursor(NULL,IDC_SIZEALL));
//如果是自己定义的光标资源,则要用MAKEINTRESOURCE进行转化,例如:
:
:
SetCursor(:
:
LoadCursor(NULL,IDC_CURSOR_CUT));
11. 设置文本显示的一些函数
CDC dc(this);
CPen pen(PS_SOLID,2,#0000ff); //初始化一支笔
CBrush *pBush=CBrush:
:
FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
dc.SelectObject(pBrush);
dc.SetTextColor(RGB(255,0,255));
dc.SetBKMode(TRANSPARENT);//将文本背景设置为透明
12. 将对话框中的图像拷贝到剪贴板
CWnd*pWnd=GetDlgItem(IDC_IMAGE_SELECT);
WINDOWPLACEMENT*winPlacement;
WinPlacement=newWINDOWPLACEMENT;
pWnd->GetWindowPlacement(winPlacement);//获得一个控件的位置
CDC*dcTemp;
dcTemp=newCClientDC(FromHandle(m_hWnd));
CDC memDC;
memDC.CreateCompatibleDC(dcTemp);//创建一个兼容的DC
CBitmap bm;
CSize sz(lWidth,lHeight);
bm.CreateCompatilbleBitmap(dcTemp,sz.cx,sz.cy);//创建一个兼容的位图
CBitmap*oldbm=memDC.SelectObject(&bm);
memDC.BitBlt(0,0,sz.cx,sz.cy,dcTemp,winPlacement->rcNormalPosition.left,
winPlacement->rcNormalPosition.top,SRCCOPY);
pWnd->OpenClipboard(); //打开剪贴板,不用pWnd->GetParent()->OpenClipard();
:
:
EmptyClipard();
:
:
SetClipardData(CF_BITMAP,bm.m_hObject);//粘贴到剪贴板
CloseClipard();
memDC.SelcetObject(oldbm);
deletedcTemp;
13. VC里获取一个文件夹路径
BROWSEINFO bi;
TCHAR szDisplayName[MAX_PATH];
LPITEMIDLIST pidl;
LPMALLOC pMalloc=NULL;
ZeroMemory(&bi,sizeof(bi));
bi.hWndOwner=GetSafeHwnd();
bih.pszDisplayName=szDisplayName;
bi.lpszTitle=TEXT(“Pleaseselectafolder:
”);
bi.ulFlags=BIF_RETURNONLYFSDIRS;
Pidl=SHBrowseForFolder(&bi);
if(pidl){
SHGetPathFromIDList(pidl,szDisplayName);
sPath=szDisplayName;
MessageBox(sPath);}
14. 如何设置密码输入时显示的是*号
#include
#include
chara[8];
voidmain(){
inti=0;
Cout<<”请输入密码:
”< while (1){ a[i]=getch(); if(i>=8||a[i]==13) break; putch(‘*’); i++;} cout< getch();} 15. 设置菜单: 可以使用CMenu: : EnableMenuItem()来设置菜单可用或禁用,但是在MFC中,要使该函数起作用,需要将CWnd: : m_bAutomenuEnable设置为FALSE. 16. 关闭子窗口 : : SendMessage(: : AfxGetMainWnd()->m_hWnd,WM_COMMAND,ID_FILE_CLOSE,0); 获取主窗口的指针 CWinThread: : m_pMainWnd 调用AfxGetMainWnd()可实现 继续上面的总结~! Tomaking it count~! 。 。 。 。 。 。 1. 获取CMain类的指针 CMain*pApp=((CMain*)AfxGetApp()->m_pMainWnd); ASSERT_KINDOF(CMain,pAPP);//确保pAPP是CMain的类对象 2. VC++如何获取应用程序的实例句柄 实例句柄保存在CWinApp m_hInstance中 HANDLE hInstance=AfxGetInstanceHandle(); 3. VC++怎样加载其他的应用程序三个SDK函数WinExec,ShellExecute,CreateProcess. ① WinExec最简单,前一个指定路径,后一个指定显示方式; ② ShellExecute(null,null,_T(“1.txt”),NULL,_T(“c: ""temp”),SW_SHOWNORMAL); ③ STARTUPINFO stinfo;//启动窗口的信息 PROCESSINFO proinfo;//进程的信息 CreateProcess(NULL,_T(“notepad.exe)”,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&stinfo,&proinfo); 4. 如何确定顶层菜单所占据的菜单行数: 首先,计算主窗口的高度和客户区高度;其次,从主框窗口的高度中减去客户区、框边界以及标题的高度;最后,除以菜单栏的高度 CRectrc,rcClient; GetWindowRect(rc); GetClientRect(rcClient); IntmenuHeight; menuHeight=(rc.Height()–rcClicent.Height()– : : GetSystemMetrics(SM_CYCAPTION)–: : GetSystemMetrics(SM_CY)*2)) - /: : GetSystemMetrics(SM_CYMENU); 5. 响应下拉菜单的消息为 ON_CBN_SELECTDOK(ID_TOOL_ZOOM,OnSelectZoomed) 6. 设置工具栏的标题 m_wndTestBar.SetWindowText(“yourtoolbartitle”); 7. 如何获得应用程序主窗口的指针 CWnd pMainWnd=AfxGetApp()->m_pMainWnd; CMain*pMain=((CMain*)pMainWnd; CRectrect; CWnd*pParent=AfxGetApp()->GetMainWnd(); pParent->GetWindowRect(&rect);//得到应用程序窗口矩形 //移到窗口 pParent->MoveWindow(rect.left,rect.top,rect.Width()+1,rect.Height()+1,TRUE); 8. 获得获得子窗口 CMDIChildWnd*pChild=(CMDIChildWnd*)GetActive(); //或: CMDIChildWnd*pChild=MDIGetActive(); 9. 获得活动子窗口的活动视图 CMyView*pView=(CMyView*)pChild->GetActiveView(); 获取当前窗口的指针 CWnd: : GetForegoundWindow(); 10. 从句柄转换到指针 HWNDhwnd; hwnd=: : FindWindow(NULL,“TEST”); CWnd*pWnd=FromHandle(hwnd); 11. 怎样改变进度条控件的颜色,发送消息 m_progress.SendMessage(PBM_SETBKCOLOR,0,#ff0000);//背景色 m_progress.SendMessage(PBM_SETBARCOLOR,0,#00ff00);//前景色 12. 定义charnum[10]; sprintf(num,“%d”,calnum);//格式化数字 char unit[]=”矩形”; sprintf(num,“%s”,unit); //格式化字符串 13. 改变字符串的显示字体和大小 CFontfont; font.CreatePointFont(300,“华文行楷”,NULL); CFont*pOldFont=dc.SelectObject(&font); dc.SelectObject(pOldFont); 14. 将路径中的单’"’变为’""’ CMyDoc*pDoc=GetDocument(); CStringreportPath=pDoc->strPathName; intlentemp=reportPath.GetLength(); reportPath=reportPath.Left(lentemp-4); intlenpath=reportPath.GetLength(); for(inti=0;i if(reportpath.GetAt(i)==‘""’){ reportpath.Insert(i,‘""’); i+=2;} i++;} 15. 获取屏幕分辨率 HDC hSrcDC; hSrcDC=: : GetDC(AfxGetApp()->m_pMainWnd->GetSafeHwnd()); intxSrc,ySrc; xSrc=GetDeviceCaps(hSrcDC,HORIRES);//水平分辨率 ySrc=GetDeviceCaps(hSrcDC,VERTRES);//垂直分辨率 16. 让Edit控件响应回车键: 利用获取消息来完成,调用虚函数 PreTranslateMessage(MSG*pMsg){ If(pMsg->message==WM_KEYDOWN){ switch(pMsg->wParam){ case VK_RETURN: GetDlgItem(IDC_BTN_INPUT)->SendMessage(BM_CLICK,0,0); returnTRUE;} } } 17. 改变对话框的背景色: 在InitInstance()中加入 SetDialogBKColor(#a0b4dc,#ff0000);//后面是字体颜色 18. 让指定的矩形框重画InvalidateRect(&rect,TRUE); 19. 怎样选择所选的List当前位置 int iTem; POSITION pos=m_findCtrl.GetFirstSelectedItemPosition(); if(pos==0){ MessageBox(“请选择需要删除的记录”); return; } else{ iTem=m_findCtrl.GetNextSelectedItem(pos);} //删除List中的某行 m_findCtrl.DeleteItem(iTem); m_findCtrl.Update(iTem); 20. 动态创建控件 CEdit m_edit; CRect rect(0,0,100,200); M_edit.Create(WS_CHILD|ES_AUTOHCROLL|WS_BORDER,rect,this,ID_EDIT_1); 21. 列表控件的应用 CListCtrl* m_list; CRect rect_list; this->GetCientRect(&rect_list); rect_list.top+=100; m_list->Create(WS_CHILD|LVS_REPORT|WS_BORDER|LVS_SINGLESEL,rect_list,this,ID_TABLIST); this->m_list->ModifyStyle(LVS_EDITABELS,0L);//禁止标题编辑 m_list->ModifyStyle(0L,LVS_REPORT);//设置为Report类型 m_list->ModifyStyle(0L,LVS_SHOWSELALWAYS);//始终高亮显示被选中的表项 m_list->ModifyStyle(0L,LVS_NOSORTHEADER);//禁止标题编辑 m_list->SetBkColor(#00c8c8);//设置背景颜色 m_list->SetTextBkColor(#00c8c8);//设置文本背景颜色 m_list->ModifyStyle(LVS_OWNERDRAWFIXED,0L); m_list->SetExtendedStyle(LVS_EX_FULLROWSELET //整行选中 | LVS_EX_HEADERDARGDROP //允许整列拖动 | LVS_EX_GRIDLINES //画出网格线 | LVS_EX_FLATSB); //扁平风格的滚动条 22. 取得当前获得焦点的窗口句柄 HWND hwnd=: : GetFocus(); int iID=: : GetDlgCtrlID(hwnd);//根据句柄取得其资源符号 23. 修改控件的字体 CFontm_font; m_font.CreateFont(-12,0,0,0,400,FALSE,FALSE,0,GB2312_SHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,VARIABLE_PITCH|FF_,“楷体_GB2312”); //为想改变字体的控件改变 m_editPh.SetFont(&m_font,true); 1. 如何暂停主线程直到第二个线程的终止? voidCMyTestDialog: : PeekMessageLoop(){ MSG msg; while(PeekMessage(&msg,NULL,NULL,NULL,NULL,NULL,PM_REMOVE)){ TranslateMessage(&msg); DispatchMessage(&msg);} } VoidCMyTestDialog: : WaitForThreadToTerminate(HANDLEhT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网易 掌握 C+ 教程