1 :
デフォルトの名無しさん :
02/08/11 10:38 テンプレートをベースにした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
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 に任せる のどれが一番ナイスな手法ですか?
24 :
デフォルトの名無しさん :02/08/22 23:22
質問です。 ATLで作成したActiveXを、IEで表示しているのですが、 OBJECTタグで指定したWIDTHやHEIGHTの値を、 PARAMタグが処理される前に取得したいのです。 (もしくは一つ目のPARAMタグ処理) どうもPARAMタグ処理後でないと、ウインドウが作られないため、 ウインドウサイズの取得が出来ません。 何かよい方法はないでしょうか。
25 :
デフォルトの名無しさん :02/08/23 00:20
>>24 SetExtensionなんちゃらかんちゃらをオーバーライド
(ソース見られないところからだからいい加減)
>>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の方が早かったかな?
これより早いとオブジェクト自体作られていないっていうギリギリだったはず。
ATL初心者です。。 ATLの動作がいまいち理解できません。 Donutをダウンロードしてステップ実行をしているのですが、メインのMDIウインドウ はどこで定義されているのでしょうか? MDIのウィンドウを標準ではなくて、自前の画像などを貼り付けてメディアプレーヤー みたいなブラウザを作ろうと思っています。 あと、ATLを解説しているいいHPを知っていたら教えてください。 お願いします。
>>29 良書は沢山あるけど、ATL日本語の良サイトはないな
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の質問も受け付けていますか?
すれ違いだタコ
48 :
デフォルトの名無しさん :02/09/12 19:13
ATLのAって何?Application?
ActiveX
51 :
デフォルトの名無しさん :02/09/12 19:29
Ask meじゃネーノ?
>>48 Active Template Library
53 :
デフォルトの名無しさん :02/09/13 17:22
ATLなんて、ATLWindow クラスと、ATLControls に含まれるコモンコントロールラッパー、 そして ATLスマートクラス しか使わないが。 こんな俺は逝ってよしか?
xxxModuleは使わんの?
>>54 ATL7 だから、 特に意識はしてない。
自分でインスタンス作る必要ないし。
>>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 ありがとうございます。 それが、スケルトンプロジェクトで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(); ならうまく行くのかどうかチェックしてみ。
>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(); }
>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には非常に興味があるので、どうかご教授願います。
ひょっとしてWTL7は.NETでしか使えないという罠?
78 :
デフォルトの名無しさん :02/10/29 11:10
当然C++.NETでしか使えないわけだが そんなものだれが使うんですか?
>>76 ATL インターナルにWTLの話題はないよ。
つーか、WTL 出る前に書かれたものだし。
ATLウィンドウクラスを解説した章は WTL にもそのまま当てはまるし、
読んでおけば、WTL のソースをそれほど苦労することなく読めるようになる。
あと、WTLを扱った本はないはず。(少なくとも日本語では)
>>77 んなことたぁない
>>79 WTLの話題は無いのですね。。。残念です。
「ATL COM プログラミング」にウインドウクラスの話題があったかどうか覚えていないので、まずそれを確認してから「ATLインターナル」を読みたいと思います。
それと、サンプルのAlphaって、XPじゃないとコンパイルできないのでしょうか?
>>79 Alpha って、コモンコントロールのサンプル?
WINVER とか その辺のマクロを直せばコンパイルとおるだろ
WTLは?
84 :
デフォルトの名無しさん :02/11/08 15:37
MSDNのサイトからPlatformSDKを落して使っています。 WTLを使って見たいのですが、これはSDKには含まれて いないのでしょうか?個別に落す必要があるのなら それはそれで構わないのですが。。。どうなんでしょうか?
>>85 さんくす個。とりあえず、内容なので落したの入れてみました。
MFCすらつかったことがないので、WTLのよさが分るかどうか
ちょっと怪しいんですが、いろいろソース読んだりして勉強したい
です。
C言語
Ask meじゃネーノ?
90 :
デフォルトの名無しさん :02/11/29 12:39
age
91 :
デフォルトの名無しさん :02/12/02 00:15
age
そろそろ ATL/WTL は賞味期限切れ。 どとねとに移行しなされ。
94 :
デフォルトの名無しさん :02/12/19 21:14
WTLでActiveXって、どうやって使うの? クラスウィザードも使えないし...
95 :
デフォルトの名無しさん :02/12/19 23:40
IWebBrowser2の使い方が禿しく分からん。 誰かバカにもわかるように解説してりろ。
>>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なんて出てきた所で気がつきゃしないよ。もっと直感的な名前にしる
>>103 十分直感的な名前やろ。あんたの勘が悪いだけ。
あと、char*への変換が目的ならW2Aにしとけよ。分かったな。
俺なら_bstr_tかWideCharToMultiByte()使うけどな。
sageてまで荒らすとなるとやっぱ完璧に 共有荒らしハンドルとして定着ですか
ATL7.0 なら、CA2WEX とか CW2AEX とかの、 C*2[C]*EX テンプレートクラスを使え。 そのほうがより安全だ。
あああああああ、 _ATL_MIN_CRT ってやってると リリース・ビルド が通らん! 愚痴なのでスルーで。
WTLで小さなプログラム作りたいのに fstreamとかiostream使うとすぐにでかくなっちゃう。 テンプレート実装のfstreamとかあればいいのに。
>>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不在のダイアログしかできないです。
それとも単に、ビルドのオプションを間違えているのでしょうか?
age
age
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を提出することがある。
まじっすか、やだもーん
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万集める方法を考えた方がいいと思うぞ。
ATLのスマートポインタやらなんやらつかうより、 boostやloki使うほうがいいよな? まー、適材適所なのだが。
5nd
>>129 そーか? ATL の CComPtr はよく出来ていると思うがな。
Loki の ComRefCounted ポリシーは穴だらけ。
>>132 あげついでになんとなくしったかぶって発言してみました。
正直lokiもATLもまだ使ってないっす。
boostとWTLは使ってるんだけどね。
ところでATLでboost/lokiよりすぐれてると思われるものってほかにありますかね?
それにしても日本語の情報サイトってすくないなー。
英語めんどくせー。
昇進しそびれたボランティア★が揚げ足取りをして罵倒する所ですね。
観念しなさい
実験段階は既に終了して、通常運用だと思う。 110番の日なのは狙ったのかな。
ところで、アホーの投票祭り無いの? 俺は「2ちゃんねるってなに?」に投票してきたけど。
激しく同意。ヤナ時代になったもんだ・・・
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を提出することがある。 今までもやってたくせに
スレタイもうちょっと・・・なんとか・・・ならないんだよね。
早く閉鎖してください。 お願いします。
もしこれが実行されたらにちゃんは閉鎖だな、きっと
wって2ちゃん発祥なの? ださくないか? (笑)もザサイから、(^^)がナウイよ。
いや、最近のニュー速は本当に良くなってきたと思うよ。 ニュース速報板だからね。
(^^)
心配なら学校休ませればいいのに。ってか、他人の子供なんて 正直どうでもいいような気がするんだなぁ。
今日新たに登録した顔文字 ↓ ヽ(*`Д´)ノぬっころぬ!!!!
「掲示板の削除依頼は内容証明ですべし」というバカバカしい法律はありません。 そのとき裁判官は「条理」を根拠にします。社会的常識も条理です。 内容証明でなくても裁判で事実を証明できれば勝てます。 プロバイダ責任制限法の条文を読んだけど、どうして免責の対象になるのか?教えてくれる?
大変なんですねぇ・・・頑張ってヽ(´ー`)ノ
(^^)
訴えられたら捕まる?(^_^;)なんか勘違いしてるでしょ
(^^)
160 :
デフォルトの名無しさん :03/01/21 16:09
浮上
(^^)
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でやったほうがいい、っていっても却下される。
○○って作るのは簡単なんだけど、多分メンテできる人が少ないから避けられると思う。 しかもほとんどの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でできたよ。
>>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のプロパティ見ても空っぽになってる。
ツールバーの別のボタンを押せ
>>228 どこどこ?
マジでわかんない。
つか.NETからだよね、これって。
VC++6.0じゃこんなこと無かったし。
raptのfixedwtl7と標準のWTL7をdiffしてみたが WTL7も相当バグってるな。
そんなにバグが放置されまくってること自体 マイナー & MSにやる気がないことの現れだな
APIのバグも長期放置するけどナー
開発していて、望んだ動作をしていない場合、 WTLのソースをその都度変えちゃってる。 バグなのかどうかはわからんが。
>>234 改変したWTLのソースごと持ち運んでも大したサイズにならないんだし、
別にいいんじゃない?
改変したWTLで作ったソフトをオープンソースで公開するとしても、 改変部分のdiffを取って同梱するか、 Raptみたいに改変したファイルだけ付属しちゃえばいいんだし。
テンプレートライブラリだから微妙に改造された少しずつ異なる DLLが出回って収拾つかなくなったりもしないし
238 :
デフォルトの名無しさん :03/03/12 02:37
ヘッダファイルだけってのは手軽でいいよな。 ATLもそうなの?
おまえらライブラリのソースを勝手に変更して、 「スタティックリンクしかしないからいいじゃん」 っていってる厨と同レベルだな
何が厨なのか説明しないお前が厨
WTLのヘッダがが変更されてることに気づかずソースを参考にして別のプログラムを作ってみたら挙動が違って混乱する罠
でも、変更したものを配布しちゃって良いのか?
差分だけなら問題なし 差分だけで同一性保持権の侵害に問われる可能性もなくはないが プログラムの著作物でバグ取りという前提だからさらに無問題
244 :
デフォルトの名無しさん :03/03/12 22:16
WTLでアイコンつきメニューを使う場合はわざわざコマンドバー作らないと駄目ですか? CMenuの実装見てもオーナードローらしきコードは見当たらないし。
しつこくてすまぬ。 どうしても.NETのATLプロジェクトでバージョンが 反映されないのが分からない。 たすけて・・・。
246 :
デフォルトの名無しさん :03/03/13 03:04
ライブラリを変更しないのは、主にライブラリのバージョンアップ時に、 自分のソースとライブラリのソースを、変更しなくて済むようにするためだろ。 なに? WTLはもうバージョンアップしない??
247 :
デフォルトの名無しさん :03/03/13 06:14
>>246 バージョンアップしたらまた直すが。
つーか、バグだろうし。
>>247 さんくす。
それもダメでした。
いくつか作ったけど、どれもこれもダメ。
プロキシ/スタブの方は問題なく反映される。
環境も会社と家ので試したけどどちらもダメ。
他のみんなは反映されてるの?
250 :
デフォルトの名無しさん :03/03/13 22:35
WTLおもしろそう。 これから勉強しよ〜っと。
251 :
デフォルトの名無しさん :03/03/13 22:48
ATLってなんでtry〜catch使うとコンパイラで警告出るの?
ちょっと触っただけだけど興味深い・・・ VC7だと毎回「古い形式じゃゴルァ!」と出るのがウザイんだけど・・・
マジ? どこがどう古い形式なんだ?
あれ、初めの一回だけ? もう出なくなった。
何が古い形式なのかわからんけど、ワークスペース等は一度変換してしまえば無問題
257 :
デフォルトの名無しさん :03/03/15 02:50
属性付きプロジェクトでWTLのビルドを通すようにするのには苦労したぜ。
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って何?
261 :
デフォルトの名無しさん :03/03/17 23:08
VC7でWTL/ATLのプロジェクト作ってコンパイル→実行まで出来るんだけど CMessageFilterとかWTLの独自アイテムの定義に「定義に移動」で たどり着けないのですが、そういうものと思ってあきらめた方がいいですか?
ATLとWTLのファイル全てプロジェクトに追加すれば良いんじゃないのか?
オプション設定に検索するソースディレクトリの指定がなかったっけ?
Inclide file のPathにWTLのIncludeのパスを設定してもだめでした・・・
265 :
デフォルトの名無しさん :03/03/18 12:48
一度作ったCOMのDLLファイル名を変えたいんだけど、どうすればいいかおせーて。 古いDLLがHogeHoge.dllだとします。 で、新しい関数を追加した新しいDLLはHogeHoge2.dllです。 新しい関数はまだ信頼性が保証できないので、二つのDLLを共存させたいんです。 そこで古いプロジェクトに関数を追加して、GUIDを変えたんですが、うまく動きません。
動きました。RGSファイルを書き換えていませんでした・・・
>264 inludeのパス、libのパス、そしてsrcのパス!
う。inludeじゃなくてinclude
269 :
デフォルトの名無しさん :03/03/19 20:50
>>267 lib , src は include と同じでいいのかな?
WTLってIncludeしかないよね?
…あ゛、そ、か。 普通のライブラリのつもりでいた。逝ってくるよ…
271 :
デフォルトの名無しさん :03/03/22 14:39
良スレあげ
272 :
デフォルトの名無しさん :03/03/27 22:42
もしかしてWTLのことってMSDNに記述無いの?
274 :
bloom :03/03/27 22:52
276 :
デフォルトの名無しさん :03/03/29 02:09
あげ
277 :
デフォルトの名無しさん :03/03/30 23:37
ATL ってどこでダウンロードするの?
VCに付いてくる。 ATLはダウンロード出来ないはず
あ、DigitalMarsのサイトでダウンロード出来たかも知れない
あげあげあげ
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++すら活かせそうにないけど(´Д⊂
>>286 >何よりMFC触ったことがない!
(・∀・)イイ!!
WTL7.0ってWinXPじゃないとダメなのか・・・
んなこたーない
>>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でエラーでまくるのだけどうちだけ?
>>300 スコットってあの、デジタルカウボーイ"Juranek Scott"か!
こいつは、やばいことになってきたな…
WTLで作ったソフトはWin95でも動きますか? MFC7で作ると動かないので、VS.NET以降でのネイティブアプリは WTL+C++標準ライブラリがいいかなぁと思ってるのですがどうでしょう? 意見を聞かせてください。
#define WINVERとかちゃんとすれば動きます。
304 :
デフォルトの名無しさん :03/04/10 22:58
MDIの子Frameを複数種類持つことは出来ますか? VS6のソースviewとリソースviewみたいな感じの。 もしかして同じ子Frameクラスを継承すればいいだけ?
_∧_∧_∧_∧_∧_∧_∧_∧_ デケデケ | | ドコドコ < 小泉政権崩壊まだぁ〜!? > ☆ ドムドム |_ _ _ _ _ _ _ _ _ _| ☆ ダダダダ! ∨ ∨ ∨ ∨ ∨ ∨ ∨ ∨ ∨ ドシャーン! ヽ オラオラッ!! ♪ =≡= ∧_∧ ☆ ♪ / 〃(・∀・ #) / シャンシャン ♪ 〆 ┌\と\と.ヾ∈≡∋ゞ || γ ⌒ヽヽコ ノ || || ΣΣ .|:::|∪〓 || ♪ ./|\人 _.ノノ _||_. /|\ ドチドチ!
306 :
デフォルトの名無しさん :03/04/16 09:27
ATL7なDLLからWTLを使ってウインドウ出したい場合って、 CComModule使わないと駄目ですか?
WTLってMFCのCInternetSessionみたいなネット関連のクラスはないの……?
インテリセンスさへ効いてくれれば業務でも使えるのだが・・・
(^^)
310 :
デフォルトの名無しさん :03/04/17 15:58
cppと分けてないとか……
VC2003 soon age
314 :
デフォルトの名無しさん :03/04/18 02:44
MFC使ったこと無いのですが、 WTLのウィザードで生成される BEGIN_MSG_MAP(CMainDlg) MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) END_MSG_MAP() みたいなのって、もしかしてMFCの部類のマクロですか?
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でも使えたよ。
>>318 レスありがとうございます。
申し訳ないです、かなり理解してないかもしれません。
アプリのメインウィンドウの方は普通に(つまりWTLの
フレーム関係なしに)初期化しております。
その上で別途モードレスダイアログを立ち上げています。
・・・・書いている内に、かなり変な事している気がしてきました。
やはりメインウィンドウも、WTLを使った形で
生成するべきでしょうか。もう少し良く考えてみます。
俺は今猛烈に感動している。 「ATL?よく知らんけどCOMで何かすんだべ?俺には関係ないよ。」 と思っていたが、このスレやここからリンクするサイトを読んで、さらに今 MSDNの「ATL 3.0ウィンドウ クラス: 入門」を読んで考えを改めた。 これは1999年のドキュメントだが、俺は今までこんなすばらしいものを 見過ごしてきたのか。 2003年春、俺はATL/WTLに目覚める。
俺もCOMはよーわからんけど、ATL/WTLはいいと思う。
∧_∧ ( ^^ )< ぬるぽ(^^)
∧_∧ ( ^^ )< ぬるぽ(^^)
>>324 >これは1999年のドキュメントだが、俺は今までこんなすばらしいものを
>見過ごしてきたのか。
すまん。MSDNの「ATL 3.0ウィンドウ クラス: 入門」 を読んだんだが。
そんなほめられるモンじゃないと感じたけどねぇ。
C -> C++ つう流れで SDK -> WTL って考えると、なんでこんな感じになっちゃったの?
ってのが感想。
こんな感じとは?
SDKをC++化したわけではないんだが……
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搭載して欲しい。
お願いですから余計なものつけないで欲しい。
どなたかわかりませんでしょうか。 もし動くなら.NET買おうかなと思ってるのですが・・・
345 :
動画直リン :03/04/28 22:26
ログにあるのは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 になってます。
>>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を使う方法 早くきぼんぬ
仮にも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文字フォルダで登録出来ない不具合は直ってる?
>>366 VC7.1のATLのバグだにょ。
インシデント使って文句言ったら修正したファイルを送ってきたにょ。
.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
>>388 どっかに書いてある?MSのメールには無かったが・・・
∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
392 :
デフォルトの名無しさん :03/06/01 22:47
緊急浮上
もういいよもういいよなにがWTLだよもういいよどうせやる気無いんだろ うんざりだよどうせ流行んないよいいよいいよMFCと心中するよぬるぽ
2003のダイレクトメールが来た。MFC7.1/ATL7.1だった。
>>393 そんな君にはwxWindowsをお勧めするよ
ATLでgoogleツールバーみたいなの作ってるんだけど、Navigate2でPOSTするにはどうしたらいいか知ってる香具師いますか? どうやっても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
あ、何気に解決しました。 ありがとうございます。
(´-`).。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のスタイルを比べてみるといいよ。
>>409 ありがとうございます。
比較してみたもののどうにもうまくいかず…と思いさらに調査していたら、
hp.vector.co.jp/authors/VA016589/wtl/bugs/bugs.html
に同じ症状が見つかりました。自力で描画しないといけないのか…。むむ。
スマン、俺も後で試してみたらCCS_NOPARENTALIGNに行き着いたところで困ったw やっぱこれで描画するしかないのか……
>>413 ありがとう。バグだったのか・・・
つーか2002のころからあるみたいだが
2003になってもなおってないとは
違うよ仕様だよ
416 :
デフォルトの名無しさん :03/07/09 16:06
質問お願いします。 WTL7.0のAppWizardで、普通にSDI Applicationを作成した後、 そのプロジェクトにcppファイルを一つでも加えると、次のエラーが出てしまいます。 「(加えたcppファイル名) : fatal error C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。」 原因を教えていただければ幸いです。
追記すいません、VC++6.0 sp5、Windows2000でやっております。
#include "stdafx.h" するか、もしくは、プリコンパイル済みヘッダを使用しない設定にする。
>>418 レスありがとうございます、無事コンパイルできました。
プリコンパイルって、指定ヘッダをあらかじめまとめておく
…くらいの認識だったのですが、色々やっかいなんですねぇ
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
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ライブラリをプリントアウトすれば?
(^^)
426 :
デフォルトの名無しさん :03/08/09 18:54
VC7ではATL_MIN_CRTで通ったのに、VC7.1で通らなくなった…
>>426 へー、ATL_MIN_CRTなんか使ってる人がいるんだ。
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
オウム幹部と麻原が捕まった時のことを思い出すな
430 :
デフォルトの名無しさん :03/08/20 09:08
VC6でATLを学ぶのとVC.netのATLで学ぶのどっちがいい? 書籍がVC6のばかりだから、とりあえずVC6で勉強してるんですが。
個人的な意見だけど、最新版のATLを使えるようにした方がいいと思うよ。 いろいろ便利になってるし。
>>431 VC.netで作ってもCOMなんだから、VB6からも普通に使えますよね?
433 :
名無し@沢村 :03/08/22 10:06
434 :
デフォルトの名無しさん :03/08/31 22:07
ATL/WTLによるって.NET SDK付属のVCだけでできる?
435 :
デフォルトの名無しさん :03/08/31 22:11
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++とかテンプレートスレでは?
>>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
ちがうの?
いやごめん、全然知らないけど でもただのテンプレートだし、Win32APIしか使ってないし… そりゃ、さすがにウィザードは使えないだろうけどね
453 :
デフォルトの名無しさん :03/09/12 09:23
454 :
デフォルトの名無しさん :03/09/12 09:32
.NET2003でどうもうまく動かないな。WTL。 ウィザードはインストールできたし、コードも吐くんだけど、コンパイルが通らん。 atl***.hがインクルードできませんと出る。
あれ、パスは手動で通す必要があったの? VC6の時はやらなかったような記憶があったスマソ
なんたら.jsを実行してないとか。
setup.jsだった。そのまんまだった。
パス通したらコンパイル出来ました。 恥ずかしい。逝ってきます。
T2OLEとか使おうとすると error C2065: '_convert' : 定義されていない識別子です。 など他にもエラーが出るけどどういうこと。
setup.jsの一部を書き換えると.NET2003でもウィザードとか使えるよ
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
nowin98とかは当然やってるんだろうな?
>>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が仮想関数で、派生クラスで それをオーバーライドすると思うんだけど、そうしないでテンプレートでやる利点て何?
>>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 );
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なら使えるかな?
解答ありがとうございます。 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ヘッダを自分のプロジェクト内に入れれば、
インテリセンスが効くようになるかも。
>>500 WTLのヘッダはプロジェクトに追加してるんですが、
CStringだけはATLの内容が表示される・・・
Tokenizeとか各関数の定義が微妙に違って、使いずらいんですよねぇ。
ちなみに環境はVC2003です。
WTLってなんで標準でつかなくなったの? MFCみたいなヘビーなのはいらないけどCMenu/CButton等のうす〜いラッパーはすげー使いやすいのに。
結局WTLってMFCと同じ様な制限抱えてるよね
良い子のみんな、WTLのWは何かなぁ? ∩ ゚∀゚) 503 「Wunkoで〜〜す!!」
例えばこんなの 815 名前:デフォルトの名無しさん[sage] 投稿日:03/03/11 18:18 WTLのフレームはツールバーが上、ステータスバーが下と決め打ちしてるから、それしかない。 独自のフレームクラスを定義するしかないな。
そりゃWTL/MFCの制限じゃなくてAppWizardの制限だろ
これまで書かんと分からないのか… マンドクセ 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のメリットと言えなくもないんだから。
上部ステータスバーなんて誰も使わないけどな。
いちいちライブラリのソースなんか読みたくないんだよ!!
WTLのソースを読みたくないってのは致命的だろう。 っていうか騙りかもしれないしどってことない問題だから以後放置で。
CDialogResizeとか、さりげなく便利だよな
MSDN の ATLCon サンプルに入っている atlcontrols.h には WTL の atlctrls.h 相当のコントロールラッパが詰まっていて、 何らかの理由で WTL を使いたくないときにはとても便利。
何らかの理由でATLを使いたくないときはどうすればよいですか
初歩的なことなのかも知れませんが、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")) じゃダメ?
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でのコンポーネント作成はかなり理解してる方だと思います。
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 では前者の方法が紹介されてるけど、前者でもできる方法がある?
誰もいないのか・・・
WTLのリファレンスにはMFCのが使えるな
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);
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使えば?
WTLでDLLって作れるんですか??
>>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くらいか・・・
ウフォッ
喜多!サポート続けてくれるんだな。ありがたい。
>>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にも書いてるよね
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してるのが気になるんだよな
>>636 ・・・藻前のバグの定義って何だよ・・・
こんなところで何を言っても結論なんか出るわけ無いんだから msにメールでも出したら?
だからWTLはノーサポートなんだって。 自分が修正すべきだと思えば、修正すれ!
>>642 修正すべきかどうかわからんから質問してんだろゴルァ
つーかフィードバックするならYahooGroupの方がいいんじゃね?
俺は英語自信ないけど。
645 :
デフォルトの名無しさん :03/12/16 08:41
ここまでの意見で何がわからんのだ?
「WTLがループを抜けないのはバグなのか何か意図があるのか」がわからないんだろ。 ちなみにSDKのメッセージループはpossibly exitであってmustではない。
「GetLastError() でエラーコード見るべき」ってのは?
いや、見た後にどうするかって話だろ
わかんねーけど、とりあえずExitWindowsExしとく?って感じ。
>>649 一つのアプリが-1返しただけでそれかよ( ゚Д゚)
ベストを尽くせ
652 :
デフォルトの名無しさん :03/12/17 12:57
あ、ごめん。↑のドキュメントは古い奴か・・・
古いドキュメントって残ってたのか・・・ 目次のアドレスキボン
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' だったら?
>>663 失礼。 ワイド文字定数は最初の文字しか処理しないらしいな。(VC++7.1)
ただし、マルチバイト文字列のときは異なるようだ。
'あ' == 33440
L'あ' == 12354
だった。
だから文字列じゃなくて文字の話だって。つーかatlmisc.hの話だって。
ASCIIなら平気だろ a(0x61)ならUTF-8やUCS2なら(U+0061)とかにマッピングされるんだから
>>666 それはペゾルドにも書いてあって、そんなこと話してるんじゃなく、
atlmisc.hの、文字に対する_Tマクロはいらねーよなって話だ。
要らないんじゃないの? メッセージループのことといい、 処理系の実装は完璧でないと気がすまないキチガイが多いな
おいおい完璧に近い方が良いに決まってるだろ。
>>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そんな関数があるのかと。
>>681 確かに、atlmisc.h 限定ならそのとおり。
ただ、「文字定数には _T() や L は必要ない」と
解釈され得る流れだったから、釘を刺したまで。
それはそうと何で混在したんだろうね。 別の人が書いたのかな。
('A')ノ
>>685 こんなものリンクしたら、
動作がおかしくなるんじゃね?
本ビルドの時だけ外せばいいだろ
>>688 自分で作らないとダメみたいだね。
それでもCStringは効かない。
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
sage書く場所間違えた(;´Д`) 鬱だ
691です。680は間違い。
>>690 GREPすれば一発で見つかるはずだが・・・
atlapp.hでdefineされているので、
このファイルをincludeしてやればいいのでは?
つーか #include <atlbase.h> #include <atlapp.h> この二つはstdafx.hの先頭付近で宣言しておくのが普通だが。
つーか
>>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
加護ちゃんって誰?
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
されてねーよ。なんでそんなすぐばれる嘘をつくんだ。
C++BuilderXのフリー版にも、MFC/ATL が付いてきたと思うんだけど。
つか今時PSDKになんでATLぐらい含めないのかね。
>>733 根拠のない否定はしないように。
C++BuilderXといっしょにインストールされているのを確認した。
ただし、ATLはver.3.0だし、MFCもVC6相当だろう。
MSはATLというかテンプレートライブラリは コンパイラのバージョンに強く依存してるから、 無償配布に含めても意味がないっていう考えなのかな。
>>735 ならPSDKに付ければいいわけで。
PSDKにコンパイラは付いてるよね?
ネタ書く前にせめて質問には答えようや
743 :
デフォルトの名無しさん :04/01/16 20:24
MFCはヘッダしかついてないんじゃないの?
748 :
デフォルトの名無しさん :04/01/17 13:02
>>749 だからGetFolderPathはどう使えば良いの?
>>751 ダイアログにメッセージを送ってるんだから、
ダイアログが表示中の場合しか使えないことは明らかだろうが。
ソースを読めない人間がWTLを使おうとすること自体に無理がある。
CFontDialogのGetCurrentFontなんかだと ・ダイアログ表示中 ・DoModal後 の二種類の使い方できるけどね。 CFileDialogの場合はダイアログ表示中はGetFilePathを使って、 DoModal後は直接m_szFileNameにアクセスしれってことらしい。
軟弱者!
756 :
デフォルトの名無しさん :04/01/18 17:32
WTLでMFCのコントロールを使う方法ってないよね。 その逆はあるけど。
757 :
デフォルトの名無しさん :04/01/20 23:50
コントロール関係はあえてMFCのを使う必要があるの?
760 :
デフォルトの名無しさん :04/01/22 21:58
WTLはネットワーク関連のクラスがないのがイマイチ。 CHttpFileとか自作すると結構大変。
そういうのはATLが対応しないのかな。WTLがサポートするのは基本的にGUIだから。
それもそうか。
ATL Server に CAtlHttpClient なんてのはあるみたい。 ATLにも、MFCとは異なる面からのネットワークサポートはあるっぽい。 使ったことが無いからよくわかんないけど。
>>760 スバラスィー。使わせてくださいませんか?
ソースネクストの警戒電話8がWTL使ってる
>>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()
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の処理が全くないので、テキストが設定できないとかいうのなら分かりますが 落ちてしまうのは何故なんでしょうか?
773 :
771続き :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)
にしたらどうでしょう ?
>>775 おぉ、出来た!
テキスト内容を変更した時にWM_COMMAND::EN_CHANGEが出ているのか・・・
リストコントロールが持っているEditコントロールのIDとIDOKが同じ値だったから
OnCloseCmd()が呼び出されていたのが原因だったんですね。
しかし、テキスト編集に使用されるEditコントロールのIDは変更できないんでしょうか?
なんか、WTLとは関係ないような気がしてきた・・・
>>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のサービス作成にはバグがあるという噂。
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マクロの類で制御できるかと思ったのですが甘かったようです。
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が存在するみたいだね。
795 :
69式フリー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かな?
あと質問はもうちょっと分かりやすくするように。
質問です。 WTL 7.1 で AppWizard から MDI アプリケーションを作っています。 メニューの「ウインドウ」以下に開いている子ウインドウが列挙されないのですが これは仕様ですか? サンプルの MDIDocVw ではきちんと列挙されているのですが…
>>799-800 >>796 >>798 です。自分で質問しておきながら、
しばらくこのスレを見ていませんでした。すみません・・・。
で
>>799 を調べてみまして、実装してみました・・・が、どうもイベントが取得できないです・・・。
もうちょい具体的に書きますと、ソースの元として
>>797 のを使用しています。
その中のinvokeメソッドでイベントを取得しようと試みています。
DISPID_HTMLDOCUMENTEVENTS2_ONSTOPで取得しようとしたのですが・・・。
>>803 ありがとうございます。
週末の土日に挑戦してみます。
805 :
デフォルトの名無しさん :04/03/01 23:08
WTL で作られた商用ソフトってどのくらいあるのかな?
警戒電話。 かなり気合入ってるけど実用性が少なめでした。
まぁ既出だけどね<警戒電話
既出って言っても僕が書いたんだけどね。
うわぁ・・・改めてWTLユーザとこのスレの住人の少なさを感じる。
過疎スレを二つも作ってどうすんだ? 住人が分散するだけだろうに。
812 :
デフォルトの名無しさん :04/03/02 23:57
で、801 は解決したのか?
>>806 そのソフト知らなかったのでぐぐったら2chのスレが
引っかかったんだが、評判悪いのか?
あの会社の製品はみんな評判悪いだろ
>>814 使ったこと無いから評判とか気にしなかった。
使おうとも思わないようなソフト多いし。
>>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使ってみようかと思案中。
>>818 情報ありがとう。
MS も使ってるんだ。
820 :
デフォルトの名無しさん :04/03/09 10:17
なぜ?
サンクとかさ。
なにそれ?
ちゃんと属性変更してるから問題ない
>>824 _stdcallthunk はたんに HeapAlloc された領域に作ってるような・・・
気のせいかもしれないけど。
よかったら Thunk が問題に含まれると思った根拠っていうか
理由って教えてもらえませんか?
>>822
サンクって、メモリ上に機械語つくって、直接それを実行しているでしょ。 ATL3.x は確かスタック上にコード生成していた気がしたからさ。 でも、ATL7.1 のコード見たら、ヒープ上に命令作成していたんだね。
>>827 スタックに生成してたらウインドウプロシージャとして使えないだろ
ATL3.0 の CWindowImplRoot と、CWndProcThunk のコード読んでみたら?
>>828 WinMainあたりで確保されてたら?
ATL3.xはサンクを単なるメンバとして確保してるからCWindowImpl*がスタック上に
確保されるとサンクもスタック上に来る気がするんだが。
>>827 ああ、そういうことだったんですか。
勉強になりました。
レスありがとうございました。
その辺に触れてる本てATLインターナルくらいか
>>832 ソース全部付いてるから、ホントに突っ込んだ解説書は需要が少なそうだよね。
それ言うとMFCだってC標準ライブラリだってソースが付いてくるわけで
>>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のことはほとんど触れられてないなぁ
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
そこら中に貼ってるな
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; ってのも見ますよね。 構造体への単なるポインタです。 なんだろこれ。
コピペしたときに、警告を黙らせるためでねーのかな。 (そーゆーコピペ元があるとか)
初期化されていますが使われていません の警告を防ぐのが実際使うときにも消さずに残ってるだけだと思ってるけど
あげとこう。
ATL7.xの本て出るんかな
AppWizardは.NET以降か
875 :
デフォルトの名無しさん :04/05/13 14:59
WTL7.5のCStringのオペレータの戻り値が const CString& から CString& に修正されてるんだけど、ATL::CStringではどうなってる?
ATLもオプソ化してくれないかなあ。 そうすればVC++ Toolkitでウハウハ。
878 :
デフォルトの名無しさん :04/05/13 18:30
879 :
デフォルトの名無しさん :04/05/13 18:47
あ、ごめん。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 のほうだが、参照されなくなれば、デストラクタが走るだろ。
タブブラウザとかだとすぐには開放されないかもシレン
破棄されるときに、ログをはくようにして、確認してみたら?
>887 サンクス。 冷静に考えると、ブラウザとは関係なく参照カウンタが0になったら解放されて ブラウザ終了時にReleaseされてなかったらメモリリークするってことか。 なんか超初歩的な質問しちゃってスマソ
俺の目的は「ファイルを作って、その作成日時を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; } こんなコードをかいて、実行してみました。
>>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使ったら?
すまん。俺のレスは忘れてくれ。
>>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
>>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-898 遅れますた。今会社から帰ってきますた。
レスどうもありがとうございます。m(__)m
ところでATLを静的にリンクしてはまずいので
しょうか?
>>900 普通するもんかと
テンプレートライブラリだし
リンクして無くてもATLは使える・・・
903 :
デフォルトの名無しさん :04/07/12 13:35
勉強しなくてもATLは使えまつか?
なんだかんだで900突破してたんだ
>>903 帰って下さい。あなたにこのスレは合いません。
ATLの本てもう出ないのかな
結局はソースを読むことになるし、 とっかかりはMSDNとウィザードがつくるスケルトンコードで間にあう。
そんなこと言い出したら世の中のプログラミング本はほとんどいらないことになるからナンセンス。
実際いらないと思うぞ
ソースとスケルトンコードで間に合うと思っている人間がなぜここにいるんだ。
無料のVCToolKitでも使えるATLの代わりになるものってない?
ほす
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 CDC とか使うか?って話?漏れは使ってない。
使う価値がたいして感じられないから。
しかし CHandle なんかは C++ 特有のスコープ外れたら
破棄されるあたりが便利なので使ってる。
いちいちラップとか書いてるから、CDCも知らないんじゃ
DrawTextでストリングクラスを受けたりするかってことじゃないのか
あぁ、STLでラップってstd::stringで受けられるようにするって意味か。
なるほど。でも STL でラップしたい関数(群)ってそんなにあるかな? 文字列はどっちかっていうと CComBSTR 使ってるし・・・
俺もCStringで足りるなぁ。 どうせstring(CStringでもいいけど)を引数に使うメリットったって、 文字数を関数に渡さなくて良いとかその程度だべ?
GUIアプリあまり作らない人間にとってはstd::stringの方が馴染み深いと思う
でもそれだけのためにいちいちラップっていうのも。 俺ならc_strでいいやと。
System.Stringでいいやと。
おじさんつまんなーい。
951
STLでラップって、少々言い方が悪かったです
HDCに関わる操作クラスを自作する。テンプレートクラスとかのSTL
機能も利用して再利用可能なクラスを作る。って事をしたほうが合理的か
どうかって事を聞きたかったのです。
>>940 CDCって、MFCをインクルードしたプロジェクトで有効でしょう?
MFCは使いたくないのでAPIごりごりなわけじゃないですか
やっていて、自分なりの結論としては、とりあかずAPIごりごりが
正解な気がします。これで動作したら後々クラス化できると思うし
> テンプレートクラスとかのSTL 機能 用語の使い方がおかしい。 > CDCって、MFCをインクルードしたプロジェクトで有効でしょう? なんども言われているが、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 なる何も無いページを表示する と言った症状です。 普通にテンポラリファイルに書き出して、 サクっと読み出すのが吉なんでしょうか?
967 :
デフォルトの名無しさん :04/08/14 22:12
あげとこう。
>>966 IObjectSafetyを実装して、INTERFACESAFE_FOR_UNTRUSTED_CALLER と
INTERFACESAFE_FOR_UNTRUSTED_DATA あたりはサポートした?
あと IPersistPropertyBag は、キミの追加したプロパティの保存と読み込みを
勝手にサポートしてくれたりは「しない」から、ちゃんとBEGIN_PROP_MAPとか
使ってプロパティを登録してあげる必要があるけど、これはやってますか?
すいません、自己解決しました
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とか
>使ってプロパティを登録してあげる必要があるけど、これはやってますか?
確認したところ、やってありました。
>>968 すいません、アンカーミスです
968さんありがとうございます
971 :
デフォルトの名無しさん :04/08/28 12:43
あげとこう。
ATLはキモイな。
内容がな(ry
内容がなんと水鳥拳
976 :
デフォルトの名無しさん :
04/09/11 14:53:27 あげとこう。