IBS Japan logo 
IBS Japan 内検索 help



PrinterCE - C++ のインストールと使用方法

PrCEDemo ソースコード
C++ PrinterCE デモプログラムのソースコード (PrCEDemo) はここからダウンロードできます。 このZIPファイルにはPocket PCをサポートするeVCプロジェクトで使用されるフルソースコードが含まれています。 PrCEDemoを使用する前に評価版のPrinterCEを前もってダウンロードしてインストールする必要があります。

PrinterCEのC++プログラム内での使用
このPrinterCEのインストールと使用に関するインストラクションはMicrosoft's eVC Embedded Visual ToolsでC++プログラム作成のステップに精通していると仮定して書かれてます。   以下のサンプルコードの一部は(上記のテーブルからダウンロードした)PrinerCEのタイプライブラリをインポートするために#import statementを使用しています。   このタイプライブラリはPrinterCEにアクセスするために必要な情報を提供しています。 このプロジェクトはPrinterCEのようにActiveXを使用して動作する複雑なものを扱う為に"Smart Pointer"を使用します。 以下のInitPrinterCE() function はPrinerCEがインストールされ、登録されているように使われています。 もしPrinterCEがインストール・登録されていれば、PrinterCEの例が作成されアプリケーションは印刷を始めます。

#include "stdafx.h"
#include <Atlbase.h>

//PrCEUser.h and PrEngineCE.tlb are available for download from the table above
#import "PrEngineCE.tlb" raw_interfaces_only no_namespace
#include "PrCEUser.h" //PrinterCE defs file that defines all user constants

CComQIPtr<IPrinterCE> spPrinterCE;
/*********************************************************
  InitPrinterCE() - Create instances of PrinterCE & BarcodeCE
*********************************************************/
BOOL InitPrinterCE()
{
  CLSID clsid;
  HRESULT hr;
  hr=CLSIDFromProgID(_T("PrEngineCE.PrinterCE"),&clsid);
  if (SUCCEEDED(hr)) {
    hr = spPrinterCE.CoCreateInstance(clsid);
  }
  if (FAILED(hr)) {
    MessageBox(NULL,_T("Failed to init PrinterCE"),_T("Init Failed..."),MB_OK);
     return FALSE;
  }
  return TRUE;
}

/*********************************************************
 TestFn() - Simple "Hello World" test function
*********************************************************/
void TestFn() 
{
    if (InitPrinterCE()) {
        / Make sure we have an instance of PrinterCE - "spPrinterCE" is our instance
       spPrinterCE->SelectPrinter();   //Have PrinterCE pop up Select Printer dialog box
       //Send out "Hello World" at default upper left printing position of page
       spPrinterCE->DrawText(_T("Hello World"),NULL,NULL,NULL);
       spPrinterCE->EndDoc();  //Done... print out our "Hello World"
    }
}

C++ での問題
ActiveXコントロールがeVBでも動作するよう設計されているため、C++開発者が処理しなくてはいけない問題が幾つかあります。

Function コール
PrinterCEドキュメントはeVBの"Sub:サブルーチン"(値を返さないfunction)は括弧内にパラメータを置かない方法に従います。しかし"function"(これは値を返します)は括弧を使用します。C++は常に括弧を使用します。従ってドキュメントで DrawCircleメソッドを次のように使用する場合:"object.DrawCircle x, y, radius, [color], [ aspect]"、C++プログラマはこれを:PrCE.DrawCircle(x,y,radius,color,aspect) のようにコンバートする必要があります。;

PrinterCE プロパティ
PrinterCEプロパティはあらかじめC++のプロパティ名に追加された"Get"または"Put"を必ず持ちます。例えばFontBoldプロパティはドキュメント内で次のように明示されます。:object.FontBold [= Boolean]。eVBプログラム内ではこのプロパティを PrinterCE.FontBold=True で設定できます。C++プログラム内では PrinterCE.SetFontBold(VARIANT_TRUE) のようにコールし、同じようにPrinterCEからカレントのX座標を取得するにはMFCは xCoord=PrinterCE.GetTextX() とコールします。

VARIANT BOOL
C++開発者はBoolean値をFALSEは0、TRUEは1と覚えていますが、eVBではTRUEは-1(FALSEは同じく0ですが)となります。C++ではVT_BOOLタイプをVARIANT_TRUEおよびVARIANT_FALSEと定義します。PrinterCE内のBoolean値が戻るfunctionはVARIANT_TRUE または VARIANT_FALSEを探します。PrinterCEのfunctionは VARIANT_TRUE/VARIANT_FALSEはもちろんTRUE/FALSEでも動作するよう設計されていますが、Boolean値を返すPrinterCEでのfunctionではVARIANTバージョンを返します。

VARIANT データタイプ
"optional" パラメータを使用するいくつかのPrinterCE function、例えばDrawTextメソッドはこのように定義され:"object.DrawText string, [x], [y], [count]"、x, yとcountは"optional"となります。 C++内では全ての可能性のあるコールに対応するためにいくつかのDrawText()の設定ができるように、こういった種類のオプショナルパラメータは過負荷をかけるfunctionによって処理されます。eVBは過負荷のかかったfucntionに対応できないので、多くの"optional"パラメータはVARIANTデータタイプとして扱われます。

基本的に、VARIANTはVT_EMPTYを含む幅広い種類のデータタイプを意味します。eVBプログラムで1つまたはそれ以上のパラメータなしでPrinterCE functionをコールする場合、eVBは自動的に「空」のVARIANTをその省略されたパラメータに適用します。C++プログラムでは代わりにNULL (0)を空のパラメータに適用し、PrinterCEは正しく動作します。ただしC++プログラムが自動的にそれらのオプショナルパラメータに値を適用する時には、必ずVARIANT値が適用されます。VARIANTS を使用した例は以下にあります。

C++ の例
C++ PrinterCE デモプログラム(PrCEDemo)はここからダウンロードできます。 このZIPファイルにはPocket PCをサポートするeVCプロジェクトで使用されるフルソースコードが含まれています。

 

本ページに記載されている商品の仕様・外観・価格は予告なく変更することがございます。予めご了承下さい。
会社名、製品名は各社の商標または登録商標です。
本ページに関するご意見はWebmasterまでお寄せ下さい。
プライバシーポリシー
更新日: