ATL/WTL

このエントリーをはてなブックマークに追加
66デフォルトの名無しさん:2001/02/03(土) 00:06
>>58
なんで、ってそりゃIAudioMediaStream::CreateSampleみたいなのがあるからだろ。
たしかに凶悪だが、うそつき戻り値、っていわれるほどひどくはないと思うぞ。
67デフォルトの名無しさん:2001/02/03(土) 01:10
CComPtr自体をT*だと思えってことなんじゃないの。
もしかして T& CComPtr::operator*()なんじゃない?
68デフォルトの名無しさん:2001/02/04(日) 21:35
CComPtrオブジェクトのアドレスを得たい場合はどうすればいいの?
69デフォルトの名無しさん:2001/02/04(日) 23:31
>>68
よく知らんけど、それ多分スマートポインタでしょ?
CComPtrオブジェクト自体のアドレスなんかなにに使うんだ?
多分operator->()とかoperator=()とかもオーバーロード
掛かっていて、自身をT*と同じように扱えるのがスマート
ポインタの存在意義だと思うんだけど…

class Hoge{
public:
 void func(){//何か実装}
}

CComPtr<Hoge> a = new Hoge();
a->func();

多分こんな風に使うんでしょ?

つうか、こんなパターン覚えなよ。OOPやってるなら基本だよ。
70デフォルトの名無しさん:2001/02/05(月) 00:36
>>39
COM じゃ new 使えない。出力変数でやるから。
戻り値にポインタ返すスタイルじゃない分、
やや面倒というか美しくない。仕様だけど悲しい。

71デフォルトの名無しさん:2001/02/05(月) 01:19
あ、それ、俺もはまったことあるわ。
こんなことしようとして。

std::list<CComPtr> advsd_list;
ATLのイベントシンクがトホホなんもんで
std::listを使ってイベントシンクを自前で実装しようとしたらコンパイルエラーの嵐。
理由はSTLが T* T::operator&()を前提にしているから。(普通そうだよな)

しょうがないから自前でoperator&をオーバーロードしない、com_ptrを作っちゃったよ。
72デフォルトの名無しさん:2001/02/07(水) 09:42
ATLのコーディングスタイルってヘッダファイルに関数の実装を強要してくる部分があるんですが、これって違和感ないですか?
テンプレートクラスなら止むを得ないのですが、ユーザがコーディングする関数はテンプレートではないので意味無いし
インライン展開を期待しようにも、virtualをインライン展開してもしょうも無い。
ヘッダ直すとインクルードしているソースすべてコンパイルしなおさなきゃいけない。
唯一利点は宣言と実装が一まとめなので手間が省けるくらいかな。

あまり意味を感じないので手直しで.cppソースに書くようにしています。
みなさん、どうしてます?
73デフォルトの名無しさん:2001/02/07(水) 10:40
>>4
| templateという機能は、C++のあり方を変えるんだね。
| STLにしてもそうだけど、ライブラリの抜本的な再構築を
| うながすパワーを持ってる。

そして、プログラマは新たなお約束事に従い、新たなC++を覚えてゆく。
いままで培ってきたノウハウを活かすことができず、試行錯誤する。
プログラマは自身の経験を「継承」することができず、段階的に次に進めない。

これでよいのか?
74ななし:2001/02/07(水) 13:13
これでよいです。元は悪く、今が良いからです。
これほど改善された言語はないとおもふ。
75>71:2001/02/10(土) 21:00
CAdapt
76デフォルトの名無しさん:2001/02/10(土) 23:37
>>73
MFCに未来があればいいが、全くないぞ。
まぁ、WTLもないけどね。
77デフォルトの名無しさん:2001/02/11(日) 21:26
WTLって使ってる人少ないの?
全然スレッド育たないね。
78デフォルトの名無しさん:2001/02/11(日) 22:36
VC++にデフォルトで入ってないしね。
# しかも(MS内部の勢力争いのおかげで)今後も入る事はなさそうだし
79デフォルトの名無しさん:2001/02/13(火) 12:19
>71
その戻り値仕様、実は MS の STLつぶしだったりするかも。
80デフォルトの名無しさん:2001/02/14(水) 04:33
STLにもauto_ptrってスマートポインタがあるがこれもSTLには馴染まない。
81結局VB:2001/02/16(金) 23:03
みなさん、いつまでも面倒くさいだけの生産性の低い方法で、
高度なことしてるんだという気分に浸ってATLやWTLをやっていてください。
82デフォルトの名無しさん:2001/02/18(日) 22:04
VBチュウボウがあらわれた!
どうする?
83デフォルトの名無しさん:2001/02/19(月) 00:05
宿題済ませて早く寝ろ
84デフォルトの名無しさん:2001/02/19(月) 00:32
85結局C#:2001/02/19(月) 00:49
ATLはリソースリークのバグも見事に放置。
ATL作った中心人物もMSやめちゃったし。
(『ATLインターナル』でまえがき書いてる人ね。)

http://discuss.microsoft.com/SCRIPTS/WA-MSD.EXE?A2=ind0006E&L=ATL&P=R12450

WTLの扱いはご存知の通り。

どうするどうなる、ATL/WTL!?
86デフォルトの名無しさん:2001/02/19(月) 13:35
取りあえずATLも面倒すぎるから消えそうな感じやね。

JavaBeans や Delphiのコンポーネントぐらい簡単に作成できないと
広く普及しないんじゃないのかな?
87デフォルトの名無しさん:2001/02/19(月) 14:03
いや、ATLは残るだろ。
何かそんな事何かの記事に書いてあったよ。
88デフォルトの名無しさん:2001/02/19(月) 14:55
>87
どうかな?
まあ、ATL Serverまわりはしばらく安泰だろうけど。
89デフォルトの名無しさん:2001/02/19(月) 15:11
ATL7.0
90デフォルトの名無しさん:2001/02/23(金) 16:03
こんなとこがあったんだね。

http://groups.yahoo.com/group/wtl/
91デフォルトの名無しさん:2001/03/25(日) 05:26
ひさしぶりにageてみよう
92デフォルトの名無しさん:2001/03/25(日) 09:41
VS.NETでAttributeを使ってみたけど、すごく便利だね。
でも、時すでに遅しという感じもする...。
93名無しさん♯:2001/03/27(火) 11:59
WTLが単体でダウンロードできるようになったよ。

