タイトルバーがないウィンドウのサイズ変更について質問です。

タイトルバーがあるウィンドウでは、
ウィンドウの端にマウスカーソルを合わせると
サイズ変更のカーソルに変わってサイズ変更が出来ますけど、
タイトルバーがないウィンドウでは出来ないのですが、
どうすればサイズ変更が出来るようになるのでしょうか?

CreateWindowEx()には、
拡張ウィンドウスタイルには、
WS_EX_TOOLWINDOW | WS_EX_LAYERED | WS_EX_ACCEPTFILES
ウィンドウスタイルには、
WS_POPUPWINDOW | WS_BORDER
を渡しています。

開発環境
XP
Visual Studio 2005
C、C++

A 回答 (2件)

 こんにちは。

補足頂きました。
 すんません、WM_NCHITTESTについて、チョッと間違えてしまったと事があります。対応したウィンドウスタイルを持たないと、反応してくれない様です。
 要するに、WM_NCHITTESTでリサイズを返したい場合、ウィンドウにはリサイズ枠のスタイルが無いと出来ないと言う事になります。
 ただし、HTCAPTIONはタイトルバー無しでも出来ます(其の為か検索すると良く出てくるが、HTCAPTION以外のフラグになると中々使用例が出てこなくなる)。
 ですので、WM_NCHITTESTでポップアップウィンドウを簡単にリサイズするのは無理かもしれません。

 それで、先ずは確認なのですが、WS_SIZEBOX等でリサイズ枠が出て来ないとの事なのですが、以下のコードでも無理でしょうか。
 レイヤードウィンドウにしているとの事なので、その辺も疑って見たのですが、特に問題無くリサイズ枠が出て来ました。

#include<windows.h>
#include<tchar.h>

//ウィンドウクラス登録
static ATOM Regist(LPCTSTR szClassName, WNDPROC wndProc)
{
WNDCLASSEX wndclass = {sizeof(wndclass)};
wndclass.hCursor= ::LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon= NULL;
wndclass.lpszMenuName= NULL;
wndclass.lpszClassName= szClassName;
wndclass.hbrBackground= (HBRUSH)::GetStockObject(WHITE_BRUSH);
wndclass.hInstance= ::GetModuleHandle(NULL);
wndclass.style= 0;
wndclass.lpfnWndProc= wndProc;
wndclass.cbClsExtra= 0;
wndclass.cbWndExtra= 0;
return ::RegisterClassEx(&wndclass);
}

//ウィンドウを作成して開く
static HWND OpenWindow(LPCTSTR szClassName, LPCTSTR szTitleName, INT w, INT h)
{
HINSTANCE hInst = ::GetModuleHandle(NULL);

HWND hWnd = ::CreateWindowEx(WS_EX_TOOLWINDOW | WS_EX_LAYERED | WS_EX_ACCEPTFILES, szClassName, szTitleName,
WS_POPUPWINDOW | WS_SIZEBOX | WS_BORDER,
CW_USEDEFAULT,CW_USEDEFAULT, w, h,
NULL, NULL,
hInst, NULL);
return hWnd;
}

//ウィンドウプロシージャ
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
case WM_CREATE:
SetLayeredWindowAttributes(hWnd, 0, 128, LWA_ALPHA);
return 0;

case WM_CLOSE:
::PostQuitMessage(0);
::DestroyWindow(hWnd);
return 0;

case WM_DESTROY:
return 0;
}
return ::DefWindowProc(hWnd, uMsg, wParam, lParam);
}

//確認
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hInstancePrev, LPSTR lpCmdLine, int nShowCmd)
{
MSG msg;
TCHAR tstrClassName[] = _T("test resize frame");
TCHAR tstrTitleName[] = _T("title");

//ウィンドウクラスの登録
::Regist(tstrClassName, &::WndProc);

//ウィンドウを作成して開く
HWND hWnd = ::OpenWindow(tstrClassName, tstrTitleName, 800, 600);

//ウィンドウの表示
::ShowWindow(hWnd, SW_SHOW);

//メッセージ回転
while(::GetMessage(&msg, NULL, 0, 0) == TRUE)
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}

