闂傚倸鍊搁崐鎼佸磹閹间礁纾瑰瀣捣閻棗銆掑锝呬壕濡ょ姷鍋為悧鐘汇€侀弴銏犖ч柛灞剧煯婢规洖鈹戦缁撶細闁告鍐f瀺鐎广儱娲犻崑鎾舵喆閸曨剛顦繝鈷€鍕垫疁妤犵偛妫濆顕€宕煎顏佹櫊閹鏁愭惔婵堝嚬閻庣懓鎲$换鍕閹烘挻缍囬柕濞垮劤閻熴劌顪冮妶搴′簼缂侇喗鎸搁悾鐑藉础閻愬秶鍠栭幃娆撳箣濠靛洤顦╅梺鎶芥敱閸ㄥ湱妲愰幘瀛樺濠殿喗鍩堟禍婵嬪箞閵娾晛鐐婇柕濞垮€楃粻姘渻閵堝棛澧柣鏃戝墴閻擃剟顢楅崒妤€浜鹃悷娆忓绾炬悂鏌涙惔锝嗘毈鐎殿噮鍋婇獮妯肩磼濡粯顏熼梻浣芥硶閸o箓骞忛敓锟�濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌熼梻瀵割槮缁炬儳顭烽弻锝夊箛椤掍焦鍎撶紓浣哄С閸楁娊寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磽娴e搫啸闁哥姵鐗犲濠氬Ω閳哄倸浜滈梺鍛婄箓鐎氬懘濮€閵堝棛鍘遍梺闈浨归崕閬嶅焵椤掆偓濠€閬嶅箲閵忕姭妲堥柕蹇曞Т閼板灝鈹戦埥鍡楃仴妞ゆ泦鍥棄鐎广儱顦伴埛鎴犵磼鐎n偒鍎ラ柛搴㈠姉缁辨帞鎷犻幓鎺撴婵犵绱曢弫璇茬暦閻旂⒈鏁嶆慨妯夸含閺夋悂姊绘担鍝ユ瀮婵℃ぜ鍔庨幏瀣蓟閵夈儳锛涢梺瑙勫礃椤曆囧礃閳ь剟鎮峰⿰鍐炬█鐎殿喗鎮傚顕€宕奸悢鍝勫汲闂備胶绮ú鏍磹閸︻厸鍋撳鐐
开发学院软件开发VC VISUAL C++中的OCX控件的使用方法 阅读

