ハンディターミナルのOKキー押下時アプリがフリーズ


ウラキ  2007-06-27 01:57:26  No: 65512

始めまして、自分は初心者です。今業務用ハンディターミナルの開発をしています。作ったアプリケーションが起動後、HTの「OK」キーを押すとアプリがフリーズします。「OK」キー押下のイベントを調べたいですが、どうすればよいですか?


オショウ  2007-06-27 02:02:13  No: 65513

私もハンディーターミナル用のソフト開発したことありますが
メーカー・型式・OSや開発環境
が解らないので、全く助言のしようもありません。

またそれらが解ったところで、その機種特有の問題かもしれま
せんので、メーカーにお問い合わせ頂くしか手はないように思
いますが・・・

以上。


ウラキ  2007-06-27 03:02:31  No: 65514

返事を頂き、有難うございます。私はSHARPの1500シリーズを使って開発しています、開発環境はeMVC++4.0です。また、アプリはタブコントロールを使いました。「OK」キーを押すと、edit boxを持っている子ウィンドウのみフリーズします。原因が分からないので、悩んでいます。お助けてください。


オショウ  2007-06-27 06:10:50  No: 65515

SHARPの1500シリーズって、HandyBrainのRS-1500シリーズのことです
よネ?できるだけ正しく商品型式は表記して下さい。

え〜と・・・コペルニクスでは開発したことがありますが、当時の物
としての搭載OSは、CE.NET 4.1 でした。RZ-1500は、CE5.0ですの
で、開発用推奨言語は、eVC++4.0では無いと思いますが・・・
仮に使えたとして、SHARPよりSDKが提供されているはずですが、
インストールされていますか?

環境が全て正しく導入されていて正しく動作しないのであれば・・・
シャープシステムプロダクト株式会社の方にお問い合わせして頂かな
いと解りません。

あしからず・・・

以上。


ウラキ  2007-06-27 18:09:53  No: 65516

オショウさん
  いろいろ教えてくれて、有難うございます。RZ-1500シリーズのSDKをもう一度確認してみます。


s  2007-06-28 01:43:55  No: 65517

単純なダイアログとEditだけを使ったアプリでも
ハングしてしまいますか?
エミュレータでも同様の動きですか?

イベントについては、RZ-1500は使ったことがありませんが単純に
OK = VK_RETURN
ということはないですか?
であれば、WM_KEYDOWN(OnKeyDown)の所で取得できると思います。
#他の機能でも使うボタンだと思うのであえて変なキーコード
#を割り当てる必要がないかと思います。

ちなみにリモートデバッグですか?


ウラキ  2007-06-28 18:49:45  No: 65518

単純なダイアログとEditだけを使ったアプリは問題がないです。私は以下のソースを入れましたが、
BOOL CSampleDlg::PreTranslateMessage(MSG* pMsg) 
{  
// TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください
  switch(pMsg->message){
    GetMessage ( pMsg,NULL,0,0);
    case WM_KEYDOWN:
      switch(pMsg->wParam){
      case VK_RETURN:
        ****
    return TRUE;
      }
  }
    return CDialog::PreTranslateMessage(pMsg);
}

送られたメッセージが取れそうですが、***の部分はどんな処理を書けばいいのが分からないです。実は、OKキーは他のどんな機能で使われてるのもまだ分からないです。SDKのなかも載っていないみたいです。親ウィンドウをも一回調べようと思っています。


s  2007-06-28 19:28:18  No: 65519

確認のためなら中身は何でもいいと思いますが
Editのメンバ変数でも定義して表示してみては?

    switch(pMsg->message){
    case WM_KEYDOWN:
        switch(pMsg->wParam){
        case VK_RETURN:
            m_edit.SetWindowText(_T("return"));
        }
    }

>単純なダイアログとEditだけを使ったアプリは問題がないです
現在提示されている情報だと、ハングするのは作成したプログラムに
問題があるとしか言えなくなってしまいます。

エミュレータやリモートデバッグならTRACEや
ブレークポイントを貼れば停止しますのでステップ実行で
確認していけば問題点の特定は難しくないはずですが
ひょっとしていきなり実機用のexeを作って
本体で動作確認をしていますか?


ウラキ  2007-06-28 19:45:40  No: 65520

私はもう一度子ウィンドウ一つしか持たないタブコントロールを作ってみました。
BOOL CSampleDlg::OnInitDialog()
{
  CDialog::OnInitDialog();

  // このダイアログ用のアイコンを設定します。アプリケーションのメイン ウィンドウがダイアログで
  //  ないときはフレームワークは自動的に行います。
  SetIcon(m_hIcon, TRUE);      // 大きいアイコンを設定
  SetIcon(m_hIcon, FALSE);    // 小さいアイコンを設定
  
  CenterWindow(GetDesktopWindow());  // HPC 画面の中央へ揃えます

  // TODO: 追加の初期化を行うときにはこの場所に追加してください。
  {
        int        err = 0;
        CRect    rect;
        
        // 子ダイアログ作成
    if (!err) {      
      if (!this->m_dlg1.Create(CDialog1::IDD, &this->m_Tab)) {
        err = 1;
      }
    }
        // 子ダイアログ移動
        if (!err)
        {
      //this->m_Tab.GetWindowRect(&rect);
      this->m_dlg1.GetClientRect(&rect);
      rect.OffsetRect(10, 40);
            this->m_dlg1.MoveWindow(&rect, FALSE);    
        }
        // タブ作成
    if (!err) {
      if (this->m_Tab.InsertItem(0, _T("設定")) == -1) {      
        err = 1;
      }
    }    
    // 初期表示
    if (!err) {
      this->OnSelchangeTab1(0, 0);
    }      
    }
  return TRUE;  // コントロールにフォーカスを設定しない場合は TRUE を返します
}

void CSampleDlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult) 
{
  // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
  int        sel;   
  sel = this->m_Tab.GetCurSel();
  CString s;
  s.Format(_T("%d"), sel);
  this->m_dlg1.ShowWindow(sel == 0 ? SW_SHOW : SW_HIDE);
  
  *pResult = 0;
}
子ウィンドウはedit boxを設置するだけです。OKキー押すと同じくフリーズしますが、親ウィンドウの問題でしょうか?


s  2007-06-28 19:46:46  No: 65521

>OKキーは他のどんな機能で使われてるのもまだ分からないです

ごめんなさい。言い方がまずかったです。
例えばメモ帳を開いてOKボタンで改行しませんか
改行するのであれば通常のVK_RETURNだと思います。
そのほか数字ボタンやカーソルなどについても
刻印されている文字と同じものが表示(動作)されませんか?

という意味です。


s  2007-06-28 19:46:47  No: 65522

>OKキーは他のどんな機能で使われてるのもまだ分からないです

ごめんなさい。言い方がまずかったです。
例えばメモ帳を開いてOKボタンで改行しませんか
改行するのであれば通常のVK_RETURNだと思います。
そのほか数字ボタンやカーソルなどについても
刻印されている文字と同じものが表示(動作)されませんか?

という意味です。


ウラキ  2007-06-28 20:29:50  No: 65523

本当に有難うございます、"例えばメモ帳を開いてOKボタンで改行しませんか"という言葉で閃いた。edit boxのスタイルを複数行に変更したら、できました。有難うございます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加