プログラムを書こう!

実務や自作アプリ開発で習得した役に立つソフトウェア技術情報を発信するブログ

MFCでウィンドウサイズを動的に変更する。

この記事は2019年07月21日に投稿しました。

f:id:paveway:20190914064630j:plain

目次

  1. はじめに
  2. MFCでウィンドウサイズを動的に変更する
  3. おわりに

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

目次へ