 ttp://discuss.microsoft.com/SCRIPTS/WA-MSD.EXE?A2=ind0103d&L=atl&F=&S=&P=10825
 ttp://msdn.microsoft.com/code/sample.asp?url=/msdn-files/027/001/586/msdncompositedoc.xml

それと、次のバージョンでVS.NETに対応するとのこと。

 ttp://discuss.microsoft.com/SCRIPTS/WA-MSD.EXE?A2=ind0103d&L=atl&D=0&P=6373

Nenadマンセー。ヽ(´ー`)ノ
94デフォルトの名無しさん:2001/03/27(火) 15:17
はて?ATL/WTLで .NET っつーことは・・・
COMコンポーネントがCLR対応になる???よくわからん
95デフォルトの名無しさん:2001/03/27(火) 18:58
COMコンポーネントの実装/利用がCLRでも問題ないですよ。
VB.NETでCOMコンポーネントをつくる/つかうとなると、他に選択子がないです。
9694:2001/03/27(火) 20:21
>>95
COMもCLRも抽象化層ですよね?
両方使う意義が理解できなくて混乱してます。はて????
9795:2001/03/27(火) 21:43
COMは抽象化(?)インタフェースでCLRは抽象化実装ということでは?

たとえばIStreamがデータを保存する先はファイルかもしれないし
ソケットかもしれないし、人間の胃袋かもしれない。
だけどどっかに保存するための抽象化されたインタフェースでしょ。

CLRはCLRをサポートするどのような実行環境でも実行できるよう
実装を抽象化しているんでしょ?
CLRで実装されたIStreamがファイルに保存するよう実装されていれば
CLRをサポートする実行環境でファイルに保存できる。
ソケットに保存するよう実装されていればソケットに保存できる。
胃袋に保存するように実装されていれば胃袋に保存できる。

そういうことでは?ちがう?
9894:2001/03/29(木) 20:53
>>97
ふーむ。なんとなくわかりました。
ただそこまで抽象化するとOS(Windows)なんて必要ないような気がしますね。
CLR使えばWinAPIが必要ないわけですし。
99デフォルトの名無しさん:2001/03/30(金) 18:00
あぎょ
100はじめまして:2001/03/30(金) 19:29
>98
OSなんて関係ないのをねらいにしているのでは?
もうすぐ64BitOSも出るでしょうから、その場合の移行をスムーズにするため
とも考えられます。
リコンパイルしなくても動作するように....
101デフォルトの名無しさん:2001/03/30(金) 21:15
違います、プロセッサの違いなんて関係ないのを狙っています。
すべてのプロセッサをMSの支配下にしようという魂胆です。
102デフォルトの名無しさん:2001/04/04(水) 02:31
http://www.clipcode.com/download/index.htm
wtlのドキュメントとサンプルコードがダウンロードできます。
103define:2001/04/08(日) 17:36
age
104デフォルトの名無しさん:2001/04/09(月) 14:22
おそらく日本で一番WTLの事を知っている人
http://hp.vector.co.jp/authors/VA016589/index_japanese.htm
105名無しさん♯:2001/04/09(月) 21:07
106デフォルトの名無しさん:2001/04/09(月) 21:15
107デフォルトの名無しさん:2001/04/10(火) 13:56
COM のクライアントで

for ( ; ; ) {

try {
IDTestPtr testPtr( _uuidof( Test ) );

ret = testPtr->method( arg1, arg2 );

cout << "1" << endl;

} catch ( _com_error &e ) {

}

cout << "2" << endl;

}

こんな感じのコードで試しているのですが、何回かループ回った
あと、 "1" を出力して止まってしまいます。

IDTestPtr かその継承元のデストラクタで止まっているという
ことなのでしょうかね? と、した場合にそれはどういった原因
が考えられるでしょう?

IDTestPtr testPtr( _uuidof( Test ) );

はループの外に出しといたほうが生成/破棄の無駄がないのかなぁ?
108デフォルトの名無しさん:2001/04/10(火) 18:36
>>107

IDTestPtr testPtr( _uuidof( Test ) );

ここが DCOM だったりした場合は、こんな風にループで
回すと接続に使う経路でポート番号とかを使い尽くして
止っちゃう可能性があると思う。どう止るかまでは知ら
ないけど。

ループの外に出せるならもちろん出しておいたほうが良
いに決まってると思う。ていうかそんなこと聞くなよ〜。
109デフォルトの名無しさん:2001/04/27(金) 06:16
gccやBCCでATL/WTLって使えるのかな?
それ以前に、WTLはあるけど、ATLが手に入らない・・・。
110デフォルトの名無しさん:2001/04/27(金) 23:07
gcc,bccはよくわからないが、classとuuidの関連付けをするための
機能がコンパイラにないとつらいと思う。
111名無しさん♯:2001/05/09(水) 10:02
WTL Makes UI Programming a Joy, Part 1: The Basics

 http://www.develop.com/downloads/wtlpart1.zip

WTL Makes UI Programming a Joy Part 2: The Bells and Whistles

 http://www.develop.com/downloads/wtlpart2.zip
112age:2001/05/24(木) 13:19
age
113デフォルトの名無しさん:2001/06/13(水) 13:35
age
114デフォルトの名無しさん:2001/06/16(土) 01:07
浮上
115デフォルトの名無しさん
sage