「WindowsAPI」に関する日記

次>

浮き沈みランチャー2

Avalonia UIにはマウスポインタの位置を取得する都合のいい方法がなかった…。
ということで、Win32 APIのGetCursorPos使ってます。
フレームワーク新しくしたら先祖返りしちゃった!
ちなみに、作りかけと書いてある通り、まだ正常に動作しません。
なんかこう、正常に動作させるだけじゃなく、もっとすっきり書けると思うんですよね。

NeoMupl

Windowsをロックしたら自動で再生ストップする(離席するときにうっかり流しっぱなしにしない)機能に役立ちそうなの見つけてきました。

PCのロックを認識する方法

言語は違うけど、Win32APIのWTSRegisterSessionNotificationでWindowsのメッセージを受け取ればなんとかなりそう。
ロック解除で再生再開とかは…別に要らないかな?

ドット絵離れ…?

まずはC#とGDI+の組み合わせを試してみました。
それが今日の画像です。
この拡大方式、自然画や写真などには威力を発揮するのですが、ドット絵に使うにはちょっと絵の端っこが問題となりそうです。
これはこれで全体としてはある意味見栄えがするので工夫次第で何とかなりそうだし、もしかしたらオプションをつけてもっといい拡大方法が選べるのかもしれないので、もう少し調べてみてもよさそうです。
あとyaneSDK.NETも一応…。

1166798025.png

プロパティシート

昨日スマブラをやりすぎたせいか、が痛くなっちゃいましたよ。
一番疲れたのは鬼のようにZトリガーを連打しまくった右手人差し指だったはずなんですが…。

ファイルのプロパティにタブを追加する方法を探しています。
まあ、今の時点である程度調べはついているんですけどね。
IShellPropSheetExtというのがポイントみたいです。

爆ボンのバトルステージ2のページを書いてみました。
ちょっとまだはっきりしていない部分があるのでアップしていませんが、ステージ1ぐらいのボリュームで書いてますよ。

1164206888.png

MIDIチェック

ふにゃさん、ステージ内に埋め込まれた画像を読み込む処理の改良に成功しました。
やはりこの前考えたとおり、GlobalAllocで確保したメモリアドレスと違う位置を渡していたのが原因だったようです。
mapを使って識別子とデータを関連付け、データクリア時にはそれぞれを別々にメモリ解放します。
要するに今回はこの関連付けるデータを一つ一つGlobalAllocで確保したというわけです。
また、確認はしていませんしその必要もないと思うのですが、以前のものだとデータの長さ(というよりデータの要素数)にほぼ比例した検索時間が必要でしたが、新しいほうだとその対数オーダーでの増加になるので大きなステージでは読み込みが速くなるはずなのです。
もしかしたらメモリの解放忘れがあるかも。でも多分無いかと。うん。自分を信じよう。スペル間違い以外に不具合は無かったんだし。

ミディビのMIDI受信プログラムを少し改良しました。
データを簡単に検査することでMIDIかどうかを判別し、MIDIデータでなければ保存しないのです。
MIDIには必ず存在するデータというものがあるのです。
それが存在するかどうかさえ調べればおかしなデータが送られてきたときにエラーを出すことができるというものです。
ミディビは一応完成したら配布するつもりなので悪意のあるデータを排除するというのも必要になってくるわけです。
そういえばPerlの正規表現ってバイナリデータに対してはどう動くんだろう?
PHPについてはどうやら一行のデータを前提にしているらしいのですが。
ん?でも掲示板とかで複数行のデータを渡したときもちゃんと動いてる?どーなってんだろー。
しかしもしバイナリデータでも正規表現が使えるなら強いですよ。
なにせ正規表現だけで曲名も作者もコメントも抜き出せるのです。
JavaのおかげでMIDIのバイナリデータを直接扱うことはありませんでしたがやはりいずれにせよMIDIファイルの知識は必要だったようです。
それでも一応MIDIメッセージの段階まではMIDIに踏み込むことができたのでできる自信はあります。
正規表現の挙動しだいですが…。

