Masaki's Thinking Memo

しがない兼業プログラマの思いつきとTips
<< March 2017 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>

System::Stringから LPCTSTR (wchar_t*)へ変換

うまくいってるっぽいです。
String^ str = gcnew String("¥¥¥¥.¥¥PHYSICALDRIVE1");
wchar_t *wt = (wchar_t*)Marshal::StringToBSTR(str).ToPointer();

BSTRは頭にサイズがついてるはずなのだけど、
デバッガで見てうまくいってるようなのでメモ書き。
このエントリーをはてなブックマークに追加
VC++ | permalink | comments(0) | trackbacks(0) | pookmark |

マネージドな配列を、配列を引数にとるアンマネージドメソッドに渡す

VC++/CLI。blittable型要素の配列ならば、

pin_ptr<型> 変数名 = &配列名[0];
例:pin_ptr foo = &bar[0];

として、その変数(例ではfoo)をアンマネージドなメソッドに渡す。
このエントリーをはてなブックマークに追加
VC++ | permalink | comments(0) | trackbacks(0) | pookmark |

WORD, DWORD, WINAPIが未定義

自分はVC++はMFCから入ったヘタレなので、C++/CLIでラッパを作ろうとしたときに
掲題の内容のエラーを平気で出す。エラー自体は
error C2146: 構文エラー : ';' が、識別子 'xxxxx' の前に必要です。
といったものになる。見てみると未定義。orz...

ちゃんとwindows.hをインクルードしましょう。
メモ書きでした。
このエントリーをはてなブックマークに追加
VC++ | permalink | comments(0) | trackbacks(0) | pookmark |

DEBUG_NEW.h が見つからない

#ifdef _DEBUG
#define new DEBUG_NEW

の後にうっかりインクルードを記述。orz..
このエントリーをはてなブックマークに追加
VC++ | permalink | comments(0) | trackbacks(0) | pookmark |

スピンボタンコントロールと GetDlgItemInt

VC++2005SP1のみで確認。MFCのスピンボタンコントロール。
SetRangeで(min ,max) = (0 ,1023)を指定して、増加ボタンをクリックし続けると
GetDlgItemIntでは1000を超えると1になった。
GetDlgItemをして、GetPosでは1000以上でもその値が帰ってくる。
GetDlgItemIntの存在を意識したのが2,3日前なので何かが分かっていないんだろうけど
とりあえずメモ書き。

ちなみにスピンボタンが初期状態で感覚的にボタンと逆方向に数値が変化するのは
範囲指定が(min, max) = (100, 0)になっているから。
このエントリーをはてなブックマークに追加
VC++ | permalink | comments(0) | trackbacks(0) | pookmark |

Microsoft Visual C++ 2005 再頒布可能パッケージ

※2009/11/14 追記
VC++2008関連はこちら

※2007/07/13 追記
2007/07/03に再公開されています。

※2007/06/18 追記
コメントを頂いているとおり、日本語版は公開停止しているようです。

※2007/04/27 追記
コメントをいただいているとおり、掲題のパッケージは公式に配布されるようになりました。
日本語版(ライブラリ自体が言語間で異なるのかどうかは確認していません)は

Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86)

です。
ryou[]さん、教えてくださりありがとうございます。

以下は上記パッケージ未公開当時の記事です。

---- ここから ----

Microsoft Visual C++ 2005 再頒布可能パッケージ (x86)用


上記でダウンロードできるものは、サービスパックを当てる前のVC8 (for x86)用だ。
SP1適用後のVisualStudio2005で作成したバイナリ実行の際、上記を適用していても
「配置が悪い、再インストールがどうのこうの…※」というエラーになる。

※2007/02/02追記 「このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした。アプリケーションを再度インストールすることにより問題が解決する場合があります」

最新の再頒布可能パッケージは、VisualStudio2005 SP1がインストールされているPCの
C:¥Program Files¥Microsoft Visual Studio 8¥SDK¥v2.0¥BootStrapper¥Packages¥vcredist_x86 (x86版の場合)
の下にある。

ちなみにSP1対応再頒布パッケージの製品バージョンは2.0.50727.762。
インストールすると、C:¥Windows¥WinSxS の下にアセンブリ名、バージョンを名前に含むフォルダが出来る。

Web上では2007/2/1現在公式には公開されていない模様で、
「Microsoft Visual C++ 2005 再頒布可能パッケージ SP1」
「Microsoft Visual C++ 2005 Redistributable Package (x86) SP1」
等で検索すると、個人で公開していたりする。

このエントリーをはてなブックマークに追加
VC++ | permalink | comments(6) | trackbacks(0) | pookmark |

STLPort インストール for VS2005

メモ書き。STLPort5.1.0の場合。
1. cmd.exeでSTLPort-5.1.0¥build¥lib へフォルダ移動
2. "configure -c msvc8" を実行(他の環境は "configure --help" 参照)
3. "C:¥Program Files¥Microsoft Visual Studio 8¥VC¥bin¥vcvars32.bat" を実行
4. "nmake /fmsvc.mak install" を実行
このエントリーをはてなブックマークに追加
VC++ | permalink | comments(0) | trackbacks(0) | pookmark |

VisualStudioのウォッチウィンドウでレジスタ値を変える

「レジスタウィンドウで表示されるレジスタ値は変更できないのか?」
と思い探していたら、レジスタ名に'@'を付ければウォッチウィンドウで
表示・変更することが出来ることが分かった。

例:EAX → @eax
このエントリーをはてなブックマークに追加
VC++ | permalink | comments(0) | trackbacks(0) | pookmark |

VS2005 Standard買いました

会社に「導入は別にいいのだけど予算がない」といわれて、
VS2005 Standardを家内承認もらって購入。
VC++2005Expressを持っていればアップグレード版で問題ないそうなので、16k円程度で購入。
発表後半年にてやっと使用。
VC++は変な文法を追加するが.NETFrameworkが使いやすくなっているそうで。
プロジェクトのプロパティをみているとOpenMPのサポートOnOffが出来るようになっていた。
後はコードや、コード説明用関数ヘッダ等のフォーマットを事前登録しておいて
それを呼び出すあたりなど充実していて、ユーザマニュアルはほとんどそういった
VisualStudioのカスタマイズプログラミングの話題で埋まっていた。

VC++にはリファクタリング機能が搭載されていないので、Ref++というツールをインストールして
あわせて試用中。

VC#併用しながら手早くツールを作れるよう、使いこなしたいと思う。
このエントリーをはてなブックマークに追加
VC++ | permalink | comments(0) | trackbacks(0) | pookmark |

マウスドラッグで選択している領域を囲う矩形(四角枠)の表示

領域指定をするのにマウスドラッグした際、指定している領域を囲う枠を表示するなら以下の関数が便利。

cdcのDrawDragRectは先回描いた矩形を消去し、今回の矩形を描く。


  CRect cr, crlast;
  CWindowDC dc(this);
  SIZE s;s.cx = 1; s.cy=1;
  … 省略 …
  dc.DrawDragRect(cr, s, crlast, s, NULL, NULL);


上記crlastには前回描画した矩形の座標を入れる。
(初回の描画時にはNULLとする。)
SIZEで指定するのは線の太さ(x方向の太さ、y方向の太さ)
(上で最初に出てくるsは今回、次のsは先回の矩形に対応)
このエントリーをはてなブックマークに追加
VC++ | permalink | comments(0) | trackbacks(0) | pookmark |