Windows

vs2010/C++編集における中かっこハイライトの問題

やあ子供たち元気にしてるかい、今日はVisualStudio2010を使い始めてみた際にかっこ({, })の自動一致視覚アクションがわずらわしいからその回避方法を模索する話だよ。 使ってみればわかるけど、vs2010でC++のソース編集画面では、中括弧にカーソルを持っ…

指定したディレクトリが存在しなければ作成

やあ子供たち。今日はMakeSureDirectoryPathExistsWin32APIの紹介だよ。 ファイルの作成・保存とはちがい、ディレクトリ(=フォルダ)のあるなしを調べたり、ディレクトリを作成したりするのはなかなか面倒なことだね。 でもWindows環境でプログラムを作っ…

CFileDialogとデフォルトパス

やあ子供たち、ようやく最近は涼しくなってきて頭も少しは動くようになったかな。ついに今年もプログラミングの秋がやってきたな。 さて今日はMFCでファイル保存やファイル読み込みをするときに出す、CFileDialogの話だよ。 とても便利で多機能なCFileDialog…

VS2010Proを買ったのさァー

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

簡易OpenGL選択バッファ解析

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

パディング君

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

Wintabよ、何処へ

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

コマンドプロンプト・バッチファイルの技メモ

やあ子供たち元気にやってるかい。上司にはちゃんと言いたいこと言っているか?でないと週末とかでも心が病気になっちゃうぞ。ただし言い方には気をつけろ。あるいはC++とか興味ない人に無理やり勉強させて、わからなかったら俺に聞けとかエラそーにふんぞり…

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文字セットを使用する」になっ…

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

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

ユーザーエクスペリエンスでスムーススクロール

今日は子供たちにスムーススクロールアプリの紹介だよ。前にも書いたけどWindowsでスムーススクロールするリスト描画部品をサポートするUI開発環境が世にないので自作したった。画面キャプチャの精度に問題ありなんだけど、実際はこれよりはるかにスムース…

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

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

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

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

マイクロソフト「忘年会2007」vs 「GOOGLE 忘年会 beta」

やあみんな、もう今年も終わりだね。みんなはどんな一年だったかな。おじさんは今年は粒子法の冒険から始まっていろいろと充実した年だったかも知れないな。さて、今日は忘年会とITについて考えてみたよ。忘年会を執り行うにあたってITがどのくらい活躍して…

GDIPlusってのがあったんだ

へー、VC2008SP1とかだともう #include <gdiplus.h> using namespace Gdiplus; とかやって、もういきなりGDIPLUSなるものが使えちゃうんだ。しかもそしたらいきなりGradientFill()とか使って上の図みたいに矩形領域のグラデーションペイントができるようになるんだへー</gdiplus.h>…

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ウィジェットがないのはとても不思議。 世の中ユ…

BitBltについて

BitBlt(ビットブリット)とは、単なるWin32のGDIのAPIの一メソッド名だとばかり思っていたが、どうやらコンピュータグラフィックスにおける画像情報ブロック転送の概念を意味するれっきとした概念だったらしい。ちょっとだけまた一つWin32APIに対する親しみ…

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

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

VS2008SP1のKB960075v2 hotfixを君はもう当てたか?

VisualStudio2008SP1で、どうも出力ウィンドウを独立表示移動したりして、終了すると、どーも必ずIDEが異常終了するなーと不愉快に思っていた。 そこで、いつもの落ちる画面を良く見ると「解決策を探しています」と出てるから期待せずにそのままにしておくと…

今日もMFCでした

今日もMFCやった。今日はリストビュー初めて使ってみた。(使うってやっぱり必要性がないと使わないよね。このウィジェットは使ったことないっていうのは要は、そういう必要のある場におかれてこなかったからなんだよね。そういうのを使う仕事をとっていけば…

operator new/delete 覚え書

●operator new() のオーバーライドでC2660エラー MFCのコードをコンパイル中に、operator new() をオーバーライドしようとしてる箇所で、「operator new():3つ以上の引数は指定できません」とかわけのわからんエラーで怒られて困ることがあるが、これはMFC…

ExclusiveMMTimer(マルチメディアタイマーラッパ)

(2015年11月1日更新:以下、lc_timerCBの引数後ろ三つを、DWORDからDWORD_PTRへ修正。timeSetEventの第三引数が正しくreinterpret_castできないことがあったため) Win32のnative環境で高精度タイマーと言えばマルチメディアタイマーだが、今回はこのマルチメ…

WindowsFormアプリでのマウスホイールコールバックについて

C++/CLI でWindowsFormアプリ開発な場合、マウスホイールのコールバックは、デフォルトではFormのコールバックの中にない、というか見当たらない。だからわざわざ、Form作成時に呼ばれるLoadコールバックの中で、 this->MouseWheel += gcnew System::Windows…

OpenGL Simple Frame

OpenGLアプリをさくさくたくさん作りたいと常日頃から考えているのだが、OpenGLアプリを作成するたびに、フレームワークの中であちこちに散在する決められたコールバック関数の中に、毎回同じようににOpenGLの定番コードを、思い出しながらあるいは本やサイ…