■ VisualC++(MFC限定)相談室 ■

このエントリーをはてなブックマークに追加
912デフォルトの名無しさん:01/12/08 00:41
EXEファイルの小さいアイコンの変更の仕方を教えて下さい。
どうしてもMFCのアイコンになったまんまなのですが…。
>>912
上の方のコンボボックスをいじるべし。
914デフォルトの名無しさん:01/12/08 00:52
>>913
上の方とはどこの事なんでしょうか?すいません、初心者で…
>>912
リソースエディタでアイコンを直接変更するのはダメなの?
それともこういうこと?
http://www.ylw.mmtr.or.jp/~akky/mfc/dlgicon.html
一つのアイコンファイルに複数のサイズの絵がおけることを知らないんだよ、きっと。
>>916
あぁそういうことか。
リソースエディタを開いて「32×32」とか
書いてあるコンボボックスを選択すればよいってことね。
918デフォルトの名無しさん:01/12/08 06:20
(ノ゜O゜)ノおぉ〜!
上のコンボボックスの意味がやっとわかりました。
リソースのアイコンファイルの編集の時の話だったんですね。
僕はてっきりダイアログの設定でアイコンを指定すると
アイコンを自動的に小さく縮小しているものだと思ってました(汗)
小さいアイコンを作って解決出来ました。ありがとうございます。
919909:01/12/08 18:13
>>911

まじですか?ブラウザコントロールの親(ダイアログ)となると
CDialogを継承しているだけなので、CHtmlViewの関数である
OnBeforeNabigate2()は呼び出せないと思いますが。

それとも、この親(ダイアログそのもの)をCHtmlViewから継承させる
ということですかね?

うーーん
>>919
いやそうじゃなくて ブラウザコントロールの「これからなびげーとするよ」メッセージのハンドラがOnBeforeNabivage2()ってことだろ。

