Mesoscopic Programming

タコさんプログラミング専門

ヌメロン製作講座第16回:分析データグリッドの作成

  • 分析データグリッド表示画面

  • 修正ソースファイル

main.h
main.cpp


class AnalGrid

分析データグリッドです。

class AnalGrid : public Grid
{
public :

    static Cell cells[];

    Cell        * GetCells() { return cells; }
    VOID        MakeGrid();
};

Cell AnalGrid :: cells[]

セル定義データです。

Cell AnalGrid :: cells[] =
{
    { CELL_SEPARATOR },
    { CELL_LABEL,       ( LPVOID ) PARAM_VALID_LABEL,           W1 },
    { CELL_NOEDIT,      ( LPVOID ) PARAM_VALID_FIRST,           W2 },
    { CELL_NOEDIT,      ( LPVOID ) PARAM_VALID_SECOND,          W2, 0, L2 },
    { CELL_NEWLINE2 },

    { CELL_LABEL,       _T( "確定番号" ),                       W1 },
    { CELL_NOEDIT,      ( LPVOID ) PARAM_DECIDE_FIRST,          W2 },
    { CELL_NOEDIT,      ( LPVOID ) PARAM_DECIDE_SECOND,         W2, 0, L2 },
    { CELL_NEWLINE2 },

    { CELL_LABEL,       _T( "正解確率" ),                       W1 },
    { CELL_NOEDIT,      ( LPVOID ) PARAM_PROB_FIRST,            W2 },
    { CELL_NOEDIT,      ( LPVOID ) PARAM_PROB_SECOND,           W2, 0, L2 },
    { CELL_NEWLINE2 },

    { CELL_LABEL,       _T( "正解候補" ),                       W1 },
    { CELL_NOEDIT,      ( LPVOID ) PARAM_CANDID_FIRST,          W2 },
    { CELL_NOEDIT,      ( LPVOID ) PARAM_CANDID_SECOND,         W2, 0, L2 },
    { CELL_NULL }
};

VOID AnalGrid :: MakeGrid()

分析データグリッド作成メソッドです。

VOID AnalGrid :: MakeGrid()
{
    Cell    * cells = GetCells();
    RECT    rc;
    LONG    height;

    for ( int n = 0;; n++ )
    {
        Cell & cell = cells[ n ];

        if ( cell.cid == CELL_NULL )
        {
            break;
        }

        cell.top    = 0;
        cell.height = 0;
    }

    Grid :: MakeGrid();

    height = cells[ GetCellNumber( PARAM_VALID_LABEL ) ].height;

    if ( cells[ GetCellNumber( PARAM_VALID_FIRST ) ].height > height )
    {
        height = cells[ GetCellNumber( PARAM_VALID_FIRST ) ].height;
    }

    if ( cells[ GetCellNumber( PARAM_VALID_SECOND ) ].height > height )
    {
        height = cells[ GetCellNumber( PARAM_VALID_SECOND ) ].height;
    }

    cells[ GetCellNumber( PARAM_VALID_FIRST ) ].height      = height;
    cells[ GetCellNumber( PARAM_VALID_SECOND ) ].height     = height;

    height = cells[ GetCellNumber( PARAM_CANDID_FIRST ) ].height;

    if ( cells[ GetCellNumber( PARAM_CANDID_SECOND ) ].height > height )
    {
        height = cells[ GetCellNumber( PARAM_CANDID_SECOND ) ].height;
    }

    cells[ GetCellNumber( PARAM_CANDID_FIRST ) ].height     = height;
    cells[ GetCellNumber( PARAM_CANDID_SECOND ) ].height    = height;

    GetClientRect( hwnd, & rc );

    SetOffset( app.infoGrid.offset.x, rc.bottom - rect.bottom - 4 );
}


その他の修正内容です。

enum ParamID

  • 追加項目
  1. PARAM_VALID_LABEL
  2. PARAM_VALID_FIRST
  3. PARAM_VALID_SECOND
  4. PARAM_DECIDE_FIRST
  5. PARAM_DECIDE_SECOND
  6. PARAM_PROB_FIRST
  7. PARAM_PROB_SECOND
  8. PARAM_CANDID_FIRST
  9. PARAM_CANDID_SECOND

class Application

分析データグリッドオブジェクトを追加しました。

  1. AnalGrid analGrid

ParamName paramNames[]

分析データグリッドのダミー表示文字列を追加しました。

  1. { PARAM_VALID_LABEL, _T( "カード位" ) }
  2. { PARAM_VALID_FIRST, _T( "ここに先攻有効カードを表示" ) }
  3. { PARAM_VALID_SECOND, _T( "ここに後攻有効カードを表示" ) }
  4. { PARAM_DECIDE_FIRST, _T( "ここに先攻確定番号を表示" ) }
  5. { PARAM_DECIDE_SECOND, _T( "ここに後攻確定番号を表示" ) }
  6. { PARAM_PROB_FIRST, _T( "ここに先攻正解確率を表示" ) }
  7. { PARAM_PROB_SECOND, _T( "ここに後攻正解確率を表示" ) }
  8. { PARAM_CANDID_FIRST, _T( "ここに先攻正解候補を表示" ) }
  9. { PARAM_CANDID_SECOND, _T( "ここに後攻正解候補を表示" ) }

BOOL Application :: Init()

分析データグリッドの初期化を追加しました。

  1. analGrid.Init( hwnd )

VOID Application :: Draw()

分析データグリッドの表示を追加しました。

  1. analGrid.Draw( hdc )

以上です。