VISUAL C++中的OCX控件的使用方法

 2010-07-01 20:42:11 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾瑰瀣椤愯姤鎱ㄥ鍡楀幊缂傚倹姘ㄩ幉绋款吋閸澀缃曢梻鍌欑濠€閬嶆惞鎼淬劌绐楅柡宥庡亞娑撳秵銇勯弽顐沪闁绘挶鍎甸弻锝夊即閻愭祴鍋撻崷顓涘亾濮樼偓瀚�闂傚倸鍊搁崐鎼佸磹閹间礁纾瑰瀣捣閻棗銆掑锝呬壕濡ょ姷鍋涢ˇ鐢稿极閹剧粯鍋愰柟缁樺笧閳ь剦鍙冨鍝勑ч崶褏浠奸梺璇茬箲閼归箖鎮鹃悜钘夎摕闁靛濡囬崢鐢告⒑鐟欏嫷鍟忛柛鐘崇墵閵嗗倹绺介崨濠勫幈闁硅壈鎻槐鏇熺墡闂備線娼уú銈団偓姘嵆閻涱噣骞掑Δ鈧粻锝嗙節闂堟稑鏆欏ù婊堢畺閺岋綁濮€閳惰泛婀辨竟鏇熺節濮橆厾鍘甸梺缁樺姦閸撴岸鎮樻潏銊ょ箚闁圭粯甯炴晶娑氱磼缂佹ḿ娲寸€规洖宕灃闁告劕鍟犻崜婵堟崲濞戞ḿ鏆嗗┑鐘辫兌閺佹牜绱撴担浠嬪摵闁圭懓娲ら悾鐑藉箳閹搭厽鍍甸梺鐟板悁閻掞箓鎮楅幖浣光拻濞达絿鍎ら崵鈧梺鎼炲€栭悧鐘荤嵁韫囨稒鏅搁柨鐕傛嫹婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柛娑橈攻閸欏繑銇勯幘鍗炵仼缂佺媭鍨堕弻娑㈠箛闂堟稒鐏堥悗鐟版啞缁诲啴濡甸崟顖氱閻庨潧鎽滈悾濂告⒑绾拋娼愭繛鑼枎椤繒绱掑Ο鑲╂嚌闂侀€炲苯澧畝锝堝劵椤︽煡鎮¢妶澶嬬厪闁割偅绻冮崑顏呯箾瀹割喕绨婚幆鐔兼⒑鐎圭姵銆冮柤鍐茬埣瀹曟繈鏁冮埀顒勨€旈崘顔嘉ч柛鈩冾殘閻熸劙姊洪悡搴℃毐闁绘牕銈稿畷鐑樼節閸パ冨祮闂侀潧楠忕槐鏇㈠储椤忓牊鈷戦柟鑲╁仜閸旀鏌¢崨顔锯姇缂佸倹甯熼ˇ瀵哥磼鏉堛劌绗氭繛鐓庣箻閸┾剝鎷呴柨瀣垫綗闂傚倷娴囧銊╂倿閿曞倸绠查柛銉墮閺嬩線鏌熼崜褏甯涢柡鍛倐閺屻劑鎮ら崒娑橆伓闂傚倸鍊搁崐鎼佸磹閹间礁纾瑰瀣椤愯姤鎱ㄥ鍡楀幊缂傚倹姘ㄩ幉绋款吋閸澀缃曢梻鍌欑濠€閬嶆惞鎼淬劌绐楅柡宥庡亞娑撳秵銇勯弽顐沪闁绘挶鍎甸弻锝夊即閻愭祴鍋撻崷顓涘亾濮樼偓瀚�  闂傚倸鍊搁崐鎼佸磹閹间礁纾归柣鎴eГ閸ゅ嫰鏌ら崫銉︽毄濞寸姵姘ㄧ槐鎾诲磼濞嗘帒鍘$紓渚囧櫘閸ㄥ爼濡撮崘顔煎窛闁哄鍨归崢娲倵楠炲灝鍔氭い锔诲灦瀹曪繝骞庨懞銉у帾闂婎偄娲﹀ú鏍ㄧ墡闂備浇顕х€垫帡宕滈悢濂夋綎闁惧繐婀辩壕鍏间繆椤栨碍鎯堟い顐㈢焸濮婃椽宕烽娑欏珱闂佺ǹ顑呭Λ婵嬪箚閳ь剚銇勮箛鎾寸ォ婵☆垰瀚板娲传閸曨剚鎷卞┑鐐插级宀e潡骞戦姀鐘斀濠电姴瀚弶鎼佹⒑閸濆嫭宸濆┑顔惧厴閹即濡烽埡鍌楁嫽婵炶揪绲介幖顐ゆ暜鐠轰警鐔嗛柣鐔峰簻閺€鑽ょ磼閸屾氨孝妤楊亙鍗冲畷鐓庮潩閿濆懍澹曢梺鍝勫暙閻楀棛绮堥崘鈹夸簻闊洤娴烽ˇ锕€霉濠婂牏鐣洪柡灞诲妼閳规垿宕卞☉鎵佸亾濡も偓椤儻顧侀柛鐘崇墵濠€渚€姊虹紒妯曟垿鎮烽妷褉鍋撳鐓庢灓缂侇喚绮妶锝夊礃閳哄啫骞堟俊鐐€栭崝鎴﹀磹閺囥垹鍑犻幖娣妽閻撶喖鐓崶褜鍎忛柛鏃€绮撻弻鏇㈠炊瑜嶉顓犫偓娈垮枟濞兼瑨鐏掗梺鍛婄箓鐎氼剝顤傛繝纰夌磿閸嬫垿宕愰幋锕€鍨傛繛宸簼閸嬶繝鏌嶉崫鍕櫣缂佺姵鐗犻弻宥夊煛娴e憡娈查梺绋挎捣閸犳牠寮婚弴銏犵倞鐟滃秶鑺辨繝姘厵闁告垯鍊栫€氾拷
核心提示:新一代32位操作系统WINDOWS 95舍弃了VBX控件,取而代之的是OCX控件,VISUAL C++中的OCX控件的使用方法,OCX控件具有功能强大,界面美观的特点,或是不同数据库的不同表格,数据源的建立方法为:控制面板->32位ODBC->ADD…,然而许多参考书中并没有详细阐述OCX控件

新一代32位操作系统WINDOWS 95舍弃了VBX控件,取而代之的是OCX控件。OCX控件具有功能强大,界面美观的特点,然而许多参考书中并没有详细阐述OCX控件的使用方法,使得一些如数据库表格,远程数据控件等接口复杂的OCX难于使用。这里将详细阐述OCX的使用方法。

