GIFのまとめ

アニメGIFについての技術的なまとめです。 自前で表示するコードを色々書いたのですが、表示のタイミング(各コマの表示時間)が明らかに合わなかったり、そもそも未熟で上手く書けない、そしてなによりも同期オブジェクトやスレッドに嫌気が差しました。 GIF…

アニメGIFの各コマの待機時間を調べるコード

コードじゃなくてソフトがほしい方へ Giamというソフトがおすすめです。もちろん僕の作品じゃないですけど。Windows向けです。 http://homepage3.nifty.com/furumizo/giamd.htm 本題 GIFの細かい仕様は何となくわかったけど、それはまた今度。 フレーム,ディ…

gdiplus.hをインクルードするとコンパイルできないとき

結論→先に、#include IStreamが定義されていないとか、関数の戻り値の型が無いなどといわれます。 #include <windows.h> #include <gdiplus.h> INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, INT iCmdShow) { return 0; } 上記のようなコードではコンパイルが通ります</gdiplus.h></windows.h>…

GDI+の初期化と終了

使う前には初期化、使い終わったら最後に終了処理を行います。 行わなかった場合はどうなるのでしょうか・・・。きっとgdiplus.dllが困るのでしょう。 初期化と終了の関数のプロトタイプです。 Status GdiplusStartup( ULONG_PTR token *token, const GdiplusSt…

GDI+を使うための準備

まず必要なものと設定を書いておきます。 Windows SDK *1 http://www.microsoft.com/downloads/details.aspx?familyid=E6E1C3DF-A74F-4207-8586-711EBE331CDC&displaylang=en 設定 Windows SDKをインクルードしたらそれのInclude,Libディレクトリのパスを VC…

今日の成果

このような形で公開していかないとmemo.txtが肥大化してしまいます。 やる気をそぐページを発見した UsefullCodeさん。その節(*1)はお世話になりました。 http://www.usefullcode.net/imageviewer/ なんとまあ、WTL×GDI+で画像ビュアーを作ってるではあり…

GDI+での画像の読み込みと表示

画像(ラスタイメージ)を画面に表示するにはImage,Graphicsオブジェクトが必要です。 Imageクラスのコンストラクタに、画像ファイル名かストリームへのポインタを渡して オブジェクトを作成し、それのポインタを、GraphicsオブジェクトのDrawImageメソッドに…

GDI+を使う上でよく見かけそうな用語やクラス

ほとんどがSDKを訳したやつです。 クラス GdiplusBaseクラス GDI+オブジェクトのメモリの確保/解放を行うクラス。 GDI+の全てのクラスの基底クラスとして使われている。 このクラスのインスタンスを作ることはまず無い。 Image Imageクラスはベクタイメージ(…

GDI+ 前書き

GDIとは? SDKを読んだところ、どうやら、「WinAPIでできないグラフィックや映像の処理を可能にするライブラリ。Win64でもOK。」らしいです。 つまりJPEGやGIF、PNGを使えるようになるライブラリですと。 画像関係についてくわしく 以下SDKの糞訳。Microsoft…

基本情報技術者試験の勉強に役立った本 その3

大好評シリーズの3回目です。大事な本の紹介を忘れてました。情報はなぜビットなのか 知っておきたいコンピュータと情報処理の基礎知識作者: 矢沢久雄出版社/メーカー: 日経BP社発売日: 2006/09/07メディア: 単行本(ソフトカバー)購入: 3人 クリック: 38回…

オーバーロードされた関数たちの中にあるstatic変数は共通か?

結論 それぞれ独立しています。 テストコード #include <iostream> using std::cout; /* * 以下に、3種類の意味もなくオーバーロードされた、 * static変数を持つ関数の定義が続きます。 */ void overload( int i) { static int static_var; // "変数iは一度も参照さ</iostream>…

WTLのウィザードが文字化けするから修正してみた

WTL

注: 公開はしてません。zipがうpれません。ごめんなさい。WTL with VisualC++2008ExpressEdition。あくまでも自分の環境での話です。 WindowsXPHome SP2 MicrosoftVS2008ver9.0.21022.8 RTM 多分、色々と更新するだけで解決します。 そろそろSP3, IE7にした…

VisualC++2008ExpressEdition×WTL8.0Finalの四苦八苦

Visual C++ 2008 Express EditionでWTLを初めてみようと思いました。 ええ、かなり苦労しましたとも。そしてこれは、そのまとめ。 必要なもの VC++2008ExpressEdition WTL Windows® Server 2003 R2 Platform SDK *1 PlatformSDK(以下PSDK)は、普通はx86のや…

変てこな素因数分解の方法を思いついてみた

こういう話の常として、勘違いか既出に違いないんだけど。 ○○○ × △△△ ――――――――― ???? □□□□ ◎◎◎◎ ――――――――― ¥¥¥¥¥¥¥¥ ←かけ算の結果このようなかけ算の筆算と逆の操作を行う。 例として221(=13 * 17)を素因数分解すると、以下のように。 ○○ × …

基本情報技術者試験の勉強に役立った本 その2

大好評の書籍紹介シリーズその2。情報処理教科書 基本情報技術者 2008年度版作者: 日高哲郎出版社/メーカー: 翔泳社発売日: 2007/11/21メディア: 単行本(ソフトカバー)購入: 1人 クリック: 6回この商品を含むブログ (7件) を見るただしこれは今年のもので…

基本情報技術者試験の勉強に役立った本 その1

かなりお世話になったので、アマゾンのレビューのようなコメントを書かせていただきます。0/1ロジック CPUのしくみから学ぶプログラミングの原理作者: 高橋良明出版社/メーカー: ソフトバンククリエイティブ発売日: 2006/09/23メディア: 単行本購入: 1人 ク…

基本情報技術者試験の合格発表を見てきたわけだが

合格ライン 午前試験、午後試験それぞれ200〜800点の「スコア」がつけられ、 それぞれ600点以上取れば合格らしい。少なくとも今回は。 聞くところによると、次回からはスコアとかじゃなくて、 「80問中n問以上正解で合格」となるらしいですが。 どこで見れ…

かけざん九九。下一桁の数字。表。

かけざん九九のに出てくる答えの下一桁の表を作ってみました。 ちなみに0の段も含まれます。 また、1 * 9 と 9 * 1 など、逆にしただけの式は片方だけをカウントしました。以下が表段 : 個数 0 : 14 1 : 3 2 : 6 3 : 2 4 : 7 5 : 5 6 : 7 7 : 2 8 : 6 9 : 3…

基本情報技術者試験を受けてきたわけだが。

この前の日曜日に平成20年度秋の基本情報技術者試験を受けてきた。 午前試験と午後試験それぞれ2時間半ぶっ続けだから結構疲れる。 その日いちにちの流れ 時刻 行動 07:00 起床 08:15 出発 09:05 某原簿記専門学校に到着 *1 09:10 教室へ突入。すでに試験官…

相互インクルード?循環インクルード?

「よくやってしまう」ほどではないけど、昨日の分も含めて過去に 2回ほどやってしまった事がある気がする。ちょっとしたうっかりミスと、インクルードする順番が違う時に限って起こる。 症状 自分で定義した型のデータを作れない。コンパイラエラーがでる。…

".inl"?inlineの略?

C++

VC++2008EEにその拡張子のファイルがありました*1。特徴だけまとめます。 ・多重インクルードに備えてる ・__inline ってつけてる ・どう見てもヘッダファイルです。ほんt __inlineは「強制インライン」、inlineは「できればインライン」ってこと…ですかね…

inlineを書き忘れてエラー

C++

ヘッダファイル中に"inline"と書き忘れて関数を定義したら、 たしかリンクの段階でエラーが出た。シンボルが・・・と。 複数のソースファイルからそのヘッダファイルをインクルードしていたので、 全く同じものが2度以上定義されたからだと思います。 該当…

添え字演算子 [] がオーバーロードされているクラスの配列

二次元配列と同じで、添え字の順番を間違えたら大変な事になります。 (かけ算九九の表なら、値は変わらないかもしれませんが。) たとえばSTLのvectorそのものの配列はどうなのか。これで一目瞭然です。 std::vector<int> v[3]; v[1].push_back(99); // 今プッシ</int>…

参照とかヌルポインタとか。

C++

void func( int &hoge) { hoge = 1; } int main() { int *p = 0; func( *p); return 0; } 何の表示も行いませんが、エラーはばっちり出ます(実行時に)。 BCC5.5とVC++2008EEで確認。 「アドレス0x000... でアクセス違反が・・・」と、そんな感じ。そこで、…

よくやってしまうミス2

大好評につき、前回の続編です。 その3 int array[9][9];な二次元配列で掛け算九九の表を作りたいとする。 for( int i = 1; i < 10; i++ ) for( int j = 1; j < 10; i++ ) // i++じゃなくてj++でしょうが。 array[i][j] = i * j; 一部の掛け算がとんでもな…

よくやってしまうミス

大抵はすぐに気づくのですが、これのために何時間も費やしてしまった事があります その1 for( i = 0; 条件1 && 配列の境界チェック; i++ ) { /* array[i]に何かする */ } とやるところを for( i = 0; ○○○ || □□□; i++ ) { ... } とやってしまってオーバーフ…

const char *をchar *に変換?

C++

引数で void func( const char * const src) { ... } となっているような変数に対して関数内でchar *ptr = (char *)src; /* constだよ! constだよ! */なんていうキャストができる。 それを使えば、変更されないと思ってたsrcが関数内で当たり前のように変更…