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

■MFC相談室 mfc11.dll■

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
Microsoft Foundation Classライブラリ専用スレです。

前スレ
■ VisualC++(MFC限定)相談室 MFC10.dll■
http://pc5.2ch.net/test/read.cgi/tech/1074104008/

関連リンクは >>2-10 の辺り。
0554デフォルトの名無しさんNGNG
>>552
同期クラスは例外で、オブジェクトレベルでスレッドセーフ。
0555デフォルトの名無しさんNGNG
>>552
MFCにシングルスレッド用ライブラリなど存在しない。
シングルスレッド用とマルチスレッド用(スレッドセーフ)があるのはCランタイムライブラリ。
0556デフォルトの名無しさんNGNG
>>553
IPだけでなくネームアドレスも使えるだろ?
ポートは使用するサービスによって決まるもんなんだからあらかじめ決めて動作
させるのがネットワーク・アプリ書くときの前提になると思うが。

何がしたいのか、キミのネットワークの仕組みについての理解度がどれくらいか
よく分からないね。
0557デフォルトの名無しさんNGNG
>どーやって接続先、自分のIPアドレスとポート番号を取得できますか?

自分の方は GetSockName(), 先方は GetPeerName で取れます。
IPv6 対応はそれぞれ GetSockNameEx, GetPrrtNameEx。
0558デフォルトの名無しさんNGNG
指がずれたな(w
0559デフォルトの名無しさんNGNG
>>558
接骨院へ
0560デフォルトの名無しさんNGNG
MFC version 6.0 (still mfc42.dll) Visual C++ version 6.0 シングルスレッド用DLLあり
MFC version 7.0 (mfc70.dll) Visual C++ .NET なし
0561デフォルトの名無しさんNGNG
> 同期クラスは例外で、オブジェクトレベルでスレッドセーフ。
そりゃそうだろ(藁)
0562デフォルトの名無しさんNGNG
>>561
CEvent::SetEventの呼び出しを
Win32の生のクリティカルセクションで同期するバカが実在したりするから
世の中は面白い。
0563デフォルトの名無しさんNGNG
てか、同期クラスはただのラッパーだし
0564デフォルトの名無しさんNGNG
質問です
CDialogBar上にボタンを配置して、それを条件に合わせて、
有効無効の変更を行いたいのですが、何処で行えば良いでしょうか?

MFCのソースを追っている限りでは、コマンドハンドラが存在すると常に有効に
なってしまうように見受けられますが・・・

0565デフォルトの名無しさんNGNG
>>564
コマンドマップに EnableCommandUI だかなんだかを追加するんじゃなかったかな。
0566デフォルトの名無しさんNGNG
>>564
CDialogBar m_wndDlgBar;
....
CButton *pBtn=(CButton *)SubclassDlgItem(IDC_BUTTON1, &m_wndDlgBar);
pBtn->EnableWindow(FALSE/TRUE);

では、だめかな?
0567564NGNG
>>565
>>566
返答有難う御座います
CMainFrameのコマンドマップに
ON_UPDATE_COMMAND_UP( IDC_BTN_XXX, OnUpdateBtnXXX )
を手動で入れてそこで処理させることで実現できました
0568デフォルトの名無しさんNGNG
>>562
すみません、解説お願いします。
(理解できてません…)
0569デフォルトの名無しさんNGNG
>>568
1.「MFCで提供されているクラス、同一のインスタンスへのアクセスはスレッドセーフではない」という話をどこかから聞きつける。
2.そうかそうか、と言って、以下のようなコードを書く

とあるスレッド
EnterCriticalSection( &csEvent1 );
event1.SetEvent(); // スレッドセーフじゃないのでクリティカルセクションで保護
LeaveCriticalSection( &csEvent1 );

別のスレッド
EnterCriticalSection( &csEvent1 );
HANDLE hEvent = (HANDLE)event1; // スレッドセーフじゃないのでクリティカルセクションで保護
LeaveCriticalSection( &csEvent1 );
WaitForSingleObject(, INFINITE);

実際にはもちろんこんな必要はない。
0570デフォルトの名無しさんNGNG
MFCで全角スペースをトリミングしたいのですが
自分でロジック組む以外ないですかね?
0571デフォルトの名無しさんNGNG
ロジックとか言うほどのもんかよ
0572デフォルトの名無しさんNGNG
>>571
君の言うロジックの定義は?
0573デフォルトの名無しさんNGNG
定義とか言うほどのもんかよ
0574デフォルトの名無しさんNGNG
>>573 説明出来ないのか ( ´,_ゝ`)プッ・・
0575デフォルトの名無しさんNGNG
説明とか言うほどのもんかよ
0576デフォルトの名無しさんNGNG
説明とか言うほどのもんかよとか言えるほどもんかよ
0577デフォルトの名無しさんNGNG
ほどもんかよ
0578デフォルトの名無しさんNGNG
ぼぉくほどもん。ターケコープタァー!
0579デフォルトの名無しさんNGNG
CWebBrowserクラスのNavigateで、自前のウィンドウに埋め込みウェブを表示させているのですが
そこのユーザーエージェントを制御したいのですがどうすればよいでしょうか?
教えてください
0580579NGNG
Navigateに与える引数を工夫すれば実現できそうなのですが・・・
どなたかヒントください
0581デフォルトの名無しさんNGNG
夏ですね
0582570NGNG
夏厨が沢山、湧いてますなぁ〜。
無理っぽいので自分で作ります。
0583デフォルトの名無しさんNGNG
>>582
応援してます(はぁと
0584570NGNG
>>583
応援されたので作って見ました。一応、動いてるけど、これでええのかな?

CString s = "うあ ああああ     ";
int c;
int last_pos = -1;
int pos;
int i = 0;

while (i < s.GetLength()) {
   pos = i;
   if (IsDBCSLeadByte(s[i])) {
      if (i == s.GetLength() - 1) {
         c = ' '; // DBCSの先頭バイトだけが最後に残っている場合
         i++;
      } else {
         c = ((BYTE)s[i] << 8) + (BYTE)s[i+1];
         i+=2;
      }
   } else {
      c = s[i];    
      i++;
   }
   if (_istspace(c) || c == 0x8140) { // ホワイトスペースか全角ブランク?
      if (last_pos == -1)
         last_pos = pos;
   } else {
      last_pos = -1;
   }
}
if (last_pos != -1)
   s = s.Left(last_pos);
0585570NGNG
VBやC#もTrimは全角スペースをちゃんと処理してるのね。MFCだめぽ。 orz
0586デフォルトの名無しさんNGNG
日本語が変だ。orz
0587デフォルトの名無しさんNGNG
ちょっとこのスレ元気ないし、とりあえず誰か579の問いに答えてやったらどうよ?
オレはわからないんから答えられないけどさ
0588デフォルトの名無しさんNGNG
579さんこんばんは。
0589デフォルトの名無しさんNGNG
出来ません
CWebBrowserではIEのコンポーネントを使っているので、
どうしても変更したければSDKベースで作り直して下さい。
0590デフォルトの名無しさんNGNG
答えろと言われても、これ見ろとしか言えないんだが。。。
http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/WebBrowser/WebBrowser.asp
0591579NGNG
>>590
NavigateのPostDataで送るデータを工夫すれば
なんとかなりそうなのですが・・・
どこかに参考資料ないですかね?(できる限りは調べたのですが)

よろしくおねがいします


0592デフォルトの名無しさんNGNG
それくらい自分でなんとかしろ
0593デフォルトの名無しさんNGNG
> VBやC#もTrimは全角スペースをちゃんと処理してるのね。MFCだめぽ。 orz
VBやC#がどんな文字を扱っているか調べた後、CString::TrimXXXX 使いなさい。
0594デフォルトの名無しさんNGNG
>>591
http://www.codeproject.com/miscctrl/#HTML+Browser+Controls
0595デフォルトの名無しさんNGNG
>>593
先生! 海栗は嫌いでつ。
0596579NGNG
>>594
いろいろ系統の似たサンプルはあるんですが、
User-Agentを制御するサンプルはありませんね
0597デフォルトの名無しさんNGNG
>>596
UrlMkSetSessionOption()
URLMON_OPTION_USERAGENT
0598デフォルトの名無しさんNGNG
今までありがとう、MFC
0599デフォルトの名無しさんNGNG
これからもよろしく、MFC
0600デフォルトの名無しさんNGNG
ATLのことも忘れないでください。
0601デフォルトの名無しさんNGNG
海栗って何?
0602デフォルトの名無しさんNGNG
海栗=うに=unix
0603デフォルトの名無しさんNGNG
MFCのサンプルなどでCodeGuru等が有名ですが、
CodeGuruのソースのライセンスはどのようになっていますでしょうか?
サイトの方をみたのですが、それらしき文章がないように思い受けます。

スレ違いかもしれませんが、ご教授いただければとおもっております。
0604デフォルトの名無しさんNGNG
>>603
あれは作者がそれぞれいるだろ
0605デフォルトの名無しさんNGNG
雲丹
0606デフォルトの名無しさんNGNG
>>601
海栗=うに=海栗コード
0607デフォルトの名無しさんNGNG
タスクバーに常駐するタイプのプログラム作ってます。
で質問なんですけど、xpのタスクバーは非アクティブのとき非表示に出来ますが
どうやって制御すればいいんでしょう?教えてください
0608デフォルトの名無しさんNGNG
少なくともMFCにはそんな機能は無いな
0609デフォルトの名無しさんNGNG
>>607
タスクバーに常駐させるだけで良いのでは?

タスクバーが非アクティブのとき非表示になっても何も困らないのでは?
0610デフォルトの名無しさんNGNG
「アクティブでないインジケータを隠す」機能に対応できず、常に表示されてしまっている状態で困っています
0611デフォルトの名無しさんNGNG
>>610
つまり「アクティブのまま」なんじゃないの?
0612271NGNG
MFC最高。MFCあったらC++なんかイラネ
0613デフォルトの名無しさんNGNG
>>612
保守乙
0614デフォルトの名無しさんNGNG
KFC最高。KFCあったらMacなんかイラネ
0615デフォルトの名無しさんNGNG
>>614
スレ違い乙
0616デフォルトの名無しさんNGNG
sage乙!
0617デフォルトの名無しさんNGNG
MFC乙!
0618デフォルトの名無しさんNGNG
lps乙CmdLine
0619デフォルトの名無しさんNGNG
X1-turbo乙
0620デフォルトの名無しさんNGNG
or乙
0621デフォルトの名無しさんNGNG
初心者なんですが、今MFCからC言語始めてるんですが、
APIを直接使わずにMFCだけでAPIでできることのすべてを代用することができますか?
0622デフォルトの名無しさんNGNG
>>621
寡聞にして「すべて」を代用できるかどうかは知らんが、
少なくともAPIの知識が必要になるメンバ関数は少なくない。
MFCを使いつつ、その先にはAPIがあることを念頭に入れておくのがいいと思う。
0623デフォルトの名無しさんNGNG
>>621
> 初心者なんですが、今MFCからC言語始めてるんですが、

「初心者」って言っても色々あるだろうが、そんなことできるんだろうか?
と素朴な疑問。

Cの基礎的な書式とC++のクラス概念くらい学んでからWindowsプログラミング
に移行した方が良いっていうか、そうじゃないと普通無理だろっていうか・・・。
0624デフォルトの名無しさんNGNG
とりあえず普通に質問に答えるなら、出来るか出来ないか。だろ?
なんで君たちはそこには言及しないんだい?

という訳でAPIでMFCの代わりは出来ますが、MFCでAPIの代わりは出来ません。
0625621NGNG
>>622
全部自分でやるAPIのほうがわかりやすくて魅力的に見えてきました・・・。
この関数できたらAPIやってみようと思います。

>>623
プログラムの勉強を始めて今2週間くらいです。
C言語の文法はなんとなくわかったのですが、コードでCaptionを変える方法で躓きました。
MFCはAPIをラップしたものだから同じ機能があると思ってMFCメインにしようと思ったのですがVCが自動的にやってくれすぎて一向に構造がクリアにみえてきません・・・。
MessageBox関数と同じ機能をもつ関数を自分で作るにはどうすればいいんでしょうか。
と思っていたらなにやらできたようです。
MSDNわかりにくっ(;´Д`)

>>624
なるほど。
APIのほうが優れもののようなのでキリがついたらそっち勉強しようと思います。
0626デフォルトの名無しさんNGNG
つうか、「C言語」じゃねえよ。
0627デフォルトの名無しさんNGNG
APIの方が優れてるってのはどうかと思う。MFCはどっちかというとプログラマの手間を
省くための便利ライブラリなんだし、技術がないならむしろMFCを積極的に利用した方
が楽ができるし良い物を作れる。大抵のことはMFCでできてしまうんだし。
0628デフォルトの名無しさんNGNG
C -> API -> C++ > MFC でいいよ。
0629デフォルトの名無しさんNGNG
そしてMFCに嫌気が差して、APIに戻るか他のライブラリを探すようになる。
0630デフォルトの名無しさんNGNG
>>629
たしかにかなりの人がMFCに挫折するね
0631デフォルトの名無しさんNGNG
なんで、MFCで挫折するんだろうね?
0632デフォルトの名無しさんNGNG
へんなマクロが嫌だ。
0633デフォルトの名無しさんNGNG
なんで、そんな動きするのか、わけがわからん。
ソースおっても、膨大すぎて意味分からん。
ウィザードでつくったものを、どう変更すりゃいいのか、意味不明。
C++とAPI知ってんのに、意味分からんマクロとか大杉。
すでにJavaに移行しました。Java分かりやすくてサイコー!!
0634デフォルトの名無しさんNGNG
MFCがいやで、C++ Builderに逝った人は多そうだな。
漏れは、WTLにいったよ。
2005ではMFCはどうなるんだろう〜?
0635デフォルトの名無しさんNGNG
それなりに枯れてて出来たソフトの質はいいんだけどね
覚えるのにWin32API以上に労力が必要なのは痛いね
0636デフォルトの名無しさんNGNG
俺MFCに依存しまくり・・・・・・・orz
0637デフォルトの名無しさんNGNG
全然 Foundation じゃないよね。
0638デフォルトの名無しさんNGNG
MFCに挫折して、Delphiに逝った趣味グラマです。Delphiだと、VCLのソースを見る事は少ないです。MFCのフレームワークは、いくつものクラスを連動して使う事を強いられます。VCLだと、あるコンポーネントだけ使うということが容易なのがいいです。
0639デフォルトの名無しさんNGNG
MFC の限界っていうより、C++ の限界にかなり制約を受けてると思う。
0640デフォルトの名無しさんNGNG
C++がもっとまともな仕様なら
MFCも使いやすいライブラリになっていただろうに。
0641デフォルトの名無しさんNGNG
最近Java厨がいろんなスレを荒らしてるね
0642デフォルトの名無しさんNGNG
MFCが肌に合わないならWTLでも試しては伺か?
ってか、厨房の言語の宣伝とかいらねぇ。

Del厨もJava厨も巣に帰れと(ry
0643デフォルトの名無しさんNGNG
そもそもMFCが肌に合わないとかいう話がスレ違いなんだが。
愚痴はマ板へ。
言語厨は厨用スレへ。
ここはどんな理由にせよMFCを使う人のためのスレ。
0644デフォルトの名無しさんNGNG
亀ですがクラスレベルでスレッドセーフとは何を意味してますか?
オブジェクトレベルでスレッドセーフでないということは分ります。
同一インスタンスのものを複数のスレッドから触るときは排他がいるということですね。

クラスレベルでもスレッドセーフでないと言ったらどうなるのでしょう?
たとえばそれはあるクラスがstaticなメンバなどを使ってそのクラスの共有の
情報をもっていてそれが複数のスレッドから触られるとおかしくなるような設計である。
といったことですか?
0645デフォルトの名無しさんNGNG
dejavu?
0646デフォルトの名無しさんNGNG
>>644
そういうことだと思う
0647デフォルトの名無しさんNGNG
>>646
ありがとう!
0648デフォルトの名無しさんNGNG
.NETにはあるようですが、MFCにてurlencodeをする方法がみつかりません。
良き方法があればご教授いただきたい。
やはり、コーディングするしかないのでしょうか?
0649デフォルトの名無しさんNGNG
>>640
時間軸として逆じゃね?
ARM以前のC++の貧弱な表現力で作ったらあーなったのがMFCで、
ある意味、今のC++に至る過程でMFCは反面教師として機能していた。
0650デフォルトの名無しさんNGNG
今MFC作ったらCStringもstd::stringの派生だったかもしれないね。
CObArrayなんかもなかっただろうし。
0651デフォルトの名無しさんNGNG
>>650
無知登場
文句は受け付けません
ググレ
0652650NGNG
>>651
文句は言わんが、あんたの言いたいことが判らん。
#だからこそ無知と言われているのだろうが。
0653デフォルトの名無しさんNGNG
>>651
ない爪を隠そうとしなくてもw
■ このスレッドは過去ログ倉庫に格納されています