




已阅读5页,还剩76页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
小强君子在下则排一方之难,在上则止息万物之嚣. 人以懦弱无刚为大耻,男儿自立,必须有倔强之气.vc技巧 1. 如何获取系统日期CTime tm = CTime : GetCurrentTime();CString strTime = tm.Format(_TEXT(“%Y-%M-%d %H:%M:%S);MessageBox(strTime);2. 动态分配二维数组int *array;array = new int*col;if(array = = 0) exit(-1);for(int i=0; icol; i+)arrayi = new introw;if(arrayi = = 0) exit(-1); /释放for(i=0; icol; i+)delete arrayi; delete array;3. 如何定义一个二维字符串数组 char*str = “abcdef” ; /一维 char*strrowcol=“abc”, “cdf”, “efg”.; /rowcol个4. 将一个十六进制”FF”、”FA”等字符串数组等转化为十进制数组int array3232;int a,b, n=0;int result1;char *str;for(int i=0; i32; i+)for(int j=0; j= A & str1 =A)/”AF” a = str0 A; b= str1 A; result1 = (a+10)*16+(b+10)*1; else if(str0 = A & str1 A) /”A9” a = str0 A; b = A str1 +1; result1 = (a+10)*16+b; else if(str0 =A) /”8B” a = A str0+1; b = str1 A; result1 = a*16+(b+10)*1; else /”87” a = A str0+1; b = A str1 +1; result1 = a*16+b; arrayij = reslut1; printf(“%5d”, arrayij); n+; if(n%32 = = 0)printf(“n”); 将这个矩阵数组在屏幕上显示:i nclude i nclude i nclude i nclude DWORD color_;HDC hMyDC = GetDC(NULL);for(i=0; i32; i+)for(j=0; j 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. 设置文本显示的一些函数CDCdc(this);CPenpen(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 = new WINDOWPLACEMENT;pWnd - GetWindowPlacement(winPlacement); /获得一个控件的位置CDC *dcTemp;dcTemp= new CClientDC(FromHandle(m_hWnd);CDCmemDC;memDC.CreateCompatibleDC(dcTemp); /创建一个兼容的DCCBitmapbm;CSizesz(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);delete dcTemp;13. VC里获取一个文件夹路径BROWSEINFObi;TCHARszDisplayNameMAX_PATH;LPITEMIDLISTpidl;LPMALLOCpMalloc = NULL;ZeroMemory(&bi, sizeof(bi);bi.hWndOwner = GetSafeHwnd();bih.pszDisplayName = szDisplayName;bi.lpszTitle = TEXT(“Please select a folder:”);bi.ulFlags = BIF_RETURNONLYFSDIRS;Pidl = SHBrowseForFolder(&bi);if(pidl) SHGetPathFromIDList(pidl, szDisplayName); sPath = szDisplayName; MessageBox(sPath); 14. 如何设置密码输入时显示的是*号i nclude i nclude char a8;void main() int i=0;Cout”请输入密码:”=8 | ai= = 13) break; putch(*); i+; coutendla m_hWnd, WM_COMMAND, ID_FILE_CLOSE,0);获取主窗口的指针CWinThread : m_pMainWnd调用AfxGetMainWnd()可实现 继续上面的总结! To making it count!。 1. 获取CMain类的指针CMain* pApp = (CMain*)AfxGetApp()-m_pMainWnd);ASSERT_KINDOF(CMain, pAPP); /确保pAPP是CMain的类对象2. VC+如何获取应用程序的实例句柄实例句柄保存在CWinAppm_hInstance中HANDLEhInstance = AfxGetInstanceHandle();3. VC+怎样加载其他的应用程序 三个SDK函数WinExec, ShellExecute, CreateProcess. WinExec最简单,前一个指定路径,后一个指定显示方式; ShellExecute(null, null, _T(“1.txt”), NULL, _T(“c:temp”), SW_SHOWNORMAL); STARTUPINFOstinfo; /启动窗口的信息PROCESSINFOproinfo; /进程的信息CreateProcess(NULL,_T(“notepad.exe)”,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&stinfo,&proinfo);4. 如何确定顶层菜单所占据的菜单行数:首先,计算主窗口的高度和客户区高度;其次,从主框窗口的高度中减去客户区、框边界以及标题的高度;最后,除以菜单栏的高度CRect rc, rcClient;GetWindowRect(rc);GetClientRect(rcClient);Int menuHeight;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(“your toolbar title”);7. 如何获得应用程序主窗口的指针CWndpMainWnd = AfxGetApp() -m_pMainWnd;CMain *pMain = (CMain*)pMainWnd;CRect rect;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. 从句柄转换到指针HWND hwnd;hwnd = : FindWindow(NULL, “TEST”);CWnd* pWnd = FromHandle(hwnd);11. 怎样改变进度条控件的颜色,发送消息m_progress.SendMessage(PBM_SETBKCOLOR, 0, #ff0000); /背景色m_progress.SendMessage(PBM_SETBARCOLOR, 0, #00ff00); /前景色12. 定义char num10; sprintf(num, “%d”, calnum); /格式化数字 charunit=”矩形”; sprintf(num, “%s”, unit);/格式化字符串13. 改变字符串的显示字体和大小CFont font;font.CreatePointFont(300, “华文行楷”,NULL);CFont *pOldFont=dc.SelectObject(&font);dc.SelectObject(pOldFont);14. 将路径中的单变为CMyDoc *pDoc=GetDocument();CString reportPath = pDoc - strPathName;int lentemp = reportPath.GetLength();reportPath = reportPath.Left(lentemp-4);int lenpath = reportPath.GetLength();for(int i=0; i m_pMainWnd-GetSafeHwnd();int xSrc, ySrc; xSrc = GetDeviceCaps(hSrcDC, HORIRES); /水平分辨率ySrc = GetDeviceCaps(hSrcDC, VERTRES); /垂直分辨率16. 让Edit控件响应回车键:利用获取消息来完成,调用虚函数PreTranslateMessage(MSG* pMsg) If( pMsg -message = = WM_KEYDOWN) switch(pMsg - wParam) caseVK_RETURN: GetDlgItem(IDC_BTN_INPUT)-SendMessage(BM_CLICK, 0, 0); return TRUE; 17. 改变对话框的背景色:在InitInstance()中加入SetDialogBKColor(#a0b4dc, #ff0000); /后面是字体颜色18. 让指定的矩形框重画 InvalidateRect(&rect, TRUE);19. 怎样选择所选的List当前位置intiTem;POSITIONpos=m_findCtrl.GetFirstSelectedItemPosition();if(pos = = 0) MessageBox(“请选择需要删除的记录”);return;else iTem = m_findCtrl.GetNextSelectedItem(pos); /删除List中的某行m_findCtrl.DeleteItem(iTem);m_findCtrl.Update(iTem);20. 动态创建控件CEditm_edit;CRectrect(0,0,100,200);M_edit.Create(WS_CHILD | ES_AUTOHCROLL | WS_BORDER, rect, this, ID_EDIT_1);21. 列表控件的应用CListCtrl*m_list;CRectrect_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. 取得当前获得焦点的窗口句柄HWNDhwnd = :GetFocus();intiID = : GetDlgCtrlID(hwnd); / 根据句柄取得其资源符号23. 修改控件的字体CFont m_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. 如何暂停主线程直到第二个线程的终止?void CMyTestDialog :PeekMessageLoop() MSGmsg; while ( PeekMessage(&msg, NULL, NULL, NULL, NULL,NULL, PM_REMOVE) TranslateMessage(&msg); DispatchMessage(&msg); Void CMyTestDialog : WaitForThreadToTerminate( HANDLE hThread) /将指示哪个线程需要等待并作进一步处理 DWORDdwRet; Do dwRet = : MsgWaitForMultipleObject(1, &hThread, FALSE, INFINITE, QS_ALLINPUT); if(dwRef != WAIT_OBJET_0) PeekMessageLoop(); while ( (dwRet != WAIT_OBJET_0) & (dwRet != WAIT_FAILED);/示例代码:假设对话框上有一个按钮,当点击按钮时,开始启动第二个线程,等到第/二个线程完成后,我们再继续主线程:void CMyTestDialog : OnButton1() m_pUpdateThread = AfxBeginThread(UpdateDeviceContent, (LPVOID)this); if(m_pUpdateThread) WaitForThreadToTerminate(m_pUpdateThread-m_hThread); /这里可以加入自己的执行代码 Do whatever you want after the action is finished.2. 改变列表框表头的颜色和字体,发送一个HDM_GETITEM消息void CHeaderCtrlEx : DrawItem(LPDRAWITEMSTRUCTlpDrawItemStruct) ASSERT(lpDrawItemStruct -ctlType = =ODT_HEADER); HDITEMhdi; TCHARlpBuffer256; Hdi.mask = HDI_TEXT; Hdi.pszText = lpBuffer; Hdi.uhTextMax = 256; GetItem(lpDrawItemStruct-itemID,&hdi);/画按钮框: DrawControl(lpDrawItemStruct-hdc, &lpDrawItemStruct-rcItem, DFC_BUTTOON, DFCS_BUTTONPUSH); COLORREFcrOldColor = : SetTextColor(lpDrawItemStruct-hdc, #ffff00);: DrawText(lpDrawItemStruct-hdc, lpBuffer, strlen(lpBuffer), &lpDrawItemStruct-rcItem, DT_SINGLELINE | DT_VCENTER | DT_CENTER);: SetTextColor(lpDrawItemStruct-hdc, crOldColor);3. 修改标题栏中“无标题-title” 修改“无标题”部分,重载文档中的虚函数SetTitle,加入:CDocument: SetTitle(”your title”); 修改后半部分:将字符串资源中的IDR_MAIN修改为我的程序nnChangennnChangeTitle.DocumentnChange Document或者:在程序的任何地方调用如下语句:(AfxGetMainWnd() - SetWindowText(“your title”); 除去标题中间的”-“,可以通过重载CFramWnd类的OnUpdateTitle函数,这个函数在VC提供的帮助文件中找不到,必须手工添加:virtual void OnUpdateTitle(BOOL NaDa);void CMain : OnUpdateTitle(BOOL NaDa) CStringcsAppName;csAppName.Format(AFX_IDS_APP_TITLE);SetWindowText(csAppName); /此时显示的结果只有字符串资源AFX_IDS_APP_TITLE 所定义的字符串 另一种方法是在CMain的PreCreateWindow函数中修改的窗口风格:BOOLCMain : PreCreateWindow(CREATESTRUCT &cs) cs.style &= (LONG)FWS_ADDTOTITLE; returnCWnd : PreCreateWindow(cs); /使用此方法,窗口的标题只显示IDR_MAIN字符串中第一个n之前的部分。(CMainFram*)AfxGetMainWnd()-SetWindowText(*); 放在App类的InitInstance()函数里面4. const的一些用法 inta=0; const int* b=&a; 1 int const *b=&a;2 constint* const b=&a; 3 const char *p=”const”; 1char const *p=”const”; 2char const p=”const”; 4 constchar*const p=”const”; 4 int a=0;const int &b=a; 1 int const &b=a; 2 int & const b=a; 3const int & const b=a; 4 如果const位于星号左侧,则const用来修改指针所指向的变量,即指针指向的为不可变的; 如果const位于星号右侧,const就是修饰指针本身,即指针本身是不可变的; 3中指针本身是不可变的,而指针所指向的内容是可变的,这种情况下不能对指针本身进行更改操作,如b+是错误的; 4中指针本身和指向的内容均为常量5. const作为参数用法void fun0( const A *a) 在函数体中,按照const所修饰的部分进行常量化,如形参为const A* a,则不能对传递进来的指针的内容进行改变,保护了原指针所指向的内容;void fun1(constA& a) 形参为const A& a,则不能对传递进来的引用对象进行改变,保护了原对象的属性。注:参数const通常用于参数为指针或引用的情况const修饰返回值: const A fun2();constA*fun3()一般用const修饰返回值为对象本身(非引用和指针)的情况多用于二目操作符重载函数,并产生新的对象的时候。总结: 一般情况下,函数的返回值为某个对象时,如果将其声明为const时,多用于操作符的重载。通常,不建议用const修饰函数的返回值类型为某个对象或对某个对象引用的情况。6. 类成员函数中const的使用:一般放在函数体后void fun() const; 如果一个成员函数不会修改数据成员,那么最好将其声明为const,因为const成员函数中不允许对数据成员进行修改,如果修改,编译器会报错,大大提高了程序的健壮性。7. 使用const的一些suggestioins: 要大胆地使用const,这将给你带来无尽的益处,但前提是你必须搞清楚原委; 在参数中使用const应使用引用或指针,而不是一般的对象实例; 要避免最一般的赋值操作错误,如将const变量赋值; 不要轻易地将函数的返回类型定为cosnt; 除了重载操作符外一般不要将返回值类型定为某个对象的const引用8. 让应用程序只运行一个实例: 在App的InitInstance添加如下代码: HANDLEhSem = CreateSemaphore(NULL, 1, 1, m_pszAppName); if(GetLastError() = = ERROR_ALREADY_EXISTS) /信号量存在,则有一个在运行 CloseHandle(hSem); /关闭信号量句柄 / 寻找先前的实例窗口 HWND hWndPrevious = :GetWindow(:GetDesktopWindow(), GW_CHILD); While(: IsWindow(hWndPrevious) /检查窗口是否有预设的标记 if(:GetProp(hWndPrevious,m_pszAppName) /有,则寻找主窗口 if(: IsIconic(hWndPrevious) /窗口最小化,则恢复其大小 :SetForegroundWindow(hWndPrevious); /将主窗口激活 :SetForgoundWindow(:GetLastActivePopup(hWndPrevious); /将主窗口激活 :ShowWindow(hWndPrevious, SW_NORMAL); reurn FALSE; /退出本实例 hWndPrevious = : GetWindow(hWndPrevious, GW_HWNDNEXT); /继续找 AfxMessageBox(“only one application program can run!”); returnFALSE; 1.获取本机的IP地址i nclude i nclude #pragmacomment (lib, “ws2_32.lib”)Void CheckIP() WSADATAwsadata;Charname155;Char*ip;PHOSTENThostinfo;If (WSAStartUp( MAKEWORD(2,0), &wsadate) = = 0) If ( gethostname( name, sizeof(name) = = 0) If(hostinfo = gethostbyname(name) != NULL)/获得IP的函数 Ip = inet_ntoa(*(struct in_addr*)*hostinfo - h_addr_list); Printf*”%sn”, ip); WSACleanup(); 2. CWnd: SetDlgItemInt();被对话框设定一个由字符串表示的整型值。 CSemaphore - CSyncObject-CObject 在一个进程或多个进程中允许访问一种资源的允许线程数,CSemaphore对象维持当前获取一种指定资源的线程个数。当计数大于0时,Semaphore对象的状态是有信号状态;典型应用是用Semaphore去限制使用一种资源的线程个数。用WaitforSingleObject等待有信号状态,返回时则减少对Semaphore的计数。3. 得到计算机所有驱动函数GetAllDriverList() CStringtmp = _T(“A:”), dir; for(int i=1; iGetSafeHWnd(), WM_DISPLAY, (WPARAM)&strFileName, NULL);finder.Close(); 7. 如何来启动这个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年国家保安员资格证考试题库附完整答案(全优)
- 2025年公务员考试时事政治试题库及答案详解
- 2025年爆破施工试题及答案
- 小升初英语模拟试题及应试技巧分析
- 2026届江苏省常州市武进区洛阳初级中学数学七年级第一学期期末经典试题含解析
- 2025年机械安全操作规范试题库(机械安全员职称考试)试卷
- 2025合作共赢合同:员工股权协议模板
- 2025年初中地理学业水平考试模拟试题:地理信息技术在地理教学中的应用
- 2025建筑外墙陶瓷砖供应合同模板
- 2025年统计学期末考试题库:统计数据可视化在市场调查中的应用试题
- 公路应急抢险管理办法
- Unit 1 Happy Holiday Section A 1a-1d课件+嵌入音频 人教版英语八年级上册
- 广东省实验中学2025届七年级数学第一学期期末经典试题含解析
- java期末考试题及答案题库
- 机械通气常见并发症的预防及处理措施
- 2024年司法考试完整真题及答案
- 电力反窃查违培训
- 宝宝辅食制作大全
- 半导体车间安全培训课件
- 2025-2030中国聚酯TPU薄膜行业运营态势与前景动态预测报告
- 慢性结肠炎的诊断治疗讲课件
评论
0/150
提交评论