mfc中format函数
VCMFC中的CComboBox控件使用详解

VCMFC中的CComboBox控件使用详解VC/MFC中的CComboBox控件使用详解CComboBox控件详解CComboBox控件又称作组合框控件,其有三种形态可供选择,1.简单组合框(Simple)2.下拉组合框(Drop-down)3.下拉列表式组合框(Drop-down list).CComboBox控件的常用设置属性说明:type属性:里面一共有三个选项.就是其三种形式, 我们常用的是后两种形态,其区别就是Dropdown的编辑区为可编辑控件,而droplist 为静态控件.Data属性:当程序初始化的时候,下拉列表将显示其属性里面的内容,内容用分号分隔.其属性只支持后2中形式,Sort 属性:对添加到下拉列表框中的数据自动进行排序,如果你不想他改变你的显示序列,把他设置成False.控件是一个窗口.其基类是为CWnd.所以CComboBox也可以使用CWnd的一些函数,它自己的函数有30几种.我写了一个示范程序,演示了一些常用的函数,你可以参考其代码看到其功能.注:m_cbox 为CComboBox控件的关联变量,m_end为EDIT控件的关联变量1.GetCount() 函数:用以获得列表框中的选项数目. int GetCount() const;(此乃函数原型,我会列在每条的后面) 下面的例子是程序中各个按钮里面的代码int i;CString str;i=m_cbox.GetCount();str.Format ("%d",i);m_end="一共有"+str+"个数据";UpdateData(FALSE);2.GetCurSel() 函数:用以得到用户选中下拉列表框中数据的索引值.返回的值是重0开始的,如果没有选择任何选项将会返回-1 Int GetCurSel() constint i;CString str;i=m_cbox.GetCurSel ();str.Format ("%d",i+1);if (i==-1) m_end="你什么都没有选";else m_end="你选的是第"+str+"项";UpdateData(FALSE);3.SetCurSel函数:选取列表框中的一个选项,索引从0开始,-1为什么都不选.当你需要把列表框中已经选取的内容清空时就可以使用这个函数;if(m_i<3) m_cbox.SetCurSel (m_i++);//m_i为int型变量用以计数else {m_cbox.SetCurSel (-1);m_i=0;}4.SetEditSel函数:设置编辑区中蓝色选中字段的长度, BOOL SetEditSel( intnStartChar,int nEndChar ); nStartChar是起始的位置,当设置为-1时为不选择任何字段,nEndChar是结束位置.还有一个对应的函数GetEditSel是取得其位置,在此不详解.m_cbox.SetEditSel (3,5);//在编辑框中打入一串数字在按此按钮就能看到效果//其作用就是选中第3到第5个字符作为热点5.Clear() Cut() Paste() Copy() 这四个函数我放在一起说,因为他们都是针对编辑框中选定的文字进行编辑的函数,很多初学者很不明白这4个函数,使用这些函数没有作用,其实不然,这些函数对于在编辑框中的内容不进行处理,他真正处理的是你用鼠标选中的内容,对于Clear()函数很多书中解释都是有误的,很多书中对他的解释是清除当前选中的文本,我认为这样的解释是有歧异的,真正的解释是把你刚选中的文本释放掉,也就是不选,而不是把选中的删除,真正的删除选中的文本的函数是Cut(),Copy()是复制选中的文本,Paste()是粘贴到光标处.其演示就不写在程序中,有兴趣的朋友可以自己试试.6.LimitText()函数.其作用是限制在编辑框中键入的文本长度,BOOL LimitText(int nMaxChars); 当nMaxChars为0时,不是不能输入,而是长度最大化为65535字节7.GetLBText()函数.其原型为void GetLBText( int nIndex, CString&rString ).nIndex为列表框中数据的索引值,rString 为字符串,其作用就是把索引号为nIndex的数据放到rString变量中.与其对应的GetLBTextLen(intnIndex)函数就是得到索引号为nIndex中数据的长度m_cbox.GetLBT ext (2,m_end); // GetLBText按钮UpdateData(0);CString str; //GetLBTextLen按钮int i=m_cbox.GetLBTextLen (2);str.Format ("%d",i);m_end=str;UpdateData(FALSE);8.AddString() DeleteString() InsertString() ResetContent() 四个函数放在一起,他们都是针对下拉列表框的处理函数, AddString(LPCTSTR lpszString) 是在列表框的尾巴添加一条数据,参数为字符串. DeleteString(UINT nIndex)为删除指定索引为nIndex的数据. InsertString(int nIndex, LPCTSTR lpszString)在索引nIndex处插入IpszString的内容. ResetContent()是清除列表框中所有的内容.9.SetDroppedWidth(UINT nWidth) 函数.用于设定下拉列表框的最小宽度,当下拉列表框中的数据很长不能完全显示时,我们可以使用这个函数把列表框的宽度设置的大些.同样GetDroppedWidth()是返回列表框的宽度.以下为总结了各大论坛中对CCombBox控件使用的问题.并给出了正解.1.关于CComboBox在对话框中没有下拉项目的问题答: 资源编辑器中对话框中CComboBox组件的垂直范围拉大了下,就看见字体了,看到那个向下的黑箭头了吗,点他下拉,嘿嘿就这么简单.2.请问怎样能让CCombobox记住用户的输入.下次使用时还有答: 要记住用户的输入必须用到文件读写,或者把内容添加到注册表中,我会在以后给出解决办法.3. CCOMBOBOX如何使它只读,不能编辑答: 看了本文的介绍也许你现在知道了, CCOMBOBOX有三种类型的,选择你需要的吧!4. 我要让界面一显示,就能在Combo框中显示默认的数据答: 你要在OnInitDialog里面加上我上面所提到的SetCurSel()函数就行了.5. 如何把选好的内容赋给变量答: 先给CCOMBOBOX设置一个CString关联变量,再添加事件处理函数CBN_ Selchange.使用UpdateData(FALSE)就行了.6. 在CComboBox组合框中,条目的对齐方式是左对齐,能设置为对中或者右对齐吗?答: 没有直接的方法,你必须自己对齐, 比如最大长度是10int i;String.Format("%10d", i);CComboBox->AddStringVC combobox 使用大全 ---------------------------------------------------一、如何添加/删除Combo Box内容1. 在Combo Box控件属性的Data标签里面添加,一行表示Combo Box下拉列表中的一行。
MFC Combo Box(组合框)控件的用法

