トップページ⇒tech
1001コメント254KB

ATL/WTL Part3

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
ATLやWTLについて語り合って下さい。

(Part1)ATL/WTL
http://piza.2ch.net/test/read.cgi/tech/978029639/

この後なぜか分離
(Part2-1)ATL 相談室
http://pc5.2ch.net/test/read.cgi/tech/1029029882/

(Part2-2)WTLお勉強スレッド
http://pc5.2ch.net/test/read.cgi/tech/1078150663/

WTLの最新版↓
http://sourceforge.net/projects/wtl/
0002デフォルトの名無しさんNGNG
ATLやWTLが何かしらないけど、とにかく2ゲット
0003デフォルトの名無しさんNGNG
>>1
ついでにあっちの削除依頼出してこい
0004デフォルトの名無しさんNGNG
重複乙
0005デフォルトの名無しさんNGNG
akatsuki氏によるATL/WTLの解説。日本語ドキュメントなのでかなり貴重。

The So-Software Stdio
ttp://home.att.ne.jp/banana/akatsuki/top/main.html
0006デフォルトの名無しさんNGNG
#include <Stdio.h>
00075NGNG
>>6
いきなり意味不明な荒らしが来たと思ったが、
自分がstudioをstdioと誤記したことを、ほのめかしてたわけだな。
そんなわけで訂正。

The So-Software Stdio
↓
The So-Software Studio
0008デフォルトの名無しさんNGNG
ついでに訂正するとトップはこっちだな
ttp://home.att.ne.jp/banana/akatsuki/
0009デフォルトの名無しさんNGNG
どうせなら動くプロジェクトつけてほしい
0010デフォルトの名無しさんNGNG
いまだにこんなの使ってるヴァカっているの?
0011デフォルトの名無しさんNGNG
前に使ってみたけど理解できなかったのか。よちよち。
0012デフォルトの名無しさんNGNG
>>10
わからなかったからってムキになるなよ
0013デフォルトの名無しさんNGNG
.NETでも使えるの?
0014デフォルトの名無しさんNGNG
変なのが釣れるから上げるな
0015関連サイトNGNG
The So-Software Studio
ttp://home.att.ne.jp/banana/akatsuki/
WTL研究所
ttp://homepage1.nifty.com/Roy_/Software/WTL/WTL.htm
Windows Template Libraryの概要
ttp://www.mars.dti.ne.jp/~kattoshi/Program/
WTL support list
ttp://groups.yahoo.com/group/wtl/
The Code Project - WTL
ttp://www.codeproject.com/wtl/
viksoe
ttp://www.viksoe.dk/code/
MSDNのATLウィンドウクラス概要
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vccore/html/_atl_ATL_Window_Classes.asp
0016デフォルトの名無しさんNGNG
頻出はこんなもんかな
0017デフォルトの名無しさんNGNG
fv6はwtlベース
http://www.lightship.co.jp/FileVisor6/help/overview/newfeature.htm
0018デフォルトの名無しさんNGNG
>>17
なんつーかソース公開されてるならともかくそれだけ見せられても・・・
0019デフォルトの名無しさんNGNG
追加。

Virtual Truth Lab.
ttp://lamoo.s53.xrea.com/
0020デフォルトの名無しさんNGNG
どうして未だにDonutの名が出ないんだ!
0021デフォルトの名無しさんNGNG
Donut ぉるんだ!
0022デフォルトの名無しさんNGNG
追加。

Donut
ttp://www.tigercrown.co.jp/cakeland/etc_story/recipe/page13.htm
0023デフォルトの名無しさんNGNG
>>19
ここは知らなかった!
0024デフォルトの名無しさんNGNG
そこは常識だよぅ。サイト名変わってて一瞬新しいところかと思ったけど。
0025デフォルトの名無しさんNGNG
>>19
URLがエロサイトっぽいから敬遠してたよ。
0026デフォルトの名無しさんNGNG
>>25
ワロタ
漏れもそう思った。
0027デフォルトの名無しさんNGNG
ラムーといえば伝説の…
0028デフォルトの名無しさんNGNG
>>22
ここも知らなかった!
0029デフォルトの名無しさんNGNG
知らなくてよし!
0030デフォルトの名無しさんNGNG
ヴァカだ
ヴァカがいっぱいおる
0031デフォルトの名無しさんNGNG
ももちんらぶ
0032デフォルトの名無しさんNGNG
結局微妙に荒れるのか・・・
0033デフォルトの名無しさんNGNG
ttp://home.att.ne.jp/banana/akatsuki/doc/atlwtl/atlwtla-01/index.html

これってさあ、あからさまに>>19の中の
ttp://lamoo.s53.xrea.com/develop/wtl/wtl.html
のパクリだよな・・・
0034デフォルトの名無しさんNGNG
そりゃどっちもatlcrack.hを元にしてるからな
0035デフォルトの名無しさんNGNG
そういや今は無きwikiでも作ろうとしてたけどほとんど放置されたまま消えたな・・・
0036デフォルトの名無しさんNGNG
WTLは誰も使ってないしな
0037デフォルトの名無しさんNGNG
>>36
自分が挫折しただけだろ w
0038デフォルトの名無しさんNGNG
・「APIに慣れていてMFCは使いたくないけど、今さら基礎クラスを作ってられるかよ。」
・「MFCに慣れていてAPIあまり知らないけど、MFCから離脱してみたい。」

