What's New » この記事

WindowsSDK 備忘録 その六

前回はオブジェクトの生成はしなかったので、今回は、 mascot.cpp に動的にオブジェクトを生成します。またレム文の形で、静的にオブジェクトを配置してみました。

プログラムを実行すると、小窓がでるようになりました。また、ログに通過点の情報を書きだしました。カーソル等のレム文は削除してすっきりさせました。

ソースコード[v05b.lzh]

WindowsSDK 備忘録 その五

その五では、CImageWindowクラスを最小限の構成で定義してみました。教本では、もう最初からフル装備になってるのですが、プロトタイプはコンストラクタ・デストラクタ・コールバック関数の三つの関数があればいいと思います。

細かいところに目を配ると、インスタンスやメインのウィンドウハンドルをCMascot.cpp 中のCImageWindow();のコンストラクタで利用するので、mascot.cpp の本文中で宣言されている HINSTANCE Instance; HWND MainWindow; の二つを取り込みたいので、mascot.h 中に extern 宣言をしてこれを使って経由して間接取り込みをしているところでしょうか。

その五での大きな注意箇所は、コールバック関数をstaticで宣言しているところでしょうか。この何故staticなのかに関しては、「なぜstaticをつけるのかという質問に対しての答え」(引用)http://d.hatena.ne.jp/bnkyshr/20110107/1294391512
に詳しく説明がされています。また教本の原文では、静的に定義されたコールバック関数内で使うカーソルに、静的メンバを割り当ててますが、これをコピー&ペーストするとややこしくなるので、レムにして標準カーソルを割り付けました。静的メンバ変数の関数外での実装に関しては、CMascotクラスの定義まで踏み込んだ時、Mapコンテナを配置することになるのでその時、触れてみようかと思います。取りあえず今は無視(・3・)

注目行は、この二か所かな..

[CMascot.h]

static LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam);

[CMascot.cpp]

wcex.lpfnWndProc=(WNDPROC)&CImageWindow::WndProc;

クラスのメンバ関数をキャストしてコールバック関数として登録してるとこ。

最低限の定義と実装はしましたが、オブジェクトを生成していないので見かけ上は、プログラムを実行しても何の変化もありませんね。

ソースコード[v04b.lzh]

WindowsSDK 備忘録 その四

備忘録の四回目はメモ書きです。

参考にしている教本のPart3(P.163~)からマスコットシステムの設計に入ってますが、教本では、表示機能→スクリプトエンジンという順番で、マスコットシステムに実装してる機能をひとつひとつ解説していってます。しかし、自分のように大掴みでいいから全体の流れを俯瞰して把握したいと考えている者にとっては、焦点がぼやけて全体像が見えにくく感じられます。単純にクラスを使って画面に何かを表示するということだけに焦点を絞って考えるならば、表示機能の仕組みを理解できてればいいので、スクリプトエンジンのことはこの時点では無視して、仕掛けに関して整理してみました。

以下メモ書きより

(さらに…)

WindowsSDK 備忘録 その三

備忘録三回目は、下準備としてログを出力できるようにしておきます。ある時点での変数の中身や指定行をどう通過したかをログに出力できれば、気持ち的にもだいぶ楽になるのでmascot.cppにLog.hをインクルードします。(5行目)


// [チェック用] ログ出力用関数の宣言
#include "log.h"

とします。ログを書き出す関数に関しては、今は閉鎖されてしまっているみたいですが、電子通さんというサイトさんで公開されていたログを書き出すための関数が使いやすかったのでそちらを使わせてもらいました。ログの初期化をかけたら、あとはコードに埋め込んであるように文字列を出力するように指定します。尚、可変引数をとることができるので、Log(“Aの中身は %s です\n”, str); の様な書き方もできます(重宝してます)。書き出したログは、初期化時に与えた名前でプロジェクトフォルダ内に出力されます。今回の場合は、check.log になります。

ソースコード[v03.lzh]

WindowsSDK 備忘録 その二

VSE2012がどんな感じかは前回ので分かったので、二回目以降は「空のプロジェクト」でプロジェクトを作り、一回目で自動的に作られた基本コードと以下の教本から必要なコードをコピー&ペーストしながらクラスを中心にしたWindowsプログラムの流れを備忘録では追ってみようかと思います。

教本としては、「デスクトップマスコットを作ろう!!」という本が自分が読んだ本の中では、比較的シンプルにC++とWindowsSDKを使ってアドベンチャー系ゲームの雛形を解説しているので、これを利用することにしました。

Amazon でのレビュー記事で述べられているように入門書としていい本かといわれると「?」な感じの本ですが、それでも一通りの流れは一冊の本の中で説明されているのと、directxやMFCを使ってないところやプロジェクトを構成するファイル数もなんとかなりそうな数で済んでいるので、とっつきやすい方の本ではないかと思います。

今回のコードですが、教本の方でメインとなるファイルの mascot.cpp を最低限の構成に組み替えてみました。
内容的には前回の内容「Hello World!!」をmascot.cpp に適用してみただけのものです。

