インポートライブラリが出力されない

Posted on Sat 22 November 2008 in Windows

__declspec(dllexport) をひとつもつけないでdllをコンパイルすると
インポートライブラリ(*.lib)を吐かない。


ファイル読み込みモジュール作成

Posted on Fri 07 November 2008 in ペイントツール

OpenCVのcvLoadImage()だとアルファ値を読んでくれないので、
libpngとzlibをつかってpng読み込みモジュールを作った

f:id:hiroki0:20081107221654p:image ↑cvLoadImage()で読み込み、わかりづらいが、アルファ値が読まれていない。
f:id:hiroki0:20081107221655p:image ↑libpngで読み込みアルファ値が読まれている。

ついでにThe Independent JPEG Group\'s JPEG softwareのjpegライブラリを使って、
ファイル読み込みモジュールを作成。

cvLoadImage()だと読めない、jpegファイルがあるのだが、このモジュールを使えば読み込めるようになった。

[The Independent JPEG Group\'s JPEG software]{style="font-weight:bold;"}
http://www.ijg.org/
[libpng]{style="font-weight:bold;"}
http://www.libpng.org/pub/png …


Continue reading

C++クラスのDLL化

Posted on Wed 10 September 2008 in Windows

C++のクラスのDLL化の参考リンク
http://msdn.microsoft.com/ja-jp/library/a90k134d(VS.80).aspx
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1582533&SiteID=7

http://www2s.biglobe.ne.jp/~ragnarok/program/win32/class_of_cpp_in_dll.htm
↑は、DLLとEXE側で、クラスのサイズが違ってたりすることがあるので、
DLL側でメモリの確保、開放をしたほうがいいよということらしい。


プリコンパイル済みヘッダー

Posted on Mon 08 September 2008 in Windows

コンパイル時間の短縮のためにプリコンパイル済みヘッダーを導入したが、

c80.pdbは、このプリコンパイル済みヘッダーが作成されたときに使用されたpdbファイルではありません。プリコンパイル済みヘッダーを再作成してください。

の様なエラーが出た。

これは、後から、StdAfx.cppを追加すると、デフォルトで「プリコンパイル済ヘッダの使用」になっているので起こるようだ。
ソリューションエクスプローラからStdAfx.cppを右クリック→プロパティーで「プリコンパイル済ヘッダの作成」に変更する。

StdAfx.cppのみ、「プリコンパイル済ヘッダの作成」にすることで上手くいく様だ。


ソースからショートカットメニューを表示する場合の注意

Posted on Wed 13 August 2008 in Windows

TrackPopupMenu()でショートカットメニューを表示する場合、CreateMenu()ではなく、
CreatePopupMenu()で作成したメニューを使用しないと上手く表示されない。


photoshopのブラシデータのフォーマット(2)

Posted on Fri 11 July 2008 in ペイントツール

昨日の続き

先頭から
[2byte] abrファイルのバージョン(1,2,6があるようだ)
/* ver1 or 2の場合 */
[2byte] ブラシの個数
以下最後までブラシデータの繰り返し
| [2byte] ブラシタイプ 1のときcomputedブラシ 2のときsampledブラシ
| [4byte] ブラシのサイズ
/*ブラシタイプ 1 computed brush*/
/*ブラシタイプ 2 sampled brush*/
| [6byte] 不要なデータ
| [4byte] 名前のサイズ
| 
| ・
| ・ 名前データ 名前のサイズ分だけ
| ・
| 
| [9byte] 不要なデータ
| [4byte] ブラシの領域の上辺の値
| [4byte] ブラシの領域の左辺の値
| [4byte] ブラシの領域の下辺の値
| [4byte] ブラシの領域の右辺の値
| [4byte] ブラシのデータ深度
| [1byte] 圧縮有りか無しか
以下ver 6と同様
/* 圧縮無しの場合 …

Continue reading

photoshopのブラシデータのフォーマット

Posted on Thu 10 July 2008 in ペイントツール

photoshopのブラシデータのフォーマットを調べてみることにした。
なかなか説明がのっているサイトが無いので拾ったC言語ソースから、調べることにした。
値の格納法はビッグエンディアンなのでリトルエンディアンへ変換しないといけない。

ファイル先頭から次のようになっている。
[2byte] abrファイルのバージョン(1,2,6があるようだ)
/* ver6の場合 */
[2byte] subversion(6.xのxの部分、6.1と6.2があるようだ)
[1byte][1byte][1byte][1byte] "8BIM" になっていなければならない
[1byte][1byte][1byte][1byte] 8BIMtagの名前 ヌル文字は入ってないので注意
[4byte] セクションサイズ この後からファイルの末尾までのファイルサイズ
以下最後までブラシデータの繰り返し
| [4byte] ブラシサイズ ブラシデータのサイズ
| [37byte] 不要なデータ
| [10 or 264 byte] 不要なデータ 6.1の場合は10byte 6 …

Continue reading

行列の計算

Posted on Sun 06 July 2008 in OpenCV

画像の拡大縮小で、↓の様な行列を使って変形させ、
マウスの座標をこの逆行列をかけることによって画像上の座標に変換しようとしたが、
どうも上手くいかない。

cvMul()で行列の掛け算をしてるとこでアサーションが起こる。

f:id:hiroki0:20080707005724j:image

http://d.hatena.ne.jp/DOSEI/20060508/p1

↑によるとcvMul()は要素同士の積なので、エラーが出たようだ。
cvMatMul()を使用すると、上手くいけた。


ダイアログのオーナーウィンドウ

Posted on Mon 30 June 2008 in Windows

ダイアログのオーナーウィンドウのハンドルは、
GetWindow()でGW_OWNERを指定することで得られるが、
DialogBox()の第3引数で指定したものが得られるとは限らない。

DialogBox()の第3引数で指定したウィンドウが子ウィンドウの場合、
子ウィンドウはオーナーウィンドウになれないので、子ウィンドウの親を調べて子ウィンドウでなければ、そのウィンドウがオーナーウィンドウになる。
子ウィンドウの親も子ウィンドウだった場合さらにその親を調べる。


WinAPIでのWindowのクラス化

Posted on Mon 02 June 2008 in Windows

プロシージャーは、staticなメンバ関数を使用するとして
プロシージャーから、SetProp(), GetProp(), RemoveProp()
をしようして、ウィンドウハンドルから、自身のオブジェクトのポインターを 得れば何とかいけそう。