试验三非标准控件的使用文档格式.docx

上传人:b****6 文档编号:20412391 上传时间:2023-01-22 格式:DOCX 页数:12 大小:126.44KB
下载 相关 举报
试验三非标准控件的使用文档格式.docx_第1页
第1页 / 共12页
试验三非标准控件的使用文档格式.docx_第2页
第2页 / 共12页
试验三非标准控件的使用文档格式.docx_第3页
第3页 / 共12页
试验三非标准控件的使用文档格式.docx_第4页
第4页 / 共12页
试验三非标准控件的使用文档格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

试验三非标准控件的使用文档格式.docx

《试验三非标准控件的使用文档格式.docx》由会员分享,可在线阅读,更多相关《试验三非标准控件的使用文档格式.docx(12页珍藏版)》请在冰豆网上搜索。

试验三非标准控件的使用文档格式.docx

ComponentsAndControls,再选择RegisteredActiveXControls,如下图所示:

这里会列出系统中当前已经注册的所有ActiveX控件,找到所需控件后选中,点击Insert,ClassWizard就会产生一个CWnd的派生类,点击OK即可。

一个尚未注册的ActiveX控件,是不会出现在上图的文件列表中的。

利用系统提供的注册软件regsvr32可以进行注册。

如需注册播放器控件msdxm.ocx,在命令行提示符下键入:

regsvr32msdxm.ocx

该命令有些其它选择:

/u/s/n/I

如在注册表中去掉已注册的控件,用/u,在命令行提示符下键入:

regsvr32/umsdxm.ocx

2、具体步骤

2.1CommandButton对话框

首先创建一个单文档工程(也可分别创建3个基于对话框的工程)。

(1)添加测试菜单,设置图像按钮菜单的属性,见下图:

如下图添加加速健Ctrl+F2:

为项目新建一个对话框,利用ClassWizard创建对话框的生成类,命名为CButtonDlg。

在此对话框中添加控件MicrosoftForms2.0CommandButton。

(2)为菜单添加command消息函数

如下图,在Classname一栏选择视图类,菜单的ID名称ID_BUTTON,COMMAND消息,然后点击添加消息函数:

编辑消息函数:

voidCActivexView:

:

OnButton()

{

//TODO:

Addyourcommandhandlercodehere

CButtonDlgdlg;

dlg.DoModal();

}

添加对话框类头文件:

#include"

ButtonDlg.h"

(3)访问命令按钮

在对话框类CButtonDlg中,为命令按钮添加成员变量m_commandButton,用来改变控件的设置。

ActiveX控件中有一通用成员函数SetPicture(),利用它可以设置ActiveX控件显示的位图;

然后在工程资源中编辑两幅位图以备使用,其ID为IDB_RED_BITMAP及IDB_BLUE_BITMAP,注意:

绘制图片不要在满幅图涂上单色。

首先添加头文件:

afxctl.h"

,就可以用类CPictureHolder。

CPictureHolder类的设计目的是实现ActiveX控件的Picture属性(可由SetPicture函数实现),它可以将一个图像等控件的名称转换成控件指针dispatchpointer,帮助SetPicture函数实现设置。

编写按钮的消息函数如下:

boolbChange;

voidCButtonDlg:

OnClickCommandbutton1()

Addyourcontrolnotificationhandlercodehere

CPictureHolderpictholder;

if(!

bChange)

{

pictholder.CreateFromBitmap(IDB_BLUE_BITMAP);

//从ID到LPDISPATCH的转换

m_commandButton.SetPicture(pictholder.GetPictureDispatch());

//利用ActiveX通用的SetPicture来设置CommandButton的位图

}

else

pictholder.CreateFromBitmap(IDB_RED_BITMAP);

m_commandButton.SetPicture(pictholder.GetPictureDispatch());

}

bChange=!

bChange;

//换另一位图

2.2ActiveMovieControl对话框

1.注册控件:

在命令行运行regsvr32msdxm.ocx。

2.为项目添加控件ActiveMovieControlObject。

3.添加对话框,生成对应类。

放入该控件。

对话框如下图所示:

同样为ActiveMovieControl控件添加成员变量m_ActiveMoive,使用CFileDialog来选择需要打开的文件,通过m_ActiveMovie.SetFileName()及m_ActiveMovie.Run()播放选择的文件。

添加“打开”按钮的click消息函数,编辑代码如下:

voidCMy32Dlg:

OnButton1()

charszFileFilter[]=

"

全部支持类型|*.mp3;

*.wma;

*dat;

*.wav;

*.avi;

*mid;

*.mpeg|"

Mp3File(*.mp3)|*.mp3|"

WmaFile(*.wma)|*.wma|"

VideoFile(*.dat)|*.dat|"

WaveFile(*.wav)|*.wav|"

AVIFile(*.avi)|*.avi|"

MidFile(*.mid;

*,rmi)|*.mid;

*.rmi|"

MPEGFile(*.mpeg)|*.mpeg|"

AllFile(*.*)|*.*||"

;

CFileDialogdlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);

if(dlg.DoModal()==IDOK)

{

CStringPathName=dlg.GetPathName();

PathName.MakeUpper();

m_movie.SetFileName(PathName);

}//获取播放文件信息

elsereturn;

m_movie.Run();

//播放文件

SetTimer(0,20,NULL);

//设置定时器

2.3MsFlexGrid对话框

对话框入下图所示:

为MsFlexGrid添加成员变量m_FlexGridData_Ctrl,使用CFileDialog来选择需要打开或保存的数据文件(此处为文本文件)。

需要用到的MsFlexGrid成员函数如下:

m_FlexGridData_Ctrl.SetCol(intCol);

