ウィンドウの枠の太さ

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
yamataka

ウィンドウの枠の太さ

#1

投稿記事 by yamataka » 15年前

タイトルの通りで、DXライブラリとC言語を使ってウィンドウの枠の太さを変えることは出来ないでしょうか?
もし出来たら、やり方を教えていただけると有り難いです。

Dixq (管理人)

Re:ウィンドウの枠の太さ

#2

投稿記事 by Dixq (管理人) » 15年前

DXライブラリで作ったウィンドウの枠のサイズを変更するのではなく、
DXライブラリとC言語で他のアプリのウィンドウのサイズを変更したいと言う事でしょうか?

前者であればこちら参考にして下さい。
http://www.play21.jp/board/formz.cgi?ac ... &lognum=54

yamataka

Re:ウィンドウの枠の太さ

#3

投稿記事 by yamataka » 15年前

> DXライブラリで作ったウィンドウの枠のサイズを変更するのではなく、
> DXライブラリとC言語で他のアプリのウィンドウのサイズを変更したいと言う事でしょうか?

いえ、DXライブラリで作ったウィンドウの枠の太さを変更したいのです。

DXライブラリで作ったウィンドウの枠は、なぜか他のソフトより少し枠が太いと思ったので。


yamataka

Re:ウィンドウの枠の太さ

#5

投稿記事 by yamataka » 15年前

画像を張れれば質問の意味が伝えやすいのですが…
すみません、画像の張り方がわかりません。

あと、SetWindowStyleMode()は違う気がするので、CreateWindow()?

シエル

Re:ウィンドウの枠の太さ

#6

投稿記事 by シエル » 15年前

ファイルを選択から、該当の画像を選択するだけで貼れますよ

yamataka

Re:ウィンドウの枠の太さ

#7

投稿記事 by yamataka » 15年前

おお、気付かなかった!
シエルさんありがとうございます。

上の画像のように、DXライブラリを使用して作ったソフトの枠が他のソフトより太いのです。
DXライブラリを使用したソフトの枠の太さを、他のソフトの枠の太さに変更することはできますか?

(まあ、そんな気になる程の違いではないのですが…) 画像

ISLe

Re:ウィンドウの枠の太さ

#8

投稿記事 by ISLe » 15年前

> 上の画像のように、DXライブラリを使用して作ったソフトの枠が他のソフトより太いのです。
> DXライブラリを使用したソフトの枠の太さを、他のソフトの枠の太さに変更することはできますか?

ウインドウスタイルを調べてみたところ、枠付きのウインドウ(WS_BORDERあり)でもWS_POPUPスタイルが設定されているのが原因のような気がします。

シエル

Re:ウィンドウの枠の太さ

#9

投稿記事 by シエル » 15年前

DXライブラリは使わないのでできるか分かりませんが、
APIでSetWindowLongあたりを使えば、好きなスタイルに変更できるのでは?

yamataka

Re:ウィンドウの枠の太さ

#10

投稿記事 by yamataka » 15年前

SetWindowLong(GetMainWindowHandle,GWL_STYLE,WS_VISIBLE | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX);

と、上記のようにだけ付け加えて実行してみましたが、変化はありませんでした。
(もしかしたら WS_~ の選択を間違っている?) 画像

Mist

Re:ウィンドウの枠の太さ

#11

投稿記事 by Mist » 15年前

GetMainWindowHandleの後ろに()が抜けてると思いますけど。
あと、SetWindowLongで変更しても、SetWindowPosを実行しないと反映されない場合があります。

http://msdn.microsoft.com/ja-jp/library/cc411203.aspx
の解説のところ。 画像

Mist

Re:ウィンドウの枠の太さ

#12

投稿記事 by Mist » 15年前

DXライブラリならSetWindowStyleModeを使うべきかと思いますが。

yamataka

Re:ウィンドウの枠の太さ

#13

投稿記事 by yamataka » 15年前

お久しぶりに失礼します。

色々と試してみて、
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を指定した後では出来ないのです。

誰か理由がわかる方すみませんが教えて下さい。

一応本題は解決したので解決にしておきます 画像

nayo

Re:ウィンドウの枠の太さ

#14

投稿記事 by nayo » 15年前

DXライブラリなら

SetWindowStyleMode(9);

でたぶんお望みのウィンドウになると思いますが…
違ってたらすみません

シエル

Re:ウィンドウの枠の太さ

#15

投稿記事 by シエル » 15年前

SetWindowStyleModeを0や1にした場合のどういうスタイルになるのか、
DXライブラリはさっぱりわからないので、分かりませんが、
そのスタイルに対応するsetwindowlogとsetwindowposの引数を指定する必要があると思います。

toyo

Re:ウィンドウの枠の太さ

#16

投稿記事 by toyo » 15年前

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の違いは拡張スタイルの有無のようです

toyo

Re:ウィンドウの枠の太さ

#17

投稿記事 by toyo » 15年前

ソースのバージョンが古かったので当たらし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,
} ;
でした

yamataka

Re:ウィンドウの枠の太さ

#18

投稿記事 by yamataka » 15年前

あ、最新のバージョンにしたらSetWindowStyleMode(9)でできました。

こんな質問につき合わせてしまってみなさんすみませんでした。

閉鎖

“C言語何でも質問掲示板” へ戻る