月に一度の贅沢 | August 28, 2008 8:37 PM _ txt

ヴィタメールのマカロン買ってきたー。んまい。
今日は珈琲。明日は紅茶。
来月はグラマシーニューヨークのチーズケーキか。
こっそりもそもそとエロCG集の作業を進めていたり。
現在下書きの修正中。
よくよく考えると久しぶりのエロ。
ちなみに触手+ボテ+異形出産+αな物になる予定。色々酷い。
テキストはつけるかどうかは考え中。
とにかく夏休みまでに片付けたい所存。
とかなんとか言って中和を試みる。
introduce | August 26, 2008 11:55 PM _ introduce
落ちるシュークリーム さん
>裾の長い服がフワッとした感じって大好きです。り-20把握しました
お手数をおかけしてスミマセン。わざわざ調べていただけるとは…!
不浄なる大聖堂 さん
>こういうふわっとしたスカートっていいですよねー。
>ロングスカートでDDRやるメイドさん見るまでは死ねない(何
しかも描き手としては色々とごまかせ(ry
CG定点観測 さん
新まったり加奈香の日記 さん
変熊.com さん
YANAGI DQN さん
clapres_002 | August 23, 2008 11:22 PM _ clap
>初めまして。久々に来てみたら式じゃ無くなっててびっくりしました。やっぱり絵が上手ですね。……教えてほしいなぁ。
はじめましてー最近月1更新ですからねーもうちょっと更新したいところなのですが。
自分なんて人様に教えられるほどのものでも無いですし、継続は力なりというかやっぱり描いた量が直結すると思うのですよ。
そもそも10年近くCGやってて未だこの程度なので効率の悪い方法しかわからないのです(´・ω・`)
天体観測 | August 23, 2008 11:10 PM _ txt
セイリオス・ゼロ行ってきたー
そういやプラネタリムって凄い久しぶりに行った。
改めて時間を見つけて一人で星でも見に行こうかな。
内容だけど演劇だと思ってたらどちらかというと朗読メインなのね。
語り手と演者に分かれていたのはそういうことかー
コンサートも朗読も演劇も全部つめこんだ不思議で楽しい時間だった。
にしてもプラネタリウム見ながらRitaちんの生歌聞くとかどんだけ贅沢なんだ……。
Ritaちんには有名になって欲しいけどキャパ的な問題を考えるとそうなったらもうこういう機会はなくなっちゃうんだろうなぁ。
本当に楽しい時間を頂きました。
またあれば行きたいけれど、今回抽選だったので次回は今回行けなかった人に行って貰いたい。
少しでも多くの人がこの素敵な時間を体験できればなと思う。
さて、そろそろエンジンかけ直さないと。
ここ1、2週間止めっぱなしだわ。
裏表紙 | August 23, 2008 2:36 AM _ img

日曜日にあるCOMITIA85に所属サークルが出るので裏表紙描いたー
部誌の表紙描くの久々な気がする。
サークルスペとかはわかんない……多分サークルサイトに行っていただければ分かるかと思います。
ぶっちゃけもう眠いので寝ますー
clapres | August 19, 2008 11:37 PM _ clap
>> ちびまりさ
>もう解決されてますかね?
>ttp://tekitoudays.seesaa.net/article/60203491.html
>↑のスクリプトを実行するとMQOファイルが読み込めます。
おおっ!ありがとうございますー
ボーンを触らずに次のモデルに移ってそのまま放置してました……
件のスクリプトですがどうやらマテリアルの周りでエラーを吐いているようですorz
無知故に普通ではあり得ないモデルの作り方してるっぽいので次のモデルで気をつけつつまた利用してみます。
情報ありがとう御座いますー
introduce | August 19, 2008 11:24 PM _ introduce
紹介ありがとう御座いますー('∀`)
落ちるシュークリーム さん
>そういえば前回の式に続き縦長絵ですね
上下への視線移動が大きくすっきりした空気が出るような気がして楽しいのですよー
新まったり加奈香の日記 さん
>赤い傘が目立つ女の子。最近急な雨とか多いですからねぇ・・・。
今日(08/19)も振りましたしねぇ。勘弁して欲しいです(´・ω・`)
不浄なる大聖堂 さん
>赤の傘が目立ちますが、背景のにじみ具合も風情があります。
レンズに水滴が薄く載っているときに軽くにじんだりするので試してみましたー
残暑見舞い | August 18, 2008 9:47 AM _ img

コミケお疲れ様でしたー
自分は2日目に挨拶だけして早々に帰宅しました。
やたら混んでた様な気がする。一般で参加するのは久しぶりだったので気のせいかもしれませんが:-P
久々にちょっと気合い入れて書いてみた。
けれど余りイメージ作り込まないで背景描き出すのは良くないねぇ。特にこの手の絵は。
まだまだ暑い日が続くようですが頑張って乗り切っていきましょうー
これが過ぎれば飽食の秋ですよ!
コントロールサイズのリサイズ その2 | August 4, 2008 8:27 PM _ prgramming
前の記事で描画時にゴミが残るーとか言ってたわけだけど、
そもそもWM_SIZEを捕まえる必要がないという……
The So-Software Studio のWTL/ATLコンテンツのPart3ダイアログリサイズにリサイズマップを使ったコントロールのリサイズ方法が載ってます。
WTL/ATLはもっぱらここを読んで勉強してるわけだけどちゃんと読もうぜ俺。
悔しいので何でゴミが残らないのかなーと思ってちょっと追ってみた。
CDialogResizeのWM_SIZEハンドラで処理しているらしい。
んで、自分のくんだハンドラとの違いはまず処理始めに
BOOL bVisible = pT->IsWindowVisible();
if(bVisible) pT->SetRedraw(FALSE);
としてやって表示されてたら一時的に再描画を切って、最後に
if(bVisible) pT->SetRedraw(TRUE);
pT->RedrawWindow(NULL, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_UPDATENOW | RDW_ALLCHILDREN);
としてやって再描画をオンにして再描画メソッドを投げると。
再描画を切るのはまぁ良いとして多分最後のRedrawWindow()に渡している引数がポイントの模様。
MSDNを見ると
■DW_ERASE
ウィンドウの再描画時に、ウィンドウが WM_ERASEBKGND メッセージを受け取ります。RDW_INVALIDATE フラグも同時に指定しなければなりません。RDW_INVALIDATE フラグを指定しないと、RDW_ERASE フラグは効果がありません。
■RDW_INVALIDATE
lprcUpdate または hrgnUpdate パラメータで指定した領域を無効化します(NULL 以外の値を指定できるのはどちらか一方だけです)。両方とも NULL の場合、クライアント領域全体が無効化されます。
となっていて、自分のはWM_ERASEBKGNDを投げるだけだったので、きちんと消去されていなかったらしい。
一度領域を無効化しないと消されないという解釈でいいのかな。
とまぁそう言うことらしい。
若干もやもやが残るけどこれ以上追求してる余裕もないので分かったつもりになっておく。
コントロールのサブクラス化と多重継承 | August 3, 2008 9:36 PM _ prgramming
/*
立て続けにまたプログラミングの記事。
いや、卒論(テキストの方ね)書くときに見返すことで役立つかなーと。
あとは何処かの誰かが同じようなことで詰まったときに少しでも参考になれば、と。
一応もそもそと絵を描いては居るのだけれど、どうにも身が入らない。
というか絵なんて描いていて良いのだろうかとか煽られる煽られる。
何かもう少しでも多くソース弄ってないと寝るときに不安が押し寄せてきて寝れないとか。
*/
そんなことはさておいて。
表題のことだけどサブクラス化と多重継承の説明は省略。
今回はサブクラス化と多重継承を行ったときに起きた問題と解決。
例えば、CWindowImplテンプレートを継承してサブクラス化する際に、更にCTreeViewCtrlExを継承する場合。
色々な関数が在るわけだけどCTreeViewCtrlEx::の関数を使う時にm_hWndがNULLですよーな意味のエラーががが。
んで、色々追ってみると、CWindow::m_hWndには値が入っていて、CTreeViewCtrlEx::m_hWndはNULLになっている。
CTreeViewCtrlEx::の関数を使うときは当たり前と言えば当たり前なんだけど、CTreeViewCtrlEx::m_hWndが使われる。
なのでCWindow::m_hWndの値をCTreeViewCtrlEx::m_hWndへ突っ込んでみると無事に動作確認!
けど動いたのは良いけどこんな解決の仕方で良いのだろうか。
ただまぁ色々なコントロールをクラス化して別で記述出来るので、分割してクラス当たりの行数を減らしてコーディングしたい人にはお勧め。
ただし何か問題があっても責任は取れな(ry
// 追記
m_hWndがNULLになるの件。
どうやらCDiagImplテンプレートの引数に二つ以上持たせることで解決できる模様。
宣言時に
public class CMyClass : public CDiagImpl<CMyClass , CTreeviewCtrlEx>
とかしてあげれば良いみたい。
これでわざわざ初期化関数を用意する必要が無くなる。
コントロールサイズのリサイズ | August 3, 2008 2:55 AM _ prgramming
少し引っかかったのでメモ。
WTL/ATLでリサイズするときに捕まえるメッセージはWM_SIZINGではなくWM_SIZE
何故かWM_SIZINGが飛んでこなくて代わりにWM_SIZEが飛んでくると言う。
とりあえずはこれでコントロール含めたリサイズが出来るようになるわけだけど、
素早くリサイズすると描画時にゴミが残る罠が。
どうにか出来ないかなとリサイズ後にWM_ERASEBKGNDとか投げてみたけれど改善されず。
キャッシュ消してリペイントでも駄目となるとどうしたら良いんだ?
ウィンドウ保存位置その3 | August 2, 2008 8:03 PM _ prgramming
WINDOWPLACEMENTのshowCmdにSW_HIDEが保存されないと言う件で、
GetWindowPlacement()についてMSDNを読んだら以下のような記述が。
CWnd が最大表示されている場合は、WINDOWPLACEMENT 構造体の showCmd メンバは SW_SHOWMAXIMIZED になります。ウィンドウが最小化されている場合は、このメンバは SW_SHOWMINIMIZED になります。それ以外は SW_SHOWNORMAL になります。
要は最大化か最小化しか状態を保存できないと言うことらしい。
仕方ないので状態保存用の関数を書き換えることに。
修正前は、
// target : 状態を保存するウィンドウクラスへのポインタ
// nID : ウィンドウのID
void inputState(CWindow* target,int nID){
target->GetWindowPlacement(&wndPlc[nID]);
}
となっていて、WINDOWPLACEMENT構造体の配列に直接値を取得して居たわけだけれど、
GetWindowPlacement()は前述の通り、showCmdにSW_HIDEを保存できないので、以下のように修正。
// inWindplc : 保存するWINDOWPLACEMENT
// nID : ウィンドウのID
void inputState(WINDOWPLACEMENT inWndplc,int nID){
// ウィンドウ状態コピー
wndPlc[nID].flags = inWndplc.flags;
wndPlc[nID].length = inWndplc.length;
wndPlc[nID].ptMaxPosition = inWndplc.ptMaxPosition;
wndPlc[nID].ptMinPosition = inWndplc.ptMinPosition;
wndPlc[nID].rcNormalPosition = inWndplc.rcNormalPosition;
wndPlc[nID].showCmd = inWndplc.showCmd;
}
あとは呼び出し元を、
{
(~略~)
// ウィンドウ状態保存
WINDOWPLACEMENT wndplc;
GetWindowPlacement(&wndplc); //現在の状態を取得
// 表示状態をチェックし代入
if(IsWindowVisible()) wndplc.showCmd = SW_NORMAL;
else wndplc.showCmd = SW_HIDE;
// 状態保存関数呼び出し
pcfm->inputState(wndplc,wndId);
(~略~)
}
と修正。
一応これで無事動作することを確認。
さくさく次に進もう。
と思ったら確認不足。
OnDestroy()が呼び出されるのはウィンドウ破棄後。
すなわち必ずIsWindowVisible()はfalseを返す……!
なんかもう色々ごちゃごちゃ考えるのが面倒になったので、メンバにvisibleを持たせて対処。
力業だけど仕方在るまい。
なにか良い方法無いかなぁ。
ウィンドウ位置保存その2 | August 2, 2008 6:02 PM _ prgramming
前回結局スレッドを使うことも出来なかったのでどうするかと考えたけれど、
やはり何かしらを持たせなければどうにもなりそうに無さそう。
・CMainWindow(ウィンドウクラス)
・CConfigManager(ウィンドウ情報クラス)
・CWndManager(ウィンドウ管理クラス)
があって、
CWndManagerにCMainwindowとCConfigManagerを持たせるところまでは前回通り。
んで、CMainWindowに何かを持たせなければならないという結論に落ち着いたわけだけど、
持たせるのはCConfigManagerにすることに。
/* Frieve Editor という面白い物があったので使ってみる */
■ 前回

■ 今回

ウィンドウクラスでOnDestroyが呼ばれたときに、
WINDOWPLACEMENTをCConfigManagerに渡す
↓
CConfigManagerのデストラクタでファイルに書き出し
で、どうにかウィンドウ位置の保存に成功。
ただ、CConfigManager*を持たせるためにコンストラクタへの引数を増やさなきゃいけないのはなぁ。
出来ればデフォルトコンストラクタで余り意識しないで使えるようにしたかったのだけれど。
もし仮に、CConfigManagerを持たせずにやるとすれば、
所定の状況に於いてメッセージを発行し、
それをCWndManagerで、発行元を参照して処理
という方法が有るのだけれど、CWndManagerはメッセージループを持たないただのクラスなので捕まえることもできず、
かといってそれを実装しちゃうとそれはそれでごちゃごちゃしてて美しくないので却下。
そのうちこの辺りを綺麗に実装する方法を考え直そう。
で、また問題発生。
WINDOWPLACEMENTを使っているのだけれど、
cmdshowメンバにSW_HIDEを割り当てても、何故か保存時にはSW_SHOWに勝手に置き換わっているという怪現象が。
何故だ。
Σ(・×・)