《VC和MFC常用函数和操作》由会员分享,可在线阅读,更多相关《VC和MFC常用函数和操作(13页珍藏版)》请在金锄头文库上搜索。
1、1.1. FormatFormat 格式化字符串:格式化字符串:str.Format(“%d*%d=%dn“, a, b, a * b);输出是 10 * 100 = 1000 另总结一下 Format 的用法: Format(x=%d,12);/x=12/最普通 Format(x=%3d,12);/x=12/指定宽度 Format(x=%f,12.0);/x=12.00/浮点数 Format(x=%.3f,12.0);/x=12.000/指定小数 Format(x=%8.2f12.0)/x=12.00; Format(x=%.*f,5,12.0);/x=12.00000/动态配置 Forma
2、t(x=%.5d,12);/x=00012/前面补充 0 Format(x=%.5x,12);/x=0000C/十六进制 Format(x=%1:d%0:d,12,13);/x=1312/使用索引 Format(x=%p,nil);/x=00000000/指针 Format(x=%1.1e,12.0);/x=1.2E+001/科学记数法 Format(x=%,);/x=%/得到“%“ S:=Format(%s%d,S,I);/S:=S+StrToInt(I);/连接字符串 指针访问多维数组;数据结构中的哈希表; 2.2. atoiatoi 函数:函数:atoi 函数原型:int atoi(ch
3、ar *str) 函数用途: 将字符串转换成一个整数值 输入参数: str 待转换为整型数的字符串;成功返回转换后的数值,失败则返回 0 str = “31412764“; value = atoi( str ); printf( “Function: atoi( “%s“ ) = %dn“, str, value );3.3. 代码更改代码更改 STATICSTATIC 控件的控件的 captioncaption 方法:方法:GetDlgItem(IDC_STATIC)- SetWindowText(_T( “你要写的字串 “); updata(False);4.4. 在对话框上动态添加一个
4、按钮:在对话框上动态添加一个按钮:在 Resource.h 中添加资源 ID CButton testbn;testbn.Create( _T(“测试按钮“),WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON,CRect (0,0,30,20),this,ID_BUTTON_TEST);其中 WS_VISIBLE 表示创建的按钮是可见的,WS_CHILD 表示按钮是个子窗口, WINDOWS 中的控件都可以看作是一个个窗口,你创建的 DIALOG 就是一个父窗口,所有在它上面的控件都是其子窗口5.5. memsetmemset:常用于内存空间初始化:常用于内存空间初始化:ch
5、ar str100; memset(str,0,100);int array5 = 1,4,3,5,2; for(int i = 0; i 012.12.获取文件属性:获取文件属性:CFileStatus status; CFile:GetStatus(strFilePathName,status); / 第一个参数为文件路径,第二个参数为获取到的文件属性值;13.13.刷新窗口:刷新窗口:方法一: GetDlgItem(IDC_STATIC_PRICE)-GetParent()-RedrawWindow(); /问题:有时窗口刷新太频繁,会出现闪烁 方法二: /局部刷新,自定义函数,在需要刷
6、新的地方调用该函数; void YourDlg:RefreshControl(UINT uCtlID) CRect rc;GetDlgItem(uCtlID)-GetWindowRect( ScreenToClient( InvalidateRect(rc); 14.14.设置对话框透明,控件不透明:设置对话框透明,控件不透明:OnInitDialog SetWindowLong(this-GetSafeHwnd(),GWL_EXSTYLE, GetWindowLong(this-GetSafeHwnd(),GWL_EXSTYLE)0x80000); HINSTANCE hInst = Loa
7、dLibrary(“User32.DLL“); if(hInst) Typedef BOOL(WINAPI *MYFUNC)(HWND, COLORREF,BYTE,DWORD); MYFUNC fun = NULL; /取得 SetLayeredWindowAttributes 函数指针 fun=(MYFUNC)GetProcAddress(hInst, “SetLayeredWindowAttributes“); if(fun)fun(this-GetSafeHwnd(),RGB(255,255,255),255,1); FreeLibrary(hInst); OnPaint CRect
8、rect; CPaintDC dc(this); GetClientRect(rect); dc.FillSolidRect(rect,RGB(255,255,255); CDialog:OnPaint(); 15.15.设置静态文本透明设置静态文本透明HBRUSH CDlgSubjects:OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) HBRUSH hbr = CDialog:OnCtlColor(pDC, pWnd, nCtlColor);switch(pWnd-GetDlgCtrlID() case IDC_STATIC_PAGE: p
9、DC-SetBkMode(TRANSPARENT); /pDC-SetTextColor(RGB(0,0,0); return (HBRUSH)GetStockObject(HOLLOW_BRUSH); break;default:break; return hbr; 16.16.复制文件到指定的文件夹复制文件到指定的文件夹void main() char pFrom256; CString path = “D:SRCvc6.0CopyFileVC“ ; /源目录 CString newpath = “D:SRCDrillData“ ; /目标目录 memset(pFrom, 0x00, 25
10、6); strcpy(pFrom, path); / 第一个文件 char pTo256; memset(pTo, 0x00, 256); strcpy(pTo, newpath); / 第一个文件 SHFILEOPSTRUCT sfo; sfo.hwnd = NULL; sfo.wFunc = FO_COPY; sfo.pFrom = pFrom; sfo.pTo = pTo; sfo.fFlags=FOF_SILENT|FOF_NOCONFIRMATION| FOF_NOCONFIRMMKDIR; SHFileOperation( 17.17.添加托盘图标:添加托盘图标:在 VC+中,想实
11、现最小化 MFC 程序的时候,最小化到系统托盘,需要调用 NOTIFYICONDATA 类 下面我们就来讲解一下如何简单实现一个系统托盘 我们以对话框程序为列 第一步:在 Dlg 类中/定义一个 NOTIFYICONDATA 类的成员变量,用来设置托 盘NOTIFYICONDATA NotifyIcon; 第二步:声明一个消息响应函数 afx_msg void OnNotifyIcon(WPARAM wParam,LPARAM IParam); 在 vc2005 中 afx_msg LRESULT OnNotifyIcon(WPARAM wParam, LPARAM lParam);需要把返回
12、值设置为 LRESULT,且在该函数的定义中无论参数 wParam、lParam 有没有用到,都要有 return TRUE;语句。 第三步:定义一个自定义消息 #define WM_NC WM_USER+1 注册消息 ON_MESSAGE(WM_NC, 并在 Dlg 类中实现这个函数 /响应最小化消息void CChangeScreenDlg:changeMini()ShowWindow(SW_HIDE);NotifyIcon.cbSize=sizeof(NOTIFYICONDATA);NotifyIcon.hIcon=AfxGetApp()-LoadIcon(IDR_MAINFRAME);
13、NotifyIcon.hWnd=m_hWnd;lstrcpy(NotifyIcon.szTip,“MediaCraft EMMG“);NotifyIcon.uCallbackMessage=WM_NC;NotifyIcon.uFlags=NIF_ICON | NIF_MESSAGE | NIF_TIP;Shell_NotifyIcon(NIM_ADD, 第五步:截获最小化事件在 Dlg 类中找到 OnSysCommand 函数修改代码如下if (nID dlgAbout.DoModal();/拦截最小化事件if(nID=SC_MINIMIZE) /ToTray();/用我们自己的消息响应最小化
14、事件changeMini(); elseCDialog:OnSysCommand(nID, lParam);第六步:响应托盘的鼠标事件 也是实现我们第二部声明的消息响应函数 void CChangeScreenDlg:OnNotifyIcon(WPARAM wParam,LPARAM IParam) if (IParam = WM_LBUTTONDOWN) | (IParam = WM_RBUTTONDOWN) ModifyStyleEx(0,WS_EX_TOPMOST);ShowWindow(SW_SHOW); 最后一步:在类的析构函数中 记得销毁托盘图标对象Shell_NotifyIcon
15、(NIM_DELETE, 18.18.创建文件夹:创建文件夹:CString str=“d:xxyy”; int temp=0;temp=:_mkdir(str);/只有在“ d:xx”存在时才能创建成功;19.19.ShellExecuteShellExecute 使用:使用:/自动解压文件 ShellExecute(NULL,“open“,“C:Program FilesWinRARWinRAR.exe“,“x -y G:rarInterFace.rar“,“F:rar“,SW_HIDE); /打开网页; ShellExecute(this-m_hWnd,“open“,“http:/“,“,“, SW_SHOW );/激活相关程序,发送EMAIL ShellExecute(this- m_hWnd,“open“,“mailto:“