アイコン設定
|
RT側のアナログ変換値取得データが8V以上のデータである場合、チャンネルを示す棒グラフの脇に、アイコンでランプ表示をすることになります。
アイコンをリソースレベルで設定せず、プログラムで動的に変更する方法について調査しました。
|
|
●
SetIcon()
ダイアログクラスの初期処理CINtimeGraphDspDlg::OnInitDialog()で、アイコンを表示するコントロールへのポインタを設定し、それぞれのポインタにOFF表示アイコンをロードします。リソースで前もってIDI_ICON_ON(ON用ビットマップ)、IDI_ICON_OFF(OFF用ビットマップ)を登録してあります。
|
|
CStatic* m_widIcon[8]; //ON/OFF表示エリアポインタ:ダイアログクラスのメンバ
|
|
OnInitDialog()部 |
|
//8V以上の場合赤いランプを点滅するためにPICTコントロールを作成しアイコンでON,OFFの 切り替えを行う
//初期状態として開始時にはすべてOFFになるようにOFFアイコンを表示させる
//メンバー変数m_widIconに表示エリア(IDC_STATIC_ICONX(コントロール番号))
コントロールへのポインタを設定する
m_widIcon[0] = (CStatic*)GetDlgItem(IDC_STATIC_ICON1);
m_widIcon[1] = (CStatic*)GetDlgItem(IDC_STATIC_ICON2);
m_widIcon[2] = (CStatic*)GetDlgItem(IDC_STATIC_ICON3);
m_widIcon[3] = (CStatic*)GetDlgItem(IDC_STATIC_ICON4);
m_widIcon[4] = (CStatic*)GetDlgItem(IDC_STATIC_ICON5);
m_widIcon[5] = (CStatic*)GetDlgItem(IDC_STATIC_ICON6);
m_widIcon[6] = (CStatic*)GetDlgItem(IDC_STATIC_ICON7);
m_widIcon[7] = (CStatic*)GetDlgItem(IDC_STATIC_ICON8);
//OFF状態にする(IDI_ICON_OFFアイコンを表示する)
m_widIcon[0]->SetIcon( AfxGetApp()->LoadIcon(IDI_ICON_OFF));
m_widIcon[1]->SetIcon( AfxGetApp()->LoadIcon(IDI_ICON_OFF));
m_widIcon[2]->SetIcon( AfxGetApp()->LoadIcon(IDI_ICON_OFF));
m_widIcon[3]->SetIcon( AfxGetApp()->LoadIcon(IDI_ICON_OFF));
m_widIcon[4]->SetIcon( AfxGetApp()->LoadIcon(IDI_ICON_OFF));
m_widIcon[5]->SetIcon( AfxGetApp()->LoadIcon(IDI_ICON_OFF));
m_widIcon[6]->SetIcon( AfxGetApp()->LoadIcon(IDI_ICON_OFF));
m_widIcon[7]->SetIcon( AfxGetApp()->LoadIcon(IDI_ICON_OFF));
|
|
グラフ表示部 |
|
if(m_valTbl[i] < VAL_8V){ m_widIcon[i]->SetIcon( AfxGetApp()->LoadIcon(IDI_ICON_OFF)); }else{
m_widIcon[i]->SetIcon( AfxGetApp()->LoadIcon(IDI_ICON_ON));
}
8V以上のデータm_valTbl[i]の場合・・・ON のアイコンをロード
8V以下のデータm_valTbl[i]の場合・・・OFFのアイコンをロード
|
|
INtime®カーネルの起動確認部 |
|
INtime®で提供しているサンプルから検索、調査してみました。
サンプルアプリケーションのディレクトリ位置:
C:\INtime\Project
上記ディレクトリ内のjitterntフォルダ内のhisgraphプロジェクトで行っている処理を参考 にしました。
【Bool CHistGraphDlg::OnInitDialog() ダイアログ初期処理部】
//check to see that the RT nucleus was successfully initialized →RTカーネルが初期化されているかチェックをする
if( ntxGetRtStatus( NTX_LOCAL ) != E_OK )
{
MessageBoxEx(NULL, _T( "RT Machine not present:RTPM0001" ),
_T( "Jitter Graph"), MB_ICONERROR | MB_OKCANCEL, LANG_ENGLISH );
exit(0);
}
|