mcrblog

vcpp-ml

2001年05月

31

[vcpp 00053411] Re: DAOとADO

佐藤@大分です。

On Thu, 31 May 2001 18:24:11 +0900
"おさるくん" <o...@spica.freemail.ne.jp> wrote:

>#import "C:\program files\common files\system\ado\msado15.dll" \
>          no_namespace \
>          rename( "EOF", "adoEOF" )
>のようにMS固有のC++拡張ディレクティブにより、
>タイプライブラリからCOMオブジェクトの情報をインポートしなければならないと思
>います。
>
>これ(Cドライブ限定)だと作成したプログラムを配布先した場合、
>動かない環境が出てくると思います。
>これを解決する方法をしりませんでしょうか。(MDACは配布先に入ってるとしま
>す。)

#import 文はタイプ情報やクラス ID などを取得するためのもので、
コンポーネントの存在場所を確定するためのものではありません。

使用するコンポーネントの存在場所は、アプリケーション実行時に
クラス ID を元に探されるので、実行環境上にコンポーネントが正
常に登録されているなら、特に問題はありません。

ですから、コンポーネントが
  コンパイルする環境: "C:\Prog..."
  実行する環境:       "D:\Prog..."
にあっても、正常に動作します。

--
Toshihiro Sato <t...@alles.or.jp>
31

[vcpp 00053410] DAOとADO


はじめまして、おさるくんといいます。

みなさまにお知恵をいただきたいのですが、
ODBCデータソースに登録していない。
MS-Access2000のデータ(*.mdb)にアクセスするプログラムを
作成しなければならなくなりました。
現在DAOとADOを使う方法を模索している状態です。
しかしながら、DAOは基本的(おまじないを書けば別)Access2000を
サポートしていません。
今後も、.NETになってDAOがどのようになるか不安なので
基本的にはADOを使用しようかと思っています。
調べ方が足りないのかも知れませんが
#import "C:\program files\common files\system\ado\msado15.dll" \
          no_namespace \
          rename( "EOF", "adoEOF" )
のようにMS固有のC++拡張ディレクティブにより、
タイプライブラリからCOMオブジェクトの情報をインポートしなければならないと思
います。

これ(Cドライブ限定)だと作成したプログラムを配布先した場合、
動かない環境が出てくると思います。
これを解決する方法をしりませんでしょうか。(MDACは配布先に入ってるとしま
す。)
やはりVBを使う方が簡単なのでしょうか?

以上よろしくお願いします。

開発環境はWIN2000PRO + VC++6.0SP5です。
31

[vcpp 00053409] Re: 自己参照するmapについて

いつもお世話になっております。
安藤@名古屋市北区在住です。

[vcpp 00053408] Re:  自己参照するmapについてにおいてToshihiko 'Chin' Ando
さん曰く

> class FooMap {
> public:
>   map<string,Foo> m_map;
> };


class FooMap : public map<string, Foo> { };
の方が良いかな?

動作検証していないけどきっと問題あると思う。

---------------------------------------------------------
Toshihiko 'Chin' Ando
mail : a...@ngy.3web.ne.jp
31

[vcpp 00053408] Re: 自己参照するmapについて

いつもお世話になっております。
安藤@名古屋市北区在住です。

[vcpp 00053386] 自己参照するmapについてにおいてyoshinoさん曰

> こんにちは、よしのです。

> 次のようなクラスを宣言したところ、
> E:\Program Files\DevStudio\VC\INCLUDE\utility(19) : error
> C2079: 'second' が 未定義の class 'Foo' で使用されています。
> とコンパイルエラーになってしまいました。

> map<string,Foo>ではなくmap<string,Foo*>にするとコンパイルが
> とおるのですがポインタではなく実現したいのです。が、どうした
> ら解決できるのかがわかりません。

> そもそもこのような構成はできないのでしょうか?
> アドバイスをよろしくお願い致します。


こんなのはどうでしょう?


#include <map>
#include <string>

using namespace std;

class FooMap;

class Foo {
private:
  FooMap* m_pFooMap;
public:
  Foo();
  ~Foo();
};

class FooMap {
public:
  map<string,Foo> m_map;
};


Foo::Foo()
{
  m_pFooMap = new FooMap();
}

Foo::~Foo()
{
  delete m_pFooMap;
}

void main (void) {
  Foo foo;
}


まじめな突っ込みはしないでね。

---------------------------------------------------------
Toshihiko 'Chin' Ando
mail : a...@ngy.3web.ne.jp
31

[vcpp 00053407] エクスプローラーからパスを取得

 いつもお世話になっております。苗木と申します。

 他のMLに投稿したものと、重複した内容にはなってしまうのですが、ま
ったく糸口がつかめない状態ですので、先に投稿させていただいたML
の方々にもvcppの方々にもまことに申し訳ないのですが投稿させてい
ただきました。

 エクスプローラー(Shell)へドロップした時、ドロップ先のウインドウが表
示しているパスを知りたいのですが、いい方法が見つかりません。ドロッ
プ先でなくても、エクスプローラー(Shell)からパスを取得できればいいの
ですが・・・
 エクスプローラーのウインドウハンドルは取得できますので、そのウイン
ドウハンドルからFindWindowEx等を使ってComboBox(アドレスバー)のウ
インドウハンドルを取得し、それからComboBoxの内容を取得すればいける
かと思ったのですが、ComboBoxにCB_GETCOUNTをSendMessageして
も正確な値が得られませんでした。
 あれれ?と思い、Spy++で調べたところ、WM_LBUTTONDOWNが
SendMessageされるまではComboBoxの保持しているリストは空っぽのよ
うです。
 [フォルダオプション]の[表示]で[アドレスバーにファイルのパスを表示
する]にチェックが付いていれば簡単に取得できるのですが、そのような
制限は設けられません。

 他に方法はないかと途方にくれていたのですが・・・

 もし、なにかいい方法があればと思い投稿させていただきました。
 皆様のお知恵をお貸しいただければ幸いです。
 ちなみに、SDKでもMFCでも、どちらでも結構です。
(MFCでは無理そうですが)

 以上、よろしくお願いいたします。

---------------------------------
Ryu Naeki <r...@hotmail.com>
---------------------------------
Windows2000 Professional SP1
InternetExplorer5.5 SP1
VisualC++6.0 SP4
記事検索
Amazon.co.jp
  • ライブドアブログ