非クライアント領域を非表示しない方法

解決


まは  2013-02-10 20:06:18  No: 73615  IP: 192.*.*.*

現在、クライアント領域のみのソフトを作成しようとしているのですが、
非クライアント領域を表示しないようにする方法がわからなくて困っています。
似たソフトとしては付箋ソフトのようなものを作りたいと思っています。
解決方法がわかる方よろしくお願いします。
開発環境はVS2010のC++です。

編集 削除
瀬戸っぷ  2013-02-11 00:07:12  No: 73616  IP: 192.*.*.*

>開発環境はVS2010のC++です。

APIなんですかね?
CreateWindow()、またはCreateWindowEx()で指定するスタイルによる…かと思われますが。
WS_POPUP | WS_VISIBLE
ってところでしょうか…。

編集 削除
Ryo  2013-02-12 12:02:03  No: 73617  IP: 192.*.*.*

WM_NCCALCSIZEで、クライアント領域を最大まで増やすのは
どうでしょう

編集 削除
まは  2013-02-12 22:38:26  No: 73618  IP: 192.*.*.*

ありがとうございます
試してみます

編集 削除
瀬戸っぷ  2013-02-13 09:34:10  No: 73619  IP: 192.*.*.*

VC++2010 EEで、Win32プロジェクトを作成してできたスケルトンで…下記の変更を行うとクライアント領域だけのウィンドウが作れます。
# とは言え、真っ白なウィンドウが表示されるだけですが。

MyRegisterClass()でウィンドウクラスを登録する際にメニューをNULLにする。
wcex.lpszMenuName = NULL;
に変更。

InitInstance()でウィンドウを作成する際にWS_POPUPにする。
# 始点座標にCW_USEDEFAULTを指定すると…デスクトップ内に出てこないかも知れませんが…。
hWnd = CreateWindow(szWindowClass, szTitle, WS_POPUP, 100, 100, 200, 200, NULL, NULL, hInstance, NULL);

タイトルバーがないので、ウィンドウをドラッグして移動させる。
ということが出来ませんのでご注意を。
# WM_NCHITTESTの戻り値を変更することで…一応ドラッグ移動できるようにはなりますが。

編集 削除
zeek  2013-02-20 19:45:14  No: 73620  IP: 192.*.*.*

> 似たソフトとしては付箋ソフトのようなものを作りたいと思っています。
付箋ソフトとなるとタスクバーにアイコンを表示したくないですよね?
そうであれば
hWnd = CreateWindowEx(WS_EX_TOOLWINDOW, szWindowClass, szTitle, WS_VISIBLE | WS_POPUP, ...);
が良いと思います。

編集 削除
まは  2013-03-11 20:55:06  No: 73621  IP: 192.*.*.*

適当な質問にいっぱい回答有り難うございます。
全て試させて頂きます。

編集 削除