最后介绍一下列表框几种常用的消息映射宏:
ON_CBN_DBLCLK鼠标双击
ON_CBN_DROPDOWN列表框被弹出
ON_CBN_KILLFOCUS / ON_CBN_SETFOCUS在输入框失去/得到输入焦点时产生
ON_CBN_SELCHANGE列表框中选择的行发生改变
其中dwStyle将指明该窗口的风格,除了子窗口常用的风格WS_CHILD,WS_VISIBLE外,你可以针对列表控件指明专门的风格。
CBS_DROPDOWN下拉式组合框
CBS_DROPDOWNLIST下拉式组合框,但是输入框内不能进行输入
CBS_SIMPLE输入框和列表框同时被显示
LBS_SORT所有的行按照字母顺序进行排序
二、属性里有个No integral height钩选项,表示最大长度为设计长度,如果实际内容比设计长度多,就出现滚动条,少就以实际长度显示。
VC++ Combo Box/Combo Box Ex控件
组合窗口是由一个输入框和一个列表框组成。创建一个组合窗口可以使用成员函数:
BOOL CListBox::Create( LPCTSTR lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff );
int InsertItem( const COMBOBOXEXITEM* pCBItem );来添加行,其中COMBOBOXEXITEM定义如下:
typedef struct {UINT mask;int iItem;LPTSTR pszText;int cchTextMax;int iImage;int iSelectedImage;int iOverlay;int iIndent;LPARAM lParam;} COMBOBOXEXITEM, *PCOMBOBOXEXITEM;
mfc空间几何变换之图像平移、镜像、旋转、缩放详解

