2008年06月29日

GDIとGUI その4 文字幅の取得と調節

前回は描き始めの位置を決めてクリッピング矩形を含めてExtTextOutで文字を描画したが
フォント切り替えをした後の座標とか目測で制御されれていない。
今回は文字の表示位置の取得やアプリ側でのキャレット管理について考えてみた。
それでどうした!......
posted by Xo_ox at 21:10| Comment(0) | Win出直し | このブログの読者になる | 更新情報をチェックする

2008年06月28日

GDIとGUI その3 フォントを選択する。

日本語を表示しようという場合、あるいは日本語でメニューにする場合
デフォルトフォントが日本語なのは日本の環境だけであり
大抵の場合別にそのままでもいいのだが、日本語はろくに表示できないのが現状であり
工夫が必要になってくる。
根本的な問題は後日ちゃんとやるとして今回はフォントの選択とメニューの適応を行った。
それでどうした!......
ラベル:JISX 0213 フォント
posted by Xo_ox at 17:06| Comment(0) | Win出直し | このブログの読者になる | 更新情報をチェックする

2008年06月26日

GDIとGUI その2 ExtTextOutWでラベルと塗りつぶし

メニューにBitmapを割り振る場合、何も直接描画する必要性も無いので
bitbltとGDI描画命令で済ませればよいかなと思い。
作業用はCreateDibsectionで作るとしてCreateCompatibleBitmapにしてみた。
ここで文字を描く場合の背景処理について見直すと
どうもExtTectOutWだけで全部済ませるのが良かろうという結論に至った。
それでどうした!......
ラベル:ExtTextOut
posted by Xo_ox at 20:33| Comment(0) | Win出直し | このブログの読者になる | 更新情報をチェックする

2008年06月22日

GDIとGUI その1

Direct3D9の調査と実験ではGUIとしてテクスチャーの読込みとテキスト表示を行った。
メッセージボックスとタイトルバーのテキストは別として
IDirect3DSurface9がGDI互換の機能を持っているからだった。
ファイルサイズが許すならば描画・文字描画はAPIに依存したくないが
必要最低限のところは抑えておこうと思う。
とりあえずはメニューにBITMAPを適用するところまで行った。
Windows98環境の実行環境でdelphi6でユニコードの日本語のメニューを出すという
それなりの存在意義のある内容にはなった。

メニューに必要なのは「HBITMAP」でその生成にはいくつかな道があるが
今回というかいろいろみてまわって得た結論は
「メモリーアクセスするならばCreateDibsection以外は無いと思え」
だ。
それでどうした!......
ラベル:GDI
posted by Xo_ox at 21:00| Comment(0) | Win出直し | このブログの読者になる | 更新情報をチェックする

2008年06月18日

終了と休止コマンドをまとめてみた。

GDI関係のエントリーを書きかけでついついこの実験をしてしまい、
エディタを終了させてしまったのでアップしなくてもいいかとも思っていたけれど
癪なので単独記事としてアップすることにした。

内容的には前回と大差ないがWin98と無難に両方で動きそうなものにした。
要するにGetProcAddressでWin98にエクスポートされていない特権命令を呼んでいる。
Exit_Win関数という形にまとめたので結構デスクトップユーティリティとか作った場合
そのまま使えそうだ。
それでどうした!......
ラベル:終了と休止
posted by Xo_ox at 21:00| Comment(0) | Win出直し | このブログの読者になる | 更新情報をチェックする

2008年06月15日

終了と休止コマンドを発行してみる。

結局公開しなかったシャットダウンユーティリィティを作ったのは2000年くらいだが
以前作ったソースが何気に紛失していたので組んでみた。
exportできないとエラーになるため
Windowsのバージョンチェックとか面倒だがSetSuspendStateがないのだからそれを利用した。
このやり方の場合無難にWindows98とWindows2000以降で動くがきめ細かさにはかける。
Win98についてはテストしていない。後日やる予定。
それでどうした!......
ラベル:終了と休止
posted by Xo_ox at 19:55| Comment(0) | Win出直し | このブログの読者になる | 更新情報をチェックする

2008年06月14日

終了と休止に対応する。

アプリケーションがステータスマシンの場合終了と休止に対応する必要性はないかもしれないが
ファイルの保存、通信の終了処理など必要なことも多く
3Dソフトの場合はリセット処理の緩やかなタイミング取りもしたいから
現時点で再確認することにした。
それでどうした!......
ラベル:終了と休止
posted by Xo_ox at 23:21| Comment(0) | Win出直し | このブログの読者になる | 更新情報をチェックする

2008年06月13日

解像度変更、おさらい。

以前のエントリーででDirect3D9のフルスクリーンモードが
話にならないということでWin32APIでのフルスクリーンモードをやったのだが
現在のテンプレは実質画像管理とメニューコマンドに集約されているので解像度変更のおさらいしたいと思う。

Direct3Dならばバックバッファのサイズを小さくすればパフォーマンスは上がるから
基本的によほど現時点の解像度が高くてリソース喰うとかどうしても16bitカラーにしたいという理由以外では
解像度の変更はいらず、一般アプリとしてVGAにするとかの予備知識という程度だろう。

「上品なフルスクリーン」はShowWindowで「最大表示」=3(SW_MAXIMIZE)を指定してやればいい。

それでどうした!......
posted by Xo_ox at 16:29| Comment(0) | Win出直し | このブログの読者になる | 更新情報をチェックする

