ウィンドウの枠の太さ
ウィンドウの枠の太さ
タイトルの通りで、DXライブラリとC言語を使ってウィンドウの枠の太さを変えることは出来ないでしょうか?
もし出来たら、やり方を教えていただけると有り難いです。
もし出来たら、やり方を教えていただけると有り難いです。
Re:ウィンドウの枠の太さ
DXライブラリで作ったウィンドウの枠のサイズを変更するのではなく、
DXライブラリとC言語で他のアプリのウィンドウのサイズを変更したいと言う事でしょうか?
前者であればこちら参考にして下さい。
http://www.play21.jp/board/formz.cgi?ac ... &lognum=54
DXライブラリとC言語で他のアプリのウィンドウのサイズを変更したいと言う事でしょうか?
前者であればこちら参考にして下さい。
http://www.play21.jp/board/formz.cgi?ac ... &lognum=54
Re:ウィンドウの枠の太さ
> DXライブラリで作ったウィンドウの枠のサイズを変更するのではなく、
> DXライブラリとC言語で他のアプリのウィンドウのサイズを変更したいと言う事でしょうか?
いえ、DXライブラリで作ったウィンドウの枠の太さを変更したいのです。
DXライブラリで作ったウィンドウの枠は、なぜか他のソフトより少し枠が太いと思ったので。
> DXライブラリとC言語で他のアプリのウィンドウのサイズを変更したいと言う事でしょうか?
いえ、DXライブラリで作ったウィンドウの枠の太さを変更したいのです。
DXライブラリで作ったウィンドウの枠は、なぜか他のソフトより少し枠が太いと思ったので。
Re:ウィンドウの枠の太さ
画像を張れれば質問の意味が伝えやすいのですが…
すみません、画像の張り方がわかりません。
あと、SetWindowStyleMode()は違う気がするので、CreateWindow()?
すみません、画像の張り方がわかりません。
あと、SetWindowStyleMode()は違う気がするので、CreateWindow()?
Re:ウィンドウの枠の太さ
おお、気付かなかった!
シエルさんありがとうございます。
上の画像のように、DXライブラリを使用して作ったソフトの枠が他のソフトより太いのです。
DXライブラリを使用したソフトの枠の太さを、他のソフトの枠の太さに変更することはできますか?
(まあ、そんな気になる程の違いではないのですが…)
シエルさんありがとうございます。
上の画像のように、DXライブラリを使用して作ったソフトの枠が他のソフトより太いのです。
DXライブラリを使用したソフトの枠の太さを、他のソフトの枠の太さに変更することはできますか?
(まあ、そんな気になる程の違いではないのですが…)

Re:ウィンドウの枠の太さ
> 上の画像のように、DXライブラリを使用して作ったソフトの枠が他のソフトより太いのです。
> DXライブラリを使用したソフトの枠の太さを、他のソフトの枠の太さに変更することはできますか?
ウインドウスタイルを調べてみたところ、枠付きのウインドウ(WS_BORDERあり)でもWS_POPUPスタイルが設定されているのが原因のような気がします。
> DXライブラリを使用したソフトの枠の太さを、他のソフトの枠の太さに変更することはできますか?
ウインドウスタイルを調べてみたところ、枠付きのウインドウ(WS_BORDERあり)でもWS_POPUPスタイルが設定されているのが原因のような気がします。
Re:ウィンドウの枠の太さ
SetWindowLong(GetMainWindowHandle,GWL_STYLE,WS_VISIBLE | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX);
と、上記のようにだけ付け加えて実行してみましたが、変化はありませんでした。
(もしかしたら WS_~ の選択を間違っている?)
と、上記のようにだけ付け加えて実行してみましたが、変化はありませんでした。
(もしかしたら WS_~ の選択を間違っている?)

Re:ウィンドウの枠の太さ
GetMainWindowHandleの後ろに()が抜けてると思いますけど。
あと、SetWindowLongで変更しても、SetWindowPosを実行しないと反映されない場合があります。
http://msdn.microsoft.com/ja-jp/library/cc411203.aspx
の解説のところ。
あと、SetWindowLongで変更しても、SetWindowPosを実行しないと反映されない場合があります。
http://msdn.microsoft.com/ja-jp/library/cc411203.aspx
の解説のところ。

