プログラミングのメモ帳(C/C++/HSP)

日々のプログラミングで気づいた点や小技集を紹介します。(Windows 10/XP/Vista、VC2017、HSP)

ウインドウの移動位置を固定

2011年12月08日 03時22分00秒 | ウインドウ関連

ウインドウの移動位置を固定する方法は次の通りです。(戻る)

  1. WM_NCLBUTTONDOWN メッセージで HTCAPTION の処理を無視する。

今回のサンプルでは、ウインドウのタイトルバーでウインドウが絶対に移動できなくなります。
時計ソフトなどのミニソフトなどの移動位置を固定したいときに使えます。

プロトタイプ宣言

BOOL SetForegroundWindow(
    HWND    hWnd    // ウインドウのハンドル
);

サンプル

// ウインドウの移動位置の固定
BOOL WindowMoveLock( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
    if ( uMsg == WM_NCLBUTTONDOWN ){
        if ( wParam == HTCAPTION ){
            SetForegroundWindow( hWnd );
            return TRUE;
        }
    }
    UNREFERENCED_PARAMETER( lParam );
    return FALSE;
}

使い方1(ウインドウ・プロシージャ)

// break 付きのキーワード
#define CASE        break;case
#define DEFAULT     break;default

// ウインドウ・プロシージャの関数
LRESULT CALLBACK mainWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
    if ( WindowMoveLock(hWnd,uMsg,wParam,lParam) ){
        return 0;
    }
    switch ( uMsg ){
        CASE WM_CLOSE:      DestroyWindow( hWnd );
        CASE WM_DESTROY:    PostQuitMessage( 0 );
        DEFAULT:            return DefWindowProc( hWnd, uMsg, wParam, lParam );
    }
    return 0;
}
  • ウインドウ・プロシージャで使うときは、WindowMoveLock 関数が実行されたら 0 を返します。
  • 上記の使い方でウインドウはタイトルバーで絶対に移動できなくなります。
  • なお、WindowMoveLock 関数を実行しなければ通常と同じくウインドウが移動可能。

使い方2(ダイアログ・プロシージャ)

// break 付きのキーワード
#define CASE        break;case
#define DEFAULT     break;default

// ダイアログ・プロシージャの関数
BOOL CALLBACK mainDialogProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
    if ( WindowMoveLock(hDlg,uMsg,wParam,lParam) ){
        return TRUE;
    }
    switch ( uMsg ){
        CASE WM_CLOSE:      EndDialog( hDlg, IDOK );
        DEFAULT:            return FALSE;
    }
    return TRUE;
}
  • ダイアログ・プロシージャで使うときは、WindowMoveLock 関数が実行されたら TRUE を返します。
  • 上記の使い方でウインドウはタイトルバーで絶対に移動できなくなります。
  • なお、WindowMoveLock 関数を実行しなければ通常と同じくウインドウが移動可能。

関連記事



コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ウインドウの移動範囲を制御 | トップ | コントロールに文字色/背景... »
最新の画像もっと見る

コメントを投稿

ウインドウ関連」カテゴリの最新記事