■ [数学] 平行四辺形
平行四辺形は、少なくとも、次の性質を持つ。
2組の対辺が、それぞれ等しい。
2組の対角が、それぞれ等しい。
対角線は、それぞれの中点で交わる。
2組の対辺は、それぞれ平行である。
また、上の性質のうち、どれか1つ以上満たすならば
それは平行四辺形である。
つまり、上の4つの性質のうちどれか1つを満たせば
残りの3つが成り立つということ。
平行四辺形が持つ性質は強力なので、
三角形の証明問題が出たら、
とりあえず平行四辺形にしてみるのも1つの手だ。
MFCでリスト表示に複数の列を持たせたいとき
(つまり、エクセルのような表示をさせたいとき)は
CListCtrl のスタイルをレポートにする。
リソースエディタでListCtrlを配置して、
プロパティで View の項目にレポートを設定すればいい。
簡単な初期化のコードを載せると、
まず、適当なビューを作って
CListCtrl m_List;
をメンバにもたせて
(ここら辺の処理もリソースエディタからやる)
で、そのビューの OnInitialUpdate()あたりで
LV_COLUMN stColumn; // 列構造体
CString csHeader; // ヘッダ用の文字列
// 構造体を初期化
memset( &stColumn, 0, sizeof( LV_COLUMN ) );
// 横幅とラベルをセットするので、当該マスクをオンにしておく
stColumn.mask = LVCF_WIDTH | LVCF_TEXT;
stColumn.cx = 100; // 横幅
csHeader = _T("その1");
// 構造体のバッファに文字列セット
stColumn.pszText = csHeader.GetBuffer();
m_List.InsertColumn( 0, &stColumn );
csHeader = _T("その2");
stColumn.pszText = csHeader.GetBuffer();
m_List.InsertColumn( 1, &stColumn );
こんな感じで
まずは、こうしてみる
LVITEMW stItem;
CString csItem;
memset( &stItem, 0, sizeof(LVITEMW) );
stItem.mask = LVCF_FMT | LVCF_TEXT | LVCF_SUBITEM;
// 1列目
csItem = _T("アイテム1");
stItem.pszText = csItem.GetBuffer();
stItem.iItem = 0; // 1行目
stItem.iSubItem = 0; // 1列目
m_List.InsertItem( &stItem ); // 1列目は InsertItem()
// 2列目
csItem = _T("アイテム2");
stItem.pszText = csItem.GetBuffer();
stItem.iItem = 0; // 1行目
stItem.iSubItem = 1; // 2列目
m_List.SetItem( &stItem ); // 2列目からは SetItem()
結果:
SetItem が 0 を返すのに、2列目が表示に反映されない…。
m_List.SetItem を
m_List.SetItemText( 0, 1, _T("アイテム2") );
に変えたら2列目の表示も反映されたけど
納得いかないなー。