ATL 相談室

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
テンプレートをベースにしたC++ライブラリ、ATL
(ATL Serverでは XML Webサービス、Webアプリケーション、
サーバーアプリケーションが作成できるらしい。)
について語りましょう。
             __
                /〃 ┼‐┼〃__
             /\    ノ                __
                      __  , -――-、  /\ノ
                      ヽ/\l::::::::::::::::::::\ /: : /
         ,..-―-、/)       |: : :|::::::::::::::::::::::/: : /
     /⌒Y    (_ノ  /)       |: : :|:::::::::::::::::::::|: : : /
      ̄l ̄l、     ) /`〉     ヽ:: :|::::::::::::::::::::l: : :/
         l: : :`ー--‐'‐'´: :/        \|∧ハ/l/: ::〈
       \: : : : : : : : : :く         |: : : : : : : : : : `ー-┐  ,.、
         l: : : : : : : : : :`ー―┐ ,、   |: : : : : : : : : : : : : : |二lニノ
         ヽ.: : : : : : : : : : : : : :|ニノ   |: : : : : : : : : : : : : : |
           ヽ: : : : : : : : : : : : :|      ヽ: : : : : : : : : : : /
           \: : : : : : : : :/       \ : : : : : : /
              ̄ ̄ ̄ ̄    ノ|      ̄ ̄ ̄       ノ)
                   ノしノ  し'(           ノ)__ノ (ノ(
WTLは?
4デフォルトの名無しさん:02/08/11 10:47
WTC?
良、おめ。

かおりんはなんで飛ぶんーー?
6コギャルとHな出会い:02/08/11 11:02
http://kado7.ug.to/net/


朝までから騒ぎ!!
   小中高生
 コギャル〜熟女まで
   メル友
  i/j/PC/対応

女性の子もたくさん来てね
                 
全国デ−トスポット情報も有ります。
全国エステ&ネイル情報あります。
WTLの話題もOKなのかな?
WTLに興味があるんだけど、情報が少なくて・・・

Donut本家作者さんのサイトとそこからたどれる
リンク以外でWTLに関して解説してるところって
ありませんか?
ATLは押しにくいので嫌いです
つーか、ATL7.0の情報もWTL並みに少なすぎだよ・・・。
死して屍拾うものなし
つーか、ATLをMSDN読みながら使おうとするのダメ。
ソースを読んで、実装依存にならないようにドキュメントを確認するのが最良
つか、MFCと違ってATLは単純だからソースをドキュメントとして使用できます。
22デフォルトの名無しさん:02/08/22 16:59
ATL7.0 のウィンドウクラスを用いて、
普通のWin32アプリ作っている人たちに質問。
WinMain 内の基礎的な処理(メッセージループとかWindowの作成)
を書くときに、

1. CExeModule に任せる
2. メッセージループベタ書き(or自作クラス)
3.  WTL7.0 に任せる

のどれが一番ナイスな手法ですか?
>>22
3.
24デフォルトの名無しさん:02/08/22 23:22
質問です。
ATLで作成したActiveXを、IEで表示しているのですが、
OBJECTタグで指定したWIDTHやHEIGHTの値を、
PARAMタグが処理される前に取得したいのです。
(もしくは一つ目のPARAMタグ処理)
どうもPARAMタグ処理後でないと、ウインドウが作られないため、
ウインドウサイズの取得が出来ません。
何かよい方法はないでしょうか。
25デフォルトの名無しさん:02/08/23 00:20
>>24
SetExtensionなんちゃらかんちゃらをオーバーライド
(ソース見られないところからだからいい加減)
2624:02/08/23 00:27
>>25 レスどーもです。
HRESULT IOleObject_SetExtent(DWORD dwDrawAspect, SIZEL *psizel)
のことですよね・・・
これ試したんですけど、
PARAMタグで全てのプロパティセット後に呼ばれてるんですよ
くやしいです
27デフォルトの名無しさん:02/08/23 09:29
>>23

やはり、WTL7.0ですか。
ただ、CAppModule はATL7だと、邪魔な気もするんですよね。
CAtlBaseModule があるのに、いらんやろとか思ってしまう。
28デフォルトの名無しさん:02/08/24 02:27
>>26
あれ? SetObjectRectsの方が早かったかな?
これより早いとオブジェクト自体作られていないっていうギリギリだったはず。
29to:02/08/28 02:56
ATL初心者です。。

ATLの動作がいまいち理解できません。
Donutをダウンロードしてステップ実行をしているのですが、メインのMDIウインドウ
はどこで定義されているのでしょうか?
MDIのウィンドウを標準ではなくて、自前の画像などを貼り付けてメディアプレーヤー
みたいなブラウザを作ろうと思っています。

あと、ATLを解説しているいいHPを知っていたら教えてください。
お願いします。
>>29
良書は沢山あるけど、ATL日本語の良サイトはないな
31to:02/08/28 16:52
>>30
何かおすすめの本ありますか??
ATL初心者です。

ATLで、ブラウザ上で実行させるコントロールを作成しているのですが、
タイマーを使うことができません。
CWindow::OnTimer(...)
MESSAGE_HANDLER(WM_TIMER, OnTimer)
をオーバーライドさせているのですが、反応しません。

いろいろ悩んだのですが、コントロールが表示される領域に
CWindowから継承されるウィンドウを貼り付け、それのタイマーを利用する
ことも考えました。が、そもそもウィンドウを貼り付ける方法も分かりません。

よく分かっていないので、極めてレベルの低い質問になってしまうのですが、
<object ...></object>で表示されている画面というのは、ブラウザ上に存在する、
ボタン或いはエディットボックスのような1個のウィンドウと
みなしてよいのでしょうか。それとも、ブラウザのビューウィンドウの一部を
間借りしていると考えたほうがよいのでしょうか。

ひとつご教授ください。お願いします。
34デフォルトの名無しさん:02/09/10 11:08
ActiveXDLLを作る方法がわかるWebページありませんか?
SetTimerについて言及していないのは、なんでだろうか。
36デフォルトの名無しさん:02/09/10 12:39
CComBSTRって
bool operator<(BSTR bstrSrc) const
bool operator==(BSTR bstrSrc) const
bool operator<(LPCSTR pszSrc) const
bool operator==(LPCSTR pszSrc) const
は定義されてて、なんで
bool operator>(BSTR bstrSrc) const
bool operator!=(BSTR bstrSrc) const
bool operator<=(BSTR bstrSrc) const
bool operator>=(BSTR bstrSrc) const
とかは定義されてないの?

37デフォルトの名無しさん:02/09/11 10:49
誰も分からんのか・・・
<と==だけあれば別に困らないから。
39デフォルトの名無しさん:02/09/11 16:20
おい!困らない奴! 教えてくださいませんか。

CComBSTRとBSTRで自然に比較演算できるように定義したんですが、
// operator==
inline bool operator==(BSTR s, const CComBSTR& t)
  { return t.operator==(s); }
inline bool operator==(const CComBSTR& s, const CComBSTR& t)
  { return s.operator==(t); }

// operator!=
inline bool operator!=(const CComBSTR& s, BSTR t)
  { return ! s.operator==(t); }
inline bool operator!=(BSTR s, const CComBSTR& t)
  { return ! t.operator==(s); }
inline bool operator!=(const CComBSTR& s, const CComBSTR& t)
  { return ! s.operator==(t); }

// operator<
inline bool operator<(BSTR s, const CComBSTR& t)
  { return t.operator<(s); }
inline bool operator<(const CComBSTR& s, const CComBSTR& t)
  { return s.operator<(t); }
40デフォルトの名無しさん:02/09/11 16:21
// operator>
inline bool operator>(const CComBSTR& s, BSTR t)
{
  if (s.m_str == NULL && t == NULL) return false;
  if (s.m_str != NULL && t != NULL) return wcscmp(s.m_str, t) > 0;
  return t == NULL;
}
inline bool operator>(BSTR s, const CComBSTR& t)
  { return t.operator<(s); }
inline bool operator>(const CComBSTR& s, const CComBSTR& t)
  { return s.operator>(t.m_str); }

// operator<=
inline bool operator<=(const CComBSTR& s, BSTR t)
{
  if (s.m_str == NULL && t == NULL) return true;
  if (s.m_str != NULL && t != NULL) return wcscmp(s.m_str, t) <= 0;
  return s.m_str == NULL;
}
inline bool operator<=(BSTR s, const CComBSTR& t)
  { return t.operator>=(s); }
inline bool operator<=(const CComBSTR& s, const CComBSTR& t)
  { return s.operator<=(t.m_str); }

// operator>=
inline bool operator>=(const CComBSTR& s, BSTR t)
  { return ! s.operator<(t); }
inline bool operator>=(BSTR s, const CComBSTR& t)
  { return ! t.operator>(s); }
inline bool operator>=(const CComBSTR& s, const CComBSTR& t)
  { return ! s.operator<(t.m_str); }
41デフォルトの名無しさん:02/09/11 16:23
と、
bool operator>(const CComBSTR& s, BSTR t)
bool operator<=(const CComBSTR& s, BSTR t)
が、既定義のoperator<()とoperator=()を使って定義できず、
ダサダサになってしまいます。

なんとかならんもんでしょうか?
おながいします。
WTLの全てを教えてください
何箇所か間違いがありましたが、言いたい事は分かってもらえたかな?
44デフォルトの名無しさん:02/09/12 18:47
おい賢いおまいら、
ATLって何なのか簡潔におしえてくだしぃ。
COMプログラミングのどの辺がらくになるの。
45デフォルトの名無しさん:02/09/12 19:02
STLの質問も受け付けていますか?
すれ違いだタコ
>>46
なんでそんなにレスはやいんだ?
48デフォルトの名無しさん:02/09/12 19:13
ATLのAって何?Application?
>>48
Listen me
ActiveX
51デフォルトの名無しさん:02/09/12 19:29
Ask meじゃネーノ?
52まじれす:02/09/13 17:07
>>48
Active Template Library
53デフォルトの名無しさん:02/09/13 17:22
ATLなんて、ATLWindow クラスと、ATLControls に含まれるコモンコントロールラッパー、
そして ATLスマートクラス しか使わないが。
こんな俺は逝ってよしか?
xxxModuleは使わんの?
>>54

ATL7 だから、 特に意識はしてない。
自分でインスタンス作る必要ないし。
5655:02/09/13 22:37
>>54
とか思ってたら、HINSTANCE の取得に
CAtlBaseModule::GetResourceInstance 使ってたよ。
つか、ATLは雑に作られすぎてるので、コアな部分をツマミ食いするだけに留めた方がいいよな。
(ウィンドウ関係、使えなさ過ぎ)
ウインドウ関係だけがおいしい(WTLだが)と思ってるんだが、
具体的にどう雑なんだ?
59デフォルトの名無しさん:02/09/19 09:22
ATLのコントロールから親のウィンドウハンドルやインスタンスを得ることは出来ないのでしょうか?
IE上で動いてるコントロールからIEのハンドルを得たいのですけれど。
60デフォルトの名無しさん:02/09/21 22:33
>>59
ATLからのとりかたは知らないんだけど、
前にIEを操作したときは、DDEとか、COMのWebControl使ったぞ
61デフォルトの名無しさん:02/09/25 01:57
ATLのCWndPprocThunkでHWNDをthisに置き換えてますが、
なんでecxにthisを入れてjmpしないのでしょうか?
その方がthunkのコードも小さくなるのに。

何かの理由で直接ecxを触れると不味いとかあるのですか?
62デフォルトの名無しさん:02/09/25 08:35
>>61
・メンバ関数の呼び出しにthiscallを使わない処理系(bccとか)で
 使えなくなってしまうから。

・Alpha版とかSH3版とかMIPS版とかARM版とかIA64版とかとコード共有しやすいから。

・VC限定にしても、メンバ関数のアドレスって正攻法で取得できるものだっけ?
 &Class::Member だと必ずしもアドレスの数値が帰ってくるとは限らんし。
 (↑VC++&多重継承無し&非virtual、ならたしか大丈夫だった気もするが)

・ecxはcallerが退避するので書き換えても問題ないと思う。
virtual/多重継承アリでも問題なくアドレスが返ってくることは確認出来ました。

しかし、
>メンバ関数のアドレスって正攻法で取得できるものだっけ
これが気になるのでATLと同じにした方が良さそうですね。

ありがとうございました
ATL(DLL)でmath.hをインクルードして使用すると、_fltusedの多重定義で
エラーが起きます。atlimpl.cppの_fltused定義をコメントアウトすると、
リンク時に_mainが未解決であると怒られます。

どなたか原因がおわかりのかたいらっしゃらないでしょうか?
ATL_MIN_CRTだかがプロジェクトの
どっかに定義してあるから、それを消してみれば
できました・・・。#undefしたら通りました。
意味はよくわかりませんが・・・。ありがとうございます。
67デフォルトの名無しさん:02/10/10 17:47
OS:Windows NT Sp6a
IE:5.5
開発環境:Visual Studio 6.0 SP5を使用しています。

ATLで適当なCOMクラスを作って、Visual Basicから使おうとすると、
New した時点でActiveX Objectが作成できませんというエラーになってしまいます。

もちろん登録してありますし、そもそもDebugモードでコンパイルすると問題なく動作します。
Win32 Release MinDependency でコンパイルした場合に上記エラーになってしまいます。

VC側でデバッグかけると、デバッグウィンドウに
"例外処理 (初回)は Test.Exe(KERNEL32.DLL)にあります:0xC000008F:Float Inexact Result"

と出てきますので、どうやらなんかの例外でこけているようなのですが、何が原因なのかまったく見当がつきません。
いままでいくつも作ってきてこんなことなかったのに...

誰か助けてください。
68デフォルトの名無しさん:02/10/12 11:20
>>67
Debug モードのときには動いて、Release モードの時には動かないの?
ASEERT 系マクロの中に関数とか指定していないか調べた?
>>68
×ASEERT
○ASSERT
>68
ありがとうございます。

それが、スケルトンプロジェクトでATLオブジェクトを挿入しただけの
ものでも起こるという状態でして...

環境再構築かなぁ
CAutoPtr<CBase> P(new CDerived) ; //CDerived は CBase の派生
//Pを使う
P.Free(); //CDerived::~CDerived は呼ばれない!

…CAutoPtrってこういうものなんですかね。
もちろんデストラクタはvirtualです。
Free() ってただの delete m_p; だから、
そこでdeleteした時に呼ばれる関数なら全てCAutoPtr::Freeを
読んだときでも呼ばれるはず。

delete P.Detach(); ならうまく行くのかどうかチェックしてみ。
7371:02/10/27 01:42
>72 サンクス。

申し訳ない。単純な形でのテストを怠ってました。
コンソールアプリで普通にやってみたら
P.Free();
でちゃんと派生クラスのデストラクタが呼ばれました。

それでもうちょっと調べたところ…。
MFCのダイアログアプリからやると駄目と分かりました。
うーん。なにかヘッダファイルがらみの単純なことなのかなあ。

class Catltest2Dlg : public CDialog {
//中略
CAutoPtr<CBase> m_pBase ;
}
BOOL Catltest2Dlg::OnInitDialog()
{
//中略
CBase* p = new CDerived(TEXT("TEST")) ;
if (!p) {
::AfxThrowMemoryException() ;
}
m_pBase.Attach(p) ;
return TRUE;
}
void Catltest2Dlg::OnDestroy()
{
m_pBase->SomeFunc() ; //ここでは派生クラスが呼ばれる
m_pBase.Free() ; //ここで駄目
CDialog::OnDestroy();
}
7471:02/10/28 22:45
>71-73
お騒がせしました。解決しました。
…下記のwarningが出ていたのに気付いてませんでした。

c:\MS\VStudio.NET\Vc7\atlmfc\include\atlbase.h(924) :
warning C4150: 'CBase' 型を削除するため delete 演算子が
呼び出されましたが、定義がありません。

正しくdeleteできるようにするため下記の修正が必要でした。
(誤)
class CBase ;
//中略
CAutoPtr<CBase> m_pBase ;

(正)
#include "Base.h"
//中略
CAutoPtr<CBase> m_pBase ;

#しかしなんだってコンパイルできちゃうんだ、これ。
75デフォルトの名無しさん:02/10/29 00:39
age
76デフォルトの名無しさん:02/10/29 10:38
WTLの話なのでスレ違いかもしれませんが・・・。

WTLを使いたいのですが、上のほうに書いてあった「ATLインターナル」を買おうかと思っています。
「ATL COM プログラミング」なら持っているのですが、WTLに関する情報は皆無です。
「ATLインターナル」ではWTLに関する情報はどれくらいありますか?
最新はWTL7なんですよね?「ATLインターナル」で扱われているバージョンと違いはありますか?
もしくはWTLに特化した書籍は他に何かありますか?

田舎なもんで、本屋で立ち読みするわけにもいきません。
WTLには非常に興味があるので、どうかご教授願います。
7776:02/10/29 11:02
ひょっとしてWTL7は.NETでしか使えないという罠?
78デフォルトの名無しさん:02/10/29 11:10
当然C++.NETでしか使えないわけだが
そんなものだれが使うんですか?
>>76

ATL インターナルにWTLの話題はないよ。
つーか、WTL 出る前に書かれたものだし。
ATLウィンドウクラスを解説した章は WTL にもそのまま当てはまるし、
読んでおけば、WTL のソースをそれほど苦労することなく読めるようになる。

あと、WTLを扱った本はないはず。(少なくとも日本語では)

>>77
んなことたぁない
8076:02/10/29 11:53
>>79

WTLの話題は無いのですね。。。残念です。
「ATL COM プログラミング」にウインドウクラスの話題があったかどうか覚えていないので、まずそれを確認してから「ATLインターナル」を読みたいと思います。

それと、サンプルのAlphaって、XPじゃないとコンパイルできないのでしょうか?
>>79

