Windows 95 棄用 VBX 改採 OCX(OLE Control eXtension),功能強大、介面美觀。但許多參考書缺乏詳細使用說明,導致資料庫格柵、遠端資料控制項等複雜 OCX 難以上手。本文詳細闡述 OCX 使用全流程。
regsvr32 xxx.ocx),VC++ 安裝時會自動註冊內建控制項。
// Stdafx.h
#include // OLE 自動化類別支援
// InitInstance()
AfxEnableControlContainer(); // 啟用 OLE 控制項容器
若未勾選,手動加入上述兩行即可。
RDC 遠端資料控制項、MSDBGRID 資料格柵)。執行期動態設定屬性更具彈性,關鍵屬性:
CursorDriver:游標驅動程式類型DataSourceName:ODBC 資料來源名稱(DSN)SQL:查詢命令字串
// Datatab.h
class CDatatab : public CDialog {
CRDC m_rdc1; // 遠端資料控制項
CDBGrid m_grid1; // 資料格柵控制項
CView* m_pView;
// ...
};
// Datatab.cpp
BOOL CDatatab::OnInitDialog() {
CDialog::OnInitDialog();
m_rdc1.SetDataSourceName("檔案"); // DSN 名稱
m_rdc1.SetSQL(_T("SELECT 姓名, 年齡, 出生日期 FROM 表2"));
m_rdc1.SetCaption("資料倉庫");
m_rdc1.SetUserName(_T("admin"));
m_rdc1.SetPassword(_T(""));
m_rdc1.SetCursorDriver(1); // 1=ODBC 驅動
m_rdc1.Refresh();
// 將格柵綁定至 RDC 游標
LPUNKNOWN pCursor = GetDlgItem(IDC_REMOTEDATACTL1)->GetDSCCursor();
ASSERT(pCursor != NULL);
m_grid1.SetDataSource(pCursor);
m_grid1.BindProperty(0x9, GetDlgItem(IDC_REMOTEDATACTL1));
return TRUE;
}
控制台 → 32 位元 ODBC → 新增 → 選擇驅動程式 → 設定 DSN 名稱(如「檔案」)與資料庫路徑。
對話方塊顯示格柵,資料來源為 FoxPro 資料庫「表2」,支援執行期動態切換 SQL 查詢不同資料表。
掌握「註冊 → 專案啟用容器 → 加入類別 → 對話方塊配置 → 動態屬性設定 → 資料綁定」六步驟,即可駕馭各類複雜 OCX 控制項。