MFC空间几何变换之图像平移、镜像、旋转、缩放详解一. 图像平移前一篇文章讲述了图像点运算(基于像素的图像变换),这篇文章讲述的是图像几何变换:在不改变图像容的情况下对图像像素进行空间几何变换的处理方式。
点运算对单幅图像做处理,不改变像素的空间位置;代数运算对多幅图像做处理,也不改变像素的空间位置;几何运算对单幅图像做处理,改变像素的空间位置,几何运算包括两个独立的算法:空间变换算法和灰度级插值算法。
空间变换操作包括简单空间变换、多项式卷绕和几何校正、控制栅格插值和图像卷绕,这里主要讲述简单的空间变换,如图像平移、镜像、缩放和旋转。
主要是通过线性代数中的齐次坐标变换。
图像平移坐标变换如下:运行效果如下图所示,其中BMP图片(0,0)像素点为左下角。
其代码核心算法:1.在对话框中输入平移坐标(x,y) m_xPY=x,m_yPY=y2.定义Place=dlg.m_yPY*m_nWidth*3 表示当前m_yPY行需要填充为黑色3.新建一个像素矩阵ImageSize=new unsigned char[m_nImage]4.循环整个像素矩阵处理for(int i=0 ; i<m_nImage ; i++ ){if(i<Place) {ImageSize[i]=black;continue;}//黑色填充底部从小往上绘图else if(i>=Place && countWidth<dlg.m_xPY*3) {//黑色填充左部分ImageSize[i]=black;countWidth++; continue;}else if(i>=Place && countWidth>=dlg.m_xPY*3) {//图像像素平移区域ImageSize[i]=m_pImage[m_pImagePlace];//原(0,0)像素赋值过去m_pImagePlace++;countWidth++;if(countWidth==m_nWidth*3) {//一行填满m_pImagePlace走到(0,1)number++;m_pImagePlace=number*m_nWidth*3;}}}5.写文件绘图fwrite(ImageSize,m_nImage,1,fpw)第一步:在ResourceView资源视图中,添加Menu子菜单如下:(注意ID号)第二步:设置平移对话框。
MFC+类型转换

VC++类型转换整理已有 84 次阅读2009-11-30 16:18标签: 类型1、CString to char*经过类型强制转换,可以将CString类型转换成char*,例如:CString cStr = "Hello,world!";char* zStr = (char*)(LPCTSTR)cStr;2、char* to CStringchar*类型可以直接给CString,完成自动转换,例如:char* zStr = "Hello,world!";CString cStr = zStr;3、CString to LPCSTR将CString转换成LPCSTR,需要获得CString的长度,例如:CString cStr = _T("Hello,world!");int nLen = cStr.GetLength();LPCSTR lpszBuf = cStr.GetBuffer(nLen);4、CString to LPSTR这个和第3个技巧是一样的,例如:CString cStr = _T("Hello,world!");int nLen = str.GetLength();LPSTR lpszBuf = str.GetBuffer(nLen);5、Char[] to int将字符串类型转换成整数型,可以使用atoi函数,例如:char c[10];int n;n = atoi©;6、Char[] to float和第5个技巧一样,使用atof()函数可以转换成float型,例如:char c[10];float f;f = atof©;7、Char* to int和第5个技巧完全一样,例如:char *str = "100";int i;i = atoi(str);一、其它数据类型转换为字符串短整型(int)itoa(i,temp,10);///将i转换为字符串放入temp中,最后一个数字表示十进制itoa(i,temp,2); ///按二进制方式转换长整型(long)ltoa(l,temp,10);二、从其它包含字符串的变量中获取指向该字符串的指针CString变量str = "2008北京奥运";buf = (LPSTR)(LPCTSTR)str;BSTR类型的_variant_t变量v1 = (_bstr_t)"程序员";buf = _com_util::ConvertBSTRToString((_bstr_t)v1);三、字符串转换为其它数据类型strcpy(temp,"123");短整型(int)i = atoi(temp);长整型(long)l = atol(temp);浮点(double)d = atof(temp);四、其它数据类型转换到CString使用CString的成员函数Format来转换,例如:整数(int)str.Format("%d",i);浮点数(float)str.Format("%f",i);字符串指针(char *)等已经被CString构造函数支持的数据类型可以直接赋值str = username;五、BSTR、_bstr_t与CComBSTRCComBSTR、_bstr_t是对BSTR的封装,BSTR是指向字符串的32位指针。
超详细MFC_ComboBox_使用方法

2、向控件添加Items1) 在Combo Box控件属性的Data标签里面添加,一行表示Combo Box下拉列表中的一行。
换行用ctrl+回车。
2) 利用函数AddString() 向Combo Box 控件添加Items,如:m_cbExample.AddString(“StringData1”);m_cbExample.AddString(“StringData2”);m_cbExample.AddString(“StringData3”);3) 也可以调用函数InsertString() 将Item 插入指定位置nIndex,如:m_cbExample.InsertString( nIndex, “StringData” );3、从控件得到选定的Item假设在控件列表中已经选定某项,现在要得MFC ComboBox 使用方法Combo Box (组合框)控件很简单,可以节省空间。
从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的。
用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本。
下面的例子简要说明如何利用MFC CComboBox Class来操作字符串列表。
1、定义控件对应变量假定已经创建了一个Dialog,并且从控件工具箱将Combo Box 控件拖放到上面。
打开Class Wizard,添加控件对应变量,如:CComboBox m_cbExamble;在后面的代码中会不断使用这个变量。
2、向控件添加Items1) 在Combo Box控件属性的Data标签里面添加,一行表示Combo Box下拉列表中的一行。
换行用ctrl+回车。
2) 利用函数AddString() 向Combo Box 控件添加Items,如:m_cbExample.AddString(“StringData1”);m_cbExample.AddString(“StringData2”);m_cbExample.AddString(“StringData3”);3) 也可以调用函数InsertString() 将Item 插入指定位置nIndex,如:m_cbExample.InsertString( nIndex, “StringData” );3、从控件得到选定的Item假设在控件列表中已经选定某项,现在要得到被选定项的内容,首先要得到该项的位置,然后得到对应位置的内容。
MFC、C解决dll调用的问题

