パネルにボタン配置のデザインがなーんか気に入らなくなってきたので全部ねじ込んでみた。
昔は扱い方がよくわからなくて避けていたが、マウスカーソルが乗ったらフォーカスさせれば反応の悪さは何とかなった・・・と思う。
ツールストリップボタンがマウスホイールのイベント持ってたら、グリグリしてペンサイズ変えたかったけども、
どうせドット打つのに太いペン使わんだろうと思って1pxだけのまま放置。
NumericUpDown追加するの可能らしいが手間がかかるしなぁ。
フォームだらけだと邪魔なのでレイヤーアニメーションは左上に表示させたが、
よくよく考えると連結して見たい場合もあるので(海とか水辺のアニメーションとか)
直さなきゃ(´・ω・`)
タイルモードでもツールボタンは同じものを使うからついでに図形を配列に書きこんで描けるようにしてみた。
図形描くアルゴリズムに詳しくないから思いっきり仮想画像から転写というせこいやり方w(ちゃんと描画予測も出るよ!)
色々ツールストリップボタンにねじ込める
Re: 色々ツールストリップボタンにねじ込める
> ツールストリップボタン
Winformsでこいつら使ってみたとき…
・ボタンをドラッグで位置移動できる ← 好きな順序に並べ替えできるのね.
・他のツールストリップにも移動できる ← いや,そこまでは…
・他のフォーム上にあるツールストリップにも移動できる ← 何なんだよマジで
という感じだった記憶.
最初のが欲しいんだけど,それを許すと(? 設定だったような?) 後ろ2つのやめてほしい挙動がもれなく付いてくる,みたいな.
Winformsでこいつら使ってみたとき…
・ボタンをドラッグで位置移動できる ← 好きな順序に並べ替えできるのね.
・他のツールストリップにも移動できる ← いや,そこまでは…
・他のフォーム上にあるツールストリップにも移動できる ← 何なんだよマジで
という感じだった記憶.
最初のが欲しいんだけど,それを許すと(? 設定だったような?) 後ろ2つのやめてほしい挙動がもれなく付いてくる,みたいな.
Re: 色々ツールストリップボタンにねじ込める
DOSプログラマーの私にはWindowsプログラムのツールボタンとかメニューとかの
GUI部分のコードを書くのがしんどくてw。作りたい本質的な部分とは関係ないから
どうしてもおざなりになってしまします。
以前はコンソール画面に直接グラフィックを描画するプログラム作ってたんですが、
Windows10になってから画面の表示スケール変更に追随できないという問題が発生
したため今はウィンドウ版に移植する作業を頑張っています(;^_^A
GUI部分のコードを書くのがしんどくてw。作りたい本質的な部分とは関係ないから
どうしてもおざなりになってしまします。
以前はコンソール画面に直接グラフィックを描画するプログラム作ってたんですが、
Windows10になってから画面の表示スケール変更に追随できないという問題が発生
したため今はウィンドウ版に移植する作業を頑張っています(;^_^A
Re: 色々ツールストリップボタンにねじ込める
>>usaoさん
自由度が高すぎるwツールコントロールは挙動を把握するまで扱いに戸惑いますよねぇ(;^ω^)
>>いわんさん
コンソール画面は文字だけだと思っていましたΣ(・ω・ノ)ノ!わお
自由度が高すぎるwツールコントロールは挙動を把握するまで扱いに戸惑いますよねぇ(;^ω^)
>>いわんさん
コンソール画面は文字だけだと思っていましたΣ(・ω・ノ)ノ!わお
Re: 色々ツールストリップボタンにねじ込める
WinFormsだと(? 他でも同じだろうか?),こいつら(ツールストリップボタン)とかメニュー項目は
フォーム上のコントロールとは違って「フォーカス」の概念が無いので,場合によっては面倒.
例えば,TextBoxとかグリッドのセルとかに入力している最中にこいつらを押すことができる
(:TextBoxはフォーカスを奪われないからまだ入力作業中の状態で,その状態下でイベントハンドラが走ることになる)
ので,そのイベントで行う処理がフォーム上のTextBoxとかで入力する情報に関係している場合,挙動がイミフになる.
ユーザから見れば,このような操作は【TextBoxに「入力してから」ボタンを押したつもり】なんだけど,TextBoxへ入力した内容は実は動作に反映されてない,みたいな.
フォーム上のコントロールとは違って「フォーカス」の概念が無いので,場合によっては面倒.
例えば,TextBoxとかグリッドのセルとかに入力している最中にこいつらを押すことができる
(:TextBoxはフォーカスを奪われないからまだ入力作業中の状態で,その状態下でイベントハンドラが走ることになる)
ので,そのイベントで行う処理がフォーム上のTextBoxとかで入力する情報に関係している場合,挙動がイミフになる.
ユーザから見れば,このような操作は【TextBoxに「入力してから」ボタンを押したつもり】なんだけど,TextBoxへ入力した内容は実は動作に反映されてない,みたいな.
Re: 色々ツールストリップボタンにねじ込める
> コンソール画面に直接グラフィック
ウィンドウを探してきて DC に強引に描くやつかな?
まぁメニューとかちまちま作るのが面倒な場合は,あれですよ,全部キーボード操作ですよ.
メニューに関しては一項目:【キー操作の説明が長々と書かれたメッセージボックスを出す機能】さえ追加すれば「最低限のことはやった感」が出せます.
ウィンドウを探してきて DC に強引に描くやつかな?
まぁメニューとかちまちま作るのが面倒な場合は,あれですよ,全部キーボード操作ですよ.
メニューに関しては一項目:【キー操作の説明が長々と書かれたメッセージボックスを出す機能】さえ追加すれば「最低限のことはやった感」が出せます.
Re: 色々ツールストリップボタンにねじ込める
概ねそんな感じだったかな?usao さんが書きました:2年前ウィンドウを探してきて DC に強引に描くやつかな?
なんかいろいろやっていた気がするので、昔のソースから初期設定部分だけ抜粋してきました。
HANDLE m_hStdIn;
HANDLE m_hScrBuf;
HWND m_hWnd;
CONSOLE_SCREEN_BUFFER_INFO m_csbi;
CONSOLE_CURSOR_INFO m_cci;
// 標準出力ハンドル取得
m_hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
if (m_hStdOut == INVALID_HANDLE_VALUE)
{
return false;
}
// コンソールスクリーンバッファの情報を取得
if (GetConsoleScreenBufferInfo(m_hStdOut, &m_csbi) == 0)
{
return false;
}
// ウィンドウの最大サイズを表示のサイズに合わせる(スクロールバーが消える)
m_csbi.dwMaximumWindowSize = m_csbi.dwSize;
if (SetConsoleScreenBufferSize(m_hStdOut, m_csbi.dwMaximumWindowSize) == 0)
{
return false;
}
// コンソールスクリーンバッファを作成(表示用)
m_hScrBuf = CreateConsoleScreenBuffer(GENERIC_READ|GENERIC_WRITE, 0, NULL, CONSOLE_TEXTMODE_BUFFER, NULL);
if (m_hScrBuf == INVALID_HANDLE_VALUE)
{
return false;
}
// アクティブなスクリーンバッファに設定
if (SetConsoleActiveScreenBuffer(m_hScrBuf) == 0)
{
return false;
}
// カーソルを消す
if (::GetConsoleCursorInfo(m_hStdOut, &m_cci))
{
m_cci.bVisible = false;
::SetConsoleCursorInfo(m_hScrBuf, &m_cci);
}
// 入力モードを設定する
DWORD dwMode;
m_hStdIn = ::GetStdHandle(STD_INPUT_HANDLE);
if (m_hStdIn == INVALID_HANDLE_VALUE)
{
return false;
}
else
{
if (::GetConsoleMode(m_hStdIn, &dwMode) != 0)
{
dwMode |= ENABLE_MOUSE_INPUT;
if (::SetConsoleMode(m_hStdIn, dwMode) != 0)
{
}
else
{
// error
}
}
else
{
// error
}
}
// コンソールウィンドウを取得
m_hWnd = ::GetConsoleWindow();
if (m_hWnd == NULL)
{
return false;
}
一番最後がコンソール画面のハンドルを取得する処理ですね。
Re: 色々ツールストリップボタンにねじ込める
文字変換中でも押せちゃうみたいな感じですかね。となると変更前のテキスト情報で処理されたり?
コンソールウィンドウのゲームは本のサンプルで文字列をどんどん表示して画面更新していくものしか見たことが無かったので、
ひたすら驚き(@_@)
コンソールウィンドウのゲームは本のサンプルで文字列をどんどん表示して画面更新していくものしか見たことが無かったので、
ひたすら驚き(@_@)
Re: 色々ツールストリップボタンにねじ込める
> となると変更前のテキスト情報で処理されたり?
そういうことになりますね.
「だったら俺はツールストリップボタンのイベントの先頭でどこかてきとーな奴にフォーカス移す処理でも書いてやんよ」
とかいう小手先の対応策を考えたりすると,
それをいちいち書くのが面倒なだけでなく,validating 関係の処理と絡み合って面倒な事態が発生したような記憶.
そういうことになりますね.
「だったら俺はツールストリップボタンのイベントの先頭でどこかてきとーな奴にフォーカス移す処理でも書いてやんよ」
とかいう小手先の対応策を考えたりすると,
それをいちいち書くのが面倒なだけでなく,validating 関係の処理と絡み合って面倒な事態が発生したような記憶.