トップページ⇒tech
115コメント34KB

ATL/WTL

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
MSのテンプレートライブラリであるATLとWTLについて語るスレッドです
006563NGNG
ありがとうございます。まだ何の事か判りませんがそれを手がかりに早速調べてみます。
0066デフォルトの名無しさんNGNG
>>58
なんで、ってそりゃIAudioMediaStream::CreateSampleみたいなのがあるからだろ。
たしかに凶悪だが、うそつき戻り値、っていわれるほどひどくはないと思うぞ。
0067デフォルトの名無しさんNGNG
CComPtr自体をT*だと思えってことなんじゃないの。
もしかして T& CComPtr::operator*()なんじゃない?
0068デフォルトの名無しさんNGNG
CComPtrオブジェクトのアドレスを得たい場合はどうすればいいの?
0069デフォルトの名無しさんNGNG
>>68
よく知らんけど、それ多分スマートポインタでしょ?
CComPtrオブジェクト自体のアドレスなんかなにに使うんだ?
多分operator->()とかoperator=()とかもオーバーロード
掛かっていて、自身をT*と同じように扱えるのがスマート
ポインタの存在意義だと思うんだけど…

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

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

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

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

0071デフォルトの名無しさんNGNG
あ、それ、俺もはまったことあるわ。
こんなことしようとして。

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

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

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

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

これでよいのか?
0074ななしNGNG
これでよいです。元は悪く、今が良いからです。
これほど改善された言語はないとおもふ。
0075>71NGNG
CAdapt
0076デフォルトの名無しさんNGNG
>>73
MFCに未来があればいいが、全くないぞ。
まぁ、WTLもないけどね。
0077デフォルトの名無しさんNGNG
WTLって使ってる人少ないの?
全然スレッド育たないね。
0078デフォルトの名無しさんNGNG
VC++にデフォルトで入ってないしね。
# しかも(MS内部の勢力争いのおかげで)今後も入る事はなさそうだし
0079デフォルトの名無しさんNGNG
>71
その戻り値仕様、実は MS の STLつぶしだったりするかも。
0080デフォルトの名無しさんNGNG
STLにもauto_ptrってスマートポインタがあるがこれもSTLには馴染まない。
0081結局VBNGNG
みなさん、いつまでも面倒くさいだけの生産性の低い方法で、
高度なことしてるんだという気分に浸ってATLやWTLをやっていてください。
0082デフォルトの名無しさんNGNG
VBチュウボウがあらわれた!
どうする?
0083デフォルトの名無しさんNGNG
宿題済ませて早く寝ろ
0084デフォルトの名無しさんNGNG
井の蛙、大海を知らず。
http://mentai.2ch.net/test/read.cgi?bbs=prog&key=980836651
0085結局C#NGNG
ATLはリソースリークのバグも見事に放置。
ATL作った中心人物もMSやめちゃったし。
(『ATLインターナル』でまえがき書いてる人ね。)

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

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

どうするどうなる、ATL/WTL!?
0086デフォルトの名無しさんNGNG
取りあえずATLも面倒すぎるから消えそうな感じやね。

JavaBeans や Delphiのコンポーネントぐらい簡単に作成できないと
広く普及しないんじゃないのかな?
0087デフォルトの名無しさんNGNG
いや、ATLは残るだろ。
何かそんな事何かの記事に書いてあったよ。
0088デフォルトの名無しさんNGNG
>87
どうかな?
まあ、ATL Serverまわりはしばらく安泰だろうけど。
0089デフォルトの名無しさんNGNG
ATL7.0
0090デフォルトの名無しさんNGNG
こんなとこがあったんだね。

http://groups.yahoo.com/group/wtl/
0091デフォルトの名無しさんNGNG
ひさしぶりにageてみよう
0092デフォルトの名無しさんNGNG
VS.NETでAttributeを使ってみたけど、すごく便利だね。
でも、時すでに遅しという感じもする...。
0093名無しさん♯NGNG
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マンセー。ヽ(´ー`)ノ
0094デフォルトの名無しさんNGNG
はて?ATL/WTLで .NET っつーことは・・・
COMコンポーネントがCLR対応になる???よくわからん
0095デフォルトの名無しさんNGNG
COMコンポーネントの実装/利用がCLRでも問題ないですよ。
VB.NETでCOMコンポーネントをつくる/つかうとなると、他に選択子がないです。
009694NGNG
>>95
COMもCLRも抽象化層ですよね?
両方使う意義が理解できなくて混乱してます。はて????
009795NGNG
COMは抽象化(?)インタフェースでCLRは抽象化実装ということでは?

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

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

そういうことでは?ちがう?
009894NGNG
>>97
ふーむ。なんとなくわかりました。
ただそこまで抽象化するとOS(Windows)なんて必要ないような気がしますね。
CLR使えばWinAPIが必要ないわけですし。
0099デフォルトの名無しさんNGNG
あぎょ
0100はじめましてNGNG
>98
OSなんて関係ないのをねらいにしているのでは?
もうすぐ64BitOSも出るでしょうから、その場合の移行をスムーズにするため
とも考えられます。
リコンパイルしなくても動作するように....
0101デフォルトの名無しさんNGNG
違います、プロセッサの違いなんて関係ないのを狙っています。
すべてのプロセッサをMSの支配下にしようという魂胆です。
0102デフォルトの名無しさんNGNG
http://www.clipcode.com/download/index.htm
wtlのドキュメントとサンプルコードがダウンロードできます。
0103defineNGNG
age
0104デフォルトの名無しさんNGNG
おそらく日本で一番WTLの事を知っている人
http://hp.vector.co.jp/authors/VA016589/index_japanese.htm
0105名無しさん♯NGNG
http://discuss.microsoft.com/SCRIPTS/WA-MSD.EXE?A2=ind0104a&L=atl&D=0&P=26002
0106デフォルトの名無しさんNGNG
次のバージョンは夏頃?

ttp://discuss.microsoft.com/SCRIPTS/WA-MSD.EXE?A2=ind0104a&L=atl&D=0&P=26200
0107デフォルトの名無しさんNGNG
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 ) );

はループの外に出しといたほうが生成/破棄の無駄がないのかなぁ?
0108デフォルトの名無しさんNGNG
>>107

IDTestPtr testPtr( _uuidof( Test ) );

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

ループの外に出せるならもちろん出しておいたほうが良
いに決まってると思う。ていうかそんなこと聞くなよ〜。
0109デフォルトの名無しさんNGNG
gccやBCCでATL/WTLって使えるのかな?
それ以前に、WTLはあるけど、ATLが手に入らない・・・。
0110デフォルトの名無しさんNGNG
gcc,bccはよくわからないが、classとuuidの関連付けをするための
機能がコンパイラにないとつらいと思う。
0111名無しさん♯NGNG
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
0112ageNGNG
age
0113デフォルトの名無しさんNGNG
age
0114デフォルトの名無しさんNGNG
浮上
0115デフォルトの名無しさんNGNG
sage
■ このスレッドは過去ログ倉庫に格納されています