ATL/WTL Part6
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/12/27(木) 21:19:13WTL配布元
http://wtl.sourceforge.net/
過去ログ
■(Part1) ATL/WTL
http://piza.2ch.net/test/read.cgi/tech/978029639/l50
■(Part2-1) ATL 相談室
http://pc5.2ch.net/test/read.cgi/tech/1029029882/l50
■(Part2-2) WTLお勉強スレッド
http://pc5.2ch.net/test/read.cgi/tech/1078150663/l50
■ATL/WTL Part3
http://pc8.2ch.net/test/read.cgi/tech/1095442366/l50
■ATL/WTL Part4
http://pc8.2ch.net/test/read.cgi/tech/1134388951/l50
■ATL/WTL Part5
http://pc11.2ch.net/test/read.cgi/tech/1155951708/
0153ヽ・´∀`・,,)っ━━━━━━┓
2008/04/06(日) 17:54:540154デフォルトの名無しさん
2008/04/06(日) 18:27:430155デフォルトの名無しさん
2008/04/06(日) 19:47:530156デフォルトの名無しさん
2008/04/06(日) 20:35:460157デフォルトの名無しさん
2008/04/12(土) 16:43:580158ヽ・´∀`・,,)っ━━━━━━┓
2008/04/12(土) 17:50:070159デフォルトの名無しさん
2008/04/12(土) 21:13:41二つの64ビット値をビット毎に包含演算した結果を返す
0160デフォルトの名無しさん
2008/04/12(土) 23:27:03159 すげーな
0161デフォルトの名無しさん
2008/04/13(日) 13:44:55どっかにATLだけ単体で落っこちてないかな
0162ヽ・´∀`・,,)っ━━━━━━┓
2008/04/13(日) 13:53:20たしかDDKに3.xのヘッダが付いてた。
てかStdくらいけちるなよ。
実はアップグレードでおkなので実質2万
0163デフォルトの名無しさん
2008/04/13(日) 13:57:07Platform SDK
http://www.microsoft.com/downloads/details.aspx?FamilyId=0BAF2B35-C656-4969-ACE8-E4C0C0716ADB
0164デフォルトの名無しさん
2008/04/14(月) 02:04:50http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=30239
0165デフォルトの名無しさん
2008/04/17(木) 15:42:190166ヽ・´∀`・,,)っ━━━━━━┓
2008/04/17(木) 16:40:220167デフォルトの名無しさん
2008/04/17(木) 22:48:490168デフォルトの名無しさん
2008/04/18(金) 00:07:02ありがとう。
0169デフォルトの名無しさん
2008/04/18(金) 19:59:56error C3861: 'CA2W': 識別子が見つかりませんでした
って怒られる.include フォルダ見たけど,これは WTL8.0 には無いよね?
ATL7.0 以降みたいなんだけど,これはどこかで手に入るの?製品版?
Window2000
Visual C++ 2005 express edition
Microsoft Platform SDK for Windows Server 2003 R2
0170デフォルトの名無しさん
2008/04/18(金) 20:06:110171デフォルトの名無しさん
2008/04/18(金) 21:23:45Visual Studio 2005 Professional Edition 90 日間評価版
てのをちょっと入れてみます.
0172デフォルトの名無しさん
2008/04/18(金) 22:05:440173デフォルトの名無しさん
2008/04/19(土) 01:01:34Windows Server 2003 SP1 DDK ダウンロードしてみたけど ATL3.0 だった (´・ω・`)
評価版まだ落ちてこない…
0174デフォルトの名無しさん
2008/04/19(土) 08:19:05内の環境では
C:\WinDDK\6001.17121\inc\crt\atl71
に入ってる
0175ヽ・´∀`・,,)っ━━━━━━┓
2008/04/24(木) 19:04:04Vista完全対応はあきらめるしかないのか?
0176デフォルトの名無しさん
2008/04/24(木) 21:51:440177デフォルトの名無しさん
2008/04/24(木) 21:53:05逝ってくる
0178デフォルトの名無しさん
2008/04/25(金) 00:09:38本家もそうだしviksoe.dkもSoさんとこも最近は。
0179デフォルトの名無しさん
2008/05/04(日) 22:56:22::CreateWindow(..., CW_USEDEFAULT, CW_USEDEFAULT, w, h, ...)
と同等のことやりたい場合、RECTはどう設定すれば良いですか?
単純に{ CW_USEDEFAULT, CW_USEDEFAULT, w, h }と設定した場合、
うまく反映されないようです(非常に小さなウィンドウが出ます)
0180179
2008/05/04(日) 22:58:28要は幅、高さのみ指定でウィンドウ位置は
システムデフォルトにしたかっただけです。
どうかご指導いただければ幸いです。
0181ヽ・´∀`・,,)っ━━━━━━┓
2008/05/04(日) 23:11:280182デフォルトの名無しさん
2008/05/04(日) 23:14:14rc.right = rc.left + w;
rc.bottom = rc.top + h;
Create(NULL, rc);
俺はこうしてるが、正解かどうかは知らん
0183デフォルトの名無しさん
2008/05/04(日) 23:19:180184デフォルトの名無しさん
2008/05/04(日) 23:23:02{ CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT + w, CW_USEDEFAULT + h }
にしたらいいんじゃね?
0185デフォルトの名無しさん
2008/05/04(日) 23:30:42というのは如何
0187デフォルトの名無しさん
2008/05/23(金) 03:54:44WS_CLIPCHILDRENを指定してないんだ?
ツールバーがちらつくじゃん。
まぁ、付ければいいんだけどさあ。
0188デフォルトの名無しさん
2008/05/23(金) 06:55:210189デフォルトの名無しさん
2008/05/23(金) 13:47:03MSの方針で、知らん奴はリサイズで点滅するアプリ作っとけって事だろうな。
0190デフォルトの名無しさん
2008/05/23(金) 20:47:02それどこのことよ
うちのはSvn最新だけど
0191デフォルトの名無しさん
2008/05/23(金) 22:50:28適用されてWS_CLIPCHILDRENで作成されるはずだが。
0192デフォルトの名無しさん
2008/06/02(月) 22:30:53表示しているHTMLにTABを押しても次のコントロールへ移動してくれません。
対応するにはどうしたらよいでしょうか?
0193デフォルトの名無しさん
2008/06/03(火) 01:38:09最後のリンクまできたら次のコントロールに移動するんじゃなかったっけ
0194デフォルトの名無しさん
2008/06/06(金) 09:59:15シングルとアパートメントの違いってなんですか?
両方ともSTAですよね。
シングルはCOM初期化のプライマリスレッドでのみ実行されるとあるので、
アパートメントの方は、プライマリスレッド以外に作られるのかと思いました。
でも、両者のウィザードが生成するコードに違いが見あたりません。
FinalContruct()で、GetCurrentThreadId()を呼んで、スレッドIDを見ましたが、
両方ともプライマリスレッドのIDでした。
違いはあるんでしょうか?
0195デフォルトの名無しさん
2008/06/06(金) 19:56:04メッセージキューを利用してマーシャリングされて呼ばれる事になるが、
シングルの場合は、作成したスレッド以外からの呼び出しは不可。
ただし、アパートメントの場合マーシャリング時は引数の生存期間が変わってくるため、
それを意識した実装をしておく必要がある。
って感じでいいんだっけ?
0196ヽ・´∀`・,,)っ━━━━━━┓
2008/06/06(金) 20:05:050197デフォルトの名無しさん
2008/06/06(金) 20:06:140198デフォルトの名無しさん
2008/06/06(金) 20:17:070199デフォルトの名無しさん
2008/06/06(金) 20:58:50シングルは一番最初に作られたSTA(メインSTA)にしか属せない。
アパートメントはどのSTAにも属せる。
クラスの静的メンバのようなインスタンス間で共有されるデータに対して
排他制御が必要かどうかという違いのはず。
http://msdn.microsoft.com/en-us/library/ms681753(VS.85).aspx
0200194
2008/06/07(土) 22:51:46クライアントから作ることはできないのかな。
0201デフォルトの名無しさん
2008/06/09(月) 17:38:30VS2008+WTL8.0でビルドし直したら、ビジュアルスタイルが
適用されないんだけど、何が原因だろう?
埋め込まれているマニフェストを確認すると、ちゃんと
Microsoft.Windows.Common-Controlsの項目が入っているんだが。
0202ヽ・´∀`・,,)っ━━━━━━┓
2008/06/09(月) 19:28:49こういうやつ
#if defined _M_IX86
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='31BF3856AD364E35' language='*'\"")
#elif defined _M_IA64
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='31BF3856AD364E35' language='*'\"")
#elif defined _M_X64
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken=publicKeyToken='31BF3856AD364E35'language='*'\"")
#else
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='31BF3856AD364E35' language='*'\"")
#endif
とりあえず空でWTLプロジェクト作ってstdafx.hの該当行コピれ。
0203デフォルトの名無しさん
2008/06/09(月) 19:47:30まだまだ、ActiveX多いし。
0204ヽ・´∀`・,,)っ━━━━━━┓
2008/06/09(月) 19:55:46たいがいやわ
0205デフォルトの名無しさん
2008/06/09(月) 20:10:57いや、それは自分で書いて追加してあるんだけど、駄目だった。
理由は分からないが、一応自己解決。
プロパティマネージャから「Upgrade From VC 7.1」を削除したら
何故かビジュアルスタイルが適用された。
その後、再現しようと思って古いプロジェクトファイルからもう一度
自動変換させたら、Upgrade From VC 7.1があっても適用される。
わけがわからんw
途中で一度PCを再起動したから、その影響?
Vistaだとマニフェストがキャッシュされるとかいう話があるから、
それが悪さしてたのかな?
0206デフォルトの名無しさん
2008/06/16(月) 14:36:36MFCのUPDATE_COMMAND_UI
のような機能はあるのでしょうか?
EnableButtonだけではダメでした・・・
0207206
2008/06/16(月) 16:27:35UPDATE_ELEMENT(ID_TEST, UPDUI_MENUPOPUP|UPDUI_TOOLBAR)
OnIdleで
UIEnable(ID_TEST,FALSE);
で出来ました。
0208デフォルトの名無しさん
2008/06/16(月) 17:45:380209デフォルトの名無しさん
2008/06/16(月) 19:46:530210デフォルトの名無しさん
2008/06/17(火) 00:24:09どうすればできますか?
SetButtonInfoを試してみたのですが、
GetButtonInfoが失敗して撃沈。
TBUTTON系のAPIが失敗するのも妙
何でだろ・・・
0211210
2008/06/17(火) 17:31:18を追加
UISetCheck
で変更でできました。
0212デフォルトの名無しさん
2008/06/17(火) 17:47:470213デフォルトの名無しさん
2008/06/17(火) 22:20:210214デフォルトの名無しさん
2008/06/17(火) 22:30:440215デフォルトの名無しさん
2008/06/18(水) 02:09:410216デフォルトの名無しさん
2008/06/18(水) 09:22:30で、このオチだと泣けるよな。
0217デフォルトの名無しさん
2008/06/19(木) 00:25:48WTLヲワタ
0218デフォルトの名無しさん
2008/06/19(木) 01:12:28エグイぷらぷら?
イヤン
0219デフォルトの名無しさん
2008/06/19(木) 02:43:14ポータブルじゃないのに、
わざわざまったく異なる思想のコードを書きたいとは思わんし、
あと、識別子の命名がやたらに省略しててキモい。
つーか今どきstd::stringを使っていて、
しかもWindowsネイティブ限定とか、ふざけているとしか思えん。
0220ヽ・´∀`・,,)っ━━━━━━┓
2008/06/19(木) 13:18:00ATLはともかく
0221デフォルトの名無しさん
2008/06/19(木) 14:46:43一応、こんな記述になっているようだが。
#include <string>
#ifdef UNICODE
typedef std::wstring string;
#else
typedef std::string string;
#endif
0222ヽ・´∀`・,,)っ━━━━━━┓
2008/06/19(木) 18:33:19_tstringよかマシだが
0223デフォルトの名無しさん
2008/06/19(木) 19:30:00なんじゃそりゃ。
ひでぇな。
0224デフォルトの名無しさん
2008/06/19(木) 20:47:160225デフォルトの名無しさん
2008/06/19(木) 20:56:110226ヽ・´∀`・,,)っ━━━━━━┓
2008/06/19(木) 21:11:49ANSIとUNICODEの変換が楽すぎる
0227デフォルトの名無しさん
2008/06/19(木) 21:32:47テンプレートベースになって、明示的にCStringAとCStringWが使い分けられるのが最強すぎる。
0228デフォルトの名無しさん
2008/06/19(木) 22:59:02VC++6時代と同じ使い方しかしてなかった。
このスレ見てて良かった。
0229デフォルトの名無しさん
2008/06/19(木) 23:18:28MFC/ATL/WTLって手抜きだよな
0230デフォルトの名無しさん
2008/06/19(木) 23:48:00CStringも他のウィンドウ関連のAPIも
たまにANSIとUNICODE両方用意して欲しいと思うことがある
0231デフォルトの名無しさん
2008/06/20(金) 06:53:260232デフォルトの名無しさん
2008/06/20(金) 07:54:270233デフォルトの名無しさん
2008/06/20(金) 08:24:23eGUI++の愚痴は作者の掲示板で。
0234ヽ・´∀`・,,)っ━━━━━━┓
2008/06/20(金) 08:32:40あるじゃん。
ま、ATL::CStringのほうが便利だな。
ATLに依存しないコピー実装もCode Projectあたりにあったと思うが。
0235デフォルトの名無しさん
2008/06/20(金) 08:42:05なかったはず。おかげで例外に文字列渡すときは、いちいちW->A変換してる。
0237ヽ・´∀`・,,)っ━━━━━━┓
2008/06/21(土) 22:32:00これマジでおすすめ
http://www.codeproject.com/KB/string/stringwa.aspx
0238デフォルトの名無しさん
2008/06/21(土) 22:55:47メソッドなりのインタフェースが基本的にTCHARベースしかないのが
アレだって話じゃねーの
APIはCリンケージだからWとAの二つがあってマクロで切り替えだが
明示的に指定することも常に可能
WTLはC++だからオーバーロードが本当はベストだけど
TCHAR版の「一つ」しかない点でCのAPIにすら劣るよなって話
0239ヽ・´∀`・,,)っ━━━━━━┓
2008/06/21(土) 23:15:26多くは求めない方が良いかと
0240デフォルトの名無しさん
2008/06/21(土) 23:19:13必要なとこだけAPI直呼びすりゃいいんじゃねーの? でまかり通りそうだがな。
0241デフォルトの名無しさん
2008/06/21(土) 23:27:57いや、テンプレートで型パラメータ化しろって言ってんじゃないよ
「オーバーロード」だぞ?
いつからあると思ってんだよ
0242デフォルトの名無しさん
2008/06/21(土) 23:36:50まあMSLU使えば、それなりに何とかできるかもしれんが。
0243デフォルトの名無しさん
2008/06/21(土) 23:53:01TCHARオンリーは、TCHAR強要してるのと同じだろ
さもなくば-DUNICODE前提、とかいうソースになる
LPCSTR, LPCWSTRのオーバーライドがありゃ、CStringだろうがCStringWだろうが
CStringAだろうがstd::stringだろうがstd::wstringだろうが何でもそのまま使える
「正しい」ソースとしてだ
そしてAPIプログラミングならそれは可能だ
TCHARオンリーでちゃんとやりたきゃ、CA2Tとかそういう下らない変換テンプレートを
いつもいつも使うことになる
どっちがいいか、わかりきってるじゃないか
MSは単にMFCやATLを手抜きして、ユーザに手間を押し付けてるだけなんだよ
0244242
2008/06/22(日) 01:08:36その一手間を惜しむが故に、文字列絡みの全メソッドにオーバーロードを付けるのか?
それこそナンセンスじゃね?
0245デフォルトの名無しさん
2008/06/22(日) 01:14:57マイクロソフト製品のユーザ数を理解しろよ
それが「製品」であることもな
それがよくデザインされていればされていれば、皆が幸せになれる
CString()で囲むだって?
手間なだけでなく、それが必要でないとき(例えば実際にはW->W変換であるような
場合)でもコンストラクタとコピーが実行されて確実に効率が落ちるじゃないか
冗談だろ
0246デフォルトの名無しさん
2008/06/22(日) 02:30:230247ヽ・´∀`・,,)っ━━━━━━┓
2008/06/22(日) 07:29:52msdnフォーラムでぼやけ。
中の人が聞いてくれるかも知れないよ
ああWTLの場合はsf.netに参加すればコミットできるか
0248デフォルトの名無しさん
2008/06/22(日) 08:25:150249デフォルトの名無しさん
2008/06/22(日) 14:57:06WM_LBUTTONDOWNハンドラを追加するにはどうすればよいのでしょうか?
ダイアログにWM_LBUTTONDOWNを追加してみたのですが、
ツリーコントロールをクリックしても
ハンドラが呼ばれません。(その外だと呼ばれるのです)
0250ヽ・´∀`・,,)っ━━━━━━┓
2008/06/22(日) 15:03:40コントロールIDとイベントID入れて自前でハンドラ作成。
まさかWindowsプログラム自体はじめて?
0251249
2008/06/22(日) 16:03:52を追加
LRESULT OnNMClickTree1(int /*idCtrl*/, LPNMHDR pNMHDR, BOOL& /*bHandled*/);
でできました。
0252デフォルトの名無しさん
2008/06/22(日) 16:05:25じゃあ俺もそう思った
■ このスレッドは過去ログ倉庫に格納されています