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

ATL/WTL

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
MSのテンプレートライブラリであるATLとWTLについて語るスレッドです
0002名無しさん23NGNG
WTLは、ATL作った奴らが過剰な自信と暇つぶしのために作った
ものだと漠然と思ったりするのですが、どうなんでしょう?
0003デフォルトの名無しさんNGNG
WTLがどういう経緯で作られたかは知らんが、MFCよりはるかにマシなライブラリであることは事実なのでありがたく使いましょう。
0004名無しさん23NGNG
templateという機能は、C++のあり方を変えるんだね。
STLにしてもそうだけど、ライブラリの抜本的な再構築を
うながすパワーを持ってる。
まあVisualStudioの次の版に入ってたらいいね。>WTL
ちょっと使ってみよう。
0005デフォルトの名無しさんNGNG
とあるWTL MLからの引用。

> I attended the midnight madness at vcdc tonight. Tony Goodhew (sp?)
> the product manager for VC++ was there. He was posed the question
> about WTL and its future. What he was very clear to state DO NOT USE
> WTL. He said that it was a sample app that accidently escaped M$. He
> said that he wishes that it would have not left M$ and he is angry
> that it got out. He also said that it is NOT supported by M$ or nor
> will it ever be. He said that they had no intentions to ever add any
> features to it, and that it does not fit into the vision for .NET.
> Also he said that eventually ATL will include windowing support, but
> it will not be implemented as WTL (implying that he did not like the
> way it was done <my interpretation>). Then he repeated about five
> times DO NOT USE WTL.
0006デフォルトの名無しさんNGNG
とあるインタビューからの引用。

> Osborn:
>  On another subject, there seems to be a fair amount of developer
>  interest in the Windows Template Library (WTL) that Microsoft
>  released in the latest platform SDK [WTL is a C++ template library
>  for building Windows applications and is viewed by some
>  developers as an alternative to the Microsoft Foundation Classes. -
>  JO]. Does Microsoft have plans to support or add to it?
>
> Goodhew:
>  WTL is code that was released unsupported and we have no
>  intention of updating it. We have no intention of continuing its
>  availability. Frankly, it should never have been released and it will
>  be removed from the platform SDK at the time of the next SDK
>  revision.
>
> Osborn:
>  What would you think about an outside group adopting WTL and
>  maintaining it as an open source development project?
>
> Goodhew:
>  Anyone can create his or her own template libraries. There are very
>  successful third-party companies that market their own template
>  libraries and their own class libraries for C++. We're not going to do
>  that. The WTL is something that we are not going to support or
>  continue at Microsoft.
0007デフォルトの名無しさんNGNG
>>5-6
そうなの?
0008デフォルトの名無しさんNGNG
要するにWinFormsを使えってことか?
0009デフォルトの名無しさんNGNG
逝ってよし!!! > Goodhew
0010名無しさん@お腹いっぱい。NGNG
調べなくて良かったよ。
0011デフォルトの名無しさんNGNG
はい、このスレ、しゅ〜りょ〜
0012デフォルトの名無しさんNGNG
なんかWTLを応援したくなったよ
0013デフォルトの名無しさんNGNG
応援したいっていうかMFCより速いし軽い
0014デフォルトの名無しさんNGNG
>>5-6
WTLの作者、Nenad Stefanovic氏のコメントです。

> Those statements were given by Tony Goodhew. He is a program manager in VC
> group and has nothing to do with WTL. Please don't listen to him, he appears
> to have some personal issue with WTL and his behavior is not correct at all.
> It is all crazy, unfortunately.
>
> WTL will not be killed and the new version will ship in the Platform SDK
> soon. It will not ship is VC7, and it will remain unsupported. As for
> windowing in ATL, I don't know when or how will that be added.

new versionってのは3.1のことね。
001514NGNG
もう1つNenad氏のコメント。

> I'd like to point out that negative comments about WTL come from one person
> (you know who), and not from all of MS. As I said before, WTL will continue
> to be available. New version is expected to ship in the Whistler Beta
> Platform SDK release.

要するに、Tonyは.NETのマーケティングをやってる人間で、
WTLが注目を浴びてるのが気に食わないのでしょう。
0016デフォルトの名無しさんNGNG
がんばれステファノビッチ
0017デフォルトの名無しさんNGNG
MSって社内でも競争体制取らせてるみたいね。
OfficeもNetdocs(だっけ、Outlook+Wordみたいなもん)と
かち合ってるし。
0018デフォルトの名無しさんNGNG
営業部隊と技術部隊の確執ということか?