CHtmlViewとブラウザコントロール(IWebBrowser2だっけか)の関係をよく考えてみろ。
921デフォルトの名無しさん:01/12/08 22:30
ダブルクリックに対応するメッセージってあるんですか?
922少しは調べろよ:01/12/08 22:46
>>921
WM_LBUTTONDBLCLK
CWnd::OnLButtonDblClk
SDI+MFCで生成したウィンドウのテキストエリアにある
スクロールバーを消すにはどうしたらよいでしょうか?
924デフォルトの名無しさん:01/12/08 23:15
>>922
ゴメン、サンクス
モーダルレスダイアログでユーザーにデータ入力して、メインウインドウの内容を変えるようにしたいんですが、
モーダルレスダイアログはどうやって呼び出す側にメッセージ与えるんですか?
例えば元のクラスの関数呼びたいときとか、、
いまは呼び出す側のポインタも貰って使ってるが、そうすると相互includeしてたまにおかしくなる。
クラス宣言の前にincludeするクラスを書いておけば通るが、なんか危なそうなので、、
>>925
ユーザ定義メッセージ
ああ、、(;´Д`)その手があったのか←逝って良し
closeのときメインの方にポストするんですか?
よーくわからないからヘルプ見てみる、、、
サンクス!
928デフォルトの名無しさん:01/12/09 06:59
>>922
実はいい人
929900,909:01/12/09 08:33
>>920

最近きづいたことなのですが、まず、自分のアプリはウィザードから
「ダイアログベース」として作成して、Webオブジェクトを貼り付けて
コントロールしています。

もしかして、CHtmlViewって、「SDI,MDI」ベースのアプリじゃないと
利用できないっぽくないですか?
こちらだと、問題なく、OnBeforeNavigate2はオーバーライドできますが・・・

問題点をまとめると、ダイアログベースのアプリで、あるWebオブジェクト
に対するCWebBrowser2クラスで「OnBeforeNavigate2」と同じことを
やりたいのです。

どなたかどうか知恵をかしてください
930デフォルトの名無しさん:01/12/09 11:34
質問でございます。
WIN32(NT SP5)で、VC6のMFCで作成されたモジュールが実行されている環境です。
VCから起動している8つ程度のスレッドがおのおの
VBモジュールを呼び出し、そこで1個の名前付セマフォを取得しているような状態で、
VCから起動されたスレッドがランタイムエラーを出したときに、
VBが獲得した名前付セマフォが開放されず残っているようなのです。
そこでVBがつかんでいるセマフォを開放する手段はあるでしょうか?
ReleaseSemaphoreは自分がつかんでいるセマフォしか開放できないのでしょうか?

詳しい方教えてください。
>>929
だからぁ
ダイアログクラスで、ウエブブラウザコントロールの「これからナビゲートします」メッセージのハンドラを作ればいいだけじゃないの?

CHTMLViewクラスは内部にウェブブラウザコントロールを持っていて、「これからナビゲートします」メッセージのハンドラとしてOnBeforeNavigate2()が書かれているわけだろ?
君の場合はCHTMLViewがダイアログに変わるだけの話だろ?。

だまされたと思ってクラスウィザードで ダイアログクラスにウェブブラウザコントロールの「これからナビゲートします」メッセージのハンドラを作ってみてくれ。
それで何が不満なのか教えてくれ。

それともウェブブラウザコントロールの派生クラス自身でどうしてもやりたいのか?それならCHtmlViewの話がでてくるのはおかしくないか?

それとも俺はからかわれているだけなのか?
>>930
そのクソOCXを捨てなさい。
933デフォルトの名無しさん:01/12/09 18:40
>CHtmlView
Viewはウィンドウではないのでメッセージはポストされません。
なのでダイアログの派生元をCHtmlViewにしてもメッセージハンドラは
呼ばれません。
934900,909:01/12/09 21:24
>>931
いろいろありがとうございます。決してからかっていません。
それから、動作報告も必ずします。

これから試してみますが、933さんのような意見があると、ちょっと不安・・・
931さんを信じてみます
935デフォルトの名無しさん:01/12/09 22:13
ダイアログベースのアプリケーションで
エディットコントロールなどを貼り付けてしまうと、
WM_CHARやWM_KEYDOWNなどがダイアログクラスで受け取れなく
なってしまいますけど、
いい対処法ってありますか?
936900,909:01/12/10 03:29
>>931
やっぱり駄目でした

>だまされたと思ってクラスウィザードで ダイアログクラスに
>ウェブブラウザコントロールの「これからナビゲートします」メッセージの
>ハンドラを作ってみてくれ。

class CTestDlg : public CDialog
{
}
ダイアログクラスはこんな感じですが、
やはり、ClassWizardでは、OnBeforeNavigate2メッセージハンドラは
生成できないですね。

CDialogを継承するだけでは無理ぽい気もしますが・・・
かといって、

class CTestDlg : public CDialog,public CHtmlView
{
}

も駄目でしたし。
>やはり、ClassWizardでは、OnBeforeNavigate2メッセージハンドラは
>生成できないですね。
ClassWizardがないと、何もできない人のようですね:)
CHtmlViewくらい、改造してしまえばいいのに。
どうしてCHtmlViewのソースを見ないんだろう…
>>936
お前には本当にいらいらさせられるな。
ダイアログにブラウザコントロールを貼り付けるだろ。
クラスウィザードでダイアログのクラスを選択して オブジェクトIDでブラウザコントロールを選択するだろ。
そうするとそのブラウザコントロールのメッセージとしてBeforeNavigate2というのがあるだろ。
そのメッセージのハンドラを作れって二日前から延々言ってんだよ。

ダイアログベースのアプリなんだからCHtmlViewは全然関係ない。

メッセージハンドラを作るんだぞ!。オーバーライドじゃないぞ!。わかるか??
940結構初心者:01/12/10 09:38
すいません。質問です。
文字列の内容を判断して実行させる、インタープリタもどきな機能をもたせたアプリケーションを
作りたいのですが、文字列の判断にif elseを連発して、いまいち見栄えがよくありません。
良い方法があったらどなたかレスお願いします。
941デフォルトの名無しさん:01/12/10 09:42
>>940
yacc&lex
flex&bison
あたりをキーワードに何か探してみなさい
関数オブジェクトをstd::mapに入れる。見た目だけはいいぞ。トロいが。
943デフォルトの名無しさん:01/12/10 10:01
>>939
なんつーか・・・なんだかんだで教えてやってるお前・・・優しいな
惚れちまいそうだ(ぽっ
944940:01/12/10 10:38
>>941
>>942
ありがとうございいます。調べてみます。
ただ、トロいのには抵抗あります。トロさにもよりますが・・・。
945942:01/12/10 11:14
>>944
多少のオーバーヘッドはあるにせよ、総当りでif elseを繰り返すよりは
比較回数減る分速いとは思うが、結局文字列比較繰り返してることには
変わらないからトロい。hash_mapならもうちょっと速いが標準じゃないし。

まぁ、yacc&lex使う根性がなくて、速度を求めないならアリって程度。
946デフォルトの名無しさん:01/12/10 11:18
MFCならCMap?
947940:01/12/10 13:10
>946
CMap!?
ザッツサウンドナイス(訳:根性なくてもできそうな響き♪)!!
それも見てみます。
948デフォルトの名無しさん:01/12/10 14:22
VCでActiveXdll作った時、どこにコード書けばいいの?
>>942
遅いかどうか以前に、yacc と比べると受け付ける言語のクラスが限定されるのが痛いと思われ。
手で状態遷移を計算できる程度だと LR(1) なんて論外でしょ。
950936:01/12/10 17:10
>>939
なるほど
うまくいきました。自分で間違って思い込みしていたところがあって、
ClassWizard立ち上げても見過ごしていました。
デバッガでも万事うまく通過しました!!
ありがとうございました
951デフォルトの名無しさん:01/12/10 19:23
ちょっと失礼!

age。
952デフォルトの名無しさん:01/12/10 21:59
言葉は汚いが、優しい人だ
>>936
どーせジサクジエンだろ?
俺は認めないぞ!
954デフォルトの名無しさん:01/12/11 04:58
ちょっと教えてください
CBitmapButtonで管理している任意のビットマップボタンを
操作不能(マウスオンに反応せずノーマルボタン状態の画像が表示されたまま)
にするのはどうしたらよいのでしょうか?
EnableWindow(FALSE)だと、ボタンの画像すら描画されないですし。
>>954
EnableWindowでできますよ。
ボタンに割り当てる画像(操作不能時)のリソースIDを
"hogehogeX" にしてますよね?
956デフォルトの名無しさん:01/12/11 09:30
>>1
そろそろ新スレたてるべきかと。
もういないかもしれないけど・・・
957デフォルトの名無しさん:01/12/11 09:49
>>1じゃないけど

■ VisualC++(MFC限定)相談室 2■
http://pc.2ch.net/test/read.cgi/tech/1008031675/
958みゆ:02/01/07 17:19
VC++6.0で
新規作成で
MFC AppWizard→ダイアログベース→***App
を選択したもので

始めに出来ているダイアログ画面の
親を適当なもの(ウィンドウクラス名をAとする)
に変更することなんかはできるのでしょうか?

このときダイアログのウィンドウクラス名をBに設定し
親のウィンドウクラス名をAにする方法もおしえてください
959デフォルトの名無しさん:02/01/31 14:18
VC++6.0でNetscapeプラグイン形式のものを
IE6で動作させるためにActiveX化したいと
思っています。
機能は、ファイルアップロード、ダウンロードです。
お勧めの開発方法、書籍などあったら教えてください。
960デフォルトの名無しさん:02/01/31 15:09
質問です。

あるスレッドを使ったプログラムをCOM化すると、
WaitForSingleObjectのところで応答が返ってきません。
どうやらスレッドが終了していないようなのですが、原因不明です。
COM化してない場合は問題なく動くのですが、
なにかご存知の方、いらっしゃいますでしょうか?
>>959-960
新スレ逝ってください。ageないでください。
http://pc.2ch.net/test/read.cgi/tech/1008031675/l50