当前位置:网络安全 > vs2010添加结构体_vs2010编译C++结构体

vs2010添加结构体_vs2010编译C++结构体

  • 发布:2023-09-30 12:39

//结构体的测试//CTest.cpp:定义控制台应用程序的入口点。

//

#include“stdafx.h”

#包括

使用命名空间 std;

结构人{

字符名称[15];

char sex;

int年龄;

}m[3]={{"方敏",'F',24},{"李林",'M',23},{"吴斌",'M',23}};

int _tmain(int argc, _TCHAR* argv[])

{

人 *p = m;

cout<<"姓名"<<"\t"<<"性别"<<"\t"<<"年龄"<

for(;p

cout<姓名<<"\t"<性别<<"\t"<年龄<

}

cout<<"你好世界"<

系统(“暂停”);

返回0;

}

转载于:https://www.sychzs.cn/bksqmy/p/4523699.html

实验目的

使用结构体变量和结构体变量指针分别输出结构体的每个成员

实验要点

为了表示一些复杂的事物,普通的基本类型无法满足实际要求

结构:将一些基本类型的数据组合起来,形成新的复合数据类型

实验步骤

1。打开VS2010,新建一个项目,选择空项目并命名,在源文件中添加新项,选择C++文件并命名,后缀为.cpp

2。敲代码的时候先写基本框架

# 包括

int main()

{

返回0;

}

3。在纸上写下大致思路:首先定义一个结构体,其中包含三个成员(例如age、score、sex),然后定义结构体变量(例如st)和结构体变量指针(例如st) )。示例为pst),输入数据(示例为age=21,score=666.6,sex=F)并输出,代码如下:

# 包括

int main()

{

//定义一个结构体,数据类型为struct Student

结构学生

{

int年龄;

浮动分数;

char sex;

};

struct Student st;//结构体变量为st

年龄 = 21;

st.score = 666.6;

www.sychzs.cn = 'F';

printf("年龄:%d 成绩:%f 性别:%c\n",st.age,st.score,www.sychzs.cn);

struct Student * pst = &st;//结构体指针变量为pst

printf("年龄:%d 分数:%f 性别:%c\n",pst->年龄,pst->分数,pst->性别);

返回0;

}

4。实验结果(如果运行时不显示cmd且不报错,可以右键通用工程名,点击属性,修改链接器下系统中的子系统,选择控制台(/SUBSYSTEM:CONSOLE)然后申请即可):

实验总结

定义时可以指定初始值,但定义后只能指定单个值(本实验属于后者)

结构体变量名.成员名 = 结构体指针变量名->成员名(后者会在计算机内部转换为(*结构体指针变量名)).成员名

示例为:st.age = pst->age -----------(*pst).age

结构体指针变量名->成员名:结构体指针变量指向结构体变量中的成员

http://www.sychzs.cn/software/197.html

上一节讲的是列表视图控件List Control的前半部分。简要介绍了列表视图控件、其通知消息处理以及相关结构体的定义。本节继续讲解后半部分,包括列表视图控件的创建、CListCtrl类的主要成员函数以及CListCtrl类的应用示例。

??????创建列表视图控件

??????MFC还提供了CListCtrl类用于列表视图控件的操作。

??????如果我们不想将List控件直接拖到对话框模板中来使用列表视图控件,而是想动态创建它,就需要使用CListCtrl类的成员函数Create函数。原型如下:

virtual BOOL Create( ?? DWORD dwStyle, ?? const RECT& rect, ?? CWnd* pParentWnd, ?? UINT nID );

??????参数 rect 是列表视图控件的位置和大小,pParentWnd 是指向父窗口的指针,nID 指定列表视图控件的 ID,最复杂的参数也是 dwStyle,用于设置的样式列表视图控件可以是以下样式的组合:

???????????????风格??????????????????????????????这是什么意思???LVS_ALIGNLEFT?????????????????????????????????????????? ??????????????????????????????当图标较大或较小时,标签放置在图标的左侧。 LVS_ALIGNTOP。显示格式为大图标或小图标。当图标较小时,标题位于图标上方。 LVS_AUTOARRANGE。当显示格式为大图标或小图标时,控件中的列表项会自动排列。 ???? LVS_EDITLABELS ?????????????????????用户可以修改标签文本?????? LVS_ICON ????????? ????????????????????????指定大图标显示格式??????LVS_LIST??????????????? ?? ??????????????????指定列表显示格式??????LVS_NOCOLUMNHEADER?????????报表格式中不显示列标题?? ? ??? LVS_NOLABELWRAP????????????????????????????????? LVS_NOLABELWRAP 当显示格式为大图标时,标签文本显示在一行。默认是多行显示?????? LVS_NOSCROLL????????????????????????列表视图控件没有滚动条,该样式不能与 LVS_LIST 或 LVS_REPORT 结合使用 ??????LVS_NOSORTHEADER????????????报告格式的列表视图控件的标题不能为用作排序按钮??????LVS_OWNERDRAWFIXED?????????由控件的所有者负责绘制表项?????? LVS_REPORT?????????????????????????????? ? LVS_SHAREIMAGELISTS?????????导致列表视图共享图像序列?????? ???? LVS_SINGLESEL ????????????????????????指定列表项只能有一个已选择。默认情况下可以进行多项选择?????? LVS_SMALLICON?????????????????????指定小图标显示格式?????? LVS_排序升序??? ???????按升序对列表项进行排序?????? LVS_SORTDESCENDING ?????????按降序对列表项进行排序

