0

DDXテクノロジは、リソースをクラスメンバー(たとえば)とリンクするために作成されました。私のソリューションでは、myCCtreeCtrl(CCtreeCtrlのインスタント)がクラスメンバーCCtreeCtrlのリソースに存在しない間の接続を確立する必要があります。これで、リソースにCTreeCtrlがあり、doDataExchangeを単純化します。

#define IDC_TREE_LAYER0                 2000   
#define IDC_TREE_LAYER1                 2001
#define IDC_TREE_LAYER2                 2002


// ============================================================================
void ForcesGUI::doDataExchange( int id0, int id1, int id2, CDataExchange* pDX )
// ============================================================================
{
   DDX_Control(pDX, id0, m_tree[0].data);
   DDX_Control(pDX, id1, m_tree[1].data);
   DDX_Control(pDX, id2, m_tree[2].data);
}

ただし、将来的には、リソースからCCtreeCtrlを削除してインスタンスを作成する必要があります。

なぜリソースから削除する必要があるのか​​と聞かれます。

答えは次のとおりです。プロジェクトでは、3つのCCtreeCtrlがあり、それぞれが独自のバーにあります。それらの間に違いはありません。そのため、冗長性の代わりに、1つのツリーを持つ1つのバークラスを使用したいと思います。バーの3つのインスタンスを作成した後、ここで機能しないDDXの問題が表示されます。

基本的なDDXをどのように置き換えることができるか考えていますか?WinAPIか何か他のものになるかもしれません。とにかく助けてくれてありがとう。

4

1 に答える 1

1

コントロールがダイアログリソースから自動的に生成されない場合は、Createメソッドを使用してコントロールを作成する必要があります。OnInitDialogこれは、親ウィンドウまたはそれに相当するもので実行する必要があります。ウィンドウを作成すると、ウィンドウを作成Createしたオブジェクトに自動的に接続されます。DDX_Controlは必要ありません。

于 2012-05-19T03:55:45.550 に答える