Hello Worldダイアログ
first-HTML-dialog
Hello WorldダイアログHTML Dialog
サマリー
このチュートリアルでは、以下の項目について説明します。
- HTMLページの作成
- OriginCを使ってダイアログボックス内でHTMLページを表示
- ダイアログのイベントに対応するイベントハンドラーのビルド
必要なOriginのバージョン: Origin 2017 以降
サンプルファイル
- index.html: htmlページのHTMLコード
- HelloWorldDlg.cpp: HTMLページを呼び出してダイアログ内でそれを表示するOriginCのコード
- HelloWorldDlg1.cpp: 応用的な機能を含むOriginCのコード
Note: こちらから、サンプルファイルをダウンロードできます。 |
HTMLページの作成
HTMLダイアログを作成する際には、まず初めにHTMLページを作成します。
- Originを起動して、をダブルクリックしてコードビルダを開きます。
- 「index.html」という新しいHTMLファイルを作成して、「Hello World」という新しいフォルダに保存します。
- < head >と< body >要素を中に入れ、< title >, < h1 >, < p > などの別のHTML要素を加えてHTMLページを構築します。
<!DOCTYPE html>
<html>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
<head>
<title>
A Small Hello
</title>
</head>
<body>
<h1>Hello World</h1>
<p>This is very minimal "hello world" HTML document.</p>
</body>
</html>
Note:編集を終えたら、ブラウザでこのページを開いて、確認します。 |
HTMLダイアログの作成
このセクションでは、ダイアログのHTMLページ表示を作成します。
- コードビルダで、HTMLファイルのパスの下に、新しいcppファイル「DlgWithGraph.cpp」を作成します。
- まず初めに、3つの必要なヘッダを入れます。ここで、HTMLDlg.はOrigin 2017で新しくなっており、OriginとHTMLダイアログを一緒に結びつけます。
#include <Origin.h>
#include <..\OriginLab\DialogEx.h>
#include <..\OriginLab\HTMLDlg.h>
- ユーザ定義HTMLダイアログクラスを
HTMLDlg クラスから生成し、手法GetInitURL() の中にHTMLページを示します。
class HelloWorldDlg: public HTMLDlg
{
public:
string GetInitURL() //htmlファイルのパス取得
{
string strFile = __FILE__; //現在のファイルのパス
return GetFilePath(strFile) + "index.html";
}
};
- HTMLダイアログを開くには、すべてのコードを保存してビルドし、以下の関数を実行します。
void hello()
{
HelloWorldDlg dlg;
dlg.DoModalEx(GetWindow());
}
「Hello World」の付いたHTMLダイアログがポップアップされます。
高度な機能
ダイアログを変更してイベントヘッダーを追加し、プログラムを改良することができます。
Note: 以下の機能の完全なコードは「HelloWorldDlg1.cpp」で利用可能です。 |
ダイアログのサイズ変更を禁止
この設定を行うには、ModifyStyle を使い、ダイアログクラスの手法 OnInitDialog 「WS_THICKFRAME」を無効にします。
BOOL OnInitDialog()
{
ModifyStyle(WS_THICKFRAME, 0);//サイズ変更禁止
return HTMLDlg::OnInitDialog();
}
ダイアログサイズの設定
対のクラス手法GetDlgInitSize をダイアログクラスから呼び出し、ダイアログの幅と高さを指定する必要があります。
BOOL GetDlgInitSize(int& width, int& height)//ダイアログサイズ取得
{
width = 500;
height = 200;
return true;
}
イベントハンドラーの追加
ダイアログビルダと同様に、メッセージマップを使って、どのイベントを扱うのか、どの関数を呼び出すのかを指定します。
例えば、イベントハンドラー手法をユーザ定義のクラス「HelloWorldDlg」に 加えて、ダイアログを閉じるとメッセージがポップアップするようにします。
- クラス
HelloWorldDlg にある以下のメッセージマップにより、ダイアログメッセージをマップします。
//メッセージマップ
public:
EVENTS_BEGIN_DERIV(HTMLDlg)
ON_DESTROY(OnDestroy)
EVENTS_END_DERIV
- イベントハンドラー手法をユーザ定義のクラス
HelloWorldDlg に加えて、ダイアログを閉じるとメッセージがポップアップするようにします。
BOOL OnDestroy()
{
MessageBox(GetSafeHwnd(), _L("Thank you and have a good day!"),_L("Message"));
return true;
}
|