ラッセルのパラドックス

http://www24.cds.ne.jp/~neg/pro/piyo1/osetc/ver.html
ここにバージョンリソースの取得について書いてありました。
トリッキーな!
しかし最初の文字列部分を長さ1の配列にして後をコメントアウトするというところは私の考え方を一致する部分があるようで。

例1.4 ラッセルのパラドックスと同じような例.
(a) 自分自身を掲載していない図書目録の目録を作った.この目録はどの目録に載っているか.
(b) 17文字以内で定義できない最小の数.
(c) 「クレタ人はいつもうそをつく」をクレタ人のエピメニデスが言った.
(d) この文章は誤りです.
(e) 私はうそつきです.
「情報の倫理数学入門」(近代科学社、小倉久和・高濱徹行共著)14ページからの引用です。
パラドックスがなさそうに見えるのは私だけ…?

爆心地の食事

広島に行ってきました。
・・・・やっぱ思い出話でもしなければいけませんかね。
私の家族は、祖父母の金婚式を口実に広島・宮島に観光に行きました(と言ったら家族に怒られますが)。
広島についてまず観光ガイドを買いました。父が。
そしてそこに紹介されていたお好み焼き屋に行くことになりました。
そこでメニューを見てみると、下のほうに、
「つけ麺は広島名物ではありません。」
・・・・ガーーーン! そうだったのか。
そしてふと窓の外に目をやると、目の前には大きな「広島名物つけ麺」の看板が。
どうやらあの店に対抗意識を燃やしてそんなことを書いていたようです。
明日はあの店に行ってつけ麺を食わねば・・・・
案外「お好み焼きは広島名物ではありません」って書いてあったりして。
その後広島平和記念資料館に直行。
そこで驚愕の事実が!!
なんと、ついさっきお好み焼きを食べたあの店は、リトルボーイ爆発の爆心地と同じ場所に位置していたのです!
で、資料館、行ってきました。
二度とあんなとこ行くもんか。
そんな感想を残しつつ、平和記念資料館を後にしました。
その後親のつまらない買い物に付き合ってから、宮島へ。
天気は生憎の雨、祖父母と親戚は遅くなると言っておきながら、とっくの昔に宮島に着いていました。
そして夕食・・・・
祖父母が金婚式の感謝の言葉を述べた後、乾杯。
私は酒は飲みませんよ、未成年ですから、というよりひねくれ者ですから。
と、それはいいんですが、少な目にと言ったはずの夕食、次から次へと来て、すぐに満腹に。
その場にいた半分以上が高級料理を食べきれず残すという悲劇を!
ま、私は何とか食べきりました。
その後、大欲情浴場に行ったのですが、ガラガラでだ~れもいない。
みんなが入り終わった頃を見計らって入ったので当たり前なんですけどね。
そして、就寝、起床。
朝食も、相変わらずの多さでしたが、ゆっくりと食べきりました。
外に出ると、鹿の糞の多さに気が付きました。
それ以前に、鹿が多いのです。
まあそれはいいとして、厳島神社にも行ってきました。
ところが、写真で見るほど綺麗じゃない。
雨上がりだったせいもあるのでしょうが。
しかも、意味ありげに馬の像が!
そういえば鹿もいました(生きてるやつね)。
馬・・・鹿・・・馬・・鹿・・馬・鹿・馬鹿・・・・
そして広島に戻りました。
今度は親戚の車に乗り、名も知らぬ城の前に行きました。
そしてその前にある橋を意味もなく往復し、入橋料220円だけを取られました。
そこで、例のつけ麺屋からあまりに離れたところに来てしまったことを知り、つけ麺を食べずに帰ったのでした。

そうそう、「WinHelp」もこ更新しましたから。
それと、掲示板の留意事項も更新しました。

