Wednesday, February 29, 2012

VFW: 視訊參數對話盒 Video Dialog Box

一般來說, 硬體製造廠商會提供驅動程式(driver)供使用者將硬體裝置安裝到電腦。視訊裝置也是一樣, 所安裝的驅動程式還會提供一些預先寫好的視訊參數對話盒, 供程式設計師直接呼叫, 以修改視訊裝置的相關參數。不同的廠商所提供的視訊參數對話盒不一定相同, 甚至有些廠商並不一定有提供視訊參數對話盒, 因此, 程式設計師在呼叫視訊參數對話盒之前, 可以先透過 capDriverGetCaps 函式, 先取得視訊裝置驅動程式的效能, 確認之後再進行呼叫。

視訊參數對話盒一共有四種, 分別是:
 1. 視訊來源對話盒 (Video Source Dialog)
 2. 視訊格式對話盒 (Video Format Dialog)
 3. 視訊顯示對話盒 (Video Display Dialog)
 4. 視訊壓縮對話盒 (Video Compression Dialog)

接下來我們將分別介紹各種視訊參數對話盒的呼叫函式。

 1. 視訊來源對話盒 (Video Source Dialog Box)

 capDlgVideoSource

The capDlgVideoSource macro displays a dialog box in which the user can control the video source. The Video Source dialog box might contain controls that select input sources; alter the hue, contrast, brightness of the image; and modify the video quality before digitizing the images into the frame buffer. You can use this macro or explicitly send the WM_CAP_DLG_VIDEOSOURCE message.

BOOL capDlgVideoSource(
hwnd
);

Parameters

 hwnd

  Handle to a capture window.

Return Values

 Returns TRUE if successful or FALSE otherwise.

Remarks

The Video Source dialog box is unique for each capture driver. Some capture drivers might not support a Video Source dialog box. Applications can determine if the capture driver supports this message by checking the fHasDlgVideoSource member of the CAPDRIVERCAPS structure.

Saturday, February 25, 2012

wchar_t type

wchar_t 的用法:

wchar_t wchA = L'A';
wchar_t *wstrA = L"ABCD";

Saturday, February 18, 2012

XE2: the Hello World Example!

首先, 我們建立一個 VCL Form 的應用程式, 然後從工具盤 Tool Palette 中, 從 standard 的群組中, 找出 TButton, 將其拉進 Form1 中, 並用滑鼠在 button1 元件上點選一下, 選擇起來。接著, 就可以透過 Object Inspector 修改 button1 的相關屬性, 例如:

a. 將 Name 改成 btnHelloWorld
b. 將 Caption 改成 Hello World

就可以看到如下圖的樣子。



接著, 我們可以連按(double click) TButton btnHelloWorld 兩下, 進入可以撰寫程式(事件處理程序)的畫面, 即 unit1.cpp 程式之中, 輸入下列指令:

ShowMessage("Hello World!");

如下圖:



就可以開始執行(Run, F9) 我們的第一個 C++ Builder 的應用程式了。



按下 TButton btnHelloWorld 就可以看到跳出如下的訊息視窗:



按 OK button 訊息視窗就會自動消失!

Wednesday, February 15, 2012

XE2: 儲存 Project

除了 Form/Unit 必須儲存之外, 每一個應用程式的專案也要儲存起來, 從功能表中選取 File | Save Project As.. 就可以將專案的內容儲存起來。



在你儲存的目錄中, 你一共可以看到關於專案的 3 個不同的副檔名。

1. Project1.cbproj

  副檔名是 cbproj, 指的是 C++ Builder 的 Project File, 儲存的內容是關於整個專案內容的描述。

2. Project1.cbproj.local

  在副檔名是 cbproj 的後面加加上 .local, 用記事本打開看, 可以看到專案儲存在這台電腦(local)的相關目錄。

3. Project1.cpp

  副檔名是 cpp, 因此是整個專案能夠在視窗環境下執行的 C++ 語言指令的相關部分。

如下圖的三個檔案。

XE2: 儲存 Form/Unit

當我們完成一個 Form 的設計與其對應的 Unit 的程式撰寫後, 或是想要休息一下, 下次再繼續寫程式, 就要先將 Form/Unit 先儲存起來, 可以從功能表中選取 File | Save 或 Save as... 來進行第一次的儲存, 如果已經儲存過了, 那就可以直接選 File | Save 進行儲存。



如果沒有對 Unit1 進行重新命名, 就會看到 Unit1 一共被儲存成下列三個檔案:

 1. Unit1.cpp

   副檔名為 cpp, 類型為 C++ Source File, 內容就是你在撰寫程式時, 所看到的程式內容。

 2. Unit1.dfm

   副檔名為 dfm, 內容其實就是對你所設計的 Form 之描述, 如果你用記事本開啟 Unit1.dfm, 你就可以看到 C++ Builder 是如何描述一個 Form 的。



  由於上圖中的 Form1 並沒有任何元件, 所以描述內容僅有對 object Form1 的描述。

 3. Unit1.h
 
   副檔名為 h, 表示為一個 C 語言的標頭檔(header file), 每一個 Unit 都會搭配一個標頭檔, 在 Unit1.cpp 中, 你也可以找到一行 #include "Unit1.h" 的指令。

 在你儲存的目錄中, 你一共可以看到如下圖的三個檔案。

XE2: Object Inspector

在 C++ Builder 中, 可以用 Object Inspector 來觀看與設定所有元件的 Properties, 也可以從 Events 中設定 Object 的所有事件處理程序。

XE2: 開啟一個 VCL Form 應用

進入 C++ Builder XE2 的整合開發環境後, 如果你要開始寫一個全新的應用程式, 你可以從功能列中選擇 File | New | VCL Forms Application (如下圖),
 

 
C++ Builder 就會幫你產生一個 Form, 讓你開始規劃你的 Form 上要放哪些元件。


要修改 Form1 物件 Properties 的內容, 可以直接在位於左下角的 Object Inspector 中直接更改。

Tuesday, February 14, 2012

XE2: 工具盤 Tool Palette

C++ Builder XE2 的工具盤(Tool Palette) 其實就是 BCB6 中的元件盤(Component Palette), 可以從這邊找到想要的元件, 直接拉到 Form 上就可以了。