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

■ VisualC++(MFC限定)相談室 MFC10.dll■

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
Microsoft Foundation Classライブラリ専用スレです。

スレタイ壊れているけど前スレ
■ VisualC++(MFC限定)相談室 MFC9.dll■
http://pc2.2ch.net/test/read.cgi/tech/1062098350/

関連リンクは >>2-10 の辺り。
0002デフォルトの名無しさんNGNG
過去スレ
■ VisualC++(MFC限定)相談室 MFC8.dll■ (スレタイ壊れているけど前スレ)
http://pc2.2ch.net/test/read.cgi/tech/1056584836/
■ VisualC++(MFC限定)相談室 MFC7.dll■
http://pc2.2ch.net/test/read.cgi/tech/1047949606/l50
■ VisualC++(MFC限定)相談室 MFC6.dll■
http://pc2.2ch.net/test/read.cgi/tech/1039607377/
■ VisualC++(MFC限定)相談室 5■
http://pc3.2ch.net/tech/kako/1028/10285/1028553308.html
■ VisualC++(MFC限定)相談室 4■
http://pc3.2ch.net/tech/kako/1021/10216/1021620974.html
■ VisualC++(MFC限定)相談室 3■
http://pc.2ch.net/tech/kako/1014/10140/1014057520.html
■ VisualC++(MFC限定)相談室 2■
http://pc.2ch.net/tech/kako/1008/10080/1008031675.html
■ VisualC++(MFC限定)相談室 ■
http://pc.2ch.net/tech/kako/989/989902845.html
0003デフォルトの名無しさんNGNG
スレタイ壊れているけど前スレ
↑
これ消し忘れた。スマソ
0004デフォルトの名無しさんNGNG
>>1
乙
0005デフォルトの名無しさんNGNG
ではスレ最初の質問を。開発環境はVC6.0。

CRichEditCtrlでキー操作による変更をEN_CHANGEで処理し、
SetSelectionCharFormat()で文字色など書式属性を変更している。
削除するだけなら問題ないが、日本語入力で文字列を追加すると
書式属性の変更が画面上に反映されない。
別のコントロールにフォーカスが移った頃になってやっと表れる。
EN_IMECHANGEを試してみたけど、ENM_IMECHANGEをマスクしても来なかった。
(どこかのサイトにRichEdit1.0でないと来ないとか書いてあった)
以上よろしくです。
0006デフォルトの名無しさんNGNG
>>5
変更後に
m_RichEdit.InvalidateRect(NULL);
としてみたらどう?
0007デフォルトの名無しさんNGNG
>>6
それやってるんだ。あとInvalidate()も。
すでに正常に表示されている属性はそのままで、
追加した文字列だけが、1つ前の文字の属性になってしまう。

例…「あ」が赤で「えお」は青、新規追加の「いう」は緑にしたい
 「あえお」 → 「あいうえお」
こうすると「あいう」までが赤で「えお」が青になる。
でも削除、たとえば「え」を消すと「あ」赤、「いう」緑、「お」青に変わる。
EN_CHANGEじゃなくて、WM_IME_〜を捕まえないといけないのかな。
0008デフォルトの名無しさんNGNG
ダイアログが表示されているときに、エンターキーやESCキーを押すと終了してしまいます。
これらの動作を禁止するにはどうすればいいでしょうか?
0009デフォルトの名無しさんNGNG
>>8
OnOK()
{
//CDialog::OnOK(); こいつわEndDialogしやがる
return;
}

( ´∀`) <OnCancelモナー
0010デフォルトの名無しさんNGNG
モナーさん感謝します

しっかり出来ました(^o^)/
0011デフォルトの名無しさんNGNG
>>8
こことか見るとその手のマメ知識が身に付くよ
ttp://www.athomejp.com/goldfish/mfc/
0012デフォルトの名無しさんNGNG
いろいろ書いてありますね
しかもクラス別に書いてあって見やすい^-^

今度MFCで困ったとき覗いてみます(^-^;)
0013デフォルトの名無しさんNGNG
リソースのテキストボックスのプロパティにてnumberをtrueにして数値以外入力できないようにしたのですけど
コピペすると文字も入力できてしまいます。
数値だけしか入らないようにしたいのですがいい方法はありますか?
0014デフォルトの名無しさんNGNG
>>13
テキストボックスって「エディット・ボックス」のことか?

コントロールにメンバ変数をintやUINTで割り当ててやれば範囲指定も含めて
勝手にやってくれるが。
0015デフォルトの名無しさんNGNG
Masked Editを使うわけにゃいかんかね?
0016デフォルトの名無しさんNGNG
>>14
普通にキー入力だとちゃんと無視してくれるんですが、
それだとコピペで入力できてしまうんです

>>15
ActiveXコントロール作ってるのでなるべくActiveXコンテナにはなりたくないと思ってます。
0017デフォルトの名無しさんNGNG
メニューの「貼り付け」って項目を
メニューがプルダウンしたときに
クリップボード中にテキスト形式のデータがあるかを判定して
あれば有効に、なければ淡色表示にしたくて
UPDATE_COMMAND_UIを使って実現できたんですが
これを使うと便利な事に同じIDのツールバーも同じ処理をしてくれるんですが

メニューの場合は、プルダウンしたときだけに呼ばれるのですが、
ツールバーの場合は、マウスが1ドット動いただけで呼ばれてしまいます
メニューの有効無効の判定する処理が重くなるとかなりの負荷になります
UPDATE_COMMAND_UI以外にプルダウンメニューだけに
適応できる方法ってないでしょうか?
メニューのIDとツールバーのID変えれば済むのですが、
管理上わかりにくくなるので困ってます
0018デフォルトの名無しさんNGNG
ツールバーのUPDATE_COMMAND_UIはOnIdle()の時に呼ばれるようになっていたきがする。
001917NGNG
自己解決しました

OnUpdate〜(CCmdUI* pCmdUI)
のpCmdUI->m_pMenu が NULL なら
メニューのプルダウン時じゃないので
無視してツールバーが更新してしまう事を防げました
これで重い判定でもプルダウンした時のみに適用できます
0020デフォルトの名無しさんNGNG

CListView で SortItemsの比較関数の実装を行っています。

static int CALLBACK CExtListView::CompareFunc
(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);

このコールバック関数なんですが、CListViewの中で
GetListCtrl().SortItems(CompareFunc, (DWORD) pSortStruct);
という形でCompareFuncを呼び出すと、第1、第2引数が
いずれもNULLの形で呼び出されます。

これは何が問題なのでしょうか?
両者には有効なLVITEMへのポインタが渡されると思っていたのですが。
0021デフォルトの名無しさんNGNG
渡されるのはLVITEMのlParamへのポインタじゃないか。
0022デフォルトの名無しさんNGNG
>>21
ども。

調べてみたら LVITEM の lParam を設定しないと駄目みたいですね。
設定してデバッグで確認したらCompareFuncに渡されるのは
ポインタではなく、
0 1 / 2 3 / 4 5
といった数字の組み合わせみたいです。おそらくアイテムの
番号なんでしょう。

もう少し研究してみます。
0023デフォルトの名無しさんNGNG
あぁごめん、ポインタではなくlParamね。
で、普通はそのlParamにアイテムのポインタなんかを入れておいて、
CItem pItem = new CItem;
pItem->text = _T("ABC");
LVITEM.lParam = (LPARAM)pItem;
・・・
・・・
CompareFunc(・・・){
 CItem pItem1 = (CItem*)lParam1;
 CItem pItem2 = (CItem*)lParam2;

 // pItem1->textとpItem2->textを比較してソート
}

ってやり方が常道かと。
0024デフォルトの名無しさんNGNG

どもども。どうにか実装できました。
ソートアルゴリズムにはあまり明るくないんですが、
同じソート関数で昇順と降順を交互に変更できる
んですかね。

最初、昇順のときと降順のときでソート関数の符号が
+-逆になるように比較関数を書いてみたんですが、
どうも動作がおかしいので、符号を逆にすることを
やめたら、正しくソートされるようになりました。
(以前は2回ソートするとソート順が変わるようになっていた)


0025デフォルトの名無しさんNGNG

引き続きリストビューのソートの研究をやっておりますた。
↓こちらのスレを参考にしてやってました。
http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_TVdrag.html

>>24の段階では、まだ正しく動作していなくて、
Swap関数を作って、要素を入れ替えながらソートしたら
うまくいかないことが分かったんですが、ソート関数自体は
大筋で正しいアルゴリズムだったようです。

それで↑のURLを見ると、LVITEMのソート直前にlParam に
0から順番に数値を割り振っていますが、やはりこれを
やらないとうまくソートされない。初期の挿入時に1回やれば
OKなのではなく、ソートのたびに再度割り振り直さないと
いけないようです。これはすべて同じ数字の割り振りでは
駄目で、MaxItemCount から0まで減算しながら割り振る方法
でも正しくソートされないようです。(逆順にもならなかった)

それで以上のような結果を踏まえると、>>23さんのおっしゃる
ように lParam にポインタをいれておくことはできないのではな
いかと思うのですが、どうでしょう? 実際にポインタを入れて
使っている人いますか?

0026デフォルトの名無しさんNGNG
できるって。以下文字列アイテムのソート

int nResult = ::lstrcmpi(pItem1->GetName(), pItem2->GetName());

return nReault;

逆順ソートしたい場合は

int nResult = ::lstrcmpi(pItem2->GetName(), pItem1->GetName());

return nReault;
0027デフォルトの名無しさんNGNG
>>25
>うまくいかないことが分かったんですが、ソート関数自体は
>大筋で正しいアルゴリズムだったようです。

ソート関数ではなくコンペア関数ね。
0028デフォルトの名無しさんNGNG
ああ、そっかそっか。
わかりますた。

CompareFunctionで lParam1 と lParam2 を
アイテムの順番と一致することを前提に関数を
書いてますた。

たしかにできるかも知れないですね。
引き続き研究してみます。
0029デフォルトの名無しさんNGNG

LPARAMにポインタを使ってできますた!
この場合は >>25 のように番号の再割り振りは不要らしい。
動作原理は今ひとつ不明ですが・・・。
0030デフォルトの名無しさんNGNG
>>29
SortItems呼び出し中はアイテムの位置が変わらないんだよ。
比較関数が呼ばれるたびに位置が入れ替わるクイックソートとは違うわけだ。
だから、インデックスで指定するGetItemやGetItemTextは
常に同じアイテムからデータを取得することができる。
そのためにlParamにインデックスを振って識別できるようにするわけだ。
これが、lParamがリストビュー以外で構成されているデータを指すポインタであっても同じ。
要はlParamが一意のアイテムに対応付けられていて比較に必要なデータを取り出すことができればいいわけだ。
(ソートが必要なければ対応付けは当然要らない)
インデックスをlParamに振るのは楽だけど、アイテムが多くなるとパフォーマンスの問題が出る。
でも、もっと大量になるとオーナーデータになって、SortItemsが使えなくなるんだけどな。
0031デフォルトの名無しさんNGNG
どもども。

まともなリストビューの実装はほんと難しいですね。
エクスプローラを目指しているんですが、CImageListの
画像もデフォルトだと黒っぽくて汚いし、一筋縄では
いかない感じです。
0032デフォルトの名無しさんNGNG

リストビューで質問なんですが、複数のアイテムをドラッグするには
どうしたらいいのでしょう?

1つのアイテムのドラッグはできたし、選択された複数のアイテムの
取得もできたみたいなのですが、CImageList のドラッグする関数が
static なので複数のドラッグイメージを同時にMoveできない
みたいなんです。

CListCtrl::CreateDragImage() を繰り返して各アイテムのイメージを
作って、それを結合して1つの大きなイメージを作ることはできるん
ですかね。
0033デフォルトの名無しさんNGNG
>>32
ふーむ。よくよく見てみると、エクスプローラの場合、
複数同時ドラッグは独自イメージを作っている感じ・・。
自分でイメージ作るのか・・・マンドクセ。
0034デフォルトの名無しさんNGNG

CImageList ってCDCあたりからイメージを作成することって
できないんでしょうか? アイコンとビットマップからの作成は
あるんですが、メモリ上で作る方法が知りたい。

CListCtrl::CreateDragImage があるので、不可能ではないので
しょうけど、どうやってんだろ?
0035デフォルトの名無しさんNGNG
CBitmapから作れるんだから、いくらでも可能だろ。
0036デフォルトの名無しさんNGNG
ダイアログの左側にツリー貼っつけて、
右側のコントロールを切り替える奴はどうやって実装してるんですか?
0037デフォルトの名無しさんNGNG
漏れはDialogを子ウィンドウで作って
ShowWindow()で切り替えしてる。
それが正しいかどうかは知らね。
003836NGNG
>>37
回答ありがとうです。
子ウィンドウかー。やってみるですよ。
0039デフォルトの名無しさんNGNG
WTLを使ってIEツールバーを自作しています。

リソースにビットマップ画像の列を入れて
ボタンに画像を入れていますが、
あれって全部同じサイズじゃないとダメなのでしょうか?

Googleツールバーだと最初のロゴだけ
違うサイズなのでできるはずなのですが・・・。
あそこだけ、違うウィンドウなのかな?
0040デフォルトの名無しさんNGNG
特定のディレクトリ配下の複数のサブディレクトリからファイルを検索するロジックを
書かなきゃならなくなりそうなんだけど、CFileFindかなんかを使って
サブディレクトリにぶち当たるごとに再帰する以外になんかいい方法あるかな。
自分で書くと、テストが面倒で・・・
0041デフォルトの名無しさんNGNG
>>40
再帰する以外を考える方が面倒だと思うけど?
0042デフォルトの名無しさんNGNG
>>41
どっかに拡張APIでも転がってないかと・・・
#なさそうだなぁ。
0043デフォルトの名無しさんNGNG
"dir /s /b" の出力を利用する。自分では再帰していないので全然オッケーさ♪
0044デフォルトの名無しさんNGNG
マウスによるダイアログリサイズ時や移動時、ダイアログの表示は
そのままで、リサイズor移動予定の枠だけマウスに追尾した表示
になりますよね?これを実際に枠の移動だけじゃなくダイアログの
実体そのものを追尾させる方法ってありますか?
0045デフォルトの名無しさんNGNG
そもそもダイアログをリサイズ可能になんかしねー
移動の方はまったくもって意味不明
0046デフォルトの名無しさんNGNG
>>44
移動時、リサイズ時にダイアログを移動、リサイズする。
WM_MOUSEMOVEやWM_SIZEのタイミングでダイアログをMoveWindowなりSetWondowPosなりしてみては。
動作は確認してないけど。
0047デフォルトの名無しさんNGNG
>>44
それって画面のプロパティの
”ドラッグ中にウィンドウの内容を表示する”
って設定の問題なんじゃないの?
0048デフォルトの名無しさんNGNG
>>47
たぶんWin9xの話だろ
004940NGNG
>>43
どうせ最終的にはフルパスが欲しいから願ったり適ったり。
これでテストが一手間減らせるよ。ありがと♪
0050デフォルトの名無しさん NGNG
ダイアログでのOnButtonでボタンを押したときに効果音がでるようにしたいのですが
どうやればいいでしょうか?
0051デフォルトの名無しさんNGNG
♪
0052デフォルトの名無しさんNGNG
>>50
::PlaySound
0053デフォルトの名無しさんNGNG
>>52
PlaySoundはどのようにして使えばいいのでしょうか?
検索してもいまいち使い方がわからず・・・(ノД`)

今持っているwavファイルの音を効果音として出したいのですが・・・
0054デフォルトの名無しさんNGNG
ヘルプ見れ
0055デフォルトの名無しさんNGNG
>>54
友達の家のPCを使わせてもらってるんですが、ヘルプが見れないんですよ・・・
0056デフォルトの名無しさんNGNG
>>55
ネットで検索の一つでもしれこのやろう!
0057デフォルトの名無しさんNGNG
友達は割れ厨
0058デフォルトの名無しさんNGNG
>>56
検索はもちろんしましたが、詳しく書いてあるサイトがないようなので
0059デフォルトの名無しさんNGNG
>>58
なんでそんなすぐばれる嘘をつくんだ。
0060デフォルトの名無しさんNGNG
>>59
いやホントに検索はしていますが、playsoundと一行書くだけでwavファイルは
鳴らせます・・・とかで、いまいち意味がわかんないんですよ
0061デフォルトの名無しさんNGNG
それでわかんないなら、見込みないからプログラムやめようね。
0062デフォルトの名無しさんNGNG
>>53
::sndPlaySound
0063デフォルトの名無しさんNGNG
#include <Mmsystem.h>
PlaySound( "music.wav", NULL, SND_FILENAME );