そういえば今日昨日は妙に訪問者数が多い・・・・
ま、多いに越したことはないんですけど。

ヘルプミーイフユーキャン

「WinHelp」のサンプルができました。
何故かポップアップヘルプ系の機能がうまく動きませんが、ほったらかしにしてあります。
また、これまた何故かヘルプの使い方が変になっていますが、XPのせいだと思い込んでおきます。
やっぱこれからの時代はHTMLヘルプですね。

明日から一泊二日で広島に行きます。
明日は日記を書かないか、朝に書きます。
31日の更新は帰ってから行います。
既に準備はできています。

31日まで更新しません

「WinHelp」のサンプルのためのヘルプファイルを作っていました。
ページ一つ一つの区別は明確に、かつ限りなくシンプルで小さいヘルプを作っています。
実はこのAPI、私自身あんまり詳しいことは知らないので、このサンプルで実験しつつ解説していこうと思っているのです。

「Bomber丸World」制作の計画でもここで出しておきます。
タイトル

データ形式を決める(予定:識別番号、ステータス一人当たり100バイト、イベント変数100バイト?、イベントフラグ1000ビット)

簡易マップ表示(拡張性は高く、最終的にアニメーション可能を目指す)

イベント処理

バトル処理(これが一番の難関?)

セーブ機能

データ入力、エンディングまで可能に

エンディング

機能追加等

投稿掲示板も作ってるます

「ふにゃふにゃ」を公開した頃に、ステージエディタがわかりにくいとの指摘を受けて、ある程度わかりやすく改良はしたのですが、マニュアルがマニュアルなだけにステージの作り方なんて教えていないも同然でした。
今更ながら、このことを受けて、ある程度わかりやすいステージ制作講座を始めました。

プログラミングの「WinHelp」をもうちょっとわかりやすくしようと具体例を探しています。
実を言うと、今日の更新はこれをしようと思っていたんですが、その具体例の候補に挙がったのが「ふにゃふにゃ」のステージエディタで、このエディタのマニュアルはわかりにくかったということを思い出し、急遽更新内容を変更したのです。

掲示板のデザインを変更しました。
今日の、午前0時1分に完成しました。
ウィンドウズです。
アイコンとかボタンとか、著作権が微妙なところもありますが、まあマイクロソフトは気にしていないでしょう。

日記で、文章が中央揃えになるバグを修正しました。
…はずです。
左揃えになっているかどうか確認してください。

ちょっと手抜きですけど

「BitBlt(応用編)」の真面目なサンプルを作りました。
前のサンプルは、雰囲気や結果はわかってもらえても途中経過や動作に関しては闇の中でした(≒わかりにくい)。
というわけで、今回は雰囲気よりもわかりやすさ重視です。
コード量も半分以下ですし、内容も見た目どおりでわかりやすくなっています。

「CharaBox」で、データの読み込み・書き出しを作りました。
「NeoMupl」も。何か改良しました。

げっ、今日もやってない!!

「どみのベース」でmidiStreamのことが書かれていたので、検索でサンプルを探してきてダウンロードしてみました。
「NeoMupl」に使えれば、と思ったのです。
それはC++用のサンプルで、簡単なFormat0の再生だけをサポートしているものでした。
…ムリです。
「NeoMupl」で使うからには、Format1も、欲を言えばFormat2もサポートしたいのですが、Format0だけでも複雑すぎて私には解りません!
ましてやさらに複雑なFormat1やFormat2なんて…
いっそのこと先にDirectXを実装してみるか?

活用編ってなんやねん

最近ぎりぎりの更新ばっかりだったので今回は少し早めの更新にしました。
実質サンプルの6行のコードを解説しただけですが、理由なども含めて解説したので少々長くなっています。

「DataBox」を改良しました。
画像のあるデータと英語名のあるデータの割合を確かめられるようにしました。
画像:69%、英語名:60%でした。

あるゲームの公式画像をドット絵化しています。
縮小して輪郭をなぞって色を塗るのですが、その輪郭探しに一苦労です。