Re:ウィンドウの枠の太さ
お久しぶりに失礼します。
色々と試してみて、
SetWindowStyleMode(2);
を設定してDxLib_Init()した後に、
SetWindowLong(GetMainWindowHandle(),GWL_STYLE,WS_VISIBLE | WS_OVERLAPPEDWINDOW^WS_THICKFRAME);
SetWindowPos(GetMainWindowHandle(),HWND_TOP,0,0,640,480,SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
をしてみたら出来たのですが理由がわかりません。
SetWindowStyleMode();に0や1を指定した後では出来ないのです。
誰か理由がわかる方すみませんが教えて下さい。
一応本題は解決したので解決にしておきます
色々と試してみて、
SetWindowStyleMode(2);
を設定してDxLib_Init()した後に、
SetWindowLong(GetMainWindowHandle(),GWL_STYLE,WS_VISIBLE | WS_OVERLAPPEDWINDOW^WS_THICKFRAME);
SetWindowPos(GetMainWindowHandle(),HWND_TOP,0,0,640,480,SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
をしてみたら出来たのですが理由がわかりません。
SetWindowStyleMode();に0や1を指定した後では出来ないのです。
誰か理由がわかる方すみませんが教えて下さい。
一応本題は解決したので解決にしておきます

Re:ウィンドウの枠の太さ
SetWindowStyleModeを0や1にした場合のどういうスタイルになるのか、
DXライブラリはさっぱりわからないので、分かりませんが、
そのスタイルに対応するsetwindowlogとsetwindowposの引数を指定する必要があると思います。
DXライブラリはさっぱりわからないので、分かりませんが、
そのスタイルに対応するsetwindowlogとsetwindowposの引数を指定する必要があると思います。
Re:ウィンドウの枠の太さ
DxWin.cppより
------------------------
// ウインドウスタイルの定義
#define WSTYLE_NUM (7) // ウインドウスタイルの数
// 0 :デフォルト
// 1 :タスクバーなし
// 2 :タスクバーなし枠なし
// 3 :枠なし
// 4 :何もなし
// 5 :最小化無し
// 6 :ツールバーに適したウインドウ
const DWORD WStyle_WindowModeTable[WSTYLE_NUM] =
{
WS_MINIMIZEBOX | WS_POPUP | WS_SYSMENU | WS_CAPTION,
WS_POPUP | WS_SYSMENU,
WS_POPUP | WS_SYSMENU,
WS_MINIMIZEBOX | WS_POPUP | WS_SYSMENU | WS_CAPTION,
WS_POPUP | WS_SYSMENU,
WS_POPUP | WS_SYSMENU | WS_CAPTION,
WS_MINIMIZEBOX | WS_POPUP | WS_SYSMENU | WS_CAPTION,
} ;
const DWORD WExStyle_WindowModeTable[WSTYLE_NUM] =
{
WS_EX_CLIENTEDGE | WS_EX_WINDOWEDGE,
WS_EX_CLIENTEDGE | WS_EX_WINDOWEDGE,
0,
WS_EX_TOOLWINDOW,
WS_EX_TOOLWINDOW,
WS_EX_WINDOWEDGE,
} ;
0,1と2の違いは拡張スタイルの有無のようです
------------------------
// ウインドウスタイルの定義
#define WSTYLE_NUM (7) // ウインドウスタイルの数
// 0 :デフォルト
// 1 :タスクバーなし
// 2 :タスクバーなし枠なし
// 3 :枠なし
// 4 :何もなし
// 5 :最小化無し
// 6 :ツールバーに適したウインドウ
const DWORD WStyle_WindowModeTable[WSTYLE_NUM] =
{
WS_MINIMIZEBOX | WS_POPUP | WS_SYSMENU | WS_CAPTION,
WS_POPUP | WS_SYSMENU,
WS_POPUP | WS_SYSMENU,
WS_MINIMIZEBOX | WS_POPUP | WS_SYSMENU | WS_CAPTION,
WS_POPUP | WS_SYSMENU,
WS_POPUP | WS_SYSMENU | WS_CAPTION,
WS_MINIMIZEBOX | WS_POPUP | WS_SYSMENU | WS_CAPTION,
} ;
const DWORD WExStyle_WindowModeTable[WSTYLE_NUM] =
{
WS_EX_CLIENTEDGE | WS_EX_WINDOWEDGE,
WS_EX_CLIENTEDGE | WS_EX_WINDOWEDGE,
0,
WS_EX_TOOLWINDOW,
WS_EX_TOOLWINDOW,
WS_EX_WINDOWEDGE,
} ;
0,1と2の違いは拡張スタイルの有無のようです
Re:ウィンドウの枠の太さ
ソースのバージョンが古かったので当たらし3.03のものでは
// 0 :デフォルト
// 1 :タスクバーなし
// 2 :タスクバーなし枠なし
// 3 :枠なし
// 4 :何もなし
// 5 :最小化無し
// 6 :ツールバーに適したウインドウ
// 7 :最大化ボタンつきウインドウ、初期状態が通常サイズ
// 8 :最大化ボタンつきウインドウ、初期状態が最大化状態
// 9 :デフォルトに縁の立体化無し
const DWORD WStyle_WindowModeTable[WSTYLE_NUM] =
{
WS_MINIMIZEBOX | WS_POPUP | WS_SYSMENU | WS_CAPTION,
WS_POPUP | WS_SYSMENU,
WS_POPUP | WS_SYSMENU,
WS_MINIMIZEBOX | WS_POPUP | WS_SYSMENU | WS_CAPTION,
WS_POPUP | WS_SYSMENU,
WS_POPUP | WS_SYSMENU | WS_CAPTION,
WS_MINIMIZEBOX | WS_POPUP | WS_SYSMENU | WS_CAPTION,
WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_POPUP | WS_SYSMENU | WS_CAPTION,
WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_POPUP | WS_SYSMENU | WS_CAPTION | WS_MAXIMIZE,
WS_MINIMIZEBOX | WS_POPUP | WS_SYSMENU | WS_CAPTION,
} ;
const DWORD WExStyle_WindowModeTable[WSTYLE_NUM] =
{
WS_EX_CLIENTEDGE | WS_EX_WINDOWEDGE,
WS_EX_CLIENTEDGE | WS_EX_WINDOWEDGE,
0,
WS_EX_TOOLWINDOW,
WS_EX_TOOLWINDOW,
WS_EX_WINDOWEDGE,
WS_EX_CLIENTEDGE | WS_EX_WINDOWEDGE,
WS_EX_CLIENTEDGE | WS_EX_WINDOWEDGE,
WS_EX_CLIENTEDGE | WS_EX_WINDOWEDGE,
WS_EX_WINDOWEDGE,
} ;
でした
// 0 :デフォルト
// 1 :タスクバーなし
// 2 :タスクバーなし枠なし
// 3 :枠なし
// 4 :何もなし
// 5 :最小化無し
// 6 :ツールバーに適したウインドウ
// 7 :最大化ボタンつきウインドウ、初期状態が通常サイズ
// 8 :最大化ボタンつきウインドウ、初期状態が最大化状態
// 9 :デフォルトに縁の立体化無し
const DWORD WStyle_WindowModeTable[WSTYLE_NUM] =
{
WS_MINIMIZEBOX | WS_POPUP | WS_SYSMENU | WS_CAPTION,
WS_POPUP | WS_SYSMENU,
WS_POPUP | WS_SYSMENU,
WS_MINIMIZEBOX | WS_POPUP | WS_SYSMENU | WS_CAPTION,
WS_POPUP | WS_SYSMENU,
WS_POPUP | WS_SYSMENU | WS_CAPTION,
WS_MINIMIZEBOX | WS_POPUP | WS_SYSMENU | WS_CAPTION,
WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_POPUP | WS_SYSMENU | WS_CAPTION,
WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_POPUP | WS_SYSMENU | WS_CAPTION | WS_MAXIMIZE,
WS_MINIMIZEBOX | WS_POPUP | WS_SYSMENU | WS_CAPTION,
} ;
const DWORD WExStyle_WindowModeTable[WSTYLE_NUM] =
{
WS_EX_CLIENTEDGE | WS_EX_WINDOWEDGE,
WS_EX_CLIENTEDGE | WS_EX_WINDOWEDGE,
0,
WS_EX_TOOLWINDOW,
WS_EX_TOOLWINDOW,
WS_EX_WINDOWEDGE,
WS_EX_CLIENTEDGE | WS_EX_WINDOWEDGE,
WS_EX_CLIENTEDGE | WS_EX_WINDOWEDGE,
WS_EX_CLIENTEDGE | WS_EX_WINDOWEDGE,
WS_EX_WINDOWEDGE,
} ;
でした
Re:ウィンドウの枠の太さ
あ、最新のバージョンにしたらSetWindowStyleMode(9)でできました。
こんな質問につき合わせてしまってみなさんすみませんでした。
こんな質問につき合わせてしまってみなさんすみませんでした。