よくあることなんだろうけど、
部外者を必要以上に巻き込まないでほしいね。
0019デフォルトの名無しさんNGNG
全くしょうがねえなー
MSにも落とし入れようとする奴っているんだな。
MSも成熟して来たって言う証拠だな。
0020デフォルトの名無しさんNGNG
やなもん見ちまったな
0021デフォルトの名無しさんNGNG
意外な形で盛り上がったな(わら
0022デフォルトの名無しさんNGNG
Tonyの名は一躍有名になったな。
よかったじゃねえか(ワラ
0023デフォルトの名無しさんNGNG
Tony Goodhewって、日経ソフトウェア10月号に出てるぞ。
「C#使え」って勧めてる。(藁
0024デフォルトの名無しさんNGNG
http://www.zdnet.co.jp/news/0006/29/msc.html
0025デフォルトの名無しさんNGNG
>>24
>C#はVisual CとVisual C++に新機能を付け加えたものだ。

Tonyすげえな(わら

#Visual Cってなに?
0026デフォルトの名無しさんNGNG
しかし、こんな裏事情があったとはね。
>>5-6,>>14-15 も実はM$社員同士の対立だったりして。(w
0027デフォルトの名無しさんNGNG
>>26
だからそうだろ
0028デフォルトの名無しさんNGNG
The Microsoft products listed above do not support the Weitek WTL 4167 chip set.
The Weitek WTL 4167 math coprocessor is a set of three chips used as a replacement for the Intel 80387 math coprocessor.
Our math coprocessor libraries only support Intel's 80x87 math coprocessors.
If you wish to use the Weitek WTL 4167 math coprocessor with a Microsoft compiler, you must obtain a third party library that supports it.
0029Weitek WTL 4167チップセットってなに?NGNG
上に記載されたマイクロソフト製品はWeitek WTL 4167チップセットを支持しない.
Weitek WTL 4167数学コプロセッサはインテル80387数学コプロセッサに交換として使用される3個のチップのセットである.
我々の数学コプロセッサライブラリはインテルの80x87数学コプロセッサをサポートするだけである.
マイクロソフトコンパイラがあるWeitek WTL 4167数学コプロセッサを使用することを願うならば, あなたはそれを支持する第三者ライブラリを得なければならない.
0030デフォルトの名無しさんNGNG
>28
ワラタ
0031デフォルトの名無しさんNGNG
age
0032デフォルトの名無しさんNGNG
WTLをSDKでは無く、VC++に入れるべきだとする意見もあるようだな。
0033デフォルトの名無しさんNGNG
う〜む。
0034デフォルトの名無しさんNGNG
ttp://www.geocities.com/edge_ch/download.html
0035デフォルトの名無しさんNGNG
http://www.geocities.co.jp/SiliconValley-Oakland/8462/wtlsocktest.zip

WTL(ATL?)でもWinsock1.1の非同期ソケットが使えるか確かめてみた。
0036デフォルトの名無しさんNGNG
age
0037デフォルトの名無しさんNGNG
Tony発見!!!

http://discuss.develop.com/archives/wa.exe?A2=ind0011b&L=dotnet&F=&S=&P=90605
0038デフォルトの名無しさんNGNG
>>37の内容

Tony said:
"WTL is a totally unsupported sample. Microsoft recommends that you do not use it. "

相変わらずだな、Tony
0039デフォルトの名無しさんNGNG
WTLはVC++.NETではコンパイルできないらしい。

 http://discuss.microsoft.com/SCRIPTS/WA-MSD.EXE?A2=ind0101c&L=atl&F=&S=&P=15137

これもTonyの陰謀か?(藁
0040デフォルトの名無しさんNGNG
Microsoftの良くやる手口ですね、、、って自社製品にまで使ってどうする・・・
0041デフォルトの名無しさんNGNG
TonyはなにをそんなにWTLを嫌ってるんだ?
もしかして、.NETとかみ合わないから?
じゃあ、なぜWTLは.NETでサポートできないんだ?
0042デフォルトの名無しさんNGNG
だれかTonyに
Why do you dislike WTL?
と言ってやれ。
0043デフォルトの名無しさんNGNG
Tonyもまさか、こんなところでたたかれているとは知らないだろうな。
0044デフォルトの名無しさんNGNG
Tonyはドキュソ決定
0045デフォルトの名無しさんNGNG
http://www.zdnet.co.jp/eweek/0101/24/01012401.html
0046デフォルトの名無しさんNGNG
Tony=MSの総会屋(笑
0047デフォルトの名無しさんNGNG
勉強を始めたばかりです。
こんな感じて試験的に作ったオブジェクトを
class ATL_NO_VTABLE HogeImpl :
 public CComObjectRootEx<CComSingleThreadModel>,
 public CComCoClass<HogeImpl, &CLSID_Hoge>,
 public IDispatchImpl<IHoge, &IID_IHoge, &LIBID_TestActiveX>
{
public:
 HogeImpl(){}
 DECLARE_THREADING_MODEL(otApartment);
 DECLARE_PROGID("TestActiveX.Hoge");
 DECLARE_DESCRIPTION("実験");
BEGIN_COM_MAP(HogeImpl)
 COM_INTERFACE_ENTRY(IHoge)
 COM_INTERFACE_ENTRY2(IDispatch, IHoge)
END_COM_MAP()
};

親の公開されたメソッドから作成したいのですが
STDMETHODIMP TTestActiveX::NewHoge(IHogePtr* hoge)
{
ここにどう書けばいいでしょう?
}
004847NGNG
MSDNのDrGUIから
>ATL でよく発生するエラーには、実装したクラス(HogeImpl)を対象に new を呼び出してオブジェクトを作成しようとした場合があります。この場合は、奇妙なエラーが発生して失敗します。オブジェクトを作成するには、CoCreateInstance を使用してください。

をやっと見つけました。
しかしCoCreateInstanceとは何ぞや? 先は長いかなぁ
0049デフォルトの名無しさんNGNG
あれ?MSのサーバはまたダウンしていました?
http://msdn.microsoft.com/library/specs/S1D179.HTM
005047NGNG
>>49 い〜じ〜わ〜るぅ〜ん

*(void **)hoge=NULL;
HRESULT hr=CoCreateInstance( CLSID_Hoge,NULL,CLSCTX_ALL,IID_IHoge ,(void **)hoget);

でとりあえずエラーは出なくなった
005147NGNG
HogeInp1 クラスに TTestActiveX *Parent; をpublicで追加して


STDMETHODIMP TTestActiveX::NewHoge(IHogePtr* hoge)
{
*(void **)hoge=NULL;
HRESULT hr=CoCreateInstance( CLSID_Hoge,NULL,CLSCTX_ALL,IID_IHoge ,(void **)hoget);
(*hoge)->Parent=this;
return S_OK;
}
とかやりたいのだけど当然ダメだ。しょうがないから
STDMETHOD(SetParent(TTestActiveXPtr obj));
を HogeInp1に追加して
(*hoge)->SetParent(this);
にしたら良さそうと思ったが

HogeImp::SetParent(TTestActiveXPtr obj)
{
/*もしかしたら参照カウンタをインクリメントする必要があるかもよ */
}
とコメントがある。 ん〜?

という事はここでAddRefして IHogeが消えるときにReleaceすべきなんだろうか?
いやでも、それは勝手にATLがやってくれてないの?
005247NGNG
>いやでも、それは勝手にATLがやってくれてないの

あ! いや、かってにやってくれるのは IHogeの参照についてか!

という事はやっぱり AddRef/Releaceは要るんだろうな
005347NGNG
なんかなあ、C++Builderってのが失敗かなあ
Delphi本にはATLの説明ないし

ActiveX本は3冊買ったけどMFCとセットだもんだからさっぱり判らん
0054デフォルトの名無しさんNGNG
CoCreateInstanceとは何ぞやとか言ってるようでは、
開発環境云々以前の問題だろ。
ATL使いたいならATLの本買えよ・・・。
0055デフォルトの名無しさんNGNG
C++ BuilderでATLつかえるんだ。
005647NGNG
>>54 ATLを使いたいというより、自動的に吐かれたATLコードが判らん状態
   ActiveXを使うだけなら貼り付けるだけなのでCoCreateInstanceは始めて
   見たのじゃ そう責めないでおくれよ。これから勉強するから

>>55 カタログにはMFCも使えるとあるんだけど、よく判らん
   買ったActiveXにあるATLコードに 自動作成されたコードが とても似て
   るからATLなんだろうと思ってるんだけど、そもそもそれが勘違いなのかも
0057>>56NGNG
CComPtr等のスマートポインタを使えば、AddRef等考えなくていいんじゃ〜
0058デフォルトの名無しさんNGNG
CComPtrつかえねぇーよー

とくにこれは極悪すぎ。
T** CComPtr::operator&()

なんでoperator&の戻りがT**なんだ?
普通、こんなoperatorをしかもうそつき戻り値でオーバーロードしねーぞ >>MS
0059デフォルトの名無しさんNGNG
>>51
普通、インタフェースを渡す側がAddrefして、
受け取った側はAddrefされていると思って使う。
いらなくなったらReleaseする。
QueryInterfaceが典型的な例だね。
0060デフォルトの名無しさんNGNG
>>58
じゃ_com_ptrをつかえよ。
それがいやじゃったら、使うな。
006147NGNG
>>57 いや、だからまだMFC判らんのよ

>>59なるほど。しかし渡す側が自分なものだからややこしい
  自分で自分をAddrefしてから渡せばいいのか?


DelphiだとActiveXでも普通のフォーム使うのと変わらん簡単お手軽なのに
C++Builderだとなんかラッパと2つに分かれているからワケワカ状態
Implが付いてるかだけで同じソース上に混在するから、
m_VclCtlからラップ元を辿ればいいといってもさ、すぐ頭が混乱

ダメだな-->自分
0062デフォルトの名無しさんNGNG
>>60
_com_ptrって、な〜に〜?
http://www.asia.microsoft.com/japan/developer/library/vclang/_pluslang__com_ptr_t.htm _com_ptr_tなら知っているけど (藁

Interface** _com_ptr_t::operator&()
結局同じじゃねぇーかよ。良く調べてから言えよな (藁
0063デフォルトの名無しさんNGNG
こんにちは、私もATLを使わなければなりません
さて、Webページからファイル(データ)を引っ張って来たいの
ですが、どうすればいいでしょう? <PARAM >タグとかで指定
されたファイルを落として来たいのです。
キーワードの一部でもご指導願えれば有り難いです
0064デフォルトの名無しさんNGNG
>>63
CreateURLMoniker
■ このスレッドは過去ログ倉庫に格納されています