1,在MFC的Dialog中调用了由C创建的Dll文件先给出Win32 Dynamic Link Library的代码:#include <windows.h>#include <stdio.h>__declspec(dllexport) int say_hello(char* name);BOOL APIENTRY DllMain( HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved) {return TRUE;}__declspec(dllexport) int say_hello(char* name){printf( "hello %s\n ", name);return 1;}一个入口函数,一个自定义的函数下面是MFC中对dll的引用void CTestMyDllMFCDlg::OnImportDllbtn(){// TODO: 在此添加控件通知处理程序代码HINSTANCE hInstance=LoadLibrary(_T( "EmptyTestDll.dll"));//加载DLL//调用DisplayDialog函数if(hInstance){// 加载成功// 定义待访问函数原型// 获取函数地址int m=0;typedef int ( *say_hello)(CString);/*这里是个重要的点:int ( *say_hello)(CString);在MFC中的dll文件需要告知函数是由c或C++写成的,所以需要在函数名之前告诉编译器这个是一个C函数。
typedef void (WINAPI *LPFUN)(void);typedef void (__stdcall *LPFUN)(void);typedef void (FAR PASCAL *LPFUN) (void);像上面这样定义就OK了,如果用的是VC++,那么直接用第一种定义就ok了。
MFC控件使用方法