//选择行号

m_FlexGridData_Ctrl.SetRow(intRow);

//选择列号

m_FlexGridData_Ctrl.SetText(CStringText);

//设置Row行,Col列的内容

m_FlexGridData_Ctrl.SetRows(intRows);

//设置总行数

m_FlexGridData_Ctrl.SetCols(intCols);

//设置总列数

m_FlexGridData_Ctrl.GetText();

//得到当前内容

读取数据文件内容时可使用CFile类,用到的成员函数有:

CFile:

Open(LPCTSTRlpszFileName,UINTnOpenFlags,CFileException*pError=NULL)//打开文件

Write(constvoid*lpBuf,UINTnCount);

//写文件

通过Cfile:

Open()将数据文件内容装入CString类型变量内,然后通过各种字符串操作将数据内容写入对应的MsFlexGrid表格内。

使用到的字符串操作函数如下:

CString:

IsEmpty();

//变量是否为空

Mid(intnFirst,intnCount);

//获取nFirst开始之后nCount个字符的内容

Find(LPCTSTRpstr,intnStart);

//在字符串nStart处开始查找pstr指定的内容

以上各函数的定义及使用方法在MSDN中均有详细说明。

编程步骤:

1.在ClassWizard中为控件添加成员变量:

m_FlexGridData_Ctrl;

2.双击“打开”按钮,为其添加消息函数,编码如下:

voidCGridDlg:

CFilemyDataFile;

charDataBuf[1025];

memset(DataBuf,0,1025);

支持类型|*.txt|"

文本文件(*.txt)|*.txt|"

所有文件(*.*)|*.*||"

CStringDataStr;

CStringPathName;

if(dlg.DoModal()==IDOK)

PathName=dlg.GetPathName();

myDataFile.Open(PathName,CFile:

modeRead);

myDataFile.SeekToBegin();

myDataFile.Read(DataBuf,myDataFile.GetLength());

//将数据文件内容保存在字符串中

DataStr=DataBuf;

//char*转换为cstring便于处理

myDataFile.Close();

intpos1=0,pos2=0;

//字符串指针位置

inti=0;

//行号

intj=0;

//列号

intk;

charlpstrRow[100]="

1"

//编号

m_FlexGridData_Ctrl.SetCol(0);

m_FlexGridData_Ctrl.SetRow(0);

m_FlexGridData_Ctrl.SetText("

编号"

);

m_FlexGridData_Ctrl.SetCol

(1);

姓名"

m_FlexGridData_Ctrl.SetCol

(2);

政治"

m_FlexGridData_Ctrl.SetCol(3);

高数"

m_FlexGridData_Ctrl.SetCol(4);

物理"

m_FlexGridData_Ctrl.SetCol(5);

化学"

//初始化FlexGrid

//m_FlexGridData_Ctrl.SetRows((int)(DataStr.GetLength()/18)+2);

m_FlexGridData_Ctrl.SetRows(100);

m_FlexGridData_Ctrl.SetCols(6);

for(i=1;

i<

=(int)(DataStr.GetLength()/18);

i++)

{

m_FlexGridData_Ctrl.SetRow(i);

//需要设置或修改的行号

itoa(i,(char*)lpstrRow,100);

m_FlexGridData_Ctrl.SetText(lpstrRow);

//将第0列作为编号

for(j=1;

j<

=5;

j++)

{

m_FlexGridData_Ctrl.SetCol(j);

//需要设置或修改的列号

if(j==5){pos2=DataStr.Find('

\n'

pos2)+1;

k=2;

}//输出最后一门成绩

else{pos2=DataStr.Find('

'

pos1)+1;

k=1;

}//定位课程成绩

//if(j==5&

&

i==6)pos2=pos2+2;

m_FlexGridData_Ctrl.SetText(DataStr.Mid(pos1,pos2-pos1-k));

//显示数据

pos1=pos2;

//移动位置指针

3.添加“关闭”按钮的消息函数,代码如下:

OnButton2()

//PathName.MakeUpper();

modeCreate|CFile:

modeWrite);

intmaxRow=m_FlexGridData_Ctrl.GetRows();

intmaxCol=m_FlexGridData_Ctrl.GetCols();

CStringdata;

//表格中的数据

char*dataBuf;

//写入数据文件的字符串指针

for(inti=1;

maxRow;

for(intj=1;

j<

maxCol;

m_FlexGridData_Ctrl.SetRow(i);

m_FlexGridData_Ctrl.SetCol(j);

data=m_FlexGridData_Ctrl.GetText();

if(data.IsEmpty())//是否到达表格末尾?

{

gotoend;

}

dataBuf=(char*)(LPCTSTR)data;

//cstring转换为char*,便于写入文件

myDataFile.Write(dataBuf,data.GetLength());

//写入数据

if(j==5)break;

myDataFile.Write("

"

1);

//写入分隔标志

if(i==maxRow-1)break;

myDataFile.Write("

\r\n"

2);

//写入换行

end:

//关闭文件,切记

4.添加控件的KeyPress消息函数,代码如下:

OnKeyPressMsflexgrid1(shortFAR*KeyAscii)

CStringstr;

str=m_FlexGridData_Ctrl.GetText();

//获得当前位置的数据

str+=(char)*KeyAscii;

//添加键入的数据(或字符)

m_FlexGridData_Ctrl.SetText(str);

//再写到同样的位置

四、思考题

1、使用CCommandButton:

SetPicture(LPDISPATCHnewValue)时,如何将位图的nID转换为LPDISPATCH型?

2、当改变对话框窗口大小时,如何使控件大小随之改变?

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 艺术创意

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1