2008年06月10日

ポップアップメニューでYES NO ダイアログっぽくしてみた。

ポップアップが「トップマスト」でもフォーカスを失わせずに開くというメリットを生かして
メッセージボックスをこれに置き換えてみようと思った。
結果論からいくとリソース処理を無難にするためにWindowに関連付けて使っているので
Windowのない可能性のところでは使えないしみためも微妙だが
キーにも対応するし悪くは無いと思った。
それでどうした!......
ラベル:メニュー
posted by Xo_ox at 17:00| Comment(0) | Win出直し | このブログの読者になる | 更新情報をチェックする

2008年06月09日

効率の良いメニュー処理を考える。

現段階でのメニュー処理はポップアップ(サブメニュー)ごとのインデクスを持った連番のIDを与え
それに対応した配列を持つことでメインメニューの数だけの分岐で済ましているが
ラジオボタンの処理などを加える場合サブニューの取得などが必要になる。
凝るべきところではないがこの程度はやってもよかろうということで
もう少しメニュー処理を掘り下げ効率的にしてみた。
それでどうした!......
ラベル:メニュー
posted by Xo_ox at 20:38| Comment(1) | Win出直し | このブログの読者になる | 更新情報をチェックする

2008年06月08日

Windowスタイルの動的変更 その4 メニューの表示非表示とポップアップ

このエントリーの肝はリソースの管理の手法だと思う。
WindowスタイルをsetWindowLongでいじろうとすると
ほとんど使い物にならないことがわかったわけだが
メニューに至っては表示・非表示という概念が全く無いことがわかった。
又一般的なメニュー実装を見るとリソースの破棄などめんどうな要素が多いことも気になった。
結論から先に言うとポップアップもメインメニューに関連付けておき
WM_CLOSE時にメインメニューをWindowに関連付ける形にしてリソース処理はしないことにした。
今回はメニュー非表示から復帰のため右クリックでポップアップも出せるようにした。
それでどうした!......
posted by Xo_ox at 15:27| Comment(0) | Win出直し | このブログの読者になる | 更新情報をチェックする

2008年06月07日

Windowスタイルの動的変更 その3 トップレベル表示

トップレベル表示というのは他のウィンドウをアクティブにしても隠されないWindowのこと
生成時にはGWL_EXSTYLEに8(WS_EX_TOPMOST)を加えてやれば良いのだが
一旦生成したWindowに対してsetwindowlongで変更を加えても反映されない。
setwindowposで-1(HWND_TOPMOST)と-2(HWND_NOTOPMOSTを指定してやる必要があるという結論に至った。
それでどうした!......
posted by Xo_ox at 22:00| Comment(0) | Win出直し | このブログの読者になる | 更新情報をチェックする

2008年06月06日

Windowスタイルの動的変更 その2、Window styleを6パターンに絞る。

Windowスタイルの動的変更をいろいろと試した。その2
Windowスタイルも組み合わせはいろいろあるわけだが
子ウィンドウの無いSDIの場合何を使うべきかという視点で考えると意外と選択肢は少ない。
ポイントはダイアログボックスのように「閉じるボタン」の代替が明示的なものではないかと思う。
それでどうした!......
posted by Xo_ox at 22:00| Comment(0) | Win出直し | このブログの読者になる | 更新情報をチェックする

2008年06月05日

Windowスタイルの動的変更 その1、タスクバー表示・非表示

Windowスタイルの動的変更をいろいろと試した。雑多な内容なので項目ごとに別記事にしてみた。
このスタイルに相反するものはWS_EX_WINDOWEDGEなわけだが
単に見た目が違うということではなくWindow生成時はタスクバーに出るか出ないかの差がある。
しかし動的に生成した場合タスクバーに変化は無い。
いろいろ調べた結果反映するには一旦Windowを非表示にする必要があるということが分かった。
それでどうした!......
posted by Xo_ox at 22:00| Comment(0) | Win出直し | このブログの読者になる | 更新情報をチェックする

2008年06月04日

懲りずにFree Pascalで汎用リソースダイアログやってみる。

あいかわらずHello World以前なのだが再びFree Pascalをいじってみた。
Windowをだすものだけだがひとひねりはしてみた。
それでも結局Windowだしてテキスト描く程度。
それでどうした!......
ラベル:Free Pascal
posted by Xo_ox at 23:04| Comment(0) | Win出直し | このブログの読者になる | 更新情報をチェックする

2008年06月03日

MakeIntResourceを理解してみた。

Win32APIで何か作ろうというとき
リソースを使う場合時折出てくるのが「MakeIntResource」
釈然としないMakeIntResourceを消化しようとしてみた。
全然内容は無いです。
それでどうした!......
posted by Xo_ox at 23:26| Comment(0) | Win出直し | このブログの読者になる | 更新情報をチェックする

2008年06月02日

Window位置をもう少しきっちりする。

Windowsプログラミングでは窓をだすとき外形で指定するのだが
3Dアクセラレータを使う場合はクライアント領域で指定したい。
今までのテストプログラムではwindowサイズはAdjustWindowRectを使って位置あわせをしてきたのだが
メニューを使う前提の場合不正確になる。
そこで今まで漠然とやっていた画面の位置制御をもう少しきっちり管理してみることにした。
それでどうした!......
ラベル:Win32API Delphi
posted by Xo_ox at 21:00| Comment(0) | Win出直し | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。