//終了
return msg.wParam;
}
    • good
    • 0
この回答へのお礼

出来ました。

色々調べて原因を調べたのですが分からず、
書いて下さったソースを見直した際に、
「WM_NCHITTEST」が書かれていなかったので、
「DefWindowProc(hWnd, uMsg, wParam, lParam);」を
返さないといけないのかもしれないと思い、
やってみた結果出来ました。

今までは、「HTCAPTION」を返していました。

「WS_SIZEBOX」で枠は出来ていたのですが、
リサイズが出来ない状態でした。

ありがとうございます。

お礼日時:2009/05/21 15:17

 こんばんは。


 タイトルバー無しのポップアップウィンドウに、リサイズ枠を持たせたいと言う事でしょうか。
 でしたら、

 WS_POPUPWINDOW | WS_BORDER | WS_THICKFRAME

 又は、

 WS_POPUPWINDOW | WS_BORDER | WS_SIZEBOX

 でリサイズ枠が出て来ると思います。

 それ以外の方法では、WM_NCHITTEST
 http://msdn.microsoft.com/en-us/library/ms645618(VS.85).aspx

 と言うメッセージを処理する事で出来ます。
 その他、マウスをキャプチャして、MoveWindow()やSetWindowPos()で無理矢理引き伸ばす等の手法も在ります(此れに関してはかなり強引です)。

この回答への補足

WS_THICKFRAME又はWS_SIZEBOXで
リサイズ出来なかったのですが、
何か原因があるのでしょうか?
(サイズ変更のカーソルにも変わりませんでした。)
それとも、他にも何かしないといけないのでしょうか?

WM_NCHITTESTでする場合は、
どうすればいいのでしょうか?

補足日時:2009/05/20 22:54
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QOリングのサイズ

Oリングのサイズで質問です。
直径10mmにOリングをはめる場合、何mmを入れればよいでしょうか?
はめる径-1mmではダメですか?
模型用の小型コンプレッサーに使います。

Aベストアンサー

一般的には、はめる径=Oリングの呼び径(P-10)とかに合します。伸ばして使うのはあまり良くありません。

内圧用であれば、溝の外径にOリングの外径を合します。

Qウインドウスタイルの、WS_EX_TOPMOST

引き続きVC++2008でWindowsフォームアプリケーションを作っています。
WindowsAPIでのウインドウ製作中です。

今Form1を親とするウインドウで、CreateWindowEx内のウインドウスタイルの個所の引数にWS_EX_TOPMOSTを指定したのですが
どうも最前面に表示されてくれないようです。


これは何か他にやらないといけない事があるのでしょうか?


なお、CreateWindowEx関数は現在、最初の引数を
WS_EX_TOOLWINDOW にして、WS_EX_TOPMOST以外のウインドウスタイルは
WS_SYSMENU | WS_VSCROLL | WS_SIZEBOX
がある状態です。

Aベストアンサー

WS_EX_TOPMOSTは第一引数に指定するものです。
特に他に条件はありません。
WS_EX_TOOLWINDOWと同時に指定しても問題ないはずです。

QサイズのOの意味は?

S、M、L..というように、サイズのO(オ-)がありますが、これはどういう意味でつけられた物ですか?
例 L・ラージ

Aベストアンサー

 こんばんは。

S:SMALL
M:MEDIUM
L:LARGE
O(LL):OVER LARGE
XO(3L):EXTRA OVER LARGE

 という事で「O」は「オーバーラージ」です。

Qサイズ変更枠ダイアログのタイトルバー左端のアイコンを消す

VC++2005、MFCにてプログラムを作成しています。
サイズ変更枠のダイアログには、デフォルトでタイトルバーの左端に、
小さいウィンドウのようなアイコンが表示されますが、
クローズボックスは表示したままで、アイコンだけを消したいのです。
(よってプロパティのSystemMenuの値はTrueで固定)

