2016-05-30 31 views
0

Windows CEデバイス用のテストアプリケーションをコーディングしています。これは、私がハンドヘルドデバイスのプログラミングを初めて行うときです。私はVisual Studio 2008でMFC VC++を使用しています。コントロールには多くの制限があり、デスクトップコンピュータで同様のプログラムを実行する場合に便利なプログラムを実行するときには何ができるのかが分かりました。複数のダイアログで同じMFC CListコントロールを表示して使用する

現在、デバイスにはテストプログラムを配備していますが、タッチスクリーンはなく、数字パッドの0-9キー以外のいくつかの余分なキーはありません。だから、keydownsを使ってadd、edit、deleteなどの特定の関数を呼び出すシンプルなGUIを使う必要があります。不要なマウスカーソルの使用を避けるために、これらの関数ごとに別々のダイアログを使用する必要もあります。これは私の現在の問題に私をリード

は私のテストのアプリの「追加」ダイアログは「MAIN]ダイアログであるCListCtrlのにいくつかのユーザーデータを追加します。 "EDIT/DELETE]ダイアログは、ユーザーが独自のCListCtrlのから目的のデータを選択し、それによって「MAIN」ダイアログのCListCtrlのから選択したデータを削除キーを、「ENTER」を押すことを可能にすることです。したがって、メインダイアログと「EDIT/DELETE」ダイアログの両方に、同じデータを持つCListCtrlがあります。したがって、2つの別々のリストコントロールを使用して、それらの間でデータをコピーするためにループを使用する代わりに、全く同じCListCtrlを使用することができます(CListCtrlのインスタンスは1つだけです) 2つの別々のダイアログに表示しますか?これにより、すべてのコピーコードが削除され、メモリ内のデータ量が半分になります。

MAINダイアログのCListCtrlへのポインタを 'EDIT/DELETE'ダイアログに渡そうとしましたが、そこにコントロールを再描画することを望んでいましたが、無駄でした。私はRedrawWindow、RedrawItemsコマンドを呼び出すことができますが、 'EDIT/DELETE'ダイアログには何の効果もないようです(私は、コントロール自身が編集/削除ダイアログに表示されていないと思います)。その他の提案はありますか?

+0

私はまた、 'EDIT/DELETE'ダイアログの中から渡されたポインタを使ってCListCtrl Create関数を呼び出そうとしました。 Listコントロールが作成されているようですが、データが反映されていない可能性があります.CreistCtrlの新しいインスタンスが作成されたためです... – PRinCEKtd

+0

EDIT/DELETEダイアログがメインダイアログの上にあると仮定しているので、ダイアログは、もう一方の背景に存在します。次に、 'CWnd :: SetParent'関数を使用して、listctrlを他のダイアログに一時的に移動することができます。 「ポインタを渡してみました」とはどういう意味ですか? –

+0

MAINダイアログが非表示になり、一度に1つのダイアログのみが表示されます。 ****これをポインタで渡す** メインダイアログでこのコードのようなものを試しました: 'EditDialog myEditDialog(&M_cDataList); ' してから、リストコントロールを表示しようとするために、このポインタを使用し、 ' EditDialog(CListCtrlの* pListCtrl):// M_cDataListは CListCtrl'へとEditDialog内の変数です。もちろん、私はこのポインタを使ってデータにアクセスできますが、編集ダイアログに表示することができませんでした。 – PRinCEKtd

答えて

2

CWnd::SetParentを使用してListCtrlの親を一時的に変更し、EDIT/DELETEダイアログに移動して、CWnd::SetWindowPosで位置を設定したい位置に設定することができます。ダイアログが閉じると、親をMAINダイアログに戻します。

関連する問題