改行すると、1行分大きくなり、バックスペースキーを押したときに1行少なくなったら、1行分小さくなるスケーラブルエディットボックスを作る・・・。
ScalableEdit.hは、
行の高さ、行間、行数をメンバとして持っている・・・。
Createでは、高さを指定する引数がない・・・。
OnKeyDown、そして、独自のメッセージハンドラOnSizeChildを宣言・・・。
ScalableEdit.cppは、
Createでは、行の高さを計算してリサイズ・・・。
OnKeyDownでは、リターンキーが押されたとき、ウィンドウの高さを1行分高くし、UM_SIZECHILDを親ウィンドウに通知させる・・・。
バックスペースキーが押されたとき、0列目の場合は1行分小さくして、UM_SIZECHILDを親ウィンドウに通知・・・。
OnSizeChildはここでは使わない・・・。
CScalableEditを持つCScalableEditPanelは、
ScalableEditPanel.hで、m_iLineHeight、OnSizeChildなどを実装・・・。
ScalableEditPanel.cppは、
Createでは高さは適当に・・・。
OnCreateでCScalableEditを作成・・・。
CScalableEdit側のpScalableEdit->m_iLineHeightをCScalableEditPanel側のm_iLineHeightともしておく・・・。
でリサイズ・・・。
ScalableEditのサイズをScalableEditPanelのサイズに合わせるように・・・。
WS_BORDERはやめて、赤い矩形を描画する・・・。
OnSizeChildが来たら、渡されたサイズにリサイズする・・・。
Window.hに、独自メッセージUM_SIZEHILDの定義・・・。
また、WM_USERはまずいのでWM_APPに・・・。
Window.cppで、UM_SIZECHILDに対応できるように・・・。
MainWindow.cppのAddEditで、CScalableEditPanelに差し替え・・・。
OnSizeでScalableEditPanelは横幅をWindowListItemに合わせて、高さはそのまま・・・。
ScalableEditPanelの登録を忘れずに・・・。
1行分のエディットボックスが改行されると、
2行、さらに改行して、
3行となり、
バックスペースで戻っていくと、
2行になり、さらに戻していくと、
1行になる・・・。
https://github.com/bg1bgst333/VizCommand/tree/develop/winapi/win32_blank/vs14/src/VizCommand