C++

VS2010Proを買ったのさァー

週末はアマゾンで購入したVS2010Pro乗り換え優待パッケージがついにご到着だった。DVDからのインストールと、あと実はMSDNからのWebインストールもその後体験したんだけどどっちも結局インストールには1時間くらいかかったかな。 そして、再頒布パッケージも…

赤と青の交換関数

C++

やあ子供たち元気にしてたかな。今日は赤と青を交換する話だよ。Win32GDIのビットマップ画像データをOpenGLのテクスチャ画像として渡したりする際にビットマップイメージデータの並びがBGRBGRとなっていたりするので、青の値と赤の値とを入れ替える必要が発…

tr1::tupleの初期化とtr1::make_tuple

C++

おー、tuple<>[]の初期化には、make_tuple()が便利なのか。 typedef tr1::tuple< Vec3, unsigned int > Info; Info info[]= { tr1::make_tuple( Vec3( 50, 50, 0 ), IDB_BITMAP1 ), tr1::make_tuple( Vec3( 80, 50, 0 ), IDB_BITMAP2 ), tr1::make_tuple( Ve…

簡易OpenGL選択バッファ解析

OpenGLのヒットレコードの解析はわかってしまえば簡単なのだが、わかっていてもなお、ゼロからコード書いてテスト通過するまではなかなか厄介なものだ。ヒットしたレコードの中で最も手前にあるものはどれかと探したいだけなのに。。 そこで、今回は、Ope…

mem_comp 再び

C++

やあみんな元気にしてるかな。同じクラスの、異なるインスタンスオブジェクトが二つあるとき、ある特定のメンバの値でもって両者を比較したい場合はよくあることだね。そんなときのためのmem_compを今日は紹介するぞ。以前も同じものを紹介したことがあった…

簡単視体積作成 easyViewVolume

OpenGLのプログラムを作っている時にもどかしいのは原理的には全くもって簡単なのだが、ちょっとした勘違いが複数個所にあって、なかなか思うような描画が得られなかったりする。中でも気持ち上とくに重たいのは視体積の制御ではないだろうか。視体積はそれ…

VC++でプリプロセッサ展開結果を確認する方法

C++

やあ子供たち。VisualC++2008sp1でマクロ展開の結果をちょっと見てみたいということはよくあるよね。しかしそれをやるのは面倒だから本当に必要なときにしかしないのではないかな。そんなんだからいつもやり方を忘れるのさ。おじさんもそうだよ、だから今回…

NameMappedFactory

C++

やあ子供たち元気にしてたかな。昨日おじさんはついにMacMiniを買ってしまったわけなのだけれども、Objective-Cに慣れることができるのかどうか本当に不安な気持ちでいっぱいだよ。 共通の基底を持つオブジェクトの集合があるとき、各オブジェクトに一対一で…

参照引数受け取りメソッドにも対応した自作bind2nd

C++

元気にしてたかな子供たち。おじさんは花粉症だか風邪だかわからない感じになってしまって困っているよ。今日なんかもう40日分くらいのプログラムを書いてしまったのでこれじゃーますます悪化するばかりだなー。 以前参照引数受け取りにも対応した自作bind1s…

パディング君

今日はパディングコードの改良版だよ。画像データを扱っていると、APIやOSによってはとかく受け付ける画像サイズに何らかの制限があったりすることがある。例えばOpenGLのデフォルトバージョンではテクスチャ画像のサイズは2のn乗数になってないとだめとか…

Wintabよ、何処へ

やあ子供たち。いつからか、Wintabが消えてしまったよ。特許を取得した会社があったらしい。ほんの2年前には少なくとも取得可能だったのに。事情はここに書かれている。http://bit.ly/dol4iy ここのフォーラムのShootTheMessengerという男の発言に最近のWint…

負でない整数x以上の値をとる最小の2のべき乗数の計算

C++

やあみんな、寒いけど元気にしてたかな?今日はこんなぐだぐだなタイトルだよ。負でない整数xがあるときに、これ以上の値をとる、最小の2のべき乗数の計算方法についてだ。以下の4通りの実装をしてみた。 int PadToPow2( const unsigned int x ){ // x より…

GetDCPolite

上記ネタと全く同じ話でGetDCPoliteを用意したよ。これはGetDCしたら必ずReleaseDCをしましょうという教訓をマクロにまとめてしまい、教訓をうっかり忘れても大丈夫なようにしよう、いやむしろ、積極的に教訓は忘れてこっちを使おう!というためのものだ。ソ…

SelectObjectPolite

今日はお行儀のよいSelectObjectマクロを作成してみたよ。 子供たちも知っているように、Win32のGDIプログラミングではSelectObjectしたら必ず最後に、以前にセットされていたオブジェクトでSelectObjectしなおさないといけないんだったね。具体的にはその返…

GradientFill関数の使い方Part1

やあ子供たち。冬のオリンピック見てるかい?高橋選手による日本初のフィギュアスケート男子メダル獲得は素晴らしかったね! 今日はGradientFillを簡単に利用するための関数を作ったよ。もはやこれがGDIなのかGDIplusなのかおじさんにもよくはわからないしそ…

本日のその他自分用メモ(CDialog関係)

CXXDialog::OnPaint() の中では、CDialog::OnPaint()を最後に呼ばないとフリーズした感じになってしまうので半日ハマった。OnPaint()の処理途中で抜ける場合も必要なので、決して忘れてはいけない。今回は、ある条件が満たされたときには描画処理をせずに抜…

本日のその他自分用メモ(CString⇒char*変換関係)

プロジェクトのプロパティ>全般>文字セットで「マルチバイト文字セットを使用する」になっていると、CString cstr;から、char p[];への変換は、strcpy( p, cstr );とかであっけなく簡単にできるのだが、ここの設定が「Unicode文字セットを使用する」になっ…

矩形領域への画像出力について

やあみんな、今日はちょっと当たり前そうなんだけど、書き残しておきたい話をするぞ。まあ、StretchBlt絡みと言えばStretchBlt絡みの話題かな。 ある決まったサイズの矩形領域があって、任意のサイズ・縦横比の画像全体を、このサイズ固定の矩形領域に描画し…

N88-OpenGLインタープリタ

インタープリタ的なその場の入力でOpenGL描画できてしまうシステムがあると面白いかも知れない。その昔、(そうそれはもう20年以上も前のことだ)N88-Basicというものがあった。N88-Basicでは、プログラムとしてのみでなく、コマンドラインに描画コマンドを…

GetDC、ReleaseDCのCWnd::版には気をつけろ

みんな大変だ、おじさんは今日こんな記事を見つけてしまったよ。⇒http://support.microsoft.com/kb/819635/jaというわけで、本日の日記のタイトルみたいな話になるわけですか。もう解決してんのかなコレ? CWnd::GetDC()したら、必ずCWnd::ReleaseDC()しない…

std::multimapがいるわけ&ありがとうmultimap

C++

やあみんな、元気に年明け仕事始めのスタートを切れたかな?今日はmultimapがどうしてこの世にあるのかというお話だよ。 おじさんもmapやmultimapといった方たちにはさんざお世話になってきた。ところが、ちょっとひっかかるところがなくもなかったんだね。…

描画結果を画像情報として取得しよう

やあ子供たち、元気にしてたかい。2010年になってまたまた新しいスマートフォンやタブレットデバイスが目白押しで楽しそうだね!今年はとくに楽しくなりそうな予感がするね予感どころじゃないかな。 今日はWindowsのメモリデバイスコンテキストというものに…

日付と時刻とメモ帳とワードパッド

プログラムの開発記録日記や、各種文書フォルダの説明用テキストとして、メモ帳またはワードパッドで覚書をつけることが多い。「XX日記.txt」みたいな名前のテキストファイルをあちこちに作成し、保存している。 その際、必ずその日の日付を西暦から曜日に…

GetDC()について

以下、自分用のメモなので。GDIとか詳しくなかったんで。 for( int i=0; i<10; ++i ){ HDC dc = ::GetDC( this->m_picbox2.GetSafeHwnd() ); }// i とすると、同じウィンドウのデバイスコンテキストを取得してると思うのだが、様々に異なる値が10回返されて…

リストビューのオーナードロー日記

またまたMFCです。こんなの作ってみた。でもどのみちスムーススクロールしないので、いやスムーススクロールへの道はないことがわかったので、敗北感たっぷりなのだが。以下はリストビューのオーナードローのメモ。流れとしては 基本クラスを継承し、 DrawIt…

リストビューでスムーススクロール

こんだけiPhoneとかマルチタッチだとか、UIの充実っぷりの重要さが盛り上がってきているのに、MFCから.NETはおろか、Qt、WPFに至るまで、ドット単位でスムースにスクロールするカッコいい&気持ちいいListViewウィジェットがないのはとても不思議。 世の中ユ…

MFCリストビューの簡易ラッパークラスを作ってみたよ

今日はMFCのリストビューに関する覚書だよ。 上図のように、MFCリストビューのレポート描画において、カラムやアイテムの追加が簡単にできるラッパーテンプレートクラスを作成したよ。 #include <sstream> class ListCtrl { public: ListCtrl( CListCtrl* lv ) : _lv(</sstream>…

STLPortパフォーマンス計測

C++

みんな元気にしてたかい。vector, list, deque, setのパフォーマンス実験を再びやってみたよ。前回との違いは以下の点だ。 findやinsertをテストする箇所は、コンテナの中の固定位置に対してのみ行っていたが、今度は乱数を使ってコンテナの中のランダムな場…

書き込み専用コード

C++

Effective STL 47項「書き込み専用コードの作成は避けよう」は、なかなか味のある項だと思う。そこに書いてある内容は、まさに読み手側に立ったコード記述をしようという内容だ。とまあそれだけならどこにでもある話なのだが、ここで触れられているのはつま…

STLport使用環境設定覚書

C++

STLportを試してみたよ。以下、自分用のメモ。 解凍先フォルダにてconfigure --helpを読んだ後、configure msvc9 実行、build/lib に移動、そこに、vsvars32.batを、コピーしてきて実行。そこでnmake clean installを実行すると、ビルドが始まる。 hello.sln…