Library: Use Winmm.lib
0064デフォルトの名無しさんNGNG
質問です
今回タブコントロールを初めて使うんですが、コントロールの配置方法が良くわかりません。
おそらくshowwindowで変化させることまではわかったんですが
リソースエディタで良いコントロールの配置方法はないでしょうか?
0065デフォルトの名無しさんNGNG
>>64
MFCのプロパティシート/ページのソースでも見てみれば?
0066デフォルトの名無しさんNGNG
モードレスダイアログを使おうとしてWeb調べてみたんだけど
やり方がHogeDlg *dlg = new HogeDlg()でインスタンスを作成して、PostNcDestroyでdelete thisってやってるのばっかなんだが
これってHogeDlg dlg;で作成して、いらなくなったらdlg.DestroyWindow()呼んでやるってのじゃだめなの?(わざわざnewするのに意味あるの?)
0067デフォルトの名無しさんNGNG
HogeDlg dlg;だとスコープ抜けたら自動的に破棄されるだろ。
0068デフォルトの名無しさんNGNG
まぁ、クラスのメンバ変数として(ry
0069デフォルトの名無しさんNGNG
ダイアログで、ESCやEnter押しても終わらないようにするには、
どうすればいいのですか?
0070デフォルトの名無しさんNGNG
>>69
>>11
0071デフォルトの名無しさんNGNG
>>69
仕様を考え直す
0072デフォルトの名無しさんNGNG
Docクラス、Viewクラス、Appクラス、MainFrameクラス
の関係がよくわかりません。
これについて、詳しく書いてある書籍やWebページがあったら教えてください。

入門書(林晴比古のVisualC++6.0入門)をみてもよくわかりませんでした。
0073デフォルトの名無しさんNGNG
>>72
ソース見てみるのもいいよ。俺はそうやって理解した。
0074デフォルトの名無しさんNGNG
>>72
     View
       ↑
App → MainFrame
       ↓
     Document

こんな感じだな。

・Viewクラスから
 GetDocument()でDocumentクラスへのポインタが取れる。
 GetParentFrame() MainFrameへのポインタが取れる。
 AfxGetApp() でAppへのポインタが取れる。

これで各クラスの連携が取れるんじゃないか?
あとは、これをそれぞれどう使うかはユーザー次第。

基本的には
メニュー・ツールバー・ステータスバー・メインウインドウの位置 → MainFrame
クライアント領域の描画 → View
こんな感じになってる。

0075デフォルトの名無しさんNGNG
エクスプローラみたいなファイルビューワが簡単に使えるViewクラスって
MFCに入ってないですか?CListViewとCTreeViewで動作をひとつずつ
作っていかないといけないのでしょうか。
0076デフォルトの名無しさんNGNG
>>75
CFileDialog
007772NGNG
>>73
>>74

よくわかりました。ありがとうございます
0078デフォルトの名無しさんNGNG
処理したあとのデータとかまともにレイアウトして出力するのって
いちいちデバイスコンテキストに線とか引いていくしか無いのでしょうか?
一あわせとか超手間なんですが、。
なんか楽にやるクラスとかツールって無いでしょうか。

今回は一応線引きで出来たんですけど苦労したし、変更とかあったら
調整が大変そうなので、よろしければおしえてください。
0079デフォルトの名無しさんNGNG
>>78
若者よ、それが汝の務めなのです。定型的で間違えやすい作業を見つけたら自動化しなさい。
それが数学的な意味で原始的な内容なら探せばきっと見つかるはず、
あなたの直面する業務に固有な内容ならあなたの身の回りになければ世界中のどこにもありません。
0080デフォルトの名無しさんNGNG
>>78
COMでExcel呼び出すとか? 「楽にやる」って要求を必ずしも満たすとは限らないと思うが・・・。
0081デフォルトの名無しさんNGNG
>>76
お、それ盲点だったかも
CFileDialogをうまく右側に組み込めればありだなぁ
ちょっと研究してみよう
0082デフォルトの名無しさんNGNG
>>79
ありがとう、転職でそんなに若くないけどね。(笑

イラレのデータをデバイスコンテキスト用に出力してくれるコードでも書いてみます。
一ヶ月でよくここまでやったなあ、俺
0083デフォルトの名無しさんNGNG
CFileクラスに関して教えてください。

CFileクラスのReadおよびWrite関数にてメモリの内容をファイルに出力、
またはその逆を行っています。(Read、Writeするサイズは50メガ程度
です。)
プログラムを動作させるマシンによって、abnormal program termination
が発生するのですが、これは何が原因なのでしょうか?
 現状50Mを超える場合は複数回に分けて読み込み、書き込みを行って回避
していますが、原因がわからず困っています。

また、エラーメッセージを出力させるようにしたところ、
「システム リソースが不足しているため、要求されたサービスを完了で
きません。」とのこと。

環境
OS :windows200SP4
開発環境:VC++6.0 Enterprise
0084デフォルトの名無しさんNGNG
>>83
CFileくらすというより、API(ReadFile/WriteFile)の問題になると思うが、俺もこの
問題に直面したことがあって、いろいろやった。で、一番手っ取り早いのはI/Oを
小分けに(10MB以下に)することですな。

50Mかそれ以上を 1I/Oでリソースエラー出さずにRead/Writeすることもできたけど、
小分けにするほうが確実。
0085デフォルトの名無しさんNGNG
CListViewに関して質問です。
アイテムがダブルクリックされたときのメッセージは、HDN_ITEMDBLCLICKで
よろしいのでしょうか。
実際にプログラムを起動してアイテムをダブルクリックしても対応する関数が
呼び出されません。
0086デフォルトの名無しさんNGNG
NM_DBLCLK。おまい、今すぐControlSpyを貰ってこい。
http://www.microsoft.com/msj/0798/controlspy.aspx
0087デフォルトの名無しさんNGNG
Win32ででかいファイルをストリーミング以外で扱うなら
ファイルマッピングを使うと楽で確実ですよ。
0088デフォルトの名無しさんNGNG
>>86
こんな便利なものがあったのですね。
どうもありがとうございました。
0089デフォルトの名無しさんNGNG
リソースでなくコード作成したテキストボックスに送られ
てくるメッセージの取得ってどうやればいいのかな?
0090デフォルトの名無しさんNGNG
>>89
あなたみたいにわからん人のためにリソースエディタがあるんですが。
0091デフォルトの名無しさんNGNG
>>90
知ったかは黙っとけよ
0092デフォルトの名無しさんNGNG
>>89
ハンドラ手でかけ
0093デフォルトの名無しさんNGNG
>>89
テキストボックスってエディットコントロールのこと?
質問の意味がわからん・・・。
0094デフォルトの名無しさんNGNG
>>89
CreateWindowで"EDIT"を指定して作ったウインドウのことだな?
SetWindowLongのGWL_WNDPROCあたり調べてみそ

>>93
消費者向けの用語と、開発者向けの用語が違ってるのはよくあることだよ
0095デフォルトの名無しさんNGNG
MFC的には CEdit派生クラス作って、その中でメッセージハンドリングするのが一番簡単なんじ
ゃないかと。

親ウィンドウ側で何か処理したい場合も、親のBEGIN_MESSAGE_MAP〜END_MESSAGE_MAP
に直書きもアリかも知れないし、親のWindowProc()なりで直接処理するとか、派生クラスから
ユーザメッセージ飛ばすとか、いろいろ考えられる。
009694NGNG
>>95
うわあ、その通り!
スレ間違ってました。吊ってきます。
0097デフォルトの名無しさんNGNG
>>92-96
乙
0098デフォルトの名無しさんNGNG
本を読んでいてCWinApp::OnFileNewについての記述に

1. ドキュメントオブジェクトを生成しますが、データをディスクから読み取ろうとはしません。
2. CMainFrameクラスのメインフレームオブジェクトを生成。
  さらに、メインフレームウィンドウを生成しますが、まだ表示しません。
  このメインフレームウィンドウは、IDR_MAINFRAMEメニュー、ツールバー、ステータスバーを含みます。
3. ビューオブジェクトを生成しますが、まだ表示しません。
4. ドキュメントオブジェクト、メインフレームオブジェクト、ビューオブジェクトの間に接続を確立します。
  これらのオブジェクトの接続を、
  AddDocTemplate呼び出しによって確立されるクラスの接続と混同しないでください。

という記述があったのですが4が何を言おうとしているのかわかりません。
接続を確立するっていうのは何をしていて、どう混同してはいけないのでしょうか?
0099デフォルトの名無しさんNGNG
>89
別にCreateWindowでもControl IDは設定できるやん。
0100デフォルトの名無しさんNGNG
>>98

クラスの接続と、オブジェクトの接続の違いってことだよ。
0101デフォルトの名無しさんNGNG
質問です。他のアプリのメモリを監視するツール(あるゲームのステータスを監視するもの)
を作りたいのですが方法が分かりません。
これもフックを使うのでしょうか?
0102101NGNG
APIスレで聞こうと思ったら誤爆・・・
010398NGNG
>>100
ありが�d。
0104デフォルトの名無しさんNGNG
MFCの勉強をしています。

ウインドウの右上にある×を押したときの動作をカスタマイズしたいのですが、
(アプリケーションを終了させるのではなく非表示にしたい)
キーワードがわからず検索すらままなりません。

キーワードを教えてください。よろしくお願いします。
0105デフォルトの名無しさんNGNG
>>104
WM_SYSCOMMAND
0106デフォルトの名無しさんNGNG
MFCと言うよりは、Windowsアプリ全般の話やね
WM_CLOSEメッセージを検索してみそ
MFCならそれをCMainFrameでハンドリングして・・・あとはお好きなように
0107デフォルトの名無しさんNGNG
>>105
>>106

どうもありがとうございます。

いきなり検索できるようになりました。
やはりキーワードって重要ですね。
0108デフォルトの名無しさんNGNG
MFCで作ったプログラムの中にファイルなどを含めて、
プログラムを実行したときにそのファイルをC:\\などにコピーしたいんですけど
そのファイルのパスの取り方を教えてください。
0109デフォルトの名無しさんNGNG
__argv[0]
0110デフォルトの名無しさんNGNG
GetModuleFileName()
0111デフォルトの名無しさんNGNG
すいません。説明不足でした。
自分はプロジェクトのリソースファイルの中にコピーしたいファイルを登録しているんですが、
そのリソースファイルに登録したファイルのパスをどうやって取得したらいいのかわからないんです。
それともやりかたが間違っているのでしょうか?
0112デフォルトの名無しさんNGNG
>>111
ファイルをリソースに登録というのは具体的にどうやってんだ?
0113デフォルトの名無しさんNGNG
「ソリューションエクスプローラ」→「リソースファイル」右クリック
「リソースの追加」
ってやってたんですけどこれじゃexeの中に追加されていないことに
気づきました。
やっぱ無理なんですかね…
0114デフォルトの名無しさんNGNG
>>113
リソースの追加で何を追加したんだよ?
リソースの種類にパスというのがあるか?
根本的に認識が間違ってるクサイが。
0115デフォルトの名無しさんNGNG
>>114
すいません。初心者なもので…
自分はリソースにchmファイルを追加したんです。
そうすればexeの中にchmファイルが入って、exeをたたくとそのchmを他の場所にコピーできると
考えていました。
javaでいうとクラスもリソースもjarでまとめられた感じです。

MFCではexeの中に追加できないのでしょうか?
0116デフォルトの名無しさんNGNG
FindResource() とか、LoadResource() じゃないか
0117デフォルトの名無しさんNGNG
>>116
ありがとうございます。これでやってみます!
0118デフォルトの名無しさんNGNG
>>115
やっと判ったよ。
jarはアーカイブファイルだから、複数のファイルを一つにまとめる役割をしている。
リソースを追加するのはファイルを追加するのではなくてファイル中身のデータを追加するんだ。
リソースのデータをプログラム内から直接使う。

君のやりたいことはexeファイルとchmファイルをまとめて配布する事じゃないのか?
好きなアーカイバでアーカイブファイル、とくに自己解凍形式で作れば解決なのではないか?
0119デフォルトの名無しさんNGNG
>>118
救世主!!

ついでに言いますと、exeファイルはいりません。chmだけ配りたいんです。
chmを自動コピーするプログラムがexeというわけです。
0120デフォルトの名無しさんNGNG
>>119
それならアーカイブ内にexeが無くても解決法は同じ。
zipでもlhaでもいいから適当なアーカイバで自己解凍書庫作れ。
君が驚くほど高機能なものが出来るよ。
0121デフォルトの名無しさんNGNG
・・・悪い意味じゃないんだが
こういうの知らない人がプログラミングやってるんだなぁ
時代は変わったね
012294NGNG
>>121
俺なんかHP29Cで高次関数書いてた頃は
ハードウェア/ソフトウェアとは何かさえ説明できなかったよ
アーカイバなんかあってもメインフレームかミニコンだったけど
手元になかったし、もちろん存在すら知らなかった
0123デフォルトの名無しさんNGNG
パソコンのことろくに知らずに新卒でプログラマに就職するのも大勢いるからな
たかだか学校で資格取って、授業やった程度で。
家にもWindowsフォルダの中身いろいろ消しちゃった奴がいた。男の子で。

おまえはおばはんの初心者か!!!!
0124デフォルトの名無しさんNGNG
CSplitterWnd で分割した小窓の中に、CFormViewを使ってフォームを表示して
いるのですが、CFormViewで表示されているフォームにWeb browser controlを
置いているのですが、CFormView(CScrollView)が表示するスクロールバーが
じゃまなのですが、これを表示させないようにする方法はありませんでしょうか?
教えてください、すいません。
0125デフォルトの名無しさんNGNG
>>124
なんか、もうすこし推敲してから質問してはどうかね?

要は、FormViewのスクロールバーを消したいんでそ?
http://www.google.com/search?hl=ja&ie=Shift_JIS&q=CFormView+%83X%83N%83%8D%81%5B%83%8B%83o%81%5B+%8F%C1%82%B7&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
0126デフォルトの名無しさんNGNG
初歩的なことですんません。
あのー、メッセージウインドウにnumっていう
やつの数値を入れたいのですがどうすればいいのですか?
C言語は一通りわかるのですが、そのノリでいくと
MessageBox( "%d",num);
と、printfとごっちゃになったものを書いてもだめでした。
おしえてください、おねがいしまつ。
0127デフォルトの名無しさんNGNG
>>126
AFXMessageBox(printf( "%d",num));

でできたっけか?
その辺の書式でうだうだ実験やるのが面倒なんで

CString temp ←文字なり数値なり好きなものつっこむ。
AFXMessageBox(temp);

とでもやっときゃとりあえずでるよ。
0128デフォルトの名無しさんNGNG
>>128
それだとバッファしないとだめじゃなかったっけ?
0129デフォルトの名無しさんNGNG
どれもできませんでした・・・・
0130デフォルトの名無しさんNGNG
ここはえらくレベルの低いスレッドですね。
やっぱこうだろ?
MessageBox((boost::lexical_cast<std::string>(num)).c_str());




っと冗談はさておいて。
CString str; str.Format("%d", num); MessageBox(str);
とか、sprintfを使うんで内科医?
0131デフォルトの名無しさんNGNG
あ、ほんとだsぬけてら、駄目だこりゃ(笑
0132デフォルトの名無しさんNGNG
>AFXMessageBox(printf( "%d",num));
ワロタ
0133デフォルトの名無しさんNGNG
CString strms;
strms.Format("num==%d",num);
AfxMessageBox(strms);

これで一応出来る。
0134133NGNG
やべ、130とかぶっちった。
0135デフォルトの名無しさんNGNG
できた!みなさん、ありがとうでした。
実はまったくの初心者がオセロをつくっててこまってたのでし。
0136デフォルトの名無しさんNGNG
すいません、初心者できてたんですが、
答えようとがんばってみたけど無理でした。

0137デフォルトの名無しさんNGNG
>>135
たぶん完成は10年後くらいになるんじゃないかなぁ
0138デフォルトの名無しさんNGNG
10年かかるぐらいなら、ゴールしないと思われ。
10年間オセロプログラムに対するモチベーションを保てたら、それはそれですごいと思うよ。
0139デフォルトの名無しさんNGNG
ここまできたとか言いつつ、始めたばかりだとおもわれ。
0140デフォルトの名無しさんNGNG
リバー氏のアルゴリズム
0141デフォルトの名無しさんNGNG
ツールバーにドロップダウンボタンを入れようとしています。

イベントハンドラTBN_DROPDOWNで、メソッドを実行できるところまでは
できているんですが、メニューをロードしようとすると必ず落ちてしまいます。

CMenu cme;
cme.LoadMenu(IDR_MENU1);←ここで必ず出る。もちろんリソースにはメニューあり

エラーはDebug Assertion Failedと出て、場所はFile: afxwin1.inl Line: 22 と出ます。
メモリ系のエラーということは推測できるのですが・・・。
環境はVC++6.0 WinXP Pro PlatformSDK有です。

どうかお願いいたします。
0142デフォルトの名無しさんNGNG
AfxWinInitが呼ばれて無いような感じのASSERTだな
0143デフォルトの名無しさんNGNG
>場所はFile: afxwin1.inl Line: 22 と出ます。
ここまで出ていて何故ソース見ないんだ?
0144デフォルトの名無しさんNGNG
>>143
それの意味がわかってないんじゃないか?
0145デフォルトの名無しさんNGNG
>>141です。
>>142>>143 当然見ました。
_AFXWIN_INLINE BOOL CMenu::LoadMenu(UINT nIDResource)
{ return Attach(::LoadMenu(AfxFindResourceHandle(
MAKEINTRESOURCE(nIDResource), RT_MENU), MAKEINTRESOURCE(nIDResource))); }←ここで落ちる

さらに中へ進むと
AFX_MODULE_STATE* pModuleState = AfxGetModuleState();
if (!pModuleState->m_bSystem)
{
hInst = AfxGetResourceHandle();←ここで落ちる
if (::FindResource(hInst, lpszName, lpszType) != NULL)
return hInst;
}
となってます。
0146デフォルトの名無しさんNGNG
afxwin1.inl を見ないでどうすんだ?
ネタとしか思えなくなってきた_| ̄|○
0147デフォルトの名無しさんNGNG
コンパイルがエラー・警告なしで実行すると、DebugLibraryというのが開かれて実行できません。

内容は
Debug Assertion Failed!

Program: D:\〜\Debug\abc.exe(実行ファイルの保存先)
File: dbgheap.c
Line: 1011

Expression: _CrtIsValidHeapPointer(pUserDate)

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)

と出ます。中止、再試行、無視とあるんですが再試行、無視しても実行はされません。
こういうエラーがでる原因は何が考えられるんでしょうか?
解答よろしくお願いします。
ちなみに、dbgheap.c というファイルは検索したんですが見当たりませんでした。
0148デフォルトの名無しさんNGNG
>>147
そのダイアログは、
中止→実行を中断
再試行→デバッガ起動
無視→そのまま続行
だ。
再試行してデバッガ起動すると、とりあえずアサーション起こしたところはわかる
0149デフォルトの名無しさんNGNG
でも、例外を出してる部分の名前を見ただけで
変なポインタをライブラリに渡してるってのは分かるな。
そのライブラリもなんとなくdeleteっぽい気がしないでもないが。
0150デフォルトの名無しさんNGNG

 Doc/Viewアーキテクチャでアプリを作ったんですが
ファイルに関連付けられるドキュメントは扱わないので
アプリのタイトルから 無題 - を削除したいのですが、
どうやったらいいんでしょう?

 「無題」だけなら、String Tableをいじればいいんですが、
それでも - が残ってしまいます。何か良い方法ないですか?

0151デフォルトの名無しさんNGNG
>>150
下のどれか試してみて

PreCreateWindow()でcs.style &= ~(FWS_ADDTOTITLE | FWS_PREFIXTITLE);
CFrameWnd::OnUpdateFrameTitle()でSetWindowText()
CDocument::SetTitle()
0152デフォルトの名無しさんNGNG
>>150
CMainFrame::PreCreateWindow 内で
cs.style &= ~FWS_ADDTOTITLE;
0153デフォルトの名無しさんNGNG
>>151
クイックレスありがとうございます。

とりあえず
PreCreateWindow()でcs.style &= ~(FWS_ADDTOTITLE | FWS_PREFIXTITLE);
これで表示されなくなりました。
0154デフォルトの名無しさんNGNG
>>152
ドモドモ。ありがとうございます。
0155デフォルトの名無しさんNGNG
メインのOnCreate()で

SetWindowText("(゚д゚)ウマー ver 1.0");

とかでいけるんでないかい?
0156デフォルトの名無しさんNGNG
って更新してなかったよ。_| ̄|○
0157デフォルトの名無しさんNGNG
.NET2003のブラウザスタイルのツールバーなんですが、
Rebarのバンド位置を保存したり読み込んだりしたいのですが
どのようにすればできるのでしょうか?

よろしくお願いします。
0158デフォルトの名無しさんNGNG
.NET2003 のダイアログベースでプロジェクトを作成し、
ダイアログの上にEditBox(EditCntrol)をいくつか置いて、
プロパティでAcceptFilesをTRUEにしました。
要は、このエディットボックスにファイルをドロップして
そのファイル名を表示したいのですが
PreTranslateMessage()の中でWM_DROPFILEを監視するとかでなく、
OnDropFiles()のように関数が呼ばれるようにはできないのでしょうか?

MESSAGE_MAPに
ON_EN_DROPFILES(IDC_EDIT1, OnEnDropFileEdit1)
みたいなイメージです。

なにか、情報があればよろしくお願い致します。
0159デフォルトの名無しさんNGNG
サブクラス化すれば?
0160デフォルトの名無しさんNGNG
>>157
donutを参考にすればいいと思うよ。
0161デフォルトの名無しさんNGNG
内部で生成したHTML表示させて、
リンクのクリックとかを取得
ってことってできますか?
0162デフォルトの名無しさんNGNG
ダイアログバーのコンボボックスついての質問です。

1.リソースエディタでダイアログバーを新規作成してコンボボックス(IDC_COMBO)を貼り付ける。
2.CMainFrameのCDialogBar型メンバ変数(m_wndDlgBar)を追加する
3.CMainFrameのOnCreate関数でCreateする

以上の手順でダイアログバーを生成しました。で、コンボボックスに項目を
追加しようと、CMainFrameのメンバ関数に下のコードを入れました。

CCombBox* pCombo = (CComboBox*)m_wndDlgBar.GetDlgItem(IDC_COMBO);
pCombo.InsertString(-1, "aaaaa");

ところが実行してみるとコンボボックスに項目が追加されません。
どんな原因が考えられるでしょうか。
0163デフォルトの名無しさんNGNG
ソースからコピペで持ってくることはできんのか
追加されてないというのはどうやって確認したのか
0164デフォルトの名無しさんNGNG
CCombBox* pCombo = (CComboBox*)m_wndDlgBar.GetDlgItem(IDC_COMBO);
pCombo.InsertString(-1, "aaaaa");

問題の件はどこが悪いのかはしらんけど、これってコンパイル通るのか?
なんかすごいことしまくってるな。
0165デフォルトの名無しさんNGNG
追加されるされないの前にコンパイルできないよねぇ。
もいちど見直してみてはいかが?>>162
0166162NGNG
レスありがとうございます

>163
コンボボックスをクリックしてもaaaaaが表示されませんでした
>164
すいません
CComboBox* pCombo = (CComboBox*)m_wndDlgBar.GetDlgItem(IDC_COMBO);
pCombo->InsertString(-1, "aaaaa");
の間違いでした。
0167デフォルトの名無しさんNGNG
コンボボックスの高さ設定とかは?よくわかんないけど。
0168デフォルトの名無しさんNGNG
>>167
オレもそう思って高さ縮めてやってみたけど
追加すると拡張されるようだ
0169デフォルトの名無しさんNGNG
そこらへんが気になるならとりあえず
SetCurSel
0170デフォルトの名無しさんNGNG
ダイアログバーにメッセージが飛んできてない。
0171デフォルトの名無しさんNGNG
CTreeCtrlで作成した階層構造を保存したり読み込んだりしたいのですが、
どのようにデータを保存したらよいのでしょうか?
0172デフォルトの名無しさんNGNG
>>171
XML
0173デフォルトの名無しさんNGNG
ちょっと質問。
CButton.Create()で設定したテキストを取りだしたいんですが、どうすればいいでしょうか?
ボタン状態を取得するのはあったんですが、それはスタイル情報だけみたいなんです。
よろしくです。
0174デフォルトの名無しさんNGNG
MFCじゃなくても良いのですが
バイナリデータを表示してくれるクラスはありますか?
0175デフォルトの名無しさんNGNG
>>173
GetWindowText()
0176デフォルトの名無しさんNGNG
>>174
そりゃ16進ダンプで出せってことか?
多分ないぞ。自分で作れ。
0177デフォルトの名無しさんNGNG
関係ないけどCButton.Create()という書き方に違和感がある
0178デフォルトの名無しさんNGNG
>>174
デバッグ用ダンプなら
CDumpContext
CObject::Dump
AfxDump
というのがあるが

データを16進数で文字列化したいっていうのだったら
wsprintf(DumpBuf, "%02x", buf[i]);
とかでループすれば?
0179デフォルトの名無しさんNGNG
2進数で表示するって意味だったりして<バイナリデータ
0180173NGNG
>>175
�dくす!
0181デフォルトの名無しさんNGNG
ディレクトリを指定できるエディットボックスを作りたいんだけど、
そんなコントロールないのかな?

コンボボックスのボタンの所が"..."ってなってるヤツ。
0182デフォルトの名無しさんNGNG
あるからそういうのが存在するんだろ。
0183デフォルトの名無しさんNGNG
>>181
ようわからんけど、標準のダイアログの引数うんにゃってやってなんかしたら
ディレクトリのパスは取得出来たと思うぞ。
0184デフォルトの名無しさんNGNG
>>181
1."..."というテキストを設定したボタンをエディット・ボックスの横に置く
2.ボタンにCFileDialogを起動してパスを取得するコードを付ける
3.取得したパスをエディット・ボックスに入れる
0185デフォルトの名無しさんNGNG
>>184
4.最後によく煮込んだカレーをまんべんなくかける。

これで完璧。
0186デフォルトの名無しさんNGNG
質問はコンボボックスだっつってんのに。
0187デフォルトの名無しさんNGNG
>>186
> ディレクトリを指定できるエディットボックスを作りたいんだけど、

??????
0188デフォルトの名無しさんNGNG
これだろ?
http://www.codeproject.com/editctrl/fileeditctrl.asp
0189デフォルトの名無しさんNGNG
ぁっ、ソレソレ。
ありがとうございます。
0190デフォルトの名無しさんNGNG
エクスプローラで、デスクトップ以下のディレクトリがツリー表示で出て、
ディレクトリを選択できるヤツあるじゃないですか?
あれはどうやるんですか?
0191デフォルトの名無しさんNGNG
>>190
ttp://codeguru.earthweb.com/treeview/CDirTreeCtrl.shtml
ttp://codeguru.earthweb.com/treeview/DynmDirTree.shtml
0192デフォルトの名無しさんNGNG
ttp://codeguru.earthweb.com/treeview/DirTreeCtrl.htm
これも
0193デフォルトの名無しさんNGNG
ありがとうございます。
なんていい人達なんだ・・・
金持ちになったら雇ってあげます。
0194デフォルトの名無しさんNGNG
>>193
そんな気使わなくていいから今すぐ千円くれ。
0195デフォルトの名無しさんNGNG
>>193
そんな気使わなくていいから今すぐ一万円くれ。
0196デフォルトの名無しさんNGNG
>>194-195
オイおまいら
>>191-192を書いたのはオレなんだが・・・
0197デフォルトの名無しさんNGNG
>>196
オレオレ詐欺ですか?
0198デフォルトの名無しさんNGNG
楽しい雰囲気のとこすみません。

CEditViewにログを出力していくようなプログラムなんですが
ログを保存しようとすると文字化けしてしまいます。

画面上は正しく表示されているんですが、
保存するとUNICODE変換されてしまっているようです。

hEdit.ReplaceSel(strbuf); //strbufはMBCS
でも
::SendMessage(hEdit, WM_GETTEXT, sizeof(buf), (LPARAM)buf); //bufはMBCS
でも
LockBuffer();でみると勝手にUNICODEに変換されてしまっています。

なにが原因なのかさっぱりわからないんです。
よろしくお願いします。

.Net2003 XPSP1
0199デフォルトの名無しさんNGNG
画像の表示について質問があります。
サブクラスにしたstaticコントロールに画像ファイルをドラッグ&ドロップして
画像を表示させようとしていますが、ドラッグした後に一度ウィンドウを
他のウィンドウの下に隠さないと描画されません。
OnPaintを直接呼び出したり、WM_PAINTのメッセージを送ってもダメなので
解決法がわかりません。

.Net2003Pro XPProSP1です。
よろしくお願いします。
0200デフォルトの名無しさんNGNG
InvalidateRect()かな?
0201デフォルトの名無しさんNGNG
PAINTメッセージは無効領域が無いと描画しません
無効領域(Windowsを一度隠すとか)ができるとWM_PAINが発生し、
めでたく描画できます。
InvalidateRectはこの無効領域を発生させるためのものです。
0202199NGNG
>200-201
OnDropFiles()の最後で利用したら解決しました。
ありがとうございます。
0203デフォルトの名無しさんNGNG
>>198
MFCから離れて久しい俺が答えるのもはばかられるけど
NT系は内部で文字列をUnicodeで管理してるからじゃないですか?
0204デフォルトの名無しさんNGNG
一連の流れと
>>198
の出だしに藁他
0205デフォルトの名無しさんNGNG
CImageList クラスで、

BOOL GetImageInfo( int nImage, IMAGEINFO* pImageInfo ) const;

 nImage :イメージの 0 から始まるインデックス。

を用いて、たとえばリストの3番目のIMAGEINFOを得ようと、 nImage に2といれても、
イメージリスト全体の情報が取られるようで、
そこから得られた HBITMAPを描画すると、イメージリストの全体の画像が表示されます、
リストの特定の番目の IMAGEINFO が得られるような雰囲気がある関数なんですが、
そうなってくれません。
任意の IMAGEINFO が欲しいときはどうしたらいいでしょうか?
0206デフォルトの名無しさんNGNG
>>205
先ずはマルチはよせ。
0207デフォルトの名無しさんNGNG
>>205
pImageInfo->rcImage
0208デフォルトの名無しさんNGNG
ちょっと質問を。
"2003/03/02 12:34:56"といったような文字列をCTimeに変換する関数はありますか?
sscanf使っても出来るんですが、この手の変換は良く使われそうだからありそうな気が。
0209デフォルトの名無しさんNGNG
>>208
CTimeのメンバを調べてみる
オブジェクト作成に関する関数は以下の三つ

CTime()
GetCurrentTime()
operator =

勝手形式で文字列化したものは自分で処理するべし
0210デフォルトの名無しさんNGNG
>>208
直接は無いような気が。
InternetTimeToSystemTimeとか、COleDateTime::ParseDateTimeとか、代替がきくやつはあるけど。
どっちも反則気味だけど
0211デフォルトの名無しさんNGNG
年月日の形式は国によって全然違うから
一般的なものはないんじゃないかな。
0212デフォルトの名無しさんNGNG
COleDateTime::ParseDateTime
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_MFC_COleDateTime.3a3a.ParseDateTime.asp

これならいけそうだな
0213208NGNG
>>210 >>212
おお、出来ました出来ました。
intで年月日バラバラと書くのがかっこ悪いと思っていただけなので、これが求めていたものです。
ありがとうございました〜。
0214デフォルトの名無しさんNGNG
質問お願いします。
MFCのAppWizardで生成されあcppファイルには全て先頭に

ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

と書かれますが、なぜデバッグ時だけTHIS_FILEを変数として定義
する必要があるのでしょうか?
0215デフォルトの名無しさんNGNG
visual C++6.0を使おうと思うんですが、ネットで使い方載ってるサイトあります?
初心者レベルで、本当に1からみたいなやつで。
0216デフォルトの名無しさんNGNG
割れ厨は帰れ。通報するぞごるぁ。
0217デフォルトの名無しさんNGNG
>>20
初めて聞いたよ。詳しく教えてくれ。
0218デフォルトの名無しさんNGNG
>>214
DEBUG_NEWで確保したメモリをdelete忘れしたときに、DEBUG_NEWされたソースファイル名と行番号を表示するのに使うから。
別に無くてもプログラム自体は動く。
0219デフォルトの名無しさんNGNG

1つのクラス(A)を複数のクラス(B,C,D)で使っているんだけど、

そのAクラスにブレークポイントをおいた場合、
デバッガ上で、どのクラス(A,B,C)から呼び出されたかかを知る方法は無いでしょうか?
プログラム的に理解できるように作成するしか無いでしょうか?

0220デフォルトの名無しさんNGNG
>>219
そのためのスタックトレース。
0221デフォルトの名無しさんNGNG
スタティックとボタンに貼り付けるアイコンについて質問です。
リソースで96x96(256色)のアイコンだけを作成して下のように
SetIconで貼り付けたのですが、サイズが32x32に縮小されてしまいます。

m_Static1.SetIcon(AfxGetApp()->LoadIcon(IDI_ICON1));
m_Button1.SetIcon(AfxGetApp()->LoadIcon(IDI_ICON2));

縮小されずに表示するにはどうすればいいですか
よろしくおねがいします。

0222デフォルトの名無しさんNGNG
>>221
アイコンやめてビットマップ貼ったら?
0223221NGNG
>222
最初はビットマップでやっていたのですが画像の背景を
透過にしたかったのでアイコンにしました。
ビットマップでも画像の背景を透過できるのであれば
どのような方法があるのでしょうか?
0224221NGNG
自己レスです。
m_Button1.SetIcon((HICON)::LoadImage(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON1),IMAGE_ICON,0,0,LR_DEFAULTCOLOR));

LoadImageがキャストできたのでこの方法で解決しました。
0225デフォルトの名無しさんNGNG
IDD_FORMVIEWってどうやってはりつけするんですか?
0226デフォルトの名無しさんNGNG
>>225
釣られませんよ。
0227デフォルトの名無しさんNGNG
ちょっと質問させてもらいますね。
MFCにはあんまり関係ないんですけど…
最近VCがやたら固まります。
特にビルドとかしたら、かなりの確立で「応答なし」状態になってしまいます
以前まではまったくこんなことはなくすらすらとビルドできていたのですが…
どなたか解決法おしえてください
おねがいします
0228デフォルトの名無しさんNGNG
>>227
現象出る直前に何をしてたか語れ。
0229デフォルトの名無しさんNGNG
>>228
いぁ、普通にビルドしてたんすよ。
そしたら急に固まっちゃって…、それ以来ずっとです
0230デフォルトの名無しさんNGNG
入れ直せば?
0231デフォルトの名無しさんNGNG
取り敢えず.nobファイル消してみ
0232225NGNG
つりじゃないです。
本当にわからないんです。
0233227NGNG
だめです、再インストールも試してみましたが。どうしてもコンパイル時に
固まります。
>>.nobファイル
これ自体見当たらないのですが…どこにあるのでしょうか?
0234227NGNG
固まるというよりも、コンパイラからの応答がなくなっているという感じです
VC++自体は固まってはいません。ビルドの中止も選べますが…選んでも何の
応答もありません、結局のところ強制終了するしか次の作業に進む方法はありません

いったいどうなってるんでしょう…
0235227NGNG
何度も何度も申し訳わけありません。
Debugフォルダを消すとビルド+コンパイルが可能になります。
しかしいったんDebugフォルダができてしまうと、それ以降コンパイルができなく
なるようです…
0236デフォルトの名無しさんNGNG

OSごと再インスコしたら?
もしくはVCだけ、アンインスコ/インスコするとか。

メモリ周りは大丈夫かな?
うちはメモリ設定がSTDだと、メモリがスピードに
ついていけずに誤った値になってしまってたよ。

時々、いきなりリブートしてたんだけど、
メモリ設定を遅めにしたらmemtest86でも
エラーが出なくなったし安定した。
0237デフォルトの名無しさんNGNG
>>227
それ、うちもたまにある。再現不可能。
でも、忘れたころに起きる(w
ビルド直前にファイルは保存するみたいなので、
KILLしてもソース関係は最新状態で残るみたいだけど。
ビルドは終わったのに制御が戻ってこないっていう感じ。
ボタンやメニューはビルド中のステータスのまま。
なんか、特定の操作を行った時に起こる感じはするが、
それがどういう手順なのかはわからない。
ビルドを中止した後に再ビルドすると、
起きやすい感じ(あくまでも感じ)はする。
0238デフォルトの名無しさんNGNG
もしかして>>231は.ncbのことを言ってるのではなかろうか。
0239デフォルトの名無しさんNGNG
メニューのオーナードローなんかで、
無効で灰色になっているメニューを描画する関数をなんて言いましたっけ?
誰か覚えている方、関数名とその引数フラグを教えて下さい。
0240デフォルトの名無しさんNGNG
>>227
XPで使用しているとき、VCのsp5を入れていないと
起こるようです。sp5を入れたらほぼ無くなります
0241デフォルトの名無しさんNGNG
>>239
DrawState
引数はMSDNで...
0242デフォルトの名無しさんNGNG
>>239
DrawState? 詳細は自分で調べて。
0243デフォルトの名無しさんNGNG
あうちちち。リロードしてから書けばよかった…。
0244デフォルトの名無しさんNGNG
>>239
灰色文字列
かも
0245227NGNG
皆さんお騒がせしました。
sp5入れたら解決しました
ありがとうございますm(_ _)m
0246デフォルトの名無しさんNGNG
VS6.0SP6マダー? マチクタビレターマチクタビレター
0247デフォルトの名無しさんNGNG
98世代だかんねー もうじき(ry
0248デフォルトの名無しさんNGNG
MFCでプロセス間でメモリを共有させるにはどうすればよいのでしょうか?
0249デフォルトの名無しさんNGNG
>>241 >>242 >>244
どうもありがとうございました
0250デフォルトの名無しさんNGNG
>>248
MSDN読め。
共有メモリ、セマフォ、mutex、選り取り緑だ。
0251デフォルトの名無しさんNGNG
エクスプローラー上で、現在選択しているファイル名を取得したいんですが、
何かいい方法はないですか?
アクティブになっているエクスプローラのウィンドウハンドルとか取得すればなんとかなりますか?
0252デフォルトの名無しさんNGNG
>>251 すべてXPの場合だが
エクスプローラのウインドウ(クラス名ExploreWClassかCabinetWClass)をEnumWindowsなどを利用して検出、
その子ウインドウのクラス名SHELLDLL_DefViewをFindWindowExを利用して検出
そのまた子ウインドウのクラス名SysListView32のウインドウがフォルダービューのウインドウとなるので
同じくFindWindowExを利用して取得。

int Selected=ListView_GetSelectedCount(ハンドル);
関数を利用すれば選択されているファイル数が取得できる。

while(1)
{
i = ListView_GetNextItem(ハンドル,i,LVNI_ALL|LVNI_SELECTED);
if(LvItem->iItem == -1)
break;
}
と回せば、選択されているアイテムのインデックスが次々に返る。

しかし、残念ながらそのアイテムのテキストを取得する方法がどうしてもわからん。
恐らくListView_GetItemかListView_GetItemTextを使用すると思われるが、
ことごとく失敗するのでその先は自分で調べてください
0253デフォルトの名無しさんNGNG
if(LvItem->iItem == -1)
は
if(i == -1)
に訂正
0254デフォルトの名無しさんNGNG
>>221
いまさらだがCImageList::ExtractIconも結構使えるから
頭の片隅に入れておいて損は無いよ

0255デフォルトの名無しさんNGNG
仮想リストのような仮想コンボボックスってないですかね。
データ件数が多すぎてどうにも煮詰まってます。
0256デフォルトの名無しさんNGNG
>>255
意味不明。
0257デフォルトの名無しさんNGNG
なんでMFCのヘッダファイルにはインクルードガードがついて
いるのに#pragma onceまでされているのですか?
0258デフォルトの名無しさんNGNG
ちょいと変な質問かと思いますが

カスタムリソースとして登録したWAVファイルを
MCIで再生させる方法はありますでしょうか?

#一時ファイルとして書き出したりしない方法であればお願いいたします
0259デフォルトの名無しさんNGNG
>>257
性善説: M$にもアフォはいる
性悪説: 他社のコンパイラを牽制するため
0260257NGNG
>>259
ソレダ! >性悪説
0261デフォルトの名無しさんNGNG
MFCだけじゃなくwindows.hとかにもあるよね > #pragma once
0262デフォルトの名無しさんNGNG
#pragma onceって実質コンパイラ依存じゃないんじゃないの?
0263デフォルトの名無しさんNGNG
てことは性善説か
0264デフォルトの名無しさんNGNG
>>252
ありがとうございます。
その方法で何とかがんばってみます。
0265デフォルトの名無しさんNGNG
リソースのダイアログをメニューを押したときモーダルで呼び出すメソッドです
リソース内にはタブがありましてタブをコントロールしたいのですが
下記のようにするとエラーがでます。TCITEMの初期化の問題でしょうか?

void CMainFrame::OnTest()
{
resouce_dialog rd;

TCITEM TabCtrlItem;
TabCtrlItem.mask = TCIF_TEXT;
TabCtrlItem.pszText = "Hi!";

rd.m_tab.InsertItem(1,&TabCtrlItem);
rd.DoModal();
}
0266265NGNG
呼び出す位置が間違ってました。スレ汚し申し訳ない
0267デフォルトの名無しさんNGNG
スプリッタウィンドウの各ペインに割り当ててあるビューを動的に切り替えることは
できますか?できるとすればどうやったらいいのですか?
0268デフォルトの名無しさんNGNG
ShowWindowじゃ駄目か。そうか。
0269267NGNG
>>268
すんません。初心者なのでよく分からないのですが、それはこういうことですか?

例えばビューが2つのコントロールを持っていたとして、その2つのコントロールは
クライアント領域全面を占めている。このとき、切り替えたい場合、一方のコントロールを
ShowWindowで表示、もう一方のコントロールは非表示にする。

これなら簡単そうですね。Visual Studio.NETではコードの編集中とデバッグ中では
スプリッタウィンドウの分割すら切り替わっていますが、これは難しそうですね。

どうも回答ありがとうございました。
0270デフォルトの名無しさんNGNG
現在実行中のアプリケーションが
最小化されているかどうかを知るにはどうすればいいのでしょうか?
最小化されてるのに毎フレーム描画処理してて、無駄かな、と。
0271デフォルトの名無しさんNGNG
>>270
GetWindowPlacement()

VS2003で開発してるんですけどメニューに項目を追加してIDを入力して
クラスビューからクラス選択してプロパティでイベントの追加でメニューに
追加したID探しても見つからないことが多いんですけど何ででしょうか?
メニューエディタからプロパティで確認するとIDが数字になってるときがあり、
IDを選択しなおすとイベント追加できるんですけど。

正しい順序とかあれば教えてください。おながいします。

0272デフォルトの名無しさんNGNG
CListCtrlをオーナードローでやる場合、チェックボックス付けたい時は自前で貼り付けるしかないのでしょうか?
今はDrawItemの中でCButtonオブジェクトを移動してるんですが、これだと非表示領域の分が画面に残ってしまいます。
行が非表示になる時にイベントが来ればいいのですが、そういうのはありますか?
0273デフォルトの名無しさんNGNG
>>270
BOOL CWnd::IsIconic()
0274デフォルトの名無しさんNGNG
リストコントロールで質問です。
レポートビューになっている時に、キー操作でスクロールさせた場合ってメッセージ何も�dでこないのでしょうか?
OnVScrollは反応しませんでした。
0275デフォルトの名無しさんNGNG
>>274
空気嫁!
0276デフォルトの名無しさんNGNG
タスクマネージャで終了できないソフトを作ることは可能?
0277デフォルトの名無しさんNGNG
出来るよ。
サービス関係はそうじゃないか?
試しにタスクマネージャで適当なサービスを
終了させてごらん。アクセスを拒否されましたとか出るでしょ。
0278デフォルトの名無しさんNGNG
サービスを使わなくてWMでなんとかできないのですか?
0279デフォルトの名無しさんNGNG
監視用プロセスを作ってお互い監視し合い
どっちかが終了したらもう一方が再び起動させるというのは?
同時に終了されるとダメだけど。
0280デフォルトの名無しさんNGNG
確かウィルスで、タスクマネージャにプロセスが
現れないのがあったと思うが、これなら
終了できんぞ。w
0281デフォルトの名無しさんNGNG
>>280は何か面白いことでも言ったのか?
0282デフォルトの名無しさんNGNG
rikaidekinai baka↑
0283デフォルトの名無しさんNGNG
wを付けるのが寒いってこったろ
0284デフォルトの名無しさんNGNG
ということはIsWindowをつかえばいいってことかな?
0285デフォルトの名無しさんNGNG
分割ウィンドウをもちいていくつかのビューを割り当てたときのメニューハンドラを
書く場所について質問です。

あるビューにメニューハンドラを書くと、そのビューがアクティブのときは、そのメニュー
項目が選択可能となりますが、非アクティブのときは選択が不可能です。

アプリケーションクラスやフレームウィンドウにメニューハンドラを書けば、ビューの
状態に関わらず、メニューが選択可能となりますが、必要な情報にアクセスしづらく
なります。

こういった場合のどのようにするのが一番いいのでしょうか?
0286デフォルトの名無しさんNGNG
ダイアログの最小化で質問です。
ダイアログベースでメインのダイアログから
モードレスダイアログを表示しているのですが、
メインのダイアログを最小化すると、
表示されていたモードレスダイアログも見えなくなります。
そのモードレスダイアログの親はNULLにしてあるのですが...
どうすればメインダイアログだけを最小化出来るんでしょうか?
0287デフォルトの名無しさんNGNG
VC++7.0のMFCで自作のATLをラップしたActiveXコントロールクラス作成をしたのですが、
メッセージからイベントを設定してもイベント起こしてくれません。
デバッガで見たところ、そのルートすら通ってくれていないようです。

自作のATLActiveXコントロールをラップしたMFCActiveXコントロールクラスから
イベントを受け付ける方法はどうしたらよいのでしょうか?
0288デフォルトの名無しさんNGNG
>>285
>状態に関わらず、メニューが選択可能となりますが、必要な情報にアクセスしづらく
>なります。
なぜ?MainFrameなりWinAppなりからViewにメニューが呼ばれたよと
教えてあげればいイだけジャン
0289デフォルトの名無しさんNGNG
>>285
ビューに関することならSplitter、ドキュメント操作ならDocumentにハンドラ作ればいいんじゃないの?
0290デフォルトの名無しさんNGNG
拡張コンボボックス(CComboBoxEx)でGetLBTextLen使うと
WinMEの場合、文字列の長さをバイト数で返すんじゃなくて
文字数を返すみたいですが、これってWinMEのバグですか?
# 例えば"abcあいう"なら通常9を返すところが6が返って来る。

GetLBTextのMFCの内部コード見てみると明らかにヤバいんですけど。

void CComboBox::GetLBText(int nIndex, CString& rString) const
{
    ASSERT(::IsWindow(m_hWnd));
    GetLBText(nIndex, rString.GetBufferSetLength(GetLBTextLen(nIndex)));
    rString.ReleaseBuffer();
}

# GetLBTextLen(nIndex)で本来より少ない文字数が返ってくるため
# GetBufferSetLengthで文字数より少ないバッファしか割り当てられず
# バッファオーバーフローを引き起こす可能性が。
0291デフォルトの名無しさんNGNG
>>286
MFCの場合、NULLにすると親なしって訳じゃないんだよ
ソースを追っていってごらん
0292デフォルトの名無しさんNGNG
>>290
それはほんと?マルチバイトの文字数を返してる感じ。
ホントだとしたらMEのコンボボックスAPI関連のバグっぽいけど。。。。
0293290NGNG
>>292
ホントです。
これがWinMEだけの問題なのか9x系全般における問題なのかも気になるところ。
なおXPは無問題でした。
0294デフォルトの名無しさんNGNG
>>290
3年近く前に既出です。
http://hp.vector.co.jp/authors/VA016589/wtl/bugs/bugs.html
0295290NGNG
>>294
非常に参考になりました。
そりゃそうですわ、拡張コンボボックス扱うプログラム組めば
絶対気が付きますもん。このバグ。
0296デフォルトの名無しさんNGNG
只、関数仕様を良く読んでないだけだな。おかしい。
0297デフォルトの名無しさんNGNG
>>285

BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
{
 // アクティブでないビューにもメッセージを送る
 if(m_wndSplit.OnCmdMsg(nID, nCode, pExtra, pHandlerInfo)){
  return TRUE ;
 }

 CCmdTarget *pview ;
 int i, j, n, m ;
 n = m_wndSplit.GetRowCount() ;
 m = m_wndSplit.GetColumnCount() ;

 for(i = 0 ; i < n ; i++){
  for(j = 0 ; j < m ; j++){
   pview = (CCmdTarget *)m_wndSplit.GetPane(i, j) ;
   if(pview->OnCmdMsg(nID, nCode, pExtra, pHandlerInfo)){
    return TRUE ;
   }
  }
 }
 return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}

CSplitterWndを持ってるクラスでな
0298285NGNG
>>297
ぬぉぉ、ありがとうございます。このような丁寧なレスはいまだ頂いた例がありません。
これで汚くなってたソースもすっきりしそうです。
0299デフォルトの名無しさんNGNG
ライブラリ関係で質問があります。

スタティックライブラリでクラスや構造体を定義します。
struct TESTSTRUCT{};
class TestClass{};

あるDLL内でそのライブラリ内のクラスを使用します。
class DLL_DECLSPEC DLLTestClass : public TestClass{
   TESTSTRUCT str;
};

としてDLLをビルドしたとき、

"DLL インターフェイスではない TestClass が DLL インターフェイスのベースになる class 'DLLTestClass' として使われています。
またクラス内でライブラリのクラスや構造体を使用したとき、
"__export キーワードを使って class DLLTestClass にエクスポートしてください"

といった警告が出ます。
そして作成したDLLを使用するプログラムでも同様の警告がでます。
この警告を無くすにはどうしたらよいのでしょうか?
"ライブラリAがライブラリBを使用する"というライブラリを作成する場合、
どうしたらいいのでしょうか?
0300デフォルトの名無しさんNGNG
画像のRGBを格納した配列を描画したいのですが
どうやったらいいのでしょうか?
いちおうSetPixelを使って↓のようにはできます。
でもこれだと1ピクセルずつ描画するので遅すぎです。
配列を一気に描画する方法はありませんか?
for(j=0;j<yh;j++)
for(i=0;i<xw;i++){
color=pDC->GetPixel(i,j);
r=GetRValue(color);
g=GetGValue(color);
b=GetBValue(color);
pDC->SetPixel(i,j,RGB(r,g,b));
}
}
0301デフォルトの名無しさんNGNG
まず遅くなってる原因を突きとめろ
0302デフォルトの名無しさんNGNG
>>300
BitBltはお嫌い?
CreateBitmapにも初期値は指定できるが・・・?
0303デフォルトの名無しさんNGNG
>>300
それだと、
pDC->(i,j, pDC->GetPixel(i,j));
でいいんじゃね?
0304303NGNG
おっと。
pDC->SetPixel(i,j, pDC->GetPixel(i,j));
な。
0305300NGNG
レスサンクスです。
あした試して見ます。
X×YのRGBの画像を格納した配列を
img[x*y*3]としたとき
BitBltを使って描画するとどうなるんでしょうか?
デバイスコンテキストの使い方がよくわからないです。。。
Windowsプログラム初心者なものですいません。
0306デフォルトの名無しさんNGNG
>>304
勘弁してくれ。
0307デフォルトの名無しさんNGNG
>>300
DIB使え
0308デフォルトの名無しさんNGNG
リストコントロールのソートの方法ですが
SortItemsで指定したコールバック関数(CompareFunc)の
LPARAM lParam1, LPARAM lParam2って何を示しているのでしょうか。
ぐぐって見たところ比較するアイテムのインデックスとあちらこちらで書いて有りましたが
実際見てみるとインデックスなどではなくなんかのポインタのようです。
これからどのようにしてアイテムを識別するのでしょうか。
0309デフォルトの名無しさんNGNG
自己解決しました。
これはSetDataでアイテムに関連付けされたデータのポインタですね。
よくサンプル見てみるとSetDataでインデックスの値を設定していました。
0310デフォルトの名無しさんNGNG
自分のソースではインデックスになっていた。
0311デフォルトの名無しさんNGNG
自分のソースは列ごとにソートするのでデータのポインタになっていた。
0312299NGNG
299ですが、警告だけなので実際に使うには問題ないのですが、
やはり警告が出るからには間違ったやり方なんだと思うんですけど、
対処法ご存知の方いませんか?
0313デフォルトの名無しさんNGNG
CControlBarの派生クラスを、CFrameWnd内にツールバーおよび左ペインとして
ドッキングさせているのですが、それぞれ
DockControlBar(&myLeftBar, AFX_IDW_DOCKBAR_LEFT);
DockControlBar(&myTopBar, AFX_IDW_DOCKBAR_TOP);
とした場合に
┏━━━┓
┣┳━━┫
┃┃  ┃
┗┻━━┛
こういう具合にドッキングさせることはできるのですが、
┏┳━━┓
┃┣━━┫
┃┃  ┃
┗┻━━┛
こういう具合に、左ペインがFrameWnd上端まで貫通した形でドッキング
させることができません。DockControlBarを呼ぶ順番を変えてみたりも
しましたがダメでした。

コントロールバー類は動的に追加されるので、スプリッタは選択しませんでした。
何か解決法ご存知の方いらっしゃったらよろしくお願いします。
0314デフォルトの名無しさんNGNG
>>313
漏れもそれで苦心したことがあったけど、CControlBarでは多分無理。
何かのドキュメントで読んだ覚えがあるのだけど、
優先順位は、上・下 > 左・右 らしい。
0315313NGNG
>>314
うーん、そうですか・・・ステータスバーとかツールバーとしての利用が
メインだろうからそういう仕様になっているのかな、困った。
0316デフォルトの名無しさんNGNG
CFrameWnd::RecalcLayout()を上書きでできるかも、やるならCFrameWndのどこかだろ
0317デフォルトの名無しさんNGNG
大変申し訳ないのですが、誰か
COleCurrency operator/(COleCurrency curX, COleCurrency curY);
を定義してくれ〜。

(curX.m_cur.int64 / 10000.0) / (curY.m_cur.int64 / 10000.0)
とかは無しで
0318313NGNG
>>313ですが、自己解決しました。

MSDNの「テクニカル ノート 31: コントロール バー」に
「コントロール バーの配置アルゴリズム」という項があって、
バーたちはZオーダー順に親のクライアント領域を奪い取って行く、
というのは分かったんですが、実際にそれぞれのBringWindowToTopを
呼んでもZオーダーは変わってくれません。

MFCのソースを読んで行くと、どうやらコントロールバーは一旦
CDockBarを介して配置されているようなので、
HWND hwnd = m_MyLeftBar.GetParent()->GetSafeHwnd();
::BringWindowToTop(hwnd);
としたのちCFrameWnd::RecalcLayout()を呼んだところ無事
313の下のように配置することができました。

でも、この方法だとまだ
┏━━━━┓
┣┳━━━┫
┃┣━━━┫
┃┃     ┃
┗┻━━━┛
というのは実現できないんだよなあ・・・・。
0319300NGNG
DIB使ったら簡単にできました。
1日でだいぶ上達した気がします。
また何かあったらよろしくお願いします。
0320デフォルトの名無しさんNGNG
MFCでWin32APIコールする場合、ネームスペースは何を使いますか?
0321デフォルトの名無しさんNGNG
C#
0322デフォルトの名無しさんNGNG
>>318
ユーザレベルの意見で悪いが、そんなドッキングは構造的に無理なんじゃないか?
VC++でやってみてもそんな配置に出来ねえし・・
0323デフォルトの名無しさんNGNG
OnDraw中でテキストを表示する時の現在のフォントの文字高は
以下のように取得するのが普通ですか?
10年少々前のお話ですが、昔は、フォントの文字高+行間だったと
記憶しております。確かLogFontEXとかそんな名前の構造体を取得して
行間を取得していたような・・・

// TODOing: この場所にネイティブ データ用の描画コードを追加します。
long lMaxLine = pDoc->m_lMaxLine;
int iCharHight;
CFont* pFont;

if ( ( pFont = pDC->GetCurrentFont() ) == NULL )
iCharHight = 20;
else {
LOGFONT lf;
pFont->GetLogFont(&lf);
iCharHight = lf.lfHeight;
}
for (long i=0; i<lMaxLine; i++)
pDC->TextOut(0, i * iCharHight, *(pDoc->m_ppLine[i]));
0324デフォルトの名無しさんNGNG
スレ違いの匂いプンプンだけど、TEXTMETRICだべ。
0325323NGNG
>>324
ありがとうございます。

LONG lCharHight;
TEXTMETRIC tm;

if ( pDC->GetTextMetrics(&tm) )
lCharHight = tm.tmHeight +tm.tmExternalLeading;
else
lCharHight = 20;

でしたね。
0326デフォルトの名無しさんNGNG
vc6使ってます
リソースエディタのダイアログエディタでテキストボックスとボタンをつくり
ボタンを押したらOpenFileNameでファイルを選択。その選択されたファイル名を
テキストボックスの変数に代入、そして画面上でも反映させたいんですけど、どうすればいいのでしょうか?
0327デフォルトの名無しさんNGNG
>ボタンを押したらOpenFileNameでファイルを選択
なんだそりわ
0328デフォルトの名無しさんNGNG
>>326
人に聞かずとも、ちゃんと調べれば誰にでもわかる。
わからなかったら、プログラムやまれ。
0329デフォルトの名無しさんNGNG
>>327
ダイアログエディタでボタン作ってそれを押したときに
GetOpenFileName関数を呼び出してダイアログからファイル名を選択するようにしたいのですが
これじゃ変なんですか?

>>328
時間かければわかると思いますがちょっと今時間がないんです。勝手な理由ですが
ヒントだけでもお願いします
0330デフォルトの名無しさんNGNG
変
0331デフォルトの名無しさんNGNG
ヒントねぇ…MSDN見てみ。良い事あるかもしれない。
0332デフォルトの名無しさんNGNG
>>330
普通のやり方はどんな感じでやるんですか?

>>331
msdnでふんばってみます
0333326NGNG
UpdateDataでなんなく更新されました
申し訳ないです
0334デフォルトの名無しさんNGNG
UNIXサーバにおいてあるCOBOLソースを
Winよりワンクリでプレビューするアプリを作成しています。
CinternetSessionクラスを使用して
ファイルをWinに落とし込み 漢字コード 改行コードを変換する仕組みなのですが

逆に修正したファイルをそのままUNIX側にPut(書き込み)
できないものか思案しています。
変換については、win漢字コード、改行コードのロジックをその
まま逆変換でいけそうなのですが、
ファイルを置く処理が見つかりません。どなたか教えていただけないでしょうか?
0335334NGNG
仕様 環境がもれていましたすいません

Win側の操作画面はVBで作成しており一覧が
ファイル一覧がFlexGridにより表示されまして
対象ファイルをクリックすると、VC(MFC)で
作成したDLL関数をコールします。

NT4.0 VS97(SP3)となります。
0336デフォルトの名無しさんNGNG
デバッグバージョンでコンパイルすると起動し、
リリースバージョンもVCのデバッガ上なら動作するが、
リリースバージョンを単独で立ち上げると、
DocやViewのコンストラクタまでは行くものの
OnNewDocumentまでたどり着けずアプリが起動しない症状には、
どんな原因がありそうですか?

#ifdef _DEBUG などはウィザードの作成したもの以外ありません。
リビルドや「プロジェクトの設定」の最適化の無効もだめでした。
0337デフォルトの名無しさんNGNG
エラーを出すのか、それともまったく音沙汰無しなのか。
0338デフォルトの名無しさんNGNG
>>336
カレントディレクトリに依存しているものがある
0339デフォルトの名無しさんNGNG
CBitmapButtonを使おうと思ってるのですが、
メンバ関数のLoadBitmapsにはリソース名かIDしか渡せません。

他のモジュールにあるビットマップリソースを使いたい場合は
CBitmapButtonは使うなってことでしょうか?
0340デフォルトの名無しさんNGNG
>>339
CButtonのオーナードローで我慢汁
0341デフォルトの名無しさんNGNG
>>339
派生して好きなようにロードすりゃいいやん。
0342336NGNG
>>337,338
回答ありがとうございます。
エラーの類は皆無です。
タスクマーネジャにちらっと出てきてそのまま終了。
タスクバー等にはまったく反応がありません。

"Release"フォルダ内で実行しても変化なしです。
デバッガで走らせているときはちゃんと動作するので、
どうやって調べたものか困っています。
0343デフォルトの名無しさんNGNG
>>340, >>341
とりあえずオーナードローでなんとかなりますた。
派生だとCBitmapがprotectedで継承すると・・?と、勉強不足で
まだよくわかりません。こっちは将来の宿題にしておきます。
回答どうもでした。
0344デフォルトの名無しさんNGNG
俺はオナニーでドロッとなる フフフ
0345デフォルトの名無しさんNGNG
CEditで特定の行だけ色を変えるのはどうすればいいのでしょうか?
ダイアログにエディットボックスを貼り付けてるのですが、エディット
ボックス全体の色は変えられても、特定行だけ変える方法が分から
ず困っております。
尚、環境はVC6++でMFC42を使っています。
0346デフォルトの名無しさんNGNG
カラフルにするのはエディットボックスの仕事じゃない。
リッチエディットか自作。
0347デフォルトの名無しさんNGNG
>>342
メッセージボックスを使うのは駄目?

1動作ごとにメッセージボックスでとまるようにガシガシ入れ込めば、
どこまでちゃんと動いているか調べられるよ。
ついでに使ってる変数の値なんかも表示するようにしておけば、
面倒だけど、デバックモードみたいに動作をおっかけること可能。
0348デフォルトの名無しさんNGNG
メッセージボックスより OutputDebugString() 使えyo
0349336NGNG
>>347,348
どうもです。一応ポインタ周りなんかは見ましたが、
不正な値ではなさそうです。
前述の通り、MainFrame、Doc、Viewの各コンストラクタ
止まりで謎の落ち方をするのでお手上げ状態。

1ヵ月ぐらいさかのぼって、正常に動いた時点から
やり直すしかなさそうです。
0350デフォルトの名無しさんNGNG
>>349
Appのほうは追っかけてる?
InitInstanceの中おっかけてみそ
0351デフォルトの名無しさんNGNG
>>347
TRACEマクロ知らんのか
printfと同じ使い方で経過表示できるぞ
0352デフォルトの名無しさんNGNG
>>351
リリース版でTRACEが使えるとは知らなんだ。
どうやって使うの?
0353デフォルトの名無しさんNGNG
>>348
336は、
>デバッグバージョンでコンパイルすると起動し、
>リリースバージョンもVCのデバッガ上なら動作するが、
>リリースバージョンを単独で立ち上げると、
って言ってるのだが、
OutDebugStringの結果は何で受け取ればいいの?

>>351
俺も知りたい。
0354デフォルトの名無しさんNGNG
OutDebugStringを拾うデバッガならベクターに何個かあるよ
0355デフォルトの名無しさんNGNG
ゲームをつくってるんだけど質問です
メッセージループのなかでDrawFrame関数を呼び出して
いるんだけど
void DrawFrame()
{
static BOOL Flag = FALSE;
if( !Flag )
{
OpeningInit();
Flag = TRUE;
}else OpeningMain();
}

OpeningInitで初期化をしてるんだけど
もっといい方法ないですか?

単なる変数の初期化なども、このやり方だと不便で・・・
クラスを使ってもいいので簡単な方法教えてください

一度しか呼び出したくない関数や、ある時に一度だけ変数に代入したい
時など困ってます
0356デフォルトの名無しさんNGNG
>>355
そうやるのがいちばん簡単だと思うが。

あと、Flag なんて言う何をしてるかわからん変数名はやめた方がいい。
(これぐらい短いと問題は少ないが。)

void DrawFrame(){
 static BOOL FirstTime = TRUE;
 if( FirstTime ){
  OpeningInit();
  FirstTime = FALSE;
 } else {
  OpeningMain();
 }
}
0357355NGNG
ありがとう
これでよかったんですね

後
0358デフォルトの名無しさんNGNG
http://www.geocities.co.jp/SilkRoad/1243/index.html
0359355NGNG
↑失敗

後、クラスでコンストラクタをつかっての初期化が便利と聞いたけど
関数を呼び出すたびにコンストラクタも呼び出されるんですね
初めの1回だけなら便利なのに・・・
0360デフォルトの名無しさんNGNG
ちょいと相談。
ファイルをロックしたいんでHANDLEが欲しいのだけど、
問題のファイルは既存のライブラリ内でfopen()されている。
#unixならfileno()すればすむんだけど
ストリームポインタからHANDLEを取得する手段ってなんかあったっけ?
0361デフォルトの名無しさんNGNG
(HANDLE)_get_osfhandle( _fileno(fp) );
0362デフォルトの名無しさんNGNG
>>359
おまいは参照辺りをしっかり勉強した方がいいぞ
0363デフォルトの名無しさんNGNG
>>336
関係ないと思うが、VCから起動する場合と
エクスプローラからダブルクリックで起動する場合、
コマンドライン引数が微妙に違う。(漏れの環境(VC6.0SP5XP)では)
何が違うかと言うとGetCommandLineで返ってくる文字列が
エクスプローラの場合最後にスペースが付加され終わっている。
その違いで出てたバグを発見するのにずいぶん苦労した記憶アリ。
0364デフォルトの名無しさんNGNG
基本的なことだけど
一度中間ファイルの類を全部消してからリビルドしてるかな?
0365デフォルトの名無しさんNGNG
>>363
そのケースだったら、プロジェクトの設定でコマンドラインパラメータに空白を入れておけば再現できそうだね。
0366デフォルトの名無しさんNGNG
>>361
Thanx!
手元に開発環境ないんで検索してみた。
Pythonのマニュアルしか見当たらなくて不安だけど、明日出社したら早速試してみるよ。
0367デフォルトの名無しさんNGNG
タスクトレイにある 特定のアイコンを非表示にする方法はありますか?
FindWindowでハンドルとって ShowWindowでHide にしても駄目でした。
お願い致します。
0368デフォルトの名無しさんNGNG
ActiveXが何故かWindowsのシャットダウンのWM_ENDSESSIONを
拾ってくれないんですけど仕様ですか?
0369デフォルトの名無しさんNGNG
MDIでCDocument一つからCView複数開いた時の各子ウィンドウの
キャプションのコロン後の数字ってどういう規則で付いてるの?
教えて下さいませm(_O_)m
0370345NGNG
>>346
亀ですが、おおせの通りリッチエディットに変更して対応しました。
どうもです。
0371デフォルトの名無しさんNGNG
CStringの寿命に関して混乱してきちゃったから、ちょっと教えてください
関数の戻り値にCStringを指定したときの、CStringの動作がよくわからない
いったん、コピーされるのかな・・?
1.
CString test1(){
CString aaa("test");
return aaa;
}

2.
CString test2(){
char aaa[] = "test";
return aaa;
}

1、2とも問題ないですか?最近までCで、char使ってやってたんで、1でも不安なんだけど、
引き継いだソースに2みたいなのがあって、これはどうなんだろうと・・
0372デフォルトの名無しさんNGNG
1はOK、2はNG
0373デフォルトの名無しさんNGNG
御免、勘違いした。両方ともOK。
0374デフォルトの名無しさんNGNG
>>371
寿命も何も変数なんだからそこはCの基礎とかわらんだろ
0375371NGNG
あ、OKですか。ありがとです
いや確かchar *で返した場合
char *test3(){
char aaa[] = "test";
return aaa;
}
関数抜けたら寿命が尽きるので、その配列使っちゃいけないってきいたきがするから不安だったんです。ドモドモ
0376デフォルトの名無しさんNGNG
各々>>375にいいたい事はあるだろうがMFCスレなので放置しなさい。
0377デフォルトの名無しさんNGNG
>>375
static ....
0378336NGNG
まだレスがついているとは思いませんでした。
どうもありがとうございます。

>>363
それは知りませんでした。その辺、調べてみます。

>>364
はい。もうDebugもReleaseもフォルダごとごっそりと。
あと、ソースファイルの階層には、
消さなきゃいけないものなんてないはずですよねえ……?
0379デフォルトの名無しさんNGNG
>>378
.aps.clw.ncb.opt.plg辺りも一応消しておくと良いかも。
0380デフォルトの名無しさんNGNG
.plgは消す必要なし。
尤も、残す必要もさらさらないけどな。
0381デフォルトの名無しさんNGNG
>>379
.clwはマズくねーか?
0382デフォルトの名無しさんNGNG
>>381
なきゃ勝手に生成するっしょ。
消すまでもないと思うがな。
0383デフォルトの名無しさんNGNG
.clwがおかしくなる事は良く有ります。
ただしそれがコンパイル時にエラーの原因になるかどうかは分かりませんが。
0384デフォルトの名無しさんNGNG
IDを変更しないままコントロールを削除して同じIDをもつコントロール
を付け加えたりとか、関数なんかもそうだけど、そういうことが何回も
繰り返していると時々、ソースは正しいとしか見えなくてもコンパイル
するとエラーになったり。そういう時は.clwを削除して作り直すと
何事も無かったかのようにコンパイルが通る。
0385336NGNG
何人もの方にアドバイスをいただけてありがたいです。
残念ながら.clw等の削除もコマンドラインのほうも
解決には至りませんでした。
おそらくポインタ or 配列がらみだと思うんですが、
おとなしくロールバックします。ともかく感謝です。
0386デフォルトの名無しさんNGNG
Visual Studio 6.0 Service Pack 6 正式リリース
http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx
0387デフォルトの名無しさんNGNG
VBでいう、DoEventsみたいのは
どうやれば良いですか?
0388デフォルトの名無しさんNGNG
DoEventsがよくわかりません。
どんなものですか?
0389387NGNG
>>388
Windowsに一旦処理を渡す時に使いました
無限ループを組んで、その中にDoEventsを入れとくと、
無限ループ中でもWindowsがメッセージを発行して、
イベントが発生(何か変・・・)してくれるものでした
0390デフォルトの名無しさんNGNG
>>389
ふつうは無限ループの中で直接APIを呼ぶと思うのですが。
VBにはそういうものがあるのですね。
PeekMessage、DispatchMessageあたりを調べてみてはどうでしょう?
0391387NGNG
>>390
早速の回答ありがとうございます!
こんな感じで出来ました!

MSG msg;
while(1){
  if (::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
  if (msg.message = WM_QUIT)break;
  ::TranslateMessage(&msg);
  ::DispatchMessage(&msg);
 }
}
SendMessage(WM_QUIT,0,0);
0392387NGNG
と思ったら、
msg.message == WM_QUIT
に直したら、終了しなくなりました・・・
0393デフォルトの名無しさんNGNG
breakしたあとメッセージはどうなるのでしょう?
と、考えてみては?
0394初心者NGNG
すいません。REGETのようなGUI作りたいんですけど
MFCを勉強するにはどのような書籍を読んだらよいのでしょう?
0395デフォルトの名無しさんNGNG
サルでもわかるMFC
0396デフォルトの名無しさんNGNG
>>395
わかったサルを1例でも挙げてみな
0397デフォルトの名無しさんNGNG
ノシ
0398デフォルトの名無しさんNGNG
SDKヲ理解できる猫もいないだろうな。
0399デフォルトの名無しさんNGNG
>>394
初心者といっても様々。
このスレに記事をつけたのだから「VC++は持ってるんだろうな」
ぐらいしか分からない。
君のレベルが分からないと薦めようもない。
0400デフォルトの名無しさんNGNG
ダイアログベースのMFCアプリケーションで、
ダイアログが閉じたあとに、::AfxMessageBox()や::MessageBox()を呼んでも
メッセージボックスが画面に表示されないのはなぜでしょうか?

CFooApp::InitInstance()で、dlg.DoModal()から帰って来た後で
呼び出してます。
0401初心者NGNG
>>399
VC++4.0 時代にMFCを使いこなそうとDocumentとViewクラスを一度に理解しようとして挫折
再度、VC++6.0でMFCプログラミングを始めてここ1日〜2日、Viewクラスへ書いて
テキストボックスやらボタンやらチマチマ書き始めて動いた程度。
今、参考にしているのは「新Visual C++ 6.0入門シニア編」地味?なので少し
色々な事ができないか...と模索中
0402デフォルトの名無しさんNGNG
MFCの定番はKruglinski。
亡くなってから、もうずいぶん経った。
0403デフォルトの名無しさんNGNG
CScrollBarの下側を0として上に行くほど数値が上がるような扱いに
したいのですが良い方法はありますか?
0404デフォルトの名無しさんNGNG
スクロールMAXから現在位置を引く
0405デフォルトの名無しさんNGNG
取り合えずなんにも分からん。何でもいいので教えてくれ。
0406デフォルトの名無しさんNGNG
>>405
CString str;
str = "Hello World!"
MessageBox(str);
0407デフォルトの名無しさんNGNG
>>400
多分、m_pMainWndが閉じられたら後は終了するだけ、
新しいウィンドウの作成は許可しないとか言うように
MFCのフレームワークが設計されているんじゃないかな?
実装方法はフックでも使ってるんでしょう。

試しにm_pMainWnd = &dlg;をコメントアウトしてみると使えるようになる。
ただしm_pMainWndを指定していない場合、他の場所で不具合が出るだろうと思うが。
0408ageNGNG

すみません。昨日から悩んでいます。VC6です。
Inside VisualC++ ver.5のサンプルのようにActiveXのオートメーションを作りました。
(659ページ辺りからのexcelのボタンを押すと反応するやつ)
まったく同じではありませんがVBAでは動きますしデバッグ用のコンテナでも動きます。
ところがVBS(+ASP)だと動いてくれません。

具体的にはCreateObjectはいくけどmethodを呼ぶとエラーになります。

ググってみたのですがサンプルがありません。
とりあえずVBSがうごくだけでいいのでサンプルの場所を教えてください。
0409400NGNG
>>407
サンキュ。
Hookの中までさんざんトレースしてみたけどわけがわかなくて。
結局、OnCancelの中で処理をすませるようにごまかした。
0410teNGNG
すみません。
SDIやMDIのフレームにツールバーやダイアログバーをくっつけたとき、
その縦のサイズが全部でどれだけなのかを知る方法ないでしょうか。
viewの(0,0)をclientToScreenしても、ダイアログバーなどをフレームに
くっつけてると、スクリーンにしたとき、yがそのぶんだけずれている
ようなのです・・・。ヘルプ!
0411teNGNG
連続すみません。
最大化しているかどうかなども踏まえてウインドウの位置を
レジストリに記憶させておきたいのですが、
GetWindowPlacementの値をbinaryで書き込んでおき、
起動時にSetする、ではうまくいきませんでした。
いろいろやってみたのですが、復元時に最大化状態にセット
することができませんでした。
やってる場所がわるいのでしょうか・・。
0412デフォルトの名無しさんNGNG
>>411
ちゃんと書き込めているか、書いた情報がきちんと取り出せているか確認。
0413デフォルトの名無しさんNGNG
>>409
OnDestroy()の方がスマートかもしれん。
0414デフォルトの名無しさんNGNG
すいません。どなたか教えてください。
エクスプローラみたく分割ウインドウをつくっていて
左側のウインドウの右クリックからポップアップメニューを
表示をさせようと思っています。
そこで、CLeftViewにContextMenuを追加したのですが
右クリックではイベントはこなくて、右ダブルクリックで
イベントがくるのですが、なぜでしょうか?

なにか足りないのでしょうか?
0415デフォルトの名無しさんNGNG
>>414
どういうコントロールなのか知らないが、複数選択の許可に関する問題で
「ダウン−ドラッグ−アップ」じゃないとイベントが起きない場合がある。

アップのところに置いてみたらどうか?
0416414NGNG
返信ありがとうございます。
そして説明不足すいません。さらにMFC初心者でごめんなさい。

>「ダウン−ドラッグ−アップ」じゃないとイベントが起きない場合がある。
>アップのところに置いてみたらどうか?

ごめんなさい。「ダウン−ドラッグ−アップ」の意味がわかりません。
アップのところにcontextmenuをおけばいいってことでしょうか?
(アップの意味もわかってないのですが)

いや、ほんと、初心者でごめんなさい。

ちなみに
>どういうコントロールなのか知らないが
っていう質問にはどういう風に回答すればいいのでしょうか?
ツリーコントロール?SDI?

ほんとすいません。
0417デフォルトの名無しさんNGNG
長いから要点だけ

【環境】
・VC++6.0

【症状,状態】
・ClassWizard→メンバ変数で作成したクラスに対してインテリセンス機能が働かない(CEditクラス等)
・自作のクラスメンバに対してはインテリセンス機能が働く
・ビルドする際には問題ない.

【考えられる原因(推測)】
自宅と職場で作業ディレクトリの位置が違う

これなんとかならないでつか?ビルドには問題ないんですが
あれがあるのとないとで便利さが全然違います・・・(つД`)
作業ディレクトリを同じにすればいいんだろうけど
こいつの為にわざわざHDD追加したり,パーティション加えたりするの面倒っす.
0418デフォルトの名無しさんNGNG
.clwとか.ncbとか.apsとか.optとかその辺消してプロジェクト立ち上げなおして
クラスウィザードでなんか作り直すと上手くいくかもしれない
0419417NGNG
>>418
オマイ天才!機能が復活すますた.
ありがとうー!やっぱお前は出来る子だと前々から思ってたよ
0420デフォルトの名無しさんNGNG
>>419
悪いがそんなことは、うちのインコでも知ってるよ
0421デフォルトの名無しさんNGNG
>>420
インコは知らないと思う
0422デフォルトの名無しさんNGNG
FAQ中のFAQであることは間違いないな
0423デフォルトの名無しさんNGNG
>>421
笑うとこなんだから突っ込んじゃダメ
0424デフォルトの名無しさんNGNG
そんなのうちの清原でも知ってるよ
0425デフォルトの名無しさんNGNG
清原って誰やねん!
0426デフォルトの名無しさんNGNG
おれ、おれ
0427デフォルトの名無しさんNGNG
うちの桑田はポカンとしてたよ。
0428デフォルトの名無しさんNGNG
うちの北野は仕様書作るのに1年かかったよ。
0429デフォルトの名無しさんNGNG
うちの松坂は未だにprintf止まりだよ。
0430デフォルトの名無しさんNGNG
少しワラタ
0431デフォルトの名無しさんNGNG
MDIの任意の子ウィンドウの「閉じる」を禁止にして,
右上の×ボタンも灰色にすることは可能でしょうか?

SDIなら可能なようですが・・・
0432デフォルトの名無しさんNGNG
子ウィンドウ毎にフレームとビューを用意してやれば出来ると思うよ。
0433デフォルトの名無しさんNGNG
BMP,JPEG,GIF,TIFF,PNGなどの色々な形式の画像ファイルを読込んで、
HDCで描画したいのですが、複数の画像ファイル形式を読込むことが出来る
便利な関数はないでしょうか?(TIFF,PNGは無理そうな気がします。)
0434デフォルトの名無しさんNGNG
HDCって時点で、MFCとは激しく無関係な悪寒。
0435デフォルトの名無しさんNGNG
>>433
CImage
0436デフォルトの名無しさんNGNG
system("susie ***.png");
0437デフォルトの名無しさんNGNG
>>433
ImageMagickとか?

tiffだけならlibtiff、pngだけならlibpng+zlibって手もあるが。
0438デフォルトの名無しさんNGNG
>>433
CImage
GDI+
OleLoadPicture()
0439デフォルトの名無しさんNGNG
CImageってフリーソフトですか?
0440デフォルトの名無しさんNGNG
MFCを使って、Excelのシートのようなもの(コピー&ペーストができたりなど)を
ウインドウに組み込むにはどうすればよいのでしょうか?
0441デフォルトの名無しさんNGNG
>>440
/support.microsoft.com/default.aspx?scid=kb;ja;179706
0442440NGNG
ありがとうございます。
そこを読んでやってみます。
0443デフォルトの名無しさんNGNG
>>439
とりあえず最新のVCを買いなさい。
0444デフォルトの名無しさんNGNG
MFCの入門書なら
�潟Aンク
最新 これからはじめるVisual C++
はどう?
IDEの使い方がわからないレベルから始めてるよ。
0445デフォルトの名無しさんNGNG
>>443
ってことは有償ですか。高いなー。
0446デフォルトの名無しさんNGNG
>>445
安っぽい理由で諦められるんなら、そもそもWindowsプログラムなんでするなと。
By ゲイツ
0447デフォルトの名無しさんNGNG
でも、VCって高いよな。

ACでシェアってよかったけ?
0448デフォルトの名無しさんNGNG
ACって何?
0449デフォルトの名無しさんNGNG
アカデミックのことだろ?
0450デフォルトの名無しさんNGNG
誰が諦めたの?
0451デフォルトの名無しさんNGNG
>>447
おまえらの話聞いてると金銭感覚があるようで実は無茶苦茶だな
趣味であろうと仕事であろうと共通してるのは動機が希薄ってことだ
その観点じゃ1円でも高すぎなのを
さも投資予算が決まっていそうな口ぶりで難癖つけるだけのハリボテ野郎が
gccだのborlandだののDLにかかる回線使用料が親の金だったらお笑い草だな
0452デフォルトの名無しさんNGNG
むしろ回線使用料に比べて高いって意味じゃ
0453デフォルトの名無しさんNGNG
馬鹿みたいな話かもしれないが、知識のある奴はそれなりの出費をしてるからね。
これをMSへのお布施と思うか、自分への投資と思うかはそれぞれだが。

それを、高価などという理由で「教えてクン」する奴は、やっぱ腹立つもんだと思うよ。
0454デフォルトの名無しさんNGNG
何一人で怒ってるんだ。
教えてくんてどのレスよ?
0455デフォルトの名無しさんNGNG
VCのパッケージは安いものでも一万円オーバーするんだから
特定用途向けツールへの投資としてはちょっと大きいってのはあるだろう

回線は汎用インフラだからな

まあでもその話と「教えてクン」ってのがどうつながるのか全くわからんが・・・
0456デフォルトの名無しさんNGNG
(MFC 限定かというとちがうかもしれませんが)
#import についての質問です。
vbscript.dll\3 を指定したい場合はどうしたらよいでしょうか。

#import "C:\WINDOWS\system32\vbscript.dll\3" とすると、
コンパイル時にエラーになる。

#import "C:\WINDOWS\system32\vbscript.dll" とすると、
コンパイルできるが、これは目的のものではない。
0457デフォルトの名無しさんNGNG
ごめんいみがわからない。
0458デフォルトの名無しさんNGNG
なんでエラー内容書かないんだろう
0459デフォルトの名無しさんNGNG
\をディレクトリと見ているに
100モグモグ
0460デフォルトの名無しさんNGNG
というか、456は、「vbscript.dllというディレクトリ下の3」以外の
何を期待しているのか。
0461デフォルトの名無しさんNGNG
>>447
つーか、常識で考えたら分かるだろ。
なんでVCを他人とシェアして許されると思うのかが不思議だ。
0462デフォルトの名無しさんNGNG
そっちのシェアじゃぁないと思う
0463デフォルトの名無しさんNGNG
ACでシェアウェア作るって言いたいのかな?
まぁ、やめとけ、といいたい。
つーか、学校の端末を使って作ったら問題ありだろうしね。
0464デフォルトの名無しさんNGNG
ダイアログベースのプログラムでDIBビットマップを表示したいのですが
どのようにすればよいのでしょうか?
よろしくお願いいたします.
0465デフォルトの名無しさんNGNG
>>464
まず、googleへ行って"DIBの表示"でぐぐる。
0466デフォルトの名無しさんNGNG
「googleに行ってぐぐる」とはあまり言わないね
0467デフォルトの名無しさんNGNG
頭痛が痛い
0468デフォルトの名無しさんNGNG
MFCのピクチャーを貼り付けて,そこに好きな画像を書きたいのですが
サンプル等在りませんでしょうか?
0469デフォルトの名無しさんNGNG
>>468
画像のサンプル?
0470468NGNG
>>469
お絵かきソフトを造りたいです
0471デフォルトの名無しさんNGNG
>>470
>>468の書きぶりから全く外れてるんだが・・・
やりたいことと手段の方向性が見えてないような気がする
そのレベルだったら初心者向けのソースコード付きの解説本でも一冊最初にやったら?
0472デフォルトの名無しさんNGNG
ピクチャボックスに任意のビットマップを張りたいだけ?
0473デフォルトの名無しさんNGNG
その上にキャプション書いたりしたいんでしょ
0474デフォルトの名無しさんNGNG
>>470の書き方からするとドローかペイントのグラフィック・ソフトのように思えるが
0475デフォルトの名無しさんNGNG
>>474
俺もそう思う。しかもピクチャボックスがそれをサポートするコントロールだと勘違いしてるような気も・・・
0476デフォルトの名無しさんNGNG
まあ最終的にはグラフィックソフトなんだろうけどとりあえずはピクチャボックスを
どうしたいんだろ?
0477デフォルトの名無しさんNGNG
だから結局>>471ってことだな
0478デフォルトの名無しさんNGNG
strstr関数で、英字の大小を区別しないみたいなやつってありますか?

例:strstr("abcdefg.WaV", ".wav") != NULL
が true となるような関数が欲しい
0479デフォルトの名無しさんNGNG
マニュアルくらい読めばぁ?
0480デフォルトの名無しさんNGNG
CStringクラスにありました。。
0481shNGNG
SDIでペインを作成しペインから他のペインにあるコントロ−ルにアクセスする
方法はどうするのでしょう?
AfxGetMainWnd())->m_wndSplitSub.GetPane() ですか?
0482shNGNG
自己レス。
AppクラスにCWnd のメンバを作ってペインのOnInitUpdate() に
thisポインタを入れて、
他のペインからそのメンバのCWndを参照すればアクセスできました。
みなさんはどうやってるのでしょうか。
0483デフォルトの名無しさんNGNG
俺だったら this->GetParentFrame() で親フレームを拾って、
そこに定義しておいた子ペインにアクセスするメソッドを呼び出す。

まあ、操る人が一番迷わない方法でいいんじゃないの。
既に解決してるみたいだし。
0484shNGNG
どうも。試してみます。
いろいろな方法があるみたいで、それはそれでおもしろいですね。
0485デフォルトの名無しさんNGNG
IEのお気に入りのように、プログラムからメニュー項目を
追加したいのですが。どうやればよろしいんでしょうか?
0486デフォルトの名無しさんNGNG
>>485
CMenu
AppendMenu()
InsertMenu()
0487デフォルトの名無しさんNGNG
MFC関連でいい書籍って無い?
林晴彦みたいな、ぬるいのは嫌です。
0488デフォルトの名無しさんNGNG
>>487
いい書籍っていってもあなたの基準が明確でないと返答に詰まる。
ヒントはぬるいのはだめってことだけらしいけど、もう少しどんな感じの
ものが欲しいのか明らかにしたほうがレスがつきやすいと思う。
0489487NGNG
>>488
新しい仕事でMFCを使用しているんです。
主に、ダイアログベースで細かいデータ表示などをやるプログラムを量産しています。
ダイアログベースと言うのは、間違っていると思うんですが、
そこの会社が昔からこのやり方なので方法を変えたくないらしいです。

CListCtrlを継承させてセル単位で背景色を設定や入力できる物や
コントロール2つ以上を同期で選択とか、ダイアログなのにスプリットバーや
その他いろいろ
基本的に、クラスをそのまま使うことがないんです。


あと、私がWindowsプログラミングにあんまりなれてなくて
細かいメッセージの流れとかがよくわかってない時もあったり
単純なウインドウならわかるけど、ListViewとかのコントロールのメッセージや
MFC独自の物とかのメッセージが、いまいち。
時間をかけて調べればわかることなんですが、
そういうことを書いてある本が欲しかったり

C++のテンプレートなどは理解できています。
ジェネリックプログラミングも多少わかります。Boostもいろいろ使ったり出来ます。
WTLに興味があるんですが、会社で使えるのかわからないので
現在深くやる予定はありませんが、多少知っておきたい。


まあ、結構深く突っ込んだり、コアなTips系とか
いろいろ書いてある本が欲しいです。

現在飼おうと思ってる本は、
http://www.ascii.co.jp/books/detail/4-7561/4-7561-3143-3.html
です。
この本っていい?
0490デフォルトの名無しさんNGNG
本ばかり追いかけてると、財布がつらいので、
WEB上で検索かけてサンプルコードを拾ったりしてる。
そのほうがすぐ使えるし。
0491デフォルトの名無しさんNGNG
CodeGuru とか CodeProject 見た方が良いと思うよ。
0492487NGNG
webページもいいんだが、
仕事場が、すぐにネットにつなげれる環境じゃないんです。

あと、通勤時間が結構あるし
本も欲しいかなと。

なんかないのー

買っちゃうおー
0493デフォルトの名無しさんNGNG
>>492
>仕事場が、すぐにネットにつなげれる環境じゃないんです。

先ず、その環境を何とかせにゃならんと思う。
まさか、会社でダイアルアップでもないでしょ?
0494デフォルトの名無しさんNGNG
確かにネット環境は必要だね。
ちゃんとした情報を得るには書籍やMSDNが一番だけど、ヒントやサンプルはまずGoogleって感じ。
0495デフォルトの名無しさんNGNG
クルグリンスキーと言ってみるデバッグ
0496デフォルトの名無しさんNGNG
APIの関数名で検索しても、関連サンプルは出は出るわ。
使わない手は無い。というか、使えないのは明らかに損!
0497433NGNG
>>434-438
ありがとん。返事が遅くなってスマソ。

GDI+で問題解決しました。
ttp://www.kumei.ne.jp/c_lang/sdk4/sdk_336.htm
0498デフォルトの名無しさんNGNG
コンテナ上にExcelを貼り付けて、
そのExcelから既存のExcelファイルを開くにはどうすれば良いのでしょうか?
また、その時マクロを実行するにはどうすれば良いのでしょうか?
0499デフォルトの名無しさんNGNG
CListCtrlで”選択マーク”を外したいのですが、
 SetSelectionMark(-1)
ってのありでしょうか?
0500デフォルトの名無しさんNGNG
>>499
ん?それで何が問題なんだ?
0501shNGNG
ファイルの権限を変えるのどうするのでしょうか。
アドミンだけ書込みを許可するなどです。
0502デフォルトの名無しさんNGNG
\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
レジストリのこの位置に登録すると自動起動しますが、
MFC6.0 で登録するにはどうやるのでしょうか。
H_KEY_CURENT_USER 以外には書き込めないとか..?
0503デフォルトの名無しさんNGNG
そりはMFCとは関係ない。
0504デフォルトの名無しさんNGNG
>>502
MFCでなぜ?

RegOpenKeyEx
RegQueryValueEx
RegSetValueEx
RegCloseKey
0505デフォルトの名無しさんNGNG
>>501
AtlSetDacl()とか調べて頑張れ
0506デフォルトの名無しさんNGNG
pMenu->CMenu::AppendMenu(TRUE, IDM_DINAMIC_MENU, NULL);
とやると
error C2668: 'AppendMenuA' : オーバーロード関数の呼び出しを解決することができません。(新機能 ; ヘルプを参照)
とエラーが出てしまいます。対処法を教えてください
0507デフォルトの名無しさんNGNG
>>506
http://www.google.com/search?hl=ja&lr=lang_ja&ie=SJIS&q=%83I%81%5b%83o%81%5b%83%8d%81%5b%83h
0508506NGNG
オーバーロードの意味を聞いてるのではなく、MFCの使い方が知りたいのです。
ありえないけどCMenuを書き換えるか、
CMenuを継承したクラスに書き換えてメンバーも修正?
それ以前になんでAppendMenu関数が実装されてないの?
AppendMenu関数作るとしたらどんな風に書けば良いのですか?
ということです。
SDKなら何とかなりそうですが、MFCは変更がしづらくて分かりいにくいです。
0509デフォルトの名無しさんNGNG
>>506
関数の仕様から調べなおしたほうがいいでそ。
0510デフォルトの名無しさんNGNG
>>506
馬鹿だねぇ。オーバーロードをちゃんと理解してれば
コンパイラがオーバーロードを解決できない場合がどんな場合か
わかるだろ。
0511デフォルトの名無しさんNGNG
>>506
書き換えとか言う前に、MSDN見れ。
0512デフォルトの名無しさんNGNG
今日からMFCの勉強を始めました。(WIN32SDKで今まで全てを行っていました)
今までは全部手打ちでVSの機能はビルドとデバッグぐらいにしか使っていなかったのですが
MFCやるのだし、と思って色々やってみました。
そこで、ちょっと嫌だなとおもったのが(MFCの話じゃないですが)
メンバ変数の追加、やメンバ関数の追加でコードをジェネレートして追加すると
ヘッダファイルがえれー汚くなります。
これってもう自分で書き直す(コピペで)以外に解決策ってないんでしょうか。
0513デフォルトの名無しさんNGNG
>>512
自分で治せる余地が提供されてるんだから、それでいいと思うんだが。
0514デフォルトの名無しさんNGNG
>>512
自分で書き直すのが最善策だと思います。
0515デフォルトの名無しさんNGNG
つーか、最初から「メンバ変数の追加」なんて使わなければいいのでは?
0516デフォルトの名無しさんNGNG
>>512
「メンバ変数の追加」は俺も使わない
インデントもへったくれもない行儀の悪さに加え
極めつけはテンプレートインスタンス型をサポートしていない点

「メンバ関数の追加」にも不満はあるものの
ヘッダとソースの連動修正をやってくれるので
まあ使ってやることもあるが
0517デフォルトの名無しさんNGNG
.net使っています。
for文で、
for(int i = 0; i < x; i++)
みたいに書くと、標準C++では、変数iはfor文ブロック内が
スコープなはずですが、.netだとそうじゃないんですよね。
これってコンパイラで切り替えることってできるのでしょうか?
0518デフォルトの名無しさんNGNG
>>517
できます。以上。
0519デフォルトの名無しさんNGNG
>>518
どうやるの?以上
0520デフォルトの名無しさんNGNG
調べる。以上。
0521デフォルトの名無しさんNGNG
>>517
そうじゃないのはどういうことかの説明が不足している。いじょ。
0522デフォルトの名無しさんNGNG
>>521
そんなことはない。以上。
0523デフォルトの名無しさんNGNG
そうじゃないの具体的な説明が無いので反応しようが無い。いじょ。
0524デフォルトの名無しさんNGNG
なにこのスレ?(AA略
0525デフォルトの名無しさんNGNG
具体的も何も、そこで求められている物が一つしかないのは明らかだ。胃腸。
0526デフォルトの名無しさんNGNG
状況がつかめなければアドバイスの仕様が無い。いじょ。
0527デフォルトの名無しさんNGNG
人にものを聞くのに、高飛車な態度になってる香具師に、
まともに答える義理は微塵も無い。以上。
0528デフォルトの名無しさんNGNG
>>527
必ずしも高飛車でなくたって低姿勢な香具師にも答える義務がない点に違いはないんだが
0529525NGNG
しかも高飛車な漏れ(525)は、質問者では無いし。非常。
0530デフォルトの名無しさんNGNG
知らない間に、このスレを荒らしている俺たちは逝ってよし。いじょ。
0531デフォルトの名無しさんNGNG
妹は処女
0532デフォルトの名無しさんNGNG
アタシは痴女
0533デフォルトの名無しさんNGNG
C言語初心者ですが
「これはいい!」って参考書ありませんか?
本屋さんにはたくさんの参考書が置いてあり
どれがいいのかとても選ぶことはできません。
どなたかおすすめな本を教えてください。
0534デフォルトの名無しさんNGNG
Cマガジンを年間購読する。
0535デフォルトの名無しさんNGNG
日経ソフトウェアを年間購読する。
0536デフォルトの名無しさんNGNG
>>520
どうやって調べりゃいいの?いじょ
0537デフォルトの名無しさんNGNG
>>536
自分で調べ方を調べろ。以上。
0538デフォルトの名無しさんNGNG
このスレ異常
0539デフォルトの名無しさんNGNG
>>533
参考書っていっても、一冊や二冊で済むもんじゃないからな。
色々買って金を無駄遣いして、数冊に一冊くらいの割合で自分にとっての良本見つけるって感じだし。
何なら、「Cを覚えるまでにいくら消費しましたか?」って聞いてみ。
きっと、すごい額出てくる思うよ。
0540デフォルトの名無しさんNGNG
>>539
悪い、漏れ入門書の類が嫌いなもんで、K&Rとリファレンス本以外は
殆ど金使ってないんだよね。
05414ce ◆WVdtysP8L2 NGNG
アケ板から締め出された。
0542デフォルトの名無しさんNGNG
>>541
よくわかりませんが誘導しておきますね

シューティングゲーム製作技術総合 2機目
http://pc5.2ch.net/test/read.cgi/gamedev/1073736474/
0543デフォルトの名無しさんNGNG
イジョウッシュ
0544デフォルトの名無しさんNGNG
おかげさまで、レジストリの登録できました。
ありがとう。関数名が分かったので検索しまくったら そのままの
ソースがありました。

0545デフォルトの名無しさんNGNG
http://page4.auctions.yahoo.co.jp/jp/auction/d47227135
0546デフォルトの名無しさんNGNG
エクスプローラの、上のアドレスバーの下くらいにある(詳細表示時に)
名前 サイズ 種類 更新日時......
みたいな、押すとソートをかけてくれたり、それぞれの表示領域をかえれたりするのは
いったいどのように実現するのでしょうか?
なにか、それ専用のコントロールがあるのでしょうか・・・
0547デフォルトの名無しさんNGNG
>>546
CListCtrl

但し、ソートは自前で用意する必要がある。
0548デフォルトの名無しさんNGNG
VC6++から、VC.NETへ移行するためのよいページはありますか?
MFCで書いたやつが、結構、コンパイルとおらないんですけど...
0549デフォルトの名無しさんNGNG
>>548
無理^^;;;;;;;;;;;;;
0550デフォルトの名無しさんNGNG
VC6++
0551デフォルトの名無しさんNGNG
>>549
漏れも、VC6しか知らないんだけど、何が変わったの?
どうせ、MFCはいつものウィザードなんでしょ?
0552デフォルトの名無しさんNGNG
http://www.microsoft.com/japan/msdn/visualc/productinfo/topten/upgrade60.asp
0553デフォルトの名無しさんNGNG
CreateWindowEXでコントロールを作ろうと思うのですが、
CWndのどのメッセージハンドラで呼び出せばよいのでしょうか?
コンストラクタで呼び出すとウインドウができていないのかエラーがでてしまいます。
0554デフォルトの名無しさんNGNG
SDIでこう、Viewがスクロールできるようにするにはどうすればよいでしょうか?
0555デフォルトの名無しさんNGNG
スクロールビューっていうそのものずばりなものがあるじゃないか、なあ。
0556デフォルトの名無しさんNGNG
でないと、出来ませんか?
0557デフォルトの名無しさんNGNG
あのCViewで作ってしまい、CScrollViewに基本クラスを書き換えて
OnInitialUpdateを編集したのですが、
スクロールできないんです。
0558デフォルトの名無しさんNGNG
>>556
WM_SCROLL捕まえて自分でスクロール実装する
0559デフォルトの名無しさんNGNG
>>556
お手軽にダイアログにコントロールをぺたぺた貼って
みたいなのなら CFormView というのがあることはある。
0560デフォルトの名無しさんNGNG
>>557
スクロールバーを引っ張っても
元に戻るんですが。
0561デフォルトの名無しさんNGNG

              /:::::::::::::::::::/:::::::::::::::::::::::::::/:::::::/:/::::::::::::ミヽ
                /::::::::::::::::/:::::::::::::::::::::::::::::/::::::::::/::::/:::::::::/:/:ハr'ヽ
            /::::::::::::::::/:::::::::::::::::::::::::::::::/::::::::::/::::/::::::/:/:::レ::イ::T:l
              /::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;ィ:::|:::::ハ::::::|::|::/|::::::|:::::::|
           /::::::::::::::::::::::::::::::::::::::::__::::::::::::::://|::ト、::L|::::|!:||:!/::::/::::|::!
           |:::::::::::::::::::::::::::::::::::::r'rヘヽ::::彡   |:! v!|--,.、`゙//:::::/リ
           |:::::::::::::/::::::::::/:::::::{ (⌒ |:r'´       ` 、l:/ ///l:/〃
          /:::::::::::/::::::::::/::::::::;ハヽ. |:!             |'´  '′
          /::::::::::/:::::::::::/:::::::/:::::::L°            ゙、
         /::::::::/:::::::/:::/::::::/::::::::::| l            _ ヽ
           /::::::::/:::::::/:::/::::::/::::::::::::|  l         ____r'´   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
         /:::::/:::::::/::::::::::::/::::::::::::::|          `7′  <  よくわからないモノを
     /::::::/::::::::::/:::::::::::::/ :::::::::::/           /      |  無理して使うからよ
    /:::::/::::/::::/::::::::::::::/ :::::::::::/二`ヽ、  `iヽ 、____/       \_________
   /:::::::::/:::/::::::::/::::::::::::彡.:::::::::::/三ミヽ、 ``=ヽ
   |:::::::::|::/::::::::::::/:::::::/:::/彡:::::∧`ヽ、 \三ミr'ヽ、
   |:::::::::|/:::::::::::::|!::::::::::::::/イ/::::/::::::ヽ  \ \/ ̄`ヽ\
   |:::::::/::::::/::/::リ::::::::::::/:::/:::::/::::::::ノ /\ \\   \\
0562デフォルトの名無しさんNGNG
>>560
少しはヘルプ嫁
0563デフォルトの名無しさんNGNG
>>560は自分にレスしてないか。
仮に>>558へのレスなら自分で実装するということが理解できないのか。
それともどこか別の星と交信してるのか。
0564553NGNG
ないんですかね?
0565デフォルトの名無しさんNGNG
OnCreateでやれコノヤロウ
0566デフォルトの名無しさんNGNG
春休みより酷いな。こりゃ。
0567553NGNG
もちろんOnCreateはもう試してるんですがOnCreateに入ってこないんですよ。
やってることがActiveXコントロールのラップクラスがCWndクラスから派生してるので、
CWndの基本クラスとしたクラスを作って、そのCWndをそのラップクラスにあるクラスに
置き換えるということをやってるので普通じゃないんですが、自分でいい方法探すしかないか。
分かる人がいればアドバイスよろしくお願いします。
0568デフォルトの名無しさんNGNG
なんかえらく必死だけど……宿題っすか?
0569553NGNG
仕事ですな
0570デフォルトの名無しさんNGNG
>>553
スクロールの位置はとれているんですか?
0571デフォルトの名無しさんNGNG
GetScrollPositionで試してよ
それか値をScrollToPositionに入れるのではだめかなぁ
0572デフォルトの名無しさんNGNG
>570
スクロール関連は553じゃ無いと思う
0573デフォルトの名無しさんNGNG
CFormViewをいっぱい切り替えたい。
お手軽にダイアログにコントロールをぺたぺた貼った
画面がいっぱいほしい。
コードのアリカを教えてください。
(現役:悪セス房)
いちいちスクロール書いてられるか。
 ついでに教えてくれ、べたべた張るやつの制限は
全部で255までか、それとも
ボタン255とエデット255とラジオ255でもOK牧場
0574デフォルトの名無しさんNGNG
>>573
( ゚д゚) ・・・・・
0575デフォルトの名無しさんNGNG
全部で255まで
0576デフォルトの名無しさんNGNG
CodeProjectに言って二度と戻ってくるな
0577デフォルトの名無しさんNGNG
やぱり、255(16列×16行)か ありがと 
 コードのアリカを教えてください。
高度ぐるやM$はCVIEW(SDI,MDI、分割)ばかり。


0578デフォルトの名無しさんNGNG
576 お前に相談してない。from573
0579デフォルトの名無しさんNGNG
GWだねぇ。
0580デフォルトの名無しさんNGNG
573は(゚⊇゚)ガイジソー だろ!
0581デフォルトの名無しさんNGNG
>>573
CreateWindowEX()
0582デフォルトの名無しさんNGNG
htmlから読み込んだら文字コードがUTF-8で文字化けしてしまうんですが、
文字コードを変換して表示するには、どのようにすればいいんでしょうか?
0583デフォルトの名無しさんNGNG
>>582
そういう質問ができる時点で、答えはもう出てるでしょうに。

UTF8からS-JISに変換するプログラムを作ればいい。アルゴリズムはGoogleで検索すれ。
0584582NGNG
>>582
時間がかかるんで・・・
ライブラリなどで簡単に変換する方法はないですかね?
0585デフォルトの名無しさんNGNG
>>584
http://tricklib.com/cxx/ex/babel/
これでいいかな。
0586デフォルトの名無しさんNGNG
MultiByteToWideCharで CP_UTF8して、得られたUTF-16文字列に
対して、WideCharToMultiByteでCP_932でもしとけばええやん。
0587582NGNG
>>586
そういう答えがほしかったんだよ。サンクス
0588デフォルトの名無しさんNGNG
アップロードボタンを押すたびに、<wininet.h>を
使用してFTPでファイルアップロードをする
プログラムを作っているのですが、
アップロードボタン3回までは正常に
動作するのですが、4回目から接続に
失敗してしまいます。
このような状況をご存知の方おられましたら、
解決法を教えてもらえないでしょうか?
0589588NGNG
ソースはこんな感じです。

hInternet = InternetOpen("upload",
INTERNET_OPEN_TYPE_DIRECT,
NULL,NULL,0);
if(hInternet == NULL){
InternetCloseHandle(hInternet);
MessageBox("ネットワーク接続に失敗");
goto end;
}
hHost = InternetConnect(hInternet,distip,
INTERNET_DEFAULT_FTP_PORT,
dlg.m_uid,dlg.m_passwd,
INTERNET_SERVICE_FTP,
INTERNET_FLAG_PASSIVE,0);
if(hHost == NULL){
InternetCloseHandle(hHost);
InternetCloseHandle(hInternet);
MessageBox("接続に失敗しました。\n");
goto end;
}
if(!FtpPutFile(hHost,uppath, upfile, FTP_TRANSFER_TYPE_BINARY,0)){
InternetCloseHandle(hHost);
InternetCloseHandle(hInternet);
MessageBox("アップロードに失敗しました。\n");
goto end;
}
InternetCloseHandle(hHost);
InternetCloseHandle(hInternet);
0590588NGNG
自己解決しました。
FTPアクセスの後、Socket通信をしていたのですが、
WSAStartupを呼んだ直後にWSACleanupをしていました。
WSACleanupを通信終了時でだけ実行するようにしたら、
現象が起こらなくなりました。

スレよごしスマソ
0591デフォルトの名無しさんNGNG
質問です
CWhd::MessageBoxのボタン(ハイ、キャンセル等)を任意のメッセージに
変更したいんですけど一番スマートな方法を教えてください
今は、
1.MessageBoxを呼び出す前にフラグを立てる
2.MessageBoxを呼び出す
3.WM_ACTIVATEをハンドリングして、フラグが立っていた場合MessageBoxの
ウインドウハンドルからボタンのウインドウハンドルを取得
4.ボタンのウインドウテキストを変更
という、良いんだか悪いんだか分からない方法で変更してます
もっとスマートなやり方を知っている方いらっしゃいましたら教えてください
0592デフォルトの名無しさんNGNG
>>591
自作MessageBox作れば?
0593デフォルトの名無しさんNGNG
>>592
俺もそう思う。
0594デフォルトの名無しさんNGNG
>>591
MessageBoxっていうのは出来合いのダイアログとして雛形で用意された
パターンを選択して使うもの。ボタンの数とかパターンはいくつかあって
変えられるが、あくまで用意されているものを使う。それでwindows標準形式
に沿うものができるわけだ。

ボタンのメッセージからオリジナルのものに変えたいなら、そういうダイアログ
を自分でクラス化して作る。
0595デフォルトの名無しさんNGNG
質問があります。

以下のようなコードを記述した場合、DrawLine関数の内部でも古いペンに
戻してやることは必要ですか?
DrawLineを抜けた時点でスタック上のpenは消滅するので、SelectObjectされた
デバイスコンテキストの状態が気になっています。
この例ではDrawLine()の後すぐに古いペンに戻していますが、Draw関数内の
コメントアウトされた行を実行した場合はどうなるのでしょうか?

void Draw(CDC *pDC){
  CPen *pOldPen = pDC->GetCurrentPen();
  DrawLine(pDC);
  // pDC->LineTo(100, 0);
  pDC->SelectObject(pOldPen);
}

void DrawLine(CDC *pDC){
  CPen pen(PS_SOLID, 1, RGB(255,0,0));
  pDC->SelectObejct(&pen);
  pDC->MoveTo(0, 0);
  pDC->LineTo(100,100);
}
0596デフォルトの名無しさんNGNG
SelectObjectの戻り値が何か考えたことはあるかね?
0597デフォルトの名無しさんNGNG
MFCでドキュメントビューを使わないソフトを作っているのですが、
CSplitterWndの上にCTreeCtrlとCListCtrlを作成しまして
リストにアイテムを追加しようするとNULLが返ってきます。

CtreeView/CListView/CDocumentを使わずに
同じ動作をさせるにはどうすればよいのでしょうか?
0598デフォルトの名無しさんNGNG
>>597
頑張れ
0599デフォルトの名無しさんNGNG
Cの入門用のテキストをマスターしたくらいのレベルのC++未経験者です。
最近Windows用のアプリに興味が出てきたのでVC++にチャレンジしてみたいと思っているのですが、
初心者に分かりやすく解説してあるオススメのサイトはありませんか?
やはり本屋で一冊買ってきた方が早いのでしょうか。
0600デフォルトの名無しさんNGNG
うん。
0601デフォルトの名無しさんNGNG
CPenってDeleteObjectしなくても消滅するんだっけ?
0602デフォルトの名無しさんNGNG
>>599
猫
0603デフォルトの名無しさんNGNG
>>601
うん。
0604デフォルトの名無しさんNGNG
>>597

CViewのソースをよーく見てみるべし
0605595NGNG
>596 解答ありがとうございます。きちんと選択を戻せということですね。

私がやりたかったのは、抽象化されたボタンクラスを作成して、派生したクラスでGDIオブジェクトの
置き換えに気を使わないでも良い作りにしたかったのです。

virtual void DrawInnerFrame(CDC *pDC) = 0;
virtual void DrawOutsideFrame(CDC *pDC) =0;
virtual void DrawContents(CDC *pDC) = 0;
void Draw(CDC *pCD) {
 // 実際にはペン以外にも使用されるGDIオブジェクトを取っておく
 CPen *pOldPen = pDC->GetCurrentPen();

 // 描画は派生するクラスによって異なる
 DrawOutsideFrame(pDC);
 DrawInnerFrame(pDC);
 DrawContents(pDC);

 pDC->SelectObject(pOldPen);
}

このようなコードの場合は各仮想関数の実装で選択を戻す必要は無いかもしれませんが、
万が一があるかもしれないのでキチンと選択しなおすことにしました。
(使用するのが私だけとは限らないので)

失礼しました。
0606デフォルトの名無しさんNGNG
>>605
>このようなコードの場合は各仮想関数の実装で選択を戻す必要は無いかもしれませんが、

SelectObjectされたGDIオブジェクトを破棄するのはダメだった希ガス
0607606NGNG
MSDNに書いてあった

>Do not delete a drawing object (pen or brush) while it is still selected into a device context.
0608595NGNG
>606 解答ありがとうございます。

>SelectObjectされたGDIオブジェクトを破棄するのはダメ
そうなんですが、追ってテストしてみたところ

void Draw(CDC *pDC)
{
  CPen pen(PS_SOLID, 10, RGB(22, 18, 86));
  pDC->SelectObject( &pen );
  pDC->MoveTo(0, 0);
  pDC->LineTo(100, 100);
  CPen *pPen2 = pDC->GetCurrentPen();
}

void CViewTestView::OnDraw(CDC* pDC)
{
  CPen *pPen1 = pDC->GetCurrentPen();
  Draw( pDC );
  pDC->LineTo(100, 0);
  CPen *pPen3 = pDC->GetCurrentPen();
  VERIFY( ::DeleteObject( pPen3->m_hObject ) );
  VERIFY( ::DeleteObject( pPen3->m_hObject ) );
  VERIFY( ::DeleteObject( pPen3->m_hObject ) );
  VERIFY( pPen3->DeleteObject() );
}

このようなコードが平然と動いて、もうワケワカメな状態です。
ちなみに
pPen1->m_hObject != pPen2->m_hObject
pPen2->m_hObject == pPen3->m_hObject
でした。
0609デフォルトの名無しさんNGNG
結構そーゆー感じでAPI CALLは失敗しないことがあるんで、
プログラマが注意してSelectObjectする必要がある。

あと、SelectObjectじゃないけど、第三者提供の描画関数呼び出したら
マッピングモードやら目茶苦茶にされたまま戻ってきてワヤになった
経験があるんで、それ以来 SaveDC/RestoreDCも愛用している。
0610デフォルトの名無しさんNGNG
595さん、OSは何ですか。9XとNTで動作が違います。
0611デフォルトの名無しさんNGNG
VS2003付属のMSDNにありました。

Platform SDK: Windows 9x Programming
Windows 95/98/Me Graphics Device Interface

There are platform differences in the way drawing objects are deleted.
In Windows NT/Windows 2000, if a drawing object (pen or brush) is deleted
while it is still selected into a DC, the DeleteObject function fails.
In Windows 95/98/Me, the function succeeds,
but the result is a nonfunctioning object.
This nonfunctioning object is automatically destroyed when the DC is deleted.
0612595NGNG
開発環境はWindowsXPですが、Windows2000でもテストを行ってみたところ
>608のコードでデバッグしてもエラーにはなりませんでした。
残念ながら95/98/Meで確認できなかったのでこれ以上の追求は出来ませんでした。

>611さんに報告していただいた内容とは異なりますが、OSによって挙動が違う
ようですのでSelectObjectは怠けずに行うことにします。

皆様、ありがとうございました。
0613デフォルトの名無しさんNGNG
>>612
怠け者にはSaveDC()とRestoreDC()がお勧め
0614デフォルトの名無しさんNGNG
RestoreDCも、Create->SelectしっぱなしのGDIオブジェクトの面倒は見てくれない。
SelectObjectでの戻しだけは必須。
0615デフォルトの名無しさんNGNG
>>614
MSDNライブラリには、SaveDCは選択されているオブジェクトの状態を保存すると書いてあるが?
0616デフォルトの名無しさんNGNG
すみません。くだらない質問なんですが、
みなさんはC++をどれくらいの期間で習得しましたか?
         一日どれくらい時間勉強しましたか?
     さらに、何歳から勉強しようと思いましたか?
0617デフォルトの名無しさんNGNG
>>616 スレ違いだな
0618デフォルトの名無しさんNGNG
>>616
最後は本人のやる気次第じゃないかな。
0619デフォルトの名無しさんNGNG
CMDIChildWndに、メニューを設定したいです。
CMDIChildWndを継承したウインドウのOnPreCreate()で、

CMenu m;
m.LoadMenu(IDR_MYAPP);
this->SetMenu(&m);
m.Detch();

とやると落ちます。
デバッグして追ってみると、SetMenuでハングしています。
どうすればよいのでしょうか。
0620デフォルトの名無しさんNGNG
>>619
子ウィンドウにメニューは付けられないはず。
0621デフォルトの名無しさんNGNG
出来るよ
高橋の過去ログで検索すれば出てくる
0622デフォルトの名無しさんNGNG
CPen::CreatePenで作ったペンでビットマップに線を引きたいのですが、
線の色を、描画するビットマップの色の反転したものにするにはどうしたらいいでしょうか?
0623デフォルトの名無しさんNGNG
>>621
http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/resources/menus/aboutmenus.asp

>Only an overlapped or pop-up window can contain a menu bar; a child window cannot contain one.
0624デフォルトの名無しさんNGNG
ジョイパッドのグローバルフックをしたいんですけど
どのようにしたらよいのでしょうか?

ジョイパッドのボタンが押された時に
とんでいくメッセージは何になるんでしょうか?
0625デフォルトの名無しさんNGNG
>>624 DirectInput使わずにオレも制御しようとしたことがあったけど、
メッセージもあったはず。
mmsystem.hを読むとよろし。mmlib32.libのリンク忘れないように
0626624NGNG
>>625
なるほど
mmsystem.hを読んでみます
0627デフォルトの名無しさんNGNG
mmsystem.hをみると
Joystickのメッセージは
MM_JOY1BUTTONDOWN
MM_JOY1BUTTONUP
MM_JOY2BUTTONDOWN|
MM_JOY2BUTTONUP
のようだったので
WH_CALLWNDPROCのフックプロシージャを作って
そこで(CWPSTRUCT *)lParam->message が
上記の値なら処理するようにしたのですが
接続してるゲームパッドを叩いてみても無反応でした(´;ω;`)ウッ…
0628デフォルトの名無しさんNGNG
俺のジョイスティックは最近元気が無くて。。。
0629デフォルトの名無しさんNGNG
>628
ちゃんと接続されてるか確認しような。
0630デフォルトの名無しさんNGNG
>628
俺もだ。歳のせいかな。
0631デフォルトの名無しさんNGNG
エディットボックスをクリックしたら以前入力した項目が出てくるようにするには
どうすればいいでしょうか?
0632デフォルトの名無しさんNGNG
オートコンプリートを付ける。
0633デフォルトの名無しさんNGNG
>>632
もう少し詳しく教えていただけないでしょうか?
0634デフォルトの名無しさんNGNG
>>632
「オートコンプリート」って機能実現のために出来合いの関数群が用意されてる?
0635デフォルトの名無しさんNGNG
ヒストリを実装したエディットコンボボックスで必要十分だと思うんだけど。
0636デフォルトの名無しさんNGNG
>>635
「ヒストリ」とは?
「エディットコンボボックス」ってあったっけ?
0637デフォルトの名無しさんNGNG
中身を編集できるコンボボックスはあるよね。
0638635NGNG
>>636
>「ヒストリ」とは?
History。履歴。

>「エディットコンボボックス」ってあったっけ?
>>637の事。
0639デフォルトの名無しさんNGNG
お前らは、IAutoComplete も知らないのか。
0640デフォルトの名無しさんNGNG
COMを理解出来るほど上達してない。
0641デフォルトの名無しさんNGNG
COMのメンバ関数につける長ったらしいプリフィックス?が嫌い。
0642デフォルトの名無しさんNGNG
オレ用語使うヤシがいるがそれじゃプログラミング・サポート系スレのレスに
ならないよ・・・。短文レスにするならちゃんとしたライブラリ用語とか使えよ。
じゃなかったらやり方をきちんと説明汁。
0643デフォルトの名無しさんNGNG
>>642 (°Д°)ハァ?
IAutoComplete をキーワードにヘルプ見たら一発だろうが。
0644デフォルトの名無しさんNGNG
「エディットコンボボックス」のことだべ。
0645デフォルトの名無しさんNGNG
>>644
それは訳分からんな。
「CBS_DROPDOWN」で説明すべきだな。
0646デフォルトの名無しさんNGNG
>>643
普通に考えて>>635だろよ
0647デフォルトの名無しさんNGNG
>>643
...
0648デフォルトの名無しさんNGNG
ここMFC限定ですか?VCスレってことで質問です
VC6.0sp6で、以下のように宣言するとC2059エラーが出ます。
どこか間違っていますでしょうか?

template<class T>
class B
{
};

class A{
template<class T>
friend class B;
}

0649デフォルトの名無しさんNGNG
スレ違いだが、
ttp://www.tietew.jp/cppll/archive/414
0650648NGNG
>>649
スレ違いすいません
VC6じゃコンパイル出来ないんですね
ありがとうございました
0651デフォルトの名無しさんNGNG
自分の作った常駐プロセスをユーザに停止させないようにする方法はどうするのでしょう。
二つ起動させておいてお互いを監視しあって停止させられたら起動かける
方法にしましたが、タスクマネージャから「プロセス ツリーの終了」で
綺麗さっぱり なくなってしまいました。
0652デフォルトの名無しさんNGNG
悪用されるので教えられません。
0653デフォルトの名無しさんNGNG
あれれ、そうなんですか。
サービスという方法もありますが難解ですし時間もないので困ってます。
プロセス ツリーの終了 と プロセスの終了 はどう違うのでしょうね。
子プロセスも停止させるのかな。
(ちなみに社内用でデータの持ち出しを防ぐためのツールを作っています)
0654デフォルトの名無しさんNGNG
>>653
停止させられないワームとかウイルスをコードのコピペでお手軽に作られると嫌でしょ。
ユーザの権限ではUSBとかFDDとかのデバイスを使用不可にしとけば?
0655デフォルトの名無しさんNGNG
>>653
そういうのは物理的に持ち出せないようにしないとまずいと思う。
例えば外付けドライブからCDブートのLinux等を
起動させられたりするとどうしようもない。
0656デフォルトの名無しさんNGNG
>654の言うとおりかな。
最低限のハードウェアしか積んでおらず、外部のネットワークと
接続されていない専用端末を用意すればよろしいかと。
0657デフォルトの名無しさんNGNG
private: System::Void button1_Click(System::Object * sender, System::EventArgs * e)
{
  int a;
  a=textBox1->Text->ToInt32;
}

4行目を↓のようにしてもうまくいかず・・・どうやれば上手くいくのでしょうか?
a=atoi((char)textBox1->Text);

これこのスレで質問してもいいのですか?
C/C++スレで聞いたらスレ違いらしかったので
0658デフォルトの名無しさんNGNG
atoiの引数はchar型のポインタじゃなかったか?
そのtextBox1とやらがどんなものなのかわからんから何とも言えんが
キャストするなら( char* )にしないと。まあ元のデータが
char型のポインタじゃ無ければ駄目だけど。
0659デフォルトの名無しさんNGNG
textBox1->TextがCStringならatoi(textBox1->Text)で医院で内科医?
0660デフォルトの名無しさんNGNG
>>658
error C2440 'System::String __gc*'から'char*'に変換できません。
と出ました。CString変数使わずにダイレクトでintにする方法は無いのでしょうか?
0661デフォルトの名無しさんNGNG
>>659
error C2446 'atoi': 一番目の引数を'System::String __gc*'から'const char*'に変換できません。
となります色々試しているのですがヒント程度でも何でもいいのでお願いします。
0662正解大魔王NGNG
CString str="53653";
int b=atoi((LPCTSTR)str);


0663デフォルトの名無しさんNGNG
>>662
それはヒントなのでしょうか?
a=atoi((LPCTSTR)textBox1->Text);
とするもエラー4つ

これは LPCTSTR型 にキャストすれば atoi で変換できるということなんでしょうか?
0664デフォルトの名無しさんNGNG
(LPCTSTR)(textBox1->Text)
0665デフォルトの名無しさんNGNG
strtolとか
strtoulとかもあるぞ
0666デフォルトの名無しさんNGNG
657です
.NET Visual C++プロジェクト Formアプリケーションから作ってますがその辺と関係があるのでしょうか?
CString 宣言すると定義されてない識別子と出るので何かおかしい・・・
0667デフォルトの名無しさんNGNG
>>664
error 2065/2378 LPCTSTRが定義されてません/識別子がtypedefとして再定義
エラーが2つ
0668デフォルトの名無しさんNGNG
>>665
今から調べて使ってみます
0669デフォルトの名無しさんNGNG
>>665
a=strtol(textBox1->Text,NULL,10);
のように使えばいいのでしょうか?
これだと >>661 同様のエラーが出ました
やはり型のところで何か問題があるようです
0670デフォルトの名無しさんNGNG
それから textBox1.Text はデザイン時に "10" としています
0671デフォルトの名無しさんNGNG
char *stop;//<<---これを書いてから
int i=strtoul(str,&stop,10);//<<--こうする
0672デフォルトの名無しさんNGNG
managedの話をいつまで続ける気だ?
0673デフォルトの名無しさんNGNG
>>671
private: System::Void button1_Click(System::Object * sender, System::EventArgs * e)
{
  int a;
  char *stop;
  a=strtol(textBox1->Text,&stop,10);
}

error C2664 一番目の引数を'System::String __gc*'から'const char*'に変換できません。
でした。因みに char *stop は宣言だけ使用してるので中身は NULL ということなんでしょうか?
何れしても問題は一番目の引数のようです。
0674デフォルトの名無しさんNGNG
>>672
managedについて調べてみました
MS VisualStudio .NET 2003 での Visual C++
は所謂従来の Visual C++ とはかなり違うもののような雰囲気のようですね
managed C++ という表現があるようですが、それが今自分のやろうとしてるものなんでしょうか?
0675デフォルトの名無しさんNGNG
最初の引数がポインタであることが原因
ポインタじゃなければ(LPCTSTR)でキャストして
atoiに放り込める。
0676デフォルトの名無しさんNGNG
>>675
>>664 で教えられて >>667 のような結果なのですが、これとは違うのでしょうか?
0677デフォルトの名無しさんNGNG
ここ、MFC限定ですが。
0678デフォルトの名無しさんNGNG
>>677
すいません。
徐々に自分がスレ違いのような気がしてきました。

managed C++ やろうぜ!!
http://pc5.2ch.net/test/read.cgi/tech/1014486422/
こっちのスレに移動します。
お力になって頂けるのであればお願いします。
0679デフォルトの名無しさんNGNG
最初から思いっきりスレ違いだろ・・・
0680デフォルトの名無しさんNGNG
カーソルキーで画像うごかそうとしてるのですが
上 下 左 右 はうごくのですが
斜めにうがしたいのですが
どうすればいいでしょうか?
0681デフォルトの名無しさんNGNG
GetKeyboardStateとか使えば逝けるかな
0682デフォルトの名無しさんNGNG
AI知っている人、手えあげて
0683デフォルトの名無しさんNGNG
<<681
GetKeyboardStateでいけますか?
0684デフォルトの名無しさんNGNG
上下左右に動くんなら、ナナメ移動も出来ると思うわけですが…
コードが悪い気が。

ただ、ハードウェア制限により、
キーの同時取得が出来ない組み合わせもあるけど。
0685デフォルトの名無しさんNGNG
まことに初歩的な質問で恐縮ですが、MFCアプリで終了コードを
設定して終了する場合はExitInstanceをオーバーライドして
int Cほにゃらら::ExitInstance(){
  return( 123 );
  // return CWinApp::ExitInstance(); // ←元々あったコード
}
のようにすると思うのですが、この場合に元々呼び出していた
CWinApp::ExitInstance()の呼び出しを行う必要はあるのでしょうか?
0686デフォルトの名無しさんNGNG
あるよ。
0687デフォルトの名無しさんNGNG
>>685
CWinApp::ExitInstance()のソースを読めば分かるんだけど、アプリ内で設定されたMRUなどを
保存しているので、無いと色々と不都合が出てきそう。

int Cほにゃらら::ExitInstance(){
  CWinApp::ExitInstance(); // ←元々あったコード
  return( 123 );
}

どうせなら、こうした方が無難カモ。
0688685NGNG
レス、ありがとうございます。

他社からメンテナンスで引き継いだソースだと、元々のExitInstanceが
コメントアウトされたままの物があったのでどうなのかと思いまして。

しかし、このアプリ既に全国展開で何年も動いているんだよな。ガクブル
0689デフォルトの名無しさんNGNG
動いているなら大丈夫。改変さえしなければね (;´Д`)
0690デフォルトの名無しさんNGNG
「動いている間は触るな」と言う素晴らしい格言がある。触るな。
0691デフォルトの名無しさんNGNG
あるVC5で作成されたアプリが、なんだかソースはすごく変なのに動いてました。
(初期化していない変数に平気でアクセスしている)
そのままVC6に持っていったら、案の定まともに動きませんでした。
しょーがないので、そのままVC5で保守しています。
動いているので触りません。
0692デフォルトの名無しさんNGNG
>>691
手遅れだな
0693デフォルトの名無しさんNGNG
俺も昔は、よく爆弾仕込んだもんだ(爆)
0694デフォルトの名無しさんNGNG
VC++6.0 MFC

すみませんが、教えてください。

入力画面1>入力画面2>入力画面3>結果画面

といったような画面がどんどん遷移していくアプリを作成したいのですが
これを実現するにあたって標準的な方法はどういったものなのでしょうか?
(画面遷移は一方通行です。結果画面のあと入力画面に戻ります。)

1.SDIで作って画面ごとにコントロールの表示/非表示を切り替える。
2.画面ごとにダイアログを作成し順番に表示する。
3.MDIで作って画面ごとに子ウィンドウを作成する。
4.その他

よろしくお願いします。
0695デフォルトの名無しさんNGNG
どういう内容を入力させたいのか分らないけど、
ダイアログが一番簡単でユーザーにも分りやすいでしょう。
下手にSDIとかMDIで画面を切替えたりすると、どれがメイン画面か
分りにくくなるし。感じとしてはAppWizardみたいなものになるんだと
思います。
0696デフォルトの名無しさんNGNG
>>694-695
MFCだと、CPropertySheetでSetWizardModeするのがやりやすいかね。
この場合、ステップ毎にCPropertyPage(ほぼダイアログ感覚)を作っていく。
0697デフォルトの名無しさんNGNG
APIのSetTimerで時間ごとにメンバ関数を呼び出すにはどうしたらいいでしょうか?
SetTimerの第4引数でメンバ関数のアドレスを渡しても呼び出してくれませんでした。
0698デフォルトの名無しさんNGNG
>>697
どこから SetTimer 呼び出してる?
なせ、CWnd::SetTimer を使わない?
0699697NGNG
CXXXView::InitialUpDate()内でCWnd::SetTimer(1 , 1 , TimerProc);を実行し
void CALLBACK EXPORT CXXXView::TimerProc(HWND hWnd, UINT nMsg, UINT nIDEvent, DWORD dwTime){}
としたのですが無理でした
APIでもCWnd::でも同じようです
エラーは下のようになりました
'SetTimer' : 3 番目の引数を 'void (struct HWND__ *,unsigned int,unsigned int,unsigned long)' から
'void (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,unsigned long)' に変換できません。
スコープ内でこの名前を持つ関数でターゲット型に一致するものはありません。
0700デフォルトの名無しさんNGNG
FAQ
0701デフォルトの名無しさんNGNG
さすがにコンパイル出来てないのに
呼び出してはくれんだろ。
0702デフォルトの名無しさんNGNG
現在スレッドの勉強をしているのですが、
サンプルソースの中に、

CUdpThread ->m_pThreadParams = NULL;


class CUdpThread : public CWinThread
{・・・・・・・・};

という、部分があり、何のために書かれているのか解かりません。
m_pThreadParamsでMSDN・GOOGLEとうで検索してみたのですが
MSDNにいたっては、データ メンバ にすらのっていませんでした・・・。

m_pThreadParams は何の設定を行うものなのでしょうか?

0703702NGNG
追加

http://www.cppdoc.com/example/mfc/classdoc/MFC/CWinThread.html

海外のページには、のっていたのですが、目的がかかれていませんでした。
0704デフォルトの名無しさんNGNG
>>702
スレッド起動時のパラメータ、AfxBeginThread の第2引数が入る。
0705デフォルトの名無しさんNGNG
処理がいつ終わるかわからないんで、
実行中だというのを示すために、
アニメーションを表示させようと思ってます。

で、たまにみるプログレスバーみたいなのは
自作したものなのでしょうか。
左から右にプログレスバーのブロックが
繰り返し流れていくやつです。

---------------------------------
|→→→→→→■■■■■→→→→→|
---------------------------------

XPのエクスプローラで検索するとでてくるのに似てます。
(検索コンパニオンをOFFにしてるとでないかもしれません)
0706デフォルトの名無しさんNGNG
質問です
コンボボックスをオーナー描画にすると、なぜか高さが大きくなってしまうのですが
これを通常時(オーナー描画しないときと同じ)高さにする方法はないですか

VC6sp6
Windows2000
0707デフォルトの名無しさんNGNG
age
0708706NGNG
自己解決しました
お騒がせしました
0709702NGNG
704さん
ありがとうございました
0710デフォルトの名無しさんNGNG
質問させて頂きます。

カーソルがウィンドウ外に出た時にメッセージが欲しいのですが
そういうウィンドウメッセージはありますか?
0711710NGNG
SetCapture()
ReleaseCapture()
で自己解決しました。
0712デフォルトの名無しさんNGNG
VC6です。
エクスプローラと同じように、フォルダを一覧するツリーを作成しています。
表示は出来るようになったのですが、動的な更新に対応したい.と思って困っています。
つまりエクスプローラなどで、フォルダを作成したり、削除した.りしたときに、その変更を検知して、自分のツリーも更新を.かけたいのですが、その変更をどうやって検知すればよいか.がわからなくて困っています。
エクスプローラからブロードキャストされるようなメッセージが.あるのでしょうか?
よろしくお願いいたします。
0713デフォルトの名無しさんNGNG
>>712 マルチやめれ
厨房、いや、新人必死だな
0714デフォルトの名無しさんNGNG
>>712
初心者板で解決いたしました。お世話がセ氏真下。
0715デフォルトの名無しさんNGNG
すまそ。
アプリケーションでよく見るファイルの参照ボタンって、
どうやって作るの?
どっかのコントロールにあるんですかね?
0716デフォルトの名無しさんNGNG
CFileDialogだったかな。
0717デフォルトの名無しさんNGNG
「参照ボタン」という事だから、CButton だろ。
0718デフォルトの名無しさんNGNG
ダイアログベースのアプリを作成して,
起動時に最大化させようと思っているんですが,
うまくいきません.
起動後に「最大化ボタン」を押すと最大化
できるんですが...
0719デフォルトの名無しさんNGNG
つか、悪いこといわないから、Winアプリ作ろうと思ってる人は
とりあえずWin32APIをある程度理解してからとりかかったほうがいいよ。

わけもわからずスケルトン生成
→なんかソースがたくさんできる
→どこ変えたらいいかわからない

みたいな質問ばかりだけど。
0720デフォルトの名無しさんNGNG
>>718
STARTUPINFO::wShowWindowあたり調べたか?
0721718NGNG
BOOL CXXDlg::PreCreateWindow(CREATESTRUCT& cs)の中で,
  cs.style |= (WS_MAXMIZE | WS_VISIBLE);

としてもダメだったので,WM_CREATEのメッセージハンドラを作成して
以下のようにしました.

int CXXDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)内で
  ShowWindow(SW_SHOWMAXIMIZED);

これで最大化されるようになりましたが,これでいいんでしょうか?
最初の方法でもいいような気が... あっ720さん どうも


0722デフォルトの名無しさんNGNG
PreCreateWindow
0723デフォルトの名無しさんNGNG
InitInstance
0724718NGNG
>>722さん
PreCreateWindow内でShowWindowをよんでも最大化しませんでした.

>>723さん
InitInstance内での使用方法が分かりませんでした(すいません)

色々やってみると,

BOOL CXXDlg::OnInitDialog()内で,
  ShowWindow(SW_SHOWMAXIMIZED);

でもOKでした.こっちの方がいいのかな
0725デフォルトの名無しさんNGNG
ダイアログベースのアプリからHTTPプロトコルをつかってサーバーサイドのアプリのActionしたいのですがそんな関数有りますか?
0726デフォルトの名無しさんNGNG
初心者ですいません。
MFCでボタンを作って、それを押すことで何かの処理をするってときに
計算に時間がかかるような処理だったりすると、ほかのボタンを受け付けなくなります。
ボタンを押すことによって計算を一時中断したいけど、皆さんはこういうのはどうやってるんですか?
0727デフォルトの名無しさんNGNG
マルチスレッドとか。
0728デフォルトの名無しさんNGNG
>708
自己解決って、どうやったの?
0729デフォルトの名無しさんNGNG
>>724
>PreCreateWindow内でShowWindowをよんでも最大化しませんでした.

そりゃ無理じゃん Pre だぜ?
そこでやるならCREATESTRUCTの修正だよ
0730デフォルトの名無しさんNGNG
>>724
OnShowWindow
0731デフォルトの名無しさんNGNG
>>724
最初は初期化関連処理はOnInitDialog()内で一通りやるように覚えておけば良いよ
それが無難
0732デフォルトの名無しさんNGNG
>>726
マルチスレッドを使う。
プログラム本体の動作はそのままにそれと別に裏で処理を行う場合は、
その処理用のスレッドを作成してそこで処理する。管理が面倒なので
若干高度なプログラムになるよ。何か適当にソースを拾ってきてマネする
ところから始める。
0733デフォルトの名無しさんNGNG
>>726
中断ボタンが押されたらフラグを立てるようなメッセージ処理を作っておく。
処理ループ中では、上記フラグの監視(フラグが立ったら強制終了)と、
PeekMessage,TranslateMessage,DispatchMessaheを使ってボタンコントロールの
メッセージを受けられるようにする。

こうすっと、シングルスレッドでもできる。
0734デフォルトの名無しさんNGNG
ウインドウの初期設定はCREATESTRUCTでやるってことを知らないから
>>718みたいな質問が来るんだろうな。
0735デフォルトの名無しさんNGNG
>>734
ダイアログって CREATESTRUCT だっけか?
0736デフォルトの名無しさんNGNG
ニヤニヤ
0737726NGNG
>>727,732,733

ありがとうございました。早速勉強して作ってみたいと思います。
0738デフォルトの名無しさんNGNG
タイマーの処理にInvalidate();を入れたのに画面が更新されません。
なじぇ?
0739デフォルトの名無しさんNGNG
InvalidateはメッセージキューにWM_PAINTをPostするだけ
だから。
UpdateWindowですぐに描画させる。
0740デフォルトの名無しさんNGNG
再描画は、RedrawWindow()ってやってるけど
それじゃいかんのでしょうねぇ…。
0741デフォルトの名無しさんNGNG
>>739
Invalidate自身はポストしないよ
Windowsがポストする条件の1つを真にするだけ
0742739NGNG
>>738,741
ごめん。
× InvalidateはメッセージキューにWM_PAINTをPostするだけ
○ Invalidateはクライアント領域を無効にするだけ
ですた。PostするのはOSですた。逝ってくる。。。
0743デフォルトの名無しさんNGNG
下手すると、無限ループに陥るは仕様です。
0744デフォルトの名無しさんNGNG
void CShadowDlg::OnButton1()
{
//ボタンが�@が押された処理
if(){


//ボタンが�Aが押された処理
}else if(){

}


}
押されボタンによって処理を分けたいのですがどのように判定すればよろしいですか?
0745デフォルトの名無しさんNGNG
>>744
合理的な方法はない。イベント分けろ。
0746デフォルトの名無しさんNGNG
>>744
IDで判別するとか?
wizard使わずに自分でメッセージマップを書く必要があるかも。

0747デフォルトの名無しさんNGNG
ON_COMMAND_RANGEだろ。
0748デフォルトの名無しさんNGNG
OnCommand()なら、パラメータからIDが取得できる。
あとは744の好きなように料理すれ。
0749デフォルトの名無しさんNGNG
>>745は嘘つき
0750デフォルトの名無しさんNGNG
>>745
ニヤニヤ
0751デフォルトの名無しさんNGNG
ダイアログにポップアップメニューが表示されるようにしているのですが
ポップアップメニューの項目のチェックのON,OFFが出来ません…
UPDATE_COMMAND_UIもダメですし、直接 CheckMenuItem()してもダメでした。
もう、分けがわかりません。
誰か分かる方が居たらお願いします。
0752デフォルトの名無しさんNGNG
WM_INITMENUのハンドラで更新
0753デフォルトの名無しさんNGNG
こういうの見るとMFCって罪作りだと改めて思う今日この頃。
0754752NGNG
>>751
CDialogには「WM_INITMENU」に対応する関数が無いみたいです。
あったとしても、CheckMenuItem()で変更が出来ないんですよね…
OnContextMenu()の中で、CheckMenuItem()しても、全く変化なしです…
0755754=751NGNG
スミマセンレス番号と自分の番号を間違えました…

>>752
CDialogには「WM_INITMENU」に対応する関数が無いみたいです。
あったとしても、CheckMenuItem()で変更が出来ないんですよね…
OnContextMenu()の中で、CheckMenuItem()しても、全く変化なしです…
0756デフォルトの名無しさんNGNG
OnInitMenuPopupだろ。

少し前からわからんくせに回答してる奴が紛れてるようだが何かあったのか?
0757755NGNG
>>756
いや、ダイアログには無いですよ…
AppendMenu()で追加は出来ても
CheckMenuItem()でチェックは付けれないんです…
0758デフォルトの名無しさんNGNG
>>757
なかったら、メッセージのフィルタを変える。
ダイアログリソースエディタ上で右クリ→イベント→クラスで使用可能なメッセージ用フィルタ→「ウィンドウ」
CheckMenuItemでチェックできないはずはない。第二引数をTRUEにしてたとかは初心者にありがちだが(MF_CHECKED)
0759デフォルトの名無しさんNGNG
ダウンロードのダイアログとか
インストーラのダイアログとかの
バーば伸びていくタイプのメーターチックな実装を実現するクラスはなんですか?
0760デフォルトの名無しさんNGNG
>>759
CProgressCtrl

バーばっ
0761デフォルトの名無しさんNGNG
>>760
サンクスコ
0762デフォルトの名無しさんNGNG
バーばっパパ
0763755NGNG
>>758
「MF_CHECKED」を完全に見落としてました…
なんでこんな事が分からなかったのか…
本当に何度もすみませんでした!!
お陰で上手くチェックできますた!!
0764755NGNG
CheckMenuItem()の、nCheckパラメータってビットのフラグだったんですねぇ…
完全に見落としてました…
普通に型がUINTだから、分かり難いです…
パラメータがビットのフラグを取る時は
いっその事 型を「BITFLAG」とか「BITVECTOR」とかにして欲しい。
0765デフォルトの名無しさんNGNG
わかったから、仕事に戻れ。
0766758NGNG
>>763-764
まあ、俺は一回しかレスしてないけどな。
こじれてきたら該当箇所を晒してみればサクっと解決することも多いよ。
昔こんなことあったなって思いついて付け加えたのがたまたまハマって良かったが。

フラグに型か・・・次の仕事はDelphiを押せ
0767デフォルトの名無しさんNGNG
質問っす。
CEditのコントロールにフォーカスが来ると、自動的にカーソルが末尾に行くようにしたいんですが、なにかいい方法ないでしょうか?

void Cxxx::OnEnSetfocusEdit()
{
m_Edit.SetSel(-1, -1, FALSE);
}

調べたところ、これで出来るという風なことなんですが、うまくいきません。。
0768デフォルトの名無しさんNGNG
質問の仕方としては最低の部類だな
0769デフォルトの名無しさんNGNG
現在のダイアログ上に埋めたままのCProgressCtrlなら使えるのですが
ダイアログのウィンドウとは別あのバーだけ表示させてさらに背後のダイアログ上で処理を進めるにはどうしたらいいですか
0770デフォルトの名無しさんNGNG
>>769
プログレス持ったダイアログ表示させれば良いだけだろ。
DoModal ではなく Create で作る。
0771デフォルトの名無しさんNGNG
>>770
サンクス
CForProgfp;
ってやって
fp.Create(IDD_DLG_FOR_PROG,NULL); // 失敗?
fp.DoModal();//成功
失敗しているのかどうかしらんけども窓が出てこない
DoModalでやったらちゃんと表示される
なんでかわかんない
0772デフォルトの名無しさんNGNG
ちなみに
CForProgfp;
fp.Create(fp.IDD,NULL);
でも駄目ですね
一緒か
0773デフォルトの名無しさんNGNG
>>771
ShowWindow しないとダメ。
念のため書いておくけど、
↓これ含んだ関数を抜けちゃうと、破棄されてしまうオチが。
CForProg fp;
0774デフォルトの名無しさんNGNG
ShowWindow入れてみようというくらいの知恵は働かんのかなー
0775デフォルトの名無しさんNGNG
うまくいきました
ShowWindowなんてものがあることをしりませんでした
ところで僕はいまVisualStudioを使ってグラフィカルなプログラムをかいているのですが
それの各要素にIDというのが振られていますが
動作中のプログラムはどこにこれを保持しているのでしょうか?
勘違いだったらすんません
0776デフォルトの名無しさんNGNG
勘違いだ。
0777デフォルトの名無しさんNGNG
void のポインタをキャストしてインクリメントしたいのですが、
コンパイルの段階でエラーになります。(gccでは出来るのに。)
void *vp= aiueo;
(int *)vp ++;
これって文法的にはどうなんでしょ?
VCがそういう仕様なんでしょうか?
そもそも、Cの文法(ANSI C?)で規定されていないんでしょうか?
0778デフォルトの名無しさんNGNG
そうですか
IDを持っていないウィンドウとかをClassっぽく使うにはどうしたら良いのですか?
要はダイアログとかのエディット画面を使わずに座標指定だけで
CProgressCtrlを使いたいのですがどうすればいいのかさっぱりわからんのです
0779デフォルトの名無しさんNGNG
CProgressCtrl *p=new CProgressCtrl();
p->Create(...);
0780デフォルトの名無しさんNGNG
なんでわざわざMFC限定って書いてるのにCの質問する奴がいるんだよ

あとVC++初心者スレもあるから、なんつーか・・・察すれ
0781デフォルトの名無しさんNGNG
>>780
そういう気遣いすらできないから、初心者なんだろ?
この場合、「ネット初心者」っつうプログラム以前の問題になってくるけどな。
0782デフォルトの名無しさんNGNG
MDI tabs を実装したいのですが、どうしたらいいのでしょうか?
0783777NGNG
スレ汚してすいませんでした。急いでいたのできちんと
確認しないまま書き込んでしまいました。
0784VC++NGNG

struct Flg{
int flg;
//flg = 0;
int getFlg(){
struct Flg f ;
return f.flg ;

} ;

void setFlg(int updown){
struct Flg f ;
f.flg = updown ;

} ;

} ;


0785デフォルトの名無しさんNGNG

//784の続き
void CShadowDlg::OnButton5()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
Flg l;
int a = l.getFlg();
l.setFlg(2);
a = l.getFlg();
UpdateData(TRUE);
m_ie2.Format("%d",a);
UpdateData(FALSE);
if(a == 0 || a == NULL ){
setFlg(1);
UpdateData(TRUE);
m_e1.Format("テスト2");
UpdateData(FALSE);

}else if(a == 1){
setFlg(0);
UpdateData(TRUE);
m_e1.Format("テスト1");
UpdateData(FALSE);

}

0786784NGNG
ボタンが押されるたびにエディットボックスのテキストを交互に変更したいのですが784,785のようにやったら構造体Flgのflgの値が、「-858993460」と、なってしまいます。
なにかいいほうほうはないでしょうか?よろしく願いします。
0787デフォルトの名無しさんNGNG
>>784
struct Flg{
  int flg; ← [A]
    //flg = 0; ← このコメントもわけわからんが...
  int getFlg(){
    struct Flg f ; ← これはもっとわからん...
    return f.flg ; ← まさか、[A] の値を返しているつもりか.... ?
    } ;
0788デフォルトの名無しさんNGNG
そうです・・・Aの値を返してます・・・・・
まずかった?
すみません私JAVAあがりなもので・・・・
0789デフォルトの名無しさんNGNG
JAVAもわかってないような...
0790デフォルトの名無しさんNGNG
すごいもの見ちゃった。。。
0791デフォルトの名無しさんNGNG
普通に

OnButton(){
  static int f = 0;
  f ^= 1;
  if (f){
  }
  else{
  }
}

じゃだめなの?
0792784NGNG
javaのゲッターとセッターのつもりで書いたんですが・・・・


class Flg{
 privete flg;
 
 public int getFlg(){
   retrun flg
 }

 public void setFlg(int i){
   flg = i;
 }

}
javaでかくとだとこんなかんじにしたいです。C++オブジェクト指向でしょ・・・・?
0793デフォルトの名無しさんNGNG
フラグにいちいちクラス用意するやつはじめて見た。
0794デフォルトの名無しさんNGNG
なんでJAVAのそのコードがC++になると
上のようになって
「C++オブジェクト指向でしょ・・・・? 」
なのかが全くわからない
0795デフォルトの名無しさんNGNG
たぶんオブジェクト指向を理解できていない、もしくはとんでもな方向に理解してるやつだな。
0796784NGNG
>>791
ありがとうございます。できました
0797デフォルトの名無しさんNGNG
「すみません私JAVAあがりなもので」
高倉健みたいなセリフでつ
0798784NGNG
高倉健です
0799デフォルトの名無しさんNGNG
無礼なこと言って失礼しますた
0800デフォルトの名無しさんNGNG
誰かに「javaのclassはC/C++のstructと同じだよ!」見たいなこといわれたのかな?
0801高倉健NGNG
いわれた・・・・
0802デフォルトの名無しさんNGNG
厳密にいうとclassじゃなくて「javaのBeanとC/C++のstructはおんなじだよ!!!」っていわれました
0803デフォルトの名無しさんNGNG
>>792のpriveteやretrunには触れないところがおまえらの優しいところだ。
0804高倉健NGNG
あ、すぺるまちがってた・・・
0805デフォルトの名無しさんNGNG
wavファイルやbmpファイルなどの音声やイメージを
exeファイルに全て入れて配布したいのですですが、
どうすればいいのでしょうか?
0806デフォルトの名無しさんNGNG
それって自己解凍圧縮ファイルじゃねぇの?
0807デフォルトの名無しさんNGNG
リソースに持てば?
0808デフォルトの名無しさんNGNG
EXEだと起動時に全てメモリ上に読み込まれるんじゃなかったっけ。
0809805NGNG
リソースにもつというのはどういうことですか?
0810デフォルトの名無しさんNGNG
Windowsは実行ファイルのなかに、画像、文字といった
情報(リソース)をセクションを作って持つことができる。
0811デフォルトの名無しさんNGNG
  if(m_e5.GetLength() != 0){
   m_b1.EnableWindow(FALSE);
 GetDlgItem(IDC_RADIO1)->EnableWindow(FALSE);
 GetDlgItem(IDC_RADIO4)->EnableWindow(FALSE);
 GetDlgItem(IDC_EDIT5)->EnableWindow(FALSE);
 GetDlgItem(IDC_EDIT6)->EnableWindow(FALSE);
 
 UpdateData(TRUE);
 m_e1.Format("準備完了");
 UpdateData(FALSE);
 }
エディットボックスに入力されてるかどうかを判定したいのだけど、これでうまく判定されないのはなぜですか?
またどのように判定すればいいのですか?
0812デフォルトの名無しさんNGNG
UpdateDataの前後でm_e5の中身を見比べてみよう。
0813デフォルトの名無しさんNGNG
>>811
入力判定ってのは、最初の「if(m_e5.GetLength() != 0){」のこと?
なら、その前にUpdateData(TRUE);がないとダメなのでは?
0814デフォルトの名無しさんNGNG
MFCワカンネ

授業で夏休み前までにグラフィックエディタ作るとか言ってるよ
漏れには2時間かけてサンプルに
ステータスバーに座標表示を追加するのが精一杯でした…
0815デフォルトの名無しさんNGNG
Doc/View どうにかならんものか・・・
0816デフォルトの名無しさんNGNG
>>815
テンプレ作った後、自分ではずしちゃえば?
SDIだったら、フレームだけですべて制御できるとオモタ。
0817デフォルトの名無しさんNGNG
>>814
ソースを見てみるのも一つの手。
俺はそうやって理解した。
0818デフォルトの名無しさんNGNG
>>814
デキる奴に作ってもらえ。
0819デフォルトの名無しさんNGNG
MFCわからんっていってる人はWin32プログラミング自体を知らない人が多い。
Win32知れば、MFCわかってくるし、ある程度便利なライブラリって事もわかるよ。

つーわけで近道せずにWin32からはじめることを勧める。
(激しくスレの趣旨に合ってないがごめんちゃい)
0820デフォルトの名無しさんNGNG
>>819
才能ないやつは、どっち先にやったところで同じ。
才能あれば、MFCだろうがWin32だろうが容易に理解できる。
0821デフォルトの名無しさんNGNG
>>820
確かに。
漏れも仕事でMFC使う羽目になって、デバッグモードでトレースかけながら
MFCとAPIも一緒に勉強できたよ。
漏れ程度でも判るんだから、MFCわからねなんて言ってる香具師は工夫が足りないね。
0822デフォルトの名無しさんNGNG
今のガッコは勉強の仕方を教えてくれんらしいからの。
0823デフォルトの名無しさんNGNG
MFCでダイアログを作っているのだけれど、一つ質問。
大雑把にこんなダイアログがあったとする。
┌───┐
│■□□│
└───┘(注:□はStaticフレームとその中のコントロール部品群)
このダイアログ、リサイズすることになったのだが
そのときは■を大きくしたい。

縦方向の伸びに対してはなんとかなった。
しかし、横方向の伸びに対応するのがなかなか巧くいかない。
何かいい手立てはないもんだろうか。
0824デフォルトの名無しさんNGNG
>>823
どうデザインするか、あなたのセンスが問われるところ。
これといった答えはない。
0825デフォルトの名無しさんNGNG
>>823
MFCだと自前だねえ。
他の開発環境ならアンカー(anchor)とかそんなプロパティがあって、相対的なウィンドウの配置を決めることができる。
上下左右辺(top,bottom,left,right)毎にウィンドウのサイズに合わせてリサイズや移動するような仕組みで、
その図で■がleftはanchor=falseになっているがright=true、そのとなりの□はleft=true, right=trueな場合、
┌───―┐
│■■□□│
└───―┘(■は二つじゃなくて拡大されている)
ってな動きになる。
と、まあ、こんなのは考え方の一つだけど、参考にはなるんじゃなかろうか
0826デフォルトの名無しさんNGNG
>>823
┌───┐
│3 2 1 │
└───┘
この順番で計算していく。

cx = ウィンドゥの大きさ、として。

1.right = cx - {1と右端の隙間の幅};
1.left = 1.right - {1の幅};
2.right = 1.left - {1と2の隙間の幅};
2.left = 2.right - {2の幅};
3.right = 2.left - {2と3の隙間の幅};

rightとleftは各コントロールのGetWindowRect、MoveWindowに対応する値と思ってくれい。
0827デフォルトの名無しさんNGNG
>823
これ使ってみるとか
http://www.codeguru.com/Cpp/W-D/dislog/resizabledialogs/
0828デフォルトの名無しさんNGNG
>>826
1つの方法だな。
こーゆーのは理屈で書けんか?
2,3の幅は固定して、窓幅に応じて1幅を可変にする とか。
0829デフォルトの名無しさんNGNG
WTLだと一発なのにね
0830823NGNG
ふーむ、なるほど。
幅を固定するブロックも位置は変えなきゃいけないわけだし、厄介だねぇ。
いやさ、Motifに慣れているとどうもね。
CodeGuruも参考にして、今日の午後にでもクラスをこさえてみるよ。
情報感謝。>ALL
0831デフォルトの名無しさんNGNG
>>830
俺もMotifから入ったから、Winの不便さはようわかる。
枠の大きさに応じてパーツの大きさを自動可変してくれる、
あれは便利だぁね。
0832>>823NGNG
手書きでもいいから、絵に描いてみて、
各コントロールの位置と大きさを、クライアント(ウィンドウ)サイズから
計算して、OnSize()内あたりでSetWindowRect()かMoveWindow()でも使えば
うまくいくかと。
0833デフォルトの名無しさんNGNG
その手のウィンドウ・サイズ変更で引っかかるところなんだけど
GetWindowRect()とGetClientRect()の区別を意識しておいた方が良い。

Windowsのデスクトップ・デザインはユーザーによって可変のものだから
ウィンドウ境界線の太い細いが環境によって違うことがある。GetWindowRect()
で取ってクライアント領域だと思ってると、場合によっておかしなことになるので
注意が必要。
0834デフォルトの名無しさんNGNG
>>833
座標の取り扱いは非常にやっかいだね。
Get と Set で基点が違うから、わざわざ座標変換しないとあかん。
0835デフォルトの名無しさんNGNG
その辺の意味が分からないから、サンプルや便利ツールに逃げたりするんだろうな。
0836デフォルトの名無しさんNGNG
>>832のSetWindowRectには誰もつっこまないのか
0837830NGNG
CodeGuruにあった、Resizerってのが便利そうだったんで
それを「参考にして」クラスを製作中。

>>831
だよね〜。尤もMotifにも不満はあって、RowColumnの使えなさは泣けたけど。

>>833
お約束のように、どっちか5分間悩んだ。

>>835
只逃げるのでは癪だから↑の如く製作中ですよ。

>>836
Resizerを見ると、予めサイズを計算しておいて最後にSetWindowPos()してますね。

Resizer、依存関係の定義にちょっと癖があるけどそこそこ便利。
#余り続けると日記にするなって怒られそうなので名無しに戻ります。
0838デフォルトの名無しさんNGNG
VisualStudio.Netです。
MFC C++でダイアログベースでアプリを作ってるのですが、
CStirngに格納されたデータ(\r\n入り)を印刷するときに、
DrawTextを使って印刷してるのですが、
複数枚にわたる印刷が出来ません。
どうしたらいいのでしょうか?
0839デフォルトの名無しさんNGNG
自分でページを管理
0840デフォルトの名無しさんNGNG
mfc-mlでも同じ投稿が
0841デフォルトの名無しさんNGNG
OnPaintを作るとOnDrawが作れなくなりますが、どっちかしか使えないのでしょうか?
この二つの関数の長所と短所はなんでしょうか?
両者択一ならば長所と短所を教えていただければ、これ幸いです。
0842デフォルトの名無しさんNGNG
OnDraw=ドキュメント上でビューを表示するため
OnPaint=Windows またはアプリケーションがアプリケーション ウィンドウの一部の
再描画を要求するとき
0843デフォルトの名無しさんNGNG
OnPaintはイベントハンドラで、OnDrawはそうでないってことですか?
0844デフォルトの名無しさんNGNG
ちょっとMFCのソースを見て、OnDrawがどこから呼び出されているか
見てみようとか、そんな気は
さ ら さ ら 無 い よ う で す ね
0845デフォルトの名無しさんNGNG
MFCのソースというのはどこにありますか?
0846デフォルトの名無しさんNGNG
なるほど。
じゃあこの辺で次の質問にいってみましょう。
0847デフォルトの名無しさんNGNG
>>838
ロール紙を使いなさい
0848デフォルトの名無しさんNGNG
>>845
VSのセットアップ。
あとは、普通に参照するだけで、簡単に閲覧できる。
0849デフォルトの名無しさんNGNG
>>845
適当にブレーク張って、MFC関数内にステップイン するのが一番簡単。
0850デフォルトの名無しさんNGNG
VisualStudio6.0、Windows2000、ドキュメント/ビューアーキテクチャを使ってます。
メニューバーが必要ないので、PreCreateWindowで「cs.hMenu = NULL」を追加して
メニューを削除したのですが、メニューバーの境界線(水平線?)だけ残ってしまいます。
これって消えないんでしょうか?
0851デフォルトの名無しさんNGNG
OnPaintって、OnDrawがあれば事足りるのか?
OnPaintの利点がさっぱり分かりません。
0852デフォルトの名無しさんNGNG
ttp://www.google.com/search?num=50&hl=ja&inlang=ja&ie=Shift_JIS&oe=Shift_JIS&c2coff=1&q=OnPaint%81@OnDraw&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
0853デフォルトの名無しさんNGNG
マジレスすると、新Visual C++6.0入門ビギナー編 林著221ページから
OnPaintとOnDrawの関係について詳しく書かれているから
本屋へ行って読んで来い。
0854デフォルトの名無しさんNGNG
ダイアログバー(CDialogBar)作ったらトップレベルのウィンドウ(CMDIFrameWnd)にマウスメッセージがこなくなってしまいました。
マウスメッセ−ジゲットするにはどうしたらいいですか?
0855デフォルトの名無しさんNGNG
アプリケーションクラスでゲッツすればいいんじゃね?
0856本田NGNG
>OnPaintって、OnDrawがあれば事足りるのか?
>OnPaintの利点がさっぱり分かりません。

CXXViewクラスを使う時には、OnDraw()を使って、
CXXWndクラスを使うときには、OnPaint()を使う。
0857デフォルトの名無しさんNGNG
はじめまして
突然の質問ですが、ワーカースレッドで処理を行うライブラリを書いていたのですが、
1処理1スレッドを起動するので、とりあえずテストとしてスレッドが起動できなくなった
とき、どうなるのかなーテストをやってみました。
で、
pThread = AfxBeginThread(WorkerMain, pCommand, ...);
てな感じのものを2000回ほどやってみました。

すると、まぁ予想通りNULLが返ってきたので、ふむふむ、と納得していたのです。

が、タスクマネージャーをみてみると「1スレッド起動できない」あたり2個のハンドルが
増えていくではありませんか!

で、質問ですがこれはどうにかできないのでしょうか?
MSDNには、失敗時にはうまく開放する、うんぬんといった記述があったようなのですが。
0858デフォルトの名無しさんNGNG
>>857
...
0859デフォルトの名無しさんNGNG
>>857
OSは何?
0860デフォルトの名無しさんNGNG
>>859
XP Professionalです。
0861デフォルトの名無しさんNGNG
え〜と、別スレですれ違いとのご指摘を受けてしまったので、
こちらで質問させてください。

ダイアログベースでウインドウを作っているのですが、
もうひとつのダイアログを呼び出すにはどうしたらいいのでしょう?

それと、ボタン押下でアプリケーションを終了させるときは、
DestroyWindowでよいのでしょうか?
0862デフォルトの名無しさんNGNG
リソースビューのツリーで右クリック→挿入→Dialog
ダイアログをダブルクリック→ClassWizard→好きな名前つける
ダイアログを呼び出したいクラスで作ったダイアログクラスを宣言
表示したい場所でDoModal
モーダルじゃないダイアログを呼び出したければ
メンバで宣言して適当にCreateしてShowWindowで呼び出す
0863デフォルトの名無しさんNGNG
>>861
>アプリケーションを終了させるときは

PostQuitMessage
0864デフォルトの名無しさんNGNG
>>862,863
どうもありがとうございます!
助かりました!
0865デフォルトの名無しさんNGNG
ダイアログボックスから、
ボタン押したらもう一個ダイアログが立ち上がるアプリケーション
作ってるんですけど、
ダイアログが起動した時に、一度だけ行いたい処理があるんですが、
どうやったら実現できますか?

Activateのメッセージを使ってみたんですけど、
Activeになるたびに処理が走るので、これじゃ駄目だな。と。
VBで言うところの、FormLoadや、Initみたいなものってないでしょうか?
0866デフォルトの名無しさんNGNG
>>865
OnInitDialog()
0867デフォルトの名無しさんNGNG
お〜。
もう一個の方にもハンドリングできたんですね。
まぁ、当たり前っちゃ当たり前ですね。

あと、最後に一個だけお願いします。
ダイアログボックスで、escキーを押すとウインドウが閉じてしまいますが、
これを無効にするにはどうしたらいいですか?
0868デフォルトの名無しさんNGNG
>>867
PreTranslateMessageあたりを使ってEscキーだったらTranslateを中止するのが無難。
具体的なやり方はぐぐれば出てくるかと。
他には、OnCancel()を自前で処理してCDialog::OnCancel()しないようにする手もあるが、
その場合はEscキー以外の手段でも(例えばAlt+F4)終了できなくなるので要注意。
#勿論OnOK()はできる。
0869デフォルトの名無しさんNGNG
>>867
定番
ttp://www.athomejp.com/goldfish/mfc/dialog/nonesc.asp
0870デフォルトの名無しさんNGNG
>>868
>>869
そうか!このページがあったんだ!
ありがとうございます!
0871デフォルトの名無しさんNGNG
void W(CString &str)
{
str = TEXT("Hello"); //ここで例外
}
みたいな関数を呼んだ場合、同じEXE内の関数だったらOKだけど
DLLの関数を呼んだ時、例外になるんですけど何故だか分かりますか??
ちなみに、EXEの方をデバッグ版でMFC共有DLLでビルドした時だけ
動きました。
他は例外になります。
0872デフォルトの名無しさんNGNG
まず引数が正常かどうか、とCStringのソース追う
0873デフォルトの名無しさんNGNG
>>871
根本的にCStringの使い方を間違えている。クラスとして作られていて機能を
与えられているところがどうなのかをちょっと考えてみた方が良い。
0874デフォルトの名無しさんNGNG
ListBoxコントロールって、MS Pゴシックで表示されてしまいますよね?
これって、外観を変えることできないのですか?
プロパティみてもそれらしいものはないし・・・。
0875デフォルトの名無しさんNGNG
>>874
どこから言っていいのかわからんが、CWndの使い方覚えれ。
派生クラスはわかってるだろ?
0876デフォルトの名無しさんNGNG
SetFont
0877デフォルトの名無しさんNGNG
それ以前の問題かと
0878デフォルトの名無しさんNGNG
CImageクラスを使用しています。
イメージをJpeg形式で保存したいのですが、圧縮率が変えられません。
Imageクラスなら変えられるんですが、DIBじゃないので困っております。
CImageでエンコードの設定ってできないですか?
どなたかお助けを・・・
0879デフォルトの名無しさんNGNG
VCでソフト作ってて疑問に思ったんだけど
メニューで

新規作成(N)
開く(O)...

のように、ショートカットキーの後ろに
...
が付くものと、付かないものとあるんだけど
これってどういう意味があるんですか?
0880デフォルトの名無しさんNGNG
メニューから 直に実行 と ダイアログを経由して実行 の違い
0881デフォルトの名無しさんNGNG
>>880
これってトリビアになりませんか?
0882デフォルトの名無しさんNGNG
常識的に知っている
0883デフォルトの名無しさんNGNG
そう作れというガイドラインがあるわけで
こんなことも知らねーとわ、情けなくって父ちゃん涙が出てくらあ
0884デフォルトの名無しさんNGNG
質問です。

自作メッセージを識別するためにウインドウメッセージでは WM_USER
+独自番号のような形で使用すると思いますが
自作コントロールにおいて、コマンドメッセージを作りたい場合に
コマンドメッセージのユーザー定義初期番号のようなものはありますでしょうか?
0885デフォルトの名無しさんNGNG
コマンドメッセージ?
0886デフォルトの名無しさんNGNG
>>885
勝手な日本語ですいません。
正確に言うとWM_COMMANDで通知があったときの
WPARAMのHIWORDの値のことです。
例えば、ListBoxコントロールだと選択の変更が発生すると
WM_COMMANDメッセージのWPARAMのHIWORDにLBN_SELCHANGEが入ってくると思います。
独自コントロールで通知をしたい時に、LBN_USERNOTIFYのようなことをする必要が出てきます。
この番号を勝手につけてしまって良いのかどうか?ということです。
もし、WM_USERのように独自定義したければこの番号以降を使えというようなものがあるので
有れば、それを教えていただきたいと思いまして・・・
0887デフォルトの名無しさんNGNG
>>886
MFCだとすでに決まってるものもいくつかあるので、変な数値使うと問題あり。
WM_USERに相当するものは残念ながら知らないけど、
普通にやってれば重複したのは注意してくれるから問題ないんじゃない?
ていうか、LBN_〜とかって、NotifyメッセージのIDじゃん。
Notifyだとウィンドウのidとかと組み合わせて重複しないようになるから
ウィンドウクラスが違ってると同じ値使ってる場合もあるね。
0888デフォルトの名無しさんNGNG
よく、範囲指定の際に、破線の囲いが出てきますけど、
MFCでそれを実現したいのです。
そこで、前回描画した線を消すにはどうしたら良いでしょうか?
一番いいのは、XORで線が描画できると良いのですが・・・
0889デフォルトの名無しさんNGNG
>>887
返答ありがとう御座います。
MFCのCCheckListBoxで、独自につけているくだり(CLBN_CHKCHANGE)
があったのでここの値は重複しないように勝手につけて良いと勝手に解釈
することにしました
0890デフォルトの名無しさんNGNG
>>888
CDC::DrawFocusRect
0891888NGNG
>>890
今ちょっと、SetROP2でも試してみたんですが、
DrawFocusRectの方が断然イイです!
感謝感激!
0892デフォルトの名無しさんNGNG
駄問ですみません。現在 .NET 2003 使ってるんですが
ClassWizardはどうやって表示させるんでしょうか?
キーワード検索してみると、「ClassWizard の使い方」の中に
"ClassWizard ([表示] メニューの [ClassWizard] を選択) "って
あるんだけど、どこにもないんですが・・・。
0893デフォルトの名無しさんNGNG
ClassWizardつかえるのはWizardで作ったClassだけ
0894デフォルトの名無しさんNGNG
>>884
http://web.archive.org/web/20030423062923/http://cgi23.plala.or.jp/a-w-h/mfc/message.html
0895884NGNG
>>894
!
今まで結構色々ソフト開発してきましたけど
ずっとWM_USERを使ってました
紛らわしいなぁMS
0896デフォルトの名無しさんNGNG
MFCで新規クラス追加するときって基本クラスなし
ではつくれないのでしょうか?
0897デフォルトの名無しさんNGNG
>>896
「一般C++クラス」でできるじゃん
つーか、それ以前にWizardの類を無視して
勝手にclass書けばいいだけの話
0898デフォルトの名無しさんNGNG
MFC自体にだってCObjectから派生してないクラスとかごまんとあるし
0899デフォルトの名無しさんNGNG
MFCに5万もクラスがあったとは・・・
0900デフォルトの名無しさんNGNG
一般C++クラスってどこにあります?
0901デフォルトの名無しさんNGNG
クラスビューから右クリックで[追加]

・・・ここまで面倒みてやるのは本来なら有料
今日は妙に機嫌が良いがこれが限度
0902デフォルトの名無しさんNGNG
質問なのですが…
CTreeCtrlで全てのルートのアイテムを取得するにはどうすればよいでしょうか?
CTreeCtrl::GetNextItem()で取得できそうなのですがどうしてもうまくいきません。
どなたかご存知でしたらご教授お願いいたします。

以下、参考にしたマイクロソフトのサンプルをです。
HTREEITEM hCurrent = pCtrl->GetNextItem(TVI_ROOT, TVGN_NEXT);
↑の箇所で失敗してしまいます…
[sample]-------------------------------------------------------------
CTreeCtrl* pCtrl = (CTreeCtrl*) GetDlgItem(IDC_TREE1);
HTREEITEM hCurrent = pCtrl->GetNextItem(TVI_ROOT, TVGN_NEXT);
while (hCurrent != NULL)
{
 // 何らかの処理
hCurrent = pCtrl->GetNextItem(hCurrent, TVGN_NEXT);
}
0903デフォルトの名無しさんNGNG
追加っていうのがないんですが
右クリックすると クラスの新規作成はあるのですが
基本クラスを選ばなければ追加できないのですが
0904デフォルトの名無しさんNGNG
MFCって何ですか?
0905デフォルトの名無しさんNGNG
>>895
同意

>>894
ありがと
0906デフォルトの名無しさんNGNG
>>904
コンビニで売ってるやつか?
0907デフォルトの名無しさんNGNG
>>904
Microsoft Foregroud Constructionの略。
使いやすさを全面的に出してプログラミングにおける
プログラマの負担を軽くしようという発想から
開発されたらしい。今ではMFCも肥大化してしまったけどね。
0908デフォルトの名無しさんNGNG
                |
                |
                |
                |
     /V\       J
    /◎;;;,;,,,,ヽ     >>907
 _ ム::::(;;゚Д゚)::| ジー
ヽツ.(ノ::::::::::.:::::.:..|)
  ヾソ:::::::::::::::::.:ノ
   ` ー U'"U'
0909デフォルトの名無しさんNGNG
あぁ、釣りだったのかマジレスしそうだった。
さり気無くスペル間違えてる辺りとか高度だなw
0910デフォルトの名無しさんNGNG
ActiveXの取り込みを行って、MSFlexGridを使ってるのですが、
セルの自動幅調整はどうやって行ったらよいのでしょうか?
0911デフォルトの名無しさんNGNG
>>910
ちと難しいな。
試してみたが、うまくフォントのサイズがとれなかった。
わかるひとフォロープリーズ
0912デフォルトの名無しさんNGNG
SDIで簡単なペイントソフトを作っています。マウスで矩形を描いたりできるのですがマウスを動かすたびに再描画しているので画面がひどくちらつきます。
なんとか解決したいのですが、どうすればいいでしょうか?
0913デフォルトの名無しさんNGNG
>>910
MSFlexGridはよくわからないのだが、姉妹品(おねえさん?)
のvsFlexGridには列をパラメータにしてAutoSizeという
メソッドがあったが。。。
0914デフォルトの名無しさんNGNG
>>912
ラバーバンディングで検索汁!
0915デフォルトの名無しさんNGNG
>>912
再描画時の背景消去が原因

0916デフォルトの名無しさんNGNG
>>915
再描画時に背景消去をさせないにはどうすればいいですか?
0917デフォルトの名無しさんNGNG
>>916
OnEraseBkgnd をオーバーライドしる!
0918デフォルトの名無しさんNGNG
>>916
InvalidateRect(NULL,FALSE);
2番目の引数をFALSEで背景消去抑制
0919デフォルトの名無しさんNGNG
>>911
フォントサイズをとる方法なら
MSFlexGrid.GetCellFontSize
で各セルのフォントのサイズが取れる
0920デフォルトの名無しさんNGNG
viewからMainFrameのポインタを取得するにはどうすればいいですか?
0921デフォルトの名無しさんNGNG
>>912
CRectTracker
0922デフォルトの名無しさんNGNG
>>920
AfxGetMainWnd
0923デフォルトの名無しさんNGNG
SDIにスクロールバーをつけたいのですが最初のAppWizardとかで設定しておかないとだめですか?
0924デフォルトの名無しさんNGNG
そんなことないよ〜
0925デフォルトの名無しさんNGNG
>>923
あ、簡単なペイントソフト作ってる人じゃないか?
0926デフォルトの名無しさんNGNG
>>923
新規プロジェクトでCScrollViewにして作成して
今のCViewプロジェクトと変化している部分を変えたり追加するのが
一番簡単
気をつけるのは、基底クラスを呼び出している部分とか
メッセージマップの基底クラス部分とかね
0927デフォルトの名無しさんNGNG
C++.net使用しています。
質問なんですが
for(int i=0; ...
みたいにiを定義すると標準C++ではfor文のブロック内のみが
スコープになると思うのですが、.netだと外側からも見えるようです。
これを標準C++仕様にするにはどうしたらいいのでしょうか?
0928デフォルトの名無しさんNGNG
forの外にも定義しておく
0929デフォルトの名無しさんNGNG
>>927
#define for if(false) else for
0930デフォルトの名無しさんNGNG
>>927
そうそうfor文のスコープはなにかがおかしい。オレもこれではまったことがある。
for( int i=0; ...) {statementA}
for( int i=0; ...) {statementB}
ってやると、statementBにAのiが影響していた。詳しく調べなかったのでこれ以上のことは判らない。
0931デフォルトの名無しさんNGNG
>>930
詳しく調べてくれ、気になる・・・
後のfor文のi=0の初期化は無視か?
0932デフォルトの名無しさんNGNG
/Zc
0933デフォルトの名無しさんNGNG
{
 for(int i=0;...){ }
}

コンパイルオプションでも直せるらしいけど、
それはそれで不都合があるらしいので、
こうするといいよ。
0934デフォルトの名無しさんNGNG
MFC でwebブラウザつくりたいのですが
わかりやすく載ってるサイトとかないですか?
0935デフォルトの名無しさんNGNG
おかしいと思ったら、曖昧な記述じゃなくて、
はっきりコーディングレベルで明快に書けばいいのに。。。
なんで、そんなに書き方にこだわるんだろう。
0936デフォルトの名無しさんNGNG
>>935
んだな
組み込み用のクロスとかローカルルール満載の処理系はよくある
割り切らねーと仕事にならん
0937デフォルトの名無しさんNGNG

int i=1;
for(int i=0;;){break;}
std::cout << i; // iは0

二重定義でエラーにはならないけど
同一のiを意味するという・・・なんとも不可思議だ
0938サザエサングNGNG
>>934
マジレスすると、ウィザードで基本のビュークラスを
CHtmlViewにしてスケルトンを作ったら、
すぐにビルドして実行しろ。
それでブラウザは完成だ。
0939デフォルトの名無しさんNGNG
>>938
せめてアドレスバーつけたいんですけど
0940デフォルトの名無しさんNGNG
>>939
じゃ、ダイアログバーにコンボボックスあたりつければOK
0941デフォルトの名無しさんNGNG
あらかじめ用意されているDLLを、
自分のプロジェクトで参照して、DLLの関数を使用したいのですが、
どうしたらよいでしょうか?

プロジェクト設定のリンクにDLL名を入れたのですが、
ファイルが無効か壊れているってメッセージがでてしまうので、
やり方が間違っているようなのですが、
どうやって参照させたらよいでしょうか?
0942デフォルトの名無しさんNGNG
>>941
インポートライブラリ
0943デフォルトの名無しさんNGNG
>>941
DLLの使い方は、起動時に自動的にロードして使うやり方と自分でロードして使うやり方がある。
起動時にロードするためには、DLLと一緒に配布されているlibファイル
を実行ファイルにリンクしないといけない
もしDLLにlibファイルがついていないならば、自分でロードして使えということだろう
その方法についてはLoadLibraryというAPIを調べてみればよい
0944デフォルトの名無しさんNGNG
> プロジェクト設定のリンクにDLL名
・・・LIB名(拡張子=.lib)

持ってない場合
A.>>943 の方法
B.DLLの提供元にねだる
C.DLLの作り損ない
0945デフォルトの名無しさんNGNG
SP6にしてからリソースエディタでダイアログのサイズをドラッグして変更
しようとしても、輪郭のところをマウスで掴めなくなってしまったのですが
どうしたらマウスで掴めるようになるでしょうか。
ShiftKey+矢印Keyで一応サイズ変更はできるのですが、いったい何が
どうなっているのか・・・
0946デフォルトの名無しさんNGNG
ダイアログフォームを最大化した時に、
ListBoxやTabコントロールも一緒にリサイズさせたいのですが、
GetClientRectでフォームのサイズをとったあと、
どうやって設定させたらよいでしょうか?
SetClientRectってないし・・・
0947デフォルトの名無しさんNGNG
movewindow
0948デフォルトの名無しさんNGNG
>>947
OnSizeでは、CX,CYしか取れないのですが、
MoveWindowを使うときにはX,Yも必要らしいのですが、
X,Yはどうやってとったら良いでしょうか?
0949デフォルトの名無しさんNGNG
自分で計算しろ
0950デフォルトの名無しさんNGNG
>>946
まともなリサイズ処理ははそれなりに複雑だよ
codeguruとかcodeprojectで、resizable dialogの
言葉に引っかかりそうなソースを読んでみたら?
0951デフォルトの名無しさんNGNG
GetWindowRect、GetClientRect、ScreenToClient
この辺の意味をちゃんと理解しておれば、リサイズなんて怖くねーべ。
0952デフォルトの名無しさんNGNG
私ゃCodeGuruで見つけたResizerってのをベースに使ってるよ。
0953829NGNG
WTLだと一発なのにね
0954950NGNG
>>951
単純な拡大縮小ならそれほどでもないけど
コントロール同士の関係を含めてのリサイズの場合結構複雑になるよ
946がどこまで求めているかは知らないけれど
0955デフォルトの名無しさんNGNG
CListを入れ子にして使ったら
c:\Program Files\Microsoft Visual Studio .NET\Vc7\atlmfc\include\afxtempl.h(1159): error C2582: 'operator '=' 関数を 'MDB' で使用できません。
と言われました
CListから生成したオブジェクトの中でCListを使うことはできないのでしょうか?
以下のような感じでソースをかいてみました
0956955NGNG
typedef struct Seqnoinfo{
int Seqno;
int Rcvsize;
int Type;
}Seqnoinfo;

typedef struct MDB{
int No;
int Done;
CList<Seqnoinfo> Silist;
int Mtopaddr;
int Msize;
int Rcvsize;
}MDB;

0957955NGNG
class CMemBuf
{
public:
CMemBuf(void);
~CMemBuf(void);
int Send(void);
int Run(int startaddr);
int Add(CCmdBuf&CmdBuf);
int Getcmdlen(DWORD cmd);
char* Getcmdname(DWORD cmd);
void Clear(void);
void Reset(void);
DWORD* TmpBuf;
DWORD* SendBuf;
int BufN;
int Maddr;
int Up;
CList<MDB,MDB&> MDBlist;
};
0958955NGNG
何かアドバイスなどありましたらご教授お願いします
0959デフォルトの名無しさんNGNG
MDB構造体に
operator=を定義して
CList間の=を明確化してあげればいい
0960955NGNG
ありがとうございます。
うまく出来ました
0961デフォルトの名無しさんNGNG
>>950-954
どもです。
コントロールを含めてのリサイズだったので、結構参りましたが、
なんとかなりました。
情報ありがとうございます。
0962955NGNG
>>959
ありがとうございました。

>>960,961
どなた?
0963デフォルトの名無しさんNGNG
すみません、VC++.Net2003でソリューションのmakefileをエクスポートしたいんですがどうすればよいですか?
0964デフォルトの名無しさんNGNG
CStringの文字を数値に変換するのにatoiを使ってるのですが、
これの例外って、どうやって取ったらよいでしょうか?
0965デフォルトの名無しさんNGNG
atoiって例外送出したっけ?
0966デフォルトの名無しさんNGNG
他のスレでも質問したんですが回答が得られなかったので、こちらで質問させていただきます。

ダイアログ上のフォーカスをTABで移動していって、ボタンにフォーカスが来ると
点線と黒い影が出ると思うんですけど、
そこからSetFocusでフォーカスを別のとこに移動させると
点線だけ移動して、黒い影がボタンに残ったままになってしまいます。
この黒い影を強制的に消すにはどうしたらいいでしょう?
SetFocus()やらWM_KILLFOCUSは点線にのみ影響する。
では黒い影に対して操作できるもの何かありますか?
0967デフォルトの名無しさんNGNG
その黒い影っつのは、XPスタイルでいうオレンジの線のことか?
0968デフォルトの名無しさんNGNG
>>964
ato_iを使うならintを必ず入れるわけで
CStringの段階できちんと成形してから入れるようにすれば良いだろ
そのためのCStringのメンバ関数
便利なんだからそれを使え
0969966NGNG
>>967
http://www31.tok2.com/home2/ayaka/3.jpg
左のOKボタンについてる黒い影のことです。
SetFocusでフォーカスを移動すると、内側の点線のみ動いて
黒い影は残ってしまうのです。
0970デフォルトの名無しさんNGNG
System関数で、Dos窓を出さないようにするにはどうしたらよいでしょうか?
あと、空白付きのパスだと、ダブルコーテーションで囲んでも、無効な引数とか言われちゃうのですが、他に囲み方ってあります?
0971デフォルトの名無しさんNGNG
>>966
試してないけど、ボタンを再描画してもダメ?
0972デフォルトの名無しさんNGNG
>>970
ShellExecuteじゃだめなの?
0973デフォルトの名無しさんNGNG
>>966
BM_SETSTYLE
0974デフォルトの名無しさんNGNG
ボタンのプロパティで
標準のボタンに設定されているから
黒い線が付いている。
0975デフォルトの名無しさんNGNG
>>974
半分間違い
0976966NGNG
>>973
なるほど。それをSendMessageするとして、
wParamは何を指定すればよいのでしょう?それっぽいのが見当たらないのですが。
0977デフォルトの名無しさんNGNG
BS_DEFPUSHBUTTON
0978デフォルトの名無しさんNGNG
>>977
BS_DEFPUSHBUTTONだと黒い影がついて、
BS_PUSHBUTTONだと黒い影が消えましたっ!!
解決です。ありがとうございましたー

しかし、、なんて強引な・・その場しのぎな・・
0979デフォルトの名無しさんNGNG
ExcelのVBAから呼び出すCOMオブジェクトを作成しています。
開発が進めば進むほど、ExcelVBAからCOMを呼び出すのが
どんどん遅くなりました。
開発環境はWindowsXP VC6.0SP5です。

レジストリが原因だと思うんだけど、具体的にどんなツールでどんなことをすれば
速くなるんだろう。

えらい人教えて。
0980デフォルトの名無しさんNGNG
>>978
その場しのぎじゃなくて、Windows自身がそのように振る舞うから。
(フォーカス移動でBS_PUSHBUTTONとBS_DEFPUSHBUTTONの付け替えをする)
SetFocusで無理矢理変えたときにはそうならないんで、アプリ側で
世話してやんなきゃいけない、と。
0981デフォルトの名無しさんNGNG
>>979
レジストリエディタでHKEY_CLASS_ROOTの下を全部消す
0982デフォルトの名無しさんNGNG
>>978

787 名前:デフォルトの名無しさんsage 投稿日:04/06/23 21:32
>>777
NextDlgCtrlで。
0983デフォルトの名無しさんNGNG
次スレの季節だけどタイトルどうする?
MFC相談室 mfc11.dll
でもいいような気がするんだけど。
VisualC++って入ってると何も知らない初心者がたまに、
VisualC++使ってるってだけで内容はWin32APIの質問だったりただのC/C++の質問したりするから。
0984デフォルトの名無しさんNGNG
>>983
イイヨイイヨー
0985デフォルトの名無しさんNGNG
>>983
酸性
0986デフォルトの名無しさんNGNG
次スレ

■MFC相談室 mfc11.dll■
http://pc5.2ch.net/test/read.cgi/tech/1088084875/
0987デフォルトの名無しさんNGNG
>>986
GJ!
0988デフォルトの名無しさんNGNG
>>986
おっさん乙
0989986NGNG
誰がおっさんじゃ、ヴォケ!
0990デフォルトの名無しさんNGNG
>>989
おっさんごめん
0991986NGNG
まだ言うか、このこわっぱめ
0992デフォルトの名無しさんNGNG
>>991
おっさん落ち着け
0993デフォルトの名無しさんNGNG
雨
0994デフォルトの名無しさんNGNG
おっさんが二人いるな
0995デフォルトの名無しさんNGNG
猪口才な小僧どもめ
0996デフォルトの名無しさんNGNG
なんか1000とれそう。。。
0997デフォルトの名無しさんNGNG
ワクワク
0998デフォルトの名無しさんNGNG
age
0999デフォルトの名無しさんNGNG
工エエェェ(´д`)ェェエエ工!!
1000デフォルトの名無しさんNGNG
dfhgfj
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。