Windows API のラッパー関数とクラスを作成しています。私が遭遇し始めている一般的な出来事は、Windows スタイルの変更です。
以下は、パラメータ ALIGNMENT 列挙に基づいて TextBox のテキスト配置を調整するサンプル コードです。多くのテストの後、2 つの代替の配置スタイルを削除する必要があるようです。そうしないと競合します。次に SetWindowPos(..SWP_FRAMECHANGED) も機能しないので、スタイルが更新された後に TextBox を強制的に再描画するために InvalidateRect() と UpdateWindow() に置き換えました。
これを行う簡単な方法があれば、フィードバックをお願いします。何かを見落としているような気がします。ありがとう!:)
enum ALIGNMENT
{
Left,
Right,
Center
};
void TextBox::Alignment(ALIGNMENT Alignment)
{
switch (Alignment)
{
case ALIGNMENT::Left:
SetWindowLongPtr(m_hWnd, GWL_STYLE, (GetWindowLongPtr(m_hWnd, GWL_STYLE) & ~ES_CENTER & ~ES_RIGHT) | ES_LEFT);
break;
case ALIGNMENT::Center:
SetWindowLongPtr(m_hWnd, GWL_STYLE, (GetWindowLongPtr(m_hWnd, GWL_STYLE) & ~ES_LEFT & ~ES_RIGHT) | ES_CENTER);
break;
case ALIGNMENT::Right:
SetWindowLongPtr(m_hWnd, GWL_STYLE, (GetWindowLongPtr(m_hWnd, GWL_STYLE) & ~ES_LEFT & ~ES_CENTER) | ES_RIGHT);
break;
}
InvalidateRect(m_hWnd, NULL, true);
UpdateWindow(m_hWnd);
};