自分で調べた方法で、
1.m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); を消す。
2.OnInitDialog()中で次の2行を消す。
SetIcon(m_hIcon, TRUE); // 大きいアイコンを設定
SetIcon(m_hIcon, FALSE); // 小さいアイコンを設定
とありますが、どちらも不可能でした。
※IDR_MAINFRAMEがソースに存在しない、OnIni内にSetIconが存在しない等

GetWindowStyle()を利用すれば実現できるとも聞いたのですが、
使い方が分からず、手が出せない状況です。
もし実現させる方法をご存知の方おられましたら、ご教示お願い致します。

VC++2005、MFCにてプログラムを作成しています。
サイズ変更枠のダイアログには、デフォルトでタイトルバーの左端に、
小さいウィンドウのようなアイコンが表示されますが、
クローズボックスは表示したままで、アイコンだけを消したいのです。
(よってプロパティのSystemMenuの値はTrueで固定)

自分で調べた方法で、
1.m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); を消す。
2.OnInitDialog()中で次の2行を消す。
SetIcon(m_hIcon, TRUE); // 大きいアイコンを設定
SetIc...続きを読む

Aベストアンサー

こんにちは。

以下は、MFC使用&ダイアログベースでのWinアプリ作成時(デフォルト構成から
あまり変更を加えていない場合)の話としてのコメントです。
※見当外れだった場合はすみません。

まず、ダイアログクラスの OnInitDialog() 内に、
  SetIcon(m_hIcon, TRUE);    // 大きいアイコンを設定
  SetIcon(m_hIcon, FALSE);    // 小さいアイコンを設定
のような記述がなく、かつ「アプリ実行時のタイトルバーにアイコンが表示されている」
ということは、システムのデフォルトのアイコンが表示されているのかもしれません。

それと、リソースエディタでのダイアログのプロパティ設定にて、
  [境界線] の設定を 「サイズ変更枠」
に設定されているのではないでしょうか?

あくまで一例ですが、以下のような設定でアイコンを非表示にできるかもしれません。
※上手くいかなかった場合はすみません。

※当方は「VC++2005」を使ったことがないので、設定の画面、項目名などが異なって
いるかもしれません。 その際は、同等な機能・項目などに置き換えて下さい。
(もう過去の遺物ですが、当方は未だに「Visual C++ 5.0」を使用しています。(^_^;) )

==============================
■リソースエディタ上でのダイアログのプロパティ設定

 スタイル      : ポップアップ、または、オーバーラップ
 境界線       : ダイアログ枠
               ※ここでは「サイズ変更枠」には設定しない。
 タイトルバー    : チェックマークをON
               ※スタイル設定をポップアップにした場合。
 システムメニュー : チェックマークをON

■ダイアログクラスの OnInitDialog() への変更・追加

 下記の例のように、ウインドウスタイル、システムメニューの設定を変更・追加してみて下さい。

  this->ModifyStyle(0, WS_THICKFRAME);    //←スタイルに「サイズ変更枠」を追加
  CMenu* pSysMenu = GetSystemMenu(FALSE);
  if (pSysMenu != NULL)
  {                            //↓システムメニューに「サイズ変更」を追加
    pSysMenu->AppendMenu(MF_STRING, SC_SIZE, "サイズ変更(&S)");
  }

 あと、もし下記2行のような記述があった場合は、コメントアウトさせるか、削除して下さい。

  SetIcon(m_hIcon, TRUE);    // 大きいアイコンを設定
  SetIcon(m_hIcon, FALSE);    // 小さいアイコンを設定

【補足】
1)作成したアプリ実行時に、タイトルバー上で右クリックするとシステムメニューが表示されると
  思います。
2)参考までに、上記の設定を行ったサンプルアプリでの、ダイアログプロパティの設定画面例と、
  アプリ実行画面のキャプチャ画像を添付してみました。

==============================

なお、上記の設定例は下記サイトを参考にさせて頂きました。

■参考サイト
ダイアログの左端のアイコンを非表示にするには?
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200102/01020001.txt

ダイアログのシステムメニューで、アイコンはつけないで×「閉じる」ボタンだけつけるには?
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200606/06060098.txt