WTL使いは、この2つのグループに分けられます。
あなたはどっち?
0039デフォルトの名無しさんNGNG
>>38
・「MFCもAPIも慣れてるけど、APIより楽できてMFCより軽量なのが欲しい。」
0040デフォルトの名無しさんNGNG
>>39
オレオレ
0041デフォルトの名無しさんNGNG
前者かな
0042デフォルトの名無しさんNGNG
・「自分のツールキットにいいところをパクりたい」、、、けど、なんだかWTLクローンっぽくなって(ry
0043デフォルトの名無しさんNGNG
ATLクローンできないかな。sopport listで話してたWTLのATL非依存化の件ってどうなったんだろ。
0044デフォルトの名無しさんNGNG
仕事でMFCのコードメンテするほど無意味で悲しい事はないからな
0045デフォルトの名無しさんNGNG
>>44
変な人だね
0046デフォルトの名無しさんNGNG
>>44
ぶっちゃけ、メンテじゃない。

不具合箇所を発見しても手が入れられない。実に虚しい。
プログラマが止むに止まれずMFCコードをAPIラッパへと移植する哀しい作業が待っているのである。
0047デフォルトの名無しさんNGNG
そんなにMFCに不具合箇所がたくさんあるかね?
0048デフォルトの名無しさんNGNG
MS謹製のライブラリだからとりあえずそんな発言しとけばいいし。
0049デフォルトの名無しさんNGNG
>>47
たくさんあったらそもそも使ってない。極、稀に見かけるだけだよ。
WinInetとか。こういう場合、使わないという解決策しかない。
0050デフォルトの名無しさんNGNG
結局WTLの話題はさっぱり出てこないな。
誰も使ってないんだろうな。
0051デフォルトの名無しさんNGNG
あぁ、WinInetとかSocket周りのクラスは確かに使えないな。
でもATLのHttp系クラス(名前忘れた)にもバグがあったんじゃなかったっけ?

とWTL方向に話を戻してみる。
0052デフォルトの名無しさんNGNG
UNICODEビルドではCSocketAddrが2000やXPでエラーを起こす。
原因はGetAddrInfoW()を呼び出すから。
これが原因でCSocketAddrを使用するCSocket等もエラーを起こす。

MSに文句を言ったら修正版を送ってきた。VC7.1の話。
0053デフォルトの名無しさんNGNG
おい、猛者ども!ちょっと教えていただけませんでしょうか?

http://www.viksoe.dk/code/imagelistbox.htm
ここにあるImageListBoxコントロールをダイアログに貼り付けて
みました。表示までできたけどもクリックしたときの
メッセージハンドラのつけかたがわからんのです。

BEGIN_MSG_MAP_EX( CMainDlg )
 NOTIFY_HANDLER( IDC_MENU_LIST, LBN_SETFOCUS, OnMenuSelect)
・・
ではだめなのかなぁ?





005453NGNG
あ、あとイメージの下のテキストに日本語使うと化けるんだけど
どうすれば直せるのかわからんです・・。orz
すまん、知恵くれ。たのむ。
0055デフォルトの名無しさんNGNG
ひとつ自己解決。
COMMAND_HANDLER_EX( IDC_MENU_LIST, LBN_SELCHANGE, OnMenuSelect)
ってことでした。
0056デフォルトの名無しさんNGNG
>>54
日本語フォントをSetFontすればいいんでねーか?
0057デフォルトの名無しさんNGNG
SHIFTJIS_CHARSET
005854NGNG
DrawTextしてるCDCHandleでSelectFontかましたら
うまくいった。thanx

0059デフォルトの名無しさんNGNG
>>52
修正版が送られてきたってことは、
VC開発陣が不具合を既に知ってて修正コードも作ってたってことだね。
006052NGNG
>>59
いや。ウィザードが吐いたWebサービスにアクセスするためのクラスを使うと
エラーを起こすから俺がMSに文句を言ったんだけど、
最初はなかなか原因が判明せず、何回かやりとりしてやっと原因が明らかになった。
だから修正コードを作ってくれたのはその後。
0061デフォルトの名無しさんNGNG
WTLの新規プロジェクトを作るとき、Generate .CPP filesにデフォルトでチェックが入っていません。
実装は全てヘッダに書いて、インライン展開するかどうかコンパイラに任せるのが
ナウなヤングにバカウケなのでしょうか?
0062デフォルトの名無しさんNGNG
sonotouri
0063デフォルトの名無しさんNGNG
ヤングにバカウケなのは、. N E T 。
0064デフォルトの名無しさんNGNG
>>61

それくらい自分で判断すれば?
0065デフォルトの名無しさんNGNG
別に判断を聞いてるんじゃなくて
ナウなヤングにバカウケなのかを聞いてるだけだろ。
0066デフォルトの名無しさんNGNG
>>64 バカジャネーノ
0067デフォルトの名無しさんNGNG
>>66

それぐらい自分で判断すれば?
0068デフォルトの名無しさんNGNG
>>67 バカジャネーノ
0069デフォルトの名無しさんNGNG
イタリアーノ
0070デフォルトの名無しさんNGNG
ポルサリーノ
0071デフォルトの名無しさんNGNG
あらかじめ信頼できるソースコードなら、
即座にヘッダーにコピペしてプロジェクトに導入できると思うが、
試行錯誤して頻繁に内容を変更するコードの場合、
ヘッダーで全部済ますのはかなり不便だね。
0072デフォルトの名無しさんNGNG
>>71はペペロンチーノ
0073デフォルトの名無しさんNGNG
サンマリーノで愛し合ってた二人って誰だっけ?
0074デフォルトの名無しさんNGNG
これは漏れの想像だが、デフォルトで .cpp を作らないようになってるのは
ちょろっと試す時のお気楽さのためなんじゃないかと思う。
ちょっとしたテストではない規模のプログラムでは、
末端のクラスまですべてがヘッダだけから出来ているとどんなメリットがあるのだろう。
0075デフォルトの名無しさんNGNG
>これは漏れの想像だが、デフォルトで .cpp を作らないようになってるのは
>ちょろっと試す時のお気楽さのためなんじゃないかと思う。

馬鹿再来だな。
0076デフォルトの名無しさんNGNG
ちょろっと「試す」のにヘッダー記述は向いてないと思うが、まぁ人それぞれかな。
0077デフォルトの名無しさんNGNG
ヘッダで全部済ませるなんて正気の沙汰じゃない。
0078デフォルトの名無しさんNGNG
クラス定義と実装を分けると修正が二度出間になるから
ちょっと試すのにヘッダだけで完結してる方がよさそうに見えるけど。
コンパイル負荷が問題になるほど大きなプログラムを
ちょっと試す程度で書けるの?
0079デフォルトの名無しさんNGNG
仮にもtemplateだからちゃいますのん
0080デフォルトの名無しさんNGNG
1番leafのクラスまで全部テンプレートにしないと気がすまないの?
0081デフォルトの名無しさんNGNG
なんか文句ありますか?
0082デフォルトの名無しさんNGNG
いやいや、愛してる。
0083デフォルトの名無しさんNGNG
俺も愛してるけどアホだと思う。
0084デフォルトの名無しさんNGNG
細かいところの質問なんだけど、WTLサンプルについてくるWTLExplorerのShellMgr.cppの30行目付近。

UINT cb1 = 0;
if (pidl1 != NULL) // May be NULL
 cb1 = GetSize(pidl1) - sizeof(pidl1->mkid.cb);

で、ITEMIDLISTの最後の2バイトNULLを引くためなら単純に2を引けばいいと思うんだけど、
わざわざsizeof(pidl1->mkid.cb)としてるのはなぜ?
0085デフォルトの名無しさんNGNG
>>84
マジックナンバーを使いたくない
0086デフォルトの名無しさんNGNG
>>85
それはわかるんだけど、なぜcbを指定してるの?
ITEMIDLISTの最後はcbのサイズ分だけNULLで埋める、って決まりある?
それともたまたまcbがUSHORTで2バイトだってだけの理由で使ってるの?
0087デフォルトの名無しさんNGNG
http://www.codeproject.com/shell/pxshlapi.asp
http://homepage1.nifty.com/Roy_/Software/WTL/WTL_Lecture06.htm

↑のソースもcbを基準にしてるんだよなぁ。
0088デフォルトの名無しさんNGNG
ソース良く読め。

ITEMIDLISTはmkid.cbが0のデータがあればそれを終端子とみなしてる。
つまり、ITEMIDLISTの最後のデータはmkid.cbの2byteだけかつ0の値。
で、pidl1とpidl2両方GetSizeしてるが、GetSizeは終端子2byteのサイズを含めて計算する。
pidl1とpidl2二つ分の終端子は必要ないから、前者の終端子分サイズを詰めてる。

つまり、

cb1 = GetSize(pidl1) - sizeof(pidl1->mkid.cb); // ( pidl1のサイズ + 終端子サイズ ) - 終端子サイズ
cb2 = GetSize(pidl2); // ( pidl2のサイズ + 終端子サイズ )
::CoTaskMemAlloc(cb1 + cb2); // (pidl1のサイズ + pidl2のサイズ + 終端子サイズ

0089デフォルトの名無しさんNGNG
>>86, 87

MSDN の The Shell Namespace ていうやつを読んでみてください。
真ん中くらいに図があるんだけど、それが「2Byte-NULL」で終わってる

その下の辺りに2 Byte の NULL で埋めろって書いてあるよ

以下引用

PIDLs

For the Shell application programming interface (API),
namespace objects are usually identified by a pointer to their
ITEMIDLIST structure, or pointer to an item identifier list (PIDL).
For convenience, the term PIDL will generally refer in this
documentation to the structure itself rather than the pointer to it.

The PIDL shown in the preceding illustration is referred to as a full,
or absolute, PIDL. A full PIDL starts from the desktop, and contains
the item IDs of all intermediate folders in the path. It ends with
the object's item ID followed by a terminating two-byte NULL. A full
PIDL is similar to a fully qualified path and uniquely identifies
the object in the Shell namespace.

0090デフォルトの名無しさんNGNG
ITEMIDLISTが連続してるところに突然2byte-NULLが出てくる
ってのも変な気がする。
cb==0でabIDが無い(サイズ0)のITEMIDLISTで終わる
というのが素直な考え方だと思う。
0091デフォルトの名無しさんNGNG
>>88-89
いや、ITEMIDLISTの終端は2バイトのNULLだってのもわかってるし、
>>84がその2バイト(cb=USHORT=2バイト)のNULLを省くコードだってのもわかってる。

>つまり、ITEMIDLISTの最後のデータはmkid.cbの2byteだけかつ0の値。

MSDNに書いてるのは「2バイトNULL」であって、「cbの分」とは書いてないと思うんだけど?
MSDNに「cbと同じサイズのNULL」とでも書いてあればわかるんだけど、
読む限り終端の2バイトNULLとcbの関係については書いてないと思う。

で、改めてソース見てると
while (pidl->mkid.cb != NULL){
 cbTotal += pidl->mkid.cb;
 pidl = Next(pidl);
}
とかあるので、ポインタが終端の2バイトNULLの部分にいっても
SHITEMIDと同じように扱うためかなと思った。
つまり>>90が書いてるように
 ITEMIDLISTの終端NULL = abIDがないSHITEMID
として扱うために終端はcbと同じサイズなのかなと。
これ正式にMSDNには書いてないよね?ただのtwo-byte NULLだけで。
0092デフォルトの名無しさんNGNG
仕様策定時に突然謎の2バイト0が出てくるわけもないし。
cb のサイズが2バイトだったからというほうが自然だろうな。
0093デフォルトの名無しさんNGNG
>>87の二番目のページにUnicodeだから2バイト?みたいなことが書いてあるけど、答えはcbを判定するためってことだね。
0094デフォルトの名無しさんNGNG
>>52
いままさに、それにはまってます。
http://support.microsoft.com/default.aspx?scid=kb;JA;822334
unicodeビルドでWS2_32.dll内にFreeAddrInfoWがみつからんと言われてしまう。
どこかにアップデータとかあるのでしょか?
何か情報あればご教授いただきたく思います。
よろしくお願いいたします。
0095デフォルトの名無しさんNGNG
>>94
ここにアップしとくよ。
http://tmp.servequake.com/up/atlfix.zip

どっか適当なディレクトリを作ってそこに解凍して、
環境設定でそのパスを「インクルードファイル」ディレクトリの
高順位に設定しておけばOK。
0096デフォルトの名無しさんNGNG
>>95さん
ありがとうございました。
試してみたいと思います。

他の人たちはこまってないのかな。
0097デフォルトの名無しさんNGNG
犯罪者・・・
0098デフォルトの名無しさんNGNG
>>95
ウィルスをアップしないでください。
0099デフォルトの名無しさんNGNG
>>95
ありがとう。俺も悩んでいた。助かった。

>>97
目をつぶってね。

>>98
何か警告でもでたの?
0100デフォルトの名無しさんNGNG
とうとうこの板からタイーホ者が・・・
0101デフォルトの名無しさんNGNG
>>97
>>98
>>100
意味が分かりません
0102デフォルトの名無しさんNGNG
ATLソースの頒布権が95にはない。
つまり、やってることは著作権保護法違反ってやつだ。

ま、自己責任で使う分にはMSも黙認してくれるだろーが。
0103デフォルトの名無しさんNGNG
ニュー速から記念かきこ。

タイーホはまだですか?
0104デフォルトの名無しさんNGNG
記念まきこ
0105デフォルトの名無しさんNGNG
WTLからDirextXを使うサンプルはありませんか?
0106デフォルトの名無しさんNGNG
>>102
どのような条件の下で>95がqfeを貰ったのにかによるし、その条件が
わからんので何とも言えんな。
ただ、ファイル名からすると、プライベートHotfixではないので、タイーホされることは
ないから、>95よ、安心しろ。
KBページからはダウンロードできないので、恐らく、必要時にMSに言えばすぐに貰えるものだろう。
結構、言語製品には、この手のものが多いからな。
010795NGNG
>>106
なるほど。
MSから貰ったときには頒布に関する制限は特に課されなかったように思うが
気分が悪いので引っ込めることにするよ。
0108デフォルトの名無しさんNGNG
95氏、今日にもタイ━━━━||Φ|(|゚|∀|゚|)|Φ||━━━━ホ!!!!
0109デフォルトの名無しさんNGNG
賞味期限の切れたネタでいつまで引っ張る気だ
0110デフォルトの名無しさんNGNG
今月末くらいかな。
0111デフォルトの名無しさんNGNG
>>110
どうせお前はWTLに挫折した奴だろ
0112デフォルトの名無しさんNGNG
WTLに挫折なんてあるのか?
0113デフォルトの名無しさんNGNG
WTL自体が挫折
0114デフォルトの名無しさんNGNG
>>37は挫折って言いたいだけちゃうんかと
0115デフォルトの名無しさんNGNG
>>114
そんなに「挫折」という言葉が珍しいかい? w
0116デフォルトの名無しさんNGNG
↑本人登場
0117デフォルトの名無しさんNGNG
賞味期限の切れたWTLでいつまで引っ張る気だ
0118デフォルトの名無しさんNGNG
>>117
WTLを味わう前に挫折したくせにね。 ( ´,_ゝ`)プッ・・
0119デフォルトの名無しさんNGNG
煽りにいちいち反応するな
0120デフォルトの名無しさんNGNG
煽り位しか話題がないのかこのスレ
0121デフォルトの名無しさんNGNG
ネ、ネタをくれぇ・・・
0122デフォルトの名無しさんNGNG
やっぱATL/WTL使用者は上級者が多いから
質問は少ないよね。
0123デフォルトの名無しさんNGNG
そういう見方もあるか。
活発なスレは裏を返せば自分で調べることもできない
薄らハゲの集まりということか……
0124デフォルトの名無しさんNGNG
いや、単にWTLユーザーが少ないからだろ。

つーかWTL使ってるくらいで自分を上級者って言うの恥かしくないか・・・
0125デフォルトの名無しさんNGNG
と、WTLを理解できない初心者の>>124が申しております。
0126デフォルトの名無しさんNGNG
>>125
何かWTLにコンプレックスでもあるのか?
>>124はいたってマトモな意見だと思うが。
0127デフォルトの名無しさんNGNG
また始まったよ。
まぁ、WTLは難しい=自分は上級者だからできる、と思い込んでるから挫折とか素人は手を出すなとか言ってるんだろうけど。

はっきり言ってWTLを使うだけなら難しくもないし上級者である必要もない。
見てるこっちが恥ずかしくなるから、WTL使ってるだけであんまり自分を上級者だと思わない方がいいぞ。

質問が少ないのはユーザーが少ないだけだ。WTLの前スレの>>1が作ったML見りゃわかるだろ。
14人て。しかも立てた>>1もやる気ねーし。やる気無いのが見てわかるから新規に参加する奴もほとんどいねーし。
本家のサポートリストのようにユーザーが多ければ普通に質問も話題も出てくるっつーの。
0128127NGNG
>>127は>>125へのレスね。
0129デフォルトの名無しさんNGNG
馬鹿、あの1だから少なかったんだよ
0130デフォルトの名無しさんNGNG
あの1はいつまで放置する気なのかな。
放置してればいつかは活発になると思ってるのかな。今でも。
0131デフォルトの名無しさんNGNG
wikiも1が自分で閉めたというよりは、放置しすぎて削除されたという方が正しい?
0132デフォルトの名無しさんNGNG
結局誰も使ってないから誰も1の跡を継げないんだけどな
0133デフォルトの名無しさんNGNG
継ぐって何をだ。
0134デフォルトの名無しさんNGNG
.NETが何だ。
0135デフォルトの名無しさんNGNG
俺たちにはWTLしかないんだ。
0136デフォルトの名無しさんNGNG
>>127
自分がヘタレだからって、他人も同じだと思うなよ。 w
0137デフォルトの名無しさんNGNG
必死すぎ
0138デフォルトの名無しさんNGNG
てかWTL使ってる香具師って空気が読めてないだけだろ。
どう考えてもMFC以上に先が無いのに。
0139デフォルトの名無しさんNGNG
>>138
そのこころは?
0140デフォルトの名無しさんNGNG
>>138は空気読めて無いだろ。すげー粘着。
0141デフォルトの名無しさんNGNG
煽ってるのは叩かれまくってた前スレの>>1だよ。
0142デフォルトの名無しさんNGNG
OLEDrag&Drop 楽にできなかったっけ?
0143デフォルトの名無しさんNGNG
MySQLにMSのオープンソースプロジェクトが採用されるというニュース、
WTLかと思ったらWiXの方だった・・・
0144デフォルトの名無しさんNGNG
久々に趣味でアプリケーションを作ろうかと思った。
CCmdBarを継承してクールなメニューを作ったんだが。
2Kだとメニューの枠が立体的でかっちょ悪い。
XPなら勝手にフラット&影になってくれるけど。

メニューウィンドウの作成をフックするんだっけ?
メンドクサイからいいや・・・。
0145デフォルトの名無しさんNGNG
独り言なのかCodeProjectに誘導してほしいのかはっきりしる。
0146デフォルトの名無しさんNGNG
ATLと分離してくれれば、MFCよりユーザ増えると思うんだけどなぁ
0147デフォルトの名無しさんNGNG
ATL非依存化はサポートリストでもしばしば話題になるよな
0148デフォルトの名無しさんNGNG
>MFCより
0149デフォルトの名無しさんNGNG
ATLに依存していて、なにか困るか?
0150デフォルトの名無しさんNGNG
誰も困るなんて話はしてないわけだが。
0151デフォルトの名無しさんNGNG
うーんどっかで見たような文章だな
0152デフォルトの名無しさんNGNG
>>150
困らないのに、何でATLと分離する需要があるの?
0153デフォルトの名無しさんNGNG
>>149
WTL開発者がATLのバージョン毎にソースを用意する必要がある。
つまりVCのバージョン毎に用意しなければならなくなる。
もし、純粋なAPIラッパーであれば従来のSDKヘッダーと同様に、
Unicode/MBSCと_WIN32_WINNT、WINVER、_WIN32_IEあたりで
切り分ければ良かったはず。あと、_WIN32と_WIN64があるか。
これでも十分煩雑だけど・・・。
0154デフォルトの名無しさんNGNG
atltypes が namespace に入ってなくて気持ち悪い・・・。
0155デフォルトの名無しさんNGNG
>>152
ExpressEditionやVC++Toolkitユーザ<需要
0156デフォルトの名無しさんNGNG
なんだ、厨房向けか
0157デフォルトの名無しさんNGNG
そんな捨て台詞吐くくらいならレスしなきゃいいのに。
0158デフォルトの名無しさんNGNG
support listでbccやgccも挙がってなかったっけ。
SDKが無償ならクラスライブラリも無償で欲しいと思っても別におかしくないわな。
俺はVC++Pro使ってるけど。
0159デフォルトの名無しさんNGNG
>>157
なんだ、図星か。
0160デフォルトの名無しさんNGNG
ATLと分離なんてほとんど不可能だろ。
ATLに依存しまくってんだから。
0161デフォルトの名無しさんNGNG
ATLも配布してくれればいいんだよ
0162デフォルトの名無しさんNGNG
>>160
あんまし依存してないけどな。
0163デフォルトの名無しさんNGNG
WTLの根幹のCWindowがATLなんだからもうどうしようもない。
0164デフォルトの名無しさんNGNG
ATLがオープンソースになるか、CWindowなどと同等のクラスをWTLに追加するか。
なんか必死な奴いるけど、単に非依存になればいいなって話だろ。
何ムキになってんだか。
0165デフォルトの名無しさんNGNG
Visual Studio 買えないだけだろ
0166デフォルトの名無しさんNGNG
>>165
おまえはそればっかりだな。
0167デフォルトの名無しさんNGNG
ATLに非依存になっても、大してメリットはないって話だろ。
何ムキになってんだか。
0168デフォルトの名無しさんNGNG
貧乏人はこんなスレ見てないで働け
0169デフォルトの名無しさんNGNG
>>167-168
お前のレスはずっと説得力ないんだが、
非依存になったら何か困るのか?
ここでVC++持ってることをアピールして何か意味あんのか?
正直、このスレ見てる奴はみんな持ってると思うんだが。
0170デフォルトの名無しさんNGNG
ATLに依存っていうより、VC依存症の奴がいるなw
離れられないんでちゅねー
0171デフォルトの名無しさんNGNG
WTLスレで何を。
0172デフォルトの名無しさんNGNG
MSのもっとも優れたアプリケーションは皮肉な事にVisualStudioであると思う。
0173デフォルトの名無しさんNGNG
そうか?
WindowsとかDirectXとかWMPのほうがよっぽど。
0174デフォルトの名無しさんNGNG
だれもVisualStudioを超える拡張性・利便性を持ったアプリを作っていない。
VSには相当な金・頭脳が投入されていると思われる。
0175デフォルトの名無しさんNGNG
「だれも」が指す集合は具体的に何?
拡張性も利便性もたとえばemacsにすら劣っているように見えるけど、超えるの定義は何?
アプリとあるけど、開発環境に限定しないこの世に存在するすべてのソフトウェアをさしているの?
0176デフォルトの名無しさんNGNG
MSの、ってあるのにemacsとか持ち出すなよw
まぁ、自社の開発者が自分の環境を整えるために機能拡張するんだから
凝った作りにもなるわな。社内での能力アピールにもなるし。
それが結果としてMSで一番安定したアプリケーションを生み出す原動力に
なっているのが皮肉なんだろ。

逆に言えば、WMPなんかどうせ開発者たちは凝った使い方せんから
聞けさえすればあとはどうでも(ry
0177デフォルトの名無しさんNGNG
ぶっちゃけWTLがATL非依存になってもMSに何のメリットも無い。
0178デフォルトの名無しさんNGNG
ユーザーにとってもメリットないな。
0179169NGNG
>>177
>>178
ウルセーんだよ。
俺様が「メリットがある」って言ってんだから、大ありなんだよ!!
0180デフォルトの名無しさんNGNG
>>178にとってはメリットないな。
MSのメリットは考えるだけ無駄。
0181デフォルトの名無しさんNGNG
>>180
既存のユーザーはATLと切り離されても影響ないし、
いまから新たにWTLはじめようなんて言う物好きもいないだろう。

VCTKとか、まともなツールキットがないコンパイラを使ってる貧乏人がMS純正品を使いたい
とか言うすごーく特殊な需要しかないだろ。
普通の人はWxとか自作、はたまたDel等のRADに手を染めるほうがよっぽど建設的だ。
0182デフォルトの名無しさんNGNG
>>181
だから非依存になったら困ることあるのかって。
特殊な需要だろうが、これからWTL始めようとする物好きだろうが、
メリットはメリットだろ。
そこまで非依存を拒絶する理由がわからん。
反論したけりゃまず説得力のあるデメリットの例を挙げてみ。

つーか本当にWTL使ってんの?
WTLユーザーを減らすような考え方しかできてないみたいだけど。
0183デフォルトの名無しさんNGNG
切り離してくれって云ってるやつは、簡単に言うと古事記ってことだろ?
0184デフォルトの名無しさんNGNG
俺は既存ユーザだがあのマクロだらけのソース(_ATL_VER >= 0x0700の嵐とか)よりは統一されてくれた方が嬉しい。
0185デフォルトの名無しさんNGNG
>>183 シーッ
0186デフォルトの名無しさんNGNG
>>183
おまえはそればっかりだな
0187デフォルトの名無しさんNGNG
>>186
もしかして分離にメリットがないと感じているのは一人だけだと思ってる?
0188デフォルトの名無しさんNGNG
つか依存するライブラリが別々に提供されてることに違和感ないのかね。
すぐ「貧乏人」を連呼して逃げる奴は。
0189デフォルトの名無しさんNGNG
>>188
全然違和感がない。
なぜならWTLはATLを拡張するためのものだから。
0190デフォルトの名無しさんNGNG
>>187
論点がずれてる。
そりゃメリットがないと感じてる奴はいるだろう。
ただメリットがあると感じてる奴もいるってこった。
VC++持ってる奴の中にもない奴の中にも。
それを「金が無いから」だのとひとくくりにして反論してるつもりになってるからウンザリしてんだよ。
0191デフォルトの名無しさんNGNG
んでデメリットの例マダー?
0192デフォルトの名無しさんNGNG
要はATLをフリーにしろって言うんだろ。
厚かましいんだよ。
0193デフォルトの名無しさんNGNG
>>192
社員かおまえは。
てか過去ログ嫁。フリーでもいいがWTLをATL非依存化でもいいって書いてるだろ。
さらに言えばWTLをATLに吸収でもいい。
でもフリーorATL非依存化の方がユーザーが増えるからフリーor非依存化の方がいいなって流れだ。
要は使用やバージョンアップに二つのライブラリのバージョンを気にするのがめんどうってことだ。
0194デフォルトの名無しさんNGNG
貧乏人はWin32 SDKだけで汗をながせ。
0195デフォルトの名無しさんNGNG
以後貧乏人連呼厨は放置で。
貧乏人という仮想ターゲットを脳内で作りだして優越感に浸りたいだけの電波なので、レスしても電波レスしか返ってこない。
0196デフォルトの名無しさんNGNG
ATL分離厨は放置で。

ATLやWTLに関する有意義な情報交換をやりましょう。
0197デフォルトの名無しさんNGNG
>>196はまともな会話ができないのでこいつとは情報交換は無理げ。
0198デフォルトの名無しさんNGNG
ひとつも反論できてないもんなぁ。困った時の貧乏人連呼だし。
0199デフォルトの名無しさんNGNG
オープンソース関連のスレには必ず一匹はいる連呼厨か。
0200デフォルトの名無しさんNGNG
連呼してもVC++を持って無い人間はおそらくこのスレには皆無だという現実が虚しい・・・
0201デフォルトの名無しさんNGNG
連呼厨、新天地を求めVCTKスレへ
 ↓
0202デフォルトの名無しさんNGNG
そして伝説へ・・・
0203デフォルトの名無しさんNGNG
ハハハ。
所詮、オプソ厨の程度はこんなもんか。
0204デフォルトの名無しさんNGNG
VC持ってない人を取り込む為にもATLから独立して欲しいな。
ユーザ数が増えれば情報量も増えるでしょ。
0205デフォルトの名無しさんNGNG
Cマガってサイトで記事や要望を募集してるんだな。
要望だしたら扱ってくれるかな。
自分で記事を投稿する元気はないけど。
0206デフォルトの名無しさんNGNG
雑誌で紹介されてるの見たことないなぁ。
俺がWTLを知ったのもこの板だし。
0207デフォルトの名無しさんNGNG
普段はvc7を使っているけど、vc7にはプロファイラがついてないから
プロファイルしたいときはvc6でコンパイルしなきゃいけないから
結局古いATLのほうにあわせなきゃならんのがめんどくさい
0208デフォルトの名無しさんNGNG
プロファイラだけならDevPartner入れればいい。
ロハで落とせるし。
0209デフォルトの名無しさんNGNG
VC8には付いてるんだっけ?
たしかプロファイラ使用後に最適化するオプションついてるんだよな
0210デフォルトの名無しさんNGNG
ATLだけでは使わないからなぁ、余計なのない方が嬉しいよ
分離反対派は海外のforumなんか覗いたこと無いんだろうな…
0211デフォルトの名無しさんNGNG
分離は困る。
WTLがATLに依存しなくなるってことは、今WTLとATLが共有している部分は、別々の互換性が無いクラスに分かれるってこったろ?
ATL::CWindowとWTL::CWindowが混ざったプログラム俺は書きたくないね。
ATLとWTLを統合するほうがまだ建設的。
0212デフォルトの名無しさんNGNG
support listすら見て無いんじゃないか。
というかここまでで反対の理由が一つも挙がってないよな。
メリットが少ないからしなくていいってだけで。
要するにどっちでもいいのとちゃうんかと。
やたら反対する理由が知りたい。
0213デフォルトの名無しさんNGNG
>>211
互換性を残しつつ作ることも可能じゃないか。
逆に完全にATLから独立するように作るなら混ざりようがないし。
ATLと統合も良いと思うけど。
0214デフォルトの名無しさんNGNG
ATLの属性付きプログラミングに公式対応させることの方が先決だな。
0215デフォルトの名無しさんNGNG
属性付きだと_ATL_NO_AUTOMATIC_NAMESPACE使えないのちょっとつらいな・・・
0216デフォルトの名無しさんNGNG
俺にとってはIDLをわざわざ作らなくていいメリットの方が大。
0217デフォルトの名無しさんNGNG
属性付って毎回IDLコンパイルしなおされなかったっけ?
速度的にきつくてあきらめた記憶がある。
0218デフォルトの名無しさんNGNG
日曜の昼間っからなんでこのスレがアツいの?
0219デフォルトの名無しさんNGNG
>>208
インストールが終わんね
0220デフォルトの名無しさんNGNG
WTLバージョンage
0221デフォルトの名無しさんNGNG
Release Name: WTL 7.5.4291.0
Notes: Misc bug fixes, patches, and feature requests work.

変更点
ttp://home.att.ne.jp/banana/akatsuki/doc/atlwtl/atlwtla-03/index.html

0222デフォルトの名無しさんNGNG
なんだよ7.5って・・・・
今までずっとMSの7.1が最新だと思ってた俺はアホか・・・
0223デフォルトの名無しさんNGNG
アホ
0224デフォルトの名無しさんNGNG
前回が二ヶ月ぶりで今回が三ヶ月ぶりか。
0225デフォルトの名無しさんNGNG
間が1.5倍ずつになってるのか
0226デフォルトの名無しさんNGNG
つーことは、4回後には6倍だな。
0227デフォルトの名無しさんNGNG
いや、+1ヶ月ずつかもしれん。
0228デフォルトの名無しさんNGNG
つーことは、4回後にはWTLは.NETに吸収合併だな。
0229デフォルトの名無しさんNGNG
support listでも新バージョンについて投稿されたな
0230デフォルトの名無しさんNGNG
新しくなった点を質問して、なんで自分で調べないんだ?と軽く怒られてるな。
0231デフォルトの名無しさんNGNG
閉鎖的だな
0232デフォルトの名無しさんNGNG
2chよりもたちが悪いな w
0233デフォルトの名無しさんNGNG
せめてReadme.htmの「Changes Between WTL 7.5 And 7.1」は更新して欲しいな。

support list、今度は新バージョンが置いてある場所を知らない奴か・・・
新バージョンについてろくな投稿がないな・・・
0234デフォルトの名無しさんNGNG
テンプレの神サイト The So-Software Studio でバージョン履歴が公開されてるね
0235デフォルトの名無しさんNGNG
>>234
>>221
0236デフォルトの名無しさんNGNG
BEGIN_MSG_MAP_EX(CTreeView)
 MSG_WM_CONTEXTMENU(OnContextMenu)
END_MSG_MAP()

LRESULT OnContextMenu(HWND hWnd, CPoint& ptClient)
{
 ATLTRACE("OnContextMenu\n");
 return 0;
}

ツリーコントロール内でコンテクストメニューを出したいのですがうまくイベントが発生しません。
右Wクリック又は、右ドラッグ->右ボタンアップの操作を行った場合はちゃんとイベントは飛んでくるみたいです。
そもそも他のメッセージを捕まえて行うんでしょうか?
(WTL固有の問題かもしれないのでこちらに書き込みました)
0237デフォルトの名無しさんNGNG
SDIのビューにツリーコントロールを使ったってこと?
0238236NGNG
>>237
今開発してるの(SDI)はもうちょっと複雑ですが、
先ほどSDIのビューとしてツリーを使ったもので試してみた所同じ現象が起きました。
ウィザードが生成したコードに>>236の部分のみ変更を加え、
MainFrameからツリーへノードをいくつか追加してます。
0239236NGNG
同様にツリーコントロールをリストコントロールに変えて試したところ、
正常にWM_CONTEXTMENUが飛んできます。
ツリーコントロールは他に必要な手続きがあるんでしょうかね。
0240質問NGNG
WTL って実際の開発で使われていることってあるんですか?
それとも、もの好きのためだけのライブラリですか?
0241デフォルトの名無しさんNGNG
>>240
>>17
0242デフォルトの名無しさんNGNG
>>239
MFCでも同じだね。NM_RCLICKしかないかも。
0243236NGNG
>>242
ええ。MFCでも同じでした。
理由はわからないけどツリーコントロールはWM_CONTEXTMENUが飛んで来ない仕様だから
NM_RCLICKなんていう通知メッセージがあるんですかね。
エクスプローラでも同じみたいなのでNM_RCLICKで対処してみます。
ただNM_RCLICKだと項目が選択されてTVN_SELCHANGINGとかが発生しちゃうんだよなぁ。
0244デフォルトの名無しさんNGNG
デバッグビルドでは問題ないのですがリリースビルドしたら
error LNK2005: __osplatform は既に atlmincrt.lib(atlinit.obj) で定義されています。
とか言われてコンパイル出来ないんですがどうすればいいんでしょう??
0245デフォルトの名無しさんNGNG
_ATL_MIN_CRTだったかな?
0246デフォルトの名無しさんNGNG
>>245
それをしゃべれば、それは
マルチスレット、C言語標準関数、そして、例外を使うことが出来ないとなります.
0247デフォルトの名無しさんNGNG
変な人警報ですか?
0248デフォルトの名無しさんNGNG
プロジェクトのプロパティで
「ATLでCRTをできるだけ使用しない」「いいえ」
としたらリンクできました。
デフォルトでMIN_CRTなのか(;´Д`)
0249デフォルトの名無しさんNGNG
ttp://home.att.ne.jp/banana/akatsuki/doc/atlwtl/atlwtl11-02/index.html

こんな感じでエディットコントロールをサブクラス化し、
WM_KEYDOWNを処理したく思っています。

しかしコントロールクラス側のMESSAGE_HANDLERでWM_KEYDOWNを取っただけで、
何故か矢印キーやDelete、Home、Endキー等が、エディットコントロール内で
効かなくなってしまいます(英数字キーやBSキー等は普通に動きます)。

何か原因に心当たりのある方、教えて頂けないでしょうか。
0250デフォルトの名無しさんNGNG
>>249
あなたがメッセージを横取りしてしまったためにエディットコントロールがキー入力をハンドリングできなくなってしまったのです。
動いているキーはWM_KEYDOWNではなくWM_CHARなどで処理されているのでしょう。
0251249NGNG
>>250
なるほどなるほど!そういえばすっかり忘れていましたが、
文字以外でも、スペースやBSだけはASCIIコードありますもんね。

SetMsgHandled(FALSE);が、普通のサブクラス化におけるCallWindowProcの役割を
果たしてくれるのかと思っていたのですが、違うみたいですねぇ。

しょうがないので、あまりスマートじゃ無さそうですが、自分でCallWindowProcを呼び
m_pfnSuperWindowProcというメンバを渡すことで解決しました。
レスありがとうございました。
0252デフォルトの名無しさんNGNG
WTLでインテリセンスを有効にして快適環境を構築する方法を見つけました!
たったの一晩で今まで表示されていなかったCCommandBarCtrlImplのメンバなどが表示されるようになりました!

2億円、 3億円、 5億9千万円収入者続出しています(違
0253デフォルトの名無しさんNGNG
日記は
0254デフォルトの名無しさんNGNG
ジャポニカ学習帳
0255デフォルトの名無しさんNGNG
WTLで作ったexeって、他に何かランタイムとか必要なんですか?
やたらコンパクトなんですが。。。
0256デフォルトの名無しさんNGNG
釣りですか?
0257デフォルトの名無しさんNGNG
いや、マジです。
MFCとATLしか使ったこと無いんで。
0258デフォルトの名無しさんNGNG
いやATL使ってるならわかるだろ。_ATL_MIN_CRT
0259デフォルトの名無しさんNGNG
atl.dllと_ATL_MIN_CRT って関係あったっけ。
Cランタイム無だったような。
0260デフォルトの名無しさんNGNG
>>255はCRT無しだからコンパクトって話じゃないの?
0261デフォルトの名無しさんNGNG
atl.dllとかmfc*.dllみたいなファイル、例えばwtl*.dllみたいなのが必要なんですか?って話。
Cランタイムは、ATLで開発を始めてから使わない習慣が出来てしまいますた。
0262デフォルトの名無しさんNGNG
なんつーかwtlの中身見ればわかると思うんだけど必要ないよな。
0263デフォルトの名無しさんNGNG
おおっそうなんですか。こりゃいいな。これでいこう。
0264デフォルトの名無しさんNGNG
「あぁあぁんっ・・・はぁはぁ、あっあっ・・・んん・・い、いくっ!いくぅ!あぁん・・い、いっちゃうよぉ・・い、一緒にっ・・イクときは一緒にぃぃっ!」
0265デフォルトの名無しさんNGNG
atlbase.hなんですが、
DEBUGモードだと内部でstdio.hも読み込まれて、sprintfとかの標準関数が使えるのですが、
RELEASEモードだと、stdio.hが読み込まれません。。

これはなんでこんな仕様になっているのでしょうか?
0266デフォルトの名無しさんNGNG
そんな餌でクマー
0267デフォルトの名無しさんNGNG
>>261
つーか、Dependency Walker で確かめりゃいいじゃん。
0268デフォルトの名無しさんNGNG
Releaseだとデフォルトで_ATL_MIN_CRT
ふぁっきゅ〜だな。
0269デフォルトの名無しさんNGNG
つーかこのところ_ATL_MIN_CRT関連の質問大杉
0270デフォルトの名無しさんNGNG
Cライブラリを使わないアプリなんて現実的なのかねぇ・・・。
のちのちの移植性を考えてみても使わないメリットは小さい気がするのだけど。
0271265NGNG
>268
>Releaseだとデフォルトで_ATL_MIN_CRT

そうなんですか。。
なんでビルドの種類によって違うんでしょうか。。変な仕様ですね。。

とりあえず、リリースモードの時だけ、atlbase.hのあとにstdio.hを読み込むようにしました。
0272デフォルトの名無しさんNGNG
>>271
リリースから_ATL_MIN_CRTを外せば?
0273デフォルトの名無しさんNGNG
>>270
ATL使ってる時点で
0274デフォルトの名無しさんNGNG
WTLのCComboBoxでDROPDOWNLISTにして
AddStringで10個くらい項目を足しているのに
右側の▼を押してもリストが展開されません。
見た感じ項目数0のリストが表示されているようです。
この表示数を増やすにはどうすればいいんでしょうか。
0275デフォルトの名無しさんNGNG
>>274
WTL関係なくて、CComboBoxのウィンドウが小さいだけ。
プログラムでウィンドウのサイズを変えるなり、
リソースをテキストで開いてサイズ書き換えるなりすればOK

或いは例えばVC6なら、リソースエディタでコンボボックスの▼の辺りを
クリックすれば、ドロップダウンのサイズを変えられるよ。
0276274NGNG
>>275
ありがとうございます。すごく助かりました。
明日学校行ったら直してみます。
0277デフォルトの名無しさんNGNG
AppWizardでHTMLビューを作ると、ビューのPreTranslateMessageで

if((pMsg->message < WM_KEYFIRST || pMsg->message > WM_KEYLAST) &&
(pMsg->message < WM_MOUSEFIRST || pMsg->message > WM_MOUSELAST))
return FALSE;

// give HTML page a chance to translate this message
return (BOOL)SendMessage(WM_FORWARDMSG, 0, (LPARAM)pMsg);

とあるのは何のため?
前者のif文は、IEのコンテキストメニューを表示したりするために
マウス関連メッセージを有効にするため?
後者のSendMessageは何のためだろう。
0278デフォルトの名無しさんNGNG
>>277
give HTML page a chance to translate this message
0279デフォルトの名無しさんNGNG
WTLのCComboBoxでリストが10個までしか表示されません。
これを増やすにはどうしたらいいですか?
0280デフォルトの名無しさんNGNG
>>279
>>274へ戻る
0281デフォルトの名無しさんNGNG
>>278
PreTranslateMessageがtranslateの場所では?
なぜWM_FORWARDMSGで転送してんの?
0282デフォルトの名無しさんNGNG
>>281
コメントアウトして試してみろよ
0283デフォルトの名無しさんNGNG
コメントアウトしても何も変わらんが。
0284デフォルトの名無しさんNGNG
ATLにPreTranslateMessageなんてあったか?
0285デフォルトの名無しさんNGNG
WTLだろ
0286デフォルトの名無しさんNGNG
>>284はアフォだろ
0287デフォルトの名無しさんNGNG
>>282==>>284?
0288デフォルトの名無しさんNGNG
質問に答えられない>>286よりもマシだけどな w
0289デフォルトの名無しさんNGNG
>>288
負け犬の遠吠えにしか聞こえないからやめとけ
0290デフォルトの名無しさんNGNG
>>289
正しく日本語使おうね。
0291デフォルトの名無しさんNGNG
>>290
はぁ?
0292デフォルトの名無しさんNGNG
相手に聞こえるところで言うのは負け犬の遠吠えとは呼ばない。
0293デフォルトの名無しさんNGNG
なにこの284以降アホなスレ
0294デフォルトの名無しさんNGNG
んでHTMLビューのPreTranslateMessageでWM_FORWARDMSGメッセージ送ると何が変わるの?
0295デフォルトの名無しさんNGNG
そのアホに>>293も含まれている訳だが
0296デフォルトの名無しさんNGNG
やった〜過疎スレなのに伸びてるよ〜
0297デフォルトの名無しさんNGNG
>>292
いやいやいや、そんな定義はないよ
0298デフォルトの名無しさんNGNG
>>277
前のほうの if 文で、web browser control に転送しないメッセージのとき単に false を返して終了し、
後ろの SendMessage で実際にWEB Browser control 側にメッセージを転送しています。

これは入力フォーカスがビューウィンドウにあって、BS やら ALT+矢印やら TAB やらが押下されたとき、
WEB Browser control 側にそれを処理する機会を与えるための処理です。

(WM_FORWARDMSG のハンドラはatlhost.hで実装されていて、 ole control の IOleInPlaceActiveObject::
TranslateAccelerator() を呼び出す)。

詳しくは IOleInPlaceActiveObject::TranslateAccelerator の説明を参照。
0299デフォルトの名無しさんNGNG
VCTKをダウンロードしたもののWTLはATLがないと使えないと
諦めていたら、なぜかPlatformSDKではなくDDKにATL3.0が
付いてきてました。

WTL7.5はATL7前提とかいう話も見聞きしてますが、とりあえず
ATL3.0でも使えてるんで情報あげ。VCTKスレに書くべき?
0300デフォルトの名無しさんNGNG
タイーホカウントダウン?
0301デフォルトの名無しさんNGNG
タイーホて漏れ?VCTKもDDKもPSDKもWTLも全部ライセンスに
従ってほぼ無償でMSとかから入手できるが???

もしかして釣られた?
0302デフォルトの名無しさんNGNG
>WTL7.5はATL7前提とかいう話

これってどっから出たデマ情報なんだろうな?
俺も聞いたことある。
0303デフォルトの名無しさんNGNG
>>301
DDKって今は有償じゃなかったっけ?
0304デフォルトの名無しさんNGNG
うん。でも実費+送料とかで$30とかしか請求されない。
はるばるアメリカから送ってくることを考えたらほぼ無償でしょ。

MS的には来年にはVSExpressも出すし、.NET もあるし、
もはやVCTK+ATL+WTL+MFCくらいは勝手に持ってけ状態なの
かも(今見るとMFC4.2もDDKにあるような…)。

VCTK見た時は最適化コンパイラでも素のコンパイラだけでは
Mingw/gccの方が〜と思ったもんだが、ATL/WTLが使えるなら
手軽なWindows/C++開発環境としては最強かも。
0305デフォルトの名無しさんNGNG
>>299
おおー素晴らしい!

貧乏人の俺がVC6を窓から投げ捨てる日が来た?
0306デフォルトの名無しさんNGNG
>>305
VC6もATL3.0じゃん。
0307デフォルトの名無しさんNGNG
CAtlRegExp、CImage、など色々使いたいのだが、ATL3.0ではどうしようもないな・・・。orz
0308デフォルトの名無しさんNGNG
VCTKって何?
0309デフォルトの名無しさんNGNG
>>306
そうか、これ使い回せばいいのか
2005Express+VC6のATL+WTL+仕上げにVCTKでOK?
                              ゴメンヨ
まぁ2005Expressもうちじゃ重いんだよね…( ´・ω・)っ[VC6]ミ
0310デフォルトの名無しさんNGNG
>>308
Violent and Crazy Team Killer もしくは、Visual C++ Tool Kit
0311デフォルトの名無しさんNGNG
>>309は犯罪者
0312デフォルトの名無しさんNGNG
>>308
http://www.kk-alpha.com/locker/p_freebox/vctk_01.html
0313デフォルトの名無しさんNGNG
>>311
なぜに?
0314デフォルトの名無しさんNGNG
>>313
VC6のATLはVC6でしか使っちゃ駄目とか?
0315デフォルトの名無しさんNGNG
>>314
そ、そうなのか
今規約をざっと見てみたところ、そういう記述は無さそうだけど、どうなんだろ
0316デフォルトの名無しさんNGNG
このスレには、やたらと他人を犯罪者にしたがる厨房がいるからな。
0317デフォルトの名無しさんNGNG
自己弁護乙
0318デフォルトの名無しさんNGNG
>>316
そういやWTLとATLの分離を頑なに反対してた奴に似てるな
0319デフォルトの名無しさんNGNG
ベツニ
0320デフォルトの名無しさんNGNG
自己弁護乙
0321デフォルトの名無しさんNGNG
イミワカンネー
0322デフォルトの名無しさんNGNG
WTL/ATL分離というよりは、ATL/COM分離を求めているわけだが。

「CWindowはCOMと無関係であるにも拘らず・・・」と永遠に続くのであった。
0323デフォルトの名無しさんNGNG
>>322
COMサポートはATLの一部分に過ぎないんだから
別に分離しなくても使わなきゃいいだけの話だと思うが。
0324デフォルトの名無しさんNGNG
ようするに、正規VisualC++.NETを持っていない人限定の要望。
C++BuilderユーザやCygwin・GCCユーザでも使えると嬉しいってこった。
0325デフォルトの名無しさんNGNG
C++BuilderユーザはVCL使ってればいいし、
GCCユーザーやCygwinユーザーはwxWidgetsでも使ってればいいじゃん。
0326デフォルトの名無しさんNGNG
ライブラリの選択肢が増えるのはいいことじゃないか。
0327デフォルトの名無しさんNGNG
>>325
ワラタ
おまいの頭には汎用ライブラリの利点という文字は無いのか
0328デフォルトの名無しさんNGNG
じゃあみんなwxWidgetsとかQTでいいじゃん
0329デフォルトの名無しさんNGNG
たぶん>>325とは一生会話が成り立たないだろうな。
0330デフォルトの名無しさんNGNG
VC7でATL3.0は使えないんじゃないか?
ビルドはできるのだけど、実行しようとするとエラーで異常終了するわけだが・・・。
さて、VC7の場合、どのATLヘッダーとリンクすればいいかね?
0331330NGNG
リンクじゃなくてインクルード。まぁわかると思うけど。
0332デフォルトの名無しさんNGNG
ヘッダーとリンク?
0333デフォルトの名無しさんNGNG
>>330
VC7付属のATL。
0334330NGNG
>>333
説明不足だった。VC7ではなくて、VCTK2003。
PSDKのWin64のヘッダではランタイム異常終了するし、
VC98のヘッダでは金毘羅さえ通らない。
さて、どうしたものか。
0335デフォルトの名無しさんNGNG
コンパイラやリンカのオプションは間違ってない?
あとどんなソース書いたのか。
0336デフォルトの名無しさんNGNG
>>335
リンカオプションが間違ってたらビルド完了さえできないはず。
ATLを使わずAPIだけを使っている他のプロジェクトはちゃんと動いてる。

というか、VCTK2003でATL使ってる人っているのか?
そもそもATL3.0はVCTK2003でちゃんと動くものなのか?
0337デフォルトの名無しさんNGNG
>>334
Win64 用のヘッダか・・・ウィンドウプロシージャサンクしてるとこのコード読んだ?
atlbase.h の _stdcallthunk 。_M_IA64 とかが定義されてると当然落ちるけど。
0338330NGNG
>>337
_M_IA64 はPSDKリファレンスの「The Tools」に書かれている内容では、直接定義してはならないとあるみたい。
自分はいつもどおり _WIN32のマクロ定義を使ってる。

PSDKにはatlbase.hが2種類ある。
<installdir>\Microsoft Platform SDK\include\Win64\atl\atlbase.h (2002/08/21 08:34:30)
<installdir>\Microsoft Platform SDK\src\mfc\atlbase.h (2001/08/15 15:05:30)
一応、両方のパスで試した。Win64版はビルドできるけど実行時に落ちる。
src\mfc版はコンパイルが通らない。ほぼV98版と同じエラー。

ちなみに、コンパイルオプションは、/arch:SSE2 /G7 /GS を追加してる。
せっかくある機能は使いたいのが人情でしょ。駄目・・・?
0339デフォルトの名無しさんNGNG
Win64版はちゃんと64bit版windows上で実行してんのか?
0340デフォルトの名無しさんNGNG
>>338
せめて落ちる場所くらい特定してから来い。
0341デフォルトの名無しさんNGNG
ATL/WTLを分離して欲しいってやつは自分でやればいいんじゃないの?
せっかくソース公開されてんだし。
著作権にだけは気をつけて。
0342デフォルトの名無しさんNGNG
どう気をつけるんだ。
0343デフォルトの名無しさんNGNG
車輪を再開発しないためのライブラリ
0344デフォルトの名無しさんNGNG
>>342
他人にバレないように気をつける。
0345デフォルトの名無しさんNGNG
>>340
WTLで異常終了するのを確認。WTL7.5(wtl75_4291.zip)を使ってる。
異常発生位置は、atlframe.h の456行目
::CreateWindowEx()

VC6.0の"ATL/WTL AppWizard"で作ったSDIアプリのプロジェクトをメイクファイルエクスポートして
VCTK2003環境でビルドすれば他の人も異常終了を確認できると思う。
ATLヘッダーはPSDのWin64版を使っている。(_ATL_VER=0x0300)
0346345NGNG
どうやら自分のVC6SPが古いのが原因だったみたい。
0347345NGNG
ちなみに自己弁護っぽくなってしまうが、VC6SPのバージョンが低いことと、
PSDKWin64ヘッダを使ってTK(=VC7)でビルドした実行ファイルが異常終了することは、
全く関係がないと考えてよいと思う。

PSDKのWin64ヘッダファイルでWin32アプリをTKでビルドすると問題が起きるっぽい。
0348デフォルトの名無しさんNGNG
そんな事も藻前くらいしかやらんだろうから問題無さそうだな
0349デフォルトの名無しさんNGNG
こりゃ、スルーだな。次いこう。
0350デフォルトの名無しさんNGNG
ATLがフリーにならないと、人々が望んでTStringを使うようにはならないだろう。
0351デフォルトの名無しさんNGNG
TStringって何ですか?
0352デフォルトの名無しさんNGNG
>>351
テツレファイ?
0353デフォルトの名無しさんNGNG
>>351
http://www.google.co.jp/search?lr=lang_ja&oe=sjis&q=%54%53%74%72%69%6e%67
Stringの誤字です。
0354350NGNG
帝政する。
TStringをCStringTに文字列痴漢して読んで貰いたい。
0355デフォルトの名無しさんNGNG
>>350=354
こいつアホだな。DelphiスレでATLラーメンでも食って死んでろ
0356デフォルトの名無しさんNGNG
>ATLラーメン

どういう意味かわからない。なんか元ネタあるの?
0357デフォルトの名無しさんNGNG
>>356
ATL + ラーメン。
0358デフォルトの名無しさんNGNG
そのままやんけ〜
0359デフォルトの名無しさんNGNG
最近とみにレベルがひくいな
0360デフォルトの名無しさんNGNG
>>359
同意。
「低い」を漢字で書けないなんて、レベルが低すぎる。
0361デフォルトの名無しさんNGNG
>>360
同意。
いちいち細かいところで嬉しそうに突っ込んでくるなんて、レベルが低すぎる。
0362デフォルトの名無しさんNGNG
新サイト
http://www.tokachi.co.jp/wtl/
0363デフォルトの名無しさんNGNG
おじさんつまんなーい。
0364デフォルトの名無しさんNGNG
新ホテル
ttp://www.4ni.co.uk/listing.asp?cat=884&style=0&company=42881
0365デフォルトの名無しさんNGNG
ATL 解説サイト

ttp://www.ncc.go.jp/jp/ncc-cis/pub/cancer/010217.html
0366デフォルトの名無しさんNGNG
んじゃ俺はWTL

http://www.tokachi.co.jp/wtl/index.html
0367デフォルトの名無しさんNGNG
>>366はものすごくかっこ悪いことをした。
0368デフォルトの名無しさんNGNG
TWLじゃなくてWTLにしたのはこうやって紛れ込むやつを当て込んだのかな・・・。
0369デフォルトの名無しさんNGNG
>>368
だとしたら非道く狭いシェアを当て込んだもんだな

つか真面目な話、こんなのが引っかかるのは邪魔だなぁ
0370デフォルトの名無しさんNGNG
単にSTLに合わせたからとマジレスしちゃ駄目?
0371デフォルトの名無しさんNGNG
>>370
ぜひTokachi Web LinkがSTLに合わせる理由をマジレスして頂きたい( ゚д゚)σ)´Д`)
0372デフォルトの名無しさんNGNG
俺が知ってる限りWTLオープンソース化のニュースが流れる前は、
GoogleでWTLを検索すると十勝Webリンクが一番上にヒットしてた。
ニュース以降はWTLに関するニュース記事やブログが上位になっていったなぁ。
ま、未だに十勝Webリンクも上位にヒットするけどな。
0373デフォルトの名無しさんNGNG
>>362-365
次スレテンプレート候補ということでFA?

話は変わるが、
yahooフォーラムで出てた通りサンクの構造体をユニオンにして
WIN64ヘッダでビルドしたDirectX使用のWTLアプリは不意にOS毎落ちる希ガス。
諦めてVC98でビルドしたバイナリだけつかうようにしてる。
原因は調べる気なし。つか、OS道連れなもんで原因特定方法わからんし。
0374デフォルトの名無しさんNGNG
既出だっけ?
ttp://msdn.microsoft.com/visualc/downloads/updates/atl/default.aspx
0375デフォルトの名無しさんNGNG
かなり前に既出のような気がするけど忘れた。
まぁ2.0だし。
0376デフォルトの名無しさんNGNG
0377デフォルトの名無しさんNGNG
テンプレートーライブラリー(っていうんですかね?)を導入したいと思っています。
現在、WTL、BOOST、LOKIでどれにしようか迷っています。

互換性、プログラムの簡潔性を重視したいので、どれか一つに絞りたいと思います。
どれが良いんでしょうか?

よろしくおねがいいたします。
0378デフォルトの名無しさんNGNG
>>377
ガッ
0379デフォルトの名無しさんNGNG
>>377
用途が違うから絞るものじゃない。
それぞれの用途を調べて自分で決めれ。
0380デフォルトの名無しさんNGNG
>>377
ウリャッ
0381デフォルトの名無しさんNGNG
>>377
STLportっていうのもあるよ。これはSGI(注:創価学会ではありません)の技術がいっぱい詰まった、
未来のてんぷれーとーらいぶらりーさ。
0382デフォルトの名無しさんNGNG
はぁ・・・
0383デフォルトの名無しさんNGNG
あのさ、C++のテンプレートライブラリは専用のスレがあるからさ、ちょっとだけ空気読めよな
0384デフォルトの名無しさんNGNG
>>377
別に一つに絞らなくても構わないと思うぞ。

例えば、お前の言うBoostとLokiとATLを組み合わせて、

boost::shared_ptr<Loki::SmartPtr<CComPtr<I***> > >

とすれば、最強の超スマートCOMポインタが作れたりする。
0385デフォルトの名無しさんNGNG
ATL にも boost::shared_ptr 欲しいよね。
漏れ boost は shared_ptr と function の為にしか使ってないや・・・
0386デフォルトの名無しさんNGNG
アイドルハンドラってとにかく暇な時に呼び出されるわけじゃないのね
0387デフォルトの名無しさんNGNG
>>386
メッセージループで処理すべきメッセージが無いときに呼ばれるんじゃなかったっけ。
0388デフォルトの名無しさんNGNG
>>386
CMessageLoopから派生したクラスを書けば、そのような挙動にすることも可能だよ。
漏れは、ゲームとかリアルタイム系のアプリ作るときには使ってる。
0389デフォルトの名無しさんNGNG
>>385
boostはゲームソフトの抱き合わせ販売のようなものだ

                       ――ゲーテ
0390デフォルトの名無しさんNGNG
他のライブラリの話はもういいから。
0391デフォルトの名無しさんNGNG
>>387
常に連続して呼ばれるわけではないのだ

>>388
頭(・∀・)イイ
早速やってみるyo
0392デフォルトの名無しさんNGNG
>>390
ゲーテかい?
0393388NGNG
>>391
いや、そもそもCMessageLoopがそういう状況を考慮して作られているから。
ソース見てみれば分かるよ。
0394デフォルトの名無しさんNGNG
デフォルトで
while(他にメッセージが無い){
 アイドル処理;
}
なメッセージループは嫌だなぁ。
どんなアプリもCPU100%
0395388NGNG
>>394
そんなのは、CMessageLoopの派生の仕方によって好きなように制御できる。
0396デフォルトの名無しさんNGNG
デフォルトで、なら嫌だなって話だろ
0397デフォルトの名無しさんNGNG
そうだそうだ。
お兄ちゃんに謝れ。
0398デフォルトの名無しさんNGNG
>>392
俺だよ。
0399デフォルトの名無しさんNGNG
www.codeproject.com/wtl/wtldockingwindows.asp
ここにあるデモプロジェクトがコンパイル出来ません。
一番シンプルそうなDockSiteSampleとか。

同梱されているincludeフォルダにインクルードパスを通す。
プロジェクトにDockImpl.cppを追加。
stdafx.cppからDockImpl.cppをインクルード。
MainFrameでDockingWindow.hをインクルード。
_ATL_MIN_CRTを解除して/GXコンパイルオプションを設定。

…山のようにウォーニングやらエラーが出ます。
何か忘れてる事とかあるんでようかね。
助言ください!
0400399NGNG
あぁ環境書くの忘れました。
VC++ 7.1
WTL 7.5.4291.0
0401デフォルトの名無しさんNGNG
>>399
> ウォーニング
ワーニング、のほうがが正しい発音。
0402デフォルトの名無しさんNGNG
というように面倒な事になるからwarningと書け。
0403デフォルトの名無しさんNGNG
>>399
>>プロジェクトにDockImpl.cppを追加

これをビルドの対象からはずした?
0404403NGNG
あ、思い出した。
.net からコンパイラのチェックが厳しくなったんで、C2501 とかを
直すには

Before:
typedef TDockingWinTraits::CCaptionCCaption;

After:
typedef typename TDockingWinTraits::CCaptionCCaption;

というように typename が必要だった気がする。
しかもかなりの箇所を修正する必要があったはず。
頑張れ
0405399NGNG
>>404
なるほど参考になる情報ありがとう。
.netが出てからかなり経つのにソースが修正されてないんですね。
そうとわかれば勉強がてらに地道に修正してみます。
0406デフォルトの名無しさんNGNG
>>402
ベツニ面倒じゃないよ
0407デフォルトの名無しさんNGNG
>>401
[wɔ่:ɾniŋ] のほうが正しい発音。
0408デフォルトの名無しさんNGNG
ぅうわゎーにんぐゅ
0409デフォルトの名無しさんNGNG
ウォーニングがワーニングでも大差ないだろ。
エンジョイとかバケーションとかしまいにゃイギリスとかどうなのよ
0410デフォルトの名無しさんNGNG
今更何やってんだかって感じだな。
Cスレやそこらで散々既出の話題。
0411デフォルトの名無しさんNGNG
ジジイ ウゼー
0412デフォルトの名無しさんNGNG
こういう見当違いのレスが続くから>>402なわけか
0413デフォルトの名無しさんNGNG
カタカナで書いたときはウォーニングだとウォーキングと見間違えてしまうから、
カタカナ表記する場合はワーニングで統一して欲しいと思う吉宗であった(AA略)。
0414デフォルトの名無しさんNGNG
ワーニングだとワーキングと間違えやすい。
0415デフォルトの名無しさんNGNG
普通の人間ならウォーニングでもワーニングでも前後の文章から察してwarningの事だろうと理解出来るもんだ。
ただ自分は正しい発音を知っるって事をちょっとだけ誉めてもらいたかっただけなんだ。
許してやってくれ。
0416デフォルトの名無しさんNGNG
内容は読んでないけどこんなの見つけた。
ttp://www.codeproject.com/macro/WTLHelper.asp

0417デフォルトの名無しさんNGNG
>>416
あっそう、よかったね。
これからは厨房日記は自分のblogにつけてくれ、頼む。
0418デフォルトの名無しさんNGNG
>>417
0419デフォルトの名無しさんNGNG
てか激しくがいしゃつ
0420デフォルトの名無しさんNGNG
>>419
0421デフォルトの名無しさんNGNG
がいしゃつワロタ
0422デフォルトの名無しさんNGNG
なんだこの厨臭いスレ
0423デフォルトの名無しさんNGNG
部屋とガイシャツと私
0424デフォルトの名無しさんNGNG
すみません。ここの皆さんには FAQ なんでしょうけど
私も _ATL_MIN_CRT にずっぽりはまってしまいました。
このスレの上の方を見るとマクロから消せば良いという
結論になってますよね?
それで確かに動くようにはなったのですが、このまま常に
「_ATL_MIN_CRT を消す」と思ってて良いのでしょうか?

一応このあたりの内容は目を通してみました。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vccore/html/vcconusing_atl_min_crtinyouratlproject.asp
http://hp.vector.co.jp/authors/VA022575/c/atlmincrt.html
http://home.att.ne.jp/banana/akatsuki/doc/atlwtl/atlwtl08-03/
http://www.hi-ho.ne.jp/babaq/comprog2.html
0425デフォルトの名無しさんNGNG
どうしてもサイズを小さくしたいなら別だけど、
そうじゃないなら消す。
0426デフォルトの名無しさんNGNG
サイズの違いについては特に気にならないのですが、
mallocとかstr系とか使えない関数があるから危険みたいな、
そういうところにいまいち納得がいかなくて・・・
0427& ◆sQw2IvQ8pg NGNG
そういうのが使えなくなるってのはどうでもいいんだけど。
リンク通らなくなるのが謎。
どうせ使えないのならそもそもある意味が分からない。
0428デフォルトの名無しさんNGNG
>>425
私もなぜ Release の時だけデフォルトで
_ATL_MIN_CRT 付けてるのかなーと思います。
MS 的には何らかの意図があったのだと思いたいのですが。

「どうせ消すのに」という意見参考になりました。
アドバイスありがとうございます。
0429デフォルトの名無しさんNGNG
>>426
どこに危険と書いてあった?

>>427
サイズを小さくする=Cライブラリ関数を使わないようにする=Cライブラリをリンクしない
だからリンク通らないのは当然。

>>428
MSの意図は知らないが、そもそもATLはプログラムサイズを小さくする設計だったので、
デフォルトで極力小さくするようにしたと思う。
じゃあなんでデバッグ版に_ATL_MIN_CRTが付いてないんだと言われたら知らん。
デバッグ時はCライブラリ関数を使うと思ったんじゃないかな。
0430デフォルトの名無しさんNGNG
MIN_CRT環境って、C++の例外って使えるんだっけ?
0431デフォルトの名無しさんNGNG
使えない
0432デフォルトの名無しさんNGNG
CScrollWindowImpl使ってるんですが、
横と縦にスクロールバーが付くと、一番端までスクロール出来ないです。
端の部分が、スクロールバーの下に隠れてしまい、見えていない状態です。

これを防ぐにはどうしたらいいのでしょうか?
それとも、予めスクロールバー分サイズを大きくしておくしかないのでしょうか?
0433432NGNG
スマソ
逝ってくる

スクロールバー使う時は、DoPaintとかOnPaintで、
スクロールバーのオフセットを考慮した描画しなくちゃいけないんだね。
そこら辺をやらずに悩んでたorz

0434デフォルトの名無しさんNGNG
WTLって基本的にATLとセットで使うもの?
gcc使ってるんだけどWTLを導入するメリットってある?
0435デフォルトの名無しさんNGNG
>>434
ATLが必要だよ
0436デフォルトの名無しさんNGNG
>>434

ない
0437デフォルトの名無しさんNGNG
WTL ってそんなにいいか?
0438デフォルトの名無しさんNGNG
>>437
ClassWizardが使えない事を除けば、MFCと作業量に違いがない。
カスタマイズが容易なWTLに流れるのは自然なこと。
かといって、MFCが劣るわけでもない。
本格的なGUIアプリは今もMFCが現役。

一部のクラス機能だけを使いたいときにはWTL。
それ以外の場合はMFC。
0439デフォルトの名無しさんNGNG
すごいいいっていう気は全然しないけど、まあMFCよりはWTLの方がマシ。
今更MFCはちょっと使う気になれない。

#本格的なGUIアプリってなんだろ?
#一部のクラス機能ってなんだろ?
#それ以外ってなんだろ?
0440デフォルトの名無しさんNGNG
>>438 >>439
それで、MFC と WTL とどっちがいいのですか?
今勉強を始めるとしたらどちらがお奨めですか?
0441デフォルトの名無しさんNGNG
そこでAPI。
0442デフォルトの名無しさんNGNG
>>440
どっちでもいい。
0443デフォルトの名無しさんNGNG
>>440
WTL
0444デフォルトの名無しさんNGNG
WTLってMFCに比べて資料少なくないですか?
0445デフォルトの名無しさんNGNG
うん
0446デフォルトの名無しさんNGNG
これから増える。はず?
0447デフォルトの名無しさんNGNG
Code Project がいいよ。
0448デフォルトの名無しさんNGNG
>>446
常にそういわれ続けてるけど、未だに実現していない。
0449デフォルトの名無しさんNGNG
言われつづけてるか?
0450デフォルトの名無しさんNGNG
正直 WTL は上級者向け。
資料がないと開発できないやつには向いていない
君たちには WTL のコードがすべて開示されているじゃないか?
って誰かが言っていた気がする
0451デフォルトの名無しさんNGNG
逆に、ソース読まずにWTLを使うのはつらいかも。
名に使うにしても、ヘッダくらいは目を通すでしょう。(w
0452デフォルトの名無しさんNGNG
>>15でだいたいわかる。
あとはソース。
調べてわかったことはWebで公開。
こうして資料が増える。これ。
0453デフォルトの名無しさんNGNG
WTLはバグだらけだから遊びじゃなければMFCのがマシだよ
0454デフォルトの名無しさんNGNG
むしろATLがバグだらけ。。。
0455デフォルトの名無しさんNGNG
そこで.NETですよ。
0456デフォルトの名無しさんNGNG
C#でGenericsが実装されるみたいだけど、WTLもC#で書けるようになるのかなあ
0457デフォルトの名無しさんNGNG
そこでWTL.NETですよ。

てか、>>456はネタじゃなかったらチンカス以下ですね
0458デフォルトの名無しさんNGNG
C# と Generics って言いたかったんだろう。
察してやれ
0459デフォルトの名無しさんNGNG
真剣?
0460デフォルトの名無しさんNGNG
真剣ならもうちょいマシなこと書くだろ
0461デフォルトの名無しさんNGNG
>>452
それ、かなり好きです。
0462デフォルトの名無しさんNGNG
Comega
0463デフォルトの名無しさんNGNG
>>458
意味不明なんだが
0464デフォルトの名無しさんNGNG
C尻
0465デフォルトの名無しさんNGNG
>>454
例えば?
0466デフォルトの名無しさんNGNG
HTTPがらみ。
0467デフォルトの名無しさんNGNG
あとは?
0468デフォルトの名無しさんNGNG
まったく何を言ってるんだ。
天下のマイクロソフトが作るものにバグなんかあるはずがないだろう。
藻前らの使い方が悪いのだ。
0469デフォルトの名無しさんNGNG
エントリーおめでとう
http://pc5.2ch.net/test/read.cgi/tech/1101931660/
0470デフォルトの名無しさんNGNG
オナニーしたくなってきた
0471デフォルトの名無しさんNGNG
純粋にATLの話題ではないのですが、まともに COM の質問ができるスレが見当たらないので・・・。
idl に適当にデュアルインターフェイスを書いて、
Url や LockType という名前のプロパティを定義してコンパイルすると
プロパティ名が勝手に小文字に変換されるんですが、
どなたか再現する方、原因・解決法をご存知の方はいらっしゃいませんか?
自動生成されるC++ヘッダの方は問題なくput_Url/get_Urlになっているのですが、
タイプライブラリの方が小文字になってしまいます。
ITypeInfo で確認できます。
VS.NET 2003です。
0472デフォルトの名無しさんNGNG
WTL7.1とVC6でやってます。以下のようにするだけで例外が出てしまうのですが、
原因分かりますでしょうか。例外を無視すれば問題は無いのですが、あまり気持ちが良くなくて。

CFileDialog dlg_file_open(TRUE, _T("txt"), NULL, OFN_HIDEREADONLY | OFN_CREATEPROMPT,
_T("テキストファイル (*.txt)\0*.txt\0ビットマップファイル (*.bmp)\0*.bmp\0JPEGファイル (*.jpg)\0*.jpg\0\0") );

dlg_file_open.DoModal();

//実行結果(DoModal内でGetOpenFileNameが呼ばれたときに例外が出る)
例外処理 (初回) は Test.exe (KERNEL32.DLL) にあります: 0x000006B5: (名前がありません)。
例外処理 (初回) は Test.exe (KERNEL32.DLL) にあります: 0x000006B5: (名前がありません)。
0473デフォルトの名無しさんNGNG
その例外は止まる例外か?
プログラムが止まらないなら問題なし。
0474デフォルトの名無しさんNGNG
>>473
そんなもんですかー。
止まらないのでこのままやってしまいます。レスありがとうございました。
0475デフォルトの名無しさんNGNG
えー
0476デフォルトの名無しさんNGNG
>>475
だってその例外、ちゃんと内部でキャッチされてるじゃん。
MSの人も例外を使いたかったんだよ。
0477デフォルトの名無しさんNGNG
つーかその例外ってATL/WTLに限った話じゃないよな
0478デフォルトの名無しさんNGNG
>>476
キャッチされてても良くない(動作はするが意図したものとは違う)こともあるぞ。
0479デフォルトの名無しさんNGNG
>>478
そういうときはエラーが返る、はずなんだけど、ググってみると同じ状況でこの例外が発生して
かつ期待した動作にならない、なんとかならんか、なんてことを言ってるロシア人がいるね。
0480デフォルトの名無しさんNGNG
CFileDialogで開くと
右側にプレースバー?の無い旧式になるんだけど
どうすれば今の形式で表示出来るの?
0481デフォルトの名無しさんNGNG
>>480
::GetOpenFileName()を直接呼び出し。

↓Windowsプログラマの常識
CFileDialogを使う人=厨房
0482デフォルトの名無しさんNGNG
>>480
右側じゃなくて左側の「履歴」とかが入ってるボックスのこと?
Windows2000で追加されたものなので実行環境を限定してもよければ
#define _WIN32_WINNT 0x0500
(#define WINVER 0x500)も
とすれば、出てくるけど。
ついでに、OPENFILENAME構造体の拡張部分も見ておくといいよ
0483482NGNG
補足。
出てくるってのは、CFileDialogを使った場合も。
あと、SDKが古すぎる場合はとうかわからない。
VC6で附属のSDKだとダメかも。
ヘッダーでOPENFILENAMEを確認してみて、
無ければ最新のSDKで。
0484デフォルトの名無しさんNGNG
何この>>481が恥かしすぎる展開
0485デフォルトの名無しさんNGNG
↓Windowsプログラマの常識
MFCを使う人=厨房
0486デフォルトの名無しさんNGNG
↓プログラマの常識
Windowsプログラマ=厨房
0487デフォルトの名無しさんNGNG
↓一般人の常識
プログラマ=厨房
0488デフォルトの名無しさんNGNG
↓政治家の常識
一般人=厨房
0489デフォルトの名無しさんNGNG
つまんね
0490デフォルトの名無しさんNGNG
日本の常識
台所=厨房
0491デフォルトの名無しさんNGNG
くだらん
0492デフォルトの名無しさんNGNG
i am chiken from kichen.
0493デフォルトの名無しさんNGNG
しょーもな
0494デフォルトの名無しさんNGNG
ワラタ
0495デフォルトの名無しさんNGNG
>>492
パラッパだろ
0496デフォルトの名無しさんNGNG
パッパラパッパー?
0497デフォルトの名無しさんNGNG
.o.o...o.o..
0498デフォルトの名無しさんNGNG
ヤンガス
0499デフォルトの名無しさんNGNG
なんだこの流れは・・・
0500デフォルトの名無しさんNGNG
流れのことはよくわからんが、とにかくすごい500ゲット。
0501デフォルトの名無しさんNGNG
おめこ
0502デフォルトの名無しさんNGNG
飲食店に以前から興味がありまして。
0503デフォルトの名無しさんNGNG
VC.netで、属性つきATLプロジェクトでATL ActiveXコントロールを
作成すると、例えばCFooってクラス名のコントロールだとすると、
必ず「CFoo Object」って名前でレジストリに登録されて、
どう頑張っても名前を変えられないのはバグですか?

属性なしのプロジェクトであれば、ATLコントロールウィザードの
「名前」ページの「種類」に設定した通りのコントロール名になるのに、
属性つきプロジェクトでは、全く同じ設定にしても
「CFoo object」という名前でしか登録されないです。

いくら調べても原因が分かりませんでした。
0504デフォルトの名無しさんNGNG
アッシの脳みそは米つぶくらいでげす。

つまり。

難しいことはさーっぱり分からないでげすよ。
0505デフォルトの名無しさんNGNG
helpstring?
0506デフォルトの名無しさんNGNG
>>503
cocolassのクラスの属性のvi_progid、progid、helpstringとか、
リソースファイルの *rgs 内の記述なんかは何になってますか?
0507デフォルトの名無しさんNGNG
>>503
[
coclass,
threading("apartment"),
vi_progid("Foo.Foo"),
progid("Foo.Foo.1"),
version(1.0),
uuid(<省略>),
helpstring("ネオむぎ茶"),
support_error_info(IFoo),
registration_script("control.rgs")
]

control.rgsの関連部分の抜粋

HKCR
{
NoRemove CLSID
{
ForceRemove {[!output CLSID_REGISTRY_FORMAT]} = s '[!output TYPE_NAME]'
0508デフォルトの名無しさんNGNG
☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃
☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃
☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃
☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃
☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃
☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃
☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃
☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃
☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃
☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃
☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃☀☁☂☃
0509デフォルトの名無しさんNGNG
WIN98SEのVC++6.0+SDKのWTL7.1で
やりはじめたものなんですけどもね、
あのですね、下のサイトからですね
http://www.codeproject.com/wtl/wtlbrowser.asp
WTL Browserのソースファイルをダウンロードしてですね
ビルドしたところ
以下のようなエラーがでてきたんですよ。
\code project\wtlbrowser_src\WTLBrowser\WTLBrowser.rc(355) :
fatal error RC4214: Codepage not valid: ignored
rc.exe の実行エラー
どうも
resource scriptの
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_HEB)
#ifdef _WIN32
LANGUAGE 0xD, 0x1
#pragma code_page(1255)
#endif //_WIN32

という部分が引っかかっているようなんですが
これは一体なんなのかわかりますかね?
0510デフォルトの名無しさんNGNG
WTL.NET 誰かつくって。
0511デフォルトの名無しさんNGNG
>>510
System.Windows.Forms
0512デフォルトの名無しさんNGNG
>>509
俺がダウンロードしたソースではその部分はこうなってるけど。

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
0513509NGNG
あ、どうもです。
リソースファイルの
////////////////////////////
// English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
(略)
#endif // English (U.S.) resources
/////////////////////////////////////

の直後に

///////////////////////////////////////
// Unknown language: 0xD, 0x1 resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_HEB)
#ifdef _WIN32
LANGUAGE 0xD, 0x1
#pragma code_page(1255)
#endif //_WIN32
(略)
#endif // Unknown language: 0xD, 0x1 resources
/////////////////////////////////////////////////

の記述があってその部分を削ってコンパイルビルドしたらうまくいきますた。
言語設定かなんかの問題なんでしょうか。
なんか謎です。
0514デフォルトの名無しさんNGNG

void Hoge() { Hoge(); }
0515デフォルトの名無しさんNGNG
StackOverflowException
0516デフォルトの名無しさんNGNG
CContainedWindow と ALS_MSG_MAP を自分自身に対して行うと、
状態の遷移に合わせて実行時の挙動を動的に変えるのにすごく便利なことに気づいた。
お前らも使え。
0517デフォルトの名無しさんNGNG
ALS はドラクエの主人公なんだが、何の関係が?
0518デフォルトの名無しさんNGNG
TとSをうちまちがえるとはなんということだ
0519デフォルトの名無しさんNGNG
キーの位置的にありえない間違え方だ・・orz
俺の指にいったい何が・・
0520デフォルトの名無しさんNGNG
>>519
ダジャレ書き込みでタイプミスは最低だな。
芸人として終わってる。
0521デフォルトの名無しさんNGNG
520はどこにダジャレを見いだしたんだ
0522デフォルトの名無しさんNGNG
WTLとドラクエ。
0523デフォルトの名無しさんNGNG
>>522
間違ったのは518じゃなくて516だぞ
0524デフォルトの名無しさんNGNG
>>523
意味がさっぱり分からんのだが。
0525デフォルトの名無しさんNGNG
>>524
それはATLを理解してないからだよ
0526デフォルトの名無しさんNGNG
>>525
ATLもWTLも、もちろんALT_MSG_MAP も普通に使っているが、
523の発言の意図がよー分からん、と言っただけ。
0527デフォルトの名無しさんNGNG
たとえATLのマクロを知らなくても、518が間違ってるなんて思ってる奴はいないだろう
0528デフォルトの名無しさんNGNG
つまり520がバカと言うことだ。
0529デフォルトの名無しさんNGNG
そんなことないよ
0530デフォルトの名無しさんNGNG
>>528は520の何気ないレスが相当にこたえたらしいなw
ミスした張本人ということか。マジ笑えるw
0531デフォルトの名無しさんNGNG
つまり、あれだ。

>>516は、>>498を見て、ちょっとドラクエがやりたくなったところで、
ついうっかりWTLのことが頭をよぎったんでしょ
0532デフォルトの名無しさんNGNG
追加:
CSortListViewCtrl
CZoomPrintPreviewWindow
CZoomScrollImpl
0533デフォルトの名無しさんNGNG
>>520
いやだから「ダジャレ書き込みでタイプミス」したのは誰なのよ
0534533NGNG
あ、おれ521ね
0535デフォルトの名無しさんNGNG
>>532
なにに追加したんだ?
0536デフォルトの名無しさんNGNG
ATLのマルチスレッドって具体的には何をすればいいの?
0537デフォルトの名無しさんNGNG
>>536
FreethreadのCOMオブジェクトの実装方法?
普通にスレッドセーフに作るだけ。
クリティカルセクションやMutex、イベントで排他や待ち合わせを行い、
必要ならWindowメッセージ等でスレッド間のRPCを行う。
0538デフォルトの名無しさんNGNG
あけましておめでとう!
0539デフォルトの名無しさんNGNG
別におめでたくない
0540デフォルトの名無しさんNGNG
今回の年末・年始はあまりめでたくなかったよな。
ま、こういうこともたまにはあるんだろうけどさ。
0541デフォルトの名無しさんNGNG
2005年って特に何もなさそうな年だもんな
0542デフォルトの名無しさんNGNG

俺が憶えてる限りでは、2005年は生きてきた中で一番何もない年だったな。
0543デフォルトの名無しさんNGNG
ATLってなくなるの?
0544デフォルトの名無しさんNGNG
ATL8.0
0545デフォルトの名無しさんNGNG
WTL7.5.5002キタ━━━━━━━━━━━━━━━━━━━━━(゚∀゚)━━━━━━━━━━━━!!
0546デフォルトの名無しさんNGNG
>>545
情報サンクス。
しっかし、相変わらずペめb(ry
0547デフォルトの名無しさんNGNG
WTL7.5.5002イラネ━━━━━━━━━━━━━━━━━━━━━(゚�听)━━━━━━━━━━━━!!
0548デフォルトの名無しさんNGNG
>>546
意味不明
0549デフォルトの名無しさんNGNG
何が変わったん?
0550デフォルトの名無しさんNGNG
Diffとれ
0551デフォルトの名無しさんNGNG
連書きスマン。
リリースノートにはこうある。

Release Name: WTL 7.5.5002.0
Notes: More bug fixes, new zoom scroll classes, zoom print preview, sort list view classes, new reflect notifications macros.
0552デフォルトの名無しさんNGNG
VC6のウィザードつけてクレー
0553デフォルトの名無しさんNGNG
WTL7.1の使えばいいじゃない
0554デフォルトの名無しさんNGNG
>>532はなんで知ってたんだ?もしかして開発に参加してるの?
0555デフォルトの名無しさんNGNG
CVSリポジトリ見てれば分かるんじゃ
0556デフォルトの名無しさんNGNG
これか
ttp://cvs.sourceforge.net/viewcvs.py/wtl/
0557デフォルトの名無しさんNGNG
http://sourceforge.net/projects/wtl/
むしろ本家
0558デフォルトの名無しさんNGNG
って>>1に書いてあった罠 スマソ
0559デフォルトの名無しさんNGNG
なんか結構追加されてるね。
atlgdi.h に CLogFont とか。
0560デフォルトの名無しさんNGNG
どうして昔から日陰モード炸裂なの?
0561デフォルトの名無しさんNGNG
>>559
CLogFontもViksoe氏だっけ?
びくそえマンセー
0562デフォルトの名無しさん05/01/18 16:28:26
シェブロンが出ない。
0563デフォルトの名無しさん05/01/18 17:30:48
(´・∀・`)ヘー
0564デフォルトの名無しさん05/01/24 21:31:46
>>562
ドラゴンボール7つ集めたか?
0565デフォルトの名無しさん05/01/24 21:32:40
>>564
レーダーに写らない
0566デフォルトの名無しさん05/01/24 21:40:11
>>562
俺もジェブロン出すのにいろいろ試した記憶があるなー≫
たしか、stdafx.hにあるWindowsバージョン関係の定数を上げたら、表示されるようになった気がする。
0567デフォルトの名無しさん05/01/24 21:41:48
でOS古いと起動すらしなくなると
0568デフォルトの名無しさん05/02/01 08:21:17
初心者の俺がアドバイスしてやろうかと思ったけどやめた。
WTL楽だし楽しいね。
0569デフォルトの名無しさん05/02/01 19:55:54
え?
0570デフォルトの名無しさん05/02/01 22:13:51
日本語初心者ですか
0571デフォルトの名無しさん05/02/01 23:12:58
テステス
0572デフォルトの名無しさん05/02/07 20:24:40
下がりすぎage
0573デフォルトの名無しさん05/02/07 21:10:39
WTLのMDITabコンポーネントでお勧めはありますか?
0574デフォルトの名無しさん05/02/07 23:13:54
viksoe
0575デフォルトの名無しさん05/02/08 03:56:47
DirectXでフレームウィンドウはWTLでお手軽にと思ったら、
なにかイベントがあった時にしかOnIdleに飛んでこないよ・・・
バグ?仕様?
0576デフォルトの名無しさん05/02/08 07:44:31
仕様。常にCPU100%でループ回してるわけじゃないから。
0577デフォルトの名無しさん05/02/08 08:14:28
OnIdle()を理解していないヤシが定期的に現れるねw