??????和之前的控件一样,除了上述样式外,我们还需要为列表视图控件设置WS_CHILD和WS_VISIBLE样式。对于直接在对话框模板中创建的列表视图控件,其属性页中的属性与上述样式相对应。例如,属性Alignment默认为Left,相当于指定LVS_ALIGNLEFT样式。

?????? CListCtrl类的主要成员函数

?????? CListCtrl类有许多成员函数。这里介绍几个常用的主要成员函数。

??????UINT GetSelectedCount( ) const;

??????此函数返回列表视图控件中选定列表项的数量。

?????? POSITION GetFirstSelectedItemPosition( ) const;

??????获取列表视图控件中第一个选定项目的位置。返回的 POSITION 值可用于迭代以获得其他选择项。可以将其作为参数传递给下面的GetNextSelectedItem函数来获取选择项的索引。如果未选择任何项目,则返回 NULL。

?????? int GetNextSelectedItem(POSITION& pos) const;

??????该函数获取 pos 指定的列表项的索引,然后将 pos 设置为下一个位置的 POSITION 值。参数 pos 是对通过调用 GetNextSelectedItem 或 GetFirstSelectedItemPosition 获得的 POSITION 值的引用。返回值是 pos 指定的列表项的索引。

?????? int GetItemCount() const;

??????获取列表视图控件中的列表项数。

?????? int InsertColumn(int nCol,const LVCOLUMN* pColumn ); ???? int InsertColumn(int nCol,LPCTSTR lpszColumnHeading,int nFormat = LVCFMT_LEFT,int nWidth = -1,int nSubItem = -1 );

??????这两个函数用于在报表样式列表视图控件中插入列。第一个函数中,nCol参数是插入列的索引,pColumn参数指向LVCOLUMN结构,该结构包含插入列的属性。在第二个函数中,nCol参数也是插入列的索引,lpszColumnHeading参数是列标题字符串,nFormat参数是列中文本的对齐方式,可以是LVCFMT_LEFT、LVCFMT_RIGHT或LVCFMT_CENTER,nWidth参数是列宽,nSubItem是插入的列。对应列表项的索引。两个函数在成功时返回新列的索引,在失败时返回 -1。

?????? BOOL 删除列(int nCol);

??????该函数用于删除列表视图控件中的一列。参数nCol是被删除列的索引。删除成功返回TRUE,删除失败返回FALSE。

?????? int InsertItem(int nItem,LPCTSTR lpszItem);

??????将新列表项插入列表视图控件。参数nItem是要插入的项的索引,参数lpszItem是要插入的项的标签字符串。如果插入成功则返回新列表项的索引,否则返回-1。

?????? BOOL 删除项目(int nItem);

??????从列表视图控件中删除列表项。 nItem 参数指定要删除的列表项的索引。如果删除成功则返回TRUE,否则返回FALSE。

?????? CString GetItemText(int nItem,int nSubItem) const;

??????获取指定列表项或列表子项的显示文本。参数nItem指定列表项的索引,参数nSubItem指定列表子项的索引。 ?

?????? BOOL SetItemText(int nItem,int nSubItem,LPCTSTR lpszText);

??????设置指定列表项或列表子项的显示文本。参数nItem和nSubItem与GetItemText相同。参数lpszText为要设置的显示文本字符串。设置成功则返回TRUE,否则返回FALSE。

?????? DWORD_PTR GetItemData(int nItem) const;

??????此函数用于获取指定列表项的附加32位数据。参数nItem是列表项的索引。返回值是nItem指定的列表项的附加32位数据。

?????? BOOL SetItemData(int nItem,DWORD_PTR dwData);

??????该函数用于为指定的列表项设置附加的32位数据。参数nItem是列表项的索引,参数dwData是列表项的附加32位数据。

?????? CListCtrl类应用示例

??????最后,季培米给大家写一个简单的例子来说明CListCtrl类的几个成员函数和通知消息的使用。因为开发中最常用的是报表式的List Control,所以吉佩米给大家写了一个报表List Control的例子。

??????本例实现的功能:在单选列表视图控件中显示一个简单的编程语言排名,然后当用鼠标左键选择一个列表项时,所选列表项的文本就会显示到编辑框中。具体实施步骤如下:

?????? 1. 创建一个基于对话框的MFC 项目,名称设置为“Example29”。

?????? 2. 在自动生成的对话框模板IDD_EXAMPLE29_DIALOG 中,删除“TODO:在此处放置对话框控件”。静态文本控件,“确定”按钮和“取消”按钮。添加一个List Control控件,设置ID为IDC_PROGRAM_LANG_LIST,设置View属性为Report,即报表样式,设置Single Selection属性为True。添加另一个静态文本控件和一个编辑框。将静态文本控件的 Caption 属性设置为“选定语言:”,将编辑框的 ID 设置为 IDC_LANG_SEL_EDIT,并将 Read Only 属性设置为 True。此时的对话框模板如下:

?????? 3、将CListCtrl类型控制变量m_programLangList添加到列表视图控件IDC_PROGRAM_LANG_LIST中。

?????? 4.初始化对话框时,我们将编程语言排名添加到列表视图控件中,那么我们需要将CExample29Dlg::OnInitDialog()函数修改为:

C++ 代码

BOOL?CExample29Dlg::OnInitDialog() ??{ ??????CDialogEx::OnInitDialog(); ??????//?添加?“关于...”?菜单?项目?到?系统?菜单。 ?????????//IDM_ABOUTBOX必须在系统命令范围内。 ??????ASSERT((IDM_ABOUTBOX?&?0xFFF0)?==?IDM_ABOUTBOX); ??????ASSERT(IDM_ABOUTBOX?AppendMenu(MF_SEPARATOR); ????????????pSysMenu->AppendMenu(MF_STRING,?IDM_ABOUTBOX,?strAboutMenu ); ?????? ????} ??????} ??????//?设置此对话框的图标。??框架自动执行此操作?????? ?//??当应用程序的?main?window?不是?a?dialog ??????SetIcon(m_hIcon,?TRUE);?????? ????//?Set? big?icon ??????SetIcon(m_hIcon,?FALSE);??????//?Set?small?icon ??????? //?TODO:?Add?extra?初始化?here ??????CRect?rect; ??????//?获取编程语言列表视图控件的位置和大小?????? m_programLangList.GetClientRect(&rect); ??? ??????//?向列表视图控件添加全行选择和网格样式??????m_programLangList.SetExtendedStyle(m_programLangList.GetExtendedStyle()?|?LVS_EX_FULLROWSELECT? |?LVS_EX_GRIDLINES); ?????? ????//?添加列表视图控件三列???m_programLangList.InsertColumn(0,?_T("语言"),?LVCFMT_CENTER,?rect.Width()/3,?0); ????m_programLangList.InsertColumn(1, ?_T("2012.02 排行榜"),?LVCFMT_CENTER,?rect.Width()/3,?1); ????m_programLangList.InsertColumn(2,?_T("2011.02排行榜"),?LVCFMT_CENTER,?rect.Width()/3,?2); ?????????//?在列表视图控件中插入列表项并设置列表子项文本??????m_programLangList.InsertItem(0, ?_T("Java")); ??????m_programLangList.SetItemText(0,?1,?_T("1")); ??????m_programLangList.SetItemText(0,?2,?_T ("1")); ??????m_programLangList.InsertItem(1,?_T("C")); ??????m_programLangList.SetItemText(1,?1,?_T("2") ); ??????m_programLangList.SetItemText(1,?2,?_T("2")); ??????m_programLangList.InsertItem(2,?_T("C#")); ??? ???m_programLangList.SetItemText(2,?1,?_T("3")); ???m_programLangList.SetItemText(2,?2,?_T("6")); ???? ?m_programLangList.InsertItem(3,?_T("C++")); ????m_programLangList.SetItemText(3,?1,?_T("4")); ????m_programLangList.SetItemText( 3,?2,?_T("3")); ??????返回?TRUE;??//?返回?TRUE??u除非您将焦点设置为控件??}??

?????? 5.我们希望当选中的列表项发生变化时,最新选中的项能够实时显示在编辑框中,这时我们可以使用NM_CLICK通知消息。在列表框IDC_PROGRAM_LANG_LIST的通知消息NM_CLICK中添加消息处理函数CExample29Dlg::OnNMClickProgramLangList,并修改如下:

C++ 代码

void?CExample29Dlg::OnNMClickProgramLangList(NMHDR?*pNMHDR,?LRESULT?*pResult) ??{ ??????LPNMITEMACTIVATE?pNMItemActivate?=?reinterpret_cast(pNMHDR); ???? //?TODO:?在此处添加您的控制通知处理程序代码??????*pResult?=?0; ??????CString?strLangName;??????//?选择语言名称字符串??????NMLISTVIEW?*pNMListView?=?(NMLISTVIEW*)pNMHDR; ??????if?(-1?!=?pNMListView->iItem)?? ??????//?如果iItem不为-1,则表示选中了一个列表项??????{ ????????????//?获取第一个选中的列表项子项的文本?????????strLangName?=?m_programLangList.GetItemText(pNMListView->iItem,?0); //?在编辑框中显示选择的语言?????????SetDlgItemText(IDC_LANG_SEL_EDIT,?strLangName); ??????} ??}??

?????? 6. 运行程序,会弹出结果对话框。当您使用鼠标更改对话框列表框中的选定项时,编辑框中的显示也会相应改变。效果图如下:

?????????关于列表视图控件List Control的内容终于写完了。内容很多,但其实这些只是其中的一部分。在实际开发中,你会遇到各种各样的问题。你需要查阅MSDN。或者上网查找资料来解决问题。最后感谢大家对本次VS2010/MFC教程的关注。

相关文章