CreateWindowで作成したウィンドウに、アイコンはつけないで×「閉じる」ボタンだけつけるには?
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200609/06090045.txt

以上です。参考になれば幸いです。

こんにちは。

以下は、MFC使用&ダイアログベースでのWinアプリ作成時(デフォルト構成から
あまり変更を加えていない場合)の話としてのコメントです。
※見当外れだった場合はすみません。

まず、ダイアログクラスの OnInitDialog() 内に、
  SetIcon(m_hIcon, TRUE);    // 大きいアイコンを設定
  SetIcon(m_hIcon, FALSE);    // 小さいアイコンを設定
のような記述がなく、かつ「アプリ実行時のタイトルバーにアイコンが表示されている」
ということは、システムのデフォルトのアイ...続きを読む

Qサイズ表記の『O』について

スポーツ用品の衣服に使われるようなのですが
サイズO(オー)というのは何のオーなのでしょうか?

なぜジャージ等、スポーツ用品に使われるのでしょうか?

ご存知の方、教えてください。

Aベストアンサー

JASPO基準によるサイズ表記で、Lサイズより一つ大きいサイズになります。
スポーツ用品に多いのは、JASPOが日本スポーツ工業協会が定めているので、その業界から浸透していると思われます。
ちなみにOの上はXOと表します。

Qウィンドウサイズを変更しても、サイズが描画されない。

小生、只今C言語とWin32APIでアプリを作成しています。
そこで質問なのですが、以下のコードを実行しても、
ウィンドウにウィンドウサイズが描画されません。

例 幅0 : 高さ0

と描画され、ウィンドウのサイズを変更しても、
幅、高さどちらとも、0のままです。

どうか、お分かりになる諸先輩方、ご教授の方宜しくお願いします。
※尚、文字数の関係もある為、多少削ってあります。
#include <windows.h>
#define BUFSIZ 1024
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
ATOM InitApp(HINSTANCE, LPCSTR);
BOOL InitInstance(HINSTANCE, int, LPCSTR);

int WINAPI WinMain(
HINSTANCE hCurInst,
HINSTANCE hPrevInst,
LPSTR lpsCmdLine,
int nCmdShow)
{
MSG msg;
BOOL bRet;
LPCSTR szClassName = "WindowSizeAndOneButton";

if(!InitApp(hCurInst, szClassName)){
return FALSE;
}
if(!InitInstance(hCurInst, nCmdShow, szClassName)){
return FALSE;
}
while((bRet = GetMessage(&msg, NULL, 0, 0)) != 0){
if(bRet == -1){
MessageBox(NULL, "GetMessage Error", "Error", MB_OK);
break;
}
else{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return (int)msg.wParam;
}
ATOM InitApp(HINSTANCE hInst, LPCSTR szClassName)
{
WNDCLASSEX wc;
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInst;
wc.hIcon = (HICON)LoadImage(
NULL,
MAKEINTRESOURCE(IDI_APPLICATION),
IMAGE_ICON,
0,
0,
LR_DEFAULTSIZE | LR_SHARED);
wc.hCursor = (HCURSOR)LoadImage(
NULL,
MAKEINTRESOURCE(IDC_ARROW),
IMAGE_CURSOR,
0,
0,
LR_DEFAULTSIZE | LR_SHARED);
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = (LPCSTR)szClassName;
wc.hIconSm = (HICON)LoadImage(
NULL,
MAKEINTRESOURCE(IDI_APPLICATION),
IMAGE_ICON,
0,
0,
LR_DEFAULTSIZE | LR_SHARED);

return (RegisterClassEx(&wc));
}
BOOL InitInstance(HINSTANCE hInst, int nCmdShow, LPCSTR szClassName)
{
HWND hWnd;
hWnd = CreateWindow(
szClassName,
"Window",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInst,
NULL);

if(!hWnd){
return FALSE;
}

ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);

return TRUE;
}

//ウィンドウプロシージャ
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
HDC hdc;
PAINTSTRUCT ps;
static int width, height;
static TCHAR buf[BUFSIZ];

width = height = 0;

switch(msg){
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_SIZE:
width = LOWORD(lp);
height = HIWORD(lp);
return 0;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
wsprintf(buf, "幅 = %d : 高さ = %d", width, height);
TextOut(hdc, 10, 10, buf, lstrlen(buf));
EndPaint(hWnd, &ps);
}
return DefWindowProc(hWnd, msg, wp, lp);
}

