1 :
デフォルトの名無しさん :
2005/12/12(月) 21:02:31
3 :
デフォルトの名無しさん :2005/12/13(火) 01:17:22
お つ
即死しそうな勢い
WTL AppWizard用の日本語化した元リソース(root.rc)って無いよね。 テンプレのサイトで見つけたと思ったらリンク切れだし。 自分でやってみたけど、メニューだけでも結構大変だな。
随分日が経ちましたが、いつの間にかPSDKのATLでも、 正常にタブが表示されるようになっていました。 多分、WTL7.5Finalに更新した辺りからだと思います… 因みに8.0.5347でも大丈夫でした。 皆様、どうもありがとうございました
11 :
7 :2005/12/14(水) 21:54:26
>>8 それはないかもね。少なくとも見たことは無い
MFC のからパクってくれば?
WTL8ってバージョン番号が変わっただけ加代!
本当は7.5Finalのタイミングで8.0にするつもりだったんじゃ・・・
誰か仕事でATL/WTL使ってる方はおりますか。 あるいはATL/WTL使っている製品て知りませぬか。 MFC→ATL/WTLの乗換えを検討してるんですが、 採用実績はどーなのかと聞かれて答えられず。
MDBのデータの吸出しやるならプロバイダテンプレートの関係でATLは必須。 RADなしならMFCより簡単だな。 ACCESSのMDBとApacheのCGIを繋ぐデーモンプロセスみたいなの書いてる。
実績もくそもただのWin32APIのラッパでしょうが。 WTLの実績=Win32APIの実績とでも答えておけばいい。
>>15 ADOでは何かまずいの?
>>16 「ただのラッパ」でもバグはありえる(事実あった)ので、
そういう回答は企業では通用しないでしょう
MFCにもバグあるのに・・・
>>18 MFCの場合は少なくともMSの製品なので、責任の所在(となすりつけ先)は
はっきりしとるわな。
AS ISで提供されてるオープンソースのライブラリではその辺が不安視される。
そんな奴は使うな
ごもっとも
ATLは普通に使われまくりでしょ。本もいっぱいあるし。 具体例は知らないww
>>22 ATL is not WTL
ATLは製品だから何もモンダイは無い。
やっぱ最初からVSについてるかついてないかは大きいよな。 デフォルトのリソースが日本語じゃないのだけでも士気が下がる
俺も20に一票
>>19 仕事で使う場合、「コレはMFCのバグだから」で許してもらえるほど世の中は甘くない。
>>26 相手の感情を静めるのには結構有効。
「マイクロソフトが提供するライブラリにバグがありまして・・・滅多に無いことなんですが」
とでも言っておけば、修正が遅れても怒られないかもしれない。
通用しない人には全く通用しないが。
28 :
14 :2005/12/16(金) 00:51:29
現在非常に劣勢。結局 ・問題あった時、責任とるのは嫌 ・ATL/WTLを使える奴が他に居ない ・MFCでも何とかなるじゃん で押し切られそう。 最後の「MFCでも何とかなる」を覆せれば、 説得できそうなんだけど…何かネタは無いですか。
あなたは現時点でそういったことに答えられないレベルの認識で 仕事に使おうとしているのですか?
>・問題あった時、責任とるのは嫌 最大の問題点だなw
MFC使ってれば責任取らなくていいのか?素晴らしいぞMFC
そのへんの話はマ板あたりでやってくれ
>>31 たぶん、「
>>14 が」責任取るのが嫌、なんじゃないのか?w
ATL/WTLにしたおかげでプロジェクトがコケて、お前その責任取れんのかコラ、とか
脅されていると見たw
wつけてる奴、おまえたいしておもしろいこと言ってないぞ
ATL/WTLの方が簡素な構造になるから、 頑丈さでも効率でも上になるかと思う。 メッセージのルーティングとかMFCは複雑だし。
ATL8.0のリファレンスってネットにある?
msdn2?
MSDNにある?見つからない…
どっからリンクされてんのよ
だからmsdn2だって
あれつかいにきーな。 スプリッターが
うーん… WTLにてMSG_WM_CREATE(OnCreate)で、 OnCreate内でGetWindowRect(lpRect); こんな事しようとすると、atlwin.hの ATLASSERT(::IsWindow(m_hWnd)); で引っかかる・・・・m_hWndにはちゃんと値入ってるのになんでだ・・
>>43 CREATESTRUCTのメンバでは駄目か?
うちでわへいき
Create(),CreateEx()をどうやったかぐらい書いたらどうか。
どうやると言っても、
>>45 で書いた所の
ツールバー のサンプルソース丸写しでコンパイルし
ReleaseではなくDebugで実行、ってだけです
ちなみに環境は WTLFinal7.5、VC++.NET2002
OnCreateの最初でDefWindowProcを呼んでみるとか
50 :
44 :2005/12/18(日) 21:08:49
>>45 俺はCREATESTRUCTのx, y, cx, cyのメンバのことを言ったつもりなんだが。
51 :
◆Pu/ODYSSEY :2005/12/18(日) 21:32:09
OnSize() で拾うのが確実。 初動だけ取りたいなら、OnCreateの中でフラグでも立てて、 OnSizeでフラグ値を判定して実行し、フラグを解除する。
たった今OnSize()でも試してたところです。 そこでも一瞬ウィンドウが現れて、m_hWndは当たり前ですが0では無いのに ATLASSERT(::IsWindow(m_hWnd));に引っかかります・・・ ウィンドウが表示されてから、数秒後にOnSize()を実行させると 何事も無かったかのように動く・・・ IsWindow(m_hWnd)をうまく通過できるタイミングが全くわかりません。。。
53 :
◆Pu/ODYSSEY :2005/12/18(日) 21:50:19
むしろWM_SIZEメッセージ毎に呼ばれるのが嫌なら MESSAGE_HANDLER( (foo_flag? WM_SIZE : WM_NULL), OnSizeAfterWindowCreate) とか
呼ばれる事を前提としてるので、イヤと言うわけではないです GetWindowRectのほかに、というかm_hWndを使うWTLの関数を OnCreateで呼び出そうとすると上記のようにエラーが起こるのが謎なわけです
55 :
◆Pu/ODYSSEY :2005/12/18(日) 21:54:36
とりあえず症状が再現できん。 デフォの処理を明示的に呼び出してから処理してみては。
って、自己解決、お騒がせしました。 m_hWndの問題は、うまくいかないぞと思い CreateExの所を変に書き換えたせいで 実際の問題はATLASSERTに引っかかっていたわけでなく 次の行の::GetWindowRectで、LPRECTをそのまま渡そうとしてたという 間抜けな話です、、、すいませんでした。
ここまで間抜けだと逆に笑えた。 しかし二度とやるなこのやろう。
>>56 部屋の真ん中で1時間全裸で土下座。暖房は切れ。
このスレの人はみなさんいい人ですね
>>56 罰として、雪の積もった学校の校庭にそのコードを書け。
全裸で。
WTL8.0 + VS2005の組み合わせで、既存のプロジェクトをビルドすると デバッグ版だとビルドエラー。リリース版だとエラーなし。 マニフェストの生成方法がVS2005は、変わったみたいだね。
#include <atlsoap.h> したんですが、 「error C2872: 'CString' : あいまいなシンボルです。」の嵐に見舞われます。 WTL::をつける以外に良い方法はないでしょうか?
namespace WTL { } でくくる、じゃだめですか?
#define _WTL_NO_CSTRING #define _CSTRING_NS ATL
66 :
63 :2005/12/24(土) 01:29:15
>>64 うおーばっちりです、ありがとうございます。
67 :
63 :2005/12/24(土) 01:35:31
>>65 あら、タイミングが。
試してみたんですが atlmisc のせいなのかなんなのか駄目っぽいです。
とりあえず>64氏案でいこうと思います、ありがとうございました。
using WTL::CString;
69 :
前スレ853 :2005/12/24(土) 07:32:40
また、直接ATLの話でないので申し訳ないですが・・・ 今、IDataObjectをやっているのですが・・・ OleGetClipboard()でクリップボードの内容を取得することはできるのですが、クリップボードにデータを書き込む事ができません。 OleGetClipboard()で取得したIDataObjectをOleSetClipboard()すること自体はできるわけですが、そのIDataObjectにはSetData()ができないのです。 単にテキストデータをクリップボードに書き込むだけでもIDataObjectを自前で実装しなければいけないのでしょうか? 私は前スレ853なのでSDKレベルでお願いします。
>>67 defineする場所とインクルードする順番に問題アリな気がする。
ダイアログベースで作る時の様にデフォルトのフォントを指定する方法ってないですか? コントロールをCreateする度にフォントを設定しなおすの面倒・・・
リソースエディタからプロパティで設定できなかったけ?
あ、ごめん ダイアログベースではなく普通のウィンドウです、リソース無しの。
システムフォント変えるしかないんじゃないかな
75 :
デフォルトの名無しさん :2005/12/30(金) 05:30:14
もしかしたら凄い初歩的な事かもしれません… 今、WTLを使用してインターフェイスを構築しているのですが、うまく動作しない箇所があり、困っています。 フレームウィンドウにタブビューを貼り付け、そのタブビューにスプリッタウィンドウを貼り付けているのですが、そのスプリッタウィンドウに 貼り付けているビューが、通知コードやコマンドコード(今回は下位のタブ切替)等を認識してくれません。 tree風にすればこんな感じ ROOT └─FrameWindow └─TabView └─FrameWindow ├─SplitterWindow ├─PaneContainer | └TabView | └TreeView └─EditView スプリッタウィンドウの区切り設定のSetSplitterPosもうまく働いていないようです(いつも最左端になる)。ただ、初期位置を指定できないだけで、 区切りの移動等は普通に出来ます (REFLECTED_)NOTIFY_CODE_HANDLER_EX(NM_CLICK,省略)を2つ目のFrameWindowにセットすると、うまく働き、それ以降のビューで同様にセットすると、 うまく働きません。 以上の事から、2つ目のフレームウィンドウ関連がおかしいと睨んだのですが、対処法がわからないのです。 皆様、力をお貸し下さい…
釣れますか?
>>75 タブビューの内部をSplitter で区切ってPaneとEdit にしたいなら
2つ目のFrameWindow がいらないんじゃないの?
TabView の子にSplitterWindow を指定したら?
78 :
75 :2005/12/31(土) 06:44:09
>>77 それだと、どうもうまくいかなかったので、FrameWindowをあえて使っています。
それにタブビューはちょっとしたテンプレートを使っているので、タブビュー内の
子は一つにしたかったという、理由もあります…
通知コードの問題は凄い初歩的でした。親(二つ目のFrameWindow)に
DEFAULT_REFLECTION_HANDLERをつけていたみたいです…
絶対なるわけね〜
ただ、それでもSetSplitterPosはうまくいきませんでした。どうも、一度正しい値で
呼び出されてから、xyPos=0,bUpdate=falseでもう一度関数が呼ばれているみたいです
じゃあ、それより後にやればええやん
80 :
75 :2005/12/31(土) 18:11:29
その場所がわかれば苦労しませんよ…
漏れはそういうのは WM_CREATE の最後くらいに 自家製メッセージを PostMessage しといて、その中でやってるけど。 ちみのケースでうまくいくかどうかは知らんがね。
Frameのソース読めよ。 なんでFrameの中にFrame入れたいの? Paneで十分じゃねぇのか
ひといない
|_゛)
VC++2005ExpressでWTL使うネタもExpressスレでやってたしな・・・ ぽっくん悲しい
ともだちんこぶぁい
ATL/WTL って、MingW とか gcc とか Borland でもつかえるんですか?
91 :
デフォルトの名無しさん :2006/01/09(月) 00:28:57
ttp://groups.yahoo.com/group/wtl/message/11292 ナイスガイRoger氏のようにやってもツールバーのアイコンを動的に変更できません。
・ツールバーのアイコンは16x16(小)と20x20(大)
・小→大だと、アイコンが全部消えてバンドサイズ変更なし。
・大→小だと、アイコンは小さくなるけどバンドサイズが変更されず、シェブロンが大アイコン時の場所に表示される。
環境:win2ksp4, VC++.NET2003
以下のようにやってみました、プリーズご助言お願いします。
-----------------------------------------
// 大小のイメージリストはクリエイト時に初期化。
// リバーバンドにツールバーを表示
switch (m_nIcon){
case 0: // 小さいアイコン
SetImageList(m_ImageList16);
break;
case 1: // 大きいアイコン
SetImageList(m_ImageList20);
break;
}
CReBarCtrl rebar = GetParent();
int index = rebar.IdToIndex(IDC_TOOLBAR);
int nCount = GetButtonCount();
CRect rc;
GetItemRect(nCount - 1, &rc);
REBARBANDINFO rbbi;
rbbi.fMask = RBBIM_CHILDSIZE;
rbbi.cyChild = rbbi.cyMinChild = rc.bottom;
rebar.SetBandInfo(index, &rbbi);
SDKのATLって6.0のorz
普通にWTL自体を使う分には(ちょっと修正すれば)問題ないんだけどね。 ATL Serverってやっぱ魅力的?
VC++2005TeamSuiteのDVDがあったりするわけだが
97 :
デフォルトの名無しさん :2006/01/09(月) 03:36:28
うまー
98 :
本田 :2006/01/09(月) 07:59:39
>>89 > ATL/WTL って、MingW とか gcc とか Borland でもつかえるんですか?
BCB5には、ATL付いてるよ。
Borland Developer Studio 2006には、WTLも付いてるらしい。
最適化がまともなら選択肢に入るのだが。。。
>>91 MSDNによればRB_SETBANDINFOするときは
rbbi.cbSize = sizeof(REBARBANDINFO);が必要。
(構造体がver4.71以降拡張されている)
あと、cxMinChild,cxIdealも埋めとく必要がある
REBARBANDINFO rbbi = {0}; // 一応0埋め
rbbi.cbSize = sizeof(REBARBANDINFO); // 追加
rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE; // 変更
rbbi.cyChild = rbbi.cyMinChild = rc.bottom;
rbbi.cxMinChild = 0 または 最初のボタンの右端の座標; // 追加(※
rbbi.cxIdeal = rc.right; // 追加
rebar.SetBandInfo(index, &rbbi);
※cxMinChild
詳しくはAddSimpleReBarBandCtrlのソースを参照
102 :
91 :2006/01/09(月) 16:35:10
>>100 お答えありがとうございますが、残念ながら無理でございます。
どうにもうまくいかんですなこりゃ。
Donutも同じようなことしてると思うんだけども…うーむ。
>>102 無理?
実際やって確かめたんだがなぁ・・・
RECTやREBARBANDINFOのメンバーの値はどうなってる?
あと、91のコードってどこに書いてんの?
コードから推測するにツールバーのサブクラスの中だとは思うけど。
106 :
91 :2006/01/09(月) 22:34:11
>>104 RECTやREBARBANDINFOもちゃんと高さは変更されてるし、
コードはご推察の通り、ツールバーのサブクラスの中。
と、思ったところで重大なミスが発覚しました。
IDC_TOOLBARじゃなくてATL_IDW_TOOLBARだと成功しました。
つまるところSetDlgCtrlID(IDC_TOOLBAR);し忘れてたわけで…
長々と申し訳ございませんでした、トイレの水がぶ飲みしてきます。
PSDKのATLMFCってCE用のやつじゃないの? 本来X86用のブツではないから地雷だろ。
> 2.VS2003から抜いたatlmfcフォルダをVCフォルダ内に置く > atlmfc\ のinclude、lib、srcパスを設定 ぶっちゃけ「抜いてくる」ならTeamSuiteのDVDなら8.0のヘッダ群が入手できることになるが。。。さて。。。。
だからうまー
抜けるのか
クラックした方がは(ry
すんまそん C#のstring[]をSOAP経由でATL ServerのIDLで受け取る方法がどうも 分かりまへんintの配列は渡してエラーにならないのだけどなぜBSTR配列は だめなのです。->soap Exception発生。ちなみに配列でないBSTRの受け渡し は問題ありません。 インターネットに転がっている情報も配列ではないBSTRの操作ばかりで まいってます。VS.NET 2003 C# + ATL Server(SOAP)
>>113 レスサンクス
SAFEARRAYでIDL定義してもエラーになってしまうのです
VARIANTのポインタもだめでした
ピンポイントなMSDNのサンプルもなしでお手上げ状態です
_18934_RTL_x86_jpn_ATLMFC_Redist.cab _18935_RTL_x86_jpn_ATLMFC_Redist_Debug.cab
PRO入れようとしたらVCだけで2GB
ATL8.0でないから意味ないし リソースエディタもない
>ATL8.0でないから意味ないし 詳しく。
他のスレではとっくに出てる話を本家のATL/WTLスレが今ごろ・・・
このスレの住人がExpress Editionなんて使ってるわけないっしょー 使って・・・
teamからリソースエディタも抜けた
いまだにVS2002.netが現役。。。 WTLはインテリセンスが効かないことが多くて困るね
COMMAND_ID_HANDLER MESSAGE_HANDLER NOTIFY_HANDLER COMMAND_HANDLER はなにがちがうのですか?
なんか ?と:を書くやつを教えてください
スレ違い。
>>126 三項演算子 でググれ。
それとスレ違いだから適したスレに行け。
>>128 正確にいうとあれは条件演算子。
三項演算子というと単項、二項に対する分類になるが、
まあ三項演算子といえばこれしかないから通じるだけ。
WTLにMSDNみたいなヘルプか、それに相当するHPってないの?
暁氏のサイトとCodeProjectがそれ代わり。 MFCの同名のクラスやAPI関数のマヌアル見つつ、WTLそのもののソースを読む。 たいした量は無い。斜め読みすれば何をやってるかくらいは把握できる。
So ちゃん本書かねえかな。 絶対売れねえだろうけど。
ム板見てるとあちこちにWTLユーザいるんだがな・・・ きっとほんの2〜3人があちこちに書いてるだけなんだろうな・・・
普通使うだろ。
サポート中止 世間的には大昔に終了 げはははは
VS2005スレから迷い込んできたのか
サポートなんてもともと無い ATLの開発チームが暇をもてあまして内部用に作ったGUIクラスライブラリだからな オプソになった時点でat the own risk どっか別の会社に有償サポートお願いするしかないです><
やはり糞団子だったか
Donutやその派生ブラウザはWTLで書かれてる。
やっぱ社内でも俺みたく少数派でひっそり使ってるのかな・・・<WTL
普通はMFC使うのかな。それともC#やらか?
先輩が使ってた。あとオレも単発のダイアログアプリ作るのに使った。 MFCは複雑杉><
VC++ならMFCだな。 他人がメンテする時のこと考えるとやっぱりメジャーなもの使う。 WTLを使うなら自分だけの小物か自分しかメンテしないものか または社内でWTL教育するか
なんなのって何がよ
146 :
デフォルトの名無しさん :2006/01/19(木) 13:46:52
MFCったって、どうせダイアログアプリをベースに使うのが 関の山だろ?ドキュメント・ビューを理解して使っている椰子 なんて見たことない。今からだったら.NET Frameworkかもな。 いったん.NET Frameworkで楽すると、もうMFCみたいなポンコツで 使いにくいクラスライブラリなんて使いたくないし、だいいち VC++でしか使えないという致命的な欠点があるしな。
俺はなんでも出来るけどなwwwうはwwww土方乙wwww
>>146 >ドキュメント・ビューを理解して使っている椰子なんて見たことない。
あなたの周りはレベルの低い方ばかりなんですね。
テストプログラムならともかく、まともなアプリじゃドキュメント・ビューがないとつらいな。 WTLでも自前でObserver/Subjectとかやっとる。 つうか自前の方がMFCより柔軟でいい。
4166.6666666666666666666666666667
ダイアログアプリケーションベースで2重起動防止&前のインスタンスウィンドウのアクティベートを実現する方法。 ウィンドウクラス決めうちなんで、普通にFindWindowでやったらウィンドウタイトルをユニークにするくらいしかないんですが。 1. サイズ固定フレームウィンドウ(クラス名をユニークにする)+フォーム →MFCだとこれが多い希ガス。ステータスバーとかも付けられる。 ただ、ダイアログリソースのサイズに親フレームをジャストフィットさせる関数がWTLには無いので('A`)マンドクセ 2. 起動時にテンポラリファイルを作り中身にインスタンスハンドルを書いておく。 →強制終了時に確実に消す方法がない 3. レジストリを使う →根本的な解決になりません('A`) 4. EnumWindowのコールバック関数でSendMessageで照合 →(゚∀゚)ktkr!!! 最初に起動したインスタンスをサーバ、2回目以降をクライアントとして使うとか色々応用はできそう。 今はこれを使ってる。 でもなんか落とし穴もある? このへんATLとか使ってスマートにやる方法ってあるんかな。
新しいBorlandのはATLとWTL付いてるのな
某はよく傍流に媚びるからな。コンパイラの性能もGCC以下だしぶっちゃけイラネ。
4.でAPIだけで解決する方向で イメージ的には 1. アプリの初期化時にRegisterWindowMessageでユニークな文字列を登録、これを多重起動チェック用のMessageIDとして使う 2. wParam/lParamはUUIDのポインタとして、送信用UUIDをセットしてSendMessage 3. メッセージ 受信側はwParamのUUID値をチェックし、lParamの表すアドレスに返信用のUUIDを書き込んで返す。 これで、メッセージの送受信に行儀の悪いアプリが割り込む危険性はある程度は回避できるんじゃないかな。
別プロセスにポインタってネタだよな?
WriteProcessMemory許可の方向で(・∀・) 自分の書いたアプリの別インスタンス相手なら十分アリでしょ。 引数と返り値にユニーク値って手もあるけど十分かどうか不安じゃね?
それだったらUUIDを文字列として保持してしまえばいい。 そうすればグローバルアトムが使えてウマー。
lParam(LPARAM型)と返り値(LRESULT型)ででいいか。面倒なことやんなくていいし。 ユニーク値として32bitしか使えないのは不安だけど。
>>151 俺はMFCもWTLも使わずにAPIだけで組んだときは、
不可視のウィンドウ作って、その手の処理はその
ウィンドウ経由でやってた。
Mutexは使えないのか? そういう話でもないのか
>>160 2重起動の検出までならそれでOK。
「既に起動済みのウィンドウを前面に持ってくる」という動作はMutexだけじゃ無理ス。
この方法のポイントは、別にクラスネームが決めうちであってもなくても使えて、
しかも方法をアレンジすれば3重起動まではOKとか、インスタンス毎に別の動作をさせる
とかの応用がきくこと。
まぁ現実的には二重起動禁止&アクティベートだけなら FindWindow(ClassName, NULL) で検索するのが楽だわな。
ウィンドウフレーム&フォームで作って、若干のダイアログリソースの位置・サイズのズレをCDialogResize<>で補正、
てのもアリかな、と(俺の習作はそーやってる)。
この方法を使うと、ステータスバーも扱えて何かと便利。
FindWindowだとexeを連打したら終いじゃないか?
俺のアプリでFindWindowで二重起動チェックしてるがまったく問題茄子 MFCとは違ってエントリポイント(WinMain)直接叩けるから、そこで起動チェックすれば吉。
不安だったのでショートカット15個くらい作って同時起動試みた。 3つ立ち上がった。 ヤバイこれバグだwwwwwwwwwwww
ミューテックスで排他処理。 共有メモリでウィンドウハンドル保持・閲覧や引数渡し。
名前付きのファイルマッピングでやってた。
二重起動ってさ、二重起動する奴があほなだけだろ? なんで同時にいくつも起動するんだ? だからうちは「二重起動しないでください」で済ませてる
アイコンにファイルをDrag&Dropしたときに、 既に動いてるインスタンス内で開きたかったりするじゃん。
マルチユーザーなんだから、他のユーザーが起動してるかも知れない。 ターミナルサービスもあるし
常駐アプリで、再度EXE起動するとウィンドウ復元とか。
どんどんこのスレの話じゃなくなってきた。
何もかも◆Pu/ODYSSEYこいつのせい 無差別に色んなスレに出現しては荒らしまわる基地外
>>169 MUTEXは、ユーザコンテキスト別に独立管理されている。
今さらお前が心配をしなくても、MSははるかな昔に手を打っている。
「このソフト二重起動したらファイルがぐちゃぐちゃになっちゃったよ。」
「あ〜、それ二重起動しちゃだめなんだよとか言ってたよ。」
「誰だよ、こんなソフト作った奴は…。
>>167 か、じゃ、しょうがないな。
あいつ、二重起動禁止の方法とか知らんだろうし、バグは多いし、包茎だし。」
ユーザーに余計な負担を強いるソフトなんて存在する意味が無いんだよ…。
いい加減他行け。
ロックファイルは
CStringT::FormatMessageでGetLastErrorMessageの説明取り出せますか
>>160 既に起動しているインスタンスがあればそちらで開きたい
という場合に、ダイアログベースのアプリケーションでは
FindWindowで一意に絞り込めないという話。
Captionが固定ならそれで検索という手もあるが、大抵は
開いているファイルの名前等を表示していて動的に
変化するからクラス名で検索したいのだが、ダイアログは
全て同じクラス名だから駄目。
Mutex⇒Process⇒メインウインドウのハンドル みたいな検索は出来ないのかな? たいていは FindWindow で事足りているので調べたことはないけどね。
>>184 このスレは初心者スレではない。Win32APIでやってくれ。邪魔なんだよ。
CDialogResizeがダイアログ以外のウィンドウでも使える件
そろそろレイアウトマネージャが追加される予感。
今までBCB6使ってました でもアホ全開のBDS2006の評判を聞いて これからはVC/WTLで生きることにしました みなさんよろしくおねがいしました
やめておけ。素直にBCB6使い続けれ。 今のところRADツールでは一番バランスがよい。
ごてごてしたGUIソフトがメインなら一番DelphiもしくはC++Builderが効率いいよな 星の数ほどコンポーネントがあるし張っていくだけでできるんだもの
人の書いたものは使いたくない
どうぞハンドアセンブルで一から書いて下さい
DelはPascalだからダメだな。使える奴には良いモンだが、 今の某のヘタレ具合から、使えない奴にこれから教育して使わせる気にはなれない。 まあスレ違いだな。
196 :
501 :2006/01/23(月) 23:46:50
自己解決しました。 w
おれ!おれだよ、おれ!!
>>199 > さて、このプログラムはちょっと困ったことがおこります。プログラムが起動してから、何らかのエラーで
> 強制的に終了されてしまった場合グローバル・アトム・テーブルに文字列が格納されたままになりますので
> 再度起動することができません。こうなったらコンピュータをリセットするしかありません。
だめじゃん。
グローバル・アトム・テーブルに 文字列と最終書き込み時間を書き込んでおいて、 動作中は時々上書き更新するようにしておけば、 一定時間以上前のものは無効とみなしてしまうことで タイムアウト処理が可能。
それならMutexの方が楽でしょう
>>199 if (GlobalFindAtom(MYATOMSTR) == NULL) {
MessageBox(NULL, "初回起動です", "初回起動", MB_OK);
aMyAtom = GlobalAddAtom(MYATOMSTR);
・・・
アトムの存在チェックと作成が別APIだからその間に2重起動
してしまう可能性があるな。
スレ違いな話題をいつまで引っ張るつもりなんだ?
気の済むまで
スレ違い除くとレスなくなるしな
そんなんで正当化できると思ってるところが痛い
その通り。2chにおいてスレ違いな話題は決して許されない。
かつ異例の早さで逮捕。
VCLや.NETの話題ならスレ違いだが、ATL/WTLってむしろ 生でWin32APIが叩けるのが旨みじゃないのか? ATL/WTLで用意されてる方法を使ってうまい手段は無いかってのが趣旨なわけだし。 無きゃ無いで、意見が纏まったら多重継承に便利なテンプレート書いて本家にコミットって手もあるわけで。
>ATL/WTLで用意されてる方法を使ってうまい手段は無いかってのが趣旨なわけだし。 今までそんな趣旨で多重起動云々の話してたやついるか。
そんなことより、趣味プログラマの俺はこれからも MFCを使い続けるべきなのか、ATLを使うべきなのか お前ら教えろ。
ケースバイケースで作りたいものが早く作れそうな方を使えばいんじゃね?
>>211 最後の行読んでな。何のためのオープンソースだよ。
そもそもMFCなんかと比べて無いものづくめなんだから、そこをベースになってるWin32 APIで
どうにかせざるを得ないわけで、たまにAPIの話題になるのは已む無しだろ。
それがスレ違いならスレそのものが成立し得ない。
VC6.0+WTL3.1の頃から使ってるが、7.5にはあの頃と比べてずいぶんお前の言う「スレ違い」な
機能が取り込まれてるが、それをいったい誰がコミットしたか。ユーザーだよ。
CodeProjectに上がってたタスクトレイ管理クラスを改造して多重起動防止・シェルのリセット時にアイコンを復帰する 機能を一纏めにしたCTaskTrayAppImpl<>的なものならオレのPCの中にあったと思う。
多重起動防止ができない多重起動防止ライブラリなんてイラネ
ふっつーに起動時にファイル作って 正常に終わるとき消すだけでは
218 :
>∀<)っ-○●◎- ◆Pu/ODYSSEY :2006/01/24(火) 21:50:21
>>216 ぶっちゃけ同じことやったらIrfanViewの多重起動防止モードでも複数起動しますが。
連続クリックとか通常行う操作の範疇では実用に耐えうるし、Mutex併用すれば更に問題茄子。
>>217 ファイルハンドル開いてるときはたしかにロックがかかるが、
暗黙にMutexが使われてるからで、それなら最初からMutex直接使えばいいって話。
EnumWindow使う方法だと、単純に2重起動防止だけじゃなくて3つまで、4つまでならOKとか
いろいろ応用がきくんだな。
オーナーデータ使ったリストビューコントロール拡張クラスが合ってもよさそうなのに
無い件もだけど、そもそも汎用化し辛いとこなのかね。
CWindowWithReflectorImpl<>はどうみてもウンコです。
>>217 正常に終わらん時があるから悩むわけで。
>>211 MutexのハンドルをCHandleに放り込んでいますが、何か?
221 :
>∀<)っ-○●◎- ◆Pu/ODYSSEY :2006/01/25(水) 01:49:45
それを言えばオレもだな ATL::CWindow wndPrev = ::FindWindow(fooClass, NULL); if (wndPrev.IsWindow()) { wndPrev.SendMessage(.ほげほげ...) ; }
エラーですのでお願いします HRESULT CMainFrame::GraphInitialize(void) { HRESULT hr; hr = m_pGraphBuilder.CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC); DEFAULT_ERROR_HANDLER(hr) #ifdef _DEBUG hr = m_hLogFile.Create(TEXT(".\\DirectShow.log"), FILE_ALL_ACCESS | SYNCHRONIZE, FILE_SHARE_READ, CREATE_ALWAYS); DEFAULT_ERROR_HANDLER(hr) if(m_hLogFile.m_h) { hr = m_pGraphBuilder->SetLogFile((DWORD_PTR)m_hLogFile.m_h); DEFAULT_ERROR_HANDLER(hr) } #endif
#define DEFAULT_ERROR_HANDLER(hr) {if(FAILED(hr)) { OutputDebugString(GetErrorMessage(hr)); OutputDebugString(TEXT("\n")); throw hr; } }; static LPTSTR GetErrorMessage(HRESULT hResult) { static TCHAR szResult[MAX_ERROR_TEXT_LEN]; DWORD result = AMGetErrorText(hResult, szResult, MAX_ERROR_TEXT_LEN); if (result == 0) { wsprintf(szResult, "Unknown Error: 0x%X\n", hResult); } return szResult; }
YOYOYO 中に跋扈する魑魅魍魎 まるで異界の一味郎党 みたいなRhymer Rhymeしに登場 聞こえたろう闇に響く音 ビビって興味ない振りしようと 好奇心は日に日に上昇 ならCheckしに行こう here we here we go YO 怪し危うし魔の魑魅魍魎 多分地獄は満杯 溢れ出した連中が団体で列を成して この世にスタンバイ 奴らの分 場所がまず足んない 道理で季節問わず暑いはず あえてヒートアップさす いかついVerseを かまして汗かかすぞ どうせヤケだろ 聞かせな合唱を YO HA! こいつぁまるで火事場 すげぇ熱気溜まっちまう島国 Danger ますます上がっちまう Come on (このジパングもうちょいでパンク)
ステータスバーとプログレスバーだけのフレームウィンドウを作成し WM_SIZEハンドラでステータスのペインの1つにプログレスバーをくっつけようと試みています。 以下はそのWM_SIZEハンドラの中身です。 ゆっくりウィンドウを動かすと一応くっついて来るんですが、 急にグリグリ動かすと何故かズレてしまいます。きちんと追従させる方法は無いでしょうか? RECT rc; m_statusBar.GetPaneRect(1,&rc); m_progressBar.MoveWindow(rc.left, rc.top, rc.right-rc.left,rc.bottom-rc.top, 1);
>>225 プログレスバーの親ウィンドウは何?
親をステータスバーにしたらうまくいくと思う
>>226 プログレスバーの親はm_statusBar.Createの戻り値なので
親はステータスバーになってるはずです。。
>>225 ステータスバーもフレームウインドウに動かされているはずなので、
UpdataLayout();
を先に呼ぶとかじゃ駄目かね?
もしくはステータスバーをサブクラス化して、それのOnSizeで。
>>228 できました!ありがとう!
CMultiPaneStatusBarCtrlImpl::UpdatePanesLayout(void)が
OnSizeで呼ばれていたので、それを自前で呼ぶようにし
先にUpdateLayout();を呼んでみたらあっさり
何時間悩んだんだ・・・
WTLHelper便利だけど、BEGIN_MSG_MAP_EXだと追加に失敗するー。
232 :
>∀<)っ-○●◎- ◆Pu/ODYSSEY :2006/01/28(土) 04:12:15
atlcrack.hは禁止の方向で
糞コテが偉そうに勝手に禁止しないで下さい
これは、我等芝村の意思ではなく、人類の総意だと受け取ってもらって差し支えない。
>>230 みたいなのの
Windowsx.hのメッセージクラッカー版ないかなあ…
WTLも使いたくないくらい、サイズ小さくしたいアプリで使えるんだけど…
>>230 VC2005Pro で使うと起動するたびにツールバーが初期化されるんだけど
うちだけ?
>>239 >Add-in for MS VC++.NET 2003 that helps to insert message handlers for WTL.
だからじゃない。
241 :
前スレ853 :2006/02/04(土) 07:00:20
またATLの話ではないわけですが、よければお教えください。 VBScriptの「For Each .. In」構文で列挙できるコレクションオブジェクトをSDKレベルで作っています。 For Each・・・ではVBScriptエンジンからIEnumVARIANT::Next()が呼び出されるのですが、これでrgVarに返すオブジェクトについては、返す直前にAddRef()する必要があるのでしょうか? というか、一般的にオブジェクト(のインターフェースポインタ)をクライアントに返す場合にはAddRef()することが必要なのでしょうか?
うにゅ
メインウィンドウ上に配置された リバーやツールバーのクリックを検知するにはどのように書けば良いのでしょうか? 普通に、WM_LBUTTONDOWNじゃダメなようで…
ATL使っててメソッドを宣言しようとしてます。 そのメソッドにIDirectSound8型の引数を設定したいのですが、 IDLのコンパイル時に「そのような型は定義されていない」と怒られます。 それでdsound.hをincludeすると、 今度はULARGE_INTEGERなどの型が二重定義だと言われてしまいました。 こうなるとdsound.hをincludeする以外の方法で 定義を読み込ませることになるのでしょうか? どなたかご存知の方いらしましたらお教えください。
245 :
>∀<)っ-○●◎- ◆Pu/ODYSSEY :2006/02/04(土) 21:49:57
これはたまたまインタフェイスがDirectXだったというだけじゃないんですか?
247 :
>∀<)っ-○●◎- ◆Pu/ODYSSEY :2006/02/04(土) 22:02:42
つか、C++をベターCとして使ってる人以外は大概、ATLでDirectX使ってると思われ。 MSのサンプルだとATL使ってないけど、多分ATLの無い環境に配慮したのだろう。 多重定義されてるといわれるULARGE_INTEGERの定義を辿ってみるもよし。 IDirectSound8の定義を引っ張り出してきてソースに直貼りするもよし。 ↑あくまで個人でプログラム書くならね。 ここでATL/WTL使ってる人はヘッダがドキュメントな人です。
>>237 そんなにサイズが重要なら、全部Win32 APIを直接使えよ
IDLが文句言うの? CComPtr<IDirectSound8>とかじゃなくて、 interface hoge : IDispatch{ [id(1), helpstring("メソッド dohoge")] HRESULT dohoge([in] IDirectSound8 *hoge); }; みたいな話か?
リバー上にタブコントロールを作成したのですが リバーのバンドのサイズがそれに合いません また、作成時に強制的に合わせても、複数行の表示やリサイズの際に上手く反映されません 解決方法がありましたら教えて下さい
252 :
>∀<)っ-○●◎- ◆Pu/ODYSSEY :2006/02/06(月) 00:12:39
WM_SIZEとかWM_SIZINGあたりで強制的に合わせるので駄目?
122 名前:デフォルトの名無しさん[sage] 投稿日:2006/01/16(月) 01:35:13 teamからリソースエディタも抜けた 詳しく、おねがいします。
世の中、上から下まで責任転嫁の時代です。
256 :
デフォルトの名無しさん :2006/02/13(月) 16:36:10
GetMoniker実装も仕方教えてください。
257 :
256 :2006/02/13(月) 16:44:47
突っ込まれる前に書き直し。 AxWindowを使用していますが、時折「GetMoniker not implemented」とログに出力されます。 そこで、GetMonikerをきちんと実装しようと考えたのですが、どのようにGetMonikerを実装してよいか分かりません 情報ありましたらよろしくお願いします。
質問させてください。 基底クラスへCHAIN_MSG_MAPすると、OnCharに飛ばなくなってしまうの ですが、何故だかわかる方教えていただけませんでしょうか。 class CMainFrame : public CFrameWindowImpl<CMainFrame> { BEGIN_MSG_MAP(CMainFrame) MSG_WM_CHAR(OnChar) CHAIN_MSG_MAP(CFrameWindowImpl<CMainFrame>) END_MSG_MAP() void OnChar(TCHAR vkey, UINT repeats, UINT code){ ... } }
MSG_WM_CHAR とか使うなら BEGIN_MSG_MAP_EX なんじゃね?
>>259 BEGIN_MSG_MAP_EXでもやっぱりだめでした。
CHAIN_MSG_MAPを消すとOnCharに飛ぶのですが、
CHAIN_MSG_MAP入れると、OnChar, OnKeyDown, OnLButtonUpとかも飛ばなくなります。。
何故でしょう。。
BEGIN_MSG_MAP と MESSAGE_HANDLER でやったらダメなの? atlcrack.hは使ってないから知らん。
>>261 今やって見ましたが、だめでした。
MESSAGE_HANDLER(WM_CREATE, OnCreate)には行くのですが。。
つうか、Viewが喰ってるんじゃないの?
順番的にチェインが食うって事はないはず
よく知らんけどFrameWindowなら、中にはまってるビューかなんかにメッセージが行ってるんじゃねえの?
んで、CHAINしてないときはそこらの初期化が走らないから直接メッセージが来る、と
CAtlStringのFormatMessageの場合 FORMAT_MESSAGE_FROM_SYSTEMはどうやって指定するの
>>258 デバッガでトレースしてみればすぐに原因が分かると思うが。
まぁ、マクロだらけのソースはトレースしにくいけどね。
「なぜ○○なのか?」について考えるより、別の解決方法を考えた方が賢明だと思う。 そもそもWM_CHARハンドラ実装が目的に適しているかどうかも含めて。
>>258 概ね
>>263-266 が書いてる通り。
ソースを追えば分ると思うけど、
CHAIN_MSG_MAP(CFrameWindowImpl<CMainFrame>)を入れた場合
最初にWM_SETFOCUSが飛んできた時点で
CFrameWindowImplBase::OnSetFocus()内でクライアントウィンドウ(View)に
フォーカスが行ってしまい、その後のWM_CHARをViewが受けてしまう。
CHAIN_MSG_MAP(CFrameWindowImpl<CMainFrame>)がない場合は
Viewにフォーカスが行かず、CMainFrameがWM_CHARを受けるので
とりあえずOnCharだけはちゃんと動く。(他の箇所で問題が出るはず)
CMainFrameでWM_CHARを捕まえたいなら
PreTranslateMessage()で処理すればいいのでは?
CMessageFilter::PreTranslateMessage()
CMessageLoop::AddMessageFilter()
あたりで
最近MSはWTL使いまくりだな。 Windows Desktop SearchとかWindows DefenderとかXP SP2とかVistaとか
MSからDLできる版だけでも、日本語対応してくれんかな。
274 :
>∀<)っ-○●◎- ◆Pu/ODYSSEY :2006/02/15(水) 02:09:51
7.xの日本語化パッチなら出てたはずだが。 てか、ディレクトリ別に作るだけだから自分で手入れるのも容易
275 :
>∀<)っ-○●◎- ◆Pu/ODYSSEY :2006/02/15(水) 02:22:12
>>267 こういう場合あらゆる渡し方を想定してオーバーライドするのが筋だと思うんだけどね
277 :
デフォルトの名無しさん :2006/02/15(水) 10:53:03
CSimpleMap、CSimpleArrayとかの内容をデバッガーのウォッチで確認するにはどうしたらいんですか? 記述の仕方で見れるようになりますか?
タブコントロールに具を貼り付けられないですか? ページの設定とかもダイアログエディタじゃ出来ないし
プロパティシートじゃだめか?
具?
っWindowsForms
>>279 具はダイアログとして下ごしらえしてタブコントーロールの皿に盛り付けるんだが。
具の下ごしらえはダイアログエディタで出来るし。
GetWindowTextうぜー
__propertyで書き換えればいいじゃない
APIはかえられんだろ。つーか、出来るのか __propertyで。
ちょっと質問があります。 WTLでOLEドラッグアンドドロップを 使う場合、IDropTarget等を直接使う方法しかないでしょうか? 何か使いやすくテンプレートにまとめた ものはないのでしょうか? よろしくお願いします。
>>284 MFCも一緒だから
文字列で返す関数がないのは
それなりの理由があるんだろ
__declspec propertyね
DDX_CONTROL_HANDLE と DDX_CONTROL はどう違うでありますですか? DDX_CONTROLを使うとビルドーエラーが出るであります。
エラー内容を書かないという事は、教えてもらう気はないということだな。
293 :
デフォルトの名無しさん :2006/02/21(火) 16:30:09
>>293 翔泳社に言え と思って見たら左の関連リンクのとこにあるじゃん
質問です CToolBarCtrl bar; bar.Create() なんてやるとインテリセンスはMFCのほうのCreate()を表示するんですが、 WTLのCreate()を表示させるにはどうしたらいいんでしょうか?
>>295 インテリセンスが賢くなるように、MS様にお願いする。
具体的にいうと、ヘッダもしっかりと読んでくれるように。
297 :
293 :2006/02/22(水) 10:28:34
>294 ほんとだ、あった。 スマソ
298 :
デフォルトの名無しさん :2006/02/22(水) 10:42:50
質問させてください。 ●レイヤーウインドウ用にWTLで次のようなダミーのウインドウクラスを作って class CDummyWindow : public CWindowImpl<CDummyWindow>{} ●次のような実装で表示させてます。 m_dummyWindow = new CDummyWindow() ; m_dummyWindow->CreateEx(parentHWnd ,&rect ,dwStyle ,dwExStyle ,NULL) ; m_dummyWindow->ShowWindow( SW_SHOW ) ; ●で、目的は達成出来てるんですが、最後消すときにアラートが出て消すこと出来ないでいます。取りあえずこんな感じ色々試してますが、 SendMessage( m_dummyWindow->m_hWnd , WM_CLOSE , NULL , NULL ) ; SendMessage( m_dummyWindow->m_hWnd , WM_DESTROY , NULL , NULL ) ; m_dummyWindow->DestroyWindow() ; delete m_dummyWindow ; ●最後のdeleteで下のCWindowImplRootのDestructorでアラートが出てしまいます。 virtual ~CWindowImplRoot() { #ifdef _DEBUG if(m_hWnd != NULL)// should be cleared in WindowProc { ATLTRACE(atlTraceWindowing, 0, _T("ERROR - Object deleted before window was destroyed\n")); ATLASSERT(FALSE); } #endif //_DEBUG } ●m_hWndがあることが問題なのはわかるんですけど、どういう手順で殺したらいんでしょうか?よろしくお願いします。
DestroyWindow()する前にWM_DESTROY送ったらいかんでしょ。
300 :
298 :2006/02/22(水) 13:08:47
>299 レスありがとうございます。取りあえずこんなふうにしてみましたけど、 m_dummyWindow->DestroyWindow() ; SendMessage( m_dummyWindow->m_hWnd , WM_DESTROY , NULL , NULL ) ; delete m_dummyWindow ; 今度は「SendMessage」でアラート出てしまいました。 引き続き何か情報ありましたらよろしくお願いします。 自分でも追いかけてみます。
APIのDestroyWindow()がWM_DESTROYを送るから、 自分でWM_DESTROYを送る必要は無いよ。
>>295 WTL::で始めてもだめか?
あとVC++の設定でインテリセンスが読み込むソースのある
フォルダを指定するところがあった気がする。
>>298 WM_CLOSEがDefWindowProcに届くとDestroyWindowが呼ばれる。
303 :
298 :2006/02/22(水) 17:02:48
レスありがとうございます。 まだ、可決に至ってないんですが、 そもそも、標準的なウインドウを閉じる処理はどういうふうに実装するべきなんでしょうか サンプルなど示していただける助かります、よろしくお願いします。
>>295 ソリューションのヘッダファイルにWTLってホルダ作って登録すれ
>>303 まさかWTLのウィザードも使ったことないとか?
>>295 .NET 2003であれば、
ツール→オプション→project
でソースディレクトリを設定すればOK
307 :
298 :2006/02/23(木) 15:50:15
ども、おせわになってます。 とりあえず、WM_CLOSEから順々にWM_DESTROY、WM_NCDESTROYと処理出来るようになり、Windowsを閉じることが出来たんですが、 今度は、その閉じたWindowにメッセージが送られてしまい0xfeeefeeeのアドレス実行しようとして例外が発生してしまいました。 具体的には、 CWindowImplBase::WindowProcから自前で実装したWindowクラスのBEGIN_MSG_MAPに処理が移ろうとしてるんですが、その実体は既に削除されているためにエラーしているようです。 メッセージの発信元を辿ると親のメッセージループのTranslateMessage(&m_msg);からメッセージが送られてるようでした。 WM_NCDESTROYのタイミングでメッセージループから送られないように実装すれば解決出来るかと思うんですが。。。 何方か情報ありましたらよろしくお願いします。
WM_CLOSE以下の処理を全部自前でやろうとしてる悪寒。
>>307 SendMessage(m_dummyWindow->m_hWnd, WM_CLOSE, NULL, NULL);
SendMessage(m_dummyWindow->m_hWnd, WM_DESTROY, NULL, NULL);
m_dummyWindow->DestroyWindow();
delete m_dummyWindow;
元のコードで上に相当する部分が今はどうなっているか書いてみろ。
そのまえになぜnewとdeleteを使っているのかと小(ry
GlobalAlloc,GlobalFree
>>310 newやdeleteは内部でmallocやfreeを使っていて、
mallocやfreeは内部でGlobalAlloc,GlobalFreeといったAPIを使っていると理解していたのですが違うのでしょうか?
どうでもいいレスに反応しないで、309を見直してくれ。 ちゅうか、BEGIN_MSG_MAP〜END_MSG_MAPを使ってるのなら、 WM_CLOSE以降のメッセージを、いちいちハンドルしなくていいから。
ハンドルじゃないや。いちいちSendMessageしなくていい、だった。
316 :
デフォルトの名無しさん :2006/02/24(金) 19:29:06
メモリー管理が煩わしいのでスマートポインターをの使用を考えているのですが、 自前のデータクラスを簡単にスマートポインター化するにはどうしたらいんですか? 出来ればclsidとか考えないで、newとdeleteだけをサクッと置き換えたいだけなんですけど、 良い方法ありますか?
ヒント:この世に存在するライブラリはATLだけではない。
CAutoPtrってことじゃなくて?
>>316 COMとは無関係ならboost::scoped_ptrやboost::shared_ptr類が一般的。
320 :
316 :2006/02/24(金) 20:53:47
レスありがとうございました。 CAutoPtr、boost::scoped_ptr、boost::shared_ptr 参考になりました。 とりあえず、CAutoPtr使ってみます。
恐竜惑星の再放送やれよ
322 :
デフォルトの名無しさん :2006/02/27(月) 02:01:08
?
323 :
デフォルトの名無しさん :2006/02/28(火) 10:59:07
VBやJScriptのようCOMを#importなどを使わずに動的に呼び出したいんですけど、例えば次のように、 VBの場合、 Set fso = CreateObject("Scripting.FileSystemObject") JScriptの場合、 fso = new ActiveXObject("Scripting.FileSystemObject"); 方法ご存じでしたらよろしくお願いします。
>323 スレ違い、APIスレイケ。
325 :
323 :2006/02/28(火) 19:54:02
>324 そうですか、逝ってきますぅ。
なぜここが過疎なのか垣間見たよ
327 :
sage :2006/03/01(水) 15:50:09
>>277 ものすごく亀レスだけど
自分で”autoexp.dat”を書き換えれば見られる。
ラベルの文字の色を変えたいのですが
変えれば良いじゃん
関数ぷりーず
SetTextColor
>>324 ATLを使って出来るなら教えてやればいいじゃないか
俺ならそういうときは#import使うなあ。
334 :
デフォルトの名無しさん :2006/03/02(木) 22:28:51
CoCreateInstance ?
>>334 ATL的にはCComObject::CreateInstance()だな
環境がLUNA稼動かどうやって調べますか
337 :
デフォルトの名無しさん :2006/03/03(金) 16:29:04
WTLHelperってやつ変数追加するのに10分くらいかかるんだけど
VC6.0でも使えるWTLHelperみたいなのは無いのかな?
340 :
デフォルトの名無しさん :2006/03/05(日) 16:22:20
VisualStudio.NET ATL/WTL で開発しています。 バイナリから、JScriptの関数を呼びだすコードを書いております。 関数の呼び出しはできるのですが、JScript上の関数に引数を渡さなければいけない 場合に、どのように渡せばよいかわからないことがあります。 現在はまっているのは、JscriptのArray型です。 SAFEARRAY で CComVariantに渡してみましたが、 JScript上の関数内で、Arrayのlengthプロパティを使用できませんと 言われてしまいます。 この場合は、どのように渡せばよいのでしょうか? また、 参考になるようなページはありませんでしょうか? JScriptの関数呼び出しには、Invokeを使用しています。 よろしくおねがいします。
343 :
341 :2006/03/06(月) 02:04:11
>>342 JScript側の関数は変更しないで対応したいのです。
344 :
デフォルトの名無しさん :2006/03/06(月) 08:13:34
2005にWTLHelperつかうと勝手に終了したりします
JScript の配列は、Array オブジェクトのインスタンスだから、 CreateInstance なんかで Array を作ってやればいけると思う。 ただ、GUID も ProgID も知らないから、そこら辺は自分で調べて。 ちょっと前まで、SAFEARRAY と、Array オブジェクトの相互変換を行う JSafeArray つー ActiveX があったけど、今はどうなっているやら。
うおおーんC#簡単だようおおーんチクショウが。
>>346 2003でマネージドC++触ってみたけど、.NET Frameworkよさげだね。
必要なところだけネイティブコードにできるし、ATL/WTLいらなくなりそう。
MFC/WTLで足りないものがあるように .NETもまた完璧ではない
あるものは使う ないものは作る それでいいじゃないの
unmanage になるわな
じゃあVBでもC#でも使えば。
>>347 2005のC++/CLIは見た目にも良くなっている。
へー、じゃあVBでもC#でも使えば。 API呼んでもunmanagedにならないんだ
べつにあげあしの取り合いがしたかったわけじゃないのです。 生意気言ってすみませんでした。
将来は.NET Framework = Windowsだからね ATL/WTLはそれまでの命
WTLで組んだソースが /clr 指定して問題なくコンパイルできたから、UI を WTL、ライブラリで .net framework 2.0 という組み合わせはいけると感じた
>>353 な り ま せ ん が な に か ?
ライブラリ設計としてはパラメタライズ可能なWTLの方が ずっと進歩的な感じがするが。
WTLはIDEのウィザードがなあ・・・せめてMFCレベルに。 ダイアログリソースからクラス作成したら固まった(´・ω・`)
親指シフトのように、すばらしいものが選ばれるとは限らないのが世の常で、 まあ結局は、WTLの作者様達がどこまでがんばってくれるか それ次第ってところだな 開発停止になったらそこで終わりだ。 WTLは好きだが、将来確実に消えそうな気がする。
361 :
・∀・)っ-○●◎- ◆Pu/ODYSSEY :2006/03/11(土) 00:52:43
viksoe先生ならきっとなんかしてくれる
もし開発停止になったらこのスレで引き受けられないか?
◆Pu/ODYSSEYを追い出さない限り無理な話だなw
364 :
・∀・)っ-○●◎- ◆Pu/ODYSSEY :2006/03/11(土) 00:59:36
WinFXのOOベースでマネージドなAPIのパフォーマンスが Win32 API並かそれ以上なら普通に乗り換えてそうな気もする。
なるわけねえじゃん
.net なssh端末がすごい遅くて使うのやめた事がある。 やっぱ全部それにしちゃうのは無理あるとオモタ。
WinFXに移れる場合と、移れない場合があるわけだから。 移れない場合は WTLを使い続ければ良いんじゃね?
今までも失敗を繰り返してるから五分五分だけど .netは失敗してWindowsDNA同様死語になって欲しいところ
今の.Netはぶっちゃけライブラリだから、死語になると言うことは JAVAのように添付されないってこったぞ?
MSがどうしたいのかが一番わからん
MSとしては、今後64ビットOSへの移行が本格化するにつれ、 開発者が32ビット用アプリと64ビット用アプリとを、別々に ビルドしなきゃならんような事態を回避したかったんだろう。 ところが.NET Frameworkのチューンナップも普及も、今ひとつ 進まんうちに64ビットOS時代が来そうなので、右往左往していると。
373 :
デフォルトの名無しさん :2006/03/13(月) 08:41:38
IntelとAMD64が一緒になった時点で.NETは要らない子 残るItaniumとPPCはもともと特注前提だしバイナリ互換不要
いや、そもそも64bitとかそういう問題じゃなくて MSはハードウェアアーキに依存しないシステムを用意したかったらしい。 つーかMSの中の人はPPCやAlphaも視野に随分前から入れてた。 x86に縛られるのが嫌だったみたいだな。 まぁ、カトラーがx86嫌いだしw
そりゃ、OSを作る側からすれば、誰でもハードに縛られない代物を目指すだろ。 ま、そういううわさ話が一人歩きしてるくせに、次のMSのOSではソケットもカーネルに押し込むようになっちまってたり。 イマイチ、出てる話は本当に思えないモノばかり。
WTLでディレクテックスは使えないの?
377 :
デフォルトの名無しさん :2006/03/15(水) 22:46:49
作成したCOMコンポーネントCLSIDを変えて出直したいと思ったんですけど、どのCLSIDを変更したらいんでしょうか? ????.idl ????.rgs あと、ソース中のCLSIDはuuidgen.exeで生成して、それぞれ整合性を合わせてみたんですけど、 実行するとコンポーネントをCoCreateInstanceさせようとしたとこで、エラーが出てしまいます。 どっかやり忘れてるとこありますか?
CComPtr<IDirect(ry
CSortListViewCtrlなんですが、カラムの幅・ソートするカラム・ソートの昇順/降順 の状態を保存する機構は提供されてないのでしょうか? 自分でシコシコ書くしかない?
>>377 CoCreateInstanceのHRESULTは何か?
381 :
デフォルトの名無しさん :2006/03/16(木) 13:48:03
380さん、レスありがとうございます。 早速戻り値調べてみました。 CComPtr<IUnknown> spUnknown; HRESULT result = spUnknown.CoCreateInstance(__uuidof(COMPONENT_NAME) ) ; ATLTRACE( "%lx\n" , result ) ; 結果はヘキサーで「80040154」でした。 普段戻り値をFAILEDマクロでエラーを判断してました。 何か情報ありましたらよろしくお願いします。
382 :
381 :2006/03/16(木) 14:19:19
80040154でググってみるとクラス/コンポーネントが登録登録されてない的なメッセージが見つかり 一応「regsvr32」で登録するも結果は変わらずでした。(エラー無いようでした)
383 :
デフォルトの名無しさん :2006/03/16(木) 16:20:25
>>377 全部変える。インタフェイスIDは変えなくてもいいけどわからないんなら変えとけ。
CFrameWindowImplを継承したクラスで CreateSimpleToolBarCtrl()でツールバーを作ってリバーに乗せようと思ったんだけど ↑は第二引数にツールバーのリソースIDを指定しなくちゃならない いろいろ試したけど、このリソースは16色、16*15サイズに限られるみたいで、それが嫌で 主導でCToolBarCtrl::Create()を使ってツールバー構築して、フルカラーのアイコンにして、 リバーに乗せて、ここまでは良かったのだけど、 親ウィンドウの大きさを変えると透過ツールバーだったのが透過しなくなったり、 ボタンが表示されなくなったり、良く分からないバグに悩まされて散々な目にあいました CreateSimpleToolBarCtrl()のコードを見て真似したつもりなのだけど… どこかで間違ってると思うんですがどこで間違ってるのかずっと分からないんです CreateSimpleToolBarCtrl()を使わないで24bitのアイコン使ったり 自由自在にツールバーを操作してるようなコード例ってどこかに無いでしょうか? 最後まで読んでくれた方ありがとう、長文すいませでしたorz
>>384 >CreateSimpleToolBarCtrl()のコードを見て真似したつもりなのだけど…
俺も昔これを真似して::Create()からこつこつ書いたものをコピペします。参考になれば幸いです。
下記のコードで使用しているアイコンのbmpは8bitで、黒の背景が勝手に透過されました。わけわからん。
m_navbar.Create(m_hWnd, 0, 0,
WS_CHILD|WS_VISIBLE|WS_CLIPCHILDREN|WS_CLIPSIBLINGS|
CCS_NODIVIDER|CCS_NORESIZE|CCS_NOPARENTALIGN|
TBSTYLE_TOOLTIPS);
m_navbar.ModifyStyle(0, TBSTYLE_FLAT);
m_navbar.SetButtonStructSize(); // AddButtonsの前に必ず呼び出す
m_navbar.SetButtonSize(CSize(19, 19)); // 数字は今のところ適当
m_navbar.SetBitmapSize(CSize(16, 16)); // 同上
HBITMAP bm = AtlLoadBitmapImage(
L"default.bmp", LR_LOADFROMFILE | LR_CREATEDIBSECTION);
m_navbar.AddBitmap(/* アイコンの個数 */, (HBITMAP)bm);
// ここからやっとAddButtons等でボタンを追加
AddSimpleReBarBand(m_navbar, 0, 1);
UIAddToolBar(m_navbar);
>>385 ありがとうございます。
自分の手元にあるコードと同じ感じです
SetButtonStructSizeを呼び出さないと駄目って辺りが、
MSDNのMFCの方のCToolBarCtrlの使い方には書いてなくて、嫌らしい感じです。
そこで数時間ハマりました。
BitMapの黒い背景はCImageListで抜き色をMask指定してやればいいと思うのですが、どんな方法があるのでしょうね。
MSDN見てもMFCとATLは微妙に違ったりして分かりにくいし、Windowsのプログラミングは難しいです
十数時間格闘して未だにツールバーが使いこなせません…orz
>>386 うーむ、難しいですね。
「ボタンが表示されない」という現象については、TBSTYLE_FLATスタイルの付け忘れではないでしょうか?
ただし、ModifyStyleによって後から付け足さないと.manifestによるxpスタイルを適用した時に
リバーの背景が真っ黒(真っ白?)になった経験があります。
「親ウィンドウの大きさを変えると〜」は起きた事がないですね・・・
>>384 でAtlLoadBitmapImageに指定するLR_CREATEDIBSECTIONは
24bit bmpだと真っ黒にされてしまうようでした。
8bit bmpで指定した場合は運良く黒が透過されていたようで、もう何がなんだかorz
>>387 >ModifyStyleによって後から付け足さないと
あー、それかもしれません。いつか聞いたことがあるような無いような…
私は最初からFLATスタイル付けてました。それだと駄目なんですね。
自宅に帰ったら試してみます。ありがとうございました。
ちなみにそれ、MSDNかどこかに書いてましたか…?
Bitmap周りの操作は本当に複雑で難しいですよね
私も現在進行形で苦労してて的確なアドバイスが出来ないです。すいません。
皆悩むところは同じですね…
>>388 ググって偶然出てきた感じでMSDNには書いてなかったような気もします。
xpスタイルを適用しない場合は、最初からでもTBSTYLE_FLATが付いていれば
こちらでは、ボタンは表示されてました。
それ以外には原因は思い当たらないです・・・
390 :
デフォルトの名無しさん :2006/03/18(土) 00:34:57
CAtlWinModuleにInit()が見つからないのですが
なるほど なんか気持ち悪いですな
C++のコンストラクタというものを活用してこなかった今までのほうがよっぽど気持ち悪い。
>>393 コンストラクタで必ず初期化する仕様だと、初期化するタイミングを選べなくなる。
ハァ?
初期化と代入の区別がついてないようだ
グローバルに置くものだと初期化のタイミングを制御しないといけないこともあるね。 あとはコンストラクタだと良くない事が起こった時に例外を使わざるをえなくなるのが、 昔はけっこうつらかったんじゃないかねえ。
398 :
http://www.vector.co.jp/soft/win95/util/se072729.html :2006/03/18(土) 18:57:55
TextSS のWindowsXP(Professional)64bit化おながいします もしくは64bitにネイティブ対応した置換ソフトないですか?
コンストラクタ内例外を処理するの避けてたんだろ。 今はちゃんと規約化されてコンパイラに実装されてるから、安心して使えようになったと。
VC++2003 ATL&WTLで組んでます。 atlsync.hにCEvent等の同期オブジェクトクラスがあるのですが ATLの名前空間にあるのに、MSDNにはMFCのCEventしか載ってません。 これらは使っていいのでしょうか?
おまいはだめ(笑)
402 :
デフォルトの名無しさん :2006/03/21(火) 01:02:24
>>401 回答に誠意が感じられないわけだが
はい次の回答者どうぞ
中身見て自分の目的に合ってれば使えばいいじゃん。
ドキュメント化されてないってことは、将来変更・削除される可能性があるから 長期間保守・拡張するつもりなら使うべきではないだろうな。
俺ならCHandleを使う
一方ロシアは鉛筆を使った。
なんてこったパンナコッタ
408 :
前スレ853 :2006/03/32(土) 21:40:07
みなさんいつもレスありがとうございます。 CreateFileMoniker()で作成されるIMonikerオブジェクトは、BindToObjectでファイル内にあるOLE情報を読み取って対応するサーバを起動するようなのですが、このような情報を含むファイルを作成するにはどうしたらよいのでしょうか? というか、これってどういう仕組みなんですか?
409 :
デフォルトの名無しさん :2006/04/02(日) 19:57:51
メッセージハンドラ付きのリストビュークラスを作りたいのだけど、 CWindowImplだと、クラス名(WC_LISTVIEW)を受け付けてくれなくて参っちまってます。上手い手ないっすかね。
>>409 CSortListViewCtrlを参考にしてみれば?
>>410 サンクスです、真似してCListViewCtrl::GetWndClassName()で上手く行きました。
…というか、うにこーど考慮してたのが駄目だったみたいっす、すんません
>>409 こんな感じでどうや?
class CMyListViewCtrl : public CWindowImpl<CMyListViewCtrl, CListViewCtrl>
{
DECLARE_WND_SUPERCLASS(NULL, CListViewCtrl::GetWndClassName())
public:
BEGIN_MSG_MAP(CMyListViewCtrl)
CHAIN_MSG_MAP(__super)
END_MSG_MAP()
}
413 :
412 :2006/04/02(日) 22:18:59
チッ 一足遅かった w
415 :
デフォルトの名無しさん :2006/04/05(水) 00:25:13
専用の派生クラスを作らずに IDD〜のIDから直接ダイアログを召還する方法はありますか?
>>415 WinAPIのDialogBoxやCreateDialogなどではだめですか?
タブコントロールにコードでFORMVIEW貼り付けています。 XPだとタブの背景が白色ですが、FORMVIEWは灰色です。 WM_CTLCOLORDLGで白に塗ると2000で起動した場合 タブの背景が灰色なので浮くです。
へぇ〜
なるほど浮くのねぇ
421 :
デフォルトの名無しさん :2006/04/05(水) 21:24:52
もちみにはいとかをさくじょ
422 :
デフォルトの名無しさん :2006/04/05(水) 22:03:12
uxtheme.dll
423 :
デフォルトの名無しさん :2006/04/05(水) 23:45:58
XPなら自分で白に塗る 2000ならスキップ
>>10 さん同様、スプリッタに乗せたタブの背景が
VisualStyle適用時にうまく描画されない現象で困っています。
atlsplit.hを直接編集し、WM_ERASEBKGNDをハンドルしないようにして
背景ブラシをCOLOR_WINDOWからCOLOR_3DFACEに変更することで
一応問題は解決するのですが、ソースコードを直接いじるのは少し抵抗があります。
ほかに解決策などご存知の方はいっしゃいませんか?(WTL 7.5build 5333)
派生させればいいじゃない
WM_PRINTCLIENTだったかしら
CComModuleのインスタンスの名前ってどうして _Moduleじゃないといけないんですか?
CWindowImplあたりがごにょこにょするからじゃないか
Grep
PropertySheetが白くなるのはどうしてですか?
431 :
デフォルトの名無しさん :2006/04/13(木) 21:47:51
IWebBrowser2を使用したカスタムブラウザとHTMLドキュメント中のJavascriptと通信をしようとしています。 C++側からJavascriptのファンクションを叩くのは、IHTMLWindow2のexecScriptで出来たんですが、 JavascriptからC++のメソッドを叩く事が出来ずに困っています。 何方か情報ありましたら、よろしくお願いします。
COMとしてIDispatchを公開とか
IDocHostUIHandlerのGetExternalは?
434 :
デフォルトの名無しさん :2006/04/16(日) 11:40:01
質問です。すごく初歩的な段階でつまづいています。 VisualC++6.0で、MFCダイアログベースでプロジェクトを作成しています。 「挿入」→「ATLオブジェクトの新規作成」を選び、 「MFCプロジェクトにATLのサポートを追加してもよろしいですか?」→「はい」を選び、 stdafx.h に 以下の記述が追加されました。 #define _ATL_APARTMENT_THREADED #include <atlbase.h> class CSample001Module : public CComModule { //略 }; extern CSample001Module _Module; #include <atlcom.h> この時点でビルドはできます。次に、stdafx.h に #include <atlapp.h> を追加したのですが、以下のコンパイルエラーがでます。 C:\Sample001\Sample001Dlg.cpp(101) : error C2872: 'CMenu' : あいまいなシンボルです。 C:\Sample001\Sample001Dlg.cpp(144) : error C2872: 'CPaintDC' : あいまいなシンボルです。 これを解決するにはどうすればいいんでしょうか?
>>434 ATLのヘッダをインクルードする前に#define _ATL_NO_AUTOMATIC_NAMESPACEとしておくとどう?
436 :
434 :2006/04/16(日) 12:36:45
>>435 おおおおありがとうです!
MFCと同じ名前のクラスだから、おそらくそういう問題だろうなと思ってはいました。
#define _WTL_NO_AUTOMATIC_NAMESPACE
の方でうまくいきましたが、ググるヒント戴いたので発見できました。感謝です!
437 :
434 :2006/04/16(日) 15:26:17
しかし・・・MFCプロジェクトでWTLを使うって、あんまりやらないんでしょうか? 解説サイトが少ないし、コンパイルエラーがたくさんです・・・
438 :
デフォルトの名無しさん :2006/04/16(日) 15:43:10
MFC/WTLは守備範囲が似通ってるんで、WTL/ATL、MFC/ATLに比べると あまり一般的でないような気もします。
MFC使うならWTL使う必要なんて無いだろうと小一(ry
440 :
434 :2006/04/16(日) 17:35:04
やっぱりそうなんですね。薄々は…。 たった1個所、とある機能の実装でWTLであればすぐできるものがあって、 上からWTL使ってやってねと言われていました。しかしもうこれはMFCで やることを提案して押し通します。
441 :
デフォルトの名無しさん :2006/04/16(日) 18:18:17
CPaneContainerか、CCommandBarあたり?
442 :
デフォルトの名無しさん :2006/04/17(月) 11:09:57
俺はコマンドバーを使いたいがためにWTLに移った
ダイアログリサイズのこともたまには思い出してあげてください
444 :
441 :2006/04/17(月) 22:31:15
>>443 そういえば、以前勤めていた会社でダイアログを表示するCOM(ATLベース)を
組んだ際に、WTLのダイアログリサイズにお世話になりました。
ちなみに、VMWare Wokstationでは、どうもWTLを使わずに、
ATLでCPaneContainer、CCommandBar相当のものが
実装されてるっぽいんですが(Spy++で確認する限り)、
どなたか詳細か方法をご存知ないですか?
独自実装なんじゃないの?
446 :
・∀・)っ-○●◎ ◆Pu/ODYSSEY :2006/04/17(月) 23:26:58
>>444 WTLのソース読めばいいじゃんwww
ウィンドウクラスネームなら派生先で好き勝手変えられるし
447 :
デフォルトの名無しさん :2006/04/17(月) 23:46:47
WTL って SDK直で書くよりいいことあるの?
448 :
・∀・)っ-○●◎ ◆Pu/ODYSSEY :2006/04/17(月) 23:55:16
「STLってコンテナやソート自前で実装するよりいいことあるの?」
アタマワルソウ
>>447 大雑把にいってCとC++の違い。
API呼び出しを包んだライブラリは色々あるけど、
WTLはMFCの次にメジャーで共通点も多い。
451 :
441,444 :2006/04/18(火) 06:31:14
基本的にオープンソースを信頼しない顧客も多いからね。 基底になってるATLに関してはMSの保障の範囲内。 どのみち「ATLから派生したクラス群」なのは間違いないし、 ウィンドウクラス名を書き換えてWTL使ってることをわからなくして 利用するだけの理由はないともいえない罠。 同じコミュニティベースのライブラリでもBoostプロジェクトには金出して 人材送り込み、宣伝文句にも使われてるのに、WTLはMS公式に 大々的に取り上げられるされることもなくコミュニティに 丸投げ状態になったからな。 WTLがMFCの次にメジャーってのはちと疑問符。 でも、MSが投げ気味な技術・ライブラリでここまでユーザーに 支持されてるものはほかに無いかもwww
>>452 Microsoft が「保障」するのって、Windows OS の特許関係の問題に
ついてだけであって、ATL に酷いバグがあって損害が発生したりした
ときには何もしてくれないんじゃない?
実際一頃ATLのバグのせいで2バイト文字を含むパスのディレクトリに
はインストールできないアプリとかあったけど、MSが何か保障したり
補償したりという話は聞かないし。
WTL があまりメジャーになっていないように見えるのは、MFCに比べて
敷居が高いのとドキュメントが少ないからだと思うな。
保証っていうか、サポートってことじゃない?
knowledge base に不具合解説の記事が載るか載らないか あたりが境目じゃね?>サポート
456 :
・∀・)っ-○●◎ ◆Pu/ODYSSEY :2006/04/18(火) 21:15:12
マジレス WTLは「ATL Power Toys」
457 :
451 :2006/04/18(火) 21:52:51
ライブラリ開発チーム(MS、OpenSource含む)のモチベーション的には
ATL Server >> MFC > ATL >> WTL なような気がします。
(VS2005の各エディションで、ATL Serverのみ差別化を図っているようなんで…)
WTLは、ATLを使っていた人が戸惑わないように作ってあるとのことなんで、
一時でてた、WTLのATL非依存化の話も、ないんだろうなぁ〜と。
http://decster.blog.edu.cn/user1/3191/archives/2005/239691.shtml ところで、話し変わって質問なんですが、Donutの元ソース(CodeProject内のもの)の
WTL拡張部分って商用に使っても問題ないんでしょうか?
あと、DonutP系列のソース公開サイトの場所をどなたかご存知ないでしょうか?
458 :
・∀・)っ-○●◎ ◆Pu/ODYSSEY :2006/04/18(火) 22:06:17
Donut PはWeb Archiveにソース丸ごとあったけど、7.xじゃコンパイルとおらなかった気が。 Donut系オープンソースブラウザはunDonutが最新じゃないかなと。
459 :
457 :2006/04/18(火) 22:57:30
スクラップ?
461 :
459 :2006/04/19(水) 17:14:19
僕の肛門もスクラップからの再作成を試みてるようです! 正直、少しわくわくします><
463 :
461 :2006/04/19(水) 20:58:24
Dounutは肛門に優しいよな。
アナルプラグで拡張だなんて!
467 :
デフォルトの名無しさん :2006/04/22(土) 18:48:59
Visual C++ 6 ではコンパイルできていたプログラムなんですが、 Visual C++ 2005 では atlapp.h が無いということでコンパイルできません。 移植するにはどこから手を付ければよいでしょうか?
468 :
467 :2006/04/22(土) 18:54:11
一応 Visual C++ 7.1 (2003) も持っているんですが、 それでも atlapp.h は無いようです。
>>468 atlapp.h は WTL の一部。
470 :
467 :2006/04/22(土) 19:54:08
>>469 ありがとうございました。
WTL 7.5 で行けそうなフインキ(←なぜか変換できない)なんですが、
atlres.h がみつかりません。WTL のバージョン違いでしょうか?
それはATLでは?
>>470 それも WTL の一部。7.5にも入ってるよ。
>>470 >雰囲気(フンイキ)
パスが通ってないというオチじゃないよね
474 :
467 :2006/04/22(土) 20:56:24
>>473 リソースファイルの先頭で
//Microsoft Developer Studio generated resource script.
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
// Generated from the TEXTINCLUDE 2 resource.
#include "atlres.h"
となってまして、ここでインクルードできません。
リソースエディタで開こうとしてもこれがインクルードできず
怒られてしまいます。元々は VC++6 で作られていたコードを
VC++8 で開いています。
475 :
467 :2006/04/22(土) 20:59:46
>>473 すんません、そうでした・・・・
リソースコンパイラのインクルードパスは
コンパイラとは別でした・・・orz
まじれすかっこわる・・・
今時このネタも寒気がするけどなw
ふつうのCWindowImplから作ったウインドーで OnInitDialogみたいに自分自身の中でサイズとか見た目を改造するには どのメッセージ、又は関数を使いますか?
よく意味がわからないけど、WTLのクラスをインスタンス化して作ったウィンドウは 皆ウィンドウハンドルのm_hWndを保持しているから、それに対してAPIを呼ぶか SetClassLongやSetWindowPosでどうですか
WM_CREATEじゃね?
482 :
デフォルトの名無しさん :2006/04/27(木) 17:22:53
ない
WM_CREATEで自分に自前のイベントポストしといて、それで何かやったりもするよ。
484 :
・∀・)っ-○●◎ ◆Pu/ODYSSEY :2006/04/27(木) 17:25:59
>>479 初期化ならWM_CREATEイベントつかまえてOnCreateなりのメンバ関数
作ればいいと思うよ。
あと、CDialogResizeは実はダイアログ以外にも利用可能だから便利。
てかダイアログリソースなしでダイアログ窓作る場合もWM_CREATEな。
485 :
デフォルトの名無しさん :2006/04/27(木) 17:26:20
てか、WTLにPreCreateWindowってあるの?
ないね。WinMain直接叩けるから前処理はそこでやる。
487 :
デフォルトの名無しさん :2006/04/27(木) 17:27:29
HWND Create(〜) { HWND hWnd = CWindowImpl::Create(〜); いろいろ return hWnd; }
488 :
デフォルトの名無しさん :2006/04/27(木) 17:34:21
CWindowImpl::Createの引数にサイズとスタイル指定すればいいだけなんじゃ… て、質問の意味がよく分からん。
489 :
479 :2006/04/27(木) 17:38:46
LPCREATESTRUCTで出来るみたいでした どうも
491 :
デフォルトの名無しさん :2006/04/27(木) 17:47:34
俺も知らんかった…。 てか、AppWizardでWTL用のメッセージマクロ(DDXも含む)を出せないもんかね。
そんなときこそWTLHelper
493 :
491 :2006/04/27(木) 20:00:28
これが使いたいがために2003未だに使ってる
2005でも使えるよ 時たま落ちるけどorz
2005って何版? Exp版で出来んかったんだが…
そりゃ無理 最低Standard
そうか… サンクス
499 :
デフォルトの名無しさん :2006/04/28(金) 15:08:15
こんな感じで処理を実装してるんですが、処理がモーダルのようになってしまい、 下記の実装で作られたウインドを閉じないと他のウインドの処理が進まなくなって困ってます。 class CMyWindow : public CComPtr<CMyWindow> , public CComObjectRootEx<CComSingleThreadModel>, public CWindowImpl<CMyWindow,CWindow> { 色々実装 } ところが、これを、 class CMyWindow : public CComPtr<CMyWindow> , public CComObjectRootEx<CComSingleThreadModel>, public CWindowImpl<CMyWindow,CAxWindow>//CWindowからCAxWindowに変えた { 色々実装 } とすると、正しく処理される事は分かったんですが、このウインドではActiveXを 使用するわけではないのでCAxWindowは使いたく無いんですが、どうするのが正解なんでしょうか? 以上です、情報ありましたらよろしくお願いします。
呼び出し元でCreateの引数にParentのウィンドウハンドルを指定してるか、 メッセージループを回しているとかでは?
501 :
499 :2006/04/28(金) 16:45:40
>500 レスありがとうございます。 >呼び出し元でCreateの引数にParentのウィンドウハンドルを指定してるか、 >メッセージループを回しているとかでは? 早速親ウインドウハンドルをNULLにしてみましたが状況は変わりありませんでした、 また、メッセージ処理については、BEGIN_MSG_MAPでマクロで処理していますが、実装はありません。 以上です、また何か情報ありましたらよろしくお願いします。
2005ExpressではWTLやATLは使えないんですね すなおに6.0使えってことか
503 :
500 :2006/04/28(金) 17:37:15
>>501 てか、良く見ると public CComPtr<CMyWindow>がおかしひ気が…。
普通にAppWizardでシンプルオブジェクト追加してから、CWindowImplを
追加した方が良いのではないかと…。
---
class ATL_NO_VTABLE CMyWindow :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMyWindow, &CLSID_MyWindow>,
public IDispatchImpl<IMyWindow, &IID_IMyWindow, &LIBID_XXXLib>,
public CWindowImpl<CMyWindow, CWindow>
---
class CMainWindow : public CWindowImpl<CMainWindow> {略} で CMainWindow wndMain; if(wndMain.Create(NULL) == NULL) return -1; だと失敗します。 CMainWindow wndMain; if(wndMain.Create(NULL, CWindow::rcDefault, TEXT("そふと"), WS_CAPTION) == NULL) return -1; だと成功します。 どうやら dwStyleにWS_CAPTIONが無いとウインドウは作れないみたいです。 どうすればいいですか?
ASPで使用する、SAFEARRAYを返すCOMを作ってるのですが、 その返した配列をまたCOMへ渡したときに if(data->pvarVal->vt != (VT_VARIANT | VT_BYREF | VT_ARRAY)){ return -1; } ここで引っかかってしまいます。 返ってきた配列を他の配列にコピーし、 それをCOMに渡すと 正常に動作します。 SAFEARRAYの作り方が間違ってるのでしょうか? コードは以下に載せます。
と思ったのですが書ききれませんでした。改行が多くてエラーです。 その配列を、ASPのVBscript内ならば、普通にアクセスできるのです。 再度COMへ渡すとダメになりました。 それとも、帰ってくる配列もそれなりにサイズを確保しておかないといけないのでしょうか。
なんとなくわかりました。 [out,retval] SAFEARRAY ** pvaVal で返さないといけないんですかね。 [out,retval] VARIANT * pvaVal ってしてたのが問題みたいです。
とおもったけどVBscriptはSAFEARRAYを扱えませんね。 完全ハマりました。 コピーして回避することにします。それでは。
>>508 VBscriptがSAFEARRAYを使えない無いぞ。
pparrayの中にデータが渡っているぞ。
うげっ、 false VBscriptがSAFEARRAYを使えない無いぞ。 true VBscriptもSAFEARRAYを使っているそ゜。
うげっ、また間違えた pparrayの中にデータが渡っているぞ。 ->VBscriptからSAFEARRAYつーかバリアントでデータ貰う時。 pparrayの中にデータを突っ込め。 ->>VBscriptにデータを渡す時。
それでもATLのバージョンは新しいものではないけどな。
IActiveScriptのAddNamedItemでイベント付きオブジェクトを設定したんですが、 JScriptではイベント捕捉(x::OnClick)できて、VBScriptでは認識(x_OnClick)できません。 なぜでしょうか?
515 :
514 :2006/04/29(土) 21:05:53
失礼しました、自己解決しました。IActiveScript::SetScriptState(SCRIPTSTATE_CONNECTED)を 複数回呼び出してしまったのが間違いだったようです…orz
516 :
デフォルトの名無しさん :2006/04/30(日) 01:15:12
WTLプロジェクトを作りプログラムを有る程度作成したあとに、あとからCOMサーバーにしたくなった時の質問です。 同名のプロジェクトをつくって、差分をプロジェクトにコピペだけでokですか? それとも、新しくつくったプロジェクトに新たにくっつけた方が楽なのでしょうか?
何とも答えようがない質問ばかりだなおい
518 :
デフォルトの名無しさん :2006/05/01(月) 11:14:52
WTL版のBCGControl相当で、さらにフリーのやつってないですよね。 VS2005のドッキング機能を実現したいんですが…。
519 :
デフォルトの名無しさん :2006/05/01(月) 14:28:30
ちょっと、キョン!当然あたしたちのCD予約したわよね? ――えっ、まだしてないの?あんた、SOS団の一員としての自覚あるの? ――何、「曲のほうは?」って?それなら心配いらないわ! なんったって、団長のあたしが保証するんだから間違いないわ! 一度聴いたら、ぜ〜〜ったい踊りたくなるんだから! 涼宮ハルヒの憂鬱ED「ハレ晴レユカイ」5月10日発売! 絶対買いなさい!!
>>511 ありがとうございます。
でもダメでした。BASP21の作者さんのコード
使ってるんですが、やっぱりCOM再突入でエラーです。
きっと、WinCEだからです。
そう解釈することにします。
522 :
518 :2006/05/01(月) 15:53:31
がんばれ
524 :
522 :2006/05/01(月) 22:25:45
525 :
デフォルトの名無しさん :2006/05/09(火) 18:04:20
MFCだとダイアログリソースが1つのrcファイルに入ってしまいますが、 WTLだとどうなりますか? 1つのダイアログがプロジェクト情報と独立してて、 複数プロジェクトでダイアログを使える、VC++6用のライブラリを探してます。 ただ、ダイアログクラスをコード派生するのじゃなく、 リソースエディタみたいなもので編集したいです。
>>525 > ただ、ダイアログクラスをコード派生するのじゃなく、
> リソースエディタみたいなもので編集したいです
できねえよ
MFCにはやられたなw
じゃあ、WTLのレイアウトってどうやるんでしょう? ソース書いて実行させて、みたいな? 効率悪そう。
う?リソースは普通にリソースエディタで作ってるけど・・・?
あ、リソースエディタベースなんだ。 VC++のIDEがリソースファイルをイジルんじゃなくて、 自分でリソースファイル構成も自由に出来るから、 ダイアログ1つに1リソースファイルってのも出来る?
別にどうとでも好きなようにできると思うけど。 MFCとかWTLとかのフレームワークはリソースを利用することができるけど、 リソースの仕組み自体はそれらとは独立してるよね?
>MFC >リソースの仕組み自体はそれらとは独立してるよね? ここまで逝っちゃうと、ウソつけ、となっちゃうよ。 MFCでポトペタすると、固定ファイル名のresource.hと1つのrcファイルを無条件に編集される。 プロジェクトからダイアログが全く独立してない。
そりゃなんとかWizardにおまかせすりゃそうなるだろうけど、 それはWizardがそういう使い方をしてるってだけじゃないの? 別にWizard使わなくてもMFCは使えるじゃん。 つか、ある程度の規模になったらWizardなんかうざったくて使えないだろ。 とか言いつつ、漏れはWindows専門というわけではないんで、 もしかしたら使い方が間違ってるのかもしれない。
共通のリソースファイルを1つ用意して、 その中に該当ダイアログリソースを追加し、 プロジェクトごとにそのリソースファイルからダイアログリソースをコピーして使えば? これだとMFCとかWTLとか関係ないでしょ。
コピペコーディングはダメだっちゅーに。
っていうか、DLLにリソース入れれば?
複数プロジェクトのリソースをDLLに入れようにも上手く入らんでしょ。
そもそも525がやりたいことがいまいち理解できん。 コモンコントロールにしたいなら、コードごとDLLにするべきだと思うが。
>>538 525は放置しておくほうが良いよ
533のスレで同じことをやってたヤツだから
540 :
525 :2006/05/11(木) 08:39:17
>>539 うるせー、回答が得られないから放置したのはこっちだ。
こっちは明確にやりたい事があってMFCとWTLでは無理なのが明確になっただけ。
他のウィンドウライブラリ探すだけさ。
昨日も書いたけど、MFCやらWTLやらのフレームワークの問題じゃない。
VCのIDEの中だけでやってる分にはどんなライブラリ使っても一緒だと思うけど。
>>533 のリンク先は読んだの?
別個のリソースファイルに書いといて、インクルードして使ったらダメなの?
>>540 キエロよ
> こっちは明確にやりたい事があって
オマエの脳内だけで明確なんだよ、無知でバカなだけなんだからキエロ
>>540 キエロよ
> こっちは明確にやりたい事があって
オマエの脳内だけで明確なんだよ、無知でバカなだけなんだからキエロ
CCheckListViewCtrlとCSortListViewの両方の機能を持った ListViewを使用するための一番賢い方法はなんでしょうか?
コピーペースト
だろうなぁ。
547 :
544 :2006/05/14(日) 13:02:14
やっぱりそうですか…。 そう思ってCCheckListViewCtrlを継承したクラスの中に CSortCheckListViewImplの中身をコピーペーストしたらうまく動いています。 これってライセンス的にはどうなるんですかね?
WTLヘッダ群とファイルが分かれてたら、Donutとかもそうだし問題ないんでは…。 CPLの中をちゃんと読んだことないんで断言はできんが…。
改造して作ったCSortChechListViewCrtlImpl<>を公開 てか、ライセンス問題発生せんだろ。そのクラスで金取るわけでもあるまいし。 むしろ、オーナーデータにしてもちゃんとチェックボックスの描画されるCCheckListViewCtrlを
550 :
デフォルトの名無しさん :2006/05/14(日) 22:10:40
能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`) 能登かわいいよ能登(;´Д`)
>>547 両方から継承したら駄目?
それとも頓珍漢なことを言っている?<俺
552 :
デフォルトの名無しさん :2006/05/16(火) 08:42:47
553 :
デフォルトの名無しさん :2006/05/16(火) 10:13:18
>>551 それは、いわゆるダイアモンド継承(多重継承)というやつでは…。
554 :
デフォルトの名無しさん :2006/05/16(火) 13:45:21
ATLのIDLインターフェースで、CHAR型ってサポートされてるんでしょうか? 他の言語(C#等)の相互運用性(Interop)の観点からアドバイス頂けますと幸いです。
文字列型であるBSTRでいいと思うが、 -127〜+127の範囲の数値型がほしいわけ?
556 :
554 :2006/05/16(火) 20:27:37
>>555 はい、-127〜+127の範囲の数値型が取れればと思ってます。
MIDL Predefined and Base Types によれば、8bitのデータ型は、 byte, char, small が存在する
558 :
556 :2006/05/16(火) 21:43:10
なんかWTLAppWizardが変だと思ったら JavascriptONにしないといけないのかい
WTLってもう更新しないのかな。 VS2005だとウィザードで警告が出る問題だけでも、対応してほしいのに。
>>547 俺ならこうする
template<class T1, class T2>
struct MyWinTraitsOR : T1, T2
{
static DWORD GetWndStyle(DWORD dwStyle) {
return T1::GetWndStyle(dwStyle) | T2::GetWndStyle(dwStyle);
}
static DWORD GetWndExStyle(DWORD dwStyle) {
return T1::GetWndExStyle(dwStyle) | T2::GetWndExStyle(dwStyle);
}
};
template<class T, class TBase = WTL::CListViewCtrl, class TWinTraits = MyWinTraitsOR<WTL::CSortListViewCtrlTraits, WTL::CCheckListViewCtrlTraits> >
class ATL_NO_VTABLE CSortCheckListViewImpl : public WTL::CCheckListViewCtrlImpl<T, TBase, TWinTraits>, public WTL::CSortListViewImpl<T>
{
typedef CSortCheckListViewImpl<T, TBase, TWinTraits> thisClass;
typedef WTL::CCheckListViewCtrlImpl<T, TBase, TWinTraits> baseClass;
public:
DECLARE_WND_SUPERCLASS(NULL, TBase::GetWndClassName())
bool SortItems(int iCol, bool bDescending = false)
{
return WTL::CSortListViewImpl<T>::DoSortItems(iCol, bDescending);
}
BEGIN_MSG_MAP(thisClass)
CHAIN_MSG_MAP(baseClass)
CHAIN_MSG_MAP(CSortListViewImpl<T>)
END_MSG_MAP()
};
仮想リストビューでは使わない(使えない)組み合わせですけどな。 データモデルにはSTLのvector使ってソートはstable_sortで実装するのが好み。
新しいのキター! Expressでのウィザードのインストールがラクになった
564 :
デフォルトの名無しさん :2006/05/18(木) 10:03:10
Release Name: WTL 8.0.6137 Changes: Bug fixes and App Wizard setup for VS2005 Express
AppWizardに</OBJECT>タグが入れたら警告無くなるのね
566 :
デフォルトの名無しさん :2006/05/18(木) 12:10:33
杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー 杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏 ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏 杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー 杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏 ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏 杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー 杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏 ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏 杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー 杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏 ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏 杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー 杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏 ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏 杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー 杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏 ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏 杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー 杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏 ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏
568 :
デフォルトの名無しさん :2006/05/19(金) 00:29:17
567の絵見てたらかゆくなった
思わず拡張子を確認しちまった
570 :
デフォルトの名無しさん :2006/05/19(金) 23:38:01
>>564 隣家にGdi32.lib 指定しないとコンパイルできなかったよ。(Exp)
Express+WTLなかなか使えるなこれ リソースエディタがないのが難点だが
572 :
デフォルトの名無しさん :2006/05/20(土) 22:06:19
フリーのやつがあるじゃん
Expressだけでやろうとするとリソースエディタとハンドラの追加がネックだわな。 アドイン使えないしね。外部ツールなら使えるが...
enterprise 持ってるけどあんまり Wizadもリソースエディタも使わんなぁ・・・
なんですと
576 :
デフォルトの名無しさん :2006/05/30(火) 00:50:28
VC8でCOMを勉強しようと思ったらOLE Viewがないぞ
PlatformSDKに入ってるぞ
AddSimpleReBarBand()でCTrackBarCtrlを追加しようとすると ATLASSERT()で蹴られるんだけどなんとかならないでしょうか? WTL Version 7.5 (build 5333)
IsWindowでひっかかるなら 先にちゃんとCTrackBarCtrlはCreateされてるの? ほかならわかんない
580 :
578 :2006/05/31(水) 00:56:15
すいません自己解決しました。 AddSimpleReBarBand()の前にSetLineSize(0)を 呼べばいいみたいです。お騒がせしました。
581 :
・∀・)っ-○◎● ◆toBASh.... :2006/06/05(月) 22:54:47
atlstr.hってATL7.x以降じゃないと使えない? もしくは代替手段茄子? VS2003で書いてたプログラムを2005Express+WTLでもビルドできるように書き換えやってるんだけど
582 :
デフォルトの名無しさん :2006/06/05(月) 23:12:41
J. Machin の公式で円周率を 2037 桁計算したりもしてる > ENIAC 意外に使える奴。
584 :
583 :2006/06/05(月) 23:19:02
誤爆スマソ orz..
>>581 CString目当てならWTLの<atlmisc.h>にWTL::CStringがある。
587 :
・∀・)っ-○◎● ◆toBASh.... :2006/06/05(月) 23:42:59
>>586 とりあえずアレはGetWindowTextやSetWindowTextで使えないんで個人的に×
ATL::CString(A/W)のいいところはUNICODE⇔ANSIの変換が簡単にできることなんだな
>GetWindowTextやSetWindowTextで使えない 意味不明
, -‐−-、 ヽ∧∧∧ // | . /////_ハ ヽ< 釣れた!> ハ レ//j け ,fjlリ / ∨∨V ヽ h. ゚l; ハイイト、"ヮノハ // |::: j 。 /⌒ヽヾ'リ、 // ヾ、≦ ' . { j`ー' ハ // ヽ∧∧∧∧∧∧∨/ k〜'l レヘ. ,r'ス < 初めてなのに > | ヽ \ ト、 ヽ-kヾソ < 釣れちゃった!> . l \ `ー‐ゝ-〈/´ / ∨∨∨∨∨∨ヽ l 生団子 `ー-、___ノ ハ ´ ̄` 〈/‐-、
590 :
・∀・)っ-○◎● ◆toBASh.... :2006/06/06(火) 00:14:16
>>588 コンパイルエラー出るはずだけど?
ためしにCWindow::GetWindowTextの引数に指定してみて
ATL::CStringならOK。WTL::CStringだとアウト
GetBufferとか知らない世代?
団子は一級釣師 みんな釣られすぎ
593 :
・∀・)っ-○◎● ◆toBASh.... :2006/06/06(火) 00:42:27
まぁどのみちWTL::CStringは使い道がない罠
MFCなら、(LPCTSTR)XXXで行けそだけど、WTL3.0はダメ?
595 :
・∀・)っ-○◎● ◆toBASh.... :2006/06/06(火) 00:49:42
最悪#ifdefで切り分けてUNICODE/ANSI変換をAPI使ってやるしかないかと。。。 WTL使うなら面倒でもStandard以上はないと不便ですな。 というかATL::CStringが便利すぎるんですよ。ATL Serverも無いと寂しいし。
MSがATLもフリーにしてくれれば解決
operator LPCTSTRがないのが問題だな。誰か作れ。
atlmisc.h(754):operator LPCTSTR() const; // as a C string
atlmisc.c(739):CString(LPCSTR lpsz); atlmisc.c(740):CString(LPCWSTR lpsz);
600 :
・∀・)っ-○◎● ◆toBASh.... :2006/06/06(火) 02:42:43
ん?なんとかなりそうかも
釣られちゃダメダヨー
602 :
デフォルトの名無しさん :2006/06/06(火) 16:53:43
,. -一  ̄ ̄` - 、
/ \
|====ミx,、、_ \
、__>ァ¬一ァ―r¬ミi、 \ オヤシロさまはスレの守り神さま。
 ̄7'/'/ //// ,ハヘ.,ニヽ、 } …板のルールを守らずに糞スレを立てる人を
// / /:,'/,' ' i┴`≠| i }`T''トrイ 絶対に許さない。 レナはちゃんと良スレを立てた!
//i , ; !:!:| !:i | | |,ハ. l. l. }::| でも
>>1 は糞スレしか立てなかった。 だから!
| i {. { l | トi;、l_ト、 | _,. ィく!ノi. }:| :! l :| オヤシロさまの祟りにあってしまったに違いないのッ!!
N.\ヽ.ヽ.ヽi!.{::::ji!ヽ!.'{_:::::} ji. |,リノ ' , |
>ト、_トトr`´ ,______  ̄´イ/',.イ/ :/
/:イ ハトゞゝ Y¨ ̄} ≦,イィ1 イ /| オヤシロさまの祟りは信じようと信じまいと、
_. --- 、 /〃 ,'// /:/_> `二 イ //ノ ,ハ{ノ! 確かにッ、
, ‐',.- \. ,'./.| /!|:|レ'|:{r一 ''  ̄iスニム.ム!_ル'
l | /⌒ | V | | ||/_ヽ-〉 _,イ/ , -- \
l__,/| :| | /.N / } |__,///>/ !
ー1 ,ノ ,:'1 ,Kニ.ヽ| \__, イ { 〈 '
丁 /´ ヽ. ヽ} '⌒ヽニ=ヘ. イ /
`iー.′ l /! /l ヾニ゙イ
! }/_,ノ 〃 ` ̄´/
ヽ __/フ'´ 〈{ /
_/ / / 、____ ,.! ,/ \
/ ' / | ヽ . _ ー '´
今年でひぐらしも完結か…('A`)
604 :
デフォルトの名無しさん :2006/06/17(土) 22:15:23
どうしてここまでとまるの?
____ __,,/ _, ----`ヽ :. :. / _ ___ 、\ / / i \ \\ :. :. ,'./ i ヽ:. ヽ:.:.. ヽ.ヽ ,'/ / .ハ ヽ ヽ:.:.:.:. ヽ::.. ヽヽ :. :. |i .i i .i / ヽ ト 、 \、:.:.:. ',:.',:.:.lヽ} |i .i l :N_, -弋 \弌弋ナ:}:.:} :. |i∧ ', :{ ,ィjモト \ イjミトイイV :. な… .| :メヽ.', `ozZ} izN。ハ::{ なんなんですか? :. | :ヾ_! ゝ "゙゙ ' `゙ ハ.:', :. ここ、どこですか? | :.:_イ .:.ヽ. (二フ , イ :.:.:!:.ヽ なんで壁にお尻付けると :. / rィイ | :.:.ヽ: >r/`<ノ .:.::.}ヽ、\:. 前屈出来なくなるんですか? / ∧l;l ! :.:.:.://{二 ̄ .} ..:..::リ//ハ.:\ :. / .{. ',ヾ、ヽi .:.:.{ /(^` |.:.:.:.//: : :.}: . ヽ.:. / / ) ヽ ヾ、ヽ:.ハ ヤ{ ∧/.-‐'": : |:.:. i ', ./ .,イ .:..} : :\ヾレ'ハ ∧__ノノハヾ、 : : : l:.:.: .ハ ', { /| .:.:ハ : : :i Y {ヾ`Yヽニン'ノ}: : } : : : :/:.:.:/ }:.} V | .:.:/:.:|_,ィ' ̄ ヽ三{ `ー-ノ : イ : : :/:.:i.:{ リ ヽ:.:{、.:.V : : ヘ : : {: : :/:.::∧| ヽ! )人 : : :人 : : : / \! :. " ヽ : : : : :/イ{ :.ノ: : : :.\ :. :. \__///: :\______/: : : : : : : ヽ / //: : :|;|: : : : : : i: : : __: : : : ', :. / 、 {;{ |;| . : i/. : : : : : :| / `Y;{. . . .|;|. : : : /i: : : : : : : : :l
ム板の巨大AA貼り付けスレはここですか?
ATL7からは_Moduleは宣言しなくてもいいのですか?
608 :
デフォルトの名無しさん :2006/06/19(月) 16:18:32
WTL8 のダウンロード数を見てちょっと不安に
609 :
デフォルトの名無しさん :2006/06/27(火) 01:54:36
CListViewをダイアログのコントロールアイテムではなくSuperClassにしてCreateして作った場合にも、 WM_MEASUREITEMメッセージをつかまえることはできるでしょうか? よろしくお願いします。
試してから言え
ATL/WTLのメッセージマップはMFCみたいにC++例外キャッチしてくれないと思うけど メッセージハンドラで発生した例外はどう対処してますか? 各ハンドラをtry〜catch囲んでるのでしょうか?
612 :
デフォルトの名無しさん :2006/06/28(水) 02:35:29
>>610 試していてはまっていたので質問しましたが、解決しました。
CFrameWindowImpl
↓子
WindowImplを派生した自前のSplitter
↓子
CWindowImpl<CMyList, CListViewCtrl>
で、WM_MEASUREITEMを捕捉しようとしてもうまくいかず、
調べていたら、自前のSplitterの
FORWARD_NOTIFICATIONS()とREFLECT_NOTIFICATIONS()
の順番だとわかりました。
REFLECT_NOTIFICATIONS()をFORWARD_NOTIFICATIONS()より前に
書くとちゃんと動きました。
WTL付属のSplitterの子でもWM_MEASUREITEMは捕捉出来ませんでした。
Flashなんかを扱う場合にWTLを使うのとATLを使うのは どちらを使ったほうが軽快でしょうか?
意 味 が わ か ら ん
こんなにおもしろいレスは久しぶりだw
随分とまあ生きのいい燃料が来たもんだ
>>613 お互い内容が重複しているものは殆ど無い。
だから、比べようが無い。
>>613 APIで ウィンドウをflashする関数があるから、呼び出してみ。ペカペカするぞ。
>>619 わかってるくせにw
くだらん揚げ足とってんじゃねぇよ
とられるようなこと書くな。
いいぞ。もっとやれ。
Flashなんかを扱う場合にWTLを使うのとATLを使うのは どちらを使ったほうが軽快でしょうか?
意 味 が わ か ら ん
こんなにおもしろいスレは久しぶりだw
随分とまあ生きのいい燃料がみのもんた
>>623 お互い内容が重複しているものは殆ど無い。
だから、比べようが無い。
キャバクラで女の子を落とすのに、生尺と顔射どっちのオプつけた方が良いですか?
WTLを用いたプログラムで ::CoInitialize(NULL) が入ってるコードをしばしば見かけるんですが これは具体的に何を使いたい時に入れれば良いんでしょうか
>>629 MSDN見ろ。
COMを使いたい時だ。
ATLがCOM前提、みたいな感じだったから、かなー。
実はサンプル書いた奴もベースはウィザードで作っただけで、 よくわかっとらんというオチだったりして。
>>631 コモンコントロール(ツールバーとか Cmnctl32.dllだったか)はCOMなので
COMの初期化(CoInitialize)が必要のはず。
635 :
・∀・)っ-○◎● ◆toBASh.... :2006/07/06(木) 00:42:40
>>631 そのコード内で、CoInitialize()は、まったく必要ないな。
削除しても問題ないよ。
>>631 単にAppWizardが吐いたコードなだけじゃん?
638 :
634 :2006/07/06(木) 01:34:17
>>638 Cmnctl32.dllなんてDLLないから
久方ぶりに、このスレらしい話題でちょっと幸せ。
641 :
デフォルトの名無しさん :2006/07/06(木) 14:18:59
「ATLオブジェクトの新規作成」から「ダイアログ」を追加しました この追加したダイアログにinterfaceを定義するには*.idlファイルを手動で 書き換えないと定義できないのですか? 読んでいる本(ATL COMプログラミング)では「プロジェクトへの追加」-「コンポーネントおよびコントロール」で 追加できそうな記述があるのですが、「コンポーネントおよびコントロールギャラリ」ダイアログがででファイル選択するようになるのですが どのファイルを選択してやればよいのかよく解りません。 VC6です。
642 :
638 :2006/07/06(木) 22:32:28
>>639 うげ、スマソ…orz
comctl32.dll
WTL+DirectXがお気に入り
644 :
デフォルトの名無しさん :2006/07/09(日) 06:22:54
軽量・高速なネイティブコードが吐ける言語はATL/WTLしか無いと自分は思うんだが、 なぜこんなに閑古鳥が鳴いてるような状況なの? もしかして、ATL/WTLよりも軽量・高速なクライアントアプリ作れる言語があるの? 皆、何故つかわん?クライアントアプリは必要とされてないの? ホントに疑問なんだけど・・・
Qt使っています
646 :
デフォルトの名無しさん :2006/07/09(日) 06:38:41
>>645 Qtも軽量・高速なWinアプリつくれるの?
んふぅ〜ん、Qちゃん、ぶっちゅ〜ん。
648 :
デフォルトの名無しさん :2006/07/09(日) 07:13:55
なぜ流行らん・・・わからん。。 なかなか最強なクラスライブラリだと思うんだが。。 みんな食わず嫌いしてない?
ここにいる奴は使ってるだろ。
650 :
デフォルトの名無しさん :2006/07/09(日) 07:42:26
ここに居る奴が少なすぎるから言ってる。
三千八百万人のROMがいるから安心しろ!
652 :
デフォルトの名無しさん :2006/07/09(日) 08:03:37
ホントにみんな使ってるの?使って何つくってるの? 使ってるの俺だけじゃないかと不安になってくる。。
漏れは Hello, World を作ってるよ。
そもそも軽量・高速なネイティブコードが必要とされていない現実
たしかにUIをネイティブコードで書く時代はオワタかもしれん。
ネイティブでWindowsクライアントアプリ作る奴が、
趣味以外では、ほとんどいないからだろう。
WTLって、本もないしね。
>>652 おれはIE拡張をATL + WTLで作ってるよ。
プラグインの設定用のちょっとしたダイアログとか、 おまけ程度にUIをつけたい時に重宝するんだけどね そういやWTLを専門に扱った本はないなぁ…
658 :
656 :2006/07/09(日) 11:06:59
amazonで検索したけど洋書でもないっぽいんだな。
スレをたくさん作ってみてはどうか
それじゃただの荒らし
需要は創るものです って電●のおじちゃんが言ってた
ATLを無料で入手するには一手間かける必要があるのが普及を妨げていると思う。
だなぁ ATLとの分離も、話だけで終わりそうだし…
昔こういうのに興味があった層は、 今はportableなlight-weightGUIライブラリを使っていると思われる。
>664 portableなlight-weightGUIライブラリって例えば?
WTL
ATL WTL OTL 名前が良くないな
WTLはportableじゃないから駄目だな
669 :
デフォルトの名無しさん :2006/07/09(日) 21:03:01
Orz
670 :
デフォルトの名無しさん :2006/07/09(日) 21:07:43
軽いことがメリットになりにくい世の中だしな。
最新のATLもフリーになったら使いたいが SDKのは未だに3.0なのがなぁ
672 :
デフォルトの名無しさん :2006/07/10(月) 02:12:01
ATLのフリーってVS2005Expressでってこと? ライブラリ使うのにお金がかかるの?
>>672 VS2005Expressじゃなくて、PlatformSDKにATL付いてるっしょ
3.0だか3.1だかその辺のが
最新版は8.0だっけか
これはVS2005Standard以上を買わないと付いてこない
WTLだけオープンソースにされてもね
SDKのはX86の32ビット版じゃない。 実際にソースを検証してOKになったのではなくて 試してみたら使えるようだよというレベルでしょ。
実際問題 atlthunkだっけ? あれふつうにアロケートしてるだけだから別に不具合ないよ むしろx64のほうが怪しげ
ほかには、DDKにもATL3は入っている、しかもatlthunk.lib付きで。 あと、まだ試していないが、VS 2005の評価版にはATL 8が入っているはずで、それも使えるのでは?と思う。
>VS 2005の評価版にはATL 8が入っている それはライセンス的に問題があるんじゃないのか。
まあ流石に評価版を使うのは無いだろ。
COM作るときだけATL 簡単なアプリはMFCのダイアログベース WTLって便利?
生成コードにおまじないが沢山くっついて シンボルに「ボタン1」だの「フォーム2」だの数字がくっつく MFCよりはWTLの方が、ラクかもしれない。
↑がwin32限定じゃなくてportableなら使うんだけどなあ。
DDKはKMDFに含まれるので合法的に完全無料で入手できる
それがどうした?
今の状況だと、ATLとWTLの結びつきが強いから WTLだけオープンソースになってもあまりメリットが無い 完全に分離されてれば良かったんだがな
ATLなんぞでコスト掛けるより
>>682 の奴がよさげだな。
問題は漢字関連か。
>>652 俺はWTLアプリを客先にも納品してるよ。
正直な話、仕事で使ったりしてWTLを大方理解すると、もはやこのスレから
得る物はあまりないから、このスレにプロはあまりいないかもね。
知りたいことがあってもYahooにあるMLを 検索するほうが早いしね・・・
691 :
デフォルトの名無しさん :2006/07/11(火) 23:49:39
いま勉強中なんだけどね用語が独特でよく解らん>>ATL 相変わらずマクロが色々あってなかなか厄介だし まぁ、ExcelVBAで使えるようなモノを作りたいのが目標だから なんとかしてるけどみんなすごいね #WTLはもっとドキュメントが少ないのか・・・
692 :
デフォルトの名無しさん :2006/07/11(火) 23:55:47
DDKにもATL発見
ATL3 とか言うオチじゃないだろうな。
WTLは良い意味でも悪い意味でも単純だから、 分からないことがあってもソース見れば何とかなるし、 感覚を掴めばそれなりに使えちゃうから、あまり質問の機会がないんだよな。 そこが好きなんだけども。
凝った事はやりにくいけどな
BCBのTStringGridのようなコントールがないのが厳しい
Gridなんか一回自作したら終わりだろう?
>699 ならばなぜ標準も準標準も存在しないのか。
>>700 マジレスすると、WTL自体の知名度が低く、
CodeProjectを中心にいろいろなコントロールは発表されているけど
それを標準化、準標準化しようとするコミュニティが存在しないから。
704 :
デフォルトの名無しさん :2006/07/13(木) 03:13:26
WTLでメーラー作ってるんだけど、Releaseモードでコンパイルしてみたら オーナードローしてるGUI部品でも、めちゃめちゃ表示が軽かった。 やっぱりAPI並に速度の速いネイティブコードを吐いてくれるクラスライブラリは 他には無いと思う。あとウィンドウの機能をtemplateに分けて実装するスタイルが好き。 CHAIN_MSG_MAPマクロに渡すチェインクラスに引数が複数ある場合でもtypedefしとけば 渡せることに最近気づいた。。 もっと流行って欲しいなぁ。。みんなもっと盛り上げようよ。。
スレをたくさん作ってみてはどうか
VIPでやるかw
渋谷でメイドキャンペーンするようなもんだなw
Exceltって何?
>>701 他にもよさげなコントールがたくさんあるようなのでダウンロードしようとしたら
アカウント登録しろって言われた。なんじゃこり(゜□゜) ↑アッー!↓
>>709 無料だし登録しておいて損はないと思うが
CodeProjectなんぞ、Windowsのコード書いて食ってるやつはみんな登録してるんじゃねえの?
ほむほむ。そんなに有名なの。 ちなみに追加コントロールって標準コントロールみたいに、 リソースエディタからダイアログ上にペタペタ貼っ付けたり、プロパティ設定できます?
あ、すんません о-|*´д`*|-о
>>715 登録してログインしないとダウンロードできないと思うけど・・・
(;゚∀゚)=3ドンマイ!!!
718 :
715 :2006/07/13(木) 20:49:28
>>716 ごめん、早とちりした。
www.の方はログインしたままcookieに残ってたみたいだ。
やっぱり登録しないとダメだね。
vc8でwtl8のコンパイルそのままじゃ通らないよ〜 だめじゃん
うちは通ったけど…?
俺も通ったよ。
>>719 はVC8Expressを使っているに500ペリカ
BCCを使っているのですが、ATLやMFCのヘッダやバイナリは無料で手に入るのでしょうか?
MFCはわからないけど ATLはSDKに含まれてるのでは? ただ、バージョンは3.0と古いとどっかに書かれてました
古いのならね。BCCで動くかはシラネ
728 :
デフォルトの名無しさん :2006/07/15(土) 19:43:47
そもそも評価版注文してあれするだけではw
注文するまでもなく、今だとwebからdlできるみたいだよ。 ちょっと前にVSスレでurlを見たような。
730 :
デフォルトの名無しさん :2006/07/16(日) 11:17:27
WTL 8.0.6137 のダウンロード数が、やっと 4000 を超えましたね。 全世界で 4000 人も使っているんだ。
意外と少ないと思った
732 :
デフォルトの名無しさん :2006/07/16(日) 14:26:18
>>731 世界で4000人も使っているんだから、
日本でも100人くらい使っているかもしれないですよ?
それでも少ないと思う?
常に最新版を追いかけてないだけで、WTLのユーザはもっといるでしょ。 7.5 Finalは14000超えてるし。俺もまだ7.5のまま。
8.0はVC++8.0で動くってだけで、中身は7.5と変わらないからな。 VS.NET2003を使ってる漏れはわざわざアップデートするのもマンドイので7.5のまま。
735 :
デフォルトの名無しさん :2006/07/16(日) 14:40:22
WTLって重いですよね。 ダイアログエディタが活躍するような小型アプリ位しか使い道が無いような気がする。
うそを言うなw
WTLが重いと感じるならMFCや.NETはクソ重すぎて使ってられないだろうな
738 :
デフォルトの名無しさん :2006/07/16(日) 14:44:06
>>737 MFCのほうが軽いですよ??
もしかして、なんとなくこっちのほうが速そうとか印象で語ってません?
それに、重くてもWTLの良さは無くなりません。
WTL自体がなくなりそうで不安だけどw
釣りツマンネ
DoPaintとか見ると軽くすることに力点を置いていないんだろうな。 多重継承を基本としているところが魅力的なわけで、 多少重くても不満ない。
でもまあ、なんでも良きに計らってくれるわけじゃないから、 下手に書けばいくらでも遅くなるだろうよw
それにしても重いね。 もう少し軽くならないと使いようが無い。
ここをJavaや.NETスレと間違ってないかwww
重い重いと言われても、何が重いのか言ってくれないとさっぱり見当が付かん。 ここはこうだから重い、ああすれば軽くなるのにとでも書いてみなさい。
バカは相手にしないことが一番。
MFCのメッセージハンドラのロジックを詳しくプリーズ
えとね ヘッダ嫁 WindowProcを隠蔽したマクロで、各パラメータごとの処理を各関数に飛ばしてるだけ ウィンドウメッセージを補足してパラメータの値ごとにif(mgsID == ID_HOGEHOGE) { foo_proc(...); } みたいな感じでやってるだけ WinでWTLほど軽いクラスライブラリ他にないと思うけど STLとの親和性の高さならWinSTLくらいか?
っていうか、MFCが重いのは深い階層構造のクラスでオブジェクトが巨大なのと 仮想関数テーブルのオーバーヘッドが要因として大きいかと。 WTLは多重継承を前提とするテンプレートベースのクラスライブラリなんで 仮想関数テーブルを持てない。 代替メッセージマップによる似非ポリモーフィズムはC++じゃなくて Windows自体の機能によるものですな
>仮想関数テーブルを持てない。 大嘘言ったかも
WTLが軽いのは、テンプレートベースのおかげで コントロールやウインドウに対する操作がかなりインライン化されて、 SDKで書いた場合とほとんど変わらないコードに展開されるからってのも大きい気がする
MFCの呼び出しはざっくり書いてこんな感じだったと思う 1、WindowProcで、CWndクラスポインタをHWNDとCWndの対応からget 2、uMsgと対応するメッセージハンドラのメンバ関数ポインタを、MessageMapを 線形探査してget(線形探査部分はアセンブラで書いてあった気がする) 3、メンバ関数ポインタをCWndクラスポインタでcall。 というかなりの力業だったような。 WTLはWindowProcでの引数のhwndがthisで呼ばれてくるからくりを 使っているので、this->ProcessWindowMessage()しているだけ。
753 :
デフォルトの名無しさん :2006/07/17(月) 05:14:02
>>751 テンプレート化されているおかげで、コードサイズが大きくなりすぎる。
最初にスケルトンアプリを作るとコードサイズが小さいことに感動するけど、
その後アプリとして必要な機能を追加していくとどんどんサイズが増えていく。
同じ基本クラスを使っていてもコードが別になるんだから当たり前だよね。
結局、WTLマンセーな人って、スケルトンをコンパイルして喜んでる人だけなんじゃないの?
自分は、リリースできるレベルまで作りこんでがっかりしました。
なんか夢を見すぎた感じ。
テンプレートは下手なやつが使うとどうしようもなく馬鹿でかくなるよねww
755 :
デフォルトの名無しさん :2006/07/17(月) 05:21:41
>>754 自分が下手じゃないとは言わないけど、それにしても馬鹿でかくなりすぎだよ。
それに実行も遅くなりがち。
コマンドバーがすべてのメッセージをフックするでしょ。
ああいうのってどう思う?
ああいうつくりでも軽くなると思う?
普通に重くなって当然でしょ。
>>753 >その後アプリとして必要な機能を追加していくとどんどんサイズが増えていく。
お前のコードじゃねえかw
757 :
デフォルトの名無しさん :2006/07/17(月) 05:28:48
>>756 自分のコードじゃないよ?
テンプレートのマジックで、同じ基本クラスであっても
継承するたびに別のコードが生成されるみたい。
これは無駄だよね〜〜〜〜。
せっかく多重継承を使うデザインなのに、
性能を意識すると機能を分離できないじゃん。
いったいどう使えというのかな?
世界で4000人しか使っていないのはここら辺に理由があるんじゃないの?
世界で4000人(笑)
759 :
デフォルトの名無しさん :2006/07/17(月) 05:35:50
>>758 驚きだよね。
少なくても百万人くらいは使ってると思ってた。
日本だけでも数万人とか。
世界で四千人じゃ、そのうち無くなるよね。
例えばどの基本クラスのコードがダブるとそんなにアホみたいにでかくなるんだよw 4000人は確かに驚きw
761 :
デフォルトの名無しさん :2006/07/17(月) 05:43:55
>>760 テンプレートクラスは全部じゃない?
あとね〜〜〜。
ATLってオブジェクトサイズが小さいじゃん。
WTLも同じだと思ってるなら騙されてるよ。
めっちゃくちゃ大きい。
その場で計算したらいいような値でも、メンバ変数になってたりするからね。
なんかみんなイメージに騙されてるんじゃないかなぁ〜〜〜〜??
朝っぱらから香ばしいのが沸いてるな
763 :
デフォルトの名無しさん :2006/07/17(月) 05:48:17
>>762 反論できないんだよね?
まぁ仕方ないけど。
WTLのクラスなんて薄っぺらい被せもんばっかりじゃねえか。 インラインに展開されることを前提にしたようなコードばっかだよ。 読んでみろってw
ぶっちゃけMFCをstaticリンクするより全然マシ
766 :
デフォルトの名無しさん :2006/07/17(月) 05:55:24
>>764 じゃぁ使う意味ないじゃん。
ラッパーばっかりなのにあんなにくそ重いんじゃ意味ないし。
ラッパーごときがあんなにサイズ大きいんじゃね〜〜〜。
だめジャン。
で、具体的にどこが重いの?
>>766 お前がSDKだけで直書きしても、もっと軽快で小さいコードにはならないよw
769 :
デフォルトの名無しさん :2006/07/17(月) 06:00:46
>>765 MFCはスケルトンでも静的リンクなら200KiBを超えるよね。
動的なら30KiBクラス。
WTLは同じような構成なら40KiB。
もちろん構成が違えばサイズは変わるけどね。
だから、最初にWTLを使ってスケルトンをコンパイルすると感動するよ。
自分も感動した。
その後機能を加えていくと、実はMFCより効率が悪いことに気がつく。
MFCだと自分の書いたコードの分だけサイズが増えていくけど、
WTLは、基本クラスの分が何重にも増えていってすぐにMFCの場合よりサイズが大きくなる。
てわけで、マンセーしてるのはスケルトンコンパイルして喜んでる人だけなんじゃないの?
まあ、どんなものも使う人次第ってことだ
771 :
デフォルトの名無しさん :2006/07/17(月) 06:07:47
>>770 スケルトンをコンパイルするお仕事してる人には、
WTLが良いって意味?
でもまあ、たまにテンプレート原理主義者みたいのがいて困るのは事実w
WTLがそこまでデカいと感じたことはないなぁ。 とあるCAD用ソフトのUIモジュールをMFCからWTLに書き換えたことがあるが、 サイズはせいぜい50kbしか違わなかったぞ。 WTLではテンプレートの実体化で大きくなるサイズなんてタカが知れてるしな。 サイズがデカくなるんだとしたらインライン化によるものが大きいとは思うが、 それでも100KB単位で増加することはまずない。 極端にでかくなるんだとしたら、相当アフォな設計でアフォな継承関係を作ってるとしか思えないなぁ。
華麗にスルーしろよ
過疎スレで暴れていい気になってる可哀想な猿が一匹沸いた、でFA
つうかみんな早起きだよねw
777 :
デフォルトの名無しさん :2006/07/17(月) 06:17:24
>>773 UIモジュールってことはオブジェクトをホストしてるだけでしょ?
それほとんどATLじゃん。
だから50KBの増加で済んだんだよ。
WTLをたくさん使ったらもっと増えるよ。
みんな目を覚まして!
UI以外の何にWTLを使うんだよw
779 :
デフォルトの名無しさん :2006/07/17(月) 06:25:40
>>778 その言い訳苦しすぎない?
ていうかみんなWTLほんとに使ってるの??
コマンドバーには誰も反応しないよね。
不思議だ〜〜〜〜。
780 :
デフォルトの名無しさん :2006/07/17(月) 06:27:05
あ、わかった! スケルトンコンパイルしてマンセーしてるだけで、 実はよく知らないとかじゃない?? もしかして俺が一番知ってる? そんなことないよね?
>>780 いや、お前が一番知ってると思うよ。
WTLウィザードといっても過言ではないね。
>>780 そう思う。まさに天才。
確かにMFC>WTLだ。
〜完〜
783 :
デフォルトの名無しさん :2006/07/17(月) 06:38:07
>>781 そうなの?
ってことはさ、みんなある程度WTLを知ると
限界に気がついて離れていっちゃうんだろうね。
で、使い始めの人だけ使っててマンセーしてて、
ウィザードクラスの人は育たないんじゃないの?
それに、4000人しか使っていないんじゃいつ無くなるかわかんないしね。
WTL使うことに不安は無いの??
実はおまい以外誰もつかってないんだ
俺も使ってるのでそんなことはないw ごちゃごちゃ書いていくうちにコンパイルの遅さにも鳴れた
次Verマダー?
788 :
デフォルトの名無しさん :2006/07/17(月) 08:02:08
WTL 8.0.6137 のダウンロード数が、やっと 4000 を超えましたね。 全世界で 4000 人も使っているんだ。 日本でも100人くらい使っているらしい。
なんか良くわかんないすけど、WTLのコマンドバーは、ウィンドウリサイズの 度に再描画が走って(試したのはVistaの1個前のベータ)、こりゃデフォルトでは 使えんかもと思いました。WTLのウィンドウメッセージの流れについて 知ってる人が見れば(WTL本体を)直せるんでしょうが、知らない私にはどうもなぁ〜と。 ソース量が少なくて、無駄がないように見えて、実はMFCより実行時に 流れるウィンドウメッセージの数が桁違いに多いというようなことは ないんでしょうか?
漏れのアプリはリサイズしても再描画されない。 特別変わったことはしてない。
791 :
789 :2006/07/17(月) 09:08:36
あ、すいません、詳細を書くのを忘れてました。 WindowsXP SP2とかで"デザインを優先する"にした時、 ウィンドウリサイズでRebarのグリップ部分の再描画が走り、 Vistaのデザインモード?だと確かツールボタンまでも 再描画された気が…。Vistaは今環境持ってないんでなんともですが…。
えらくスレが伸びてるが・・・ テンプレートだから別の型で使うたびに増えていくというのは 間違いじゃないのでは? たとえばHogeってテンプレートクラスを Hoge<Poge>とHoge<Puge>って使ったら、 Hogeテンプレートのコードは型の部分以外、 全く同じコードが2回展開されるでしょ?
で、それはMFCなら再描画されないの?
>>792 誰も「テンプレートを使ってもサイズが増えない」とは書いてないと思うが
>>792 ソースの字面上は同じだろうけど対象としてる型が違うじゃん。
WTLはかなり薄いラッパだから、そこでダブる程度のコードは、
代わりに手で書いてもそれほど共通化はできないんじゃないの?
796 :
792 :2006/07/17(月) 09:26:07
>>754 書いたのは俺だが、考え無しに何でもかんでも闇雲にテンプレートにしてたら大変なことになるっていう話ね。
一見メンバ関数が大量にある分、テンプレートで容量食いそうって誤解があるけど 実際はImplが仮想関数を使ってないから、 「使わないメンバ関数は実体化されない」ルールのおかげでかなり小さくなってるんだよな。
799 :
791 :2006/07/17(月) 09:54:56
>793 うへー。MFC自体にコマンドバーがないんで何ともですが、 MFCウィザードで生成するRebarでも、XP SP2で再描画がかかって しまいますね…orz。 Vistaではどうだったか良く覚えてませんが…。
>>799 じゃあ、コモンコントロール(なの?)自体の問題だろ。
801 :
792 :2006/07/17(月) 10:07:08
>>798 あーそうだ、長いことテンプレ使ってなかったから、そのルール忘れてた。
なんで使わないコードもメモリに乗っちゃうMFCと、
プログラムのサイズは、どっこいどっこいってことかな。
実際に比べてみろって
明確な差が出るほど巨大なプログラムを試しに作ってみる方が無理があると思うが
805 :
792 :2006/07/17(月) 10:25:40
どっちのがデカいにせよ、そんなPC激重になるくらいメモリ圧迫しないでしょ? 俺的にはC#よりメモリ食わなきゃいいよ。 そんで、MFCみたいにめんどくせーフレームワーク押しつけられず自由に組めれば。
何やってんだお前ら〜 ム板で低LVな煽りあいとか、がっかりさせんな〜
C++相談室 part51のテンプレでこのスレが削除の対象になりました。 ねらーにも見捨てられるなんて……
夏休みだからね
C++で書かれているとはいえ、どっちかつーとWin32APIの方が関連性強いし まあいいんじゃね?
CodeProjectが見捨てなければ全然おけ。
WTLは無くならない、他に代わりが無いから
8.0なんてどこにDLリンクがあるのか一見わからないしむしろMSが公式に配布してる7.5のほうが安心して使える
頻繁にWTLのバージョンアップについて行くのは面倒。 せっかく動作しているプログラムの動作試験をやり直さなきゃいけない。 現時点では7.5で十分。
>>755 いやならコマンドバー使わずに、普通のメニューバーにすればいいだろwwwww
速度速度って、テンプレートで気になるほど動作速度に影響出るのかなぁ コンパイルは糞遅いけど
816 :
デフォルトの名無しさん :2006/07/18(火) 09:26:02
おれ4回くらいダウンロードしたけどw
奇遇だな おれも4回だ きっとまだ世界で1000人程度なんだろう
MSのチームは実際に使ってるんだっけ? なんだか不安になってきたぞ・・・
おいおいなんか盛り上がってますねおまいら。
盛り上がるのは休みの日だけ
アンチが来るときだけだろ
640,480みたいに希望のクライアントサイズ渡すと 窓サイズをピッポッパッと計算してくれるメソッドは無いですか もしくは自動的に変更してくれるしろもの
ありますよ
MFCのAdjastなんたら相当のメソッドなら自分で作ってた。
>>822 AdjustWindowRectというAPIがあるので、WTLのウィンドウクラスにもあるだろう。
>>825 そいつはウィンドウハンドルを引数に取らないから、ATL::CWindowには含まれていない。
ダイアログ関係とかそっちの方は知らない。
>>822 じゃないが、AdjustWindowRect()などというAPIがあったのか、
いままでGetWindowRect()とGetClientRect()を使って自前でやっていた。
メニューの折り返しとかあるとダメだけどね
やっぱMFCだなw
OSというかWin32APIがショボイんだと思う ATL/WTLやMFCのせいじゃないけど クライアント領域のサイズが指定出来ないって 根本的になんか間違ってるよ
AdjustWindowRectで解決できるから、APIは何も問題ないよ。 メニューが複数段になった場合の問題も3行書き加えるだけで解決。 そもそもクライアント領域をきっちり指定したいのはゲームとかマルチメディア系 くらいで、ほとんどのアプリケーションにとってはどうでもいいこと。 それにクライアント領域のサイズが重要になるのはウィンドウ作成時の1回だけで その後のウィンドウ操作はウィンドウ全体のサイズしか使わん。 (ウィンドウの移動制限、複数のウィンドウの整列…etc)
APIが便利ならWTKなんか用無いわ
テキストをスクロールさせる時に、画面の下端が行間にピッタリ合わないと 読みにくいし、ちらつきがち。 そのためにクライアント領域のサイズをフォントの縦サイズの倍数にしたいわけよ。
24.5倍
でも、クライアントサイズがフォントのたてサイズの倍数にしかならないソフトなんて… ちょっと使いたくないな。 ちらつき対策のロジック入れた方が良いんじゃねーの?
/ ミ /`ヽ _ ミ ,イ,.- 、 |  ̄_ ̄丁 '' ー┬‐- -ミ /,|.l l ! ( ) ! (´ ) ! r‐ /イ,! `ー' _L =- --┴-ニ二ト、_'ー' |'J」-''_二 =-- ‐一 ー‐t‐-ト、 二__ レ'/´ィ 、_________ ヾミ| l V ,、 F≡三r一tァー, | l:.:. .:: _________ |ノ^>、 '^ミ二´ | l:.:.:.:: / V/イソ .::ヽ、二_ < ちらつき対策のロジック入れた方が良いんじゃねーの? | / ,' _ .:.:.:.::i|,)ノ \ |.〈、 、 _〉 `丶、 ;:ィil| ノ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | 笊yfミミミミヾ、 '!l|il|li!fj' ヽ |i''r ''_二二ニミ;ヽ、 ,|l||il|l|,「゚| |,l| V´ :::::::::;;/ トi|l|i|i|l|!Ll |i! ゞ=-‐''" ,i||i|l|l|l|!|i{ |il! ーォii|「、 ,,.,.ィi||l|i|l|l|i|l|シ' ,/i|l||livil|||l|i|l|l|lil|l|i|l|i|i|i|l|l|l|{' {l|!|l|i|l|i|l|i|||i|i|l|i|i|i|i|l|l|!|l|l!r' ヾ!||i|i||i|i|l||l||i|i|l|l|l|l||l|l!イ ``,ヘi|l|i|l|i|l|l|i|r''`''"´ i , (_~`^~"゙'ヾ ノ / , ト─' ノ / /i
ちらつきがおきないとしても表示サイズが例えば12.6行だったりすると 文字の上半分か下半分が見切れてしまって使いにくい。 そうすると、見切れの関係で=と-をうっかり見間違えたりする。
その機能を使うか使わないか選べるなら、搭載してもいいと俺は思う。
個人的には、最下行が見切れてようが気にしないが、 見切れないようにするなら、ウィンドウサイズじゃなく、 文字の方を合わせるべきだろ、メモ帳みたいに。
メモ帳は全体が表示できない場合は描画自体しないね
端を空欄にするのは適切な妥協だと思う。 ただ、RADとか使わないでガリガリやる時はそのぐらいこだわりたいとちょっと思った。
むしろウィンドウサイズで誤魔化す方が妥協だと思うけど。
最大化したときに隙間空くのカコワルイ
行間を変えて誤魔化すんだ
何このいつのまにかソフトの仕様考えてるスレ
847 :
デフォルトの名無しさん :2006/07/28(金) 23:40:16
WTLで書いたソフトをMFCで書き直したらサイズが半分になった・・・ orz...
もう次スレはいらないかも試練ね
849 :
sage :2006/07/29(土) 03:25:10
>>847 MFCの共有DLLにすればサイズは小さくなるわなぁ・・・
誰かMFCのSuperGridをWTLに移植してくれー
いやここはこうだろ
>>847 すげえ、この人。ダイナミックリンクしといて(ry
WTLって速いの?
MFCの方が500倍速いからやめとけw
855 :
デフォルトの名無しさん :2006/07/29(土) 15:46:43
>>853 まじレス。
ATLは軽量コンパクトで、速くする余地がある。
設計次第。
WTLは、そうではない。
WTLのコードをちょっと見るだけでも直感的にわかるだろうけど、
その直感は全体を通して当たってる。
速くするとかコンパクトにすることには主眼を置いていないと見える。
WTLは素晴らしいという人が例に出すWTLの美点は大抵ATLのコードで、
WTLのコードを例にとって素晴らしいという人はいない。
え、何この人?
そうそうwだからやめとけww
858 :
デフォルトの名無しさん :2006/07/29(土) 16:07:55
>>856 WTLを使うとコーディング時間が10倍に!?
きめぇwwwwww ただ、x64対応とか考えると結構不安要素多いんだよな (いちおうサンプルコードはx64用のMakefile書くことでそのままビルドできた)
860 :
デフォルトの名無しさん :2006/07/29(土) 16:14:50
>>859 x64に限らず不安定要素は多い。
枯れるまでにはまだまだ時間がかかりそうだが、
その前に消滅してるかもしれん。
自分の環境で動けばそれでいいって場合はいいかもな。
WTLはバグが多いからね。 結局WTL自体のソース読む事になる。
んまあ、フレームワークにしろ言語にしろ、 普通の人はケースバイケースで使い分けてるでしょ。 頭の弱い人は○○最強!とか言い出してもう大変だけどw
夏厨うぜえ
864 :
デフォルトの名無しさん :2006/07/29(土) 17:14:37
夏厨を定義してみます。 夏厨: 使えてもいないのに、WTL最強とか言い出す子。 使っている人が「WTLいまいちだね」などと言い出すと発狂しだす。
ATL/WTL使ってる人は、SDKも大体分かってるね。(MFCも使えるという人が多い) MFCしか使えない→厨、ウィザード厨、応用力無しって感じ
866 :
デフォルトの名無しさん :2006/07/29(土) 17:45:29
>>865 WTL使ってる子は、ATLは大体わからないね。(MFCは挫折したという人が多い)
ATL使ってる人は、「WTL使う意味ってどこに有るの?」って思ってる。
ATL+MFCの方が効率いいじゃん。
いろんな意味で。
そうそうwだからWTLはやめとけwww
869 :
デフォルトの名無しさん :2006/07/29(土) 18:32:53
>>868 ATLを好んで使う人なんだけど・・・
で、WTLは糞だなって思ってる。
は?
いやもうまったくもっておっしゃる通りwだからおまいはWTLやめとけwww
んまあアレですよw重要なのは何使うかより何作るかだからwww
874 :
デフォルトの名無しさん :2006/07/29(土) 18:45:22
>>871 WTLなんか使うわけないでしょ。
常識で考えなよ。
重くて遅いし、インテリセンスも利かないしコンパイルも遅いし。
統合的なアプリのソリューションビルドしたら3日はかかるよね。
まぁWTLでそこまで大きなアプリは作れないけど。
次スレは、「(WTLのいないクリーンな)ATL Part5」だね。
夏ですな
ダンゴリオンがまともに見える日が来るとは思わなんだw
で、WTLってどういうときに使うと嬉しいわけ?
新人に自慢するとき
, -: ': : : : : : :"⌒: ̄:` : 、 /: : : : へ._ : : : :へ、: : : \ __,く;へ_: : :| : : : : : : : \ ̄:ヽ、\ . /:__/: : :/: : |: :l: : : : : : : : \.: :ヽ: ヽ /_//: : :/: / :|: l: : :ヽ: ヽ: : : : ヽ: : ヽハ //: /: : : : : |: : l: : |: : |: : ヽ: :ヽ: : ヽ: : : : : : :ヽ: : ヽハ . /:/: /: /: l: |: :,|: : ハ: : |: : : ヽ: :ヽ: : ヽ: : : : : : :ヽ : ヽ| //: : l: :l: ::|: :|: :|: : :| ヽ lヽ : : :\: ヽ.: :\: : : ヽ:ハ: : : | | l: : |: :|: : |: :|: ハ__,L. ヽ \" ̄「 T ト- 、;_: : : : :|: : :.| | |: : |: :|: : |: ;|イ「 ヽ| \´\ヽ __」__i.\ \ : : |: : :| もう・・・仕方の無いことばかり言って・・・ | |: : |: :|: : くv' _」=i ヽ /「 i::::::o「\|ヽト: |: :/| i l: : ハ: l: : :.ト / {:::::::〉 レヘ:.::::}゚i|/|: ::| .}レ': :| ∨:| Vヘ: ::ヘヽ vヘ:ハ ..く_二iつ|: :.:レ: :| : :| ヽヽ∨へ:ハ ヾツ ////ハ:/::|: :|: : :| ∧: :i:ヘ.l // ` /: {:::::|: :l: : ハ /:/: ∧: \ 。 ,.イ:|: :|::i:::|: :l: ::∧ //: : :}: ヽ`i:: 、. / .|::| :|:::i::::|: i:: : ∧ ://: : : ハ: ヽ::::::ノT ' ‐ ' |::|: :V::::i∧: : : : ヘ //: : ノ二 ヽ: :\ 〈ー 、 _____,トヘ: :∨::i::∧: : : :.∧ //:/ /⌒ \ ヽト、: :ヽ\_______ハ \:∨ハ:::∧: : : :} \
CPUを破壊するプログラム書けるプログラマって居たら神じゃね?wwww
WTLがATLより〜とか言ってるやつって、ATL/WTL使ったことないだろw WTLはATLに依存してるから、ATLとWTLを別に考えるなんて出来るわけ無いんだが WTL単体じゃロクな物作れないだろ
誤爆 つーか、ATLのCWindowImplをもっと便利に使おうと思って生まれたのがWTLなわけで WTLを開発したのはATLのチーム。 ATLはバージョン更新時に一部WTLの機能を取り込んでるしね ATL使ったWindowsアプリ書こうと思ったらWTLが一番手軽。
884 :
デフォルトの名無しさん :2006/07/30(日) 00:42:43
CWorkerThreadにさせる処理はどこに書けばいいんだろうか
>>881 AMDのモバイルCPUと一部のママンなら簡単だぜ?
電圧上げるだけでいいんだから。
IWorkerThreadClientのExecute
最近のってファンとめられるじゃん
unDonutのソースを参考に、donut2.52のソースをVisualStudio2005 でビルド出来るようにしましたが、動作させてみるとセキュリティや マルチメディアの制御が機能していません。 本家donutのようなatlhost.hの直接書き換えではなく、unDonutのソース (AmbientDispatch.とDonutView.hとDonutView.cpp) をそっくり真似して、CAmbientDispatchなるIDispachインタフェースを 実装した外部からアンビエントプロパティを変更する クラスで制御を行うように変更しました。 ダウンロードコントロールを制御するフラグを変更しようとすると、CAmbientProperty のput_DLControlFlagsが呼ばれ、その中で呼ばれるRefreshAmbientで CAxHostWindowのFireAmbientPropertyChangeをInvokeを介して呼び出しています。 しかし今回変更を加えたdonut2.52では、CAxHostWindowのInvokeで FireAmbientPropertyChangeが呼ばれません。 さらに調べたところ、CComTypeInfoHolder::GetTI内のLoadTypeLibで失敗しています。 ここが原因なのではとにらんでいるんですが、ATL/WTLは勉強し始めて日も浅く、 ここからどうすればいいのか分からず頭を悩ませています。 どうかお力を貸して頂けないでしょうか?
>>888 unDonutにはAPIという(ひどい名前の)タイプライブラリがあって
LoadTypeLibではそれが読み込まれている。
本家Donutはそれがないのでエラーになる。
タイプライブラリを付け加えれば多分うまくいくだろうけど面倒なので、
無理やりっぽいけどRefreshAmbientを次のように書き換える。
void RefreshAmbient(DISPID dispid)
{
CAxHostWindow* pHost = static_cast<CAxHostWindow*>(m_pHost.p);
pHost->FireAmbientPropertyChange(dispid);
}
>>889 アドバイスありがとうございます。
やはりタイプライブラリが必要だったのですか。
教えて頂いた方法を早速試したところ、なぜか動作しませんでした。
試しに、VisualStudio2005でビルド可能にしたunDonutに同様の変更を
加えてみたところ、こちらは正常に動作しました。
教えていただいた方法に間違いは無い事を確信。
(私のミスであることも確信)
よくソースを見比べてみます。
おかげさまで活路が開けました。
ありがとうございます。
891 :
デフォルトの名無しさん :2006/08/02(水) 20:19:22
/三ミミ、y;)ヽ /三 ミミ、ソノノ、ヾ、} アンタ、デフラグしないと死ぬわよ。 ,':,' __ `´ __ `Y:} }::! { : :`、 ,´: : j !:! {:| `・、 i ! ,・;' |:} r( / しヘ、 )j g ! ` !-=‐!´ ,ノg \._ヽ _´_ノ ソ __,/ ヽー ,/\___ |.:::::.《 ヽー/ 》.::.〈 _,,,,,,,...........,,,,,_ ,/:::::::::::::::::::::::::::::ヽ. /:::::::::::::::::::::::::::::::::::::::ヽ. .|:::::::::i"""""""""""ヾ::! |:::::::ノ ゙l;! /`ヾ;/ -‐ 、 -‐ 、 } | r 'i zェェ、 zェェ、 | ヽ` ! ! | `7 /、,, _ ,,)、 l ,....--―'"|ヽ. ´ _ / <放っておくと大変なことになりますよ ::::::::::::::::::::| \ ´ ̄ ー ̄ /ー::: :::::::::::::::::::::|. \____,/|:::::::
892 :
デフォルトの名無しさん :2006/08/06(日) 20:13:49
過疎
893 :
デフォルトの名無しさん :2006/08/07(月) 00:53:42
リバーコントロールにリバーコントロールをバンドとして挿入してみるとか
だれもいない
>>749 >WTLは多重継承を前提とするテンプレートベースのクラスライブラリなんで
>仮想関数テーブルを持てない。
ATLの時点ですでに仮想関数テーブル持ってるけどな。
ここの人たちは何か勘違いしているようだけど、
WTLは効率を追求した形跡なんてどこにもないぞ?
実装の継承によって手早くコードを完成させたいときにはいいかもしれない。
もちろんこれはOO的にはやっちゃいけないことの部類に入る。
便利だっていう感想は有り得るけど、速いとか小さいって言うのは有り得ないし、
設計上も本来は問題があるわけでマンセー出来るようなものじゃない。
実装も依然かなりのバグを含んでいて修正される気配もないし、
プロジェクトのアクティビティーも低い。
自分がプロジェクトを引き継ぐくらいの気概が無いと使うのは無理なんじゃないか?
まぁ、2チャンネルだから仕方ないけど。
実装の継承をやっちゃいけないとは言いすぎだと思う。
>>897 言い過ぎなのはわかってるよ。
ATLをデザインした人はわかった上でやってるだろうし、何しろ便利だ。
ただ、このスレの流れが気になってね。
嘘ばかり書いてマンセーしてるから。
このスレを見てWTLの使用を検討する人がいたら気の毒だ。
え、何この人?
アンチと信者の書き込みを鵜呑みにするような人間は このスレに限らず、そもそも2chを見るのやめた方がいい。 アンチと糞コテのレスがこのスレの流れだと思ってるのも痛いな。 ここを見るような人間の大半はMFCもWTLも使うし用途によって自分で判断する。 くだらない話に乗らないからアンチと糞コテのレスが目立つだけだ。
>>900 自分で判断できる技量のある人ばかりなら問題はないが、
世の中そういう人ばかりではない。
そもそも、自分で判断できるならWTLを実用にすることはないだろ。
研究するならわかる。
だいたい、WTLを使う用途って何?
そのソフトウエアを使うユーザーだって気の毒だ。
別にUIがソフトウェアの本質じゃないし、好みや親和性で適当なの使えばよろしかろ。
ソフトウェアの機能がUIに引っ張られるようじゃ本末転倒でしょってことだよ。 豪華なUIに中身なしなんてのを作るわけじゃないだろ。
>>904 それならなおさらWTLの使いどころなんてないだろ。
>>901 いい加減想像力膨らまそうや。
ユーザが自分だけかもしれないし
気の毒なほどパフォーマンスに差のでるソフトを作るのかどうかもわからんし
何を誰のために作るのかも決めずに
実用にすることはないだの気の毒だの不毛もいいとこ。
コマンドバーを使う。
だからUIが主役じゃないんだから、好きなもん使えばいいだろって話。 個人的には、MFCはアプリそのものの構造に口をはさんでくる傾向があるから、 UIと機能が切り分けにくくて使いにくいと感じるけどね。
簡単にDialogResizeを使ったダイアログを作りたいとき。
信者とアンチ以外は全員わかってる<好きなもん使えばいい このスレに限らず言語だろうがOSだろうが。
>>906 ユーザーが自分だけで気の毒なほどパフォーマンスが悪化してもいい場合の話を
一般化して語ってるから問題なんじゃ?
ユーザーが自分だけで気の毒なほどパフォーマンスが悪化してもいい場合のみ使える
ライブラリがWTLだって明示した上なら問題ないと思う。
>>911 誰も一般化はしてないと思う。
みんなそれぞれが自分の想像した環境だけで話してるからこうなるんだって。
ありがちなパターンじゃん。
ちなみにこれだと意味が変わる。
>気の毒なほどパフォーマンスが悪化してもいい場合のみ使える
913 :
デフォルトの名無しさん :2006/08/15(火) 13:04:48
>>913 >>896 は何が言いたいんだよ。
>>896 がプロジェクトマネージャでこのスレの住人がプロジェクトメンバーならわかるが。
そいつはいろんな板のいろんなスレで「それよりこっちが良いからそれは使うな」と言って回ってるのかね。
>>914 いくら2CHとは言え、嘘書いてまでマンセーしちゃだめってことだろ。
趣味で独自OS作ってる人とかにもつっかかってそうだな。 「そんなOS役に立たないからWindows使え」とか。
>>914 SFのWTLプロジェクトの話だろ。
もうほとんどメンテナンスされなくなってるから、
誰かが引き継がないといけない。
Latest Newsが去年の11月だぞ?
>>915 嘘を指摘するなら歓迎だが、
後半のプロジェクトのアクティビティーやら
使うのは無理やらはいらんだろ。
>>917 前半でWTLの設計を否定してるかと思ったら
プロジェクトの存続を危惧する内容だったのか。
そういう意味で「2chだから仕方ない」と言ってるなら
それはそうだろうな。
>>918 このスレにはそういうことが書いてないからな。
すでに消えそうなライブラリだって
>>1 にはっきり書いておけば良い。
>>917 Latest Newsは実際あてにならないから、俺はファイルリストのRSSとYahooGroupを見てる。
確かにSF自体の活気は無いが、 リリースは常に2〜3ヶ月ごとにされてるし 今更消えそうだとか騒ぐこた無いと思うが。
924 :
デフォルトの名無しさん :2006/08/15(火) 13:26:54
名前変えただけのリリースとかなw
一言煽るだけのアンチが湧いてきたな
>>923 2〜3ヶ月でリリースなんてされてないはずだが。
>>930 7.5系だからだろ。おまえはちょっと頭の弱い子っぽいな。
>>931 そういう書き込みが嘘っぽいんだよな。
で?何で8系出さない?
やっぱり、2〜3ヶ月でリリースなんてされてない。
昔は活発に開発されていたこともあったって認識で良いだろ。
今はもうたまに気が向いた人が少しの変更を加えるってくらいだ。
来年にはプロジェクト自体削除される可能性だってある。
プロジェクトを作った始めのうちは開発者も熱心だったが今はもう放置されている。 ありがちだね。
934 :
デフォルトの名無しさん :2006/08/15(火) 13:55:46
よく立つ作ろうスレと同じか
>>932 嘘っぽいって何だよ。
8系だと2リリースしかされてないから7.5出したんだろうが。
つーかその削除される可能性があることをアピールする目的がわからん。
もう削除されそう、だから使うのやめよう、と思ったら使うのやめればいいだろーが。
アピールなんていらんぞ。好きにやめれ。
936 :
デフォルトの名無しさん :2006/08/15(火) 13:59:50
とりあえず、2〜3ヶ月ごとにリリースされてるのは嘘だった。 しかも、8系だとたった2回しかリリースされなかった。 今後リリースされる予定もない。
>>936 直近の一回が5ヶ月かかっただけで嘘っぽいって子供の喧嘩かよ・・・
>>935 8系出せば2〜3ヶ月でリリースされていないってはっきりするでしょ。
だから嘘ってこと。
ATLと同じ状態ってだけだ 気にすることは無い どうせサンクとラッパーがほしいだけなんだから あとはどうでもいいだろう
>>937 それも嘘。
半年かかってる。
嘘書いてマンセーすると鵜呑みにする人がいるからやめよう。
>>938 あ?8の1番目のリリースまで2〜3ヶ月だろ。
最後のリリースが5ヶ月だから全部嘘だと思いたいならそれでもいいが。
942 :
デフォルトの名無しさん :2006/08/15(火) 14:06:12
ここでだんごが登場すると面白いんだが
ああすまん、たしかに半年だ。
944 :
デフォルトの名無しさん :2006/08/15(火) 14:07:41
>>941 すでに開発が止まってしまったのは認めねばなるまい。
>>941 5ヶ月と書くと、それを見て鵜呑みにする人がいるからやめよう。
今月がちょうど3ヶ月目だからなんとも言えないのと、 開発ペースが遅くなった、または止まったとして ここで騒ぐ意味あるのか。 「WTL終わったな」と言いたいだけならム板の慣習通り専用スレ作った方がいいぞ。
>>946 嘘書いてマンセーするのはやめようってことだ。
本気にしてWTL使う人がいたらかわいそうだろ?
おまえらよくこんな過疎スレで一昔前の「Java VS .NET」みたいなことやる気になるよな
夏休みの風物詩というか
WTLのパフォーマンスやコードサイズが問題だとかいう馬鹿はとりあえず サンプルコードなりベンチマークなり用意しろな。
>>952 開発も止まったことだしもう良いでしょ。
スレが伸びてたから、新バージョンでも出たのかと期待した俺が馬鹿だった。
Yahoo! Groupsも今年に入ってから停滞してる。
見ればわかるが。
できの悪い糞ツールキットでも作ってる業者の 工作員かと勘ぐってしまう
そこまで被害妄想が酷いようなら普通に病院行ったほうがいいんじゃね?
あーあ怒っちゃった。
>>959 君のまわりは陰謀が渦巻いてるんだよ。
俺は良い病院は知らない。ごめんな。
964 :
デフォルトの名無しさん :2006/08/15(火) 14:47:30
とりあえず糞でもなんでもいいから WTLよりいいライブラリ作って出してくれよ。 言いだしっぺの何とやら。
止まったな 所詮WTLより優れたものを作れないクズが騒いでるだけ
病院行ったんだろ。
967 :
デフォルトの名無しさん :2006/08/16(水) 19:49:15
cmcmFinalZwtew3.d(w
968 :
デフォルトの名無しさん :2006/08/17(木) 00:06:59
APIで書くにはめんどくさく、MFCとか.NETとかの使うまでもない小物ツール作るには 十分重宝してるし、代替手段ってパッと思い浮かばない。 更新が滞ったっていいじゃん。「枯れてきた」ってことで。
そんなバグおおいの? 結構、ごりごり書き始めてるんだけど・・・
バグだらけになるほど厚いラッパーじゃない。 せいぜいあってもAPI・コントロールの仕様変更に伴う互換性の問題くらいじゃないかな。 覚えれば圧倒的に楽だから、問題箇所を自前で修正してでも使う価値はある。
デバッガでコード追えるしね。 WTLクラス -> 継承して汎用的な機能を付加 -> 継承して使い回し って使ってるから、↑ここでバグフィックスしたメソッドを入れれば大丈夫かな。
実際に中規模ソフトに WTL を使おうと思ってるんだけど、 具体的にどこがバグで、どこが実際に遅くなるの?
WTLのバグやら非効率やらで困ったことは特にないなあ。 ATL Serverとかだとアレだが。
,. -一  ̄ ̄` - 、
/ \
|====ミx,、、_ \
、__>ァ¬一ァ―r¬ミi、 \ オヤシロさまは開発の守り神さま。
 ̄7'/'/ //// ,ハヘ.,ニヽ、 } …プログラミングの決まりを守らずにWTLを使う人を
// / /:,'/,' ' i┴`≠| i }`T''トrイ 絶対に許さない。 私はちゃんとMFCを使った!
//i , ; !:!:| !:i | | |,ハ. l. l. }::| でも
>>1 はWTLしか使えなかった。 だから!
| i {. { l | トi;、l_ト、 | _,. ィく!ノi. }:| :! l :| オヤシロさまの祟りにあってしまったに違いないのッ!!
N.\ヽ.ヽ.ヽi!.{::::ji!ヽ!.'{_:::::} ji. |,リノ ' , |
>ト、_トトr`´ ,______  ̄´イ/',.イ/ :/
/:イ ハトゞゝ Y¨ ̄} ≦,イィ1 イ /| オヤシロさまの祟りは信じようと信じまいと、
_. --- 、 /〃 ,'// /:/_> `二 イ //ノ ,ハ{ノ! 確かにッ、
, ‐',.- \. ,'./.| /!|:|レ'|:{r一 ''  ̄iスニム.ム!_ル'
l | /⌒ | V | | ||/_ヽ-〉 _,イ/ , -- \
l__,/| :| | /.N / } |__,///>/ !
ー1 ,ノ ,:'1 ,Kニ.ヽ| \__, イ { 〈 '
丁 /´ ヽ. ヽ} '⌒ヽニ=ヘ. イ /
`iー.′ l /! /l ヾニ゙イ
! }/_,ノ 〃 ` ̄´/
ヽ __/フ'´ 〈{ /
_/ / / 、____ ,.! ,/ \
/ ' / | ヽ . _ ー '´
j;;;;;j,. ---一、 ` ―--‐、_ l;;;;;; {;;;;;;ゝ T辷iフ i f'辷jァ !i;;;;; ヾ;;;ハ ノ .::!lリ;;r゙ `Z;i 〈.,_..,. ノ;;;;;;;;> そんなふうに考えていた時期が ,;ぇハ、 、_,.ー-、_',. ,f゙: Y;;f 俺にもありました ~''戈ヽ `二´ r'´:::. `!
977 :
デフォルトの名無しさん :2006/08/19(土) 05:32:55
質問です。 VS2005 に WTL8を入れてるんですけど アプリケーションウイザードで生成したダイアログのOKボタンをダブルクリックで LRESULT CMainDlg::OnBnClickedOk(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) こんなコードが自動で生成されますが、これが生成された途端コンパイル通らなくなります。 どうやら、 >error C2504: 'CUpdateUI' : 定義されていない基本クラスが宣言されています。 これが原因らしいのです。 で、マウスをCUpdateUIの上に試しに載せてみても、どうやら未定義らしいのです。 このせいで、コントロール貼り付けてもそれに対応したコードをかけなくなっています。 CUpdateUIを使いまくるみたいなんで・・。 どうすれば解決するのでしょうか?
978 :
デフォルトの名無しさん :2006/08/19(土) 09:27:09
>>977 WTL/ATLを使うなら、ダブルクリックで作成されたコードは使えないよ。
あれはMFCを想定して生成しているから...
maindlg.cpp が自動的に生成されていると思うので、それのコンパイルでエラーが発生している
maindlg.cppには、WTL/ATLで必要なヘッダー定義が自動生成されていないためにエラーがでるんだよ。
対応方法は2通り
1.maindlg.cpp を削除して、maindlg.hに実装コードを書く
2.maindlg.cppのヘッダー定義を<プロジェクト名>.cppを見ながら、ゴリゴリ書く
おれは、1を推奨する。
WTL/ATLを使うと、どうしても .hに実装コードを書くことが多くなる
ume
CUpdateUIは atlframe.h だな
>>978 最初に.cppを生成するかどうかは選べるでしょ。
漏れは小規模なテストプログラムみたいの以外では、
無理やりヘッダに詰め込む事はしないようにしてる。
ヘッダが肥大化すんのよね。 CMainFrameは巨大化しがちなので、実装(cpp)は複数ファイルに分けたりすることもある。
>実装(cpp)は複数ファイルに分けたりすることもある。 テラキタナス(wwwwwwwwwwwwwww
CMainFrameに貼り付けるコントロールをそのままメンバ変数にして イベントハンドラ書きまくってたら肥大化する。 CMainFrameに貼り付けるコントロール毎にクラス化すべし。 各コントロールクラスはCMainFrameのポインタもってね。
コントロールははメッセージリフレクション使って実装してるからいいんだけど メニューの項目が膨大になると・・・ね。
メニューの項目一個一個をActionクラスにしよう
988 :
985 :2006/08/19(土) 15:53:44
>>987 そうそうメニューもそうすべし。
自分はC#でだけど、ベタベタ書いてたら、ソースふくれまくったよ。
うめ
梅
埋め
ウメ
あっ! 埋め
Ume
楳
梅酒
埋めに何日かけるつもりだ
まったくだ
うめっうめっうめっっ
1000なら、ATL/WTL開発終了
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。