Alpha って、コモンコントロールのサンプル?
WINVER とか その辺のマクロを直せばコンパイルとおるだろ
WTLは?
84デフォルトの名無しさん:02/11/08 15:37
MSDNのサイトからPlatformSDKを落して使っています。
WTLを使って見たいのですが、これはSDKには含まれて
いないのでしょうか?個別に落す必要があるのなら
それはそれで構わないのですが。。。どうなんでしょうか?
>>85
さんくす個。とりあえず、内容なので落したの入れてみました。
MFCすらつかったことがないので、WTLのよさが分るかどうか
ちょっと怪しいんですが、いろいろソース読んだりして勉強したい
です。
ちなみにPlatformSDKではWTLはインストールされない模様です。
http://www.mars.dti.ne.jp/~kattoshi/Program/Install/Install.html
C言語
Ask meじゃネーノ?
90デフォルトの名無しさん:02/11/29 12:39
age
91デフォルトの名無しさん:02/12/02 00:15
age
そろそろ ATL/WTL は賞味期限切れ。
どとねとに移行しなされ。
>>92
そうでもない。
94デフォルトの名無しさん:02/12/19 21:14
WTLでActiveXって、どうやって使うの?
クラスウィザードも使えないし...
95デフォルトの名無しさん:02/12/19 23:40
IWebBrowser2の使い方が禿しく分からん。
誰かバカにもわかるように解説してりろ。
9694:02/12/20 07:30
すみません。自己解決しました。
WTLで検索していたので見つからなかったみたいで、
ATLで探したら簡単に見つかりました。

>>95
下記のページが参考になるかも?
ttp://www.nitoyon.com/vc/tips/ie_component.htm
9795:02/12/22 03:10
>>96
ありがとう。それみてなんとかやってみます。
98デフォルトの名無しさん:02/12/23 06:50
すんません。
CComBSTR → char* への変換教えてください。
自己レス
CComBSTR bstr;
CString tmp((BSTR)bstr);
でいけた。


くそったれが。さいしょからbstr.GetAnsiChar()でも用意しときやがれ
>>98-99
CString使うなって。マクロで確かW2T(?)があったはず・・・。
bstr_tならLPCTSTRにキャスト可能。
101デフォルトの名無しさん:02/12/23 18:38
OLE2TとT2OLEが一番無難じゃない?
昔は変換の為にBSTR型を大量に宣言してAllocしてたけど、
解放し忘れでメモリリークしたりして大変だったような・・・。

WTL7.0ってVC6でもいけるのね?

System Requirements
Microsoft Visual C++® .NET or Visual C++ 6.0
103デフォルトの名無しさん:02/12/23 21:11
>100-101
ありがとん。やっぱ何かしらあるとは思ったよ。
しかしW2Tって。。なんちゅーネーミングだ。付けたヤシはカッコイイとでも思ってんのかね
検索してもW2Tなんて出てきた所で気がつきゃしないよ。もっと直感的な名前にしる
104名無し@沢村:02/12/24 04:12
>>103
十分直感的な名前やろ。あんたの勘が悪いだけ。
あと、char*への変換が目的ならW2Aにしとけよ。分かったな。

俺なら_bstr_tかWideCharToMultiByte()使うけどな。
sageてまで荒らすとなるとやっぱ完璧に
共有荒らしハンドルとして定着ですか

ATL7.0 なら、CA2WEX とか CW2AEX とかの、
C*2[C]*EX テンプレートクラスを使え。
そのほうがより安全だ。
あああああああ、
_ATL_MIN_CRT ってやってると リリース・ビルド が通らん!

愚痴なのでスルーで。

WTLで小さなプログラム作りたいのに
fstreamとかiostream使うとすぐにでかくなっちゃう。
テンプレート実装のfstreamとかあればいいのに。
109名無し@沢村:02/12/27 08:33
>>108
typedef basic_fstream<char, char_traits<char> > fstream;
>>107
memcpy とかCのランタイム関数使ってるからでしょ。
APIに置き換えればいいはずだったと思う。たぶん。
111デフォルトの名無しさん:02/12/28 17:33
CImage.Loadで読み込んだ画像ファイルを表示させるには、
どうしたらいいですか?
>>96
漏れもそのサイトのソースをいじろうとしたのですが、VC++.NETではだめだったりしますか?
コンパイルは通るのですが、AtlAxGetControlあたりで処理が引っかかってるらしく、
IE不在のダイアログしかできないです。
それとも単に、ビルドのオプションを間違えているのでしょうか?
113名無し@沢村:02/12/28 22:35
>>111
CImage::Draw()
age
115 :03/01/07 22:41
age
>>109 >>113
似非沢村、増殖中。
117IP記録実験:03/01/08 21:34
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
>>540
逝き遅れの妹発見
まじっすか、やだもーん
test
25歳。
去年まで働いてたんだけど、ひきこもってオンラインボンバーマンで
二年で350点貯めた。一度やってみなよ。
身内で不正だけど、6人くらいでシングル3たてすれば800点くらい貰える。
点数だけ稼いで得点トップなら目立つ事ができるし、序盤ブローグでで赤ボンか黒ボンに
思い切って投げてしまえば50パーセントくらい殺せる。
荒らしが入ればサーバー変えるだけ。暇つぶしになる。
味噌ボンとかぎんぎんパワーあるのでまじオススメ。
http://www.bomberman-online.com/

122デフォルトの名無しさん:03/01/09 14:52
>>317-318
来ないと言うやつは又来るが、さようならと言った次のレスにもうコピペする奴は珍しい。
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 138720人 発行日:2003/1/9

年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。

そんなわけで、年末に予告したIP記録ですが実験を開始しています。

「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
qb : 2ch批判要望 削除議論 削除要請 削除整理
live2 : ニュース速報
tmp : ニュース極東 ちくり裏事情 政治思想 Download
    厨房! 人権問題 バカニュース 薬・違法
    ゴーマニズム ロビー 最悪 少年犯罪
    違反の潰し方 ペット苦手 なんでもあり 学歴
どうもです。
IPとってる板

qb : 2ch批判要望 削除議論 削除要請 削除整理
live2 : ニュース速報
tmp : ニュース極東 ちくり裏事情 政治思想 Download
    厨房! 人権問題 バカニュース 薬・違法
    ゴーマニズム ロビー 最悪 少年犯罪
    違反の潰し方 ペット苦手 なんでもあり 学歴
つまらないね。

トリップだってさ
全然ボツ。
まあ、どうにもならんわな。法律的に勝てる可能性は0に限りなく近い。
最高裁いっても新しい事実とかが無い限り逆転はないわな。
弁護士やとっても無駄金を取られるだけになってしまうだろうな。
ここはみんなで400万集める方法を考えた方がいいと思うぞ。
129あげ:03/01/10 11:21
ATLのスマートポインタやらなんやらつかうより、
boostやloki使うほうがいいよな?
まー、適材適所なのだが。
5nd
2ちゃんねる が衰退していく

あるネット関連会社の社長は、
「いずれにしても2ちゃんねるは資金が底をつけば終わり。
あまり知られていないことだが、2ちゃんねる内部関係者によると今、
大手通信会社系が調査費名目で資金提供している。
だが、それが止まれば続けてはいけないだろう」
と証言する。
2ちゃんねるが判決によって力を失った場合、
資金提供の打ち切りも予想される。

http://ascii24.com/news/reading/causebooks/2002/07/01/636911-000.html  
>>129
そーか? ATL の CComPtr はよく出来ていると思うがな。
Loki の ComRefCounted ポリシーは穴だらけ。
133129:03/01/10 13:39
>>132
あげついでになんとなくしったかぶって発言してみました。
正直lokiもATLもまだ使ってないっす。
boostとWTLは使ってるんだけどね。

ところでATLでboost/lokiよりすぐれてると思われるものってほかにありますかね?

それにしても日本語の情報サイトってすくないなー。
英語めんどくせー。
昇進しそびれたボランティア★が揚げ足取りをして罵倒する所ですね。

観念しなさい
実験段階は既に終了して、通常運用だと思う。
110番の日なのは狙ったのかな。
ところで、アホーの投票祭り無いの?
俺は「2ちゃんねるってなに?」に投票してきたけど。
激しく同意。ヤナ時代になったもんだ・・・
こうゆう基地外は一度捕まった方が良いと思われ
  ↓
http://ex2.2ch.net/test/read.cgi/morningcoffee/1041906510/29
140デフォルトの名無しさん:03/01/11 02:19
>>133
ATL無しでWTLを使う方法を教えて下さい。
こらポリ製品おまい誰に断って快速スレの継続たてているんだ。
オウム幹部と麻原が捕まった時のことを思い出すな
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
>裁判所や警察からの照会があった場合にはIPを提出することがある。

今までもやってたくせに
スレタイもうちょっと・・・なんとか・・・ならないんだよね。
早く閉鎖してください。
お願いします。
【無料】みんなでお揃いのユニフォーム【祭り】
http://life2.2ch.net/test/read.cgi/offevent/1042037013/

みんなで2ちゃんユニフォームを作ってワショーイしよう!
同じカッコしたちゃねらーで街を埋め尽くそう!

ユニフォーム代はなんと無料です!
↓ここを利用します。
http://www.getuniform.com/

もしこれが実行されたらにちゃんは閉鎖だな、きっと
wって2ちゃん発祥なの?
ださくないか?
(笑)もザサイから、(^^)がナウイよ。
いや、最近のニュー速は本当に良くなってきたと思うよ。
ニュース速報板だからね。
(^^)
心配なら学校休ませればいいのに。ってか、他人の子供なんて
正直どうでもいいような気がするんだなぁ。
今日新たに登録した顔文字

ヽ(*`Д´)ノぬっころぬ!!!!
「掲示板の削除依頼は内容証明ですべし」というバカバカしい法律はありません。
そのとき裁判官は「条理」を根拠にします。社会的常識も条理です。
内容証明でなくても裁判で事実を証明できれば勝てます。
プロバイダ責任制限法の条文を読んだけど、どうして免責の対象になるのか?教えてくれる?

大変なんですねぇ・・・頑張ってヽ(´ー`)ノ
157山崎渉:03/01/13 18:44
(^^)
訴えられたら捕まる?(^_^;)なんか勘違いしてるでしょ
159山崎渉:03/01/16 03:16
(^^)
160デフォルトの名無しさん:03/01/21 16:09
浮上
161山崎渉:03/01/23 20:05
(^^)
162デフォルトの名無しさん:03/01/29 00:02
hage
163デフォルトの名無しさん:03/02/16 17:44
絶滅種保存age
164デフォルトの名無しさん:03/02/16 23:08
いまATLでWebサービスを開発しているのですが、珍しいですかね?
165デフォルトの名無しさん:03/02/16 23:16
>>164
ATLって作るのは簡単なんだけど、多分メンテできる人が少ないから避けられると思う。
しかもほとんどのSEはATLって何か知らないから、ATLでやったほうがいい、っていっても却下される。
166デフォルトの名無しさん:03/02/16 23:25
そうかあ。もったいないなあ。ATL良くできてるのに。
ATL Serverを使った一大プロジェクト、.NET MyServicesがこけた時点でATLは終わった。
GUIの強みもLonghornで無くなる。
168デフォルトの名無しさん:03/02/17 00:06
最初はATLを使ってWEBサービスに組み込んでたんだけど
なんでこんな面倒な事をするのかよくわからななくなったので
やめました。
169デフォルトの名無しさん:03/02/18 01:25
いいかげん、MFCが滅んでくれるのがいいのだけどね。
VBみたいな存在になりつつある。嫌過ぎ。
>>169
ATLがVBみたいな存在なの?
どういう意味で?
VBって作るのは簡単なんだけど、多分メンテできる人が少ないから避けられると思う。
しかもほとんどのSEはVBって何か知らないから、VBでやったほうがいい、っていっても却下される。
>170
169じゃないけど。MFCがVBみたいなんじゃないかなあ。
APIレベルの動作を知らないで変なことをやっちゃう人が
多いんでしょ。オレも5年くらい前はかなりそんなの作ってた。

>171
ネタ?ATLについてならそういうこと言えるかも。
MFCって作るのは簡単なんだけど、多分メンテできる人が少ないから避けられると思う。
しかもほとんどのSEはMFCって何か知らないから、MFCでやったほうがいい、っていっても却下される。
174テンプレ:03/02/20 03:31
○○って作るのは簡単なんだけど、多分メンテできる人が少ないから避けられると思う。
しかもほとんどのSEは○○って何か知らないから、MFCでやったほうがいい、っていっても却下される。
175デフォルトの名無しさん:03/02/20 13:14
点プレ減点33点
176デフォルトの名無しさん:03/02/21 00:03
ATLとSTLってどう違うんですか?
177デフォルトの名無しさん:03/03/02 22:06
WTLでこんな感じで
class CFileView : public CWindowImpl<CFileView, CListViewCtrl>
リストビュー生成したんだけど、
これの初期化(カラムの追加とか)ってどこでやればいいの?
OnCreate作ってやっても追加できなかったんだけど。

同じコードをOnChar作って書くと
キー押せばちゃんと追加されるのは確認済み。
OnCreateでできたよ。
179177:03/03/02 23:14
>>178
ありがとう。自分のミスでした。
OnCreateをオーバーライドしたら自分でDefWindowProcも
呼んであげないといけないのね。
呼んでなかったので、リストビュー自体が作られてなかったみたいです。
呼ぶようにしたらできました。初心者でスマソ。
180デフォルトの名無しさん:03/03/07 19:03
WTLってなんでこんなに流行らないの?
日本語ページほとんど無いし、Donutくらいしか使ってるソフト無いし。

テンプレートベースだから実行ファイルは小さいしランタイムもいらないし、
MFCをシェイプアップした感じのクラス構成は使いやすいし、
生API+C++で書くのと違ってわざわざGetWindowLongでthis変数取得したりしなくても
ちゃんとOOできるし。
WindowsのGUIライブラリとしては最強だと思うんだけど。
>>180
サイズを追求するならフレームワークは自作するし、そうでないならMFCで十分
WTLは中途半端


>>180
時代は.NETだから。
商用ソフトはメーカーに見捨てられた時点で終わり。
商用だったのか…
>>181
サイズを追及するなら普通WTLだろ?
「MFCで十分」ってのもおかしな表現だよな。
大掛かりなのはMFCの方なんだから、
普通は「WTLで十分」になるはずなんだが・・・
WTLはもちろんフリーだが・・・
WTLは最低でも24KBになるから本当にサイズを追求するならWTLは使えない。
upxだ!
>>186
そういう「普通じゃない」場合には確かに使えないかもな。
Donutは一時期、「世界一小さいサイズのタブブラウザ」とか言ってたけど、
WTLはサイズがかなり小さめなのは確か。
>>187
小さいexeを要求するユーザほどUPXは嫌がるんだよね。
実力で小さくして欲しいらしい。
それにしても使ってる人少ないね。
ほとんどのPGがテンプレート拒否症なだけのような気が。
テンプレート好んで使うような香具師は、
Windowsプログラミングなんてやってなさそう。
>>189
UPXだと複数起動時に読み込み専用領域が共有されないし
もっともほとんどは真面目にREBASEしてないから関係ないが
テンプレート拒否症って、ようするにテンプレートあんまり慣れてないとか、知らないとかだろ。
まあ大多数のPGのレベルなんてそんなもんだよなぁ。
デフォルトでは インストール されない から。

