网易掌握C++教程.docx

上传人:b****9 文档编号:23349680 上传时间:2023-05-16 格式:DOCX 页数:70 大小:63.03KB
下载 相关 举报
网易掌握C++教程.docx_第1页
第1页 / 共70页
网易掌握C++教程.docx_第2页
第2页 / 共70页
网易掌握C++教程.docx_第3页
第3页 / 共70页
网易掌握C++教程.docx_第4页
第4页 / 共70页
网易掌握C++教程.docx_第5页
第5页 / 共70页
点击查看更多>>
下载资源
资源描述

网易掌握C++教程.docx

《网易掌握C++教程.docx》由会员分享,可在线阅读,更多相关《网易掌握C++教程.docx(70页珍藏版)》请在冰豆网上搜索。

网易掌握C++教程.docx

网易掌握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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1