今日も短めに

「BitBlt(活用編)」の説明を作り始めました。
ほぼサンプルのソースの日本語訳になりそうですが。
それほどやっていることは簡単なのです。

「ゼルダの伝説-風のタクト」2周目をやっています。
フィギュアコンプリートとできるだけ喋らないプレイを目指しています。

今日は短めに

プログラミングの「BitBlt(活用編)」を更新しました。
詳しい内容は後で書きます。

傘が見つかりました。
なくしたところから少し離れた校舎にあったので、校舎から校舎へ移動する際にちょっと失敬した、ということだろうと思います。

融合服

そろそろ「プログラミング」のところも更新しないといけないかな~と思ってBitBltのサンプルを作り始めました。
前のはゲーム風味でしたが、今回はお絵かきツール風味になっています。

学校で傘がなくなりました。
誰かが間違えて持っていったか盗んだかのどちらかだと思うのですが、不可解なんですよね。
私の傘は曲がっていて差しにくいためあまり勘違いはしないと思いますし、盗んだにしても、何故安物のボロで差しにくい傘を、それもよりにもよって雨が上がってから持っていくのか…
まあ濡れなかったからよかったんですけどね。

ふぅ~っ、間に合いました!

プログラミングに「ShowCursor」を追加しました。
説明とサンプルコードを並べただけですが。

「スマブラDX」対戦回数1000回超えました!
「たべもの」のフィギュアを手に入れました(1000回とどんな関係がという突っ込みはしないように)。
レベル最高3人組に1人で勝ちました!
タイム制では数の多いほうが有利とは限らないのです。

今日の講義は昼からでした。
10時半ごろにのろのろと家を出て12時ごろに大学について飯食って教室へ。
高校時代に定義として覚えさせられた公式の証明がありました。
簡単な証明だったのですが、感動しました。
ほかにもいろいろと、「おおっ」と思うことがありました。

今日は1時限~♪

今日の講義は2時限ある予定だったのですが、残念ながら「スポーツ科学演習」が抽選で落ちて受けられなくなってしまったため、1時限だけになってしまいました。
講義が1回1時間半、通学が往復3時間強、もっと考えて時間割を作ってもらいたいものです。

「ShowCursor」のサンプルを作りました。
考えていた通りの動きをしてくれて少しほっとしています。
本文のほうは書いていません。

ちょっと更新しました。
ひとつは禁煙についてと、もうひとつは…
よほど探さないと見つかりません。
実はダウンロードできるファイルが増えているのです。
隠しリンクからダウンロードしにいける、というほど簡単なものではありませんよ。
ヒントは、「このサイトが有料サーバー上にある」ということです。

授業時間5割増し!

教科書を買いました。
これで教科書販売所で買える教科書はすべて買い揃えました(品切れ品除く)。

「ShowCursor」を書いています。
まだ詳しい使い方の説明に入っていません。

マウスカーソルが時々ワープします。
画面中央付近で作業をしていると突然カーソルが左上に移動するのです。
DirectInputでこの動きを検出するとさぞかし凄いことになるでしょうね。

今日の講義は1時限から5時限まですべてありました。
9:00~17:50まで授業です。
1時限90分なので合計7時間30分です。
高校までが合計5時間丁度なのでかなり増えています。

英語は予習が大変じゃあ

今日は明日の予習が忙しくてパソコンどころではありませんでした。

って書くつもりだったんですがねえ~~っ。

教科書を買いに行きました。
買う教科書を確認しました。
販売所に行きました。
5時丁度でした。
閉まってました。
「教科書販売は5:00を持って終了いたしました」
頼んで売ってもらおうとしました。
販売所のドアが閉まってました。
鍵も掛かっていました。
開けてくれませんでした。
泣く泣く帰りました。
予習できませんでした。

「ShowCursor」を書いています。
"Cursor"と"Course"をよく間違えます。

次>