2004.12.23

アルファ版

アルファ版の公開はやめときます。あまりに恥かしい感じ。

後、スレッド内の処理がかなり不味くて、このままでは使い物にならないことが判明したので、スレッドの処理自体を見直す必要があります。無闇にポインタを使いまわしたのが敗因でした。

TThreadのバグを回避するために、ごまかしつつやったのですが、TThreadは使わずにC標準のスレッド関数を使って凌ぎます。ふう、こんなことで苦労するなんて・・・。

#何の話か分からない人はカテゴリに注目してください

| | TrackBack (1)

2004.12.22

ドラクエで止まってた

ドラクエで止まってた作成を、再開してます。

とりあえず、ツリー階層で無理やり作りました。登録まで可能。コメント入力はまだできません。でも、なんかスレッドの処理がおかしいらしくて、サムネイル画像を作成中にツリーのノードを切り替えると、「アベシ!」となっちゃいました。

何処がおかしいのだろう。

今日当たり、この不具合を解消して、アルファ版をアップします。いや、使えないソフトなんで期待しないでね。マジで。

| | TrackBack (0)

2004.11.19

DB設計で行き詰まる

どういう仕様にするかで悩み中。単純なツリーで行こうかとも思ったけど、違う面からも攻めて見たい気分。

というわけで、DB設計で悩み中。

|

2004.11.17

スレッドにおけるCOMオブジェクトの利用

昨日の日記の問題を解決してから、改めて昨日の日記を読むと、我ながらダメダメぶりを発揮してる。

さて、サムネイル作成がスレッドにすると動かない問題に対する解答だが、結局、CoInitializeしてなかったのが原因だった。言い訳すると、一応試したんだよね。Threadオブジェクトのコンストラクタとデストラクタに、CoInitializeとCoUninitializeを入れて実行はしてた。

コールはしてチェックはしてたんだけど、Threadオブジェクトのコンストラクタとデストラクタはメインスレッド上で行なわれるわけで・・・。orz

もうダメぽ。

参考:TThreadクラスでCOMを利用する方法

Threadオブジェクトの実際の処理部分(BCBではExecuteメソッド。私はこれを無限ループ系に仕込んでる。)に、上記COMの初期化コードを埋め込んだら万事OK。

RunnableTaskという代物は、結局のところ外からサムネイル作成を中止させるために必要なインターフェースであって、これがないと作成されないという事はなかった。

というわけで、サムネイルのスレッド作成も完成して、次は、メインとなるDB設計に移行したわけだが、ちょっとした個人的な問題が発生して、DB設計は終わってない。

まあ、徐々に進めて行きますよ。

|

2004.11.16

登録してサムネイル表示まで作った

まだ、DB設計はしてないんだけど、とりあえずスレッドでサムネイル作成する部分まで作ってしまおうかと、現在奮闘中。

とりあえず、OLEドロップを受け付けるようにして、ドロップしたらListViewにサムネイルで表示するモノを作成してみたんだけど、サムネイル作成をスレッドにすると、途端に動かない!

ちなみに、サムネイル作成はOSのIExtractImageインターフェースを使用。

調べてみると、サブスレッドでIExtractImageのGetLocationメソッドを使用すると、戻り値でE_PENDINGが戻ってきて、この戻り値の場合、IRunnableTaskインターフェースを利用してExtractメソッドをコールするタイミングを制御しないと駄目みたい。サムネイル作成部は完成してたつもりだったので、単純にスレッド化すれば終わりだと思ってたのに・・・。

というわけで、IExtractImageインターフェースを再度勉強中。

ちうか、今書きつつ思ったんだけど、 QueryInterfaceでIRunnableTaskインターフェースを入手するのは想像に難くないんだけど、入手したとして、どうやってWaitするんだろう。てきとーにSleepかませばいいのだろうか。そして、GetLocationの引数にIEIFLAG_ASYNCなんてのがあるんだよね。MSDNではサポートしてないって書いてあるけど、これが使えたら非常にラクチンな気がする。だって、スレッド自作せんでもタイマーで解決できそうだしね。

まあ、コーディング自体は家に帰ってから楽しむとして、ぐぐった結果大事そうなのを自分メモとして残しておこう。

MSDN-IExtractImage
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/ifaces/iextractimage/iextractimage.asp

IRunnableTask
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/ifaces/irunnabletask/irunnabletask.asp

コードサンプル
http://netez.com/2xExplorer/shellFAQ/bas_infos.html

サーバー側のコーディング手法等
http://www.users.gr.jp/ml/archive/list.aspx?name=com&no=3903

|

2004.11.15

まずは宣言から

画像管理ソフトを作成してみよう。とりあえず、以下のことができたらいいかなー。

・サムネイルで一覧表示
・登録はドラッグ&ドロップ
・ツリーでの分類
・タイトルとコメントをつけることができる
・最終的にはHtmlに吐き出すことができるのを目標

まずは、簡単に分類ツリー構造で管理できるの作成してみよっと。サムネイルは、以前アップしたOSの機能を使わせてもらうとして、そうするとWindows2000以上必須になっちゃうわけだけど、まあ、それでもいいかな。

|