CListCtrlから派生したカスタムクラスのHDN_ENDTRACKWメッセージを処理するときに、少し問題が発生します。
基本的に、このメッセージが送信されると、列の幅を格納する実際の値は、処理コードが実行されるまで更新されないようです。
ハンドル内のコードは、プログレスバーにサイズを変更して、サイズ変更された列の幅を埋めるように指示するだけです。コード:
void ProgListCtrl::OnEndTrack(NMHDR* pNMHDR, LRESULT* pResult)
{
int width = ListView_GetColumnWidth(GetSafeHwnd(), m_nProgressColumn);
ResizeProgressbar();
}
ListView_GetColumnWidthは、現時点でのデバッグを支援するためだけにあります。
変更する特定の列のデフォルト値は150です。UIで列のサイズを変更すると、このメソッドが呼び出されますが、幅は同じ150のままで、プログレスバーのサイズは変更されません。列のサイズが再度変更された場合にのみ、幅の値は最初のサイズ変更後の列の値を反映するようになります。次に、ResizeProgressBarメソッドは、プログラムバーのサイズを正しく変更して、列が存在する列を埋めます。これは連続的であり、幅の値は常に次のようになります。実際の値から一歩遅れます。
私はどんな助けにも感謝します。乾杯。