MFC控件使用方法VC2012下MFC程序各控件的常用方法分类:vc控件2013-02-16 16:32 94人阅读评论(0) 收藏举报一下控件的用法全部在VC2012下调试通过,特发文收藏(部分内容来自或参考自网络):Static Text:将ID号改成唯一的一个,如:IDC_XX,然后进一次类向导点确定产生这个ID,之后更改Caption属性:GetDlgItem(IDC_XX)->SetWindowText(L"dsgdhfgdffd");设置字体:CFont *pFont= new CFont;pFont->CreatePointFont(120,_T("华文行楷"));GetDlgItem(IDC_XX)->SetFont(pFont);Edit Control:设置文本:SetDlgItemT ext(IDC_XX,L"iuewurebfdjf");获取所有输入:建立类向导创建一个成员变量(假设是shuru1,shuru2……)类型选value,变量类型任选。
UpdateData(true);GetDlgItem(IDC_XX)->SetWindowText(shuru1);第一句更新所有建立了变量的对话框组件,获取输入的值。
第二句将前面的IDC_XX的静态文本内容改为shuru1输入的内容。
若类型选用control:1.设置只读属性:shuru1.SetReadOnly(true);2.判断edit中光标状态并得到选中内容(richedit同样适用)int nStart,nEnd;CString strTemp;shuru1.GetSel(nStart,nEnd);if(nStart== nEnd){strTemp.Format(_T("光标在%d" ),nStart);AfxMessageBox(strTemp);}else{//得到edit选中的内容shuru1.GetWindowText(strTemp);strTemp= strTemp.Mid(nStart,nEnd-nStart);AfxMessageBox(strTemp);}其中nStart和nEnd分别表示光标的起始和终止位置,从0开始。
mfc函数

mfc函数详解MFC(Microsoft Foundation Classes)是Microsoft提供的一组用于开发Windows图形用户界面(GUI)应用程序的C++类库。
MFC包含了许多功能强大的类和函数,用于简化Windows 应用程序的开发。
下面是一些常用的MFC函数的简要说明:1. `CWinApp::InitInstance`:-该函数在应用程序启动时被调用,用于初始化应用程序的实例。
在这里,你可以创建主窗口、执行一些初始化操作等。
2. `CWinApp::Run`:- `Run` 函数负责启动消息循环,使应用程序进入主消息循环。
在消息循环中,应用程序等待并处理用户输入、系统消息等。
3. `CFrameWnd` 类的构造函数:- `CFrameWnd` 是MFC中用于创建主窗口的类。
通过构造函数,你可以设置主窗口的一些属性,如窗口标题、初始位置、大小等。
4. `CWnd::Create`:- `Create` 函数用于创建窗口。
你可以在这里指定窗口的类名、标题、风格等属性。
5. `CWnd::OnCreate`:-该函数在窗口被创建时被调用,你可以在这里进行一些初始化工作,如创建子窗口、初始化控件等。
6. `CWnd::OnPaint`:-当窗口需要重绘时,`OnPaint` 函数被调用。
你可以在这里进行绘图操作,使用GDI(图形设备接口)进行图形绘制。
7. `CWnd::OnCommand`:-处理窗口中的命令消息。
当用户执行一些操作(例如点击按钮)时,会触发命令消息,`OnCommand` 函数负责处理这些消息。
8. `CDialog` 类的消息映射:-在对话框应用程序中,你可以使用消息映射机制,将用户输入和系统消息与类的成员函数关联起来。
例如,通过`ON_BN_CLICKED`宏将按钮点击事件与特定的函数关联。
9. `CMenu` 类和菜单相关函数:- MFC提供了`CMenu` 类和一系列函数,用于创建和管理菜单。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
mfc中format函数
摘要:
一、MFC简介
1.MFC的发展历程
2.MFC的特点和优势
二、MFC中的Format函数
1.Format函数的作用
2.Format函数的参数及用法
3.Format函数的返回值
三、Format函数的实际应用
1.格式化字符串
2.格式化输出
3.格式化文件
四、Format函数的注意事项
1.避免内存溢出
2.处理无效的格式字符
3.错误处理
正文:
MFC(Microsoft Foundation Class)是微软公司开发的一套C++类库,它为Windows平台上的应用程序开发提供了丰富的类和方法。
MFC从1992年的Windows 3.1版本开始发展,至今已经成为了Windows应用程序
开发的重要工具。
它通过封装Windows API,使得C++开发者能够更高效地开发Windows应用程序。
MFC具有如下特点和优势:
1.良好的封装性:MFC将复杂的Windows API封装成易于理解和使用的类和方法。
2.强大的功能:MFC提供了丰富的类和方法,涵盖了Windows应用程序开发的各个方面。
3.跨平台性:MFC支持多种编程语言和平台,如C++、C#等。
在MFC中,Format函数是一种用于格式化字符串的函数。
它的作用是将一个字符串按照指定的格式进行格式化,从而使得输出更加灵活和美观。
Format函数的原型如下:
```cpp
CString Format( LPCTSTR lpszFormat, ...);
```
其中,lpszFormat是格式化字符串,它包含了一些格式化占位符,如`%s`、`%d`等。
Format函数的参数是一个可变参数列表,用于传递需要插入到格式化字符串中的数据。
Format函数的返回值是一个格式化后的字符串。
Format函数在实际应用中非常广泛,可以用于格式化字符串、输出和文件等。
以下是一些Format函数的实际应用示例:
1.格式化字符串:
```cpp
CString str;
int a = 10;
int b = 20;
str.Format(_T("a = %d, b = %d"), a, b);
```
2.格式化输出:
```cpp
#include <iostream>
int main()
{
CString str;
int a = 10;
int b = 20;
str.Format(_T("a = %d, b = %d"), a, b);
std::cout << (LPCTSTR)str << std::endl;
return 0;
}
```
3.格式化文件:
```cpp
CFile file;
if (file.Open(_T("output.txt"), CFile::modeCreate | CFile::modeWrite)) {
CString str;
int a = 10;
int b = 20;
str.Format(_T("a = %d, b = %d"), a, b);
file.Write(str, str.GetLength());
file.Close();
}
```
在使用Format函数时,需要注意以下几点:
1.避免内存溢出:Format函数可能会导致内存溢出,因此在使用时要注意检查传入的字符串长度。
2.处理无效的格式字符:如果传入的格式字符串中包含无效的格式字符,Format函数将无法正确格式化字符串。