小生、只今C言語とWin32APIでアプリを作成しています。
そこで質問なのですが、以下のコードを実行しても、
ウィンドウにウィンドウサイズが描画されません。

例 幅0 : 高さ0

と描画され、ウィンドウのサイズを変更しても、
幅、高さどちらとも、0のままです。

どうか、お分かりになる諸先輩方、ご教授の方宜しくお願いします。
※尚、文字数の関係もある為、多少削ってあります。
#include <windows.h>
#define BUFSIZ 1024
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
ATOM InitAp...続きを読む

Aベストアンサー

メッセージキューには、WM_SIZE、WM_PAINTの順でメッセージが入ります。

ウィンドウプロシージャでは、WM_SIZE、WM_PAINTの順で取り出されます。

メッセージにWM_SIZEが来ると、ウィンドウプロシージャは
width = height = 0;
を実行して
case WM_SIZE:
width = LOWORD(lp);
height = HIWORD(lp);
return 0;
を実行します。

この時点では、width と height に正しい値が入っています。

次に、メッセージにWM_PAINTが来ると、ウィンドウプロシージャは
width = height = 0;

case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
wsprintf(buf, "幅 = %d : 高さ = %d", width, height);
TextOut(hdc, 10, 10, buf, lstrlen(buf));
EndPaint(hWnd, &ps);
を実行してから
return DefWindowProc(hWnd, msg, wp, lp);
を実行します。

width = height = 0;
の時点で、愛川欽也が机を叩いて「はい!消えた~!」って叫びます(元ネタ判らないだろうなあ)

メッセージキューには、WM_SIZE、WM_PAINTの順でメッセージが入ります。

ウィンドウプロシージャでは、WM_SIZE、WM_PAINTの順で取り出されます。

メッセージにWM_SIZEが来ると、ウィンドウプロシージャは
width = height = 0;
を実行して
case WM_SIZE:
width = LOWORD(lp);
height = HIWORD(lp);
return 0;
を実行します。

この時点では、width と height に正しい値が入っています。

次に、メッセージにWM_PAINTが来ると、ウィンドウプロシージャは
width = height = 0;

case WM_PAINT...続きを読む

Q服のサイズ「O」に適応する体型

通販で安くて良いバドミントンのTシャツを見つけたので購入しようかと思っています。
でもそれはサイズがOという大きなサイズしかなく、
私は身長約162cmで体格はどちらかというと細身の為、ちゃんと着れるか不安です。
 背丈は76cm、肩幅は61cmだそうです。
メジャーが家に無いので分かりませんが、肩幅61cmというのは、
性別、どのくらいの身長の方に値するのでしょうか。
どうなのでしょうか。お願いします。

Aベストアンサー

バドミントンのTシャツだと、
ユニセックスのものと、レディースのもので
だいぶサイズに違いがあります。
質問者様は、女性の方ですよね?
うちで先日トマス杯の記念Tシャツ購入したとき
主人が170cmで痩せ型ですが、Mサイズで
ジャストサイズでした。(YONEX製品)
プレーをするのに多少大きいのはかまわないとも
思いますが、さすがにOサイズは大きすぎだと
推測されます。(特にTシャツは)

私が女性で多少太目の160cmで、
レディースのユニホーム(ポロシャツ系)を購入するときは、Oサイズのこともあります。
ユニホームはシルエットが細身のメーカーもあり
すけることも考慮すると、大きめでもいいかと。
でも、ユニセックスだったらTシャツは私でも
Mで、普通に着ています。

参考になれば幸いです。

QCreateWindowEx のウィンドウスタイルが反映されないのですが・・・