首先提醒读者要注意的是:使用OCX构件之前,必须登记注册,否则不能使用。安装VISUAL C++时,系统自动注册登记软件附带的OCX控件。如果不幸没有登记,那么请使用REGSVR32应用程序来注册。以VISUAL C++ 5.0为例,用AppWizard生成MFC应用程序分为六个步骤,其中第三个步骤中可以指定支持OLE控制,也就是我们要使用的OCX控件(是OLE的一种)。如果指定该选项,则AppWizard将自动向应用程序添加以下两处代码。

一处是为了说明OLE自动类如ColeDispathcDriver,自动向Stdafx.h中加入头文件afxdisp.h

二是在InitInstance函数中激活OLE控制容器:

AfxEnableContainer();

如果在利用AppWizard创建应用程序是未指定OLE控制选项,则可以手工加入以上两行代码。

在生成应用框架后,首先应向应用程序加入OCX控件对应的类,如远程数据控件的缺省名为RDC,而数据表格的缺省名为MSDBGRID。加入的过程是选择Project菜单项,选择Add to Project,选择Components and Controls项,选择Registered ActiveX Controls项,

双击你要加入的构件。

然后,通常是在对话框中加入OCX控制,这时应在对话框中单击右键,选择Insert ActiveX Controls,选择你要加入的控件。这里以远程数据控件为例。

可以在设计时设定属性,当然,在运行时刻再设置属性值更具有灵活性。属性中比较关键的是这几个:

(1)  CursotDriver:(2)DataSourceName (3)SQL。具体的设置见所附的程序。

以下程序是一个无模式对话框的源代码:此程序段实现了一个与FOXPRO数据源相连接的远程数据控件和一个与远程数据库控件相连的浏览数据库用的表格。数据源(DataSource)名称为“档案”,其中包含几个表(Table),程序中选择的是表2。用户当然也可以很轻松的在运行时刻改变连接对应的SQL属性,以便能够浏览同一数据库的不同表格,或是不同数据库的不同表格。数据源的建立方法为:控制面板->32位ODBC->ADD…。

// Datatab.cpp : implementation file
#include "stdafx.h"
#include "Datatab.h"
#include <afxcmn.h>
#include <afxcview.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//////////////////////////////////////// CDatatab dialog
CDatatab::CDatatab(CView * pView):CDialog()
{
  m_pView = pView;
}
BOOL CDatatab::Create()
{
  return CDialog::Create(CDatatab::IDD);
}
CDatatab::CDatatab(CWnd* pParent /*=NULL*/)
  : CDialog(CDatatab::IDD, pParent)
{
  //{{AFX_DATA_INIT(CDatatab)
  //}}AFX_DATA_INIT
}
void CDatatab::DoDataExchange(CDataExchange* pDX)
{
  CDialog::DoDataExchange(pDX);
  //{{AFX_DATA_MAP(CDatatab)
  DDX_Control(pDX, IDC_REMOTEDATACTL1, m_rdc1);
  DDX_Control(pDX, IDC_DBGRID1, m_grid1);
  //}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDatatab, CDialog)
  //{{AFX_MSG_MAP(CDatatab)
  ON_WM_CLOSE()
  ON_WM_PAINT()
  //}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////// CDatatab message handlers
void CDatatab::OnClose()
{
  // TODO: Add your message handler code here and/or call default
  DestroyWindow();
  CDialog::OnClose();
}
void CDatatab::OnPaint()
{
  CPaintDC dc(this); // device context for painting
  // TODO: Add your message handler code here
  // Do not call CDialog::OnPaint() for painting messages
}
BOOL CDatatab::OnInitDialog()
{
  CDialog::OnInitDialog();
  
  // TODO: Add extra initialization here
  m_rdc1.SetDataSourceName("档案");
  m_rdc1.SetSql(_T("SELECT 姓名 年龄 出生日期,from 表2"));
  m_rdc1.SetCaption("数据仓库");
  m_rdc1.SetUserName(_T("admin"));
  m_rdc1.SetPassword(_T(""));
  m_rdc1.SetCursorDriver(1);
  m_rdc1.Refresh();
  LPUNKNOWN pCursor=GetDlgItem(IDC_REMOTEDATACTL1)->GetDSCCursor();
  ASSERT(pCursor!=NULL);
  m_grid1.SetDataSource(pCursor);  //bind the grid
  m_grid1.BindProperty(0x9,GetDlgItem(IDC_REMOTEDATACTL1));
  return TRUE; // return TRUE unless you set the focus to a control
}

Tags:VISUAL OCX 控件

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
更多精彩
    赞助商链接

    热点阅读
      焦点图片
        最新推荐
          精彩阅读