注釈としては、40行目からのところで、教本では領域外に出して非表示状態にしてある親窓を見える位置に置きなおしたのと、初期設定データの取り込みに始まる準備処理をごっそり削り落としました。

MainWindow=CreateWindowEx(0, MainWndClassName, MainWndClassName, WS_OVERLAPPEDWINDOW, 0, 0, 800, 600, NULL, NULL, Instance, NULL);
ShowWindow(MainWindow, SW_SHOW);

「猫でもわかるプログラミング」の 「イントロダクション」のコードの形に近くなりました。

あと引っ掛かった点は、制作メモ.txtにも書いてますが、

[引っ掛かったところ]
WNDCLASS の登録のところで、構造体のメンバlpszClassNameがデフォルトだと
(LPCWSTR)型を求めてくるのだが、キャストで対処するとタイトルバーの文字が化ける。

(引用)
プロジェクトのプロパティで「構成」が「Unicode文字セットを使用する」とか書いてあると思うんだけど
「マルチバイト文字セットを使用する」とする。
http://yuxx.net/1081/computer/programming/win32-sdk

にあるように、コード系を変えてあげると文字化けは回避できる

ソースコード[v02.lzh]

WindowsSDK 備忘録 その一

まんがタイムきららMAXで連載中の「ステラのまほう」を読んでて、そういえば最近趣味で書いたりするWindowsSDKのスクリプトも全然作っていないなーと思ったので備忘録をつけてみることにしました。

最初は”Hello World!!”を画面に出すいつものあれが、VisualStudioExpress2012 (マイクロソフトのサイトで無料で配ってる)で出来るかの確認をします。Windows7のマシンにインストールして起動し、Win32プロジェクトを新規作成、そのまま完了。すでにコードが準備されているのでちょっと追加と書き換えをして期待通りに動くか確認してみました。

Win32Project1.cppのコールバック関数に、

	PAINTSTRUCT ps;
	HDC hdc;
	char *szStr = "最初の一歩";

あと、


	case WM_PAINT:
		hdc = BeginPaint(hWnd, &ps);
		// TODO: 描画コードをここに追加してください...
		TextOutA(hdc, 10, 10, (LPCSTR)szStr, strlen(szStr));
		EndPaint(hWnd, &ps);
		break;

それと、少し戻って


hWnd = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, szWindowClass, szWindowClass, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 800, 600, NULL, NULL, hInstance, NULL);

拡張型で窓を作るようにしてみました。で、出来たらビルド。動きましたね。

ソースコード[v01.lzh]

備忘録(DTP)

最近チェックした文書。

雑誌広告デジタル送稿推進協議会
http://www.3djma.jp/doc/20121001_MPDF_Guide.pdf

検索して引っ掛かったモノクロPDFの入稿手順書に目を通しただけですが、サイトのトップページからたどれば、カラーデータの入稿手順書なんかも閲覧できたりするようですね。

トレンドを決定する力のある新聞社や雑誌社のルールを知っておくのは悪いことでは無いような気がしたので書類に目を通してみました。

モノクロ入稿ルールを読んだ限りでは、やっぱり「とにかくデータがこけそうな設定は全部はずしておくように」と書いてあるように読みとれました。

自分で作ったデータをチェックする時に、ここの手順書に書いてあることで適用できるものに関しては、突き合わせてみてみるのもいいかと思いました。

P.S
Illstrator に配置するPhotoshopの画像は、今じゃ、PSDを推奨してるんですね。
EPSじゃないんだ(´・ω・`)

P.S 2
全部アウトライン化してPDFにしちゃうからデータセンター側にとっては都合がいいものだけど…入稿後に修正事項が見つかった場合の事考えると、通信線での入稿手段があることが前提でないと納品する側にとってはバイク便で再入稿するしか差し替えする手段がないからタイムスケジュールがきつい場合とってもシビアなルールのような気が…(;´Д`)

アルディーノ

Hellow World!!