CreateWindowEx のウィンドウスタイルが反映されないのですが・・・
VC++6.0 の SDK にて、ウィンドウを表示するプログラムを作成中なのですが、
スタイルが思うように反映されません。なぜなのでしょうか。

hList = CreateWindowEx( 0,
     WC_LISTVIEW, "", 
     WS_CHILD | WS_VISIBLE |//猫でもわかる ~ によるうとデフォルトで必要らしい
     WS_EX_CLIENTEDGE |   // 縁が沈んで見える境界線を持ちます。→ 持ちません
     WS_EX_ACCEPTFILES |  // ドラッグ&ドロップを受けるとあるが、テキストをドロップしても×マーク
     WS_EX_RIGHTSCROLLBAR | // 右スクロールバーが出るはずなのに・・・
     LVS_REPORT,       // カラムのタイトル
     0, 0, 0, 0,
     hWnd,
     (HMENU)LISTVW_HI_1,
     hInst,
     NULL);

CreateWindowEx のウィンドウスタイルが反映されないのですが・・・
VC++6.0 の SDK にて、ウィンドウを表示するプログラムを作成中なのですが、
スタイルが思うように反映されません。なぜなのでしょうか。

hList = CreateWindowEx( 0,
     WC_LISTVIEW, "", 
     WS_CHILD | WS_VISIBLE |//猫でもわかる ~ によるうとデフォルトで必要らしい
     WS_EX_CLIENTEDGE |   // 縁が沈んで見える境界線を持ちます。→ 持ちません
     WS_EX_ACCEPTFILES |  // ドラッグ&ドロッ...続きを読む

Aベストアンサー

補足です。

>ドラッグ&ドロップを受けるとあるが、テキストをドロップしても×マーク

ドラッグ&ドロップを受け付ける為には、作成されたウィンドウ(CreateWindowExされたウィンドウのhWnd)に対して
DragAcceptFiles(HWND hWnd,BOOL fAccept);
を実行し、且つ、そのウィンドウのメッセージハンドラで
WM_DROPFILES
のメッセージを処理する必要があります。

DragAcceptFilesをしないと、カーソル形状は変化せず×のまま、ドラッグ&ドロップを受け付けません。

Q洋服のサイズで「O」って何の略ですか?

スポーツウェアとかでよく目にするのですが、サイズで「O」(オー)って何の略なのでしょうか?
「S」ならSMALL、「L」ならLARGEだと思うのですが・・・。

ちょっと気になっただけなので、お分かりになる方、お時間のあるときにでも教えてください。

Aベストアンサー

 Oサイズ=「おおきい」の略・・・というのはウソです(ベタ)。
「ONE」サイズの略です。
 ちなみにXは「EXTRA」の略です。
 だから、XO醤っていうのは・・・ウソです。

QCS_HREDRAW|CS_VREDRAWについて

windowの雛形で、WNDCLASSEXのstyleでCS_HREDRAW|CS_VREDRAWを付けても0にしても変わらないのですが、CS_HREDRAW|CS_VREDRAWの意味はあるのでしょうか?CS_HREDRAW|CS_VREDRAWの意味はわかっているのですが、指定しても変わらなかったので質問させていただきました。

Aベストアンサー

> もう一つ質問なのですが基本的にCS_HREDRAW CS_VDRAW は付けといた方がいいのでしょうか?
場合によります。
 ウィンドウのサイズが小さくなった時に再描画が必要な場合は、CS_HREDRAW
CS_VREDRAW は必要でしょう。
例えば、
・画像ビューアで、ウィンドウのサイズ変更した時に、表示する画像を伸縮表示する場合。
・ウィンドウの右側や下側等に、現在時刻を表示するような場合。

> そのコードでやってみましたが、見た感じやっぱり変化なしです。どいうことなのでしょうか?
WM_PAINTの呼ばれる条件が違う事が確認できると思いますが、コンソールを有効にして、
コンパイルしてみましたか?

そもそも、ソースコードを動かしては見たけど、コード自体は読んでないとか
だったりするのでしょうか。


人気Q&Aランキング