この記事は2019年07月21日に投稿しました。
目次
1. はじめに
こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回は業務で使用しているMFCでウィンドウサイズを動的に変更する方法についてです。
2. MFCでウィンドウサイズを動的に変更する
MFCでウィンドウサイズを動的に変更する方法ですが、SetWindowPos関数を使用して行います。
構文
BOOL SetWindowPos( HWND hWnd, HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT uFlags )
引数
hWnd
自ウィンドウのハンドル
hWndInsertAfter
Zオーダーで配置されたウィンドウの前にあるウィンドウへのハンドル(今回未使用)
x
ウィンドウの左の新しい位置(今回未使用)
y
ウィンドウの上部の新しい位置(今回未使用)
cx
ウィンドウの新しい幅(ピクセル単位)
cy
ウィンドウの新しい高さ(ピクセル単位)
uFlags
ウィンドウのサイズ設定と配置のフラグ
今回はSWP_NOMOVE(現在の位置を保持)とSWP_NOZORDER(現在のZオーダーを保持)を指定します。
これにより第2引数~第4引数が無視されます。
戻り値
関数が成功した場合0以外
関数が失敗した場合0
実装例
ウィンドウサイズを(100, 100)に変更します。
// hWndは自ウィンドウのハンドル SetWindowPos(hWnd, NULL, 0, 0, 100, 100, SWP_NOMOVE | SWP_NOZORDER);
3. おわりに
業務で作成してる画面で、データの有無で画面下部に表示している表の表示/非表示を制御する必要がありました。
表が非表示の場合、画面下部が間延びしてしまうため、SetWindowPos関数でウィンドウサイズを変更することにしました。
紹介している一部の記事のコードはGitlabで公開しています。
興味のある方は覗いてみてください。
私が勤務しているニューラルでは、主に組み込み系ソフトの開発を行っております。
弊社製品のハイブリッドOS Bi-OSは高い技術力を評価されており、特に制御系や通信系を得意としています。
私自身はiOSモバイルアプリやウィンドウズアプリを得意としております。
ソフトウェア開発に関して相談などございましたら、お気軽にご連絡ください。
また一緒に働きたい技術者の方も随時募集中です。
興味がありましたらご連絡ください。
EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688