とおんなじ感じのLED一個点滅させる最初の組み込みプログラムを実践してみました。独立した電源で動くのを見てるとなお楽しいです。(*´д`*)アハァ

リングマスターのサウンドさがし

今を去ること四半世紀前にホビージャパンがだしたPC98用の「リングマスター」(カバーが竜騎兵氏で中のイラストが弘司氏でかっこよかったよ)という硬派なRPGゲームがお気に入りで、今更ながらサウンドだけでも聞きたいなといろいろ探してエミュレータとか試したんですが、結局起動できずじまいで半ばあきらめかけてましたが、サウンドだけ抽出して再生するアプリなんてものが存在するんですねぇ。

hoot… – Sound Hardware Emulator
http://dmpsoft.s17.xrea.com/hoot/index.html#program

解説に書いてありますが、ダウンロードしたら適当なフォルダに圧縮を解きます。デスクトップとかでもいいです。できたらPC98とかの場合は、実行ファイル本体と同じ階層にPC98フォルダを新規作成して配置し、そこに下に紹介するサイトからサウンドデータだけ引っこ抜いた聴きたいゲームのzipファイルをダウンロードしてきます。で、PC98の場合は、PC98フォルダにそのまま放り込むだけであとは実行ファイルをクリックすれば再生準備OKになるという優れもの。気付いたこととして、再生リストに登録されないのがたまにあるけど、xmlのリストに登録されているzipファイル名と一致しないファイル名だと認識してくれないので、そうゆうのがあったらxmlの各メーカーの登録リストとzipファイル名とを比較して違っていたらリストの方の名前に打ちかえましょう。これで認識はしてくれるはず。それでも再生しないのがありますが、それは仕方ないでしょう。

データ公開してるとこ
http://snesmusic.org/hoot/v2/?system=PC-98&order=date&page=15

ゲームサウンドプレイヤーの紹介はそのぐらいにして、ゲーム自体の話にもどると、リングマスターのゲームシステムは(バグだらけだったとしても)、なかなか面白いシステムだと思います。ゲーム自体は3Dマッピングをしながらのオーソドックスなプレイスタイルでしたが、細かいところにこだわりがあって、しゃべる剣(アイスブランチをよく選んでた)や戦闘中にファンブル起こして武器が壊れるとか、疲労による戦闘能力低下とか懐かしい。リングを使っての攻撃はなんかほとんど成功しなかったとか(必殺武器なのに)、世界観をとっても大切にしていたところがお気に入りです。Ⅲは永遠にでないのでしょうねヽ(´ー`)ノ永遠の未完なところも好きですよ。

[FC2] WordPressドメイン移行したら

Yahooジオプラスからドメインを持ってくる手続きが分からな過ぎだった件で、契約解除後ドメインが解放されるのを待って、今回FC2から再取得しました。が、色々な問題が発生しました。ちょっと気楽に考えすぎていたようで(;´Д`)

解決に至るまで
1.FC2ドメインで独自ドメイン契約を結んでから、cocoaアカウントのブログにアクセスできなくなった。urlの変更が反映されるまで数日かかるからと思い、2,3日放置していたがcocoaアカウント、haganenomoriアカウントともにいっこうにつながらないので、初めてFC2の管理パネルのヘルプをみる。結果、FC2の管理パネルの方のドメイン設定の欄を独自ドメインにしてかつ有効にするのを忘れていたorz (自動設定じゃないんだね)

2.urlがhaganenomoriアカウントのみになったけど、まだWordPressのブログにアクセスできない。ここでまたWordPressのトップにindex.htmlからリダイレクトさせているのを思い出す。cocoaアカウントになってるのをhaganenomoriアカウントへのリダイレクトに修正。これでアクセスできるかなと思ってブラウザでみるけど、ieではまたもやはねられてFC2のトップへ飛ばされてしまう。FireFoxでも確認。きつねさんだと、スタイルシートが反映されていないけど、ここでやっとhaganenomriアカウントでのアクセスが確認できた。ieのはキャッシュかセッションのゴミによる不調だと思うのでとりあえず放置。きつねさんの方からブログのソースコードを開いてみる。cssの取り込み先が全部cocoaアカウントのままであることに気付く(そりゃスタイルシートが適用されないのも当然だよね)。

3.ここまで進んで、やっとWordPressが、自分のパスの管理をURLで管理してることによる影響を認識した。WordPressのconfigファイルにあたるものを探してみるが、cssの基点パスを設定してる変数$stylesheet の定義箇所が分からない(どこー?) と、色々困ってブログの管理画面に入ろうとするが入れない。(※ haganenomoriアカウントは有効になってるので、haganenomori.net/wordpress/log-in.php にはアクセスできるけど、ここから先がcocoaアカウントでアクセスする設定のままなので進めない) 色々あたふたして、カッコの様な状態になっていることが推測されたので、ここでやっとWordPressの基本設定を管理してるMySQLのDBいじりにいかないといけないことに気付く(´;ω;`)ブワッ

4.phpMyAdminから、以下のホームページで紹介されているように、cocoaアカウントで設定されているものを全て、haganenomoriアカウントに変更。参考[ http://picomint.net/2010/06/08/wp-2/ ] DBのバックアップも今更ながらとってみたけど、今更ですよね。

5.DBの再起動なんて、レンタルサーバーでは考えられないので、まんまブラウザ閉じて再アクセスで更新できるかなとすごく心配しながら再アクセスしました。ドキドキ(;><)結果はうまく更新してくれました。haganenomoriからブログ管理画面に入れました。しかし、WordPressのブログはかなりぼろぼろになってます。まず、ヘッダーのトップ画像が落ちてる。あと、投稿記事の画像がみんな落ちてる。最後にプラグインがいくつか切れてる。トップ画像は、管理画面から更新できましたが、残りは、全てcocoaアカのurlへのリンクをダイレクトに指定していたので、全て手修正しなければなりませんでした。これは仕方が無い。毎日の記事につける画像はurlで指定して拾う方がラクチンだったので、こうなりました。ちなみにこうなることを恐れて、ワンクッションつけてオブジェクトとして管理していたギャラリーの画像は全部無事でした。めんどくさがってワンクッションいれなかったものが全滅という(記事が少なくてよかった)。これらを全て修正してやっと回復しました。

今回の収穫

ドメイン変更は慎重にヾ(・д・` )

4 / 512345