博文

介绍一下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......

阅读全文(2198) | 评论:0

小笔记: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';
}......

阅读全文(1804) | 评论: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")来写文件,或者是用......

阅读全文(1711) | 评论:0

【转】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   然后在重新编译......

阅读全文(1631) | 评论:1

如何在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(......

阅读全文(5916) | 评论:1

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......

阅读全文(10901) | 评论:2

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......

阅读全文(3309) | 评论:0

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  ------  表......

阅读全文(3090) | 评论:1

MFC各类的层次结构(2009-07-24 16:48:00)

摘要:    《深入浅出MFC》(侯俊杰著)几次强调:MFC程序设计的第一要务是熟记各类的层次结构,并清楚了解其中几个一定会用到的类。      下面是类结构的详细图解和MFC的发展: http://www.cppblog.com/andxie99/archive/2008/06/04/9747.html     里面那个博客有详细资料。没毒的,朋友放心。......

阅读全文(1123) | 评论:0