博文
介绍一下CWnd::OnCreate()的作用(2009-08-26 00:45:00)
摘要:
当Create or CreateEx 函数被调用时,OnCreate()它会被调用,所以,你可以重载OnCreate()来实现在某个窗口创建时附加首先要做的事情。
Usage: CWnd::Create
virtual BOOL Create( LPCTSTR lpszClassName,
LPCTSTR lpszWindowName,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID,
CCreateCon......
小笔记:strncpy函数(2009-08-26 00:04:00)
摘要:
strncpy
语法:
#include <string.h> char *strncpy( char *to, const char *from, size_t count );
功能:将字符串from 中至多count个字符复制到字符串to中。如果字符串from 的长度小于count,其余部分用'\0'填补。返回处理完成的字符串。
在学生管理系统上用到了:
void CStudent::AddStudentName(char* pszName)
{
assert(pszName);
strncpy(m_pszName,pszName,MAX_NAME);
m_pszName[MAX_NAME] = '\0';
}......
在VisualC++中如何使用fopen()函数来读写文件(2009-08-25 10:31:00)
摘要:很多使用过Turbo C的朋友喜欢用fopen()函数来读写文件,在Visual C++环境中您也可以使用fopen()来读写文件。而且您还可以使用Visual C++中的标准的打开文件对话框,这样可以使选取读写文件的路径更方便。具体的做法是这样的。
首先您需要使用到MFC基本类库,在您原有的Visual C++程序中加上一个由CFileDialog类派生的新类,例如是CMyFileDialog,然后用这个新类定义一个对象,例如是:myDlg,使用这个对象的DoModal()方法,就可以呼出打开文件的对话框。这样,您只要把被选中的路径名及文件名传送给fopen()函数就可以打开读写这个文件了。
CMyFileDialog myDlg(true);
定义一个对话框对象
myDlg.DoModal();
呼出打开文件对话框
CString fileName;
定义一个Cstring类型的字符串来存储文件的路径及文件名
fileName=myDlg.GetPathName();
得到文件的路径及文件名
由于fopen()函数中需要的文件名参数是字符型的,所以我们还需要把CString类型的文件名转换为字符类型的变量。
int i, length;
定义i作为循环变量,定义length作为文件路径及文件名的长度
Char* FileName;
定义char型的字符指针来存储文件名,给fopen()函数使用
length=fileName.GetLength();
把文件名的长度赋给length变量
FileName=new char[length];
给char型的指针变量FileName分配内存空间
for(i=0;i把CString型变量fileName中的字符一个一个地赋给char型的指针变量FileName
*(FileName+i)=fileName.GetAt(i);
*(FileName+length)=NULL;
在FileName变量的最后加上一个结束标志
这样,您就要吧使用fopen(FileName,"w")来写文件,或者是用......
【转】vc ON_CONTROL_RANGE 多个控件响应一个方法(2009-08-23 22:21:00)
摘要:分三个步骤
1.在头文件中声明函数例如
afx_msg void onNum(UINT uID)
2.在.cpp文件中添加函数体
void CCalculatorDlg::OnNum(UINT uID)
{
UINT index=uID-IDC_NUM_0;
CString num;
num.Format(_T("%d"),index);
AfxMessageBox(num);
}
3.添加消息映射
ON_CONTROL_RANGE(BN_CLICKED,IDC_NUM_0,IDC_NUM_9,OnNum)
第一个参数 事件
第二个参数 控件的第一个id
第三个参数 空间的最后一个id
第四个参数 响应事件的方法
注意 id号必须是连续的 如果是自己手动修改的
请先点击 build -Clear 然后在重新编译......
如何在MFC中使用LISTBOX控件(2009-08-19 00:48:00)
摘要:如何在MFC中使用LISTBOX控件。实例如下:
一。首先新建一个Single或者对话框类型的MFC.EXE工种。
二。插入一个Dialog,然后新建一个类CDlgList,我们可以利用这个控件显示项目,也可实现多选,得到选项总数等.其源程序如下:
// DlgList.cpp : implementation file
//
#include "stdafx.h"
#include "testvc.h"
#include "DlgList.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDlgList dialog
CDlgList::CDlgList(CWnd* pParent /*=NULL*/)
: CDialog(CDlgList::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgList)
//}}AFX_DATA_INIT
}
void CDlgList::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgList)
DDX_Control(pDX, IDC_BUTTON1, m_Del);
DDX_Control(pDX, IDC_EDIT1, m_Edit);
DDX_Control(pDX, IDC_LIST1, m_Lst);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDlgList, CDialog)
//{{AFX_MSG_MAP(CDlgList)
ON_BN_CLICKED(IDC_BUTTON1, OnAddString)
ON_BN_CLICKED(......
mfc之ListBox介绍(2009-08-19 00:47:00)
摘要:ListBox窗口用来列出一系列的文本,每条文本占一行。创建一个列表窗口可以使用成员函数:
BOOL CListBox::Create( LPCTSTR lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff );
其中dwStyle将指明该窗口的风格,除了子窗口常用的风格WS_CHILD,WS_VISIBLE外,你可以针对列表控件指明专门的风格。
LBS_MULTIPLESEL 指明列表框可以同时选择多行
LBS_EXTENDEDSEL 可以通过按下Shift/Ctrl键选择多行
LBS_SORT 所有的行按照字母顺序进行排序
在列表框生成后需要向其中加入或是删除行,可以利用:
int AddString( LPCTSTR lpszItem )添加行,
int DeleteString( UINT nIndex )删除指定行,
int InsertString( int nIndex, LPCTSTR lpszItem )将行插入到指定位置。
void ResetContent( )可以删除列表框中所有行。
通过调用int GetCount( )得到当前列表框中行的数量。
如果需要得到/设置当前被选中的行,可以调用int GetCurSel( )/int SetCurSel(int iIndex)。如果你指明了选择多行的风格,你就需要先调用int GetSelCount( )得到被选中的行的数量,然后int GetSelItems( int nMaxItems, LPINT rgIndex )得到所有选中的行,参数rgIndex为存放被选中行的数组。通过调用int GetLBText( int nIndex, LPTSTR lpszText )得到列表框内指定行的字符串。
此外通过调用int FindString( int nStartAfter, LPCTSTR lpszItem )可以在当前所有行中查找指定的字符传的位置,nStartAfter指明从那一行开始进行查找。
int SelectString( int nSta......
MFC ListBox(2009-08-19 00:46:00)
摘要:ListBox的操作比较简单
1添加数据
声明控件变量的类别为Control,变量类型为CListBox,变量名为m_ListBox_Content.
m_ListBox_Content.AddString(_T("123"));
m_ListBox_Content.AddString(_T("汉字"));
m_ListBox_Content.AddString(_T("English"));
m_ListBox_Content.AddString(_T("!@#$%^&*()"));
2获取数据
CString s;
m_ListBox_Content.GetText(1,s);
MessageBox(s,_T("取得第2行数据"),MB_OK);
s.ReleaseBuffer();
将会得到"汉字"这个字符串,如果没有得到"汉字"这个字符串,是因为ListBox的Sort属性设为True了.设为False之后就按照你编写的顺序写入.
3获取选择的数据
首先要将ListBox的Selection属性设置为Multiple;
int nSel;
nSel=m_ListBox_Content.GetCurSel();
CString s;
m_ListBox_Content.GetText(nSel,s);
MessageBox(s,_T("您选择的是"),MB_OK);
s.ReleaseBuffer();
4获取选择ListBox项的多个数据
首先要将ListBox的Selection的属性设置为Multiple
int nSel = m_ListBox_Content.GetSelCount();
CArray< int,int& > arrayListSel;
arrayListSel.SetSize(nSel);
m_ListBox_Content.GetSelItems(nSel,arrayListSel.GetData());
CString s = _T("");
for( int i=0; i......
MessageBox的用法(2009-08-19 00:41:00)
摘要: 我们写MFC程序的时候经常会用到MessageBox这个函数,用来显示一些提示信息,而且通常我们用的都是很简单的形式。今天我看了Word里退出是显示的提示保存的对话框之后忽然想到用MFC的MessageBox是不是也可以实现呢?于是,我仔细的查了一下,于是就总结了一些常用的用法。
先来看Messagebox函数的原型:
int MessageBox( LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK );
参数解释:
lpszText ------ 对话框显示的内容
pszCaption ------ 对话框的标题,默认的空
nType ------ 对话框的类型,默认的类型为只显示一个确定按钮
前两个参数都不需要说明解释,主要的就是最后一个类型参数。MFC中为MessageBox定义了一些类型:
MB_ABORTRETRYIGNORE ------ 对话框显示中止,重试和忽略三个按钮
MB_OK ------ 前面说过,是默认类型,对话框只显示一个确定按钮
MB_OKCANCEL ------ 显示确定和取消两个按钮
MB_RETRYCANCEL ------ 显示重试和取消两个按钮
MB_YESNO ------- 显示是和否两个按钮
MB_YESNOCANCEL ------ 显示是,否和取消两个按钮
以上是全部的基本的标识,还有一些辅助的标识:
MB_DEFBUTTON1 ------ 用来确定选中的按钮,表示选中第一个按钮,此项为默认的选中按钮
MB_DEFBUTTON2 ------ 表示选中第二个按钮
MB_DEFBUTTON3 ------ 表......
MFC各类的层次结构(2009-07-24 16:48:00)
摘要: 《深入浅出MFC》(侯俊杰著)几次强调:MFC程序设计的第一要务是熟记各类的层次结构,并清楚了解其中几个一定会用到的类。
下面是类结构的详细图解和MFC的发展:
http://www.cppblog.com/andxie99/archive/2008/06/04/9747.html
里面那个博客有详细资料。没毒的,朋友放心。......