パソコン・メモメモ備忘録

気の向くままパソコン関係等で気になることを書き記す。時々更新!

prog

[C++] #include

久々に一からプログラムを書いたら、異常に面倒に思えたのが #include。旧態依然な代物ではないだろうか。せっかく namespace など導入しているのなら、各クラスはグローバルにデータベースで管理して、いちいち #include を書かないとライブラリが使えない…

テンプレート関数の明示的な実体化

実体化は、インスタンシエーションとかインスタンス化とかとも呼ばれたりする。テンプレートクラスのメソッドや普通のクラスのテンプレートメソッドの宣言を .h、実装を .cpp ファイルに分けて書いたりすると、ちょっと困ったことが起こる場合がある。そのメ…

関数内関数

C++ では、直接は関数内関数定義は使えないが、関数内クラス宣言を使うと近いものができる。

VisualStudio 2005 インストール

今日は愚痴だけ。今更ながら VisualStudio 2005 を仕事でインストールした。そうすると、今まで使ってきた VisualC++.NET 2003 での開発に問題が出た。プロジェクトのプロパティの各項目が表示エディットできなくなってしまったのだ。プロパティのダイアログ…

IE コンポーネントでページからリンクを抽出

たまにはプログラムの話題を。CWebBrowser2 で読み込んだページからリンクをすべて抽出しようとしたので、ポイントを書いておこう。 ・ get_document() で HTMLDocument → get_all() で HTMLElementCollection ・ HTMLElementCollection から item() で HTML…

heixel の読み方がわからない

画像の1画素を pixel ピクセルと呼ぶ。テクスチャ画像の1画素を texel テクセルと呼ぶ。のが業界のデファクトスタンダードだと思っている。ここで、高さマップ(HeightMap) の1要素(高さを値として持つ)はなんと呼ぶのだろうか。高さマップはテクスチャ画…

CWebBrowser2 で スクリプトエラーのダイアログを抑止する

よくある話ですが、今回もかなり調べまくって見つかった答えはあまりに簡単という結末。 CWebBrowser2& Browser; のとき、 Browser.put_Silent(true); こんだけ。 ActiveX コンポーネントの WebBrowser オブジェクトを MFC でラップした CWebBrowser2(デフォ…

POST ができた

いわゆるユーザネームとパスワードを入れてログインする Web ページがある。これを自動でログインできるようにしようとすると、POST という http の操作ができる必要があるらしい(GET でやってるばあいもあるらしいが)。IWebBrowser2 の Navigate2() でで…

CWebBrowser2 の DocumentComplete でページトップか判別

すげぇピンポイントのノウハウだと思うが。もし役に立つ人がいれば。MFC で WebBrowser オブジェクト(コントロール?)をラップして使っている場合、DocumentComplete イベントで呼び出されるメソッドを作るのは簡単(だけどやり方わかるまで結構大変だった…

文字列の形式変換

MSDN の 「方法 : さまざまな文字列型間で変換する」。

IE コンポーネント

最近なぜか WebBrowser をコントロールするプログラムを書いていたりする。IE コンポーネントを使うのが楽。世の中に IE コンポーネントを使った Web ブラウザは多々あるのだが、思ったより資料が見つからない。MSDN の英語のドキュメントを読めば色々な情報…

今日のひっかかり

最近 stringstream がお気に入りなのだが、中身を空っぽにする方法が良くわからない。強引な技としては、 std::stringstream ss; ss.str(""); //これで初期化されるだそうだ。ちなみに、stringstream から const char* な文字列を得るには ss.str().c_str()…

ダイアログベースアプリでの OnIdle

もういっちょプログラミングネタ。今日は日曜プログラマなのだ。未だに MFC でプログラミング...(ネット上で資料が多いんだもん)CDialog の WindowProc をオーバーライドして、 #include と if (message == WM_KICKIDLE) { OnIdle(); }てのを加えればOK…

C# に挑戦 2

もう一箇所ひっかかったのでメモっておく。 先の記事に書いたように、PictureBox の大きさが、フォームの ClientRectangle より小さくなったときに、フォームの真ん中に PictureBox が表示されるようにするために、PictureBox.Location を変えることにした。…

C# に挑戦

会社で C# なプログラムを作っていて、そのメンテナンスというかデバッグというかのために、ちょっと中を見てみた。かなり C++ に近い表記なので、読むのには特に面倒は無いのだが、やはり .NET Framework は知識がないとわかりづらい。やりたかったのは、画…

今日の引っかかり

VC++.Net2003 で、というか WindowsXPSP2 で、一度に大きいメモリ領域を new や malloc で確保しようとすると失敗してしまった。これはよくある話で、一部の dll がメモリ空間上の特定の位置に居座るため、空きメモリ空間が分断されているのが原因らしい。ま…

今日の引っかかり

今日もデバッグしていて、しょーもないミスを発見したので、メモメモ。 boost::bind() を使っていて、関数に std::vector array の参照を渡すのに boost::bind(func, array) と書いてしまっていた。array のコピーが渡されるので、全然違う結果に。 boost::b…

usertype.dat

VisualStudio の便利機能。

プリコンパイルヘッダー in VC++.NET 2003

メモ

boost::bind

以前書いた関数オブジェクトを使う実装は boost::bind でもっと簡単に書けることを知った。 template<typename T> void Class_A::Scanner(T func) { foreach() { func(x); } }に対して、メンバ関数の void Class_A::CountUp(unsigned int iIdx) { ... }を func として渡</typename>…

boost::serialize での失敗

またとほほなミスがわからず時間を無駄にしてしまった。普通にここを参考に実装してみた。ところが、text_archive や xml_archive だとうまく行くのに、一番やりたかった binary_archive がうまく動かず。save はいけるのだが、load が途中で例外を吐いて止…

boostのメルセンヌツイスター

無知な私のメモ。乱数が欲しくなったので、MersenneTwisterを使ってみようと調べた。boost はすでに入れているので、boost/ramdom.hpp を使うのが楽そう.. と思ったのだが使い方がさっぱり。あるクラスのメンバに乱数発生器として持たせ、そのクラスのメソ…

VC++テンプレート関係

実は、テンプレートについては良く知らない。関数オブジェクトを使ってみた。その記録(わかっている人には当たり前のこと。某氏よりの「プログラムするならその言語の仕様書には目を通せ」という言葉が突き刺さる)。関数オブジェクトを使おうと思ったのは…