キューが空になった時に一回づつ呼ばれるのであって、
アイドリング時に漫然と何度も呼ばれるわけではないと何度言えば(ry
そもそもアイドリング判定なぞ、誰がどうやるのかと小一時間(ry
0578デフォルトの名無しさん05/02/08 08:25:35
そもそもなんでソース見ないのかが不思議。
0579デフォルトの名無しさん05/02/08 11:49:56
WM_SIZEのハンドラOnSizeのなかで、GetClientRect呼び出すと
ステータスバーやツールバーの領域を除外していないサイズが返ってくるのですが。

どうすれば計算済みのクライアント領域を取得出来るの?
0580デフォルトの名無しさん05/02/08 11:54:08
ステータスバーもツールバーもクライアント領域に貼り付けられた子ウィンドウだろ。
0581デフォルトの名無しさん05/02/08 12:18:11
>どうすれば計算済みのクライアント領域を取得出来るの?

MFC使えば
0582デフォルトの名無しさん05/02/08 12:23:02
ステータスバーとツールバーのハンドルからRECTを取得して、
適宜クライアント領域を算出する手間を惜しむ人には、WTLは難しい。
058357505/02/08 13:54:11
CMessageLoop::OnIdleが常にFALSEを返すようになってたので、
オーバーライドしてTRUEを返すようにしたらちゃんと動きました。
というか、DirectXならここでレンダー呼べばよさそう。

CMessageLoop::Run自体はOnIdleを継続して呼べるようになってました。
0584デフォルトの名無しさん05/02/08 14:07:34
何のためのWTLだよ
0585デフォルトの名無しさん05/02/08 14:23:37
何のためなんだ?
0586デフォルトの名無しさん05/02/08 15:09:31
もちろん自己満足。
0587デフォルトの名無しさん05/02/08 21:57:47
クライアントサイズやアイドルハンドラの質問はMFCもWTLも変わらないような。
MFCもフレームウィンドウでGetClientRectすればバーを含めたサイズを返すし、
MFCのアイドルハンドラもただループ回してるだけじゃないし。
WTLどうこう以前に、質問者はMFCやWin32APIもあまり知らないんじゃないかと。
0588デフォルトの名無しさん05/02/08 21:58:51
>>583

そのループなら、viksoeさんのライブラリに既にある。
CMessageLoopEx とか言う名前と、UI更新との相性が悪いので、俺は前から独自のを使ってるが。

つーか、ちょっと前にも同じようなこと書いた覚えがあるぞ
0589デフォルトの名無しさん05/02/08 22:17:10
まああれだ
.NETになれば計算なんてしないでも
プロパテ設定しておけば勝手に引っ付くわけで
0590デフォルトの名無しさん05/02/08 22:40:03
>>588
何言ってんだ?
日本語喋れ
0591デフォルトの名無しさん05/02/08 22:56:34
WTLでも特別何もしなくても勝手に引っ付いてるわけだが。
ATL/WTLAppWizardでビュー付きウィンドウ作って見れ。
0592デフォルトの名無しさん05/02/08 23:04:49
IVideoWindowなのでビューにするってわけにもいかんのです
0593デフォルトの名無しさん05/02/08 23:18:35
>>592
ここのWM_SIZE見れ
ttp://www.kumei.ne.jp/c_lang/sdk3/sdk_275.htm
0594デフォルトの名無しさん05/02/09 00:07:33
CFrameWindowImplBase::UpdateBarsPosition(RECT& rect, BOOL bResizeBars = TRUE)
0595デフォルトの名無しさん05/02/09 00:24:11
>>594
残念。RECTを求める関数じゃなくて指定RECTにリサイズする関数じゃん。
つか、自分で計算しろと何度言えば(ry
0596デフォルトの名無しさん05/02/09 13:51:29
Yes,アメリカ王.
0597デフォルトの名無しさん05/02/09 21:57:56
Yes, you is.
0598デフォルトの名無しさん05/02/10 10:46:47
594の関数を先に呼べばGetClientRectから
ツールバーやステータスバーの領域が除外される
0599デフォルトの名無しさん05/02/10 11:27:18
rect に入ってるだろ
0600デフォルトの名無しさん05/02/10 12:19:26
ATL/WTLって専門書とかありますか?
0601デフォルトの名無しさん05/02/10 18:23:14
ATLにはあって、WTLにはない。
0602デフォルトの名無しさん05/02/10 20:08:57
マイクロソフトにあって、ボーランドにない。
0603デフォルトの名無しさん05/02/10 21:42:15
それがJ++。
0604デフォルトの名無しさん05/02/11 03:19:05
俺にあって、藻前らにない。
0605デフォルトの名無しさん05/02/11 03:57:28
それもJ++。
0606デフォルトの名無しさん05/02/11 22:05:21
 J++J
  ゚ 
  
ジャイコ
0607デフォルトの名無しさん05/02/19 15:00:27
だれもいないの?
0608デフォルトの名無しさん05/02/19 15:40:26
>>607
慰めてほしいのかい?
0609デフォルトの名無しさん05/02/19 16:44:54
いや、あんまり過疎ってるから心配になって。
0610デフォルトの名無しさん05/02/20 02:56:10
ATL8まだかなー
WTL8まだかなー
0611デフォルトの名無しさん05/02/21 20:34:05
その前にそろそろ標準搭載させてもらわないと
0612デフォルトの名無しさん05/02/22 00:51:54
mac用最強シェアの最強ブラウザ「 kabaddi」インドでシェアNo.1を誇るウェブブラウザ

http://www.studio-kura.com/index.html

・使用方法はSafariなどのウェブブラウザと全く同じです。
 ただし、データの読み込み時に右上のオジサンと一緒に
「カバディ!」と叫んでください。声が止まると読み込みが中止されてしまいます。
・読み込みが正しく終了するとオジサンが「カバディ!」というのをやめます。
 そうしたら声を出すのをやめましょう。
 いつまでも叫んでいるとバカみたいです。

0613デフォルトの名無しさん05/02/22 13:02:47
Win32APIスレから移動してきました。

自前アプリに埋め込んだウェブブラウザの画像読み込みを抑止する方法がわかりません
ざっと検索した範囲だと、ホストから実装して、Invokeをオーバーライドするみたいな事が書いてあるようなのですが、

CAxWindow::SetExternalDispatchで外部ディスパッチを指定すれば
そこでダウンロードコントロールをいじれるんじゃないかなという気がして試してみたいのですが、、
ここで必要なディスパッチインターフェイスをどうやって用意するべきか分かりません。

何か良いサンプルはありませんか?
0614デフォルトの名無しさん05/02/22 13:25:01
>>613
言ってることがよくわからないけど、web browser コントロールがインライン等で画像をダウンロードするのを
抑制したいっていう話なら、CAxHostだかなんだか忘れたけど MFC のホスト側にIServicePrivider を実装して
自前の IBindHost を提供してあげればよかったと思うけど・・・ググってみるといくつかヒットするな。
http://www.google.co.jp/search?hl=ja&q=web+browser+control+IBindHost&lr=
http://www.dotnet247.com/247reference/msgs/9/45332.aspx
実装例もあるけど仕事で書いた奴だから見せられません。
基本的には下のほうのURLで示されているのと同じ方針でOK。

「ダウンロードコントロール」ってのが何なのかわからないので外してたらゴメン。
0615デフォルトの名無しさん05/02/22 14:02:35
返信、ありがとうございました。 ダウンロードコントロールはこれの一番下にある奴です。
ttp://msdn.microsoft.com/library/default.asp?url=/workshop/browser/overview/Overview.asp
アンビエントプロパティから、簡単に設定できるように書いてあるので、
外部ディスパッチを指定できるCAxWindowを使用しながら簡単にアンビエントプロパティの設定が
出来るのではないかと思っているのです。

MFCは使っていないので、そのままの方法で出来るのか分かりませんが少し調べてみます。
Monikerとか分からないものが出てきているのでしり込みはしますが・・・。
0616デフォルトの名無しさん05/02/22 14:18:56
>>615
なるほど。それならアンビエントプロパティの設定で簡単に出来そうですね。
↓とか。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/vclrfiaxwinambientdispatchex.asp
0617デフォルトの名無しさん05/02/22 20:04:56
質問です。
VC7.1を使ってATLの属性付きDLLプロジェクトを作成したのですが、
デフォルトで作成されるrgsファイルにエントリを追加しても
まったくレジストリに追加されません。
VC6では出来ていたのですが、このrgsファイルは使われていないんでしょうか?
0618デフォルトの名無しさん05/02/24 18:30:43
http://blog.windy.ac/archives/cat_iassoaeeiaeoeueemanaged_coieee.html
0619デフォルトの名無しさん05/02/25 23:26:00
is this thread alive?
0620デフォルトの名無しさん05/02/26 05:59:21
sorry, im not good at english.
0621デフォルトの名無しさん05/02/26 15:07:51
OK. me too.
0622デフォルトの名無しさん05/02/26 16:30:52
X too
O either

>>621
You are honest !!
0623デフォルトの名無しさん05/02/26 17:26:24
↑ a foo
0624デフォルトの名無しさん05/03/02 00:44:25
VC++6でWTL7.5なのですが、
(テキスト含めた)ファイル入出力、レジストリ読み書きはどうやるのが筋でしょうか?

VC++7であれば、なにやら便利そうなクラスが転がっているみたいなのですが・・・
0625デフォルトの名無しさん05/03/02 01:46:29
>>624
ATL3.0でもCRegKeyはあるよ
0626デフォルトの名無しさん05/03/02 12:33:43
>>624
漏れはWTLなら、ファイルIOは素のAPI呼び出しか
C++の標準ライブラリとか使うなぁ。

テキスト操作は std とか boost とか。
0627デフォルトの名無しさん05/03/09 00:28:37

ありがとうございました
0628デフォルトの名無しさん05/03/09 02:41:42
どういたしましほ
0629デフォルトの名無しさん05/03/10 00:38:34
あのねもしもきみがみちにまよっていたら
いっしょにまよってあげるね
0630デフォルトの名無しさん05/03/10 02:11:16
CRegKeyは、CStringとの連携が無いから糞
0631デフォルトの名無しさん05/03/10 03:19:31
>>630
CString::GetBuffer()の使い方を知らないの?
0632デフォルトの名無しさん05/03/10 19:37:36
>>631
知らんわけないだろう。

いちいちGetBuffer→ReleaseBufferするのはタイプ量も多いし
コードも見づらくなるし最大文字数も書かなきゃいけないし、面倒くさすぎって事。
0633デフォルトの名無しさん05/03/10 20:07:01
CStrBufもしらんのか
0634デフォルトの名無しさん05/03/10 22:32:29
>>632
センスねーな
0635デフォルトの名無しさん05/03/10 23:04:57
>>633
しらん
>>634
ない
0636デフォルトの名無しさん2005/03/25(金) 14:45:05
VCのクラスビューアにヘッダ突っ込めば
少しWin32知ってればドキュメント代わりになるなあ

とたまにage
0637デフォルトの名無しさん2005/03/25(金) 23:56:59
イソテリセソスは使えないの?
0638デフォルトの名無しさん2005/03/26(土) 06:27:03
なんか古代生物みたいだな(w
0639デフォルトの名無しさん2005/03/29(火) 09:45:38
ちょっと質問させてください。

スプリッタウィンドウを伴うMDIアプリケーションを
作成したいと考えています(VC++.NET、WTL7.5、Windows XP SP2)。

ttp://www.codeproject.com/wtl/mdisplit.asp
を参考に作っていたのですが、このサンプルには
バグがあるようで、それの解決方法がわかりません。

まずバグについて具体的に書かせていただきます。

このサンプルでは、スプリッタウィンドウの左ペインにAboutダイアログを表示させる
という口実で、本来あったであろうメニューリソースのHelp項目を無くしています。
この為、CMDIWindow::GetStandardWindowMenu関数は常にNULLを返しており※、
MDI子ウィンドウが新しく作成されても、メニューのWindow項目以下に
キャプションリストの追加が行われなくなっています。
※キャプションリストを追加するためのメニューアイテムは
 名称が_WTL_MDIWINDOWMENU_TEXTと一致し、かつ
 メニューバーの右から二番目になければならない。

これを解決するために、メニューバーの末尾に適当な項目を追加してやると、
キャプションリストの追加は行われるようになるのですが、
10個目のMDI子ウィンドウを作成しようとするとプログラムが異常終了してしまいます。
06406392005/03/29(火) 09:46:23
どうやら、MDI子ウィンドウが10個以上になったときに現れる
その他のウィンドウという項目の追加処理に失敗しているようです。
※上記サンプルではキャプションリストの追加自体が行われていないので、
 10個以上作成してもこのバグは発現しません。

多分、MDIフレームの直下にあるべきMDIクライアントが、
スプリッタウィンドウをはさんで存在しているため、MDI関連のメッセージとかで
うまく処理されていないものがあるのでは?と想像しつつソースを眺めているのですが
どこが原因なのか皆目見当もつきません。

試しにWTLを使わずWin32API直書きでMDIフレームとMDIクライアントの間に
別ウィンドウをかましたテストプログラムを作ってみたりもしたのですが、
その場合、この現象は起きないのですが…

どなたか解決策(もしくは別の実装案)を御存知の方はいらっしゃらないでしょうか?
0641デフォルトの名無しさん2005/03/29(火) 11:48:35
ヒントでしかないけど...

m_hWndMDIClient の親をスプリッタに切り替えるのをやめると、
クラッシュせずに10個目以降のためのメニュー項目が追加されるようになるよ。
当然、画面表示はおかしくなっちゃうけどね。

別の実装としてはこれ?
http://www.codeproject.com/wtl/wtldockingwindows.asp
大げさになっちゃうけど。
06426392005/03/30(水) 02:45:44
>>641
>m_hWndMDIClient の親をスプリッタに切り替えるのをやめると、
ヒントありがとうございます。

自身の子ウィンドウでなくとも、
スクリーン座標の相対位置で適切にペインの配置が可能な
スプリッタウィンドウクラスを作ることで、
(見かけ上は)正常に動くプログラムを作成できました。

ちょっと汚い実装かな?とは思うのですがw
※もしかしたら、メインウィンドウはSDI(CFrameWindowImplから派生)にしておいて、
 class CMDIFrame : public CWindowImpl<CMDIFrame, CMDIWindow>
 こんな感じのクラスを作ってやった方がイイのかな?

とりあえず問題なく動いてるようなのでこれで逝こうかなと思いますが、
もっとスマートな実装がありましたら情報いただけると幸いです。

>別の実装としてはこれ?
>http://www.codeproject.com/wtl/wtldockingwindows.asp
実は、私のほうでも、スプリッタがうまくいかないのなら
ドッキングウィンドウに仕様変更しちゃおうかなとか考えてましたw
0643デフォルトの名無しさん2005/03/31(木) 00:03:21
CodeMaxのようなフリーのエディタコンポーネントはないものか…
0644デフォルトの名無しさん2005/03/31(木) 09:17:59
リッチエディト
0645デフォルトの名無しさん2005/04/03(日) 15:13:04
そろそろバージョンアップする頃だよな
0646デフォルトの名無しさん2005/04/04(月) 16:48:22
MFCのAfxVerifyLicFile関数に相当する関数はATLには無いのでしょうか。
0647デフォルトの名無しさん2005/04/11(月) 01:54:00
BEGIN_MSG_MAP(CMyWindow)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
END_MSG_MAP()

WTLをはじめてみようと思ったのですが、この書式ってなんですか?
cでもc++でも見たことないんですが、、、。
0648デフォルトの名無しさん2005/04/11(月) 02:05:48
メッセージクラッカ
0649デフォルトの名無しさん2005/04/11(月) 02:06:59
>>647
マクロで定義されてるだけだよ。
0650デフォルトの名無しさん2005/04/11(月) 02:07:34
実質ただのメンバ関数定義
0651デフォルトの名無しさん2005/04/11(月) 22:18:50
>647
ヘッダーファイルくらい見ろよ。
0652デフォルトの名無しさん2005/04/11(月) 22:32:45
ちゅーか、ググれよ。
0653デフォルトの名無しさん2005/04/11(月) 23:21:43
>>647
WTLはじめる前に
Cを勉強しなおしたほうがよいと思います。
0654デフォルトの名無しさん2005/04/14(木) 19:42:02
しかし昔からあるけど誰がこんなやりかた考えたんだろうな
0655デフォルトの名無しさん2005/04/15(金) 06:53:12
ん?皮オナニーのこと?
0656デフォルトの名無しさん2005/04/17(日) 02:50:23
WTL 7.5.5102.0
Changes since the last release:
- Bug fixes
- Misc. class/method improvements
- Wizard97Test
- Sample for Wizard97 base classes
- Improved support for Windows CE: CMenuBarCtrl, CPropertySheetImpl, frame windows
- Enabled CDialogResize for Windows CE
- Added CScrollContainer class
0657デフォルトの名無しさん2005/04/21(木) 01:59:13
- Added .NET Support
- Removed Native Support
0658デフォルトの名無しさん2005/04/21(木) 07:16:32
まじで?
0659デフォルトの名無しさん2005/04/21(木) 08:28:53
いくらなんでもそれはありえないんじゃなかろうか。
それならC++のテンプレートライブラリにする意味ないんじゃね?
0660デフォルトの名無しさん2005/04/21(木) 20:23:13
ねたにまじれ
0661デフォルトの名無しさん2005/04/21(木) 20:28:39
すかこ
0662デフォルトの名無しさん2005/04/21(木) 21:26:46
わるい

というのはおいといて、ワーカースレッド作りたいけど
ATL/WTL的にはなにも手助けしてくれないから
SDKの関数使っていればいいのかな?

かっこいいクラスある?
0663デフォルトの名無しさん2005/04/21(木) 21:38:09
あ
06646622005/04/21(木) 21:51:40
調べてみた感じそうっぽいので先に進もう

あ、SDKの関数と言うよりはCランタイムの関数
0665デフォルトの名無しさん2005/04/21(木) 22:34:38
>>662
CRTThreadTraits
0666デフォルトの名無しさん2005/04/21(木) 23:11:59
ATL7.0でスレッド用クラス追加されたじゃん。
06676622005/04/22(金) 00:33:36
ぐっは
CWorkerThreadとかまんまのクラスあるやん
ATL Server クラスのほう見てなかったorz
0668デフォルトの名無しさん2005/04/24(日) 11:40:28
.net2003で、ATLシンプルクラスを2つつくって、(COya CKo)
COYaにCKoのインターフェースを作って、そのあとIKoにプロパティ
作ると、なぜかCOYaにもできるのですが、なんでですか。
しかも、
CoCreate(COya,IOya,&oya)
oya->QueryI(CKo,IKo,&ko)
ko->xxx
ってやっても、そのoyaにもできたしまったほうのプロパティのほうを
取りにいこうとしてしまいます。

0669デフォルトの名無しさん2005/04/24(日) 13:14:51
>>668
COya、CKoを含めて、その辺のコードを示しなさい。
0670デフォルトの名無しさん2005/04/24(日) 19:24:07
コードの前に、前半部分の疑問からはじめていいですか。
こっちはコードいらずです。

ATLシンプルオブジェ2こつくって、クラスビューワ(?)の
COyaのところで右クリックして、インターフェースでCKoを
追加します。

そして、IKoのところで右クリックしてプロパティ追加ってやると、
IKoに追加してるのにCKoとCOya両方が書き換わってりょうほうに
同じget_xxx set_xxxができちゃいます。なんでCOyaにも
できるのか理解できません。別に継承とかしてるわけではないのに・・。
0671デフォルトの名無しさん2005/04/24(日) 20:02:08
>COyaのところで右クリックして、インターフェースでCKoを
0672デフォルトの名無しさん2005/04/24(日) 20:04:48
IKoのまちがい
わかってるくせに。まちがいはてきとうにほかんしなされ

0673デフォルトの名無しさん2005/04/24(日) 23:53:10
CWindowImplのWM_PAINTの挙動って
_DEBUGの時とそうでないときと違ったりしないよね・・・・?

見事にそうなっちゃったんだけど自分が悪いんだよなぁ・・・
リリースビルドの時だけ背景真っ白
0674デフォルトの名無しさん2005/04/25(月) 00:47:31
>>673
ATLASSERTの中に必要な処理を書いてるとか
0675デフォルトの名無しさん2005/04/25(月) 00:49:36
>>673
ATLのソースを見れば分るだろ。
06766732005/04/25(月) 04:22:07
ごっめーん
MFCと違ってVERIFYねぇ→式の評価はしてくれるんだろう
と思いこんでた

すまそすまそすまそorz
06776732005/04/25(月) 04:31:49
わーい、動いた、感動

#ifdef _DEBUG
#define ATLVERIFY(f)ATLASSERT(f)
#else
#define ATLVERIFY(f)((void)(f))
#endif
06786732005/04/25(月) 04:32:52
あ、tabがなくなっちゃったけどまぁわかるよね
0679sage2005/04/25(月) 14:13:30
>>670
IKoに追加されてるのは、インタフェイスの宣言としてのプロパティ。
COyaに追加されてるのは、その実装。
インタフェイスを持ってるんだから、実装もあるはず、ということで
COyaに追加される。そこに実装を書く。

たぶんお前みたいな初級者は、
IKoに実装を書いて「IKoに書いたからCOyaに同じメンバいらねぇよ!」とか
思ってるんだろうけど、そのやり方はちょっと間違ってると思う。
0680デフォルトの名無しさん2005/04/25(月) 23:49:04
ATL無しでは動かんの?
0681デフォルトの名無しさん2005/04/27(水) 01:04:38
VS2005プレビュー版が出たけどWTLのバージョンアップはまた2,3ヶ月後か
0682デフォルトの名無しさん2005/04/27(水) 04:10:20
プレビュー版でもそのまま動いてるよ
0683デフォルトの名無しさん2005/05/15(日) 02:47:52
更新情報
「COMMAND_RANGE_HANDLER とその使い方」
ttp://homepage1.nifty.com/Roy_/Software/WTL/WTL_Lecture10.htm
0684デフォルトの名無しさん2005/05/16(月) 23:29:23
Flash.ocxから絵をメモリ上に描きたいです。

http://kikyou.info/diary/?200312
これを参考にしているのですが、CreateControl()の引数にどんなIStreamを渡せばいいのかわかりません。
試しにSHCreateStreamOnFile()で適当なSWFファイルを開いて取得できる
IStreamを渡したらCreateControl()に失敗するようになりました。

ご指導おねがいします。
0685sage2005/05/17(火) 16:16:54
>>684
そこのサイトに詳しく書かれている通りの内容を帰す IStream を、
>>684自身が作ればいい。

IStreamの実装を自分でしたくない/できないなら、
GlobalAllocでメモリを確保して、そのサイトの情報をもとに内容をセットアップして、
CreateStreamOnHGlobalでメモリストリームを作ってIStream::SetSizeでサイズ指定する、
とかしても良い。
0686デフォルトの名無しさん2005/05/18(水) 00:04:55
class CMyWindow : public CWindowImpl<CMyWindow, CAxWindow>
{
BEGIN_MSG_MAP(CMyWindow)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
END_MSG_MAP()

LRESULT OnPaint(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled)
{
::OutputDebugString("CMyWindow::OnPaint()\n");
return 0;
}
};

これではOnPaint()のオーバーライドができないのですが
どうすればいいでしょうか?
0687sage2005/05/18(水) 12:47:53
>>686(=684?)
よく知らんが、CAxWindowでクライアント領域一杯にActiveX コントロールが
ホスティングされてる状態だと、無効領域が無いからOnPaintは呼ばれない
んじゃない?
0688デフォルトの名無しさんNGNG
過去レス読まずにカキコ
スプリッタウィンドウ周り、クラスブラウザから読めなくてオートコンプリートぜんぜん効かない
これってIDEのテンプレート引数周りのバグ?

atlcrack.hのマクロもクラスブラウザおかしくなるし
ちなみにVS.NET 2003
0689デフォルトの名無しさん2005/05/19(木) 02:35:07
>>688
WTLに限らず、ファイルをまたいだマクロは
インテリセンス系は解析しない(できない)。

できるのはprebuilt.ncbに入ってる奴だけよん

バグといえばバグなのかも知れんが、
マクロとかそういうC++の腐った言語仕様を、膨大な数のファイルから
リアルタイムに解析するのはちょっと無理なんじゃないかな
0690デフォルトの名無しさん2005/05/19(木) 19:30:10
2005βだとちょっと賢くなったかも
仕様的に完璧はムリというのは同意
0691688NGNG
ある修正を加えたらとりあえずまったく問題なく認識するようになった。
>>689氏の言葉がヒントになった。感謝。

http://ranobe.sakuratan.com/up/updata/up38210.jpg
0692688NGNG
同じ悩み抱えてる方もいるだろうからいちおう解決法書いとく
atlsplit.hの上らへんに、atlwin.hからコピってきたマクロをこんな風に貼り付け

#if !defined(__ATLAPP_H__) && !defined(__ATLWIN_H__)
#define BEGIN_MSG_MAP(theClass) \
(略)
#define END_MSG_MAP() \
(略)
#define DECLARE_WND_CLASS_EX(WndClassName, style, bkgnd) \
(略)
#endif


検証してみたが、BEGIN〜とEND〜のマクロだけヘッダに書いてあればクラス構造は
正しく認識できるらしい。
ただしDECLARE_WND_CLASS_EXはデフォではvoid型の関数として認識してた。

しかし、クラス内メッセージマップ持ってるヘッダも他にもあるのに
なんでこいつだけ認識されなかったりしたのだろうか
06936892005/05/20(金) 00:21:32
>>691
おーよかった。

ちなみにVS.NET2003では、自作クラスのときも、
BEGIN_〜END_〜とかDECLARE_〜とかのマクロ系とか、
あとクラス内定義のテンプレートクラスとかいったものは、
できるだけクラスの最後の方に書いた方が
そのクラスのメンバを認識してくれる確率が上がるっぽい。
まあ困ったら試してみる価値はあり。

インテリセンスのためだけにメンバの順番を変えたりするのは
う〜んな感じがしないでもないけど。
0694デフォルトの名無しさん2005/05/22(日) 11:36:48
[VB.NETクラスライブラリ:Test_Dll.dll]
Imports System

Namespace Class1
  Public Interface IClass1
    Function Test_Func1() As Integer
    Sub Test_Func2(ByVal a As Integer, ByVal b As Integer)
  End Interface

  Public Class Class1
    Implements IClass1

    Private m_val As Integer

    Public Sub New()
      m_test_prop = 0
      m_val = 0
    End Sub

    Public Function Test_Func1() As Integer Implements IClass1.Test_Func1
      Return m_val
    End Function

    Public Sub Test_Func2(ByVal a As Integer, ByVal b As Integer) Implements IClass1.Test_Func2
      m_val = a + b
    End Sub
  End Class
End Namespace
0695デフォルトの名無しさん2005/05/22(日) 11:39:54
すいません、途中で書き込んでしまいました_| ̄|○

で、質問なのですが、
VB.NETで作ったクラスライブラリをアンマネージのVC++から呼ぼうとしているんですが、
何故かクラスライブラリ内のメンバ変数へのアクセスがうまくいきません。

VB.NETコードは上記のとおりで、これをビルド後VC++のプロジェクトにコピーして
RegAsm.exe Test_Dll.dll /tlb:Test_Dll.tlb
を実行して、以下のコードをデバッガで走らせました。
0696デフォルトの名無しさん2005/05/22(日) 11:40:48
これをビルド後VC++のプロジェクトにコピーして
RegAsm.exe Test_Dll.dll /tlb:Test_Dll.tlb
を実行して、以下のコードをデバッガで走らせました。

[C++:main.cpp]
#include <windows.h>
#include <atlcomcli.h>
#import "Test_Dll.tlb" named_guids named_guids raw_interfaces_only

void main(){
long ret;
HRESULT hResult;

char path[MAX_PATH];
::GetCurrentDirectory(MAX_PATH, path);

::CoInitialize(NULL);

::CComPtr<Test_Dll::IClass1> comPtr;
//Test_Dll::IClass1* comPtr;

hResult = ::CoCreateInstance((REFCLSID)Test_Dll::CLSID_Class1, 0, CLSCTX_INPROC_SERVER, (REFIID)Test_Dll::IID__Class1, (LPVOID*)&comPtr);

hResult = comPtr->Test_Func2(1, 1);  //<-ここでメモリアクセスの例外発生
hResult = comPtr->Test_Func1(&ret);  //一行上のコードをコメントにして実行するとret=-858993460

::CoUninitialize();
}

長い書き込みになってホントすいません
よろしくお願いします。
0697デフォルトの名無しさん2005/05/24(火) 10:52:46
WTLにて、リソース無しでダイアログを作る方法は無いですかねぇ
DialogBoxIndirectの文字がどこにも無いから無理かなぁと思いつつ
0698デフォルトの名無しさん2005/05/24(火) 12:27:49
>>697
ttp://www.codeproject.com/wtl/resourcelessdialogtoolkit.asp
これはどう?お望みのものか分からないが
06996972005/05/24(火) 12:46:32
>>698
これは便利だ、ありがとうございます
ダイアログテンプレート作成、かなり面倒なんですねぇ、侮ってましたよ
0700デフォルトの名無しさん2005/05/24(火) 21:56:42
WTLのツリービューまたはリストビューで、
(TVS | LVS)_EDITLABELSスタイルを指定して、ラベルを編集しようとするとエラーがでるんですが、普通に編集できるようにする方法はありますか?
ダイアログベースやMFC・SDKだと大丈夫なようなんですが…
0701デフォルトの名無しさん2005/05/24(火) 23:07:38
どういうエラーが出るのかも示さずに答えろというのだろうか。
07027002005/05/24(火) 23:48:37
やっぱ必要ですよね、申し訳ない。

atlframe.hの2311行目でStack overflowが発生。

LRESULT OnCommand(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& bHandled)
{ //-- ここでエラー --//
  bHandled = FALSE;
  if(m_bBlockAccelerators && HIWORD(wParam) == 1) // accelerators only
  ・
  ・

環境:
WTL 7.5.5102.0
VC++.NET2003
Windows2000sp4

です。
0703デフォルトの名無しさん2005/05/26(木) 20:26:39
スタックオーバーフローなんて一番見つけやすいバグじゃないか。
デバッグ実行してとまったところで呼び出し履歴見る!
07047002005/05/27(金) 00:29:15
すいませんごめんなさい許してください。
CHAIN_CLIENT_COMMANDS()が原因でした…
0705デフォルトの名無しさん2005/05/28(土) 13:23:46
質問させてください。
今月のCMAGAZINE6月号に掲載されている特別記事「IEをカスタマイズして自由に操作する」を自分のPCで試してみたのですが、CSampleModuleクラスの定義がウィザードで作成されたコードに組み込まれなくて困っています。
自分の試した方法は、[新規作成]から ATLプロジェクトを新規作成し、プロジェクト名を Sample にしました。
これで Sample.cpp 内に CSmpleModuleクラス が定義されるはずなのですが、Sample.cpp 内に CSmpleModuleクラスの定義は無く、自分で CSmpleModuleクラスを定義しようとすると、
error C2011: 'CSampleModule' : 'class' 型の再定義
というエラーが出てしまいます。
多分どこかには定義されていると思うのですが・・・
具体的に何をしたいのかと申しますと、CSmpleModuleクラス内で DllRegisterServer() と DllUnregisterServer() をオーバーライドしたいのです。
問題の原因は、Cマガの記事で使用されている開発環境が、 .NET2003 なのですが 自分の環境が .NET2002 なのが原因だと思いますが、 .NET2002 でも方法はあるのではと思っています。
方法をご存知の方お願いいたします。
0706デフォルトの名無しさん2005/05/28(土) 13:28:08
>>705
クラスビューにCSampleModuleは表示されていないかい?
ダブルクリックすれば定義に飛べるよ。
07077052005/05/28(土) 13:38:42
>>706
返信ありがとうございます。
クラスビューに CSampleModule は表示されているのですが、CSampleModuleクラスにメンバの定義が無いせいかダブルクリックしてもツリーが開かれるだけで定義は表示されません。
ちなみに開かれたツリーには CSampleModule の親クラスと思われる、 [ベースとインターフェース]というツリーが表示されます。

方法をご存知の方、お願いいたします。
0708デフォルトの名無しさん2005/05/29(日) 14:57:11
これでMSのサポートがあれば最強なんだけどなぁ
0709デフォルトの名無しさん2005/05/29(日) 16:26:54
>>708
MSのサポートなんて必要か?
0710デフォルトの名無しさん2005/05/29(日) 16:38:06
>708
ヘッダソースがあるんがから、自分で直せよ
0711デフォルトの名無しさん2005/05/29(日) 16:53:18
MSのサポートがあれば客から文句言われたとき
MSに丸投げできるじゃん。
そんなこともわからないの?
0712デフォルトの名無しさん2005/05/29(日) 17:11:13
そういう腐れた根性で
ソフトを納入される業者はたまったもんじゃないな。
0713デフォルトの名無しさん2005/05/29(日) 17:37:30
自分のプログラムが糞なのをMSのせいにするタイプだな >711
0714デフォルトの名無しさん2005/05/29(日) 18:09:28
>>711
丸投げしても自分のスケジュールが延びたりはしないだろう。。。
だから、投げておいたとしてもバグの回避策とかみんながんばって探すのでわ?
07157112005/05/29(日) 18:51:31
なんだこんな常習テクニックも知らなかったのか。
ごくろうさま。

仕事は遊びじゃないんだから責任の所在って言うのが大事なんだよ。
誰も責任とってくれないオープンソースなんか怖くて使えない。
0716デフォルトの名無しさん2005/05/29(日) 18:57:37
遊びじゃないからこそMSのバグが原因だったとしても出すものを出さないといけないと思うのですが。。。
0717デフォルトの名無しさん2005/05/29(日) 19:00:52
まぁ最終的には運用で回避してもらうんだけどね
0718デフォルトの名無しさん2005/05/29(日) 20:54:17
出すもの出すにしても自分を弁護する理由が沢山あった方が良い。
0719デフォルトの名無しさん2005/05/29(日) 22:22:16
#define Yield()

っていったい何のためにやってるんですか?
すっげぇ邪魔なんすけど
0720デフォルトの名無しさん2005/05/29(日) 22:26:42
>>719
Win16APIにそんな名前の関数があった名残。
0721デフォルトの名無しさん2005/05/30(月) 00:27:45
>>715
> 誰も責任とってくれないオープンソースなんか怖くて使えない。
MS だって責任とらないぞ、別に。
0722デフォルトの名無しさん2005/05/30(月) 01:20:12
すでにATL/WTLの話じゃないよね。
0723デフォルトの名無しさん2005/05/30(月) 04:08:42
>>720
そーだったんすか!!ありがとうごます、Win16てっ使ったことねかったんで。
擬似マルチタスク関係?の関数の名前ぽっいすね。
とりあえず #undef Yield しときます。

>>722
いちよーこれでもWTL使ってんすよ〜〜(汗
0724デフォルトの名無しさん2005/05/30(月) 09:19:08
>いちよー
0725デフォルトの名無しさん2005/05/30(月) 10:15:32
揚げ足とりはいいとして本当にいちよーだと思っている成人にこの前出会った。
0726デフォルトの名無しさん2005/05/30(月) 10:20:03
711はMSを命令通りに動かせるんだよ。711はゲイツ。
0727デフォルトの名無しさん2005/05/30(月) 19:49:43
プロパガンダを 「プロがパンダ」 とマジで言ってる香具師がいたな
0728デフォルトの名無しさん2005/05/30(月) 20:02:27
ミニにタコ?w
0729デフォルトの名無しさん2005/05/30(月) 22:07:23
馬のミミ−(雌 5歳)に念仏
0730デフォルトの名無しさん2005/05/30(月) 22:48:36
おたまじゃくしと
お邪魔タクシー

灯台下暗しと
大正デモクラシー

お前らそんなレベルだ。
0731デフォルトの名無しさん2005/06/02(木) 02:40:30
>>726
インシデントって知ってる?
0732デフォルトの名無しさん2005/06/02(木) 21:46:55
えーまだ続けんのー
0733デフォルトの名無しさん2005/06/02(木) 21:58:35
>>732
ちっこい奴はいつまでも続けるからほっとけ。
0734デフォルトの名無しさん2005/06/02(木) 22:43:06
知らなかったようだね。
0735デフォルトの名無しさん2005/06/03(金) 13:39:56
客からの文句をインシデントを使ってMSに丸投げするって??
全然丸投げにならないだろ。
0736デフォルトの名無しさん2005/06/03(金) 13:51:31
えーまだ続けんのー
0737デフォルトの名無しさん2005/06/03(金) 20:06:57
  ┏┳┳┓     ハイ.     ┏┳┳┓
┏┫┃┃┃     雑談は   ┃┃┃┣┓
┃┃┃┃┣┓   ここまで ┏┫┃┃┃┃
┃      ┃┃┏━━━┓┃┃      ┃
┃ 雑談   ┣┫ . ・∀・ ┣┫. STOP!┃
┗━━━━┛┗┳━┳┛┗━━━━┛
            ┏┻┓┃
        ┏━┛  ┣┻┓
        ┗━━━┫  ┗━┓
.             ┗━━━┛
0738デフォルトの名無しさん2005/06/04(土) 00:19:59
ほかに話題ないくせに強がっちゃって。
0739デフォルトの名無しさん2005/06/10(金) 19:50:08
5160ですよ。
0740デフォルトの名無しさん2005/06/10(金) 21:15:34
漏れの報告したバグがなおってるーー
0741デフォルトの名無しさん2005/06/10(金) 23:53:11
もめでたう
0742デフォルトの名無しさん2005/06/11(土) 13:27:16
じゃんじゃんバグ報告しちゃってください
0743デフォルトの名無しさん2005/06/11(土) 22:38:19
漏れが報告してないバグが直ってない・・・orz
0744デフォルトの名無しさん2005/06/11(土) 23:41:25
勇気を出して報告しよう。
ほら、恥ずかしがらずに。
0745デフォルトの名無しさん2005/06/12(日) 00:04:28
バグ報告はこちらに。
ttp://sourceforge.net/tracker/?atid=652372&group_id=109071&func=browse
書式は適当に合わせておけばいいかと
0746デフォルトの名無しさん2005/06/22(水) 00:04:57
ATL/WTL最後の砦
http://game10.2ch.net/test/read.cgi/game/1119365420/
0747デフォルトの名無しさん2005/06/22(水) 06:40:24
え?
0748デフォルトの名無しさん2005/06/27(月) 17:56:54
ATLやWTLの質問じゃない気もしますが、
WTLを使用する際に、
VCのIDEでインテリセンスをきかせたいのですが、
どうすればいいのでしょうか?
0749デフォルトの名無しさん2005/06/27(月) 17:58:55
>>748
俺は特に何かしたつもりは無いが使えている。
07507482005/06/27(月) 18:01:11
VC7.1を使っています。
とりあえずWTLを落として解凍し、
ヘッダファイルの入ったディレクトリをIDEのオプションのProjectsのインクルードファイルに追加していますが、
WTLにインテリセンスがきかないんです。
0751デフォルトの名無しさん2005/06/27(月) 18:03:18
そしてWTLのヘッダをインクルードしてWTL::と打てば出た。
07527482005/06/27(月) 18:11:41
>>751
それはできます。

たとえば、
class hoge : public CWindowImpl<hoge>なクラスの中で、
WTLのメッセージマップを使ったときに、
CWindowのメンバが表示されなくなるんです。
07537482005/06/27(月) 18:57:22
解決方法を見つけました……ってこんなのあり?
http://www.codeproject.com/wtl/WTLIntellisense.asp
0754デフォルトの名無しさん2005/06/28(火) 07:07:29
VC8だとこれでもムリ
0755デフォルトの名無しさん2005/07/03(日) 00:22:26
VS9では大丈夫だった
0756デフォルトの名無しさん2005/07/03(日) 22:48:24
9?
0757デフォルトの名無しさん2005/07/04(月) 10:00:04
10
0758デフォルトの名無しさん2005/07/04(月) 12:14:49
11
0759デフォルトの名無しさん2005/07/04(月) 12:25:02
1000
0760デフォルトの名無しさん2005/07/05(火) 18:57:30
2
0761デフォルトの名無しさん2005/07/11(月) 12:15:35
保守
0762デフォルトの名無しさん2005/07/18(月) 21:14:25
誰もいないYO
0763デフォルトの名無しさん2005/07/18(月) 22:49:17
いるよん
0764デフォルトの名無しさん2005/07/18(月) 23:22:07
気のせい
0765デフォルトの名無しさん2005/07/20(水) 22:59:47
古臭い仕手株が賑わって来てるから
鬼ゴム(5196)とか日本配合飼料(2056)とかシキボウ(3109)あたりがあやしいと思う
筋の仕込みは終わってると思われ
0766デフォルトの名無しさん2005/07/20(水) 23:00:12
あ、すまん間違い
0767デフォルトの名無しさん2005/07/20(水) 23:25:39
どういう間違いだw
0768デフォルトの名無しさん2005/07/21(木) 07:15:59
高値つかみ乙
0769デフォルトの名無しさん2005/07/21(木) 13:47:09
warosu
0770デフォルトの名無しさん2005/07/23(土) 22:10:49
次のリリースのタイミングはVistaのベータ1が出たときかな。
0771デフォルトの名無しさん2005/07/24(日) 09:28:10
VistaでもWin32APIを使うの?
0772デフォルトの名無しさん2005/07/24(日) 12:03:33
.Net Frameworkベースにはならないって言う記事は読んだ事がある。
ITmedia エンタープライズ:Monadがないなら、Longhornにする意味はない
ttp://www.itmedia.co.jp/enterprise/articles/0506/15/news070.html
0773デフォルトの名無しさん2005/07/24(日) 12:40:20
∧_∧
(;´∀`) 外されたモナー
0774デフォルトの名無しさん2005/07/29(金) 00:09:38
CComboBox hoge;
hoge.

と打つとIntelliSenseがMFCの方のCComboBoxの
内容を示してくれるのはどうにかなりませんかねぇ。

WTL::CComboBox としないと正確にWTLの方を表示してくれない。
0775デフォルトの名無しさん2005/07/29(金) 00:33:39
インテリセンスの質問ばっかりだよね
0776デフォルトの名無しさん2005/07/29(金) 00:38:11
でも生産効率無視していいならそれこそSDKでイイわけで。

>>774 むしろ付けれ。MFCとの差別化の意味でね。
0777デフォルトの名無しさん2005/07/29(金) 00:41:10
MFCなんか使わないからなぁ
差別も何も
0778デフォルトの名無しさん2005/07/29(金) 00:49:34
漏れもWTLしか使ってないが、しょっちゅうスコープ解決は使ってるぞ
ATL::CStringとWTL::CStringの使い分けな。どっちのヘッダもインクルードしてるんで、明示しないと正しく使ってくれないのよ
0779デフォルトの名無しさん2005/07/29(金) 01:11:29
ATL::CStringの方が良くないか?参照カウンタあるし。
0780デフォルトの名無しさん2005/07/29(金) 01:33:19
GetWindowTextに対応してるのもATLのほうだな
でもatlmisc.hもインクルードしちゃってるのよorz
0781デフォルトの名無しさん2005/07/29(金) 08:34:24
俺はこうするのがデフォルト。
#define _ATL_NO_AUTOMATIC_NAMESPACE
#define _WTL_NO_AUTOMATIC_NAMESPACE
0782デフォルトの名無しさん2005/07/29(金) 21:15:41
_WTL_NO_CSTRING
0783デフォルトの名無しさん2005/08/03(水) 13:10:24
VS2003のWTLで、1つのソリューションの中に複数プロジェクトがある場合で、それぞれの
プロジェクトに同名のダイアログ(CMainDlg)がプロジェクトに存在すると、ダイアログのリソース
編集画面で、ボタンクリックした時に作られるイベントハンドラのコードの実装が、違うプロジェクトの
方に入っちゃうんだけど、どうすれば直せるの?
0784デフォルトの名無しさん2005/08/03(水) 23:40:42
>>783
ボタンクリックで作らない。

てか、プロジェクト毎にクラス名くらい分けようや。
0785デフォルトの名無しさん2005/08/05(金) 07:46:12
WTL覚えようと思ったのですが、

WTLのコントロールのテンプレートクラスのメンバ関数を使いたい
かつ、独自のメンバを付け加えたり、それに飛んでくる一部のメッセージを使って何かしたい

ってときにはどうすればいいんですか?
たとえばボタンで、サブクラス化だと、WTL::CButtonとサブクラス化用のクラスの二つを使わないといけないので面倒なんです。

class OresamaSubClass : public CWindowImpl<OresamaSubClass>
{
//略
void OresamaFunction() {SendMessage(WM_SETTEXT, 0, (LPARAM)_T("俺様ボタン"));}
}

//使うとき
WTL::CButton wtl_btn ;
OresamaSubClass btn ;
wtl_btn.Create(ほげほげ) ;
btn.SubclassWindow(HWND(wtl_btn)) ;
//WTL::CButtonのメンバ関数はwtl_btnから
//独自のメンバ関数はbtnから。


これをこんな風にできたらいいですが。

OresamaButton btn ;
btn.Create() ;
//btnからWTLのメンバ関数も独自のメンバ関数も使える。
0786デフォルトの名無しさん2005/08/05(金) 13:00:58
何言ってるのかよくわからないけど、これでも読んでみ。
ttp://www.microsoft.com/japan/msdn/vs_previous/visualc/techmat/feature/ATLwindowing/
07877852005/08/05(金) 16:22:13
できたみたいです。

class OresaamButton : public CWindowImpl<OresamaButton, WTL::CButton>
{
//メッセージマップでもメンバ関数でもなんでも
}


最初、こうやればCButtonを継承できるかと思っていたんですが。

class OresamaButton : public WTL::CButton


ATLやWTLに関する分かりやすいドキュメントってありませんか?
特にWTLに関してはググるよりヘッダ読んだほうが早いような気がするんですが……。
0788デフォルトの名無しさん2005/08/05(金) 21:11:17
ttp://home.att.ne.jp/banana/akatsuki/
0789デフォルトの名無しさん2005/08/08(月) 13:00:51
>>787
ちと古いが、ATLInternals 読んでおけ。
0790デフォルトの名無しさん2005/08/09(火) 16:06:04
擬似継承。
0791デフォルトの名無しさん2005/08/10(水) 20:41:06
質問なんですが、CAxWindowでActiveX使用しているのですが、
動作しているActiveXのスレッドIDを取得したいのですが、方法ご存じないでしょうか、
最初、CAxWindowのコンストラクターでGetCurrentThreadId()で取得してみたのですが
どうも動作してるActiveXのスレッドとは違うようでした。
よろしくお願いします。
0792デフォルトの名無しさん2005/08/11(木) 16:36:40
>>791
どうして違うスレッドと言い切れるのかわからないが。

もし違うというのであれば、CAxWindowを継承したクラスの
インスタンスを作成したスレッドとそのインスタンスのWindowをCreateしたスレッドが違うことになる。

そのクラスのOnCreateの中でGetCurrentThreadIDを呼びだす、というのではどう?
07937912005/08/11(木) 20:49:48
>792
レスありがとうございます。

>どうして違うスレッドと言い切れるのかわからないが。
デバッカーで追いかけると「CreateControl」をコールした瞬間にスレッドが作られるのでそう考えました。
(デバッカーのスレッド一覧表示を監視してました)

>そのクラスのOnCreateの中でGetCurrentThreadIDを呼びだす、というのではどう?
CAxWindowのCreateをオーバライトしてGetCurrentThreadIDはやってみたのですが、
これですと「CreateControl」をコールした瞬間に出来たスレッドIDではなくCAxWindowのスレッドIDが戻ってくるようでした。

何か情報ありましたらお願いします。
0794デフォルトの名無しさん2005/08/11(木) 20:55:18
ウインドウがワーカスレッド作るんだろ。何でそのスレッドIDが欲しいと思うか知らんが。
ToolHelpAPIでThreadを列挙して、差分でも取ったら?
0795デフォルトの名無しさん2005/08/11(木) 21:56:44
WTLでツールバー上にコンボボックスを載せる方法が分かりません
どなたかご存知ないでしょうか?
0796デフォルトの名無しさん2005/08/12(金) 00:21:22
>>795
http://home.att.ne.jp/banana/akatsuki/doc/atlwtl/atlwtl13-02/index.html
0797デフォルトの名無しさん2005/08/12(金) 01:06:47
それ厳密には違うと思う。
一個のツールバーのボタンの並びの中にコンボボックス埋め込みたいんじゃないの?
区切り線の上に無理矢理配置させるとかかなりトリッキーな方法使わないとできないけど。

MFCだとダイアログバーってのがあったけど、複数コントロール細長のダイアログ作って
リバーとして登録するだけの代物だな。もちろんWTLでも可能。
でもこれだとシェブロンが(少なくとも自動的には)描かれない。
0798デフォルトの名無しさん2005/08/17(水) 19:17:52
ATLを使ってCOMコンポーネントを作ろう(VC7では初めて)としたら、
なんじゃこりゃ、って感じで困惑してるんですが。
ATLシンプルオブジェクト
[
coclass,
threading("apartment"),
vi_progid("uu.www"),
progid("uu.www.1"),
version(1.0),
uuid("4FA2C351-B4C6-4548-950B-53E49347AD4B"),
helpstring("www Class")
]
class ATL_NO_VTABLE Cwww :
public Iwww
{
public:
Cwww(){}
DECLARE_PROTECT_FINAL_CONSTRUCT()
HRESULT FinalConstruct(){ return S_OK; }
void FinalRelease() {}
public:
};
IwwwはDualインターフェースなんだけど、
そもそもIUnknownの実装やIDispatchの実装を担う部分がない。
このクラスファクトリも定義されているところも見当たらない。
一体どうなってるの?ヘッダにidl属性[・・・]が入っている時点でもはや
C++じゃないし。
0799デフォルトの名無しさん2005/08/17(水) 20:10:47
coclass属性が付くと基本クラスにCComObjectRootExとCComCoClassが自動的に追加される。
0800デフォルトの名無しさん2005/08/17(水) 20:13:41
>>798
ATL ウィザードのどっかに、”属性”がどーたらいうオプションがあるから、
ソレをはずせば、旧来の(VC6時代の)コードが吐かれる。
08018002005/08/17(水) 20:18:11
ちなみに、ATLプロジェクトの新規作成時のウィザードの話。

ちなみに属性プログラミングをすると、IDL が作成されないので、
個人的には便利だと思ってるけど、細かい変更が出来ないので
オレは結局属性は使ってない。
08027982005/08/17(水) 20:20:22
thxです。
属性は何かちょっと気持ち悪い気がしますね。
0803デフォルトの名無しさん2005/08/17(水) 21:15:38
>>799
そうだったのか
ATLはもうちょっとわかりやすくならんのか
0804デフォルトの名無しさん2005/08/17(水) 22:28:03
属性は書くコード量が減って便利だと思うんだけどな〜
展開されたコードを見ると反吐が出るが(w
0805デフォルトの名無しさん2005/08/18(木) 00:58:01
「ATLインターナル」読んで脳みそが溶けた
0806デフォルトの名無しさん2005/08/18(木) 12:18:06
ATLを勉強するとテンプレートクラスの可能性に目覚めてしまう。
ところでみんな読んでるの?>ATLInternals

この前買おうと思って書店いったらおいてなかった。
というかATL関係の本が1冊しかなかった。
.NETの本はやたらあるんだが。
MSの主張とは裏腹にまだまだ必要とされてると思うんだけどな。
0807デフォルトの名無しさん2005/08/19(金) 01:41:50
C用のインターフェイスを直接呼び出せるC++の需要はまだまだおおいだろうね。
今やってるのも.netって話だったけど面倒だからATLで作っちゃった。
でもATLもBEGINXXとかマクロいっぱいで勉強する気がおきん。
0808デフォルトの名無しさん2005/08/20(土) 11:17:26
WTLのCScrollContainerってどんな用途に使う?
0809デフォルトの名無しさん2005/08/25(木) 18:43:03
LayeredWindowでActiveXの表示をアルファー付きで透過させようとしているんですが、
アルファー付きビットマップの取得には、IViewObjectExのDrawで取得してるんですが、
画像自体は正しく拾えてきてるようなんですが、アルファーチャンネルが正しく拾えなく困ってます。
アルファーチャンネルの数値を見ると、0かFFしか無い感じです。
何方かアルファーチャンネルの取得の仕方をご存じありませんでしょうか。
IOleInPlaceObjectWindowlessがかなり怪しいと感じてるんですが。
何か情報ご存じでしたら教えてください。よろしくお願いします。
0810デフォルトの名無しさん2005/08/25(木) 18:53:08
>>809
前にもコメントしたかもしれませんが、無理です。

そもそも IViewObject が描画対象とする DC は普通の GDI の DC なわけで、
ほぼ全てのActiveXオブジェクトは、どうあがいてもαチャンネルなど描画して
はくれません。

 InPlace で Windowless なCOMオブジェクトは、単に与えられたDCの既存の
背景の上に上書きする形で自分自身を描画しているだけです。

時間が掛かってもかまわないのであれば、黒い背景の上に描画、白い背景の
上に描画、と2度繰り返して差分を取って反転すればほぼα情報に近いものが
得られるような気もしますけど・・・
08118092005/08/25(木) 19:16:39
810さん
コメントありがとうございます。
私はこちらへの書き込みは初めてですが、以前のコメントは見逃してしまいました。
すれを頭から見てみます。すいません。

このURLにある商品はFlashのActiveXのプラグインを使用して背景を透過しているのですが、
これと似たようなことをしようと考えてます。
htt://www.screentime.com/software/mprojector/
こちらはサンプルの実行ファイルです。
htt://www.screentime.com/downloads/red_rubber_ball.exe

とりあえず自分もFlashを使用して透過の実験を行っているのですが、FlashPlayer7であれば一部(デバイスフォントの表示が何故が透過されてしまう)
を除いてコンテンツのアルファーが反映され表示されていたんですが、
FlashPlayer8にバージョンアップしてしまうと挙動が変わり、先に書き込みしたような状況になってしまっています。

このソースを参考にしています。
ttp://s-tomo.sakura.ne.jp/haruna/040707.cpp

また何か情報ございましたらよろしくお願いします。
0812デフォルトの名無しさん2005/09/07(水) 22:17:48
WTL 7.5.5249.0 age
ttp://sourceforge.net/projects/wtl
0813デフォルトの名無しさん2005/09/07(水) 22:59:03
>>811
ヒント: ウィンドウレス
08148092005/09/08(木) 10:33:11
>813さん
レスありがとうございます。

>ヒント: ウィンドウレス
これって「IOleInPlaceObjectWindowless」の事指してますか?
自分は、名前からしてこれが"くさい"と思いATLのヘッダー見てみたんですが、自分では解決出来そうな情報が見つけられませんでした。
出来ましたら、もう少し具体的に教えていただけると助かります。
よろしくお願いします。
0815デフォルトの名無しさん2005/09/10(土) 10:07:07
完全に廃れてるね。
Windows用の軽量ウィンドウクラスライブラリとしては今は何がはやってんだろ?
0816デフォルトの名無しさん2005/09/10(土) 10:15:04
今まで流行なんか無かったけど。
0817デフォルトの名無しさん2005/09/10(土) 16:27:37
>>815
独 自 実 装
0818名無しさん@そうだ選挙に行こう2005/09/10(土) 18:25:01
>>815
てか、2chにカキコがなかったら廃れたことになるのかよ w
0819デフォルトの名無しさん2005/09/15(木) 07:05:57
>>818
一つの指標にはなるだろうよ。英語圏は知らんがなー
0820デフォルトの名無しさん2005/09/29(木) 23:59:50
WTLって何て読むんですか?
0821デフォルトの名無しさん2005/09/30(金) 00:14:20
読むのではない。感じるんだ。
0822デフォルトの名無しさん2005/09/30(金) 01:36:11
わっとる?
0823アホ2005/09/30(金) 01:55:18
ttp://pc8.2ch.net/test/read.cgi/pcnews/1099389901/
0824デフォルトの名無しさん2005/09/30(金) 02:00:30
まちがえた
ttp://pc8.2ch.net/test/read.cgi/pcnews/1099389901/238-
0825デフォルトの名無しさん2005/09/30(金) 23:04:24
メニューに普通にラジオチェックをつけたいんですが、
ttp://groups.yahoo.com/group/wtl/message/1317
↑+自己処理以外に何か良い方法はありますか?

SetMenuItemInfo、CheckMenuRadioItemは両方ともチェックがつかないので駄目でした。

環境:
win2000sp4
VC++.NET2003
WTL 7.5.5249.0
0826デフォルトの名無しさん2005/09/30(金) 23:47:10
ないんじゃないか
0827デフォルトの名無しさん2005/10/01(土) 02:09:13
あれってMFCが独自にやってるんだっけ
0828デフォルトの名無しさん2005/10/01(土) 09:57:08
MFCのソース見れ
08298252005/10/01(土) 12:23:29
>>826
了解しました、ありがとうございます。
0830デフォルトの名無しさん2005/10/02(日) 14:32:29
年末に一度リリースがあります
0831デフォルトの名無しさん2005/10/08(土) 09:07:42
WTL 7.5.5280.0 Beta1
キタ
0832デフォルトの名無しさん2005/10/08(土) 17:32:55
Beta1?まさかそんなの出るわけないじゃん。
そんなの今まで無かったしさぁ。
まったく騙そうったってそうはいかな・・・・ほんまや!
0833デフォルトの名無しさん2005/10/08(土) 18:12:08
ここにきて活発になってきたな
0834デフォルトの名無しさん2005/10/12(水) 02:46:29
、と思ったらここにきてまた過疎化
0835デフォルトの名無しさん2005/10/12(水) 09:44:06
珍しくSoも更新に反応してない…
0836デフォルトの名無しさん2005/10/12(水) 21:36:29
してるよ?
0837デフォルトの名無しさん2005/10/13(木) 22:42:16
So氏頑張ってるなぁ。
0838デフォルトの名無しさん2005/10/13(木) 23:37:01
なんでべーたなんだろう
0839デフォルトの名無しさん2005/10/14(金) 20:28:44
正式公開が近いんじゃない?
0840デフォルトの名無しさん2005/10/17(月) 10:38:27
So氏ってなに?
0841デフォルトの名無しさん2005/10/17(月) 18:00:24
http://google.jp/
0842デフォルトの名無しさん2005/10/17(月) 18:34:57
ttp://codezine.jp/a/default.aspx?cid=146
↑ここでの評価が五つ星なのだが、このスレの住人が投票したのかな。
むしろ下の個人HPでの実績にたいする評価っぽいのだが・・・。
ま、不満はないけどね。WTLを日本語ドキュメントにしてくれてる貴重な人だし。
ttp://home.att.ne.jp/banana/akatsuki/
0843デフォルトの名無しさん2005/10/17(月) 20:43:19
>>842
下のページは読みやすいけど、上のはちょっとね・・・
0844デフォルトの名無しさん2005/10/18(火) 10:48:15
かっとし更新sage
0845デフォルトの名無しさん2005/10/18(火) 12:48:41
>>841
無愛想な画面しか表示されませんけど・・・
0846デフォルトの名無しさん2005/10/18(火) 19:30:13
845 名前:デフォルトの名無しさん[sage] 投稿日:2005/10/18(火) 12:48:41
>>841
無愛想な画面しか表示されませんけど・・・
0847デフォルトの名無しさん2005/10/18(火) 20:11:26
>>845
無限の情報への入り口と言いたまへ
0848デフォルトの名無しさん2005/10/20(木) 22:11:52
今ダイアログベースのアプリで、でキー入力のメッセージを受信しようとしてるんですが、うまくいきません。
とりあえず次のように実装してるんですが、一向にキーの押下情報などのメッセージが受信できません。

class CtestDlg : public CDialogImpl<CtestDlg>
{
public:
virtual BOOL PreTranslateMessage ( MSG * pMsg )
{
ATLTRACE( "uMsg=%x\n" , pMsg->message ) ;
return TRUE ;
}

BOOL PreTranslateAccelerator( MSG * pMsg )
{
ATLTRACE( "uMsg=%x\n" , pMsg->message ) ;
return TRUE ;
}

BOOL TranslateMessage(MSG* pMsg)
{
ATLTRACE( "uMsg=%x\n" , pMsg->message ) ;
return TRUE ;
}
}

何方か情報がありましたら、教えてくださいよろしくお願いします。
0849デフォルトの名無しさん2005/10/20(木) 22:38:46
>>848
PreTranslateMessageはWTL::CMessageFilterを継承していなければならない。
0850デフォルトの名無しさん2005/10/21(金) 02:00:13
>>848
AddMessageFilterは呼んだの?
0851デフォルトの名無しさん2005/10/21(金) 07:06:05
ウィザードで作れよ
0852デフォルトの名無しさん2005/10/28(金) 23:48:57
VS2005がMSDNでリリースされ、11月7日以降一般にもリリースされるということは、

WTL8.0クル━━━(゚∀゚)━━━ !!!
0853デフォルトの名無しさん2005/10/29(土) 06:21:56
足し算をするカスタムインターフェースを持つ、原始的なCOMサーバーDLLを書いてみたのですが、(COMは初めて)
const CLSID ID_Foo = {1, 2, 3, {4, 5, 6, 7, 8, 9, 10, 11}};
const IID IID_IFoo = {11, 10, 9, {8, 7, 6, 5, 4, 3, 2, 1}};
class IFoo : public IUnknown {
public:
STDMETHOD_(DWORD, FooAdd)(DWORD a, DWORD b) { return a + b; }
IFoo() : m_dwRef(0) {}
STDMETHOD(QueryInterface)(REFIID iid, VOID **ppI) { /* 省略 */ }
STDMETHOD_(ULONG, AddRef)() { return ++ m_dwRef; }
STDMETHOD_(ULONG, Release)() { /* 省略 */ }
private:
DWORD m_dwRef;
}; /* 以下略 */
これを使うクライアントはどう書けばいいのでしょうか? 例えば、DLLでないかもしれなくても、直接pifoo->FooAdd()などとしてもよいのでしょうか?
また、他人にこのサーバを使わせるには、以下のconst IID...とclassの部分をヘッダファイルにして渡せばいいのでしょうか? それともタイプライブラリというものを作るのでしょうか?
あと、おかしいところを指摘して下さい。
const IID IID_IFoo = {11, 10, 9, {8, 7, 6, 5, 4, 3, 2, 1}};
class IFoo : public IUnknown {
public:
STDMETHOD_(DWORD, FooAdd)(DWORD, DWORD);
};
void main() {
IFoo *pifoo = NULL;
CoInitialize(NULL);
CLSID clsid;
CLSIDFromProgID(L"Foo", &clsid);
CoGetClassObject(clsid, CLSCTX_ALL, NULL, IID_IFoo, (void **)&pifoo);
DWORD dwResult = pifoo->FooAdd(1, 2);
printf("FooAdd(1, 2) = %d\n", dwResult);
pifoo->Release();
} /* エラーチェックは省略 */
0854デフォルトの名無しさん2005/10/29(土) 09:18:01
根本的に何も分かってないな
0855デフォルトの名無しさん2005/10/29(土) 09:37:16
>>853
いきなりサーバを作ろうと考えるな。とりあえずクライアントを使うだけに徹しろ。
0856デフォルトの名無しさん2005/10/29(土) 10:36:30
>>853
Inside COMでも読んでみなよ。それからここに来てね。
0857デフォルトの名無しさん2005/10/29(土) 11:34:57
>>853
このスレできくんだからサーバー側はATLのウイザード使えばいいのに。
クライアントはヘッダーとxxx_i.cつかえばOK。#importとかもあるけど
あとFooAddのリターンおかしいよ
0858デフォルトの名無しさん2005/10/30(日) 01:00:25
フゥー!(foo)
0859デフォルトの名無しさん2005/10/31(月) 00:22:01
つか、

const CLSID ID_Foo = {1, 2, 3, {4, 5, 6, 7, 8, 9, 10, 11}};
const IID IID_IFoo = {11, 10, 9, {8, 7, 6, 5, 4, 3, 2, 1}};

こんな書き方はじめてみたのは俺だけ?

>>853
ATL Server/Client のサンプルでもみれば
0860デフォルトの名無しさん2005/10/31(月) 00:32:09
uuidgen/guidgenを知らないのだろう
0861デフォルトの名無しさん2005/11/01(火) 01:52:56
そもそも、レジストりを使わずにCOMはできるのでしょうか?
0862デフォルトの名無しさん2005/11/01(火) 07:34:36
XPならできる
0863デフォルトの名無しさん2005/11/01(火) 18:25:59
そうでなくともインプロセスで、COM関係のAPIを全く使わず、
サーバのDLLがインターフェイスへのポインタを返す関数を独自に公開してしまえば……。

駄目か?
0864デフォルトの名無しさん2005/11/01(火) 18:47:41
それはもうすでにCOMっぽいものでしかないような。
0865デフォルトの名無しさん2005/11/01(火) 19:48:14
CAxHostWindowについて書かれてる本、もしくはURLないすかね。
あと「ATL インターナル」に載ってるサンプルコードってどこいったらありますかね?
情報ありましたら、よろしくお願いします。
0866デフォルトの名無しさん2005/11/01(火) 21:04:24
>>863
直接DllGetClassObjectを呼べば出来る。
十分COMだと思うが。
0867デフォルトの名無しさん2005/11/01(火) 22:55:05
CoLoadLibrary()も使えば完璧にCOMだろう。
こいつを使おうとすればCoInitialize(Ex)も必要になるしな。
0868デフォルトの名無しさん2005/11/01(火) 23:16:24
>>863
Firefox (だっけ?)とか、RealPlayer とかはそんな感じだよね。
0869デフォルトの名無しさん2005/11/02(水) 02:24:15
どの辺が知りたいの?>>865
0870デフォルトの名無しさん2005/11/02(水) 16:39:32
>869さん
レスありがとうございます。
具体的な問題としては、CAxWindow、CAxHostWindowでActiveXコンポーネントをインスタンス化したウインドウで「WM_KEYDOWN、WM_KEYUP」のイベントを取得したいんですが、
キーを押しても一向に流れてこないんですよ、「WM_SYSKEYDOWN、WM_SYSKEYUP」は来るんですが、
自分はまだCOM、ATLの知識が乏しいもので、具体的なサンプルなどどこかに無いものかと思いまして。
何か情報ありましたら、よろしくお願いします。
08718692005/11/02(水) 23:51:17
正しいやり方かどうかわからないけど、
CAxWindow を継承したビューで

BOOL PreTranslateMessage(MSG* pMsg)
if((pMsg->message < WM_KEYFIRST || pMsg->message > WM_KEYLAST) &&
(pMsg->message < WM_MOUSEFIRST || pMsg->message > WM_MOUSELAST))
return FALSE;

if ( pMsg->message == WM_KEYDOWN ) {
return SendMessage(pMsg->message, pMsg->wParam, pMsg->lParam);
}

return (BOOL)SendMessage(WM_FORWARDMSG, 0, (LPARAM)pMsg);
}

みたいにやって受け取るのはダメ?
正しいやり方をご存知のかたは教えていただけると幸い

ちなみに、こことか参考になるかな?

http://www.codeproject.com/wtl/wtl4mfc6.asp
の Keyboard Handling のセクションとか

そして ATL インターナルのソースは
http://www.wiseowl.com/downloads/downloads.aspx から入手可
0872デフォルトの名無しさん2005/11/06(日) 13:57:38
ちょ、おまっwwwww見にくいwwwww
頑張るのはいいけど方向違うwwww
0873デフォルトの名無しさん2005/11/06(日) 13:58:46
誤爆スマソ
08748692005/11/06(日) 14:48:27
一瞬俺かとおもったけど、もっといいやり方知っている人いる?
0875OLE馬鹿2005/11/07(月) 13:32:41

>>865

とりあえず
つ <Inside OLE 第二版>


っていうか、
CAxHostWindowでActiveXコンポーネントをインスタンス化したウインドウで
*だれ*の WM_KEYDOWN取りたいかによって違うよ。

きみと違ってみんなエスパーじゃないんだから、
はっきり書かないとわかんねぇよ。


08768532005/11/12(土) 06:28:52
みなさん、どうもありがとうございます。
重大な事を書き忘れていました。
私はVCでなく、BCコマンドライン無料版(BCC)を使っています。
VCは使ったことがありません。
ですから実際の所、ATLもクラスウィザードもわかりません。
以前はCOMのスレがあったような気がするのですが、無くなったみたいなのでここに来ました。
Inside COM/Inside OLEは欲しいのですが、高いです。
それでMSDNで勉強しています。英語なので難しいですが・・・

Platform SDKは落としたいのですが、大きすぎます。アナログ電話ですから・・・
真に無料のプログラミングを目指しているので、電話代がかかるものはなるべく落とさないようにしています。(だから無料でもBCBは使っていません)
ちなみに、MIDLコンパイラが欲しいのですが、SDK以外にはあるでしょうか?

>>855
オートメーションやその他のインターフェースのサーバー(IEなど)について一応動作するクライアントを書いてはみたのですが、タイプライブラリの使い方がわからないのでヘッダが存在するオブジェクトしか操作できません。
それで最も簡単なサーバーについてタイプライブラリを作ってみたいと思ったのですが・・・
クライアントからのタイプライブラリの使い方を理解するのにいい既存のオブジェクトはあるでしょうか?

>>857
xxx_i.cというのは、どうやると生成されるのですか? IDEでサーバーをコンパイル? MIDL.EXE?
それと、FooAddのリターンは何がおかしかったですか?

あと一般的な質問があります。

1. たいていのコードでは、インターフェースと実装は、別のクラスに分けられていますが、これはなぜなのでしょうか? 分けないとどういう不都合が起こるのでしょうか?

2. COMの一般的なコードでは、Co/CreateInstance()が「オブジェクト」の生成を担うことになっているようですが、IClassFactoryはサポートせず、Co/DllGetClassObject()で目的オブジェクトの生成を行う、というスキームはあり得ないのでしょうか?
さらに、オブジェクトが必要なく、グローバルな関数機能だけが欲しい場合に、私が書いたようにすることはないのでしょうか?
0877デフォルトの名無しさん2005/11/12(土) 09:17:47
>>876
1.
インターフェイスと実装を分離しておけば、実装クラスに変化があっても、
インターフェイスには何の変化もなくバイナリ互換でそのまま使い続けられる。
COMもそれを取り入れた。

2.
無理。そんなことしたいなら別にCOMを使わないで好きにやればいい。
0878デフォルトの名無しさん2005/11/13(日) 01:19:15
>>876>>853
>Platform SDKは落としたいのですが、大きすぎます。アナログ電話ですから・・・
>真に無料のプログラミングを目指しているので、電話代がかかるものはなるべく落とさないようにしています。(だから無料でもBCBは使っていません)
>ちなみに、MIDLコンパイラが欲しいのですが、SDK以外にはあるでしょうか?

この時代にネタか?
0879デフォルトの名無しさん2005/11/13(日) 01:40:18
>>878
853を相手にするのはやめよう。
InsideCOMは買えないとか、PSDKも落とせないとか、もういいよ。
0880デフォルトの名無しさん2005/11/13(日) 11:57:58
相手にしないとレス0なんだけどな

InsideCOMって5000円もしたのか・・・
0881デフォルトの名無しさん2005/11/14(月) 08:18:04
> 相手にしないとレス0なんだけどな

悲しい。そんなスレ悲しすぎる・・・
0882デフォルトの名無しさん2005/11/15(火) 18:26:42
CSimpleArray<CAtlString> strArray =
{
_T( "初期化項目1" ) ,
_T( "初期化項目2" ) ,
_T( "初期化項目3" ) ,
_T( "初期化項目4" )
} ;

こんな事したいんですけど、どう書けばできますか?
0883デフォルトの名無しさん2005/11/15(火) 19:41:01
>>882
できないので個別に追加する
0884デフォルトの名無しさん2005/11/15(火) 20:16:42
("初期化項目1")("初期化項目2")("初期化項目3")(.・・・)
みたいなのならできたような気がする。
つまり演算子を隔てて初期化項目を並べればよかったはず。
templateスレか何かで出た様な。
0885デフォルトの名無しさん2005/11/15(火) 20:40:26
#include <algorithm>
#include <functional>

PCTSTR pszInitializer[] =
{
    _T("初期化項目1"),
    _T("初期化項目2"),
    _T("初期化項目3"),
    _T("初期化項目4"),
};
CSimpleArray<CAtlString> strArray;
std::for_each(pszInitializer, pszInitializer + sizeof pszInitializer / pszInitializer[0],
    std::mem_fun1_ref(CSimpleArray<CAtlString>::Add);

コンパイルは試していないから少々間違っているかもしれない。
こんなことするなら初めからstd::vector使うべきか。
0886デフォルトの名無しさん2005/11/15(火) 21:36:47
>アナログ電話ですから・・・

一晩もかからんだろ
0887デフォルトの名無しさん2005/11/15(火) 21:44:42
一日はかかるだろ。
0888デフォルトの名無しさん2005/11/15(火) 21:47:05
CDの注文ができた気がする。
0889デフォルトの名無しさん2005/11/18(金) 20:26:16
>>882
これでコンパイルが通った。(VC8)
もっと簡単な書き方があるかもしれん。

template<class T>
class CSimpleArrayEx2 : public CSimpleArray<const T&>
{
public:
CSimpleArrayEx2& operator()(T t)
{
Add(t);
return *this;
}
};

CSimpleArrayEx2<int> sAry = CSimpleArrayEx2<int>()(1)(2)(3);
sAry(4)(5)(6);
0890デフォルトの名無しさん2005/11/19(土) 05:21:51
やべ、危うく2ちゃんに書き込むとこだったよ・・・
0891デフォルトの名無しさん2005/11/19(土) 16:54:14
ちゃんちゃかちゃんちゃん
ちゃちゃっちゃちゃんちゃん

ちゃんちゃかちゃんちゃん
ちゃちゃっちゃちゃんちゃん

♪灯油を給油しようとお〜も〜たら〜
 あふれてこぼれちゃいました〜(自動)

チックショ
0892デフォルトの名無しさん2005/11/19(土) 19:38:42
どうも。

スプリッタウィンドウにタブビューを貼り付けて利用してるんですが、
どうも奇妙な現象が発生中。

/ML時に、タブが配置される(タブが増減する)領域が、
起動前の背景と同じになってしまいます。
…なぜか背景ブラシが設定されてないんです。
何故なんでしょうか?
因みに/MLd時は正常に動作してます。

[環境]
VCTK1.01 WTL7.5.5280.0 Beta1 ATL3.0
0893デフォルトの名無しさん2005/11/20(日) 16:27:50
>>892
変数の初期化忘れとかじゃなくて?
0894デフォルトの名無しさん2005/11/20(日) 17:36:27
>>893
変数ですか…?
う〜ん、現在の状態では、特に変数は使って無いです…(スケルトンに近い)

もしかして、ATL or WTLのメンバ変数の事でしょうか?

デバック版のLIBCD.libで上手くいって、
LIBC.libでヘマる理由が不明で、かなり困惑中。
08958922005/11/20(日) 17:46:05
>>894

親子関係か、メッセージの反射あたりのような気がするがメッセージ
マップとか、Window を作っているあたりのソースを出してもらえれば
検証するよ?

うpろーだに揚げてくれても可
0896デフォルトの名無しさん2005/11/20(日) 18:12:39
>>895
宜しくお願いします。私では、サッパリなので…

ttp://kuroneko-upload.no-ip.info/uploader/sn/src/up1955.zip

一応、丸ごと入れときました。後、必要ないかもしれませんが、
例のオプションだけ変更して、ビルドしたバイナリも同梱しておきました。
08978922005/11/20(日) 18:23:45
ちょ、プロジェクトファイルはw
現象は確認できたけど。
0898デフォルトの名無しさん2005/11/20(日) 18:49:28
VCTKなんでないんですよ(泣)

コンパイル時に使っているbatファイル↓(*要PATH設定)
ttp://kuroneko-upload.no-ip.info/uploader/sn/src/up1958.zip

これをもし、使うならソースファイルと同ディレクトリで実行して下さい。

日本語の正式版でたらVC8(勿論Express版)使いたい…12月が待ち遠しいです
08998922005/11/20(日) 19:18:18
ようやくコンパイルして /ML でビルドしてみたけど、ちゃんと
動いているなぁ・・・。

たぶんソースの問題ではなくて define されている値の問題のような
気がするんだけど、

define.h の
#define WIN32_IE0x0200
は、まずいんじゃない?

少なくとも俺の環境だと、
fatal error C1189: #error : WTL requires IE version 3.0 or higher

とでるし、commctrl.h の ICC_TAB_CLASSES をみると

#if (_WIN32_IE >= 0x0300) のなかで定義されてるから。

とりあえず、

#define WIN32_IE0x0300

にしてみたらどう?

#はずしてたらごめん

0900デフォルトの名無しさん2005/11/20(日) 19:37:30
うう…そんなエラーmsg出た事無い(泣)。
IDEがある人が羨ましいです。

defineの値を変更してみたのですが、変化がありませんでした…
一応、全てのdefineを消してみたりもしたのですが、駄目でした。
0901デフォルトの名無しさん2005/11/20(日) 19:50:24
>#define WIN32_IE0x0300
#define _WIN32_IE 0x0300
じゃない?(先頭にアンダーバー)
ただのミスかもしれんが。
09028922005/11/20(日) 19:59:17
>>901
たしかに

>>900
とりあえず、_WIN32_IE 0x0300 にしてみて

それと、俺のコンパイルオプション
/O1 /D "WIN32" /D "_WINDOWS" /D "STRICT" /D "NDEBUG"
/D "_ATL_MIN_CRT" /D "_MBCS" /FD /ML /GS

こっちがリンカのオプション
/OUT:"Release/app.exe" /INCREMENTAL:NO /NOLOGO
/SUBSYSTEM:WINDOWS /MACHINE:X86
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib
odbc32.lib odbccp32.lib
0903892依頼者2005/11/20(日) 20:01:31
>>901
そうですね。修正したら、>>899にあるエラーメッセージが出るようになりました。
しかし、修正しても背景ブラシが設定されないままです…
0904892依頼者2005/11/20(日) 20:12:24
>>902
提示されたオプションでビルドしてみましたが、結果は変わりませんでした…
何故…?

すみません…なんかかなり面倒ですよね、コレ。
09058922005/11/20(日) 20:27:02
再現しないので、わからんなぁ・・・

DECLARE_WND_SUPERCLASS(NULL, CTabCtrl::GetWndClassName())

コレをコメントアウトしてみたら?
0906デフォルトの名無しさん2005/11/20(日) 20:42:18
WTLのスプリッタウィンドウとかペインコンテナの上にコントロール貼り付けると
comctl ver 6.0(XPビジュアルスタイル)の場合にそんな現象出てた気が…
サブクラス化して背景ブラシ設定して回避したんだっけかなあ。
Rebarもスタイルによっては、上2ドットくらい背景透けてたこともあったかも。
0907892& ◆mVxpvGktgc 2005/11/20(日) 20:45:17
コメントアウトしてみましたが駄目でした…
09088922005/11/20(日) 21:05:45
>>905

ためしに Windows 2000 で試してみたけど、彼のビルドしたやつは
背景が描画されなかったので、ちょっと違うような気もする。

再現しないのは、俺が ATL 7.1 だからか?
0909892依頼者2005/11/20(日) 23:00:27
>>906
タブコントロールは背景ブラシ設定が普通に出来ないみたいで、
今やっていましたが、出来ませんでした
0910デフォルトの名無しさん2005/11/21(月) 09:02:45
>>898
そのbatでやってみたけど、うちでも正常だな。因みに
#define _ATL_NO_DEFAULT_LIBS
#define _ATL_NO_AUTOMATIC_NAMESPACE
を消さないとビルド出来なかった。

こちらはATL7.1 WTL7.5。環境が違うので何とも言えんな…
0911892依頼者2005/11/21(月) 15:25:22
>>910
defineを消してみましたが、やはり変化無しです…

どうもdefineは関係ないと思われます。一応、いろいろ消してみたので。
0912デフォルトの名無しさん2005/11/21(月) 22:05:38
まて、VCTKにはどこのATL3を入れたんだ?
09138932005/11/21(月) 23:02:05
#ずっと 892 って名乗っててすまん。素で間違ってた。

ためしに VC6 + ATL3.0で試してみたが再現しない

http://groups.yahoo.com/group/wtl/message/11898

ここをみると、正式にサポートしてないみたいだね。
ってことは、PlatformSDK の ATL を無理やり?使ってると推測して、

Win64\ATL にある atldef.h のバージョンは確かに3.0になってるけど、
VC6 でインストールされる ATL と DIFF 取ってみるとずいぶん差分が
あるんだよね(修正だけかどうかわからん)

http://www.kakaku.com/prdsearch/detail.asp?PrdKey=03107010096

買ってもそんなに高くないような気がするけど

同じ環境で試している人のレスを待ったほうがいいかも
0914デフォルトの名無しさん2005/11/21(月) 23:30:54
>>913
PSDKのATL3.0はそのままではWin32で使えない。
ビルドはできるがランタイムエラーが発生するらしい。

Microsoft Visual C++ Toolkit 2003 質問箱
http://pc8.2ch.net/test/read.cgi/tech/1109618655/53
09158932005/11/21(月) 23:34:26
>>914

そうでしたか、フォローありがとうございます。

いや、再現できないし、ググッてみると、VC++ 2003 Toolkit + PSDK ATL
っていう組み合わせを使っている人がひっかかったので、892 ももしかして
そういう環境だから、おかしいのかな?と思ったんで
0916デフォルトの名無しさん2005/11/21(月) 23:36:04
ATL使うならVC買えってことだな
0917892依頼者2005/11/22(火) 00:54:05
皆さん情報ありがとうございます。

>>912-915
記憶が曖昧なのですが、言われてみればそうかもしれません…
ただ、PSDKからとって来た事は間違いないでしょう。
(DSDKにはありませんよね?)

ただ、>>914のリンク先の記述と、こちらの持ってるatlwin.hが違う…
単純にバージョン違いならいいのですが。

WTLは完全にフリーで使えるライブラリだと思ってたのに…残念です
0918デフォルトの名無しさん2005/11/22(火) 02:55:20
VC8Express英語版で WTL 使える。
警告がウザイ以外は今のところ問題無いよ。

http://pc8.2ch.net/test/read.cgi/tech/1131590396/16-17
0919914のリンク先の532005/11/22(火) 04:15:49
>>917
あれは一つ前(2003年2月版だったかな?)のPSDKに入ってたATLです。

最新のPSDKのは、下のスレで別の人が対処法を書いています。

VC6使いがVC8 Expressを使ってみるスレ
http://pc8.2ch.net/test/read.cgi/tech/1131590396/17

PSDKに付属していないatlthunk.libの中にあると思われる関数を
直接atlbase.hに書き込むという対処法で、これで確かに動くようには
なるのですが、何せatlthunk.libの中で実際にはどういう処理が
行われているのか分からないので、安全かどうかは分かりません。
0920892依頼者2005/11/22(火) 20:44:51
>>918
VC8ExpressにはATLありませんよね?
WTL使えるってのはPSDKのを利用と言う事ですしょうか?

>>919
どうやらその対処法は、こちらも行っていたみたいです。
ただ、atlwin.hの修正は知らなかったのでやってみたのですが、
逆にwarningが発生します…
0921デフォルトの名無しさん2005/11/23(水) 02:09:04
ATLがないとなると
当然OLEDBもダメだから
mdbファイルのデータ吸出しも無理だなきっと。
0922デフォルトの名無しさん2005/11/23(水) 03:31:08
ビュークラス(CWindowsImplから派生)の中に、更にビュークラス(同じくCWindowImplから派生)を
子ウィンドウとして作成したら、親のビュークラスに向かってWM_PAINTが送られ続け、止まらなくなるという
変な状態になったんですが、原因と解決策が分かる方いらっしゃいますか?

MainFrame
  +-ViewA
    +-ViewB

 ↑ウィンドウはこんな感じの階層です。
ViewAに向かってWM_PAINTが延々と送られ、CPU使用率がMAXになってしまいます。
0923デフォルトの名無しさん2005/11/23(水) 03:40:22
すみません。すぐ解決しました。
WM_PAINTのハンドラでCPaintDCオブジェクトを作ったら直りました。
いまいち理解できないので、もうちょっと勉強してきます。
0924デフォルトの名無しさん2005/11/23(水) 09:12:08
>>921
ADO
0925デフォルトの名無しさん2005/11/23(水) 10:02:51
WTLでメニューに対し追加や削除の動作を試みているのですが
上手く動きません。
WTL::CMenuHandle m;
m.Attach(LoadMenu(_Module.GetResourceInstance(),MAKEINTRESOURCE(IDR_MAINFRAME)));
m.InsertMenu(1,MF_BYPOSITION | MF_STRING,1,_T("test"));
どう試行錯誤してもorz解決策ご存知の方居ましたら教えて頂けると幸いです
0926デフォルトの名無しさん2005/11/23(水) 10:54:07
>>925
m.LoadMenu(IDR_MAINFRAME);

でいいんじゃない?
0927デフォルトの名無しさん2005/11/23(水) 11:24:05
>>926さんのやり方と、一行付け足すだけで
解決しました。。。
どうやらSetMenu(m);を入れないとダメだったようです。
0928デフォルトの名無しさん2005/11/23(水) 22:28:00
BEGIN_MSG_MAP_EXを使うとクラスビューがおかしくなってしまうのを、
うまく解決する方法ってありますか?
メーリングリストにも綺麗な解決策はありませんでした。
0929デフォルトの名無しさん2005/11/23(水) 23:06:28
>>928
エンドユーザにどんなにおかしくても笑いをこらえるよう、お願いすれば解決する。
プログラマ側でエンドユーザの笑いのセンスを取得して処理するような仕様はクソだぞ。
0930デフォルトの名無しさん2005/11/23(水) 23:21:09
>>929
えーと、説明が下手ですみません。
クラスビューというのは、VCに付いているクラスの一覧を表示する機能を持ったパネルのことです。
BEGIN_MSG_MAP_EXを使うと、これがクラスのメソッドをうまく解析してくれないので、
なにか、うまい解決策はないものかと。
0931デフォルトの名無しさん2005/11/23(水) 23:45:26
>>930
M$に文句言う。
0932デフォルトの名無しさん2005/11/23(水) 23:46:59
>>928

VS2005
0933デフォルトの名無しさん2005/11/24(木) 00:06:35
>>931-932
レスども。
最新版では直ってるんですね。
とりあえず、メーリングリストのやり方で対策しときます。
0934デフォルトの名無しさん2005/11/24(木) 06:39:47
とりあえず英語版VC2005Expでは直ってなかったよ
0935デフォルトの名無しさん2005/11/30(水) 07:57:39
WTL7.5Finalキタ
0936デフォルトの名無しさん2005/12/05(月) 23:29:47
ATL/ATL Serverのコードをオープンソース化して欲しい
http://lab.msdn.microsoft.com/ProductFeedback/viewFeedback.aspx?feedbackid=8baf310d-75a9-489a-9a76-c18c0e727d95
0937デフォルトの名無しさん2005/12/05(月) 23:50:29
>>936
日本語で書いていいとは知らなかった。
0938デフォルトの名無しさん2005/12/05(月) 23:59:56
age
0939デフォルトの名無しさん2005/12/06(火) 00:39:51
>>936
いいね。
でも日本語だと、日本人以外の投票者は得られないかな…
0940デフォルトの名無しさん2005/12/06(火) 01:39:18
ATLのクラスはMFCも使用してるから、
オープンソース化にはあまり賛成出来ないな。
0941・∀・)っ-●○◎- ◆Pu/ODYSSEY 2005/12/06(火) 02:03:16
CStringまわりでそ。
WTLにも独自のCStringがあるしなぁ。むしろSTLのstringクラスとの互換性強化きぼん。
0942デフォルトの名無しさん2005/12/06(火) 03:11:23
は?ATL7.0のCStringTってMFCのモンじゃないでしょ
0943デフォルトの名無しさん2005/12/06(火) 03:53:06
CStringはMFCのそれと(機能は)ソックリだけど、別の実装みたいだね。
IntellisenseがMFCのクラスと勘違いした支援出してくるのが困る。
0944デフォルトの名無しさん2005/12/06(火) 04:01:49
WTLをATLから分離がいいな
940はダウトだろ
0945・∀・)っ-●○◎- ◆Pu/ODYSSEY 2005/12/06(火) 04:29:58
ヒント:afxstr.h
0946デフォルトの名無しさん2005/12/06(火) 04:36:30
cstringt.h -- MFCとATLで共用されてるCStringT<>定義
atlstr.h -- ATL用
afxstr.h -- MFC用
ってことでいいのかな?
0947デフォルトの名無しさん2005/12/06(火) 07:40:23
http://msdn.microsoft.com/library/ja/vclib/html/vclrfCStringT.asp
MFCとATLではTraitsも違う。
0948デフォルトの名無しさん2005/12/06(火) 09:13:01
だからヘッダに書かれてるコード読めって。ATL::CStringT<>をMFCが使ってる事実まで否定したいの?

実装の差異があるかどうかじゃなくてヘッダを共有してる事実こそ重要だろ。
0949デフォルトの名無しさん2005/12/06(火) 09:52:56
>>948
論点はそこじゃないだろ
940の日本語が紛らわしいのが悪いとみたw

皆は「ATLがMFCを使っている」と解釈
0950デフォルトの名無しさん2005/12/06(火) 12:06:45
日本語難しいね
0951デフォルトの名無しさん2005/12/06(火) 12:16:04
6.0以前から使ってる奴はMFCのCStringが後付けでテンプレート化したことくらい知ってるだろ。

皆なんて言うな皆なんて。
0952デフォルトの名無しさん2005/12/06(火) 14:32:53
日本語の不得手な方がまだいらっしゃるようで
0953デフォルトの名無しさん2005/12/06(火) 18:38:45
先生、質問です。
これはいけないことですか?

CAtlArray<IHTMLDocument2*> pHTMLArray;

void hoge(IHTMLDocument2 *pDoc)
{
 pHTMLArray.Add(pDoc);
}
0954デフォルトの名無しさん2005/12/06(火) 20:43:09
ATL使ってるんならスマートポインタ使おうよ
0955デフォルトの名無しさん2005/12/06(火) 21:04:18
COMのリファレンスカウントをちゃんと守りませう。
09569532005/12/06(火) 21:22:53
>954-955
CAtlArray<CComPtr<IHTMLDocument2>>でエラーがでてよくわからんかったわけですが、

CAtlArray<CComPtr<IHTMLDocument2> > arr;
Addref, Release
上のどっちかというが判明しました、ありがとうございます。
先生、さよーなら。
0957デフォルトの名無しさん2005/12/07(水) 15:38:29
IEコンポーネントのウィンドウにフォーカスを移すのってどうやるんでしょうか?
SetFocusをしてもキーボードフォーカスが移動しないので・・
0958デフォルトの名無しさん2005/12/07(水) 20:52:40
>>957
mouse_event
0959デフォルトの名無しさん2005/12/07(水) 21:25:16
7.5 Final EXE !
0960デフォルトの名無しさん2005/12/08(木) 03:32:05
windows.hみたいなので定義されてる構造体を
COMオブジェクトのプロパティに使いたいのだけれど、
こういうの1つ1つIDLで再定義していくんですか?
具体的にはWAVEFORMATEXをプロパティとするオブジェクトを作りたいのですが。
0961デフォルトの名無しさん2005/12/08(木) 03:54:39
variant
0962デフォルトの名無しさん2005/12/08(木) 04:00:10
>>961
それだとVARIANT型のプロパティになるんですよね?

よくDirectXなんかでDSBUFFERDESCみたいな構造体を
直接受け付ける関数あるじゃないですか。
ああいうのはどうなってるんでしょうか
0963デフォルトの名無しさん2005/12/08(木) 04:38:27
ポインタ
0964デフォルトの名無しさん2005/12/08(木) 05:49:15
すんません、できました。

IDLに#include "windows.h"とやるとコンパイルできなくて、
typedef struct tagWAVEFORMAT { .. } WAVEFORMAT;
とするとIDLのコンパイルは通るのですが
生成されるmyclass.hを使うときにWAVEFORMATの二重定義になって困っていました。

そこでIDLで宣言するときに
cpp_quote("#ifdef WAVEFORMAT")
typedef ...
cpp_quote("#endif")
として、生成されたmyclass.hで無効にしてやると上手くいきました。
0965デフォルトの名無しさん2005/12/09(金) 05:48:48
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=48cb01d7-112e-46c2-bb6e-5bb2fe20e626&DisplayLang=en
0966デフォルトの名無しさん2005/12/09(金) 07:20:34
オイオイ
0967デフォルトの名無しさん2005/12/09(金) 14:44:42
なるほどそういう流れか
0968デフォルトの名無しさん2005/12/09(金) 21:14:29
どういう意味?
0969デフォルトの名無しさん2005/12/10(土) 10:51:53
setup71.jsで登録したWTL App Wizardをアンインスコするにはjsを読んで手動で
レジストリを消すとかしないと駄目ですか?
0970デフォルトの名無しさん2005/12/10(土) 15:48:50
>>969

そうかも
俺も2つとか残っててマンドクセーと思ったことが
0971デフォルトの名無しさん2005/12/10(土) 17:53:32
レジストリは変更してないよ?
ファイルをコピーしているだけ
0972・∀・)っ-●○◎- ◆Pu/ODYSSEY 2005/12/10(土) 18:08:04
フォルダの中身参照してるだけな。
09739692005/12/11(日) 00:06:11
>>970-972
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\vcprojectsから
WTL*.vsz, WTL*.vsdir, WTL*.ico を消すだけですね。。
0974デフォルトの名無しさん2005/12/11(日) 02:15:50
WTLはスレッドサポートしてる?
CMutexとかみあたらないんだけど...
0975・∀・)っ-●○◎- ◆Pu/ODYSSEY 2005/12/11(日) 02:57:18
無いよ。

Win32APIでがんばりましょう。
普通に_beginthreadex使えるよ。CRT使わないならCreateThread(Ex)ね。
あとはCriticalSectionなりMutexなり。

俺は親スレッドにデータ渡すときは
parent.SendMessage(WM_USER_SENDDATA, (WPARAM)data, (LPARAM)dataSize);
で配列渡してるけどね。メッセージキューの利用はスレッドセーフなのです。
っていうかむしろそれ以外の方法使うの危険。


ATL Serverにはそのものズバリなスレッドクラスがあったけど
使った経験ない。
0976デフォルトの名無しさん2005/12/11(日) 23:42:05
それ以外の方法?
APCとか、IOCPとかは危険?
0977・∀・)っ-●○◎- ◆Pu/ODYSSEY 2005/12/11(日) 23:56:10
いや、ごめん。基本的にAPIベースで使える手段は一通り使えるはず。

メッセージキューってのはリストビューとかのウィンドウにデータを渡すときの話ね。
無理矢理CriticalSectionとか使って書き込んでもデッドロックすることがあるから。
0978デフォルトの名無しさん2005/12/12(月) 00:00:06
メッセージキューはIPCとしての信頼性が不安だわ。
マウスやらキーボードやらのイベント入ってきていつ溢れるか分からない。
マウスとか忙しいと捨てられてるし。
0979デフォルトの名無しさん2005/12/12(月) 00:13:30
普通にデータ受け渡すくらいならよっぽどのへぼ打たなければデドロックはしないでしょ。
0980・∀・)っ-●○◎- ◆Pu/ODYSSEY 2005/12/12(月) 00:23:55
子スレッド(多数)から親スレッドの持つ1個のリストビューにアイテム追加するとか。
SendMessageして親スレッドでAddItemとかさせないと、リストの上にマウスかざしただけで即デッドロックするおw
0981デフォルトの名無しさん2005/12/12(月) 01:41:57
イベントやらセマフォやら使えるんだから、スレッド間通信の道具なんかいくらでも作れるだろ。
0982デフォルトの名無しさん2005/12/12(月) 01:48:27
>>981
サンプル希望
0983デフォルトの名無しさん2005/12/12(月) 01:57:12
>>981 はセマフォじゃなくてミューテクスか・・・

例えば std::deque<> あたりの出し入れをスレッドセーフにするだけでも使えるでしょ?
読み出す側は同期的に待つならイベントが使えるだろうし、
非同期にやるなら追加したあと PostMessage() することにするとかさ。
0984デフォルトの名無しさん2005/12/12(月) 02:02:30
>>900
デッドロックしてくれなかったら、逆に困るに10000ディナール。
0985・∀・)っ-●○◎- ◆Pu/ODYSSEY 2005/12/12(月) 17:18:44
>>983
えっと非同期の方法を応用すると、
EnterCriticalSection→親スレッドのコンテナに追記→LeaveCriticalSection→PostMessage(リストに反映汁)
でええんかな。

俺の場合、実はリストビューは大概オーナーデータにするので、データだけを更新するとか、ある程度は融通は利く。
まぁいちおう考慮してみますわ。
ただ、SendMessageだと親スレッドが処理が終わるまで子スレッドがストールする、という
問題については、現状たいした問題じゃなかったりする。
リストへの追記の頻度がそれほど高いわけでもないし、状況次第。
実際問題、リストに登録する以外の使い道のないデータなんで汎用性持たせてもそんなに意味は無かったりする。


>>984
まー、さすがにデータ1件ずつにつきメッセージ投げるようなヴァカな真似はしてない。
スレッドごとにバッファメモリを用意して、ある程度まとまったデータにしてから配列で渡してる。

WM_SENDDATAってメッセージもあるくらいだし、メッセージキューにアドレス入れて
非同期でデータ交換するのって一般的だと思ってたんだけど。
0986デフォルトの名無しさん2005/12/12(月) 17:33:23
>>985
リストビューの実装をオーナーデータにすべき。
データベースメモリと別に、わざわざリストコントロール内にデータベースが存在する時点で厨確定。
とりあえず、LVS_OWNERDATA で検索すべき。
0987デフォルトの名無しさん2005/12/12(月) 17:34:58
いちいちPostMessageとかで通知しないで、親は暇なときに自分で子スレッドからの
データがあるかどうか見て、なんかあればあるだけ処理しちゃうというのもいいかも。
0988デフォルトの名無しさん2005/12/12(月) 17:37:34
>>986
ぷ
0989・∀・)っ-●○◎- ◆Pu/ODYSSEY 2005/12/12(月) 17:39:21
>>986
普通にオーナーデータにしてるが、CListViewCtrlImpl<Foo>とコンテナクラスを多重継承したクラス構成にしているwww
0990デフォルトの名無しさん2005/12/12(月) 17:41:43
>>985
>WM_SENDDATAってメッセージもあるくらいだし、メッセージキューにアドレス入れて 
>非同期でデータ交換するのって一般的だと思ってたんだけど。 

ちっとも一般的じゃない。
外部プロセスから作為的なメッセージを受信した場合、
それが正しいアドレスかどうか検出する方法がない。
セキュリティに配慮したアプリケーションを作るなら、
アクセス制限された共有メモリとイベント通知でデータ送信をするしかない。
そういいつつ、自分も面倒だからそこまでやらないけどさ。
0991・∀・)っ-●○◎- ◆Pu/ODYSSEY 2005/12/12(月) 17:44:48
>>987
OnIdleに噛ますのか。それアリだな。

子スレッドがアクティブなときもリストの項目ソートしたり削除したりできるようにしてるのだが
全部の操作にいちいちロック・アンロックかけるのも面倒なのよ。
親ウィンドウを持つスレッドのみが直接データモデルを操作するほうが現状楽だったり。
0992デフォルトの名無しさん2005/12/12(月) 17:46:57
>>989
・・・多重継承は要らんでしょ。移植・仕様変更に弱くなるだけだよ。
時には、似た処理内容をコンソールアプリで提供しなけばならなくなったりするでしょ。
0993・∀・)っ-●○◎- ◆Pu/ODYSSEY 2005/12/12(月) 18:22:55
次のお題はLVS_OWNERDATAでチェクーボクース出す方法について。
0994デフォルトの名無しさん2005/12/12(月) 18:33:18
>>993
そろそろスレ違いっぽいので、Win32API質問スレでおながいします。
というか、もうすぐ1000。
0995デフォルトの名無しさん2005/12/12(月) 21:03:07
立てました。
ATL/WTL Part4
http://pc8.2ch.net/test/read.cgi/tech/1134388951/l50
0996デフォルトの名無しさん2005/12/12(月) 23:00:28
1000!!
0997デフォルトの名無しさん2005/12/12(月) 23:24:37
'A`TL
0998デフォルトの名無しさん2005/12/13(火) 00:50:29
^w^ TL
0999デフォルトの名無しさん2005/12/13(火) 00:54:43
もうすぐ1000!
1000デフォルトの名無しさん2005/12/13(火) 00:55:20
もらっときます。
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。