…WTL用のウィザードってあったっけ?
MSが宣伝してないからだ。もう.NETだし。
うーむ、皆さん.NETへ移行してるんですか?
個人レベルでも?
いや、個人が移行してなくてもMSがその気だから。
MSが宣伝しないとWTLがあること自体知らない人も多いだろう。
.NETになると、C++でもライブラリが変わるのか?
持ってないから知らないんだけど。
managed C++なんて嫌だ。
>>198
意外にクセになるよ。麻薬みたいなもん。
200デフォルトの名無しさん:03/03/08 02:28
WTLはおそらく上級者が使う場合が多いから、日本語ドキュメントのサイトなんて必要ないんだよな。
ソース見ればだいたい解るからな。
なんで英語サイトはたくさんあるのに日本語サイトは全くないの?
外人の方がレベル高いって事?
上級者とか初心者とか関係なしに、使いにくいからじゃないの?
APIを薄くラッピングしただけにすぎないし、
そこそこやってるなら自前で作ってただろうし(出るのが遅すぎ)
そうでない人はMFCで満足してるかB系に流れるか。
かなり設計が練られてて、ハイレベルなので、自前で作ったのよりは
出来がいいはず。
そのままAPI使うよりは、オブジェクト指向やジェネリックプログラミングを
格段に導入しやすくなってる。
MFCみたいにランタイムが必要なわけでもないし、設計が悪いわけでもない。
WTLより自作のほうがいいと信じてる人は
きっとリンクリストの再発明も繰り返してるんだろうな
STL? 自作したほうが効率がいいに決まってるじゃない
自作の方が良いというか
今まで自作で間に合ってきたから
わざわざ乗り換える必然性が無いというか
それならわかる。
> 出るのが遅すぎ
ってこったな。
それで今まで自作でやって来た人がWTL使いに抜かされて、
WTL使いが.NET使いに抜かされていくわけですね。
208デフォルトの名無しさん:03/03/08 23:26
>>207
どういう意味で"抜かされる"のですか?
実用的技術力
開発効率
はたしてWTLが実用的なのかと小一時間(ry
WTLも自作フレームワークも、つぶしのきかない技術であることに変わりはないな
非実用性なら.NETの方がWTLより上だろう。
それでもカビの生えたWTLよりは使われていくだろう。
.NETの寿命は短いかもしれないが。
>>210
>はたしてWTLが実用的なのかと小一時間

( ´,_ゝ`)プゥー 実用できるほど学習する能力が君に無いだけだろ
書くコード量が少ないつまり開発効率がいい方から順に
.NET > WTL > 自作フレームワーク
単にウィザードが発達してるだけだとか
最近Tony Goodhewの名前を聞かなくなったな。
216デフォルトの名無しさん:03/03/09 02:54
.NETのManagedC++のライブラリってどんな感じなの?
テンプレート使うの?
あと、WTLってテンプレート使ってるのがMFCとの根本的な違いだと思うけど、
それで何が良くなるの?
サンプルを見た感じだと普通にクラスの継承を使ってるし、MFCとの違いが
イマイチよくわから無かった。
217デフォルトの名無しさん:03/03/09 03:27
Managed C++==属性つきプログラミング
であってる?
IDLファイルとか作らなくてイイヤツの事?
WTLは基本的にvirtualを使わないで多胎を実現してる
>>213
バグが出にくい、デバッグしやすい、再利用がしやすい、
つまり開発効率いい方から順に
Swing > AWT > WTL > 自作フレームワーク >>>>>ジェリコの壁>>>>> .NET
Java厨キタ━━━━━(゚∀゚)━━━━━!!
WTLってフレームワークからしてバグバグだよな
ヘッダだけなので簡単に修正できるし修正箇所とかもも
全部ネットに載ってるけどね。
>>222
URLキボンヌ。
最新のバージョンは結構バグが直ったって聞いたけどなぁ。
.NETでATLプロジェクト作ってコンパイルしても、
リソースのバージョンが反映されていないんだけど俺だけ?
後で出来たDLLのプロパティ見ても空っぽになってる。
>>225
初心者が良くやるやつだな
>>226
え?
どこ直すの?
ツールバーの別のボタンを押せ
>>228
どこどこ?
マジでわかんない。
つか.NETからだよね、これって。
VC++6.0じゃこんなこと無かったし。
raptのfixedwtl7と標準のWTL7をdiffしてみたが
WTL7も相当バグってるな。
そんなにバグが放置されまくってること自体
マイナー & MSにやる気がないことの現れだな
APIのバグも長期放置するけどナー
開発していて、望んだ動作をしていない場合、
WTLのソースをその都度変えちゃってる。
バグなのかどうかはわからんが。
>>233
Σ( ̄▽ ̄;)
>>234
改変したWTLのソースごと持ち運んでも大したサイズにならないんだし、
別にいいんじゃない?
236235:03/03/11 18:48
改変したWTLで作ったソフトをオープンソースで公開するとしても、
改変部分のdiffを取って同梱するか、
Raptみたいに改変したファイルだけ付属しちゃえばいいんだし。
テンプレートライブラリだから微妙に改造された少しずつ異なる
DLLが出回って収拾つかなくなったりもしないし
238デフォルトの名無しさん:03/03/12 02:37
ヘッダファイルだけってのは手軽でいいよな。
ATLもそうなの?
おまえらライブラリのソースを勝手に変更して、
「スタティックリンクしかしないからいいじゃん」
っていってる厨と同レベルだな
何が厨なのか説明しないお前が厨
WTLのヘッダがが変更されてることに気づかずソースを参考にして別のプログラムを作ってみたら挙動が違って混乱する罠
でも、変更したものを配布しちゃって良いのか?
差分だけなら問題なし
差分だけで同一性保持権の侵害に問われる可能性もなくはないが
プログラムの著作物でバグ取りという前提だからさらに無問題
244デフォルトの名無しさん:03/03/12 22:16
WTLでアイコンつきメニューを使う場合はわざわざコマンドバー作らないと駄目ですか?
CMenuの実装見てもオーナードローらしきコードは見当たらないし。
245225:03/03/13 01:47
しつこくてすまぬ。
どうしても.NETのATLプロジェクトでバージョンが
反映されないのが分からない。
たすけて・・・。
246デフォルトの名無しさん:03/03/13 03:04
ライブラリを変更しないのは、主にライブラリのバージョンアップ時に、
自分のソースとライブラリのソースを、変更しなくて済むようにするためだろ。
なに? WTLはもうバージョンアップしない??
247デフォルトの名無しさん:03/03/13 06:14
>>245
クリーンビルドじゃ駄目か?
>>246
バージョンアップしたらまた直すが。
つーか、バグだろうし。
249225:03/03/13 09:22
>>247
さんくす。

それもダメでした。
いくつか作ったけど、どれもこれもダメ。
プロキシ/スタブの方は問題なく反映される。
環境も会社と家ので試したけどどちらもダメ。

他のみんなは反映されてるの?
250デフォルトの名無しさん:03/03/13 22:35
WTLおもしろそう。

これから勉強しよ〜っと。
251デフォルトの名無しさん:03/03/13 22:48
ATLってなんでtry〜catch使うとコンパイラで警告出るの?
>>251
コンパイルオプションの設定が悪い
253250:03/03/14 14:11
ちょっと触っただけだけど興味深い・・・


VC7だと毎回「古い形式じゃゴルァ!」と出るのがウザイんだけど・・・
マジ?
どこがどう古い形式なんだ?
255250:03/03/14 19:52

あれ、初めの一回だけ?
もう出なくなった。
何が古い形式なのかわからんけど、ワークスペース等は一度変換してしまえば無問題
257デフォルトの名無しさん:03/03/15 02:50
属性付きプロジェクトでWTLのビルドを通すようにするのには苦労したぜ。
258名無しさん♯:03/03/15 18:38
VS 2003でWTLを使う方法。

1. AppWiz70\setup.jsの変更

 var strVC7Key = "HKLM\\Software\\Microsoft\\VisualStudio\\7.1\\Setup\\VC\\ProductDir";
                                         ↑
2. AppWiz70\Files\WTLApp70.vszの変更

 Wizard=VsWizard.VsWizardEngine.7.1
                      ↑
3. セットアップ実行
259デフォルトの名無しさん:03/03/15 22:59
VS2003って何?
>>259
4月か5月に出る。
261デフォルトの名無しさん:03/03/17 23:08
VC7でWTL/ATLのプロジェクト作ってコンパイル→実行まで出来るんだけど
CMessageFilterとかWTLの独自アイテムの定義に「定義に移動」で
たどり着けないのですが、そういうものと思ってあきらめた方がいいですか?
ATLとWTLのファイル全てプロジェクトに追加すれば良いんじゃないのか?
オプション設定に検索するソースディレクトリの指定がなかったっけ?
264261:03/03/18 09:59
Inclide file のPathにWTLのIncludeのパスを設定してもだめでした・・・
265デフォルトの名無しさん:03/03/18 12:48
一度作ったCOMのDLLファイル名を変えたいんだけど、どうすればいいかおせーて。

古いDLLがHogeHoge.dllだとします。
で、新しい関数を追加した新しいDLLはHogeHoge2.dllです。
新しい関数はまだ信頼性が保証できないので、二つのDLLを共存させたいんです。
そこで古いプロジェクトに関数を追加して、GUIDを変えたんですが、うまく動きません。
266265:03/03/18 13:08
動きました。RGSファイルを書き換えていませんでした・・・
267263:03/03/19 01:04
>264
inludeのパス、libのパス、そしてsrcのパス!
268263:03/03/19 01:05
う。inludeじゃなくてinclude
269デフォルトの名無しさん:03/03/19 20:50
>>267

lib , src は include と同じでいいのかな?
WTLってIncludeしかないよね?
270263:03/03/20 00:28
…あ゛、そ、か。
普通のライブラリのつもりでいた。逝ってくるよ…
271デフォルトの名無しさん:03/03/22 14:39
良スレあげ
272デフォルトの名無しさん:03/03/27 22:42
もしかしてWTLのことってMSDNに記述無いの?
ttp://www.geocities.jp/fieldabout/
「世界の仕組み研究所!!」

何か質問があったらおいらにかかってこいでつ。
活動してなかったけど世界の仕組み研究所は生まれ変わるでつ。
ちょっとづつHTMLがちょっと分かってきたので少しづつアップするでつ。

274bloom:03/03/27 22:52
俺はこの辺見てる>WTL
ttp://www.codeproject.com/wtl/
276デフォルトの名無しさん:03/03/29 02:09
あげ
277デフォルトの名無しさん:03/03/30 23:37
ATL ってどこでダウンロードするの?
VCに付いてくる。
ATLはダウンロード出来ないはず 
あ、DigitalMarsのサイトでダウンロード出来たかも知れない
>>277
P2PでVC++ごと落とせ
281 :03/04/01 14:04
あげあげあげ
282デフォルトの名無しさん:03/04/05 11:47
誰かDDX系のマクロだけでもまとめてくれんかの?


MFCとの対応表みたいなの作ってくれるといいのだが・・・
283デフォルトの名無しさん:03/04/07 01:07
業務でWTL使ってる人いる?
284デフォルトの名無しさん:03/04/07 01:13
>>283
職場に保守できる人がないみたいだからから使ってない。
>>283
∩(・・
職場でC++ 使えるの自分だけだし。
だから、結構自分勝手にやってる。
何よりMFC触ったことがない!



仕事でWTLって使えないのが普通なんだ…
もしかしてMFC必須なのか…

そもそもC++すら活かせそうにないけど(´Д⊂
288283:03/04/07 14:49
>>286
>何よりMFC触ったことがない!

(・∀・)イイ!!
WTL7.0ってWinXPじゃないとダメなのか・・・
んなこたーない
291283:03/04/07 15:17
>>286 もしかしてBoostとかも使い放題ですか?
Boostはライセンスの問題とかあるので、微妙。
http://boost.org/more/lib_guide.htm#License

License requirements
Must be simple to read and understand.
Must grant permission without fee to copy, use and modify the software for any use (commercial and non-commercial).
Must require that the license appear on all copies of the software source code.
Must not require that the license appear with executables or other binary uses of the library.
Must not require that the source code be available for execution or other binary uses of the library.
May restrict the use of the name and description of the library to the standard version found on the Boost web site.
>>293
>Must be simple to read and understand.
いいな、これw
こういうの好きだ。
boost を使ったアプリケーションの使用許諾書は短文でなければならないと言う事なのか。
ライセンスじゃなくてソースコードへの要求では
297デフォルトの名無しさん:03/04/09 10:45
WTL7にしたら、atlapp.hでエラーでまくるのだけどうちだけ?
298かおりん祭り:03/04/09 10:47
http://saitama.gasuki.com/kaorin/
〜oノハヽo〜 / ̄ ̄ ̄ ̄ ̄ ̄ ̄                
  ( ^▽^) < こんなのがございまーす♪ 
= ⊂   )   \_______
= (__/"(__) トテテテ...
299あぼーん:03/04/09 10:47
>>297
スコットさんも出るらしい
ttp://www.idevresource.com/wtl/issues.asp
>>300
スコットってあの、デジタルカウボーイ"Juranek Scott"か!
こいつは、やばいことになってきたな…
WTLで作ったソフトはWin95でも動きますか?
MFC7で作ると動かないので、VS.NET以降でのネイティブアプリは
WTL+C++標準ライブラリがいいかなぁと思ってるのですがどうでしょう?
意見を聞かせてください。
#define WINVERとかちゃんとすれば動きます。
304デフォルトの名無しさん:03/04/10 22:58
MDIの子Frameを複数種類持つことは出来ますか?
VS6のソースviewとリソースviewみたいな感じの。

もしかして同じ子Frameクラスを継承すればいいだけ?
305 :03/04/14 14:24
                _∧_∧_∧_∧_∧_∧_∧_∧_
     デケデケ      |                          |
        ドコドコ   <    小泉政権崩壊まだぁ〜!?     >
   ☆      ドムドム |_  _  _ _ _ _ _ _ _ _|
        ☆   ダダダダ! ∨  ∨ ∨ ∨ ∨ ∨ ∨ ∨ ∨
  ドシャーン!  ヽ         オラオラッ!!    ♪
         =≡= ∧_∧     ☆
      ♪   / 〃(・∀・ #)    / シャンシャン
    ♪   〆  ┌\と\と.ヾ∈≡∋ゞ
         ||  γ ⌒ヽヽコ ノ  ||
         || ΣΣ  .|:::|∪〓  ||   ♪
        ./|\人 _.ノノ _||_. /|\

         ドチドチ!
306デフォルトの名無しさん:03/04/16 09:27
ATL7なDLLからWTLを使ってウインドウ出したい場合って、
CComModule使わないと駄目ですか?
WTLってMFCのCInternetSessionみたいなネット関連のクラスはないの……?
308 :03/04/17 13:47
インテリセンスさへ効いてくれれば業務でも使えるのだが・・・
309山崎渉:03/04/17 15:09
(^^)
310デフォルトの名無しさん:03/04/17 15:58
>>308
え、効いてない?
cppと分けてないとか……
312308:03/04/17 23:14
>>311
分ければ出るんですか?
313 :03/04/17 23:49
VC2003 soon age
314デフォルトの名無しさん:03/04/18 02:44
MFC使ったこと無いのですが、
WTLのウィザードで生成される

BEGIN_MSG_MAP(CMainDlg)
 MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
END_MSG_MAP()

みたいなのって、もしかしてMFCの部類のマクロですか?
>>314
互換性はあるのかどうか分からんけど、とりあえず>>284参照してみて
WTLはここでいいのかな・・・よろしければ質問お願いします。

WTLのAppWizardで吐き出した、モードレスダイアログの
テンプレを、他のプロジェクトで使おうと思っていたのですが、
終了時に問題がでちゃいます。流れとしては、

別アプリのウィンドウ生成
COMを初期化

メニューからダイアログ表示を選ばれたら、
以下のようにモードレスダイアログ表示。(Wizardが吐き出した通り)
CMainDlg dlg;
CMessageLoop theLoop;
_Module.AddMessageLoop(&theLoop);
dlg.ShowWindow(SW_SHOWDEFAULT);
theLoop.Run();
_Module.RemoveMessageLoop();

COM終了

という感じす。ダイアログ側から、自分でちゃんと
ダイアログを閉じてからアプリを終了する分には何の問題もありません。

ところが、ダイアログが開いたままだと、アプリ終了時にアプリ側より
ダイアログに終了メッセージを送ってから、アプリを終了すると、
何故かプロセスに残ってしまうんです。

そもそも使い方が悪いとか、何でも良いので助言頂けると幸いです。
317デフォルトの名無しさん:03/04/18 10:18
しまった、上げさせてください
>>316
モーダルダイアログじゃないのに
メッセージループを二つ使ってるみたいだけど
これは理解してやってるの?
System Requirements
Supported Operating Systems: Windows XP

Required disc space: 1.6 MB
Microsoft Visual C++ .NET or Visual C++ 6.0

って書いてあるけどWin2000でも開発できるの?
少なくとも WTL(とATLでWTLから参照している部分)はWin2000でも使えたよ。
>>319
何の話?
>>321
あぁごめん。WTL7.0の話。ダウンロードページに>>319のように書いてあったので。
323316:03/04/18 16:04
>>318
レスありがとうございます。
申し訳ないです、かなり理解してないかもしれません。

アプリのメインウィンドウの方は普通に(つまりWTLの
フレーム関係なしに)初期化しております。
その上で別途モードレスダイアログを立ち上げています。

・・・・書いている内に、かなり変な事している気がしてきました。
やはりメインウィンドウも、WTLを使った形で
生成するべきでしょうか。もう少し良く考えてみます。
俺は今猛烈に感動している。

「ATL?よく知らんけどCOMで何かすんだべ?俺には関係ないよ。」
と思っていたが、このスレやここからリンクするサイトを読んで、さらに今
MSDNの「ATL 3.0ウィンドウ クラス: 入門」を読んで考えを改めた。
これは1999年のドキュメントだが、俺は今までこんなすばらしいものを
見過ごしてきたのか。

2003年春、俺はATL/WTLに目覚める。
俺もCOMはよーわからんけど、ATL/WTLはいいと思う。
326山崎渉:03/04/20 03:08
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
327山崎渉:03/04/20 03:43
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
>>324
>これは1999年のドキュメントだが、俺は今までこんなすばらしいものを
>見過ごしてきたのか。

すまん。MSDNの「ATL 3.0ウィンドウ クラス: 入門」 を読んだんだが。
そんなほめられるモンじゃないと感じたけどねぇ。

C -> C++ つう流れで SDK -> WTL って考えると、なんでこんな感じになっちゃったの?
ってのが感想。
こんな感じとは?
SDKをC++化したわけではないんだが……
>>329
>>328がMixinとtemplateを知らなかっただけ。
332 :03/04/23 18:55
templateで喜ぶなよ。って事じゃないの?
>C -> C++ つう流れで SDK -> WTL って考えると
  _, ._
( ゚ Д゚)  ・・・
> C -> C++ つう流れで SDK -> WTL って考えると、

どんな感じになると思ったの?
SDK++
SDK -> ATL/WTLなら全然問題ないような。
MFC -> ATL/WTLはダメな人多いようだけど。
結局言い逃げっぽいね<こんな感じ
つうか単に328がWTLについてけないだけだろ

フィッシングはそろそろやめようや
つーかWTL8は無さそうだからついていかない方がよさそうだな。
340デフォルトの名無しさん:03/04/28 10:43
MFC7で作ったプログラムはWin95では動きませんが、
ATL7で作ったプログラムはWin95でも動くのでしょうか?
341デフォルトの名無しさん:03/04/28 10:53
Managed C++にMFC7は使えますか?
Managed C++にATL7は使えますか?
342デフォルトの名無しさん:03/04/28 11:48
GC搭載して欲しい。
お願いですから余計なものつけないで欲しい。
344340:03/04/28 22:25
どなたかわかりませんでしょうか。
もし動くなら.NET買おうかなと思ってるのですが・・・
345動画直リン:03/04/28 22:26
>>344
ログ読め
ログにあるのはWTL7.0。
348デフォルトの名無しさん:03/05/07 21:29
あげ
あがってたのでネタフリ。
VS.NET2003のはATL7.0のままなんだね。
あれ、フレなかった。
350デフォルトの名無しさん:03/05/07 21:37
これじゃあヘジも見放すわけだ
誤爆した
>>349
違います。
VS.NET 2003 では ATL 7.1 になってます。
354352:03/05/08 14:01
>>353
4月分のMSDNライブラリ見た?
「ATL 7.1」で検索すると VS.NET 2003 が ATL 7.1 になってるのがわかるよ。
_ATL_VER も 0x0700 じゃなくて、0x0710 って定義されてます。
な、なんだってぇー!
WTLは7.0のままなのかな
357デフォルトの名無しさん:03/05/09 00:59
VS2003で
WTLを使う方法
早くきぼんぬ
358352:03/05/09 08:08
仮にもIDE使うような人間なら、そのくらい自分で直せよ>357
360デフォルトの名無しさん:03/05/10 20:29
>>358 サンクス
>>359 過去ログすら読む暇もなかったのでね

仕事暇になったら勉強しようっとWTL
>過去ログすら読む暇もなかったのでね
こんな痛い言い訳、書かない方がマシなのに。
Windowsいぢくらにゃならんようになって、せっせとSDKのラッパークラス作ってたら
既にこんなんがあるんじゃん。タイヤ作りまくり。
363デフォルトの名無しさん:03/05/13 03:35
フフフ、MSにATLのバグを直してもらったぜ。
ATL/MFCはバンバン更新かかってますなぁ
良いことぢゃ
ちなみにいつ更新された話をしてるのかな?.NET2003での話?
COMオブジェクトが、2byte文字フォルダで登録出来ない不具合は直ってる?
368363:03/05/13 18:59
>>366
VC7.1のATLのバグだにょ。
インシデント使って文句言ったら修正したファイルを送ってきたにょ。
>>368
ごめん、>>364に対してのレスなんだ<更新
それとも>>363のような人たちがたくさんいて、今まさに更新されてるって意味なのかな??
.NETもう終わり?
死滅ネタは専用スレでやっておくれ
遅ればせながらATLでHelloWorld作ってみた。
日記は板違い
すまんかった。
375デフォルトの名無しさん:03/05/17 21:08
Active Template Library
ATL/WTLは内部でC/C++ライブラリ関数を使ってますか?
ATL_MIN_CRTなんてオプションがある位だから使ってるんだろうね。
プログラムのファイルサイズを小さくしたくてCRTを使ってないのだけど、
リストビューやスレッドやvectorのような動的に拡張できる配列も簡単に使いたく、
ATL/WTLが最適かと思ったけど内部でCRT使ってるならかなわぬ夢か・・・
>>378
だから、ATL_MIN_CRT をつければ CRT を使っているとコンパイルエラーになるよ。
#define ATL_MIN_CRT の状態でコンパイルが通るようにしればOK
それにしてもなんと情報の少ないことか。。。
ATL_MIN_CRTでも一部のCRTを使ってますよ。
ATL_MIN_CRTの名前からして最小限のCRTは使ってそう
ATL_MIN_CRTを付けてstrcpyを使ってもコンパイル通りますた
strcpyはLIBCの外で単体でアセンブリコードとして存在するので当たり前です。
ATL_MIN_CRTを付けてLIBCをはずしてコンパイルが通ればよいのかな?
MSDN Online見たけど.NETだとやたらAPIのラッパクラスが増えてるんだな
6月に2003買おう。でも今回はMSDNデラックスEditionが無いので(´・ω・`)ショボーン。
387デフォルトの名無しさん:03/05/20 22:18
>>386

え!マジで
>>386
あるよ
>>388
どっかに書いてある?MSのメールには無かったが・・・
http://www.atmarkit.co.jp/fdotnet/insiderseye/20030522vs2003/vs2003.html
ここ見るとデラックス版あったよ。
391山崎渉:03/05/28 12:55
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
392デフォルトの名無しさん:03/06/01 22:47
緊急浮上
もういいよもういいよなにがWTLだよもういいよどうせやる気無いんだろ
うんざりだよどうせ流行んないよいいよいいよMFCと心中するよぬるぽ
2003のダイレクトメールが来た。MFC7.1/ATL7.1だった。
>>393
そんな君にはwxWindowsをお勧めするよ
>>395
スレ違い
>>393
ガッ
ATLでgoogleツールバーみたいなの作ってるんだけど、Navigate2でPOSTするにはどうしたらいいか知ってる香具師いますか?
どうやってもGETとして扱われてるみたいです。
ttp://msdn.microsoft.com/workshop/browser/webbrowser/reference/ifaces/iwebbrowser2/navigate2.asp
PostDataがNULLだとGETになりますな。

ハズしてたら恥ずかしい。
400デフォルトの名無しさん:03/06/04 23:57
sage>>399
Thanks。

PostDataには、いろいろ入れて試してみてるんだけど、POST先のContext-Typeと相違があったら、PostDataはNULLとみなされるらしいっす。
CByteArray型でエンコードした内容を入れなきゃならないらしいけど、このエンコードがうまくいってないみたいです。
というところまではわかったんだけど、CStringをBYTE配列に入れて渡してみてもだめでした。
401サンプルです:03/06/05 00:00
☆クリックで救える○マ○コがあるらしい!!☆
http://yahooo.s2.x-beat.com/linkvp/linkvp.html
あ、何気に解決しました。
ありがとうございます。
(´-`).。oO(まさか401のリンク先で解決……?)
404デフォルトの名無しさん:03/06/15 01:13
あげまする
405デフォルトの名無しさん:03/06/22 23:00
hageます。
WTLの話ってこんなところでやってたのかよ。探しまくったじゃねーかよ!
スレ立てないの?
まだいいんじゃない。ここでさえ話題止まってるんだし。
408デフォルトの名無しさん:03/06/30 01:11
IEのようにReBar領域全体を覆うような境界線を描画させたいものの、
CreateSimpleReBar()のスタイルをいろいろ変えてみてもどうもうまくいかない…。
どうすれば実現できるか、どなたかわかりませんでしょうか。
>>408
Spy++でIEのReBarと自分のReBarのスタイルを比べてみるといいよ。
410408:03/07/05 00:58
>>409
ありがとうございます。
比較してみたもののどうにもうまくいかず…と思いさらに調査していたら、
hp.vector.co.jp/authors/VA016589/wtl/bugs/bugs.html
に同じ症状が見つかりました。自力で描画しないといけないのか…。むむ。
411409:03/07/05 02:31
スマン、俺も後で試してみたらCCS_NOPARENTALIGNに行き着いたところで困ったw
やっぱこれで描画するしかないのか……
VC++.netでWindowsサービスってどうやって作るんだ?
ATLプロジェクトのサービス(exe)選んだけど
http://program.station.ez-net.jp/special/vc/atl/service.asp
ここと同じところで引っかかった。
何か間違ってるのか・・・
>>412
CodeProject に載ってるよ。
PreMessageLoop にバグがあるから、直せば動くよ。
http://www.codeproject.com/atl/MigratingAtlServices.asp
>>413
ありがとう。バグだったのか・・・
つーか2002のころからあるみたいだが
2003になってもなおってないとは
415ゲイシ:03/07/09 07:21
違うよ仕様だよ
416デフォルトの名無しさん:03/07/09 16:06
質問お願いします。

WTL7.0のAppWizardで、普通にSDI Applicationを作成した後、
そのプロジェクトにcppファイルを一つでも加えると、次のエラーが出てしまいます。

「(加えたcppファイル名) : fatal error C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。」

原因を教えていただければ幸いです。
417416:03/07/09 16:07
追記すいません、VC++6.0 sp5、Windows2000でやっております。
#include "stdafx.h"
するか、もしくは、プリコンパイル済みヘッダを使用しない設定にする。
>>418
レスありがとうございます、無事コンパイルできました。

プリコンパイルって、指定ヘッダをあらかじめまとめておく
…くらいの認識だったのですが、色々やっかいなんですねぇ
420山崎 渉:03/07/15 10:00

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
421 :03/07/16 11:44
TAIdxFuture error LNK2005: "class _variant_t vtMissing" (?vtMissing@@3V_variant_t@@A) は既に comsuppwd.lib(comutil.obj) で定義されています。

意味わからん・・・
422デフォルトの名無しさん:03/07/25 01:18
ATC
423デフォルトの名無しさん:03/07/27 03:02
ATL7の本出て欲しい
424デフォルトの名無しさん:03/07/27 14:54
>>423
MSDNライブラリをプリントアウトすれば?
425山崎 渉:03/08/02 02:16
(^^)
426デフォルトの名無しさん:03/08/09 18:54
VC7ではATL_MIN_CRTで通ったのに、VC7.1で通らなくなった…
>>426
へー、ATL_MIN_CRTなんか使ってる人がいるんだ。
428山崎 渉:03/08/15 15:49
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
オウム幹部と麻原が捕まった時のことを思い出すな
430デフォルトの名無しさん:03/08/20 09:08
VC6でATLを学ぶのとVC.netのATLで学ぶのどっちがいい?
書籍がVC6のばかりだから、とりあえずVC6で勉強してるんですが。
個人的な意見だけど、最新版のATLを使えるようにした方がいいと思うよ。
いろいろ便利になってるし。
432430:03/08/22 08:54
>>431
VC.netで作ってもCOMなんだから、VB6からも普通に使えますよね?
433名無し@沢村:03/08/22 10:06
>>432
おう
434デフォルトの名無しさん:03/08/31 22:07
ATL/WTLによるって.NET SDK付属のVCだけでできる?
435デフォルトの名無しさん:03/08/31 22:11
>>434
ムリピョーン
436デフォルトの名無しさん:03/08/31 22:12
による開発」だった。できないのかぁ
SDKにゃATLが付いてないもんね
438デフォルトの名無しさん:03/09/01 05:26
.NET SDKでWin32開発はできないでにょ。
439デフォルトの名無しさん:03/09/03 07:00
VCコンパイラだけはついてるのよ
.NET SDK+Platform SDKでフリーWin32プログラミングできるよ。
WTLは使ったことないから知らないけど。
>.NET SDK+Platform SDKでフリーWin32プログラミングできるよ。
PlatformSDKだけでいいし、そんなことみんな知ってるし、
>WTLは使ったことないから知らないけど。
じゃあレスするなと。
> PlatformSDKだけでいいし、そんなことみんな知ってるし、
ハァ?PSDKにcl.exe含まれてないだろ。
ATLやWTLみたいな感じで自作のテンプレートライブラリを作っていて、
AtlLoadStringみたいなユーティリティ的な普通の関数もいくつか混ぜたいが、
あいにくそいつはinlineにはできないとする。
そういう場合どうします?

ヘッダの方は宣言だけにして大人しく.cppに実装するってのもイマイチだし。
ダミークラス作ったりするしかないのかなぁ。

何かいい案はないでしょうか。
444デフォルトの名無しさん:03/09/05 22:49
sageてるし……
自作ライブラリなら根本的にATL/WTLの質問じゃないんじゃ・・・
C++とかテンプレートスレでは?
446443:03/09/06 00:21
>>445
スマソ、自分でも書いてからそんな気がしてた。
自分でもうちょい考えてから、改めて向こうのスレで聞いてみます。
447デフォルトの名無しさん:03/09/09 09:21
UI−Proxy/Stub−CTLのように
カスタムのProxy/Stubを組み込みたいんだけど、
通常にCoCreateInstanceすると
UI−CTLのように直接呼び出されちゃうんです。
そうしたら、Proxy/Stubを通るようになるんでしょうか?
448デフォルトの名無しさん:03/09/10 19:41
age
449デフォルトの名無しさん:03/09/11 20:36
VC買わなくてもつかえるATL/WTLのオープンソース版みたいなのってない?
WTLってVC必須なの?
451デフォルトの名無しさん:03/09/11 21:12
ちがうの?
452450:03/09/11 22:05
いやごめん、全然知らないけど

でもただのテンプレートだし、Win32APIしか使ってないし…
そりゃ、さすがにウィザードは使えないだろうけどね
453デフォルトの名無しさん:03/09/12 09:23
>>450
そりゃあATLの拡張なんだから
454デフォルトの名無しさん:03/09/12 09:32
.NET2003でどうもうまく動かないな。WTL。
ウィザードはインストールできたし、コードも吐くんだけど、コンパイルが通らん。
atl***.hがインクルードできませんと出る。
>>454
インクルードファイルのパス通した?
あれ、パスは手動で通す必要があったの?
VC6の時はやらなかったような記憶があったスマソ
なんたら.jsを実行してないとか。
setup.jsだった。そのまんまだった。
459454&456:03/09/12 13:00
パス通したらコンパイル出来ました。
恥ずかしい。逝ってきます。
T2OLEとか使おうとすると
error C2065: '_convert' : 定義されていない識別子です。
など他にもエラーが出るけどどういうこと。
setup.jsの一部を書き換えると.NET2003でもウィザードとか使えるよ
WTL作者本人による.NET2003のウィザード対応方法
ttp://groups.yahoo.com/group/wtl/message/5373
WTLの解説サイトって英文でもいいからどこかない?
そこは定番だね。他は?
自分でぐぐれ知障
setup.jsの書き換えは>>258で既出だった。
むしろ
自分でつくれ素敵マン
>>468
自分で作ったら同じようなsetup.jsになった…。
470デフォルトの名無しさん:03/09/23 10:36
age
MSDNライブラリの「ATL 3.0ウィンドウ クラス: 入門」の7.1版てある?
OnlineMSDNで検索したんだけど無さげ。
472デフォルトの名無しさん:03/09/23 20:06
Win2000, VC++6.0 で_ATL_MIN_CRTを使ってウィンドウを表示するだけの
プログラムを作っても、リリースビルドで36kbありました。
http://www.microsoft.com/japan/msdn/library/ja/vccore/html/vclrfBenefitsTradeoffsOfUsing_ATL_MIN_CRT.asp
を見るとCRTを使わないので小さくなるとあるのですが、
もしかしてVC++6.0では小さくならないんでしょうか?
nowin98とかは当然やってるんだろうな?
>>473
>>472の答えにはなってないかと。
>>472
比較対象の (_ATL_MIN_CRT 使ってない) プログラムに CRT をスタティックリンク
してないとか。MSVCRT.DLL 使ってたらサイズ比較は意味無いぞ。
>>475
シングルスレッド用ライブラリをスタティックリンクしています。
Win32Appプロジェクトなのですが、_ATL_MIN_CRT 以外にすることがあるのでしょうか。
477デフォルトの名無しさん:03/09/24 22:59
VC6(SP5)、ATL COM AppWizard から作成したDLLで、MFCを利用にチェックを入れて作成しています。
作成途上なんどかビルドを繰り返していると、Warning LNK4006 やら error LNK2005がでるようになって
しまいました。 どちらも、"DllMain@12 が重複〜"という趣旨の警告を出しているのですが、その当たり
をさわってもいなければ、リンクの設定も弄っていない状態です。
 同じような症状にあわれた方、対処法ご存じの方いらっしゃいませんでしょうか?
478デフォルトの名無しさん:03/09/27 01:05
WTL7.0のCFolderDialogのSetSelection()とか使う時は、CFolderDialogImplの派生で
OnInitializedをオーバーライドしないといけないんだよね?

それと、もしMFCだと基底クラスでOnInitializedが仮想関数で、派生クラスで
それをオーバーライドすると思うんだけど、そうしないでテンプレートでやる利点て何?
479 :03/09/27 03:44
>>478
後者だけ。

仮想関数方式だと、基底クラスで定義された非 virtual な関数は派生クラス
側で変更できないので、柔軟性を持たせるにはなんでもかんでも virtual に
するしかなくって、vtbl が肥大化するし効率あまり良くないから。

あと仮想基底クラスを使わなくても良いのでなんとなく安心っていうのもある。
>>479
なるほど、たしかにWTLの売りを考えるとその通りだ。
481デフォルトの名無しさん:03/10/05 06:07
ATLインターナルにCWindow(CWindowImplではなく)でメインウィンドウを作る例が
あったと思うんだけど、あれってどういうコードだっけ?
MSDNには既存のHWNDをアタッチする方法はあるんだけど、Createで作る例は
見つからないです。
482デフォルトの名無しさん:03/10/05 12:33
WTLで作ったウィンドウを、ダブルクリックを受付るよう指定したいのですが、
ウィンドウクラスのスタイルを変えるにはどうすれば良いのでしょうか?

こんな風にやってもうまくいきません…

CMainFrame main_frame;
main_frame.CreateEx();

CFrameWndClassInfo& ci = main_frame.GetWndClassInfo();
ci.m_wc.style |= CS_DBLCLKS;
RegisterClassEx( &ci.m_wc );
483482:03/10/05 12:45
RegisterClassExではなく、SetClassLongを使ったらいけました、お騒がせしました。
>>483
Win32API の基礎から勉強しなおせ。
485デフォルトの名無しさん:03/10/07 02:07
486デフォルトの名無しさん:03/10/10 20:12
質問です

ATL COM AppWizardからサービス(exe)を作成しています。
MFC関連を使いたくて(職場の規約でCStringを使わねばならない)#include <afxwin.h>を定義したところ
次のエラーが発生

ソースファイル名 : fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>

初心者なりに色々テストしてみて #include <atlbase.h> と競合してるところまでわかりましたが
ATL COM AppWizardのサービス(exe)で なんとかMFCを使うことはできないのでしょうか?

お願いします。
AppWizardでMFCをサポートするにチェックを入れる。
488頭悪い ◆gGTEz68pSM :03/10/10 20:48
EXEの場合はMFCは使えないのでは。CStringTなら使えるかな?
489486:03/10/10 21:35
解答ありがとうございます。
CStringTですか。聞いたことすらありませんでした。うわー
個人的に興味があるので調べてみます。
490デフォルトの名無しさん:03/10/10 23:53
VC++.NET2003(VC++7.1)で、
WTLコントロールクラスに対してインテリセンス(メンバ自動表示)が効かないんですが、
どうすれば効くように出来ますか?
別にCStringだけなら、WTLのatlmisc.h使えばいいような気もするが。
それさえ使わなくて済むって話じゃ
493デフォルトの名無しさん:03/10/11 18:37
今は、ATLもCStringをサポートしているのだ。
WTL7.0ゲットしてきたんだけどATL7.1と相性かなり悪くない?
ヘッダ名かぶってるし互換性ないし。
マジ?ATL7.1が楽しみで2003買おうと思ってたのに・・・
496デフォルトの名無しさん:03/10/11 22:42
>>494
俺は工夫して使ってるけどな。
しかも属性付きで。
>>494
別にヘッダ名はかぶってないし、
それぞれ ATL/WTL namespace に入っているからシンボルが衝突することもない。
同機能のクラスが2つあるのが嫌なら、
#define _WTL_NO_CSTRING, _WTL_NO_WTYPES, _WTL_NO_UNION_CLASSES
のあたりを定義すればATL版を使ってくれる。
まったく問題なく使えるよ。
俺は WTL のヘッダをインクルードする前に

namespace WTL
{
static ATL::CAtlBaseModule& _Module = _AtlBaseModule;
}

をはさんでる。
もっといい方法あるかしら?
>>497
逆に”_ATL_NO_CSTRING”みたいのは無いんですかね。
インテリセンスの表示メンバがATLのCStringのものになっていて、
非常に鬱陶しいのですが・・・
>>499
ATL::CString も WTL::CString もほぼ MFC::CString 互換なんだから、ATL版でいいじゃん?
VC6でもコンパイルしたいとかの理由があるの?
>>490 にも重なるが、WTLヘッダを自分のプロジェクト内に入れれば、
インテリセンスが効くようになるかも。
501499:03/10/12 21:55
>>500
WTLのヘッダはプロジェクトに追加してるんですが、
CStringだけはATLの内容が表示される・・・
Tokenizeとか各関数の定義が微妙に違って、使いずらいんですよねぇ。
ちなみに環境はVC2003です。
WTLってなんで標準でつかなくなったの?
MFCみたいなヘビーなのはいらないけどCMenu/CButton等のうす〜いラッパーはすげー使いやすいのに。
結局WTLってMFCと同じ様な制限抱えてるよね
>>503
例えば?
505503:03/10/12 23:27
>>504
Windowsアプリしか作れない
>>505
おじさんつまんなーい
良い子のみんな、WTLのWは何かなぁ? ∩ ゚∀゚)

503 「Wunkoで〜〜す!!」
508503:03/10/13 10:46
例えばこんなの

815 名前:デフォルトの名無しさん[sage] 投稿日:03/03/11 18:18
WTLのフレームはツールバーが上、ステータスバーが下と決め打ちしてるから、それしかない。
独自のフレームクラスを定義するしかないな。
そりゃWTL/MFCの制限じゃなくてAppWizardの制限だろ
510503:03/10/13 12:18
これまで書かんと分からないのか…
マンドクセ

809 名前:808[sage] 投稿日:03/03/10 23:49
出来たと思ったのですが、
下部に作成する事は出来たのですが、
ステータスバー属性にCCS_TOPを追加して上部に作成しようとすると
リストビューのカラムの名前を表示する部分と重なってしまいます。
上部に追加するのは無理でしょうか…

CreateSimpleStatusBar("", WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN |
 WS_CLIPSIBLINGS | CCS_TOP);
いやだからそのぶんViewをずらせばいいだろ。
単にViewをAppWizardのままにしてるからだろ。
>>510
そんなもんWTLに限らずSDKでやったって工夫しなきゃ重なるって。
>>510
CFrameWindowImplBase::UpdateBarsPosition() を修正したら?
ライブラリ自体の修正が簡単なのも、WTLのメリットと言えなくもないんだから。
上部ステータスバーなんて誰も使わないけどな。
514503:03/10/13 16:51
いちいちライブラリのソースなんか読みたくないんだよ!!
>>513
2画面ファイラとかがよく使ってるよ
WTLのソースを読みたくないってのは致命的だろう。
っていうか騙りかもしれないしどってことない問題だから以後放置で。
CDialogResizeとか、さりげなく便利だよな
MSDN の ATLCon サンプルに入っている atlcontrols.h には
WTL の atlctrls.h 相当のコントロールラッパが詰まっていて、
何らかの理由で WTL を使いたくないときにはとても便利。
何らかの理由でATLを使いたくないときはどうすればよいですか
>>519
氏ね
初歩的なことなのかも知れませんが、ATLのメソッドで、「関数の多重定義」みたいなこと
やるにはどのようにしたらいいんでしょう?
>>521
IDLではメソッドのオーバーロードは禁止されてるから無理じゃないか?
実際に使われてんのかねぇ、WTLって。
漏れは使ってるよ。でもイマイチだね。
テンプレートベースでMixin使いまくりだから、
コード補完がうまく効かないのが辛いよね。
しばらく見ないうちにWTLの話が多くなったな
527デフォルトの名無しさん:03/10/24 11:06
もまえらがWTLを使う時、ListViewやTreeView等のコントロールは必ず継承して使い、
継承したコントロールにそのコントロールがする処理を書きますか?
それとも、継承する必要が無いコントロールはそのまま使って、フレームクラスでNotifyMessage拾って処理を書きますか?
他のアプリでも再利用するようなコントロール作るなら前者だけどそうでなければ後者
529デフォルトの名無しさん:03/10/29 18:26
>>96, >>112

すっごい遅レスなんだが俺もいま同じとこではまってる。
AtlAxGetControl が FAILED 返すので何も起き様がない。
VisualStudio6のころつくったプロジェクトを、
VS.NET2003でコンパイルし直しただけなのになぁ。
もちろんVS6時代にビルドしたexeは期待通り実行されるのに。
なんでですか?
530デフォルトの名無しさん:03/10/30 01:10
>>529

VS.NET2003、WinXP(SP1) の環境で動きましたよ。
CreateWindow("AtlAxWin", ...) を
CreateWindow("AtlAxWin71", ...) にしただけですが。

アサートが何回か出ますが、それを無視して実行し続けてみたら、ブラウザが表示されましたよ。
531デフォルトの名無しさん:03/10/30 01:22
>>529
ProgID じゃなくて URL 指定して、CreateControl(_T("about:blank")) じゃダメ?
53294:03/10/30 15:03
CreateWindow(CAxWindow::GetWndClassName(), ...)
が正解ではないかと思ふ
WTLの日本語資料って少ないねぇ。
>>533
MFCみたいにフレームワークを提供しているわけではないから、
Win32の知識だけで十分使いこなせないか?
いちいち事あるごとにソース読まなきゃいけないのが面倒。
リファレンスは欲しいよね
537デフォルトの名無しさん:03/11/02 12:25
WTLの質問です。
親フレームで、NOTIFY_HANDLERを使って子コントロールの通知メッセージを拾いたいのですが、
子コントロールのIDはどうやったら分かるのでしょうか?
現在はIDを設定する方法が分からないので、
NOTIFY_CODE_HANDLERを使ってif文でコントロールごとに処理を分けているのですが、
これだとすぐにコードが汚くなってしまいます。
>>537
CWindow.Createの引数にID渡せるけどこれは違うのか?
WTLって実は全然使えないよね。
WTL使ってる人って、意地で使ってるだけとちゃう?
そんなことより、日本語リファレンスを作った人がいないってのが不思議だよ〜ん。

どっか一部だけ…としたらどの辺が需要有るかな。
コモンコントロール周りはいらないよね。
UPDATE_UI_MAPとかUPDATE_ELEMENTとかその辺
いくらWTLがMFCより小さくなっても、
STLとかBoostとかiostreamとか使うとすぐ肥大化するから意味無いね。
STL とか Boost 使わなければよいかと…
ATL で大抵事足りない?
EXEのサイズを小さくする目的でWTLを使っているわけじゃないな。
MFCだとフレームワークに従わないといけないけど、
WTLなら独立性が高いので、ネジ・クギとして使えるのが嬉しい。

そもそもEXEサイズにこだわるのって、ほとんど自己満足だし。
545デフォルトの名無しさん:03/11/04 11:36
今んとこまだまだVS6とCOMで業務をこなしつつVS.NETの勉強って感じだと思うけど、
COMの開発はATLが主流なのかな。
オレなんてCOMがさっぱり分からずC#に移ったら、なぜだか理解できなかった
COMの本が読めるようになってきたw
迷う迷うw
書き方キモイ文だなぁ
>>544
自分の枠組みでプログラムするのも自己満足だろ
そもそも、プログラム自体がじ(ry
もまいら教えてくさいm(__)m
MFCひととおりやったのですが、ATLを
やってみたいのですが、みなさんどんな書籍、サイト等が
お勧めでつか?
Inside Atl
Inside COM
>>549
マジレスだけど、Visual Studio についてくる MSのドキュメントが一番お勧め。
ATL, チュートリアルからはじめるのが吉。
このスレゆっくりと進んでて好きだなー。

しばらくATLから遠ざかったけど、またやろうかな。
遠ざかっていた間は、VBでCOM。VBだとかなり制限があるけど
COMの隠蔽度が高いって言うのか「COM作ってるぞ!」感が全然
無くってこれはこれで良かった。

#ただの独り言でした。
ATLはいいんだけど、CAutoPtrは糞じゃねぇ?

CAutoPtr< T > p1( new T() );
CAutoPtr< T > p2( p1 ); // アボーン

CAutoPtr< T > p1( new T() );
CAutoPtr< T > p2 = p1; // 正解
>>553
VC7.1のatlbase.hでは、ちゃんと所有権の譲渡が行われているが?
CAutoPtr( CAutoPtr< T >& p ) throw()
{
 m_p = p.Detach(); // Transfer ownership
}
そもそも、その2つってまったく同じ意味だぞ?
>>553
漏れが今やってる仕事では、そこだけ boost::shared_ptr 使ってる。。
CComPtr 同等に使えて便利。
Inside系の本は難しいのでもっと簡単なのを探してます。
ちなみに当方、VBでのコンポーネント作成はかなり理解してる方だと思います。
>>530
ありがとう。同じようなことで悩んでたんだけどヒントになったよ。お礼に

ttp://userpages.umbc.edu/~bcorfm1/wtl.html

でどう?
558549:03/11/07 19:42
>>550-551
遅くなってすみませんm(__)m
どうもありがとう。。。
559デフォルトの名無しさん:03/11/13 16:06
WTLだけど、フラットツールバーを作るには

CreateSimpleToolBar(0, ATL_SIMPLE_TOOLBAR_STYLE | TBSTYLE_FLAT);

ではなく、

CreateSimpleToolBar();
CWindow bar(m_hWndToolBar);
bar.ModifyStyle(0, TBSTYLE_FLAT);

とかしないとダメだよね?
http://www.codeproject.com/wtl/wtl4mfc3.asp
では前者の方法が紹介されてるけど、前者でもできる方法がある?
誰もいないのか・・・
見てるけど、>>559の話題に興味がないだけ
WTLのリファレンスにはMFCのが使えるな
>>562
今更
ATL/WTLプログラミング関連の本といったらATLインターナルくらいしかない?
COMインターナル
566デフォルトの名無しさん:03/11/23 18:28
WTLのコントロールクラスってなんでテンプレートになってるの?
ソースではTBaseから派生ってなってるけど
CButtonTの中でTBaseは特に使って無いみたいだし。
直接CWindowから派生させればいいと思うんだけど、そうしない理由は?
>>566
柔軟な設計が出来るから。
class CMyWindow : public CWindow;
typedef CButtonT<CMyWindow> CMyButton;
既存のクラス階層の「途中に」派生クラスを挿入できるのがメリットだと思うのだが。
WinFXがでるのにATLなんて物をまだ使ってるのかw
レベル低ッ!!
やっぱり結局使ってるのは漏れだけかなあと思っていたら、
久しぶりに煽りが出るほど賑わっていて嬉しいですね。
>>568
へー、もうWinFXを使って開発してるんだ。w

参考までに、どんなソフトを作ってるのかご教授願えますか?
そんなもんに釣られんな。
WTLで質問です。
OnPaintをMESSAGE_HANDLERしたんですが、HWNDの取得ってどうやってやりますか?
CPaintDCにNULLを上げると狂気に走ってくれたので、
とりあえず、GetActiveWindowを使ってるのですが、
もっとベターな方法はありますか?
573デフォルトの名無しさん:03/11/27 05:33
よく見たらここ2日は書き込みがない・・・。
浮上します。
*thisじゃだめなん?
m_hWndでいいと思うが
AppWizardでも
CPaintDC dc(m_hWnd);
と出力してるし。
>>574
ソース追っかけてみてもCMainFrameからの取得はないようです。
でも、追っかけ足りないだけかも・・・。

>>575-576
あ”−−−!!そんなベタな・・・。
コード補完に出てこなかったので探し回ったのに・・・。
でもスッキリしました。
本当にありがとう。
ベタな方法なだけにベター・・・
>578
うぐ!なかなかやるな・・・。

>574
試してみたらできましたね・・・。
追っかけたりなかったようです。
THX。
>>572
ProcessWindowMessage() の時点では hwnd も拾えるので、
MESSAGE_HANDLER 改変したマクロを定義してもいい。
>>580
そういう方法もありますね。
標準のものを改変するのはちょっとイレギュラーな感じがするけど。
非常手段として参考にします。
Thx!
>>581
誤解させちゃったかも。
MESSAGE_HANDLER() に似た、別の名前のマクロを自分で定義して〜ってつもりだった。

例えば、自分では
#define MESSAGE_LAMBDA(msg, lambda) \
 if (uMsg == msg)\
 {\
  lResult = 0;\
  lambda;\
  return TRUE;\
 }
なんてのを定義して、引数が異なる関数を呼んだり、短い処理をするのに使ったりしてる。
 MESSAGE_LAMBDA(ID_FILE_NEW, { OnPaint(hWnd); } )
って感じで。
>>581
MESSAGE_HANDLER に渡す関数の定義は、

LRESULT MessageHandler( HWND, UINT, WPARAM, LPARAM )

なんだから、普通に、

BEGIN_MSG_MAP( ... )
MESSAGE_HANDLER( WM_PAINT, OnPaint )
END_MSG_MAP()

LRESULT OnPaint( HWND h, UINT, WPARAM, LPARAM lp );

でいいんじゃないの?

>>583
LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
>>583
もう解決してるのにカコワルイ・・・・
586デフォルトの名無しさん:03/11/29 04:54
WTL7.0のAppWizardではOnIdle()でFALSEを返してるけど、この値ってチェックしてないよね?
なんか意味あんの?
>>586
たぶんバグ、というか真面目に実装していないのか。

WTLのエラッタをまとめてくれてるサイトってあったっけ?
形式上、MFCを真似たって感じなのかなぁ
589デフォルトの名無しさん:03/12/04 10:50
今後バージョンアップはあるの?
地味にありそう。
591デフォルトの名無しさん:03/12/04 15:32
WinFXだっけ? あっち対応の話ってどうなってるの?
>>591
とりあえずSTLはヴァージョンアップして対応しているらしい。
593デフォルトの名無しさん:03/12/05 19:47
ATLでDLL作ってVBから呼び出してウィンドウを表示させようと思ってるんだけど、
そのウィンドウにツールバーを付けたいんだけどどうやってもできないんす。
CWindowじゃ無理なの??誰かサンプル教えてーください。
WTL使えば?
595593:03/12/07 18:13
WTLでDLLって作れるんですか??
>>595
意味不明
>>593
MSDN の ATLCon つーサンプルの中に、各種コントロールを定義した
"ATLControls.h" があるから、それを使ってなんとかしろ。
598デフォルトの名無しさん:03/12/09 19:06
ATL7で、ATL, Cランタイム共に静的にリンクさせようとすると、エラーになるんだけど
なぜだろう。
エラーのときはエラー内容を書け。
600デフォルトの名無しさん:03/12/09 22:03
LIBCMT.lib(crt0dat.obj) : error LNK2005: __osplatform は既に LIBCMT.lib(crt0dat.obj) で定義されています。
LIBCMT.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です。

これ。
_ATL_MIN_CRTが定義されてる
いや、定義してないですよ。
ちなみに、DEBUGだとリンクできます。Releaseでは不可。
リリースにも?普通リリースだけに_ATL_MIN_CRTが定義されてるけど。
604デフォルトの名無しさん:03/12/09 23:27
>>602
VC++ のバージョンは?
.net 2003 だったら、「ATL で CRT をできるだけ使用しない」を「いいえ」にする。
こいつが「はい」になっていると、_ATL_MIN_CRT が定義される。
>>603, 604
.NET2003です。
そういうことですか。Cランタイムを配布したくなかったのですが、仕様なら仕方ないですね。
ありがとうございました。
>>605
Cランタイムを使わない方法を検討する。
>>606
自分のコードでは使ってないんですけど、NT4.0等、MSCVRT71が
入ってない環境でregsvc32すると、ランタイムが無いって警告が
でませんか?
ん?静的リンクしたかったら>>604で「いいえ」にすればいいんでないの?
609デフォルトの名無しさん:03/12/10 22:53
うぉおお!2003対応キタ━━━(゚∀゚)━━━ !!!
CEサポートとFixが主だな。新しいクラスと言えばCCustomWaitCursorくらいか・・・
>>609
かんどーした!!!!!!!!!
ウフォッ
喜多!サポート続けてくれるんだな。ありがたい。
>>614
ああ、更新内容よりはむしろバージョンアップしたという事実がありがたい。
616デフォルトの名無しさん:03/12/11 16:56
WTLのCStringで
Format(_T("%I64d"), value);
とすると I64d となってしまうんだけどなぜ?WTL::CStringはI64dって表記サポートしてるよね??
Raptのビルドがとおんねえ〜
あと新機能の追加が少ないのがかなしひ。
せめてCStringはATLと完全互換にならんものか・・・
WTL_NO_STRING を define すれば ATL の CString が使えるんだけど…
たしかWTL7.1のReadmeのNotesにも書いてるよね
>>619-620
そうではないだろう
622デフォルトの名無しさん:03/12/13 11:40
WTLのメッセージループ(CMessageLoop::Run())ってGetMessageが-1の場合にも
continueでループを続けてるんだけど、breakで抜けるべきじゃないの?
第二引数がNULLのときはGetMessageは-1を返さない
いや、返した場合の話なんだけど・・・
PlatformSDKより。ループは抜けなくてもいいのでは?ディスパッチするべきじゃないだけであって。

BOOL bRet;

while( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0)
{
if (bRet == -1)
{
// handle the error and possibly exit
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
>>625
-1 が返ってくる状況になったら、なにも考えずにもう一度 GetMessage() すると
再び -1 が返ってきて、無限ループにならない?
627デフォルトの名無しさん:03/12/13 15:52
GetMessage() が -1 を返すような状況では、
アプリケーションもOSもまともな動作をしているとは思えない。
それほど気にしなくていいんじゃないかと。
>>626
ならない?と聞かれてもSDKの解説もWTLもループさせてるし・・・
>>628
SDK のサンプルは、コメントに「エラー処理しろ」と書いてあるやん。エラー処理といっても、
もはや出来ることは限られてると思うが……。
>>629
そのエラー処理が、結果的にbreakするのかcontinueするのかって議論。
throw
書き方が悪かったか・・・
GetMessageの返りが-1の場合、メッセージループを抜けるのか、継続するのか。
抜ける方がいいに一票。
理由は>>627が書いているように、
まともにOSが動作していない状況で、
動作を継続する方が危険だから。
ベストを尽くせばいいじゃん
>>633
そうすると最初の質問のWTLがcontinueしてるのが気になるんだよな
ttp://homepage1.nifty.com/Roy_/Software/WTL/WTL_Lecture03.htm
WTL7.1の日本語記事はこれしか見つからん。
他にない?

>>635
自分で修正すれば?
>>636
いや、その前にバグなのかが疑問。
>>636
・・・藻前のバグの定義って何だよ・・・
>>637だった
>>638は修正してるのか?
こんなところで何を言っても結論なんか出るわけ無いんだから
msにメールでも出したら?
だからWTLはノーサポートなんだって。
自分が修正すべきだと思えば、修正すれ!
643642:03/12/15 22:10
ちなみに苦情を送る場合は、
ここttp://www.microsoft.com/japan/feedback/default.asp
の製品フィードバックな。
>>642
修正すべきかどうかわからんから質問してんだろゴルァ
つーかフィードバックするならYahooGroupの方がいいんじゃね?
俺は英語自信ないけど。
645デフォルトの名無しさん:03/12/16 08:41
ここまでの意見で何がわからんのだ?
「WTLがループを抜けないのはバグなのか何か意図があるのか」がわからないんだろ。
ちなみにSDKのメッセージループはpossibly exitであってmustではない。
「GetLastError() でエラーコード見るべき」ってのは?
いや、見た後にどうするかって話だろ
わかんねーけど、とりあえずExitWindowsExしとく?って感じ。
>>649
一つのアプリが-1返しただけでそれかよ( ゚Д゚)
ベストを尽くせ
652デフォルトの名無しさん:03/12/17 12:57
http://www.microsoft.com/japan/developer/library/vcmfc/_atl_cwindowimpl.3a3a.create.htm
のCWindowImpl::Createのドキュメントって間違ってるよね?
ATL3.0のソースを確認すると本当は引数の数は7つだし、dwStyleのデフォルトは0だった。
ATL7以降のソースではどう?
あ、ごめん。↑のドキュメントは古い奴か・・・
古いドキュメントって残ってたのか・・・
目次のアドレスキボン
IEのツールバーをATLで作成したい者です。
ツールバーには、相手先のページの
読み込み時間を表示させようと思っています。
そこで一つお伺いしたいことがありまして、カキコさせていただきます。

読み込み開始にBeforeNavigate2、読み込み終了にDocumentCompleteを
使うところまでは分かったのですが、JavaScriptのページで、
DocumentCompleteが返ってこないページがありました。
そのために、フレームページ対策で入れている
BeforeNavigate2が呼ばれた回数からDocumentComplete呼ばれた回数を引く
カウンターが狂ってしまいます。

そこで、本当に最初の読み込み開始か、完全に読み込み終了時に
カウンターのリセットしたいのですが、どこにどのように宣言したらいいのでしょうか。


う〜ん、やっぱりソースを見せないと伝わらないかなぁ・・・。駄文スマソ・・・。
ちょっと意味がわかりづらいのだが、
DownloadCompleteだとダメなのか?
>>656
DownloadCompleteも試したけど、やっぱりダメでした・・・。
イベントの呼び出しに、コンストラクタでもあれば苦労しないんだけど・・・。
★☆web tokachi link☆★
659デフォルトの名無しさん:03/12/18 17:02
atlmisc.hなんか見てると文字に_T(' ')マクロを使ったり使ってなかったりするんだけど
文字には_Tマクロいらないよね?
え?
ペゾルド本に文字にはLをつけなくて良いとあるから。
L'A' でも 'A' でもUnicode下では同じだって。
L'AB' だったら?
>>662
誰がそんな話してんだ
664662:03/12/18 22:44
>>663
失礼。 ワイド文字定数は最初の文字しか処理しないらしいな。(VC++7.1)
ただし、マルチバイト文字列のときは異なるようだ。
'あ' == 33440
L'あ' == 12354
だった。
だから文字列じゃなくて文字の話だって。つーかatlmisc.hの話だって。
ASCIIなら平気だろ
a(0x61)ならUTF-8やUCS2なら(U+0061)とかにマッピングされるんだから
>>666
それはペゾルドにも書いてあって、そんなこと話してるんじゃなく、
atlmisc.hの、文字に対する_Tマクロはいらねーよなって話だ。
要らないんじゃないの?
メッセージループのことといい、
処理系の実装は完璧でないと気がすまないキチガイが多いな
おいおい完璧に近い方が良いに決まってるだろ。
670662:03/12/19 08:25
>>655
文字列の話でもなく、文字の話でもなく、「文字定数」の話だろ?
シングルクォートとダブルクォートを見間違えてないか?

ASCII文字が、SBCS/MBCSとWCSで一致されることは、保証されてたっけ?
ま、どっちにしろ、C++言語の話ですな。
WindowsでVC++を使っている限りは、それほど気にしなくて良いというのには同意。
(なんで質問する側も回答する側も全員強気の発言なのに_Tが不要だと断言できる奴が一人もいないんだ…)
>>669
誰かが_Tが不要と断言したとしても、今度は逆に
atlmisc.hだと_Tマクロで定義されてるのには何か意図があるかもしれない
とか言い出すだろ。
んな事、書いた人間にしかわからねーんだよ
最初のレスで食い下がらずに自分で答えを見つければいいだろうが
>>672
>何か意図があるかもしれない とか言い出すだろ。
「あるかもしれない」だから無いことを証明すればいいんだよ。
それが議論てもんだ。
>>673
技術的な根拠が皆無だとしても、
たとえば不要なキャスト指定とか、括弧などのように
つけたことには何らかの意図が存在する可能性がある。
それは書いた人間以外に結論を出すことが不可能なじゃないか?
>>674
それなら技術的根拠が無いことを証明した上で、
「書いた人間が、不要にも関わらずキャスト指定した」という結論だろ。
おまえら朝っぱらから何やってるんだ?
答えは不要。断言。技術的根拠は>>666

で、技術的ではなくコーディングスタイル的なことを言えば、
_Tを使わないなら使わないで統一して欲しい。

このスレは無能な奴ばかりかよ。
技術的ではなくコーディングスタイル的なことを言えば、
_T があったり無かったりするのは気持ち悪いから、
文字列にも文字定数にもすべて使ってほしい。
>>676
void hoge(char);
void hoge(wchar_t);

hoge(_T('A'));

「技術的」ならば、明確に区別すべき。Cではなく、C++なんだから。
「実用上」ならば、>>666 の解釈でかまわない。
>>678
>void hoge(char);
>void hoge(wchar_t);
>
>hoge(_T('A'));

何が言いたいのかわからん。
>>679
後者が呼び出されることを期待していたら
L'A'になっていないばかりに前者が呼び出されるということだろう
>>680
いや、>>676はatlmisc.hに対する回答だろ。
atlmisc.hそんな関数があるのかと。
682678:03/12/19 12:05
>>681
確かに、atlmisc.h 限定ならそのとおり。
ただ、「文字定数には _T() や L は必要ない」と
解釈され得る流れだったから、釘を刺したまで。
それはそうと何で混在したんだろうね。
別の人が書いたのかな。
('A')ノ
試してないけど、これよさげ。
WTLでインテリセンスを有効に
ttp://www.codeproject.com/useritems/WTLIntellisense.asp
>>685
こんなものリンクしたら、
動作がおかしくなるんじゃね?
本ビルドの時だけ外せばいいだろ
>>685
なんも変わらんぞ。
>>688
自分で作らないとダメみたいだね。
それでもCStringは効かない。
690sage:04/01/03 00:17
WTL7.0→7.1にしたらビルドが通らなくなった
c:\...\wtl71\include\atlmisc.h(3042) : error C2653: '_CSTRING_NS' : 識別子がクラス名でも名前空間名でもありません。
#if defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__)
BOOL GetFromList(int nItemID, _CSTRING_NS::CString& strDocName)
{

_CSTRING_NS って何? どうすりゃいいの?
Win2000、VC++6、ATL3.0、WTL7.1
691680:04/01/03 00:19
sage書く場所間違えた(;´Д`) 鬱だ
692690:04/01/03 00:22
691です。680は間違い。
>>690
GREPすれば一発で見つかるはずだが・・・
atlapp.hでdefineされているので、
このファイルをincludeしてやればいいのでは?
694693:04/01/03 00:50
つーか
#include <atlbase.h>
#include <atlapp.h>
この二つはstdafx.hの先頭付近で宣言しておくのが普通だが。
695690:04/01/03 02:14
>>693-694
ありがd
includeされてた
リビルドしたら解決した。鬱鬱鬱
つーか>>696はそのページの管理人でしょ?前も自分のページ晒してたよな。
>>696
知ってる事ばっかりだからもうちょっと深い事やって欲しいぜ
これだな。
>>636
他にない?と言いながら実は自分のページを宣伝。
なんか、あまりにもありがちな流れだなおい。
しかも自作自演での煽りか・・・
それを自省ですか。
702デフォルトの名無しさん:04/01/09 20:22
すんまそん。基本的なことなのですが教えてくださいm(__)m
WTL(ATL)とMFCの両方が存在する意味って何なのでしょうか?
どんなメリット、デメリットがあるのでしょうか?
703デフォルトの名無しさん:04/01/10 01:03
C と C++ の両方が存在する意味って何なのでしょうか?
くだらないネタここまで
C++の標準ライブラリが片っ端からtemplate化されたからMSもやりたくなったんだよ。
MSはサポートしてねーよ<WTL
707デフォルトの名無しさん@質問くん:04/01/10 02:26
■質問です。
ATLで、サービスアプリを作りたいんですけど、
ウィザード見ても、あんま分かんないですね。
Run()のGetMessage()あたりが肝だとは思うんですけど・・・
できたら、サービスの簡単なサンプルが欲しいです。
よろしく。
708デフォルトの名無しさん:04/01/10 03:03
ATLを作ったチームが遊びで作ってみたら評判が良かっただけだろ。>WTL
オフィシャルのドキュメントも無いし。

そういえばTweakUIなんかもノンサポートだしな。
710デフォルトの名無しさん:04/01/10 23:00
もまいら元気ですか!!
教えてくさい!m(__)m

VS2003のVC++でプロジェクトのプロパティに「ATLを使用するかどうか」
を指定するところがあるのですが、従前(VS6.0)はなかったと
思うのですが、これはなんなんですか?

>>710
ATLを使用するかどうかを指定するものです。
>>710
ATLの一部の機能がDLL化されたので、
そのDLLをリンクするかしないかの設定・・・だと思う。
713デフォルトの名無しさん:04/01/12 00:54
WTLのDONUTを作ったMBさんって何者ですか?
日本人であそこまでやったってスゴイ!!
今はどこで何をしているのでしょうか?
それを知っておまいはどうするつもりだ・・・
WTLの話じゃなくて作者の話かよ
716デフォルトの名無しさん:04/01/12 18:43
>>1-715

こうやって、話はつれづれに移り行き・・
やがて、話題は加護ちゃんへと移行するのだ。
717デフォルトの名無しさん:04/01/12 21:33
加護ちゃんって誰?
>>717
風船みたいな子
719デフォルトの名無しさん:04/01/15 00:45
CFileDialogのGetFolderPathを使うとアサートします。

CFileDialog dlg(TRUE);
if(dlg.DoModal() == IDOK){
  TCHAR szPath[_MAX_PATH];
  dlg.GetFolderPath(szPath, _MAX_PATH); // アサート
}

使い方間違ってますか?
>>719
せっかくアサーションが発生してるなら、その場所のソースを見ればいいのに
ATLASSERT(::IsWindow(m_hWnd));だね
722デフォルトの名無しさん:04/01/16 02:05
誰かATLとWTLの最新版、Winnyで流してくれない?
タイーホ
WTLは流さんでも
>>723
さっさと流せよ。いつもエロ落としまくってる分際の奴に言われたくねえよ。
通報しますた
嘘発見しますた
↓証拠
729デフォルトの名無しさん:04/01/16 04:31
ここでMFCもATLもフリーで提供されてるでしょ
http://www.digitalmars.com/
されてねーよ。なんでそんなすぐばれる嘘をつくんだ。
C++BuilderXのフリー版にも、MFC/ATL が付いてきたと思うんだけど。
つか今時PSDKになんでATLぐらい含めないのかね。
>>731
ついてこねーよ。
734731:04/01/16 10:00
>>733
根拠のない否定はしないように。
C++BuilderXといっしょにインストールされているのを確認した。
ただし、ATLはver.3.0だし、MFCもVC6相当だろう。
MSはATLというかテンプレートライブラリは
コンパイラのバージョンに強く依存してるから、
無償配布に含めても意味がないっていう考えなのかな。
>>719は・・・
>>735
ならPSDKに付ければいいわけで。









PSDKにコンパイラは付いてるよね?
>>734
マジで!?
>>737
ia64用しかついてません
>>736
自己解決しました


















たぶん
ネタ書く前にせめて質問には答えようや
743デフォルトの名無しさん:04/01/16 20:24
MFCはヘッダしかついてないんじゃないの?
>>734
C++BuilderXでWTLは使えますか?

関係ないけどWTL扱ってる日本語のサイト
ttp://home.att.ne.jp/banana/akatsuki/
>>744
734じゃないけど当然使えるだろう。
>>741
とっくに答えは出ていますが
>>746
どこに?
748デフォルトの名無しさん:04/01/17 13:02
>>749
だからGetFolderPathはどう使えば良いの?
>>751
ダイアログにメッセージを送ってるんだから、
ダイアログが表示中の場合しか使えないことは明らかだろうが。
ソースを読めない人間がWTLを使おうとすること自体に無理がある。
CFontDialogのGetCurrentFontなんかだと
・ダイアログ表示中
・DoModal後
の二種類の使い方できるけどね。

CFileDialogの場合はダイアログ表示中はGetFilePathを使って、
DoModal後は直接m_szFileNameにアクセスしれってことらしい。
>>751
情けない奴だな
755セイラ:04/01/18 00:21
軟弱者!
756デフォルトの名無しさん:04/01/18 17:32
WTLでMFCのコントロールを使う方法ってないよね。
その逆はあるけど。
757デフォルトの名無しさん:04/01/20 23:50
>>756
適当に移植すれば?ソースもあるんだし
コントロール関係はあえてMFCのを使う必要があるの?

http://www.codeproject.com/miscctrl/gridctrl.asp?target=mfc%7Cgrid
のMFC GridをWTLに移植シマスタ。という方っておりますか?

コレをWTLに移植しようとして挫折シマスタ。
760デフォルトの名無しさん:04/01/22 21:58
>>759
いろいろ試したけど結局自作した
WTLはネットワーク関連のクラスがないのがイマイチ。
CHttpFileとか自作すると結構大変。
そういうのはATLが対応しないのかな。WTLがサポートするのは基本的にGUIだから。
それもそうか。
764619:04/01/23 14:40
ATL Server に CAtlHttpClient なんてのはあるみたい。
ATLにも、MFCとは異なる面からのネットワークサポートはあるっぽい。
使ったことが無いからよくわかんないけど。
>>760

スバラスィー。使わせてくださいませんか?
ソースネクストの警戒電話8がWTL使ってる
>>766
なんでわかる?
>>767
766じゃないけど
spy++でもつかったんじゃない?
ウィンドウクラス名がWTL:・・・・・・だったてことか
てかなんでまた軽快電話を調べようと思ったんだろう
よりによってネ糞トかよ!
質問させて下さい。
リソースにダイアログ(IDD_DIALOG1)を作成し、List Control(IDC_LIST1)を貼り付けてEditLabelをTrueにします。
そして、
class CTestDlg CDialogImpl<CTestDlg>
{
private:
  CListViewCtrl  m_ListView;
  CEdit      m_Edit;

public:
  enum { IDD = IDD_DIALOG1 }

  BEGIN_MSG_MAP(CAboutDlg)
    MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
      NOTIFY_HANDLER(IDC_LIST1,NM_CLICK,OnClick)
      COMMAND_ID_HANDLER(IDOK, OnCloseCmd)
  END_MSG_MAP()
772771続き:04/02/06 08:33
  LRESULT OnInitDialog(UINT , WPARAM , LPARAM , BOOL& )
  {
    m_ListView = GetDlgItem(IDC_LIST1);
    m_ListView.AddItem( 1, 0, _T("TEST1.") );
    CenterWindow(GetParent());
    return TRUE;
  }
  LRESULT OnClick(int idCtrl, LPNMHDR pnmh, BOOL& bHandled)
  {
    m_Edit = m_ListView.EditLabel(0);
    return 0;
  }

  LRESULT OnCloseCmd(WORD , WORD wID, HWND , BOOL& )
  { EndDialog(wID); return 0; }
};
を宣言して、TestDlg.DoModal();でダイアログを表示した後、
クリックすると編集モードになるのですが、何か入力すると
DoModal内でアサートが発生してしまいます。

WM_NOTIFYの処理が全くないので、テキストが設定できないとかいうのなら分かりますが
落ちてしまうのは何故なんでしょうか?
773771続き:04/02/06 08:35
環境を書き忘れてました。
VC++ .NET 2003 STD と WTL 7.1です。
BEGIN_MSG_MAP(CAboutDlg)

CAboutDlgって何よ
775デフォルトの名無しさん:04/02/06 23:46
>>771-772

COMMAND_ID_HANDLER(IDOK, OnCloseCmd)

COMMAND_HANDLER(IDOK, BN_CLICKED, OnCloseCmd)
にしたらどうでしょう ?
776771:04/02/07 05:34
>>775
おぉ、出来た!
テキスト内容を変更した時にWM_COMMAND::EN_CHANGEが出ているのか・・・
リストコントロールが持っているEditコントロールのIDとIDOKが同じ値だったから
OnCloseCmd()が呼び出されていたのが原因だったんですね。

しかし、テキスト編集に使用されるEditコントロールのIDは変更できないんでしょうか?
なんか、WTLとは関係ないような気がしてきた・・・
777775:04/02/10 00:07
>>776

ID の変更なら、SetWindowLong でできますが、
リストビューに影響がでるかもしれないですね。

ウィザードが吐いたコードのままですと
ボタンからクリック以外の通知が来たときにも閉じちゃうので、
COMMAND_HANDLER を使った方がいいでしょう。
ATL7.1にてWindowsNTサービスを作成しようとしています。
VS6.0の場合はCServiceModuleのスケルトンがWizard生成
されていたので、このメンバ関数のインプリメントを
をいじるというアプローチにて一通り動作するサービスを
構築できていたのですが、ATL7.1の場合はCAtlServiceModuleT
に大半の実装が移ってしまっています。
これらのメンバの大半はオーバーライドできないため、
インストール時の特殊な操作を追加しようとしてつまづいて
しまいました。

そこで、CAtlServiceModuleTの派生クラスCAtlServiceModuleExT
を定義し、共通的なカスタマイズを加えた上で,
さらにCAtlServiceModuleExTを派生させて実際のサービスに
用いようとしています。
このとき、たとえばOnInstall()をVisual Stdio内の関数
プロパティからオーバーライド可能な様に定義したいのですが、
atlbase.hをいくらみても、個々のメンバがvirtualになっている
わけでもなく、プロパティ→オーバーライドリストに出現する
ように関数定義する差異がわからないのです。

どなたかこの点について解答をお持ちの方いらっしゃいませんか?
779デフォルトの名無しさん:04/02/11 13:05
>>778
それは、private派生やprotected派生したクラスは
基底側への自動変換が許されていないからだと思われ。
ATL7.1のサービス作成にはバグがあるという噂。
>>780
具体的には?
782デフォルトの名無しさん:04/02/11 16:09
778です。


>>779
うーん。private派生でもprotected派生でもないんですけどねぇ。
そもそもCAtlServiceModuleT::OnInstall()ですので、ベースクラス
は関係ないとゆーか。
CAtlServiceModuleExT側にOnInstall()の実装丸ごとコピーして
やろうとしてるですよ。それでもVisualStdioは思うように動かない
わけで。

>ATL7.1のサービス作成にはバグがあるという噂。

どこかのコンテンツにあったサービスが「起動」できない
ってやつでしたら割と簡単に対処できましたよ。
スケルトンの中にCOMイニシャライズが書かれてて、
それに失敗するとexitしちゃうので、
スケルトン出力後に最低一個のATLオブジェクト追加すれば
OKです。
783デフォルトの名無しさん:04/02/11 17:24
788です。追加調査結果を。
もちろんOnInstallは手書きで書けば自前クラス内でいくらでも
オーバーライドできるわけですが、チーム開発の効率を考えて
VS7.xのプロパティからGUIベースでオーバーライドできるような
ベースクラスにしたいな、という希望があったからなのです。
が、操作しているうちにどうやら無理そうな感じがしてきました。

というのも、
プロパティ→オーバーライドの操作時、画面下に個々のヘルプの
様なモノが表示されているわけで、この情報はソース内には
存在しないものです。となれば、ATLライブラリ自体を調整して
再ビルドするとかしない限り、この部分にカスタマイズしたエントリを
表示することはそもそも出来ないのではないかと思いました。

//AFXマクロの類で制御できるかと思ったのですが甘かったようです。
>>781
たぶん
ttp://program.station.ez-net.jp/
ここのコンテンツのどっか。
ttp://program.station.ez-net.jp/
の作者の方はまともにサービス組んだことないんじゃないですかね。

>すると、イベント ID が 0 となっていて、「リモート コンピュータ
>からメッセージを表示するために必要なレジストリ情報または
>メッセージ DLL ファイルがローカル コンピュータにない可能性
>がある」 とのことです。

これなんかは単にEventLog用のメッセージDLLを登録してない
だけですし。COMもあんまり詳しくないみたいですから
信用しないほうがいいかと。
まああんまりネットには出回っていない技術だからね。
趣味グラマにはハードルが高いんでしょ。
ATL/WTL 7.1 Internal 本出てくれないかなー。
788デフォルトの名無しさん:04/02/13 18:45
質問です。

CHeapPtrクラスを使用する時に、CCRTAllocator(デフォルト)を用いたら、ランタイムが
必要になりますか?
自前でmallocを用意できればいらない。
atlimpl.cppに非CRT版mallocない?
791デフォルトの名無しさん:04/02/18 11:44
#pragma message("atlinmp.cpp is obsolete. Please remove it from your project.")
ATL7にはatlimpl.cppにあったようなスタートアップルーチンや独自malloc無くなったのか?
atlmincrt.libってのがあるけど。
atlmfc\src\atl\atlmincrt
あたりにスタートアップルーチンや独自mallocが存在するみたいだね。
79569式フリーPG:04/02/18 14:01
CLocalAllocaterかCGlobalAllocaterを使っては?
(参照:atlalloc.h)
IEコンポーネントのスレが落ちちゃったようなので、こちらで質問です。

IEのツールバー(dll形式)を自作しているんですが、
IEの中止ボタンが押されたのを、IEコンポーネントの
イベントのようなもので取得する方法を探しています。

IEコンポーネント自体では、これといったものが見つかりません。
何か良い方法はありますでしょうか。
797デフォルトの名無しさん:04/02/20 00:39
>>797
イベントの取得は既にできているんですが、
IEの中止ボタンが押された時に出るイベントが、分からなくて困っています。
>>798
HTMLDocumentEvents2::onstop Eventかな?
あと質問はもうちょっと分かりやすくするように。

で、>>798は解決したのか?
質問です。

WTL 7.1 で AppWizard から MDI アプリケーションを作っています。
メニューの「ウインドウ」以下に開いている子ウインドウが列挙されないのですが
これは仕様ですか?
サンプルの MDIDocVw ではきちんと列挙されているのですが…
>>799-800
>>796>>798です。自分で質問しておきながら、
しばらくこのスレを見ていませんでした。すみません・・・。

>>799を調べてみまして、実装してみました・・・が、どうもイベントが取得できないです・・・。

もうちょい具体的に書きますと、ソースの元として>>797のを使用しています。
その中のinvokeメソッドでイベントを取得しようと試みています。
DISPID_HTMLDOCUMENTEVENTS2_ONSTOPで取得しようとしたのですが・・・。
>>802
ここのソースが参考になるかもしれん。ソース内でDISPID_HTMLDOCUMENTEVENTS2_ONSTOPを検索してみれ。
ttp://www.codeproject.com/atl/popupblocker2.asp
>>803
ありがとうございます。
週末の土日に挑戦してみます。
805デフォルトの名無しさん:04/03/01 23:08
WTL で作られた商用ソフトってどのくらいあるのかな?
警戒電話。
かなり気合入ってるけど実用性が少なめでした。
まぁ既出だけどね<警戒電話
既出って言っても僕が書いたんだけどね。
うわぁ・・・改めてWTLユーザとこのスレの住人の少なさを感じる。
810あっちの9:04/03/01 23:55
なんかWTLスレが立っちゃったみたい。
ここが終わったらWTL組みは移動しよう。

WTLお勉強スレッド
http://pc2.2ch.net/test/read.cgi/tech/1078150663/

といってもこのスレが終わるまであと何ヶ月かかるんだろう・・・
過疎スレを二つも作ってどうすんだ?
住人が分散するだけだろうに。
812デフォルトの名無しさん:04/03/02 23:57
で、801 は解決したのか?
813805:04/03/03 01:01
>>806
そのソフト知らなかったのでぐぐったら2chのスレが
引っかかったんだが、評判悪いのか?
あの会社の製品はみんな評判悪いだろ
815805:04/03/03 22:17
>>814
使ったこと無いから評判とか気にしなかった。
使おうとも思わないようなソフト多いし。
816801:04/03/04 14:03
>>812
自力で解決しました(?)

#define _WTL_MDIWINDOWMENU_TEXT _T("ウィンドウ(&W)")
#include <atlframe.h>

キャプションを日本語化したのが原因でした.
817デフォルトの名無しさん:04/03/07 19:07
> 600
コンソールでビルドしてない?
>>805
> WTL で作られた商用ソフトってどのくらいあるのかな?

・Microsoft Soft Windows ムービーメーカー
・Sonic MyDVD 5

あたりもWTL使ってますね。
どちらもSDIベースの割とシンプルなアプリなので
俺もWTL使ってみようかと思案中。
819805:04/03/08 20:21
>>818

情報ありがとう。
MS も使ってるんだ。
820デフォルトの名無しさん:04/03/09 10:17
http://www.microsoft.com/japan/technet/treeview/default.asp?url=/japan/technet/prodtechnol/winxppro/maintain/winxpsp2.asp
AMD の Athlon64 や Itenium 積んだ WinXPsp2 で ATL アプリが動かなくなったりするんかいな?
なぜ?
サンクとかさ。
なにそれ?
ちゃんと属性変更してるから問題ない
>>824
_stdcallthunk はたんに HeapAlloc された領域に作ってるような・・・
気のせいかもしれないけど。
よかったら Thunk が問題に含まれると思った根拠っていうか
理由って教えてもらえませんか?>>822
827822:04/03/10 10:18
サンクって、メモリ上に機械語つくって、直接それを実行しているでしょ。
ATL3.x は確かスタック上にコード生成していた気がしたからさ。

でも、ATL7.1 のコード見たら、ヒープ上に命令作成していたんだね。
>>827
スタックに生成してたらウインドウプロシージャとして使えないだろ
ATL3.0 の CWindowImplRoot と、CWndProcThunk のコード読んでみたら?
>>828
WinMainあたりで確保されてたら?

ATL3.xはサンクを単なるメンバとして確保してるからCWindowImpl*がスタック上に
確保されるとサンクもスタック上に来る気がするんだが。
831826:04/03/10 22:06
>>827

ああ、そういうことだったんですか。
勉強になりました。
レスありがとうございました。
その辺に触れてる本てATLインターナルくらいか
>>832
ソース全部付いてるから、ホントに突っ込んだ解説書は需要が少なそうだよね。
それ言うとMFCだってC標準ライブラリだってソースが付いてくるわけで
835826:04/03/11 00:39
>>832
ATL インターナル機会があったら読んで見ます。
836デフォルトの名無しさん:04/03/18 22:22
ATL::Base64Encode()って何ですか?
見たままの意味だと思うが・・・
VS6.0SP6日本語版でたね
ようわからんがテンプレート周りのバグはこれで直るの?
DelphiやC#のタイマーコントロールような非表示のActiveXを作成するにはどうしたら良いのでしょうか?
サンプルコードの在り処だけでもいいですから教えて下さい。
環境はVS C++.net 2003 std です。
ちょっと保守しますよ・・・
842デフォルトの名無しさん:04/04/10 12:25
ATLでActiveXコントロール作ってるんですけど、プロパティにTrue/Falseのような
ドロップダウンリスト(項目は「Item1/Item2/Item3/Item4/...」等)を付けたいんですけど
どうしたらいいんでしょうか?

・コレクションを作ってプロパティにする。
・ストックプロパティを自作する。

のいずれかだと思うんですが、具体例を探しきれずに困っています。
XPのSP2のニュース記事読んでもファイアウォールのことは書いてるけどATLのことはほとんど触れられてないなぁ
そして>>843のレスも触れられない罠
そして>>844のレスも(ry
846デフォルトの名無しさん:04/04/29 14:08
MFCと比較したときのメリットととして
どういったことが挙げられますか?
コンパクト
モテる
MFCと比較するならWTL。
850デフォルトの名無しさん:04/05/03 18:50
コントロールの初期化時にDispEventAdviseを呼んで、破棄される時に
DispEventUnadviseを呼びたくてFinalConstructとFinalReleaseに書いたんで
すけど、DispEventAdviseを呼んじゃうと、DispEventUnadviseを呼ばない限り
FinalReleaseが呼ばれないみたいですね。。。
851デフォルトの名無しさん:04/05/03 19:49
ATLって結局なんなの?
MFCとどう使い分けるの?
全く使い方知らないんだが
今からでも勉強する価値ありまつか?

質問責めでマヂ申し訳ないんだが、情報が
やたら少ない・・・
>ATLって結局なんなの?
ActiveX 職人が比較的楽にコントロールを作れるようにしたテンプレートライブラリ

>MFCとどう使い分けるの?
MFC は C++ 用の Windows アプリケーション全般で使えるライブラリ。
もちろん、ActiveX コントロールも作れるけど汎用ライブラリなんでランタイム
が大きいなど ActiveX コントロールを作るうえで不都合があったりする。
ATL を使えば再配布ファイルを少なくすることが可能なので現実問題、
MFC で ActiveX コントロールを使ってダウンロードさせることは少ないと思う。

>全く使い方知らないんだが
マニュアルもあるしサンプルもある。入門書もあった。

>今からでも勉強する価値ありまつか?
MS は .NET を推してるので、その考えに乗るなら必要ないだろう。

ATL は MFC に比べて敷居が高いので、必要が無いなら覚える必要は無いんじゃない?
MFC の代わり通常アプリを作れるように ATL を拡張した WTL (Windows Template Library)
というのもある。ただ WTL は MS 内部でも負けたようで MS 的には無視されてるが…
>WTL は MS 内部でも負けたようで

そうだったんだ・・・
>>852
こらこら
WTLは新バージョンしっかりでてますよ。

まあ相変わらず無サポート、ドキュメントなしだけど
>まあ相変わらず無サポート、ドキュメントなしだけど

だから↑のことを指してるんだろ。<内部で負けた
856デフォルトの名無しさん:04/05/04 23:29
しかしなぜか使いやすかった > WTL
誤解のないように言っておくと、MS内部で負けたってのはつまり、
MSが.NETをメインにしたから今更MFC以外のGUIクラスライブラリを
正式にサポートしようとはしなかったって意味ね。
WTLが使いにくいとかライブラリとして問題があるとかいう理由ではないよ。
技術的というよりマーケティング的に負けたという経緯。
WTLが素敵なライブラリなだけに悲しいね。
858デフォルトの名無しさん:04/05/05 16:43
今2chで話題のA何とかの中の人のMFC講座!
みんないっちゃだめだよ〜wwww
http://www.geocities.jp/aransk88/contents4.html
>>858
なんですか?これは
そこら中に貼ってるな
861デフォルトの名無しさん:04/05/05 18:57
おしえてください。

template <class T>
class CUpdateUI : public CUpdateUIBase
{
public:
CUpdateUI()
{
T* pT = static_cast<T*>(this);
pT;

最終行のpT; って何の意味があるの?
最適化で消されないようにするためじゃないの?
>>862
あーいや、実際のコードには続きがあって、pT->ほげほげ()ってメソッド
呼んでるんで、わざわざpT;って書かなくてもオプティマイザに消されるこ
とはない筈です。
>>861
operator void 呼出かな?

gcc version 2.96 20000731 (Red Hat Linux 7.2 2.96-112.7.2) だと
"conversion to void will never use a type conversion" とか
言われてしまった。
>>864
そんなのがあるんですかー
オンドゥルルラギッタンディスカー

ありがとうございます。
そのキーワードで調べてみます。
866デフォルトの名無しさん:04/05/06 02:54
pMsg;

ってのも見ますよね。
構造体への単なるポインタです。
なんだろこれ。
コピペしたときに、警告を黙らせるためでねーのかな。
(そーゆーコピペ元があるとか)
>>867
どゆこと?
初期化されていますが使われていません
の警告を防ぐのが実際使うときにも消さずに残ってるだけだと思ってるけど
あげとこう。
ATL7.xの本て出るんかな
一応こっちにも貼っておく。
WTL7.5&オープンソース化
http://sourceforge.net/projects/wtl
http://www.itmedia.co.jp/news/articles/0405/13/news016.html
AppWizardは.NET以降か
875デフォルトの名無しさん:04/05/13 14:59
WTL7.5のCStringのオペレータの戻り値が
const CString&
から
CString&
に修正されてるんだけど、ATL::CStringではどうなってる?
ATLもオプソ化してくれないかなあ。
そうすればVC++ Toolkitでウハウハ。
>>876
厚かましいぞ
878デフォルトの名無しさん:04/05/13 18:30
>>875
System.String
879デフォルトの名無しさん:04/05/13 18:47
>>878
(・∀・)カエレ!!
880875:04/05/14 21:09
あ、ごめん。OnlineMSDNのCStringT::operator =を見たら
CThisString& operator=(〜);
とか書いてたわ。
881デフォルトの名無しさん:04/05/15 21:07
個人BlogではWTLオープンソース化が紹介されてたりするが
ほとんど紹介だけで、知名度が上がるほどではなさそうだ・・・・
882デフォルトの名無しさん:04/06/10 23:38
ATL.NETって出る予定はありますか?
何言ってるの君・・・
>>882
残念ながら、出ないとのこと。
WTL.NETならでる可能性はあるけどな。
WTL.NETて何?
886デフォルトの名無しさん:04/06/11 02:43
質問でつ。
CComObject<T>::CreateInstanceで作ったインスタンスって
明示的なAddRefとReleaseって必要ですか?
それとも、CComObjectが勝手に面倒見てくれますか?

あと、ブラウザ上で動くActiveXコントロールを作ってるんですが
ブラウザが閉じられたタイミングでデストラクタが走る、と
考えてて正しいですか?
>>886
CComObject は参照カウントの管理をしない。
明示的に AddRef, Release をするか、CComPtr を使え。

ActiveX のほうだが、参照されなくなれば、デストラクタが走るだろ。
タブブラウザとかだとすぐには開放されないかもシレン
破棄されるときに、ログをはくようにして、確認してみたら?

888886:04/06/12 00:37
>887
サンクス。

冷静に考えると、ブラウザとは関係なく参照カウンタが0になったら解放されて
ブラウザ終了時にReleaseされてなかったらメモリリークするってことか。
なんか超初歩的な質問しちゃってスマソ
889r:04/06/26 12:03
俺の目的は「ファイルを作って、その作成日時を2004.2.14 17:33:08にする」こと。
#include "stdafx.h"
#include <atltime.h>
int _tmain(int argc, _TCHAR* argv[]) {
    ATL::CTime ct1( 2004, 2, 14, 17, 33, 8 );
    ATL::CFileTime ft1( ct1.GetTime() ), ft2;
    ::WIN32_FIND_DATA fd1;
    ::CreateDirectory( "iida", 0 );
    ::HANDLE h1 = ::CreateFile( "iida\\riho.jpg", GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 );
    ::SetFileTime( h1, &ft1, 0, 0 );
    ::GetFileTime( h1, &ft2, 0, 0 );
    ::CloseHandle( h1 );
    ::HANDLE h2 = ::FindFirstFile( "iida\\riho.jpg", &fd1 );
    ::FindClose( h2 );
    ATLTRACE( "ct1 : %s\n", ct1.Format( "%Y.%m.%d %H:%M:%S" ) );
    ATLTRACE( "ft1 : %s\n", ATL::CTime( ft1.GetTime() ).Format( "%Y.%m.%d %H:%M:%S" ) );
    ATLTRACE( "ft2 : %s\n", ATL::CTime( ft2.GetTime() ).Format( "%Y.%m.%d %H:%M:%S" ) );
    ATLTRACE( "fff : %s\n", ATL::CTime( fd1.ftCreationTime ).Format( "%Y.%m.%d %H:%M:%S" ) );
    return 0;
}
こんなコードをかいて、実行してみました。
890r:04/06/26 12:09
>>889
あれ?バックスラッシュが全角になってしまた...

んで、実行すると
ct1 : 2004.02.14 17:33:08
ft1 : 2004.02.14 17:33:08
ft2 : 2004.02.14 17:33:08
fff : 1970.01.01 09:00:00
こんなんなる。1970年?なんでだ?!

んで、ファイルのプロパティをみてみると
「作成日時:1601年1月1日、9:01:47」
とかになってる。何だこりゃ?!

WindowsXP Professional SP1 (多分最新)
VC++ .NET 2003 スタンダード、コンソールアプリ、ATL使用。

知りたいのは1.なんでこうなるのか 2.MFCを使わないでファイルのタイムスタンプを設定するにはどうすればいいのか
の二つです。
>>889
CTimeとCFileTimeでは単位?が違うんじゃなかったっけ?
SystemTimeToFileTime使ったら?
892891:04/06/26 13:58
すまん。俺のレスは忘れてくれ。
>>891-892
いや、それで合っていると思うよ。

int _tmain(int argc, _TCHAR* argv[])
{
  ATL::CTime ct( 2004, 2, 14, 17, 33, 8 );
  SYSTEMTIME st1;
  ATL::CFileTime ft1;
  ct.GetAsSystemTime(st1);
  ::SystemTimeToFileTime(&st1, &ft1);
  ::FileTimeToSystemTime(&ft1, &st1);  // 再取得
  SYSTEMTIME st2;
  ATL::CFileTime ft2( ct.GetTime() );
  ::FileTimeToSystemTime(&ft2, &st2);
  ATLTRACE( "ct : %s\n", ct.Format( "%Y.%m.%d %H:%M:%S" ) );
  ATLTRACE( "st1 : %s\n", ATL::CTime(st1).Format( "%Y.%m.%d %H:%M:%S" ) );
  ATLTRACE( "ft1 : %08x:%08x\n", ft1.dwHighDateTime, ft1.dwLowDateTime );
  ATLTRACE( "st2 : %s\n", ATL::CTime(st2).Format( "%Y.%m.%d %H:%M:%S" ) );
  ATLTRACE( "ft2 : %08x:%08x\n", ft2.dwHighDateTime, ft2.dwLowDateTime );
  return 0;
}

結果は、
ct : 2004.02.14 17:33:08
st1 : 2004.02.14 17:33:08
ft1 : 01c3f320:9c1aa200
st2 : 1970.01.01 09:00:00
ft2 : 00000000:402ddd44
894r:04/06/29 07:06
>>891-893
なるほど!
そか、GetTimeで得られる者が全然互換性なかったんだな。
戻り値の型も違うんだし、そもそも気づくべきでした...

ありがとう、たすかりました。
895デフォルトの名無しさん:04/06/29 14:37
CAtlRegExpってマルチバイトだと誤検出しちゃうんだが...なzに
結果: -> 0: "test"
Unicode版なら大丈夫なんだよな。

#include<atlstr.h>
#include<atlrx.h>
int main()
{
const unsigned char reg[] = "({.+}):"; //グループは{}で指定...(泣
const unsigned char target[] = ("test ");//test[全角スペース]

CAtlRegExp<CAtlRECharTraitsMB> reUrl;
REParseError status = reUrl.Parse(reg);
if (REPARSE_ERROR_OK != status){// Unexpected error.
return 0;
}
CAtlREMatchContext<CAtlRECharTraitsMB> mcUrl;
if (!reUrl.Match(target,&mcUrl)){// Unexpected error.
return 0;
}
for (UINT nGroupIndex = 0; nGroupIndex < mcUrl.m_uNumGroups;++nGroupIndex){
const CAtlREMatchContext<CAtlRECharTraitsMB>::RECHAR* szStart = 0;
const CAtlREMatchContext<CAtlRECharTraitsMB>::RECHAR* szEnd = 0;
mcUrl.GetMatch(nGroupIndex, &szStart, &szEnd);
ptrdiff_t nLength = szEnd - szStart;
printf("%d: \"%.*s\"\n", nGroupIndex, nLength, szStart);
}
}
896デフォルトの名無しさん:04/07/04 21:03
教えてください。
MFCよりATLのCStringのほうが使いやすいと前レスで読んだのですが
MFCのプログラムでATLのそれを使うには具体的にどうすれば(どの
ヘッダを取り込んで、どのライブラリをリンクして...)
いいのでしょうか?
897デフォルトの名無しさん:04/07/05 10:45
プロジェクトのプロパティを開いて、一番上の項目で「ATLを動的リンクで使用する」を選ぶ。
プログラム中ではATL::を省略しない。
using ATL::CString
でええやん。
>>>897
え?
900896:04/07/05 22:15
>>897-898
遅れますた。今会社から帰ってきますた。
レスどうもありがとうございます。m(__)m
ところでATLを静的にリンクしてはまずいので
しょうか?
>>900
普通するもんかと
テンプレートライブラリだし
リンクして無くてもATLは使える・・・
903デフォルトの名無しさん:04/07/12 13:35
勉強しなくてもATLは使えまつか?
なんだかんだで900突破してたんだ
>>903
帰って下さい。あなたにこのスレは合いません。
ATLの本てもう出ないのかな
結局はソースを読むことになるし、
とっかかりはMSDNとウィザードがつくるスケルトンコードで間にあう。
そんなこと言い出したら世の中のプログラミング本はほとんどいらないことになるからナンセンス。
実際いらないと思うぞ
ソースとスケルトンコードで間に合うと思っている人間がなぜここにいるんだ。
無料のVCToolKitでも使えるATLの代わりになるものってない?
912はじめて:04/07/16 00:56
>>911

APPのコードをライブラリ化。
長文ソース簡略化で作業時間、効率を削減。

基本的なWin32システムを支援します。

最強のACライブラリー
ttp://www.geocities.jp/osoftjp
ほす
VC++2005ではATL8.0になるんだな。
なんかもう無駄に数字だけ上がってる気がしてきた。
915デフォルトの名無しさん:04/07/21 17:54
つか、なぜにATLなの?
圧倒的にMFCの方がやってる人多いでしょ?
ミーハーだから
多いからどうした。
918デフォルトの名無しさん:04/07/21 18:50
>>917
複数でプログラム作ったことないでしょ?
仕事でプログラムを作成する場合、一人ですべてを書き上げるなんて
ことはよほど小さな仕事でもない限り、ありえない。
先日納品したシステムは15名で作ったが、そのなかに
C++Builderしかできませ〜んなんて奴がいて、切っちゃおうかな
なんて考えたよ
MFCもできますが。何か?
どこにATLしか使わないなどと書いてんだ?
話の前提がおかしすぎ。
困るねぇ、とんちんかんなこと言い出す奴がいると。
>>918みたいな奴は切っちゃおうかななんて考えたよ。
922デフォルトの名無しさん:04/07/21 18:58
さすがに2chはdomesticな人が多いですね
夏休みだねぇ
>>923
納品したとか書いてるからあれでも社会人らしいよ。
釣りだったってことにしてあげなよ。
かわいそうな子なんだね
WTLのバージョンがあがったのに話題にもなりませんかそうですか・・・
WTLのスレは別にあるんで
2005BetaにはもうATL8.0付いてるの?
ちょいと聞きたいんだけど
MFCではメッセージハンドラ内で投げられたCException例外は
ハンドラ内でcatchしなくてもフレームワークがcatchしてメッセージBOXを出してくれますよね。
それと同じ様に、ATLでもハンドラから漏れ出た例外をcatchしたいのです。

とりあえず今はBEGIN_MSG_MAPとEND_MSG_MAPをコピペして
try, catchを追加した独自のマクロを使ってますが…
もっとスマートな方法は無いでしょうか?
>>930
template <class T>
class CExceptionCatcher
{
 public:
 static LRESULT CALLBACK WindowProc(
   HWND hWnd,
   UINT uMsg,
   WPARAM wParam,
   LPARAM lParam
 )
 {
  try
  {
   return T::WindowProc(hWnd, uMsg, wParam, lParam);
  }
  catch (...)
  {
   ...;
  }
  return 0L;
 }
};
なんてのを継承するのはどう? WindowProc を持っているクラスを判断してテンプレートパラメータに
しなきゃいけないところがなんか泥臭いけど・・・
>>931
ありがとうございます。
いいかも、と思ったのですがCWindowImplBaseT<>::WindowProcを見てみると
例外のこと考慮されてないっぽいのでなんか危なそうです。
できればProcessWindowMessageから外に例外を出さないようにできないかなと考えて思いつきました。

#define MSG_MAP_TRY try {
#define MSG_MAP_CATCH(type, func) \
} \
catch(const type& e) \
func(e); \
}

BEGIN_MSG_MAP(theClass)
MSG_MAP_TRY
// この間のハンドラで起きた例外をキャッチする
MSG_MAP_CATCH(std::exception, ExceptionFunc)
END_MSG_MAP()
WSHのGetObject 関数みたいに
未登録コンポーネントのインスタンスを作成する方法はありますか?
934デフォルトの名無しさん:04/07/25 15:39
あげとこう。
MFCもATLも最近始めたばっかりなんだがどう使い分けたら
いいのかサパーリわからん。
ATLで開発するときに、MFCは絶対使わない前提ですが
GDIのAPIなんかをいちいちSTLでラップしてますか?

あ・漏れはめんどくさいからしません。
最近、10年前のWindows API(16ビット)サンプル多数つきの本が
すごく役にたったりしてます。

WTL。
STLでラップって何よ
>>936の文は支離滅裂な感じがする。
>>936
CDC とか使うか?って話?漏れは使ってない。
使う価値がたいして感じられないから。

しかし CHandle なんかは C++ 特有のスコープ外れたら
破棄されるあたりが便利なので使ってる。
いちいちラップとか書いてるから、CDCも知らないんじゃ
DrawTextでストリングクラスを受けたりするかってことじゃないのか
あぁ、STLでラップってstd::stringで受けられるようにするって意味か。
なるほど。でも STL でラップしたい関数(群)ってそんなにあるかな?
文字列はどっちかっていうと CComBSTR 使ってるし・・・
俺もCStringで足りるなぁ。
どうせstring(CStringでもいいけど)を引数に使うメリットったって、
文字数を関数に渡さなくて良いとかその程度だべ?
GUIアプリあまり作らない人間にとってはstd::stringの方が馴染み深いと思う
でもそれだけのためにいちいちラップっていうのも。
俺ならc_strでいいやと。
948はじめて:04/08/09 20:21
System.Stringでいいやと。
おじさんつまんなーい。
951
952936:04/08/10 08:11
STLでラップって、少々言い方が悪かったです

HDCに関わる操作クラスを自作する。テンプレートクラスとかのSTL
機能も利用して再利用可能なクラスを作る。って事をしたほうが合理的か
どうかって事を聞きたかったのです。

>>940
CDCって、MFCをインクルードしたプロジェクトで有効でしょう?
MFCは使いたくないのでAPIごりごりなわけじゃないですか
やっていて、自分なりの結論としては、とりあかずAPIごりごりが
正解な気がします。これで動作したら後々クラス化できると思うし

> テンプレートクラスとかのSTL 機能
用語の使い方がおかしい。
> CDCって、MFCをインクルードしたプロジェクトで有効でしょう?
なんども言われているが、WTLにすでにある。
>>953
WTLのスレにいってきます
やっぱりただの無知だったのか
>>955
行ってきましたがこれを学習するよりも
API直書きのほうが効率が良いと思いました。
>>956
マテマテ。
WTL くらいは使っても良いと思うぞ。メッセージマップとか。
その辺だけならドキュメントを1時間も読めば使えるだろうから、
「学習する」って程のものでもないし。
皆につっこまれて意地になってるだけだろ。
いえいえ、>>958意地になってなんかないですよ

実装が既に終わりましたので。次回の機会に使わせてもらいます。
ところでVC++6とVC.NETで同じソースをビルドするとして
VC++6(SP6)プロパティページダイアログの動作が怪しいなんて事ありませんか?

.NETビルドのATLはVB6には貼れない
VC++6ビルドのATLは.NET VBに貼れる
互換性についてのドキュメントってどこにあるのでしょうか?
教えて君でスマソ
日本語がめちゃくちゃだな
なんか言うばかりでレアな実装している人はいないんだな
また俺語ですか<レアな実装
レアな実装とは、往々にしてアレな実装である
IWebBrowser2 についてお聞きします。

Navigate 先を about:blank にしメモリ上の HTML を表示する、
という処理は書けたのですが、この HTML 内にある、
相対リンクがどうにも意図どおりに解釈されません。

具体的には
・外部スタイルシートを実行ディレクトリからの
 相対URL指定しても無視される。
・この文書内のアンカーへまともに飛べない。
 #some_where に行こうとすると
 about#some_where なる何も無いページを表示する
と言った症状です。

普通にテンポラリファイルに書き出して、
サクっと読み出すのが吉なんでしょうか?
質問させてください。

ATLの勉強のために、MSDNの ATL チュートリアル を参考にして作っていました。
このチュートリアルで説明しているコントロールに、htmlのparamタグを使って
値を渡せる機能を追加しようとしたんですが、タグに指定した値にはならず
デフォルトの値から変化しませんでした。
どの用にすればこの機能を使うことが出来るでしょうか

調べたところ、IPersistPropertyBagを使えば出来るようになるということで
使ってみたんですが、症状は変わりませんでした。
新規プロジェクトのウィザードで属性のチェックをつけた状態(チュートリアルではチェックを外していました)で、
IPersistPropertyBagを使ったときは上手くいったんですが、その状態ではイベントを追加することが出来ませんでした。
(追加してビルドするとfire_ClickInとfire_ClickOutというメソッドがないというようなエラーが出ます。)

参考にしている ATL チュートリアル
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vccore/html/_atl_ATL_Tutorial.asp
967デフォルトの名無しさん:04/08/14 22:12
あげとこう。
>>966
IObjectSafetyを実装して、INTERFACESAFE_FOR_UNTRUSTED_CALLER と
INTERFACESAFE_FOR_UNTRUSTED_DATA あたりはサポートした?

あと IPersistPropertyBag は、キミの追加したプロパティの保存と読み込みを
勝手にサポートしてくれたりは「しない」から、ちゃんとBEGIN_PROP_MAPとか
使ってプロパティを登録してあげる必要があるけど、これはやってますか?
969966:04/08/16 21:19
すいません、自己解決しました

public IPersistStreamInitImpl<CMyCtrl>,
public IPersistPropertyBagImpl<CMyCtrl>
COM_INTERFACE_ENTRY_IMPL(IPersistStreamInit)
COM_INTERFACE_ENTRY_IMPL(IPersistPropertyBag)
COM_INTERFACE_ENTRY_IMPL_IID(IID_IPersist, IPersistPropertyBag)
を追加することで解決することができました。

参考ページ
ttp://www.faqchest.com/msdn/ATL/atl-97/atl-9710/atl97100800_09033.html

お騒がせしました。

>>966
返信ありがとうございます。

>IObjectSafetyを実装して、INTERFACESAFE_FOR_UNTRUSTED_CALLER と
>INTERFACESAFE_FOR_UNTRUSTED_DATA あたりはサポートした?
INTERFACESAFE_FOR_UNTRUSTED_DATAはサポートしていませんでした。
パラメータの安全性が保障されるとの事なので追加したいと思います。

>あと IPersistPropertyBag は、キミの追加したプロパティの保存と読み込みを
>勝手にサポートしてくれたりは「しない」から、ちゃんとBEGIN_PROP_MAPとか
>使ってプロパティを登録してあげる必要があるけど、これはやってますか?
確認したところ、やってありました。
970966:04/08/16 21:20
>>968
すいません、アンカーミスです
968さんありがとうございます
971デフォルトの名無しさん:04/08/28 12:43
あげとこう。
972はじめて:04/08/31 02:26
ATL.NETキタ━━━━(゚∀゚)━━━━ッ!!
ttp://www.atl.net/
973マイク ◆yrBrqfF1Ew :04/08/31 02:58
ATLはキモイな。
内容がな(ry
内容がなんと水鳥拳
976デフォルトの名無しさん
あげとこう。