5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :的場フミオ:03/03/18 10:06
             / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      ∧_∧   <  MFCなんかやってないで
     ( ´_ゝ`)   \ おまいら全員TCKに集合
    /::☆::::☆::\   \___________
   /:/\:::::☆::/ ̄\
 _| ̄ ̄ \☆/  ヽ \_
 \ ̄ ̄ ̄ ̄ ̄ ̄ \__)
  ||\            \
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
  ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
     .||              ||
■ 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

2 :デフォルトの名無しさん:03/03/18 10:19
CListCtrl系のDrag&Dropについて参考になるサイトを教えて下さい。

Googleで引っかからん・・・

3 :デフォルトの名無しさん:03/03/18 10:43
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

http://www5b.biglobe.ne.jp/~ryo-kyo/osu.html

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

4 :デフォルトの名無しさん:03/03/18 14:35
禁煙パピコ

5 :おまいら!:03/03/18 14:37
CStringからconst WCHAR*型に変換する方法を教えてくれ。すぐ教えてくれ。


6 :5:03/03/18 14:38

いや、まじでお願いします。

7 :デフォルトの名無しさん:03/03/18 14:41
MFCでWebブラウザコントロールを用いてそれを印刷したい場合、
// Verify the Web Browser control is valid.
LPDISPATCH lpDispApp = m_web_view1.GetApplication();
if(lpDispApp)
{
// Get the HTMLDocument interface.
LPDISPATCH lpDispDoc = m_web_view1.GetDocument();
if (lpDispDoc != NULL)
{
// Get the IOleCommandTarget interface so that we can dispatch the command.
LPOLECOMMANDTARGET lpTarget = NULL;
if (SUCCEEDED(lpDispDoc->QueryInterface(IID_IOleCommandTarget,(LPVOID*) &lpTarget)))
{
// Execute the print preview command. The control will handle the print preview GUI.
// OLECMDID_PRINTPREVIEW is defined in "docobj.h".
lpTarget->Exec(NULL, OLECMDID_PRINTPREVIEW, 0, NULL, NULL);
lpTarget->Release();
}
lpDispDoc->Release();
}
lpDispApp->Release();
}
みたいなコードで出来ますが、URLが印刷されちゃいますよね。
それを隠す方法があれば、ご教授ください

よろしくお願いします


8 :デフォルトの名無しさん:03/03/18 14:44
>>6
GetBuffer()
MultiByteToWideChar()

9 :5:03/03/18 14:54
あったYO!

http://www.codeguru.com/mfc/comments/27238.shtml より。

CString temp = "Test.jpg";
WCHAR* filename = new WCHAR[temp.GetLength()+1];
mbstowcs(filename, temp, temp.GetLength()+1);
Image image(filename);
delete filename;




10 :5:03/03/18 14:55
>>8
サンクス。それも試してみるっす。

11 :デフォルトの名無しさん :03/03/18 19:40
void CPgmDoc::Serialize(CArchive& ar)
の中で
int max = 255;
int H = 640; int V=480;
ar.Write("P5\n",3);
ar.Write(&H ,1);
ar.Write("" ,1);
ar.Write(&V ,1);
ar.Write("\n" ,1);
ar.Write(&max,1);
ar.Write("\n" ,1);
ar.Write(image_data, H*V);
って書き込んだら、ファイルに
P5\n
640 480\n
255\n
data[0]data[1]...
って書き込まれますか?



12 :デフォルトの名無しさん:03/03/18 19:50
>>11
試 せ ば い い だ ろ ?


13 :11:03/03/18 20:16
ダメなのですが、
変数をファイルのストリームに書き込む方法は
どうすればいいでしょうか?

14 :デフォルトの名無しさん:03/03/18 20:31
>>13
MFCのシリアライズはバイナリーファイルになる。
if (ar.IsStoring()){
 // TODO: この位置に保存用のコードを追加してください。
 CString str = "P5" ;
 ar << str ;
 ar << h ;
 ar << v ;
}else{
 // TODO: この位置に読み込み用のコードを追加してください。
 CString str ;
 ar >> str ;
 ar >> h ;
 ar >> v ;
}
こんなかんじにしろ。文字列はCStringな
テキスト出力にするならSerializeは使わないほうが楽

15 :11:03/03/18 21:17
>>14
hとかの変数の値が入らないのですが・・・。

16 :デフォルトの名無しさん:03/03/18 21:39
オブジェクトの挿入とかの「Microsoft Excel ワークシート」みたいな文字列を
ID から取得する方法はありますか?

17 :名無し~3.EXE:03/03/18 21:59
Cに関する雑談のできるIRCチャンネルはありませんか?

18 ::03/03/18 22:21
誰か教えてよ・・・>>2

19 :デフォルトの名無しさん:03/03/18 22:38
>>2
http://www.codeguru.com/listview/index.shtml

20 :デフォルトの名無しさん:03/03/18 22:38
http://www.codeproject.com/listctrl/#Drag%20and%20Drop

21 :デフォルトの名無しさん:03/03/18 22:40
>>15
どんなコード書いたんだ?

22 :デフォルトの名無しさん:03/03/19 00:09
誰も7の疑問わからないのか?
答えてやれよ


23 :デフォルトの名無しさん:03/03/19 00:38
>>22 == >>7

24 :デフォルトの名無しさん:03/03/19 02:51
レジストリに関連付けの変更や定義アイコンの変更を施した後、
実際にデスクトップ上のアイコンにも適用を施す処理ってありますか?

どうもそのままだと、アイコンが更新されないのですが・・・
すいませんが教えてください


25 :デフォルトの名無しさん:03/03/19 08:47
>>24
SHChangeNotify( SHCNE_ASSOCCHANGED, ... );

26 :デフォルトの名無しさん:03/03/19 11:53
これ何だろ?
ダイアログベースアプリ終了時に出力ウィンドウに出て来るんだが・・・
子ウィンドウのモードレスダイアログがあるからその関係かな・・・

Warning: calling DestroyWindow in CDialog::~CDialog --
OnDestroy or PostNcDestroy in derived class will not be called.

27 :デフォルトの名無しさん:03/03/19 12:16
自己レスだけど、メッセージそのままの意味だった。
親ウィンドウのOnDestroyで、明示的に子ウィンドウをDestroyWindow
してやると消えた。

つーか明示的に破棄すんのが普通だわな。確かに俺が悪かった。
意図しないデストラクションとか起こったときのために、これwarningで報告するんだね。
今日は.netくんにメモリリーク報告してもらったし。いつもありがとう.netくん。

28 :デフォルトの名無しさん:03/03/19 15:03
>>7

ええとね、たしかあったと思うよ
プリントアウト結果に表示されるURLを消すんだよね?
うーーんと、失念してしまった

ちょっと覚えている方、ヘルプよろしく!


29 :デフォルトの名無しさん:03/03/19 15:44
>>7
IEのページ設定のヘッダー・フッターどうかするんじゃないの
自分のプログラムだけなら一時的にそのへんのレジストリいじるとか

30 :デフォルトの名無しさん:03/03/20 17:54
MDIでプログラミングをしたいんだけど、
子ウィンドウを複数種類作りたいんです。
デフォルト以外の子ウィンドウを足すにはどうすればよいでしょうか?
参考になるサイトか方法を教えてください。

31 :デフォルトの名無しさん:03/03/20 17:56
まずは本買いなさい。
話はそれからだ。

32 :デフォルトの名無しさん:03/03/20 19:20
ふつーそんなこと書いてませんよ。

33 :32:03/03/20 20:43
本当にどう書けばいいのでしょう?
VC++のように、ソース、リソースダイアログ etc.
のようにしたいのですが。


34 :デフォルトの名無しさん:03/03/20 21:37
このスレッドで消化されていない7の質問
誰もわかるやついねえのか?
そろそろ教えてあげなよ


35 :デフォルトの名無しさん:03/03/21 00:37
>>32
ハァ?(顔文字略

>>34
正直、知らん。

36 :デフォルトの名無しさん:03/03/21 06:41
>>30
前スレを読めと。

37 :デフォルトの名無しさん:03/03/22 11:18
CListCtrlをレポートビューで使っています。
コラムの幅より長い文字列をInsertItemすると略されて「hogehoge...」
と表示されますよね。これを全て表示するようにする方法はありますでしょうか。




38 :デフォルトの名無しさん:03/03/22 11:38
>>37
コラムの幅を増やせば良いとおもうが...。

39 :デフォルトの名無しさん:03/03/22 12:53
自分で計算するのがめんどかったら
ListView_SetColumnWidthでLVSCW_AUTOSIZE

40 :デフォルトの名無しさん:03/03/22 14:38
CTreeCtrlでCImageListで画像を関連づけて
その画像を表示することはできるのですが
画像の背景の色を透過できないんですが
どうすればできるでしょうか?

CImageListの方でSetBkColor(CLR_NONE)あたりを使うと思うのですが
マスクを使うというのがいまいちよく分かりません


41 :デフォルトの名無しさん:03/03/22 21:21
MFCの仕事はまだあるんですか?
これからもあるんですか?

42 :デフォルトの名無しさん:03/03/22 21:23
>>41
部長に聞け。

43 :デフォルトの名無しさん:03/03/22 22:18
>>41学生でつ。
先生はパーでわかってません。

44 :43 == 41:03/03/22 22:18
>>41は学生という意味です。
部長いません。

45 :デフォルトの名無しさん:03/03/22 22:46
パソコン部長ですがなにか?

46 :質問:03/03/23 12:06
すいません質問です。
PlatformSDKの最新をインストールして、新たにMFCアプリを作ろうとしてビルドしたところ、
意味不明なエラーが出てきました。

↓エラー
「d:\microsoft sdk\include\exdisp.h(1119) : error C2061: 構文エラー : 識別子 'SHANDLE_PTR' がシンタックスエラーを起こしました。」

これってどうやれば解決できるのですかね?
だいたいその'SHANDLE_PTR' というのが何なのかがわかりません。

PlatformSDKを入れる前は、問題なくMFCアプリがビルドできていました。

開発環境はVC++6、WinXPPROです。
だれかご存知な方はいますでしょうか?

47 :デフォルトの名無しさん:03/03/23 23:15
MFCアプリ(ダイアログベース)を作ってるんですが、
エンターキーを押すとアプリが終了してしまいます。
終了しないようにするにはどうやったらいいのでしょうか?

48 :デフォルトの名無しさん:03/03/23 23:17
>>47
PreTranslateMessageでキーをトラップしてreturn false;
ちなみにESCキーでも同じ現象が起こる

49 :47:03/03/23 23:52
できました。ありがとうございました。

50 :デフォルトの名無しさん:03/03/23 23:54
>>49
ただそれだとtabによる移動や
改行許可のエディットボックスが上手く動かなくなるはずだから
↓みたいな感じで書くといいかも

BOOL CMainDialog::PreTranslateMessage(MSG* pMsg)
{
 switch(pMsg->message){
 case WM_KEYDOWN:
  switch(pMsg->wParam){
  case VK_RETURN:
   const CEdit* pcEdit;
   pcEdit = dynamic_cast<const CEdit* >(this->GetFocus());

   if(!pcEdit || !(pcEdit->GetStyle() & ES_AUTOVSCROLL))
    return TRUE;

   break;
  }

  break;
 }

 return CDialog::PreTranslateMessage(pMsg);
}


51 :デフォルトの名無しさん:03/03/23 23:56
>>ただそれだとtabによる移動や
おっとこれは大丈夫だね


52 :デフォルトの名無しさん:03/03/24 00:07
すいません。MDIの新規作成の子ウィンドウの追加の方法はわかったのですが、
VC++がツリーをクリックすれば、子ウィンドウを作るように
メニュー以外で必要なダイアログを必要な情報(ファイル)を足して
子ウィンドウを作るにはどうすればいいのでしょうか?


53 :デフォルトの名無しさん:03/03/24 01:39
>48-52
void CHogeDlg::OnOk()
{
//do nothing
}

の方がよくね?簡単だし。 ま、解決してるならいいか。

54 :デフォルトの名無しさん:03/03/24 01:41
× void CHogeDlg::OnOk()
○ void CHogeDlg::OnOK()

55 :デフォルトの名無しさん:03/03/24 02:41
>>53
DoModal()で作るならそれでいいけど
Create()で作る場合もあると考えるとPreTranslateMessage()を使う方がいい
Create()で作った場合はOnOK()使わんし

56 :デフォルトの名無しさん:03/03/24 03:48
CreateでもOnOKでdo nothingには変わりないと思うが

57 :デフォルトの名無しさん:03/03/24 04:44
ん? あれれ? Create()で作った場合ってOnOK()にメッセージdできたっけ?

飛んでこなかったから私はPreTranslateMessage()を使い始めたような・・・
以前はOnOK()のデフォルト処理をコメントアウトしてたけど


58 :デフォルトの名無しさん:03/03/24 06:06
>MFCアプリ(ダイアログベース)を作ってるんですが、
OnOKに一票

59 :デフォルトの名無しさん:03/03/24 06:07
>>52
質問が意味不明でわかりにくい。
何がわからないのかちゃんと書かないと?
CDocTemplate::OpenDocumentFileのことか?


60 :デフォルトの名無しさん:03/03/24 15:16
>>55 >>57
モードレスでも OnOK呼ばれる。IDOKボタンがなくても呼ばれる。

61 :52:03/03/24 18:13
>>59
VCは、ツリーのダイアログバーをクリックすると、子ウィンドウが新規に作成されるじゃないですか。
で、必要に応じて、対応しているファイルを開いてエディットに表示するじゃないですか。
それから、メニューバーのファイル から、ワークスペースを閉じる で子ウィンドウを
終了できるじゃないですか。
そのような仕組みはどのようにすればいいのかな?
と質問しました。
わかりにくくてごめんなさい。

62 :デフォルトの名無しさん:03/03/24 19:06
※急募!※
MFCのドキュメント・ビューアーキテクチャーにIShellBrowserをぶっこむ方法を知ってる人

63 :デフォルトの名無しさん:03/03/24 20:16
VC++/MFCは、UNICODEを簡単にASCIIというかSJISに変える方法も無いんで鹿?

64 :デフォルトの名無しさん:03/03/24 20:54
>>61
MSDNに載ってる

65 :52:03/03/24 21:07
>64
どの項目をみればいいんでしょうか。

66 :デフォルトの名無しさん:03/03/24 22:00
>>63
W2Aとかいうマクロがある

67 :デフォルトの名無しさん:03/03/24 22:32
>>66
なんか、定義されてないってコンパイルエラーだけど。

68 :デフォルトの名無しさん:03/03/24 23:35
>>61
CMultiDocTemplate::OpenDocumentFile()でファイルが開けるんじゃないの?
子ウィンドウが閉じたかったら、アクティブなフレームにPostMessage(WM_CLOSE)

とりあえず『MFCアンサーブック』でも立ち読みしてくれ。

69 :デフォルトの名無しさん:03/03/25 00:25
>>67
AFXPRIV.Hインクルード

70 :前スレの985:03/03/25 00:32
前スレの985ですが、思い出したので追記しておきます。
CDocTemplate::OpenDocumentFile(NULL) だと
ビューに加えてドキュメントも作成されてしまうので、
ドキュメントとビューの関係が 1 対 多 ではなく 多 対 多 になってしまっていました。
CDocTemplate::CreateNewFrame() と CDocTemplate::CreateNewDocument()
を分けて使うことで今度こそ期待通りの動作をするようになりました。

が、[ウインドウ | 新しいウインドウを開く] で新しいウインドウを開いた時と同じように、
ウインドウのキャプションに :1 とか :2 が付くようになってしまいました。
まぁこっちはそのうち何とかできればいいなぁと思ってます。

>>61
この発言が参考にはなりませんか?
また全てのウインドウを閉じるのは CloseAllDocument() というのがあります。

71 :デフォルトの名無しさん:03/03/25 09:10
ちょっと、変なこと聞くかも知れないんだけど、
コンボボックスとかリストボックスってデータの数が増えても対応するじゃん。
で、配列を動的に宣言して増やしてるんだと思うんだけど、
どうやってそういうのをかきゃいんですか?

72 :デフォルトの名無しさん:03/03/25 09:28
有難うございました。>>69

ATLかMFCのバージョン違いみたいで、自分のバージョンでは、
CString str = CString(bstr);strcpy(cBuf, str);
みたいな感じになりましたが。

73 :デフォルトの名無しさん:03/03/25 10:17
UNICODE文字列の配列宣言教えてください。

74 :デフォルトの名無しさん:03/03/25 10:41
>>71
CArray

>>73
WCHAR* aa[100];

75 :52:03/03/25 12:43
>>70
助言ありがとうございます。
騒がせながら、CMainFrame のなかで、Create()で作れました。
しかし、子ウィンドウを操作するに当たり、
子ウィンドウの持っている変数に値を代入したり
する方法がわかりません。MDIGetActive()ではアクティブな
ものしか取得できませんし。
何かご存じないですか?



76 :デフォルトの名無しさん:03/03/25 13:48
動的に作られたCEditにスクロールバーをつけたいんですが
どうしたらいいでしょうか?
ModifyStyle, ModifyStyleEx のとちらも試しましたがだめです、、。


77 :デフォルトの名無しさん:03/03/25 14:31
ListCtrl を派生させて色々作ってるんだけど
あるセルの値が変わった時に例えば1秒間
表示色を変えよう、と思ったらどういう手段がありますか?

全然思いつかないんだが・・・

78 :デフォルトの名無しさん:03/03/25 15:22
>>77
タイマー使えばいいんじゃないの?

79 :デフォルトの名無しさん:03/03/25 16:53
>>76
>ModifyStyle, ModifyStyleEx のとちらも試しましたがだめです
どんなスタイルを設定してダメだったか書けよ。
Createするときにちゃんと ES_ 系のスタイルを指定したか?
WS_HSCROLL や WS_VSCROLL を忘れてないか?

80 :デフォルトの名無しさん:03/03/26 03:14
>>79
コントロールをCreateしているソースの個所は私が見ることができないのでわかりません。
が、一旦作成されたCEditに対して、
ModifyStyleEX( 0, WS_HSCROLL|WS_VSCROLL)
を呼んでもスクロールバーがつかないというのはどういうことなのでしょうか?

81 :デフォルトの名無しさん:03/03/26 03:26
m_edit.ModifyStyleEX( 0, WS_HSCROLL|WS_VSCROLL);
^^^^^^^
↑これが無いってオチじゃないよね

82 :デフォルトの名無しさん:03/03/26 03:42
>>81
m_zEdit.ModifyStyleEX( 0, WS_HSCROLL|WS_VSCROLL);
ってコールしてます。
むぅ。。。

83 :デフォルトの名無しさん:03/03/26 03:50
>>82
>>79も書いてるけどES_ 系のスタイルは指定してんの?ES_MULTILINEとか。

84 :デフォルトの名無しさん:03/03/26 06:47
>>82
m_zEdit.ModifyStyle(0, WS_HSCROLL | WS_VSCROLL, SWP_DRAWFRAME);

85 :デフォルトの名無しさん:03/03/26 07:28
>>84
ありがとうございます。でもだめみたいです。
CEditはリードオンリーモードになっていて、その内容が動的に
変わるようになっています。CEditが貼り付けられているメインダイアログ
のOnInitDialog()内と、テキストの内容を書き換えるごとに

m_zEdit.ModifyStyle(0, WS_HSCROLL | WS_VSCROLL, SWP_DRAWFRAME);

をコールしてみましたがだめです。ユーザの実務上クリティカルな問題なので
何とかしたいと思っています。何かアイデアがありますでしょうか、、、。


86 :デフォルトの名無しさん:03/03/26 07:45
>>84
あわわ、やっぱりそれで正しかったようです。
ES_AUTO*SCROLLとWS_*SCROLLを混乱していました。おっしゃるように
コーディングしたところ動作しました。ありがとうございました!
まとめ。
m_zEdit.ModifyStyle(0, WS_HSCROLL | WS_VSCROLL, SWP_DRAWFRAME);
SWP_DRAWFRAMEの指定がポイントでした。




87 :名無し@沢村:03/03/26 07:58
>>62
CHtmlView使え

88 :62:03/03/26 09:20
>>87
おお!ありがとうございます!
半分あきらめかけていたところでした!
タイムリミット9分前の劇的なレスにちょっとシビれています。

CHtmlViewですか。
さっそく調べてきます。

89 :デフォルトの名無しさん:03/03/26 18:14
スプリッタつかって縦3分割してるフレームをサイズ変更する際に
デフォルトではスプリッタ自体の位置が変わらないと思うのですが
真中のViewの高さだけを変える方法はありますか?

90 :デフォルトの名無しさん:03/03/26 18:51
>>89
スプリッタを入れ子にする。

91 :デフォルトの名無しさん:03/03/26 19:05
あ、90は勘違い。
自分で計算してWM_SIZEで変えたら?


92 :デフォルトの名無しさん:03/03/26 21:17
スプリッタのsetrowinfoだったかでできなかったっけ?
(うろおぼえ)

93 :デフォルトの名無しさん:03/03/27 05:33
ファイルダイアログをセーブモードで使っていて、既存のファイルを指定して
保存ボタンが押された場合上書き確認のダイアログを出したいのですが、
フラグか何かでMFCにやってもらう方法はありますでしょうか。
それとも自前で実装するしかないんでしょうか。

94 :デフォルトの名無しさん:03/03/27 06:08
>>93
CFileDialog でMSDN見たらそのまんま載っていると思うが。

95 :デフォルトの名無しさん:03/03/27 09:02
>>94
ありました。OFN_OVERWRITEPROMPTですね。
てめーで調べずにここですぐ聞こうとする癖を改めますです。


96 :デフォルトの名無しさん:03/03/27 11:30
>>91-92

できますた。ありがとうございませた。

97 :デフォルトの名無しさん:03/03/27 14:29
CFrameWnd でコントロールバーがDockingした時点を検出する方法はあります?

98 :デフォルトの名無しさん:03/03/27 14:43
Button1を押してファイル選択ダイアログを出し、そこで取得したパスを
エディットボックスに表示させ、エディットボックスに表示されてる文字を
out.txtに書き出したいのですがうまくいきません。
ダイアログボックスをださずに、エディットボックスに手入力した場合
out.txtに書き出されるのですが、ダイアログボックスを出すと
out.txtファイルさえ作られません。
m_filepathには、きちんとパスが入っています。
どこがおかしいのでしょうか?以下コードです。

void myProjectDlg::OnButton1()
{
CFileDialog dlg(TRUE, "exe", NULL, OFN_FILEMUSTEXIST, "実行ファイル (*.exe)|*.exe|", this);
if(dlg.DoModal() == IDOK){
m_filepath = dlg.GetPathName();
UpdateData(FALSE);
}
}

void myProjectDlg::OnOK()
{
UpdateData(TRUE);
CStdioFilefp("out.txt",CFile::modeCreate | CFile::modeWrite );
fp.WriteString(m_filepath);
fp.Close();
CDialog::OnOK();
}

99 :デフォルトの名無しさん:03/03/27 15:01
>>97
自信ないけどCDockBar::DockControlBar(), CDockBar::ReDockControlBar()あたりか、
どちらも仮想関数ではないし、CDockBarを持ってるCMiniDockFrameWndもポインタでは
持っていないのでDockControlBar()などから検出するには書き足さないとむりだな、
CDockBarとCMiniDockFrameWndの派生クラスを作って、、、も、無理か

100 :デフォルトの名無しさん:03/03/27 15:14
>>98
CFileDialogで指定したパスにout.txtが作られていると見た。
ファイル選択するときにカレントディレクトリが変わってんじゃない?

101 :デフォルトの名無しさん:03/03/27 15:19
>>97
多分、CDockContext::StartDrag()で検出できる。これは仮想関数なので
派生して、オーバーライドすればよいはず。CDockContextを持っている
CControlBarはポインタでCDockContextを持っているので都合はよいが
CDockContextを生成するEnableDocking()が仮想関数で無いのでCToolBar
などを使用する場合には都合が悪い。ただ、EnableDocking()はプログラム中では
明示的に呼び出しているので(普通はCMainFrame::OnCreate())その後で
普通に生成されたCDockContextのCControlBar::m_pDockContextをdeleteして
CDockContextの派生クラスをnewしてm_pDockContextにいれればOKか

102 :101:03/03/27 15:24
これであってるのかは知らないけどな。
もっと簡単な方法があったらアフォですな。

103 :デフォルトの名無しさん:03/03/27 19:35
さびれたねぇ。

104 :デフォルトの名無しさん:03/03/27 20:00
たった四時間でか

105 :98:03/03/28 01:06
>>100 Σ(´Д`ズガガーン
大正解ですた。いたる所にout.txtが!!
これで成仏できます。ありがとう。ありがとう。

106 :デフォルトの名無しさん:03/03/28 16:04
>いたる所にout.txt
ワラタ

107 :デフォルトの名無しさん:03/03/28 19:55
CTreeCtrlの選択されたアイテムのラベルをコンテキストメニューでクリップボードに
コピーできるようにしたいのですが方法がありますでしょうか。

108 :デフォルトの名無しさん:03/03/28 20:41
>>107
あります。

ちょっと調べりゃ分かるだろ……

109 :デフォルトの名無しさん:03/03/28 21:23
>>105
俺も昔それやった
スタートメニュー→ファイル検索でtest.txt検索したらあちこちのフォルダに保存されてた(w


110 :デフォルトの名無しさん:03/03/29 00:22
MFCでアプリケーション作成しているのですが、midiを流す方法がわかりません。
DirectXの知識がないので、APIを使えばできるとか聞いたのですが。
まだWindowsプログラミングは初心者なものでどうしていいか・・・
アドバイスお願いします。


111 :デフォルトの名無しさん:03/03/29 00:41
>>110
http://www.google.com/search?q=MFC+MIDI

112 :デフォルトの名無しさん:03/03/29 00:49
ダイアログベースのピクチャボックスにマウスクリックで線を引きたいんだけど

113 :デフォルトの名無しさん:03/03/29 01:04
>>112
引けば?

114 :デフォルトの名無しさん:03/03/29 01:08
>>112
何を聞きたいのか分からないんだけど。
入門書でも読んでろ。

115 :110:03/03/29 02:46
>>111

検索しろ・・・か。
それもそうだな。

じゃ、どうする?死ぬか?
ゴチャゴチャ言わずにサッサト教えろ。

116 :デフォルトの名無しさん:03/03/29 02:52
ごめんなさい。もうゴチャゴチャいいません。氏にマス。

117 :デフォルトの名無しさん:03/03/29 11:14
>>115
(゚Д゚) ハァ?

118 :デフォルトの名無しさん:03/03/29 17:58
>>115
まず検索して、試行錯誤して、詰まってから来い。
、と釣られてみる。

119 :デフォルトの名無しさん:03/03/30 18:17
MFCのWebブラウザオブジェクトにホームページを表示させて
制御する際に、User-Agentを変更する方法ってありますか?

何がやりたいかというと、バナーページ(HTML)を表示させる際に
履歴が残らないようにしたいのです。

もし、いい代案があれば、ご教授ください
よろしくお願いします


120 :デフォルトの名無しさん:03/03/30 20:00
Navigate()で変えられる。

121 :119:03/03/30 20:11
バナー処理とはまた別の話で、Webブラウザオブジェクトに表示させた
Webページ上から、別のページにリンクした際に、そのURLを
履歴に残さないようにする方法ってありますか?


122 :デフォルトの名無しさん:03/03/30 21:21
>>121
キミは検索したのかね。
WebBrowser 履歴で検索したら重要なヒントが出てきたぞ。
ttp://www.microsoft.com/japan/msdn/weeklynews/webteam000825.asp

123 :119:03/03/31 03:02
>>122
ありがとうございます
そこでかかれているようなコンテンツ側ではなくプログラム側で
制御することはできないでしょうか?

Navigateで表示したページから張られているリンク先も
履歴に加えたくないのです




124 :デフォルトの名無しさん:03/03/31 04:05
mciSendStringでmidiを鳴らそうとして、とりあえず1が入力されたらplayになるようにしたのですが鳴りません。
誰か助けてください

#include<stdio.h>
#include<windows.h>
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")

void main()
{
int t=0;

mciSendString("open C:\test.mid alias mcitest",NULL,0,0);

for(;;){

scanf("%d",&t);

if(t==1){
mciSendString("play mcitest",NULL,0,0);
}
else if(t==2){
break;
}

}

mciSendString("close mcitest",NULL,0,0);
exit(0);
}

125 :デフォルトの名無しさん:03/03/31 04:11
MFCちゃうやん

126 :デフォルトの名無しさん:03/03/31 04:37
せっかくなんで聞くけど
mciSend***でmidi鳴らすときって
ハードで鳴らせればハード、
ない場合はソフトみたいに自動的に選択してくれてるの?



127 :デフォルトの名無しさん:03/03/31 04:47
(´-`).。oO(何がせっかくなんだ?)

128 :124:03/03/31 05:11
MFCを使って、AAAviewクラス(プロジェクト名がAAA)のコンストラクタに
mciSendString("open 'C:\test.mid' alias mcitest",NULL,0,NULL);
mciSendString("play mcitest",NULL,0,NULL);
を書き
デストラクタでクローズするようにしました。
これでもならないのですが・・・

129 :デフォルトの名無しさん:03/03/31 05:53
>>124
細かいつっこみはしないが、
mciSendString("open C:\\test.mid alias mcitest",NULL,0,0);
↑のようにすればいい。クラスは関係ない。



130 :デフォルトの名無しさん:03/03/31 06:04
mciSendString("open C:\test.mid alias mcitest",NULL,0,0);

type sequencer をファイル名のあとに挿入するとか?
『Winwdows 95 API パワフルテクニック大全集』より

131 :124:03/03/31 06:10
>129

(⊃Д`)ありがとう。できました

132 :デフォルトの名無しさん:03/03/31 10:18
>>123
答えそのものが載ってるわけじゃないよ。
そこをヒントにすればプログラム側でも制御できる。

133 :デフォルトの名無しさん:03/03/31 17:01
>>121
OnBeforeNavigate2のフラグ制御は?

って調べてみたら、このフラグ、未使用なんだね

134 :デフォルトの名無しさん:03/03/31 19:11
mfcで選んだディレクトリにあるファイルやフォルダの名前やサイズを
全部取得したいんですが、便利な関数無いですかね?
いちおうMSDNで調べてみるとCFindFileというクラスが見つかったのですが、
ファイル名指定しないと行けないみたいなので悩んでいます。


135 :デフォルトの名無しさん:03/03/31 22:31
>>134
ワイルドカード使えばええやん

136 :デフォルトの名無しさん:03/04/01 05:17
関係ないけど_findfirstと_findnextの方が数倍早くね?

137 :デフォルトの名無しさん:03/04/01 13:00
>>136
MFCと混在させるのはよくない

138 :デフォルトの名無しさん:03/04/01 14:30
CHtmlView上で左クリックを検知して親ウィンドウにイベントを発生させたいのですが、
どのようにして左クリックを検知すればいいのでしょうか?

139 :デフォルトの名無しさん:03/04/01 16:26
>>138
過去ログを読めと。

140 :任意のIE履歴を消す:03/04/01 21:57
unsigned shortwStr[256];
MultiByteToWideChar(
CP_ACP, // ANSI code page
0, // 既定の変換方法
"http://www.microsoft.com", // 変換元文字列
-1, // 変換元文字列サイズ(-1指定で自動計算)
&wStr[0], // 変換先バッファ
256); // 変換先バッファサイズ
CoInitialize(NULL);
IUrlHistoryStg2* pUrlHistoryStg2 = NULL;
HRESULT hr = CoCreateInstance(CLSID_CUrlHistory,
NULL, CLSCTX_INPROC_SERVER, IID_IUrlHistoryStg2,
(void**)&pUrlHistoryStg2);
if (SUCCEEDED(hr))
{
hr = pUrlHistoryStg2->ClearHistory();
hr = pUrlHistoryStg2->DeleteUrl((LPCOLESTR)&wStr[0],0);
pUrlHistoryStg2->Release();
}
CoUninitialize();
こんな感じで組みましたがうまく消えてくれません
どこに問題があるかご教授お願いします

本当に使いたいのはDeleteURLです。
試しにClearURLも使ってみましたが、
こちらもうまく機能しません。
(エラーコードは0なのですが・・・)

どなたか教えてください


141 :デフォルトの名無しさん:03/04/02 10:41
FAQかもしれませんが、IHTMLElement2が未定義と言われてしまいます。
#include <mshtml.h>
してもダメでした。
MSHTML::IHTMLElement2* pIHTMLElement2;
と書いたり、
CComQIPtr<IHTMLDocument2> pIHTMLElement2;
と書いても未定義と言われてしまいます。どうすれば解決できますでしょうか?
環境はWinXP+VC6SP5+IE6SP1です。

142 :名無し@沢村:03/04/02 12:58
>>141
ヌヒよ、#import "mshtml.idl" でどうだ。

143 :デフォルトの名無しさん:03/04/02 14:15
>>141
mshtml.hが古いんじゃないの?
とりあえずGoogleでIHTMLElement2をキーワードに検索することを薦める。

144 :デフォルトの名無しさん:03/04/02 16:32
だれか>>140に教えてやれよ
せっかくコードまでのせてんだからさ


145 :デフォルトの名無しさん:03/04/02 16:33
>>142
ありがとうございます。「.idl」では開けなかったのですが
#import "mshtml.tlb"
と書いたらコンパイル通りましたです。

>>143
ありがとうございます。
IHTMLElement2でググッてはいたのですが、どうも節穴だったようで
上に書いた #import の方法が見つかりましたヽ(´ー`)ノ



146 :デフォルトの名無しさん:03/04/02 17:14
>>144
140必死だな

147 :140:03/04/02 18:26
>>146
わからない香具師は騙っててください。

148 :デフォルトの名無しさん:03/04/02 19:34
>>147
回答を得られる可能性を自分で断ったな。

149 :140:03/04/02 21:43
>>708
お口添えありがとうございます
やっぱり特殊分野なので、さすがにみんなわからないんでしょうね

>>148
147は私ではありません

ちょっとせっぱ詰まっています。
解決できなければ上司におこられます
よろしくお願いします


150 :デフォルトの名無しさん:03/04/02 21:49
>>149
怒られてください。

はい次↓

151 :デフォルトの名無しさん:03/04/02 21:55
708は向こうのスレの「協力者」だな。

152 :デフォルトの名無しさん:03/04/02 21:57
708てものすごいあからさまなコピペに笑った

153 :デフォルトの名無しさん:03/04/02 22:01
スゲェよ!>>149!
あんた最高のネタ野郎だ!!

154 :デフォルトの名無しさん:03/04/02 22:06
相互リンク
IEコンポーネントを使い倒すスレ
http://pc2.2ch.net/test/read.cgi/tech/982930049/l50

155 :デフォルトの名無しさん:03/04/02 22:10
まぁ>>140のどこがMFCと関係あるのかという根本的な問題があるわけだが

156 :デフォルトの名無しさん:03/04/03 00:05
つーか、>>7==>>22もだよな。
仕事で詰まったら全部他人にやらせるつもりか。

157 :デフォルトの名無しさん:03/04/03 15:00
まあまあ、みんな相談室の原点に戻ってさ、
140の質問も勉強だと思って、消化していこうよ


158 :デフォルトの名無しさん:03/04/03 15:03
すでに「スレ違い」ということで消化されている罠。

159 :デフォルトの名無しさん:03/04/03 15:08
c++でiso-2022-jpをデコードできるサンプルありませんか?

160 :デフォルトの名無しさん:03/04/03 16:26
JIS>Unicodeの変換の例ならRougewaveのドキュメントが京大の鯖に転がってるが

161 :デフォルトの名無しさん:03/04/03 16:39
だからMFCと何の関係があるのかと・・・

162 :デフォルトの名無しさん:03/04/03 17:17
システムメニューのサブメニューにチェックを入れたいのですが
Debug Assertion Failed! とVCに怒られてしまいます。
サブメニューは CMainFrame::OnCreate 内で

CMenu mMenu;
mMenu.LoadMenu(IDR_SUBMENU);
pSysMenu->InsertMenu(4,MF_BYPOSITION|MF_POPUP, (UINT)mMenu.m_hMenu , _T("サブメニュー"));

のように作って表示もちゃんとされています。
ただ、CMainFrame::OnSysCommand で

nID = LOWORD ( nID ) & 0xFFF0;
if ( nID == ID_SUBMENUITEM )
{
  CMenu* pSysMenu = GetSystemMenu(FALSE);
  pSysMenu->GetSubMenu(4)->CheckMenuItem(nID, MF_CHECKED | MF_BYCOMMAND);
}

と呼ぶとダメなようです。
どのあたりが問題でしょうか?

163 :162:03/04/03 17:18
すみません。質問なのでage升

164 :162:03/04/03 18:10
OnCreate内のCMenuをグローバルで持たせたら解決しました。
首吊ってきます…

165 :デフォルトの名無しさん:03/04/03 20:47
せめてメンバ変数に汁

166 :162:03/04/03 22:20
あ、メンバ変数にしてました。ひよっこで申し訳ないです。


167 :デフォルトの名無しさん:03/04/04 17:23
ドラッグ中にマウスのポインタを変えるにはどうすればいいですか?

ドラッグは検知できているとして

168 :デフォルトの名無しさん:03/04/04 18:53
>>167
http://www.google.com/search?q=MFC+%E3%83%9E%E3%82%A6%E3%82%B9+%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF+%E5%A4%89%E6%9B%B4

169 :デフォルトの名無しさん:03/04/05 19:08
突然で申し訳ありません。前も似たものをかきこしたのですが、
MDIで開く を自前で実装するにはどうすればいいのですか?
(実際はファイルが決まっているのでダイアログを表示しないでいいのですが)
ご存じであれば教えてください。お願いします。

170 :デフォルトの名無しさん:03/04/05 19:17
VISUALSTUDIO.NETっていくらするの?

171 :169:03/04/05 19:17
ものによってです。アカデミックの3万ぐらいから上は30万ぐらいまで。

172 :169:03/04/05 19:18
>>170
ものによってです。アカデミックの3万ぐらいから上は30万ぐらいまで。

173 :デフォルトの名無しさん:03/04/05 19:21
>>167
http://www.google.com/search?q=OnDragOver+COleDropTarget+%83%7D%83E%83X%83%7C%83C%83%93%83%5E&lr=lang_ja

174 :デフォルトの名無しさん:03/04/07 10:24
thread の中で、this ポインタを引き継いでって
SetWindowTextとはなら成功するんですが...
UpdateData が必ず 「Debug Assertion Failed!」って
失敗してしまうんですが、
そういう仕様なんでしょうか?

175 :デフォルトの名無しさん:03/04/07 11:13
VC++.NETにもMFCはあるの?

176 :デフォルトの名無しさん:03/04/07 13:12
>>174
多分、SetWindowText()はウインドウメッセージを送るだけの処理なので
HWNDを生成したスレッドでなくても大丈夫で、
UpdateData()は普通のメンバー関数なので、別のスレッドから
呼び出せないようにASSERT()いれてあるんだと思う

177 :デフォルトの名無しさん:03/04/07 13:13
>>174
仕様です。

>>175
あります。

178 :デフォルトの名無しさん:03/04/07 21:10
CListCtrlのヘッダ部分の高さを変えるにはどうすればいいんでしょうか?
CheaderCtrlでヘッダ取得してSetWindowPosで無理矢理変えたらヘッダだけは高さ変わったんですが
ヘッダの裏にあたる(?)リストの部分の高さが変わらずヘッダの部分が内容に被ってしまいますた。

179 :デフォルトの名無しさん:03/04/07 23:06
CImageList

180 :デフォルトの名無しさん:03/04/08 15:26
CEditであるキーが入らないようにするにはどうすればいいですか?
例えば「a」が入らないように・・・

181 :デフォルトの名無しさん:03/04/08 15:36
>>180
CEditの派生クラスで好きなようにしる!

182 :デフォルトの名無しさん:03/04/08 15:39
             / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      ∧_∧   <  OnCharで出来ました。
     ( ´_ゝ`)   \ アリガトー!>>181 
    /::☆::::☆::\   \________
   /:/\:::::☆::/ ̄\
 _| ̄ ̄ \☆/  ヽ \_
 \ ̄ ̄ ̄ ̄ ̄ ̄ \__)
  ||\            \
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
  ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
     .||              ||

183 :デフォルトの名無しさん:03/04/10 13:13
MFCでアイドルループどう書きますか?

184 :デフォルトの名無しさん:03/04/10 13:21
const int kago = 1000;
for (int tsuji = 0; tsuji < kago; tsuji++)
{
・・・・
}

185 :デフォルトの名無しさん:03/04/10 13:23
ワラタ

186 :デフォルトの名無しさん:03/04/10 16:16
複数ダイアログバーあるとき
親のフレームのサイズを縮めると
かってにはみ出たダイアログバーが
下に下がっちゃうんだけど・・・

下がって欲しくないときはどうするん?


187 :デフォルトの名無しさん:03/04/10 16:18
少しMFCと話題ずれるけど、EXEに関連づけられた
アイコンって、あとからbmpとかを読み込んで再定義とか
できるの?
本来なら、レジストリで、exeに埋め込まれたアイコンデータを
参照するようだけど。
教えてください


188 :デフォルトの名無しさん:03/04/10 16:28
exeのリソース書き換えてアイコンを変更することはできる。

189 :187:03/04/10 17:34
>>188
うーん・・・
外部に画像ファイルとして持たせて、ユーザーが選択
できるようにしたいのですが・・・


190 :デフォルトの名無しさん:03/04/10 17:39
exeのリソースを書き換えるプログラムを同梱すれ。

191 :デフォルトの名無しさん:03/04/10 20:01
ウィンドウの垂直位置をMoveWindowで負の座標にもっていっても
自動的に、タイトルバーが見える状態に下がってしまいますが
(デスクトップ上で移動で試しても確認できます)
これを禁止するか、座標が修正されたタイミングを取得する方法って
ありますか?


192 :デフォルトの名無しさん:03/04/10 21:22
CSocketやCAsyncsocketを使った場合、相手側もCSocketやCAsyncsocketを使った
アプリケーションじゃないと通信出来なかったりする事ありますか?

193 :デフォルトの名無しさん:03/04/10 21:29
>>192
そのくらい自分で試せよ

194 :デフォルトの名無しさん:03/04/10 21:36
>>191
>ウィンドウの垂直位置をMoveWindowで負の座標にもっていっても
>自動的に、タイトルバーが見える状態に下がってしまいますが
SDIでもダイアログでも下がりませんですた

Windows2000SP3 VC6SP5 MFC4.2

195 :191:03/04/10 21:59
>>194
要するにオリジナルスキンを持ったウィンドウのドラッグ操作の
部分なのですが、
MoveWindowを呼んだ直後は下がらないけど、その後(タイミングが不明)に
修正されます。

例えば、
WindowsMediaPlayerの下をドラッグして上に持っていくまでは
OK(MoveWindowでも負のy座標が適当される)だけど
マウスを放したときに、戻っちゃいます


196 :デフォルトの名無しさん:03/04/10 22:19
タイトルバーを削除しちゃいかんのか?

197 :191:03/04/10 22:52
>>196
プロパティでタイトルバーはオフにしていますが
同じ結果です


198 :デフォルトの名無しさん:03/04/10 23:31
VC2003まだ〜

199 :デフォルトの名無しさん:03/04/10 23:51
>>195
それはWindowsの仕様なんじゃないか……?

200 :191:03/04/11 00:14
うーむ、実はドラッグでMoveWindowしたウィンドウに追随させて
ほかのウィンドウも制御してるのですが、OSに勝手に移動されると、
つじつまが合わなくなりますね


201 :デフォルトの名無しさん:03/04/11 00:50
>>191
MoveWindowというか、ユーザがドラッグや Alt+Space,M でウィンドウを動かした
ときの話でしょ?

LBUTTONUP や Enterで位置を確定した後、↓みたいにメッセージが飛んできたよ

位置の修正がないとき
WM_POSCHANGEING (移動した座標)
WM_POSCHANGEING (  〃  )

位置の修正があったとき
WM_POSCHANGEING (移動した座標)
WM_POSCHANGEING (修正された座標)
WM_POSCHANGED (  〃  )


202 :191:03/04/11 02:25
>>201
ヒント
ありがとうございます
無事解決できそうです


203 ::03/04/11 12:57
リストボックスが空の状態でリストボックスの内容を保存しようとすると
エラーのメッセージを表示させたいです。どのようなコードを書き込めばよいでしょうか?
ご教授お願いいたします。

204 :デフォルトの名無しさん:03/04/11 18:46
>>203
中身があるかどうか確認してから保存する。

205 :デフォルトの名無しさん:03/04/11 22:44
ずっと疑問に思っていたのですが、デバッグウィンドウで
dllのロード後に
「○○.dllをロードしました。合致するシンボル情報は見つかりませんでした。」
ってどういう意味なんでしょ??

206 :デフォルトの名無しさん:03/04/11 23:14
>>205
日本語わかりますでしょうか?

207 :デフォルトの名無しさん:03/04/11 23:32
>>206
町に出て日本語知っている人に聞いて答えてもらえると思いますか?
あなたは質問の意味が理解できてないように思われます。
日本語わかりますでしょうか?

208 :デフォルトの名無しさん:03/04/11 23:47
>>207
おまいはプログラマには不向きと思われ。
ttp://www.google.com/search?hl=ja&lr=lang_ja&q=%8d%87%92v%82%b7%82%e9%bc%dd%ce%de%d9%8f%ee%95%f1%82%cd%8c%a9%82%c2%82%a9%82%e8%82%dc%82%b9%82%f1%82%c5%82%b5%82%bd%81B

209 :デフォルトの名無しさん:03/04/12 00:14
>>205
合致するシンボル情報(foo.dllに対してfoo.dbgあるいはfoo.pdb)
があれば、VisualC++のデバッガはそれを使ってDLL内の関数名とか
を表示することができる。それができませんよ、ってこと。

210 :デフォルトの名無しさん:03/04/12 00:24
>>208
一番上に回答がくるようにしない奴はム板にむいてない

211 :205:03/04/12 00:29
>>209
ありがとう!!
よくわかりましたっ!!!m(__)m

212 :デフォルトの名無しさん:03/04/12 00:29
>>210
ム版に最も適した人材



213 :デフォルトの名無しさん:03/04/12 02:37
最近の厨房様は検索という言葉をご存知ないらしい

214 :214:03/04/12 05:24
シリアライズして保存したいのですが
保存する変数を配列で定義してるせいか
二項演算子'>>':型'CString[15][100]'の右オペランドを扱う演算子が見つかりません(または変換できません)
と出ます。ar >> m_id >> m_account >> m_name >> m_address >> m_day; ってな感じでやってるんですが
解決策ありますか?

215 :デフォルトの名無しさん:03/04/12 05:43
>>214
イマイチ分かり辛いが、
配列ならをforで回して保存したらどうよ

216 :214:03/04/12 06:00
シリアライズしないってこと・・・・ですか?
あっぷしてみたので見ていただけるとうれしいです・・(爆
http://members.tripod.co.jp/aiton21/customer.zip

217 :デフォルトの名無しさん:03/04/12 16:27
>>216
*.objはサイズが大きいから、次回うpするときは、削除してから
うpするよーに。

218 :デフォルトの名無しさん:03/04/12 17:49
と言うことで、誰も見ないから放置プレイ?


219 :デフォルトの名無しさん:03/04/12 18:22
シリアライズできる配列クラスを作れってこったろ。

220 :214:03/04/13 04:37
>217
了解です。
>219
あほなのでよくわからんのですが
配列の変数でも保存が可能なシリアライズクラスを作れってことですか?

221 :214:03/04/13 04:52
こんな感じの作ってみたんですが構文エラー出ちゃいます。。。
ar << m_id;
for(i=0;i<m_id;i++)
{
m_account[][i] << m_name[][i] << m_address[][i] << m_day[][i];
}

222 :214:03/04/13 05:54
if (ar.IsStoring())
{
ar << m_id;
for(m=0;m<=15;m++)
{
for(i=0;i<m_id;i++)
{
ar << m_account[m][i] << m_name[m][i] << m_address[m][i] << m_day[m][i];
}
}
}
これでできました。何回もコピペすいません。。。
ですが今度は
error LINK2005:"class CData m_data"(?m_data@@3VCData@@A)は既にData.objで定義されています。
とでます。オブジェクト名を変えるとまたそのオブジェクト名でエラーが出るので
二重定義定義しているとは思えません。ググってみてもそれらしい物がでないので。。。よろしくです

223 :デフォルトの名無しさん:03/04/13 10:07
>>222
とりあえず中間ファイルを消してリビルドすることをオススメする

224 :デフォルトの名無しさん:03/04/13 10:08
>>222
……と、そのまえに>216の中のdata.hはギャグだよな?
data.hを2つ以上のcppファイルでインクルードすると当然2重定義になるわけだが……

225 :デフォルトの名無しさん:03/04/13 10:13
ぬぁに!知らなかった。。。
二つ以上のcppファイルでdata.hを使いたいときはどうすればよい?

226 :214:03/04/13 10:18
あ、ヘッダファイルでインクルードすればよいわけか。
どっちにしてもエラー消えません(泣

227 :デフォルトの名無しさん:03/04/13 10:30
>>226
indef

228 :214:03/04/13 10:39
>>227
検索しても何もでないです。。俺がへたれのせい?!

229 :デフォルトの名無しさん:03/04/13 10:41
>>228
いや、ミスタイプしたものの誰かが訂正してくれるだろうと放置した俺の責任だ。スマソ。

ifdef

230 :214:03/04/13 11:09
>>229
#ifdefが条件付コンパイルってとこまでわかったんですがそこからがどうも。。。
他のヘッダファイルで定義したクラス使うにはどうすればよい?

231 :デフォルトの名無しさん:03/04/13 11:22
いや、つーか、クラス宣言と切り離せよ
data.hでは
class CData
{
:
:
};

んで他のcppふぁいるで
CData data;
これでオブジェクトは1つだけ宣言される。
あとはヘッダファイルでextern宣言でもしとけ。

232 :デフォルトの名無しさん:03/04/13 11:29
>>230
ヘッダファイルを#include

まさかとは思うが
class hogehoge
{
/* 変数とか関数とか */
} hage;
とかやってないだろうな。

233 :214:03/04/13 11:40
>232
もちろんやりました(笑)
>231
extern宣言見つけました!って書こうとしたら書き込みが。。。
感謝です。確かにcppで宣言した方がいいっすね。
そしたら今度は外部シンボルが未解決やら言い出しました。
エラーってつきないっすね(泣)一応メインフレームのオンクリエイトで
オブジェクトできるようにしたんですけど、何がだめなんだろ・・・

234 :214:03/04/13 11:53
>あとはヘッダファイルでextern宣言でもしとけ。
ってどこのヘッダファイルですか??
とりあえず全部のヘッダファイルに書いてみたけどだめでした。。。

235 :デフォルトの名無しさん:03/04/13 11:56
>>233
MFCには関係ないようだな。
とりあえずその書き込みからわかることは

変数または関数の実体がない

エラー文のコピペとOnCreateのあたりのソースを見ないとなんとも言えん。

236 :デフォルトの名無しさん:03/04/13 12:01
>>234
(;´Д`)
何がダメだったのか、どんなエラーがでるかくらい書けよ。

グローバルな変数だったら
プロジェクト名.cppに変数宣言して、
プロジェクト名.hにextern宣言しておけば大丈夫だと思うけど。
(全ファイルでプロジェクト名.hを#includeする必要があるが)

俺はグローバル変数嫌いだから、
アプリケーションクラスのpublic変数として宣言しておいて
CHoheApp *pApp = (CHoheApp *)::AfxGetApp();
pApp->data = ....
っていう風にするけど。
(それ以前にグローバル変数を使わない設計にするがw)

237 :214:03/04/13 12:04
http://members.tripod.co.jp/aiton21/customer.zip
に一番新しいのアップしました。エラー文コピペとかより
分かりやすいと思ったので。試行錯誤中です。。。

238 :214:03/04/13 12:07
あああ!グローバルじゃなかった罠。お騒がせしました。。。

239 :デフォルトの名無しさん:03/04/13 12:11
>>237-238
とりあえずお前に学習能力がないことがよくわかった(>>217)

で、解決したのか。
そうか。

240 :214:03/04/13 12:13
ほんとすいません。。。分かってたんですが急いでたもんで(泣)
いちおう解決しました。どもでした。

241 :デフォルトの名無しさん:03/04/13 12:14
(´-`).。oO(急がば回れ……)

242 :214:03/04/13 12:18
あれ。。。消せた。さっきはデバッグフォルダの中身にロックかかってて
消すのに一回.NET閉じたんですよ。また閉じるとなると相当時間かかるから
そのまま圧縮しちまいました

243 :デフォルトの名無しさん:03/04/13 14:03
>>241
ワラタ

244 :デフォルトの名無しさん:03/04/13 14:32
289件のビルドタスクエラーがでたので顔殴らせてください

245 :デフォルトの名無しさん:03/04/13 15:01
DDXでコントロールしてる文字列があるんですが
その文字列のコピーの仕方が分かりません。
どうやればこぴれますか?

246 :教えてクン:03/04/13 17:32
モードレスダイアログのZオーダをアプリケーション内で最前面に固定するにはどうすれば?
(システムで最前面ではなく。)

247 :デフォルトの名無しさん:03/04/13 17:40
>>246
SetWindowPos(&wndTop);

248 :246:03/04/13 18:01
>>247
固定、したいんですが‥‥。

249 :デフォルトの名無しさん:03/04/13 18:14
>>248
俺の記憶が確かならウィンドウは親ウィンドウよりも前に来る

250 :デフォルトの名無しさん:03/04/13 18:19
>>248
>>247であってるんでない?VC6だけど、ちゃんとなるよ。
何が不満なのよ?


251 :デフォルトの名無しさん:03/04/13 18:21
>>214
2重インクルード防止に#ifdefなんてもう古い。
#pragma once 使え。

252 :246:03/04/13 18:25
>>249-250
???
以下のコードでm_bForeがドッチでもZオーダに関する動作は同じっぽいのだが?
何か間違ってる??

(ダイアログクラス)
  if ( m_bFore )
  {
    // 常に手前に表示
    SetWindowPos( &wndTop, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE );
  }
  else
  {
    // 手前でなくともよい
    SetWindowPos( &wndNoTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE );
  }

253 :246:03/04/13 18:26
あ、まさか。

254 :214:03/04/13 18:27
>251
どもです。とりあえず問題解決したので余裕ができたら調べます。
質問なんですが
あるcppファイルから他のヘッダを取り込んで
他のヘッダにあるクラスでオブジェクトを宣言しようとすると、
コンストラクタ関数を呼び出したことになってしまいます。
オブジェクトを新たに宣言できないんですがどうすればいいですか?

255 :デフォルトの名無しさん:03/04/13 18:28
両方使え

256 :デフォルトの名無しさん:03/04/13 18:29
>>252
>固定、したいんですが‥‥。

(゚Д゚)ハァ?

257 :246:03/04/13 18:32
アハハ。親をデスクトップにしてたyo!

258 :デフォルトの名無しさん:03/04/13 18:33
>>257
吊ってよし。

259 :214:03/04/13 18:34
>>255
これが自分へのレスなのかすら分からない俺は馬鹿だ・・・

260 :246:03/04/13 18:38
   ||
 ∧||∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( / ⌒ヽ < みんなありがとー。
 | | 、, |  \__________
 ∪ ノ )〜
  | | |
  ∪∪
   : 
   : 
      
 ‐ニ三ニ‐ 

261 :デフォルトの名無しさん:03/04/13 18:39
>>214
( ´ー`)y-~~.。oO(C言語について基礎からやったら?)

262 :デフォルトの名無しさん:03/04/13 18:44
>>261
いくらC言語を勉強しても解決できない悪寒

263 :214:03/04/13 18:46
>261
基礎特訓中です。。。へたれですいません・・・。
なんでコンストラクタ関数になっちまうんだろぅ

264 :デフォルトの名無しさん:03/04/13 18:46
>>262
ヘッダに

int Global_HOGE;

と書くわけだ。( ´_ゝ`)フーン…

265 :デフォルトの名無しさん:03/04/13 18:51
わざわざVC++初心者スレがあるのに・・・

266 :デフォルトの名無しさん:03/04/13 18:55
>>264
デムパゆんゆん

267 :214:03/04/13 18:58
>265
いってきまつ

268 :デフォルトの名無しさん:03/04/14 05:14
3つ質問させてください。締め切り間際で焦っております(つД`)

1.タスクバーのキャプションだけを変更する方法はありますでしょうか?
  タイトルバーと違うキャプションにしたいのですが・・・

2.アプリが完全に立ち上がるまでの間、
  砂時計をだすためにCWaitCursorを使っているのですが、
  アプリをバッチファイルから起動した場合砂時計がでてきません。
  (直接アプリを起動すると、最初から砂時計がでるようです)
  バッチファイルからの起動で砂時計を出すためには何か必要なのでしょうか?

3.signalをひろって、アプリを落とす処理があるのですが、
  そのときsignalの種類によっては、アプリケーションエラーのダイアログが出てきます。
  このダイアログを表示させない方法はあるのでしょうか?

どうかご教授お願いいたします。

269 :デフォルトの名無しさん:03/04/14 05:23
>>268
低能プログラマはクビになってしまえ

1. ムリ
2. 別に?
3. エラーをなくす

270 :268:03/04/14 05:51
>>269
回答ありがとうございます。

2.はもう少し調べてみます・・・

3.に関しては私もエラーを無くすのが当然だと思うのですが、
仕様に含まれているため、処理を入れないといけないのです・・・。
アプリケーションエラーのダイアログはプログラムでは操作できないのでしょうか?
signalを無視するなど試してみたのですが、上手くいきませんでした。



271 :デフォルトの名無しさん:03/04/14 07:15
  _, ._
( ゚ Д゚)  ・・・

272 :去る:03/04/14 10:12
CFileDialogで詳細表示の項目にオリジナルの項目を追加したいのですが
どうすれば宜しいでしょうか?ご指導願います(名前、サイズ とか表示されているところです)

273 :デフォルトの名無しさん:03/04/14 17:52
>>268
>アプリを落とす処理

ど う や っ て 落 と し て る ん で す か ?

274 :デフォルトの名無しさん:03/04/14 21:17
アホな質問でしみません。
デバッグ中にMFCのコードで止まるのですが、コードを修正しても
ステップ実行で無視されます。またMFCのソースコードを修正しても
いいものなのでしょうか?

275 :デフォルトの名無しさん:03/04/14 21:34
アホな質問というか日本語的にどうかと。

276 :デフォルトの名無しさん:03/04/14 21:35
>>272
自分でダイアログを作る

277 :デフォルトの名無しさん:03/04/14 23:38
>>270
1に関してはVCLは実現していますね。
二つのウィンドウを使って擬似的に行っているようです。

278 :デフォルトの名無しさん:03/04/15 00:10
APIスレから流れてきました。
http://pc2.2ch.net/test/read.cgi/tech/1047819779/546
フォルダのツリービュー(エクスプローラの左側にあるやつ)を手っ取り早く実装する方法ってありませんか?
フリーのライブラリの情報でもありがたいです。


279 :デフォルトの名無しさん:03/04/15 01:26
>>278
そっちで答えでてんのにどうしてわざわざこっちへ?

280 :デフォルトの名無しさん:03/04/15 01:38
>>278
有る。探せ。
それかPIDL(ITEMIDLIST)勉強しる。

281 :デフォルトの名無しさん:03/04/15 02:08
ちなみに人に聞いて回ることは「勉強する」って言わないからね

282 ::03/04/15 09:23
>> 272 です。CFileDialogを拡張して
hList = GetListViewInner();// リストビューのハンドル確保
hHead = ::GetWindow(hList, GW_CHILD);// そのヘッダーのハンドル確保
LV_COLUMNを利用して項目を追加するも詳細表示の表示項目その他を選択すると
落ちてしまいます。どなたかよきアドバイスをお願いします。
やはり1から作成するしかないのでしょうか?

283 :デフォルトの名無しさん:03/04/15 10:46
>>282
マルチポストかよ
氏ね

284 :デフォルトの名無しさん:03/04/15 10:51
RichEdit2.0の機能をつかってるサンプルソースを公開してる
サイトとかないでしょうか?

あのリンク機能とかバックカラー、アンダーラインなんかを使ってる
サンプルが欲しいんですが・・

285 :デフォルトの名無しさん:03/04/15 11:25
>>282
>>284
codeguruあたりに載ってない?

286 ::03/04/15 11:27
>>285
英語のサイトなんか教えられても、ちっとも嬉しくないんだよ。

287 :デフォルトの名無しさん:03/04/15 11:39
>>285
codeguruもcodeprojectも見てみましたが
RichEdit1.0のサンプルが主で、いくつか1.0の機能拡張とか2.0の単機能だけ
引っぱってきたサンプルはあるようなんですが
RichEdit2.0を前面につかったサンプルがまるでないようで・・・


288 :デフォルトの名無しさん:03/04/15 12:09
>>286
英語も読めない低学歴か(藁

289 ::03/04/15 12:39
>>286 偽者が語るな


290 ::03/04/15 12:40
>>286 偽者が!! 人の名を語るな

291 :デフォルトの名無しさん:03/04/15 13:29
あの程度の英語に学歴は関係ない。とにかく読め。

292 ::03/04/15 14:28
>>285 さん ありがとうございました
早速拝見させていただいたのですが
自分のほしい内容がありませんでした。
ほかに無いか再度探してみます

293 :デフォルトの名無しさん:03/04/15 19:47
>>292
マジレスするが、エディタは自作が最強。

294 :278:03/04/16 00:16
>>280
それっぽいのが見つかりました。
レスどうもです。

295 :286:03/04/16 01:01
>>290
× 人の名を語る
○ 人の名を騙る

296 :デフォルトの名無しさん:03/04/16 02:50
唐突なんですが、携帯電話とPCとを接続するケーブルってありますよね。
で、それを利用するアプリケーションは、そのケーブルのドライバを内部で使用しますよね。

....で、このドライバ仕様..というか携帯電話とのインタフェースって、公開されているモノ
なんでしょうか。

って、要するに「ケータイ・エディ」のようなソフトを作ってみたいんです。

ちなみにIOデータの"USB-CDMA"に付属のドライバ、UCDMAM.SYSでは、当然内部で
USBD.SYSをimportしてるんですが、これの仕様もどこか(例えばMSDN等)で公開
されてるんでしょうか。

297 :デフォルトの名無しさん:03/04/16 03:53
>>296
COMポートを使っている例なら……
ttp://osaka.cool.ne.jp/fillin/kmeback/index.html

298 :2chブラウザつくってるわけじゃないですが:03/04/16 07:51
静的分割ウィンドウの分割方向って変更でき……ないですよね。
ホットゾヌみたいに表示形式を変えたい場合はどうすればいいんでしょう?
  _______     _______
 |   |   B   |    |   |   |    |
 | A |______.|    | A. | B | C  |
 |   |       |    |   |   |    |
 |   |   C   |    |   |   |    |
   ̄ ̄ ̄ ̄ ̄ ̄ ̄      ̄ ̄ ̄ ̄ ̄ ̄ ̄
--
Windows2000SP3 VC6SP5

299 :298:03/04/16 07:59
ふと考えたのが
1. AとBをダイアログバーにしてしまう
2. CFormViewにしてA,B,Cをコントロールとして貼り付ける(VBみたいに)
……あんまりスマートじゃないな。
ヒントやキーワードがあったらお願いします。

300 :フルカラーアイコン:03/04/16 09:19
XP上のIEのように、ツールバーをフルカラーアイコンにしようと調べてるけど、
IEって、画面のプロパティの色設定が反映されないの。
ツールバーや、メニューなど。

同じようにプログラム側で固定の色にしようとやってみたら、
ツールバーとステータスバーは、SetBkColor()で出来るけど、
メニューやリストビュー、ツリービューのヘッダやスクロールバーなどの色を
固定化する方法が見つからないの。

どうすれば、IEのようにできるのでしょう?

フルカラーのツールバー用アイコンをアルファチャネルのデータを
反映させて透過色にできるのが本当は一番いいんだけど。
よろしくね。


301 :デフォルトの名無しさん:03/04/16 09:21
オーナードロー

302 :デフォルトの名無しさん:03/04/16 09:56
>>298=299
垂直分割と水平分割の切り替えはやったことが無いんだが、
分割したViewの中身を後から入れ替えたことはある。

Googleで「CSplitterWnd 切り替え」でヒットする情報なんかが参考になるかと。

303 :デフォルトの名無しさん:03/04/16 11:39
>>298
Janeのソース

304 :298:03/04/16 11:53
一眠りしたら頭がすっきりしますた

CCreateContext context;
context.m_pCurrentDoc = GetActiveDocument();
このcontectをCSplitterWnd::CreateView()で使えばよかったんですね。
CSplitterWnd::DestroyWindow()で一度壊してから、
改めて普通に分割ウィンドウを作るように組んだらできました。

>>302
キーワードありがとうです。
訪問済みリンク率は高かったんですが「切り替え」が思い浮かばなかった……

>>303
見る前に解決してしまいました。
レスありがとう。

305 ::03/04/16 19:27
>>282 codeproject内にて"Column Settings"で
検索すると見つかりましたのでここに報告します。
レスをいただいた方々にこちらにてお礼の返事とさせていただきます。
ありがとうございました。また何かありましたらよろしくお願いいたします

306 :デフォルトの名無しさん:03/04/16 20:14
>>268
1.逆に、タイトルバーの方を自分で描画すればいいだろ。
どうしてもタスクバーの方を変えたいなら、
クラス名が"Shell_TrayWnd"のウィンヅゥの中のタブコントロールを探せ。
タスクバーはタブコントロールだから、
うまいことメッセージを送れば表示を変えられる。

307 :デフォルトの名無しさん:03/04/16 21:36
>>268
クラシックスタイルまでは、SetWIndowText()でタスクバー、
WM_GETTEXTでキャプションだったのだが、
LUNAでこけてしまった。
私も知りたい。


308 :デフォルトの名無しさん:03/04/16 22:34
>>270
例外を無視する・・・・んじゃ駄目なんだろうなぁ・・・。

309 :山崎渉:03/04/17 15:17
(^^)

310 :デフォルトの名無しさん:03/04/17 16:16
Spy++って便利だねぇ。
まさかデスクトップが

311 :デフォルトの名無しさん:03/04/17 17:32
CHtmlViewからCMainFrameの関数を使おうと
(CMainFrame*)GetParentFrame()->xxx();
のようにしたのですが、
「'CMainFrame' 定義されていない識別子です」
と言われてしまいました。MainFrm.hをincludeしてみたら、
「'xxx'(CMainFrameの関数名):'CFrameWnd'のメンバではありません」
と怒られます。どうやったら解決しますでしょうか?

312 :デフォルトの名無しさん:03/04/17 17:36
((CMainFrame*)GetParentFrame())->xxx();
こうじゃねえか。

313 :デフォルトの名無しさん:03/04/17 17:57
うう、本当だ。ありがとうございます。

MainFrm.hはincludeの必要ありでいいのでしょうか? CmainFrameの定義が書いてあるので
とりあえずincludeしてみましたが、Google等で調べたサイトなんかでは特にそんなことは書か
れていなかったのですが…。

314 :デフォルトの名無しさん:03/04/17 18:00
問題ないと思う。俺はいつもそうしてる。
気になるようならCMainFrameに向かってSendMessage()すればいい。
AfxGetMainWnd()->SendMessage(・・・・);な感じ。

315 :313:03/04/17 18:06
ありがとうございます。安心しますた。
どうしてもダメだったらSendMessageしかないかなー、とは少し思っていました。

316 :デフォルトの名無しさん:03/04/17 18:36
SendMessageか
最近つかわないなぁ

今はPostMessageの方を使ってる
こっちの方がなんとなく安全そうだし


317 :デフォルトの名無しさん:03/04/17 18:42
その「なんとなく」ってのがコワイ

318 :デフォルトの名無しさん:03/04/17 21:17
変数の生存期間とか考えてちゃんと使い分けないとダメだよ(^_^;)

319 :デフォルトの名無しさん:03/04/17 22:25
>>316
もしかしてPostMessageでローカル変数のポインタとか渡してないか?
もしかしてPostMessageでローカル変数のポインタとか渡してないか?

320 :デフォルトの名無しさん:03/04/17 22:30
>>319
黒やぎさんたら読まずに食べた・・・

321 :デフォルトの名無しさん:03/04/17 22:39
安全って面ではSendMessageの方が安全っぽい感じがするけどなあ・・・・

322 :デフォルトの名無しさん:03/04/18 00:02
cs.style |= WS_CLIPCHILDREN;
とすると、
CRect rc;
GetClientRect(&rc);
InvalidateRect(rc, TRUE);
で再描画されなくなってしまうのですが、
何か他に描画を促す方法ありませんか?

323 :デフォルトの名無しさん:03/04/18 00:14
>>322
UpdateWindow()

324 :デフォルトの名無しさん:03/04/18 00:32
>>323
UpdateWindow駄目だったけれど、
RedrawWindowでいけました。
ありがとう。

325 :デフォルトの名無しさん:03/04/18 09:50
ダイアログベースアプリで
そこからCFrameWndとCViewを構築したんですが
ViewのON_UPDATE_COMMAND_UIが呼ばれてこないんですが
どんな問題が考えられるでしょうか?

ちなみにCFrameWndにはメニューはついてませんが
ツールバーはついてます。

326 :デフォルトの名無しさん:03/04/18 10:21
>ダイアログベースアプリで
>そこからCFrameWndとCViewを構築したんですが
  _, ._
( ゚ Д゚)  ・・・

327 :デフォルトの名無しさん:03/04/18 10:38
>>326
ダイアログベースアプリから呼び出すダイアログを
CFrameWndの派生クラスから作った感じです。
単純にCFrameWnd::Createを呼んでOnCreateClientでViewを作っただけなんですが
そのCFrameWnd::OnCreateで普通に作ったツールバーのEnable/Disable更新のため
CViewの派生クラスにON_UPDATE_COMMAND_UIを作ったんですが
これが呼ばれてこないんで??な状況です。
一応ツールバーのボタンをクリックすればViewにあるON_COMMANDは呼ばれてます。

328 :bloom:03/04/18 10:53
http://www2.leverage.jp/start/

329 :デフォルトの名無しさん:03/04/18 11:49
ドキュメント・ビューについて勉強することをおすすめする

330 :325:03/04/18 11:52
すんません解決しました。
親ダイアログでWM_KICKIDLEをひろって
そこで子のCFrameWndに
SendMessageToDescendants(WM_IDLEUPDATECMDUI・・・を
送ったらViewのON_UPDATE_COMMAND_UIが呼ばれるようになりました。

331 :デフォルトの名無しさん:03/04/18 19:21
CxxxAppのInitInstanceでProcessShellCommandの
app filename → 開く
という場合だけ処理させないようにしたいのですが、どうすれば
いいでしょうか?
app → 新規作成
はそのまま残しておきたいのですが。あるいは、ProcessShellCommandの
行を丸ごとコメントアウトして、コマンドライン引数がないときのみ新規作成
処理をさせる方法も考えたのですが、方法が解らずです…。
お願いします。

332 :デフォルトの名無しさん:03/04/19 10:35
>>331
ProcessShellCommand filenew
あたりでググってみれ

333 :デフォルトの名無しさん:03/04/20 01:35
ところでおまえらもうMFC7に移行してる?
VS.NET2003のMFCが8になるのかどうかは知らんが、
やはりWin95(そろそろWin98も斬り捨てるのかなぁ)では動かないだろうから、
今のところMFC6から先に行かず、むしろATL/WTLに興味を持ち始めた
今日この頃の俺なんだが。

334 :山崎渉:03/04/20 03:05
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

335 :山崎渉:03/04/20 03:42
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

336 :デフォルトの名無しさん:03/04/20 17:16
いいんじゃない?

337 :デフォルトの名無しさん:03/04/20 17:18
>やはりWin95(そろそろWin98も斬り捨てるのかなぁ)では動かないだろうから、
95はすでにMSがサポート打ち切ってんじゃん。
98とNT4.0は6月までだっけか。

338 :デフォルトの名無しさん:03/04/21 00:27
>>332
ハゲシク感謝です!

339 :デフォルトの名無しさん:03/04/21 00:32
>>337
MSがWin95のサポート打ち切ったのとMFC7がWin95を斬り捨てたのはなんか関係あんの?
その論理で行くと次のMFCはWin98/NTを斬り捨てることになるが。

340 :デフォルトの名無しさん:03/04/21 09:00
Win95のサポートが2001年3月まで、
MFC7(VisualStudio.NET)の発売が2002年3月末であることを考えると
MFC7は95をサポートしていない、と見ていいんじゃないかな……。

341 :新人:03/04/21 09:44
CFileDialog表示時
詳細項目表示状態画面にて
詳細項目の表示欄の項目をこちらの
希望どおりにプログラムにて
表示させる方法があれば
教えていただけませんか。
(例 CFailDialogを開く前に
  Aを選択すると
   名前 サイズ タイトル と表示
  Bを選択すると
   名前 サイズ 種類   と表示

ツールとOSは
VC++6 WIN2000です。


342 :デフォルトの名無しさん:03/04/21 11:44
>>341
自分でCFileDialogみたいなダイアログを自作する

343 :デフォルトの名無しさん:03/04/21 13:59
フォトショップのツールの様なウインドウをMDIにて作成中です。

はじめにモードレスダイアログで作成したのですが、これだとダイアログを
アクティブにしたときにメインフレームがアクティブ状態でなくなります。

次に、ダイアログバーのフローティングを利用して作成してみました。
この場合はどのウインドウもアクティブ状態になるのですが
複数のダイアログバーを作成してダイアログバー同士が重なった場合
下のダイアログバーをクリックしてもウインドウのが前面に
出てきてくれないのです。

何か良い方法があればご教授いただけたらと思います。



344 :デフォルトの名無しさん:03/04/21 14:14
>>343
ツールバーでしか試したこと無いからできるかわからないけど
まず、CDialogBar(これの派生クラス使ってるんだよな)の派生クラスを
別にこんな感じで作ってくれ。

ヘッダーファイル
class CMyDialogBar : public CDialogBar {
public:
 CMyDialogBar(){ ; }
 virtual ~CMyDialogBar(){ ; }
 afx_msg void OnLButtonDown(UINT nFlags, CPoint point) ;
 DECLARE_MESSAGE_MAP()
} ;

cppファイル
BEGIN_MESSAGE_MAP(CMyDialogBar, CDialogBar)
 ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()

void CMyDialogBar::OnLButtonDown(UINT nFlags, CPoint point)
{
 if(IsFloating()){
  CRectrect ;
  CWnd*pwnd1, *pwnd2 ;
  pwnd1 = GetParent() ;
  pwnd2 = pwnd1->GetParent() ;
  pwnd2->GetWindowRect(&rect) ;
  pwnd2->SetWindowPos(&wndTop, rect.left, rect.top
    , rect.Width(), rect.Height(), SWP_SHOWWINDOW) ;
 }
 CDialogBar::OnLButtonDown(nFlags, point);
}

345 :344:03/04/21 14:17
ぬけてた、class CMyDialogBar 内に
DECLARE_DYNCREATE(CMyDialogBar)
をついか、

346 :344:03/04/21 14:20
ああ、すまん345はいらなかった、無視してくれ。

347 :344:03/04/21 14:24
つぎはこれ
ヘッダーファイル
#include <afxpriv.h>
class CMyMiniDockFrameWnd : public CMiniDockFrameWnd {
 DECLARE_DYNCREATE(CMyMiniDockFrameWnd)
protected:
 CMyMiniDockFrameWnd(){ ; }
 virtual ~CMyMiniDockFrameWnd(){ ; }
 afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
 DECLARE_MESSAGE_MAP()
};

cppファイル
IMPLEMENT_DYNCREATE(CMyMiniDockFrameWnd, CMiniDockFrameWnd)
BEGIN_MESSAGE_MAP(CMyMiniDockFrameWnd, CMiniDockFrameWnd)
 ON_WM_NCLBUTTONDOWN()
END_MESSAGE_MAP()

void CMyMiniDockFrameWnd::OnNcLButtonDown(UINT nHitTest, CPoint point){
 if (nHitTest == HTCAPTION){
  CRectrect ;
  GetWindowRect(&rect) ;
  SetWindowPos(&wndTop, rect.left, rect.top, rect.Width(), rect.Height()
   , SWP_SHOWWINDOW) ;
 }else if (nHitTest >= HTSIZEFIRST && nHitTest <= HTSIZELAST){
  CRectrect ;
  GetWindowRect(&rect) ;
  SetWindowPos(&wndTop, rect.left, rect.top, rect.Width(), rect.Height()
    , SWP_SHOWWINDOW) ;
 }
 CMiniDockFrameWnd::OnNcLButtonDown(nHitTest, point);
}

348 :344:03/04/21 14:30
で、自分が作ってたダイアログバーの派生もとのクラスを
CMyDialogBarに変更して、CMainFrame::OnCreate()内の
EnableDocking()を呼び出している後ぐらいに
m_pFloatingFrameClass = RUNTIME_CLASS(CMyMiniDockFrameWnd) ;
を付け足して終わり
試したことないから報告よろしく

349 :344:03/04/21 14:36
ちなみに、やっていることは単にクリックされたら一番前に来るように
してるだけ。
ツールバーの時にはツールバー自体のウインドウとその枠の部分のウインドウ
になってたのでCMyDialogBarとCMyMiniDockFrameWndの二つが必要なはず

350 :343:03/04/21 15:00
>>344さん出来ましたどうもありがとう!

返事が早くて恐縮です。



351 :344:03/04/21 15:36
>>350
問題なしのようでなにより。
ちなみにツールバーの場合は(もうわかってると思うけど)
class CMyDialogBar : public CDialogBar {
のところをCToolBarにして、同様にすればOk
今回の例では右クリックは実装していないのでお好みで、

ダイアログバーでも使えることがわかったのでこちらからもサンクス

352 :デフォルトの名無しさん:03/04/21 19:35
DrawFrameControl で

DrawFrameControl(rc, DFC_BUTTON, DFCS_BUTTONPUSH);

とかやって、ボタンっぽいのを書いているんですが
これの表示色を変える方法はないですか?

SetBkColorとかじゃ変わらないのですが?

353 :デフォルトの名無しさん:03/04/21 20:07
SetTextColorは違うのか?


354 :デフォルトの名無しさん:03/04/21 20:17
>>352
ムリでしょ。

355 :デフォルトの名無しさん:03/04/21 20:47
MDIで複数の子ウィンドウを表示させている時、特定のウィンドウだけをwndTopMostみたいに
他の子ウィンドウに対して常に前面に表示させるという事は出来ますか?
ちなみにその子ウィンドウに対し、SetWindowPosでwndTopMostを試して見ましたが駄目でした。
よろしくお願いします。

356 :デフォルトの名無しさん:03/04/21 23:28
CPropertySheetを使って設定のプロパティーシートを作ってみたのですが、
どうしてもクラスの外(C〜View)からコンストラクタのみでCPropertyPage内の関数を呼び出したいのですが、
何かよい方法をご存じないでしょうか?

表示しないようにして関数を使いたいのです・・

やっぱりCreateとかを呼び出さないと無理なんでしょうか?


357 :デフォルトの名無しさん:03/04/21 23:52
そのC〜ViewをShowWindow(...)で表示しないで
プロパティウィンドウを普通に表示すればいいと思うが・・・


358 :デフォルトの名無しさん:03/04/21 23:59
おっとちょっと間違えたかな

>>コンストラクタのみでCPropertyPage内の関数を呼び出したいのですが
??? シートのコンストラクタからページの関数を呼び出すということか?
普通にできると思うが


359 :デフォルトの名無しさん:03/04/22 00:05
>>357
レスありがとうございます。書き方が悪かったです。スミマセン。
もともとViewは表示してあって、プロパティーシートの方を表示したくないのです。
CPropertySheet sheet("設定");
sheet.m_Page1.関数();
これだとエラーが出てしまいます。

360 :デフォルトの名無しさん:03/04/22 09:58
>>359
最近の厨房様は「エラーが出ます」と書けば回答者がエラーを推測して答えてくれるとお考えらしい。

361 :352:03/04/22 11:34
>>354
やっぱ、無理っすか。サンクス。
自前で描画すりゃいいのか。

362 :356:03/04/22 13:30
スミマセン自己解決できました。イベントハンドラの関数を呼び出していたのがいけなかったらしいです。


363 :356:03/04/22 13:37
やっぱりダメでした。GetDlgItemを呼び出すと
Debug Assertion Failed!
File: Winocc.cpp
Line: 94
というエラーが出てしまいます。

364 :デフォルトの名無しさん:03/04/22 14:06
VS.NET2003出たね。ダウンロードだけど。

365 :デフォルトの名無しさん:03/04/22 14:40
>>363
ウインドウハンドルを使用する関数などはDoModal()やCreate()の後でなければ
hwndが無効な値なので使用できない。GetDlgItem()もhwndを使用するので無理。
これはダイアログのときも同様。
MFCではダイアログ データ エクスチェンジ(DDX)でコントロールに変数に
int, CStringなどの値を設定しているときはその変数へのアクセスはDoModal()等
しなくても普通にできるが、コントロールクラス(CListBox等)を設定した場合は
DoModal()等の後でなければならない。GetDlgItem()等も同様。
これらのコントロールクラスにアクセスするタイミングは普通、OnInitDialog()の
中であるので、この関数をオーバーライドしてCListBox等の初期化を行う。
プロパティーシートの場合はシート・ページ別々にあるのが、普通はページのほう
をオーバーライドする。

366 :356:03/04/22 15:34
>>365
ありがとうございます。別の方法を考えてみます。


367 :デフォルトの名無しさん:03/04/23 01:15
フレームにビューを使わず自作のコントロール(CXXXCtrlを派生したもの)
を直接張るにはどうすればいいですか?

368 :名無し@沢村:03/04/23 03:06
>>367
Create()

369 :デフォルトの名無しさん:03/04/23 12:55
>>367
・ダイアログベースで作る
・ドキュメント/ビューを使わない

370 :デフォルトの名無しさん:03/04/24 00:48
>>369
CViewにも子ウィンドウは貼り付けられますが?

371 :デフォルトの名無しさん:03/04/24 00:54
コントロールから独自のViewを作れるよ。

372 :デフォルトの名無しさん:03/04/24 04:13
>>371
大まかで良いからやり方を教えてください。または参考になる文書でもいいです。
CCtrlView絡みだとは思っているのですが、何回かやった時には出来ませんでした。

373 :デフォルトの名無しさん:03/04/24 04:15
>>372
CEditViewとかCListViewのソースを見ればよろしい。

374 :デフォルトの名無しさん:03/04/24 04:17
>>372
「MFCによるWindowsプログラミング」という本のP657に載ってる。
WEBでもCodeGuruやCodeProjectあたりにありそうだけど確認してない。

375 :372:03/04/24 04:41
>>373-374
ありがとうございます。ちょっと頑張ってみます。

376 :デフォルトの名無しさん:03/04/24 09:04
>>370
ビューを使わず、って書いてあったからさ……

377 :新人:03/04/24 17:29
>>341 です。
できればCFileDialogを拡張して
動作可能な状態にしたいのですが・・・
CodeGuruやCodeProjectでも見つかりませんでした。
どなたか回答していただけませんでしょうか
よろしくお願いいたします。

378 :デフォルトの名無しさん:03/04/24 21:08
リソーススクリプト(*.rc)のアイコン定義部分を
#define APP1
・・・
#ifdef APP1
IDR_MAINFRAME ICON DISCARDABLE "res\\app1.ico"
#else
IDR_MAINFRAME ICON DISCARDABLE "res\\app2.ico"
#endif

みたいにしてマクロの切り替えでアイコンを切り替えるようにしてみたのですが、
rcファイルのセーブを行うと、

IDR_MAINFRAME ICON DISCARDABLE "res\\app1.ico"

みたいに現在有効な行以外が全て消されてしまいます。
何かいい方法は無いでしょうか?

379 :デフォルトの名無しさん:03/04/24 22:10
>「MFCによるWindowsプログラミング」という本のP657に載ってる。
今でも買えるところ教えてください。
増刷してくれんかな・・・

380 :デフォルトの名無しさん:03/04/24 22:26
>>378

app.rc2 とかに書いてインクルードすべし。
っていうか別に手で書かなくても IDE で出来るでしょ。。
なんだっけ、リソース(アイコン)を右クリックしてコピーの挿入とかそんなので。

381 :378:03/04/24 22:40
>>380
IDEが勝手に「#ifdef APP1」とかの記述を消してしまうんです。
#includeも試したのですが、結果は同じでした。
(#includeも消されます)
コンパイルオプションによってアプリのアイコンを変えるのが
目的なので、rcファイル以外の方法があれば・・・。

382 :デフォルトの名無しさん:03/04/24 22:48
>>379
こっちが貼り付ける方法で
http://www.codeguru.com/doc_view/custom_view.shtml

こっちが独自Viewを作る方法かな
http://www.codeguru.com/doc_view/Control2View.shtml

CodeGuruやCodeProject探せって言われてるだろうに・・・

383 :デフォルトの名無しさん:03/04/24 23:02
MFCの場合、コールバック関数(WndProcとか)はどこに記述されているのですか?

デスクトップ上のウインドウを列挙したくてヘルプを見ると、
EnumWindows関数でウインドウハンドルをコールバック関数であるEnumWindowProcに
送り、その中で処理をしろと書かれているのですが、EnumWindowProcがどこに記述されて
いるのか分りません。
EnumWindowProcを適当に追加してみると、
「(?EnumWindowsProc@@YGHPAUHWND__@@J@Z) はすでに test1.obj で定義されています」
というエラーがでてしまします。VC++6.0です。

384 :デフォルトの名無しさん:03/04/24 23:07
>>383
その手の質問(単一のAPI関数の使い方のような質問)は、
まずGoogle行った方が確実な情報が見つかりますよ。

385 :デフォルトの名無しさん:03/04/24 23:08
>>382
いえ、私は以前の人とは別で、
あの本を探しているだけの者でして・・・

386 :デフォルトの名無しさん:03/04/24 23:09
そういうことにしたいのですね

387 :デフォルトの名無しさん:03/04/24 23:11
>>381

VisualStudio 6.x だと、アイコンリソースを右クリックして「コピーの挿入」、
出てきたダイアログの「条件」のとこにdefine 名(ReleaseとかDebugとか)を
書けばできますよ。.NET ではどうやるのかシランけど。


388 :デフォルトの名無しさん:03/04/24 23:23
>>384
レスありがとうございます。質問前にgoogleでいろいろ調べていたのですが・・。
でも、見つかりました。ので、一応かいときます。

MFC でコールバック関数を使う
http://plaza2.mbn.or.jp/~yoshio2/vcmemo16-1.html

389 :378:03/04/24 23:26
>>387
できました!!!。
#if defined(APSTUDIO_INVOKED)
という記述で変更禁止をしているみたいです。

380さん、387さん、大変お世話になりました。

390 :デフォルトの名無しさん:03/04/28 10:21
MFCを使ったドトネトは流行ってますか?

391 :動画直リン:03/04/28 10:26
http://homepage.mac.com/hitomi18/

392 :デフォルトの名無しさん:03/04/29 12:56
すいません。(またですが)
ドッキングダイアログ上のリストボックス・ツリーボックスのクリックイベント
の取得と初期化と選択している項目の変更ってどうすればよいでしょうか?



393 :デフォルトの名無しさん:03/04/29 13:13
>>392
用語をもっと正確かつ具体的に!
ドッキングダイアログって?
ツリーボックスって?

394 :デフォルトの名無しさん:03/04/29 15:22
>>392
ネタ質なら他所でやれYO!

395 :デフォルトの名無しさん:03/04/30 17:23
サイズ変更可能なドッキングバーを作ろうとて
http://www.datamekanix.com/
を参考に作成していますが、
ドキュメント化されていないクラスの解説等をしているページや書籍を
知っていれば教えてください。
MFCのソース解読するのそろそろ疲れてきた。

396 :392:03/04/30 19:13
すまそ。
ツリービューとドッキングバーです。

397 :デフォルトの名無しさん:03/04/30 22:21
知ってる人教えてください
VC++をインストールしたら特定のWebを開くとランタイムエラーと表示されます
どうやったら消えるか分からないので
とりあえずインストールしたVC++をアンインストールしました
しかしまだランタイムエラーと出ます
これを表示させなくする方法知ってるひといませんか?

398 :デフォルトの名無しさん:03/04/30 22:45
>>397
VCはだいぶ前の商品だから古いDLLが上書きされちゃったんでしょうね。
WindowsのSPを当てなおしてみるのとかどうですか?
それで動けば、またVCをインストしてその上からさらにSPを当てる。
まぁボクはその状況になってないので、正確な答えじゃないかもしれませんが。
でも、なんでMFC限定のこのスレに?(  ̄ー ̄)

399 :デフォルトの名無しさん:03/04/30 22:49
>>395
日本語の書籍で説明してるのはMFCインターナルぐらいかな。。。
http://www.amazon.co.jp/exec/obidos/ASIN/4795296952/ref%3Dsr%5Faps%5Fb%5F/250-7262064-9913843

400 :デフォルトの名無しさん:03/05/01 00:48
リサイズ可能ドッキングバーってCodeGuruあたりにサンプルなかったっけ

401 :デフォルトの名無しさん:03/05/01 09:28
>>392
CTreeCtrlとCDialogBar?
ここMFCスレなんだから、クラス名で書いた方がレスつきやすいよ。

ttp://www.google.com/search?num=50&hl=ja&inlang=ja&ie=Shift_JIS&q=CDialogBar+%83%81%83b%83Z%81%5B%83W&lr=lang_ja
でどう?

402 :デフォルトの名無しさん:03/05/01 09:31
>>395
ここは見た?
ttp://www.codeguru.com/docking/index.shtml

403 :デフォルトの名無しさん:03/05/01 12:45
SetWindowRgnについて質問があるのですが、
この関数を使ってウインドウのリージョンを変更する場合は、
ダイアログベースで作成するのが基本と思っていいでしょうか。

ダイアログベースで作成したCTestDlg::OnInitDlg(){ ・・・に記述したら
正常にリージョンが変更反映されましたが、
SDIやMDIで作成したCTestView::OnInitialUpdate(){ ・・・ に記述したら
通常のウインドウ枠が表示され、その中にリージョンも作成されるというなんか
ヘンな動作となってしまったのです。SDIやMDIだとCMainFrameやCChildFrameクラスが
あるからムリなのでしょうか?それとも私のコードの記述の仕方がまずかったのでしょうか?

CRgn* m_windowRegion;
void CTestView::OnInitialUpdate()
{
CView::OnInitialUpdate();
// TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください
m_windowRegion = new CRgn;
m_windowRegion->CreateEllipticRgn(0, 0, 200, 200);
SetWindowRgn(*m_windowRegion, TRUE);
SetWindowPos(&wndTop, 0, 0, 200, 200, SWP_NOMOVE);
}

404 :デフォルトの名無しさん:03/05/01 13:54
>>403
ViewにRegionくっつけても
Viewの親にCFrameWndがいるからおかしな事になるんでないの?

やるなら、CTestFrameWnd::OnCreateあたりでためしてみたら?

405 :デフォルトの名無しさん:03/05/01 15:53
OnInitDialogとOnIntialUpdateは動作的に別物と考えた方がいい。

406 :デフォルトの名無しさん:03/05/01 23:00
LoadBitmap関数を使ってCBitmapオブジェクトにBMPファイルをロードしたいのですが
MSDNを見ると
BOOL LoadBitmap( LPCTSTR lpszResourceName );
BOOL LoadBitmap( UINT nIDResource );
と、2つあります。リソースIDを使用してLoadBitmapする方法は上手くいきました。
が、私はファイル名を引数としてLoadBitmapしたいのですが上手くいきません。
「引数 lpszResourceName 
 ビットマップ リソース名を表す NULL で終わる文字列へのポインタ。」
と書いてあるので、文字列リテラルを渡せばいいと思うのですが、
何が間違っているのでしょうか?

CBitmap bmp;
BOOL bl;
// bl = bmp.LoadBitmap(IDB_BITMAP1); ←これだと上手くいく
bl = bmp.LoadBitmap("test.bmp"); ←これだと0=FALSEが帰ってきてしまう。

407 :デフォルトの名無しさん:03/05/01 23:08
>>404-405

レスありがとうございます。
言われた通り、CMainFrame::OnCreate以下に>>403と全く同じコードで
希望のSDI/MDIができました!!!ヽ(´ー`)ノ

408 :デフォルトの名無しさん:03/05/01 23:16
>>406
LoadBitmapはあくまでもリソースからロードする関数なので、
ファイルから直接ロードしたい場合はLoadImageで。

409 :デフォルトの名無しさん:03/05/01 23:32
>>408

レスありがとうございます。
納得しました!!!ヽ(´ー`)ノ

410 :デフォルトの名無しさん:03/05/02 14:45
MFCでフォーム作ると、1つの大きなrcファイルになるのでしょうか。
フォームを色んなシステムで使いまわししたいとき不便だと思うのですが、
どうなんでしょう。

411 :デフォルトの名無しさん:03/05/02 17:07
プロパティページのエディットボックスコントロールに
あらかじめ値を入れておくにはどこに記述すればいいんでしょうか?
PreCreateWindowは通らないみたいだし
PreInitDialogの中でSetWindowTextをやっても
「Debug Assertion Failed!」になってしまいます。
おしえてください。おねがいします。

412 :動画直リン:03/05/02 17:13
http://homepage.mac.com/hitomi18/

413 :デフォルトの名無しさん:03/05/02 17:16
>>411
そのAssertion は ASSERT(IsWindow(m_hWnd)) みたいなのでは?
だとしたら、その意味をよく考えることですな。

414 :デフォルトの名無しさん:03/05/02 17:35
OnInitDialog

415 :デフォルトの名無しさん:03/05/02 17:35
>>411
OnInitDialog()でやれ、つーか値ならDDX使え

416 :411:03/05/02 18:21
>>413-415
ありがとうございました。
できるようになりました。

>>415
コントロールのメンバ変数が
CStringじゃなくてCEditでもできるんですか?

417 :デフォルトの名無しさん:03/05/02 19:02
>>416
CEditの他にCString変数も作ればええやん

418 :デフォルトの名無しさん:03/05/02 19:53
DDXやら CString はコードが肥大化するから、大して必要も無いならやめとけ

419 :デフォルトの名無しさん:03/05/02 22:33
なんでやねん

420 :デフォルトの名無しさん:03/05/06 15:45
モードレスダイアログにリストビューを貼って、LVS_EX_INFOTIPスタイルを追加したのですが、
ツールチップがダイアログの後ろに表示されているようです。
ちゃんと前面に表示させるにはどうすればよいのでしょうか?

421 :420:03/05/07 03:59
プロパティシートでも同様の問題が起こるんだけど、みんなどうしてるのかな・・・

422 : :03/05/07 11:13
>>418

EXEサイズじゃなくて?

423 :デフォルトの名無しさん:03/05/07 22:10
>>422
オブジェクト「コード」のことだろ。

424 :デフォルトの名無しさん:03/05/07 22:46
マジで>>420はどうすれば・・・
モードレスダイアログまたはプロパティシート状のリストビューコントロールで
m_list.SetExtendedStyle(LVS_EX_INFOTIP);
とするとツールチップが後ろに表示されてしまう・・・

425 :デフォルトの名無しさん:03/05/08 00:47
>>422 EXEサイズ

426 :デフォルトの名無しさん:03/05/08 10:46
MFCのプロジェクトで、
throw std::runtime_error
しても、文字列も出ないしプログラムが終了してしまいまつ。
キャッチを自分で書かなきゃならないでつか?
それともMFC用のエラークラスがあるのでしょうか?

例えば、BCBとかだと、キャッチのコードが生成されてて、
throw Exception("")すると、
エラー系のメッセージボックスが出てプログラムが終了しませんけど。

427 :426:03/05/08 11:24
「MFCのWinMainがライブラリに閉じられてるがために、
アプリケーション全体のキャッチを記述出来ない」なんてことは無いですよね?

もしそうだったら、やっぱ、さっさとBCBにコンバートした方がヨサゲ。

428 :426:03/05/08 11:44
CWinApp::InitInstance()のオーバーライドのソースに
#include <iostream>を入れると、

>error LNK2005: "void __cdecl operator delete(void *)" はすでに
>libcpmtd.lib(delop.obj) で定義されています
>fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました
>link.exe の実行エラー

というエラーがでまつ。
MSDNでは、マルチスレッド対応してないライブラリが混ざってると。
MFCって本当にC++でつか?

429 :デフォルトの名無しさん:03/05/08 12:15
>>428
リンクするライブラリ・使用するランタイムライブラリの指定を確認するか、BCBにカエレ

430 :デフォルトの名無しさん:03/05/08 12:23
マルチポストするほど必死なのになぜ煽る?

431 :デフォルトの名無しさん:03/05/08 12:24
>>426
強制終了させたいならabort()でも呼び出しとけば?

432 :デフォルトの名無しさん:03/05/08 12:44
>>426
MSDNで「処理されない C++ 例外」とか。
>現在の例外に対して該当するハンドラ (または省略記号の catch ハンドラ) が
>見つからないと、定義済みの terminate 関数が呼び出されます。
>terminate のデフォルト機能は、abort を呼び出すことです。

MFCにもエラークラス(CxxxException)はある。
MFCでTHROW使ったときに関しても
>CATCH ブロックを用意していないときは、制御は Microsoft Foundation Class
>ライブラリのモジュールに移り、エラー メッセージを出力してプログラムを終了
>します。


433 :426:03/05/08 12:59
強制終了になるのを回避したくて、キャッチしたのですが、
>>428 に書いたようなコンパイルエラーです。

434 :デフォルトの名無しさん:03/05/08 14:04
>>433 /MD(/MDd) or /MT(/MTd) かな?

435 :426:03/05/08 14:14
コンパイルは通るようになりました。有難うございまつ。

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
return 0;
}
これがBCBでのコードです。これだとプログラムは終了しません。
が、MFCで、
BOOL CWinApp::InitInstance()
{
try {
int nResponse = dlg.DoModal();
} catch (const std::exception& e) {
MessageBox(0, e.what(), "catchされてないエラー", MB_OK);
}
}
だと、プログラム自体終わってしまいます。
もっと良いキャッチの場所は無いでしょうか?

436 :デフォルトの名無しさん:03/05/08 14:28
>>435 それはSEH使わんといかんのかな?詳しい人きぼんぬ。

437 :426:03/05/08 14:40
>SEH
はつみみです。

で、ググったら、
http://www.microsoft.com/japan/developer/library/vccore/_core_exception_handling.3a_.overview.htm
>MFC プログラムでは、C++ 例外を使います。構造化例外処理 (SEH) は使用しないでください。
>SEH は、非 MFC プログラム内でだけ使用します。C++ 例外処理と SEH を混用しないでください。
とありました。
例外処理って言語どころかコンパイラやクラスライブラリレベル依存で困りますね。

438 :デフォルトの名無しさん:03/05/08 20:33
>>424
まずソースを載せてみてはどうかね。

439 :デフォルトの名無しさん:03/05/09 00:30
たったいま例外処理スレの方に書いたとこ。

>>435-436
ダイアログベースかー。
そのダイアログクラスのWindowProcをオーバーライドしてそこで
try-catchすればいける、かも?
でもオレならSDI とフォームビューで書き換えるな。

SEHは放っておいてワトソン博士に任せたい。
自分でコールスタック解析したりしたくないから。

440 :439:03/05/09 00:38
ところで>>435のVCのコードって、エラーメッセージボックスも出ないで
終わっちゃうの?
メインウィンドウが破棄されるとMFCがPostQuitMessageを
コールするので、メッセージボックスが出せなくなるってやつかな?

441 :435:03/05/09 10:47
>>440
エラーメッセージボックスは出まつ。

が、キャッチを入れずにdlg.DoModal();の後にメッセージボックスコールを入れも、仰るとおりメッセージボックスは出ません。

442 :435:03/05/09 10:48
>でもオレならSDI とフォームビューで書き換えるな。

すごい興味深い内容だけど、ソースコードで見たいな...

443 :デフォルトの名無しさん:03/05/09 15:08
>>435
Wincore.cpp にある AfxCallWndProc() 関数内の CATCH_ALL に引っかかってる?

444 :デフォルトの名無しさん:03/05/09 20:39
超初心者でもうしわけないのですが、
Editコントロールに複数行をコードから表示したい場合どうすればいいのですか?
リソースエディタのスタイルでは複数行と改行を許可にチェックは入れています。

CString str1 = "aaaa\nbbbb" とすると
エディットボックスには、
aaaa
bbbb
と表示されてしまいます

aaaa
bbbb
と表示したいのです・・・。

445 :デフォルトの名無しさん:03/05/09 20:47
>aaaa
>bbbb
>と表示されてしまいます

>aaaa
>bbbb
>と表示したいのです・・・。

何が違うのこれ。

446 :デフォルトの名無しさん:03/05/09 20:53
>>445
ん?分かんない?環境が違うのかな・・・俺んとこじゃあ(ry

447 :デフォルトの名無しさん:03/05/09 21:06
  _, ._
( ゚ Д゚) ・・・

448 :デフォルトの名無しさん:03/05/09 21:37
よくわからんけど\r\nで解決。

俺んとこでも同じに見えるよ・・・

449 :444:03/05/09 22:33
>>445-448
レスありがとうございます。
あうっΣ(´Д`lll) カキコで変換されてしまってたようです。
aaaa・bbbb みたいな形で1行になってしまっていたのでした。

>>448さんの言う通り
CString str1 = "aaaa\r\nbbbb"としたら2行に表示されました。
ありがとうございました。

450 :デフォルトの名無しさん:03/05/09 23:59
すいませんが、もう1つ質問があります。
FormView上に貼り付けたEditコントロールのフォントを変更したいのですが、
どうにもよくわからないのです。ヒントでいいので教えてください。

451 :デフォルトの名無しさん:03/05/10 00:00
SetFont

452 :450:03/05/10 00:43
>>451
上手くいきました。ありがとうございました。

(このくらい調べろと言われそうですが、、調べてSetFontとか
CreateFontIndirectとかわかってたのですが、どうにも上手く
いかなくて、もしやエディットコントロールは無理なのでは?Σ(´Д`lll)
といろいろ悩んで・・・レスが出たときにやっぱりできるのだと
もう1度試行錯誤して・・・なのでご了承を!ヽ(`Д´)ノ)

453 :435:03/05/10 01:20
>>442
ごめん。ソース書くのはめんどくさい。
あらすじだけで勘弁して。別に普通にこうするんだけど。

MFC AppWizardでSDIアプリを作って、
ビューの基底クラスをCFormViewにおきかえて、
そのビューのダイアログリソースは旧ダイアログアプリで
使ってたダイアログをコピってきて貼り付ける。
あとはごりごりとロジックを移植していく。

で、例外処理はInitInstance, ExitInstanceと
各ウィンドウのWindowProcの中をtry-catchして処理。

454 :デフォルトの名無しさん:03/05/10 21:23
CTreeCtrl で LVITEM と関連付いていないものがあるとします。
それで、ItemTextなどを指定してLIVTEM を取得する方法はありませんか?

455 :デフォルトの名無しさん:03/05/11 06:36
CTreeCtrlなのにLVITEM?
CListCtrlみたいなFindItemとかがなければ
ループで一つ一つ探すしかないんじゃない?

456 :デフォルトの名無しさん:03/05/12 00:26
すいません。HTREEITEMです。

457 :420:03/05/12 02:59
かなり遅れましたが原因がわかりました。全然違いところにありました。
メインのダイアログをSetWindowPosでTopmostに表示していたため、
リストビューにLVS_EX_INFOTIPスタイルを設定しても、ツールヒントが
メインダイアログの後ろに表示されていました。
これは仕様なんでしょうね・・・

458 :デフォルトの名無しさん:03/05/12 13:57
テキストをマウスでクリックしたときのイベントを
ClassWizzardで作成しましたが、起動されません。
どうしたら良いのでしょうか?

459 :458:03/05/12 14:01
具体的には、CTEXTのクリックイベントを作りたいです。

460 :デフォルトの名無しさん:03/05/12 14:43
>>459
CStaticとかCEditではないの?

461 :459:03/05/12 14:59
ごめんなさい、ぐぐったらわかりました。
http://www.athomejp.com/goldfish/mfc/static/onclick.html

でも、このへんBCBに激しく負けてないことない?
BCBなら、
Text1.OnClickとかOnDblClickがプロパティになってて、
GUIのダブルクリックでイベントハンドラ開くか、または外から関数設定出来るし、
その関数にsenderっていう、Text1の実態が入ってて同じ処理ならイベントハンドラ使いまわしだし。

462 :デフォルトの名無しさん:03/05/12 15:13
なんだ、それが言いたかっただけか

463 :デフォルトの名無しさん:03/05/12 16:14
>>461
ダイアログだったらリソースエディターで通(略
某島社員も大変だな…

464 :デフォルトの名無しさん:03/05/12 16:24
>>463
ちゃんと嫁。
ダイアログエディタでダブルクリックしただけじゃ、イベントハンドラできるけど、起動されん。
M$厨ったら...

465 :デフォルトの名無しさん:03/05/12 16:50
BCBのTLabelのイベント調べたら、
>OnClick, OnContextPopup, OnDblClick, OnDragDrop, OnDragOver
>OnEndDrag, OnMouseDown, OnMouseMove, OnMouseUp, OnStartDrag
これだけあるし、派生でイベント足せるし。

それに対して、CTEXTは、BN_CLICKEDだけってどういうことよ?

466 :デフォルトの名無しさん:03/05/12 16:52
>>465
そういうことだよ。

467 :デフォルトの名無しさん:03/05/12 17:57
今更な話題をあえてもってくる理由とは

468 :デフォルトの名無しさん:03/05/12 18:19
VC初心者のBCB信者も大変だな。
とりあえず、CTEXTってなんだよ…

469 :デフォルトの名無しさん:03/05/12 18:35
CTEXT age

470 :デフォルトの名無しさん:03/05/12 18:38
リソーススクリプトのCTEXTのことかな。
スタティックコントロールくらいは言って欲しかったね。

471 :デフォルトの名無しさん:03/05/12 20:24
MFC プロジェクト作りますた。
何も変更せずビルドしますた。
そのままデバッグ実行しますた。
フリーズしますた。


   ど う す れ ば い い ん だ



472 :デフォルトの名無しさん:03/05/12 20:25
>>471
そんな日は寝るに限る。

473 :471:03/05/12 20:29
ちょっとふざけた書き方でしたが、
ホントにどうすればいいのかサッパリで...。
何が原因なんでしょうか?

474 :デフォルトの名無しさん:03/05/12 20:43
>>471
っで環境は?



















と煽って欲しいんですね。

475 :デフォルトの名無しさん:03/05/12 20:49
>471
VS.NETproでそれなったことある。
漏れの場合、IISのインストールが正しく出来てなかった。
マニュアル見てIISだけ入れなおしたら、デバッグ通るようになった。

476 :デフォルトの名無しさん:03/05/12 20:54
MFC7で追加されたクラスで何か便利だと思うものある?
よく言われるのはDHTML系のクラスとメッセージマクロだけど、
他にもこんなのがこんなふうに使える!とかあったらきぼん。

477 :471:03/05/12 21:04
>>474
経験したことのある人なら環境も分かるかと思いまして。
ちなみに、環境は Windows XP Pro. + Visual Studio .NET Academic です。

>>475
その線でチャレンジしてみたいと思います。

478 :デフォルトの名無しさん:03/05/12 21:38
>経験したことのある人なら環境も分かるかと思いまして。

真の教えて君としてはなかなかの筋。

479 :デフォルトの名無しさん:03/05/12 21:39
CListCtrl(リストビュー)のことでお聞きしたいのですが、
エクスプローラなどでは、
選択→濃い青、未選択→白、選択(フォーカスなし)→灰 ですが、
CListCtrlを貼り付けて適当にアイテム追加して実行すると
選択→濃い青、未選択→白、選択(フォーカスなし)→白 となってしまいます。
これでは、未選択と選択(フォーカスなし)の区別がつかないのですが、
これは、フォーカスを自分でチェックしてその時に灰色で描画するように
ぐりぐりとコードを書かなければならないのでしょうか?


480 :デフォルトの名無しさん:03/05/12 22:27
>>478
真の教えて君は必要なことを書かずについ余計なこと書いちゃうからね。

481 :471:03/05/12 22:29
>>475
IIS ではありませんが、
一部修復インストールすることで解決しました。
ありがとうございました。

482 :デフォルトの名無しさん:03/05/12 23:24
>>499
試してないんで違うかもしれんが、
LVS_SHOWSELALWAYSを追加したらどう?


483 :471:03/05/12 23:26
と思ったら、何かまた新規プロジェクトを作ったら
同様の症状が現れましたね。
とりあえず何かすれば症状が治まるようです。
まぁ、訳分かりませんが、とりあえずそれで我慢しときます。

484 :479:03/05/13 02:13
>>482
ビンゴです!エクスプローラと同様の表示になりました。
CListCtrl(リストビュー)のプロパティに「常に選択を表示」と
いうのがありました。o( 〃゜O゜〃)ゝアイタタタ・・・
ありがとうございました。

485 :デフォルトの名無しさん:03/05/13 03:52
DDX/DDVってなんじゃ
これってpublicな変数とちゃうんか
わけわかめ酒

486 :デフォルトの名無しさん:03/05/13 04:16
>>485 (;´Д`)

487 :デフォルトの名無しさん:03/05/13 16:14
MFC Programmer's SourceBookの日本語訳のページが見つからないのですが、
どこにあるのか教えて下さい

488 : :03/05/14 17:37
CReBar使った時の各コントロールバーの位置を
記憶しておく方法ってなんか無いですか?

489 :デフォルトの名無しさん:03/05/14 18:01
>>488
GetReBarCtrl()とGetBandInfo()かな?

490 : :03/05/14 18:47
REBARINFO のどこにその手の情報が入っているのですか?>>489

491 :デフォルトの名無しさん:03/05/14 19:31
レバーコントロール。
語源:取っ手の形をしているから。


492 :デフォルトの名無しさん:03/05/15 05:31
レバー = lever

493 :デフォルトの名無しさん:03/05/15 11:02
>>490
REBARINFOじゃなくてREBARBANDINFO

UINT cxMinChild
UINT cyMinChild
UINT cx
UINT wID
UINT cyChild
UINT cyMaxChild
UINT cxIdeal
UINT cxHeade
あたりでどうにかならないか?

>>491
猫ではそう呼んでるね

494 :デフォルトの名無しさん:03/05/15 23:46
ReBarの様なフラットなビットマップボタンをダイアログ上で
利用するにはどうすれば良いのでしょうか?
ご教授お願いいたします。


495 :デフォルトの名無しさん:03/05/15 23:49
>>494
ツールバーでいいんでないの

496 :デフォルトの名無しさん:03/05/15 23:57
マルチスレッド@MFCの質問っす

MSDNには「CWinThreadオブジェクトを使わずにスレッドを作成したアプリではそのスレッドからMFCオブジェクトにアクセスできない」とあります。
これはつまり、たとえばスレッド関数内のローカル変数のCStringオブジェクトを作ったり使ったりしちゃまずいということですか?
AfxBegiんThreadでつくったスレドも上記の「CWinThreadオブジェクトを使わないで作成したスレッド」に該当しますか?



497 :デフォルトの名無しさん:03/05/16 00:12
>>496
AfxBeginThreadはCWinThread オブジェクトへのポインタを返す

498 :494:03/05/16 00:29
自由に配置したいんです。


499 :デフォルトの名無しさん:03/05/16 00:32
>>498
そういうボタンを自分で作るか、MFC7にあるCDHtmlDialgみたいな名前のクラス使ってはどうか。

500 :デフォルトの名無しさん:03/05/16 00:33
>>498
CReBarCtrlをCreate()できない?
ダイアログ上でもできそうだけど

501 :デフォルトの名無しさん:03/05/16 00:33
>>494
CBitMapButtonかCButtonをオーナードローかけるか...

502 :デフォルトの名無しさん:03/05/16 00:35
>500
そもそもReBarってコンテナだからボタンとは関係ないのでは?

503 :500:03/05/16 00:37
>>502
そうなんだけど、元投稿>>494でReBarって書いてたから。


504 :デフォルトの名無しさん:03/05/16 00:39
なるへそ

505 :499:03/05/16 00:40
Dialgってなんだ。CDHtmlDialogね。

506 :デフォルトの名無しさん:03/05/18 01:08
自前で、スクロールバーのような機能を持つボタンを作成しています。
1.CMyButton::OnLButtonDown()の中でGetCaptureし、
2.CMyButton::OnMouseMove()の中でマウスを追跡&関連付けられたエディットの数値更新
3.CMyButton::OnLButtonUp()でReleaseCapture
という感じになっているんですが、2のエディットの数値を更新する所で、エディット
が再描画されず困っています。
なんででしょうか。エディットにWM_PAINT自体行ってないように見えます。

507 :デフォルトの名無しさん:03/05/18 01:23
今からMFC初めてもいいですか?

508 :デフォルトの名無しさん:03/05/18 01:29
>>506
エディットってCEdit?
よくわからんが、とりあえず途中にTRACEマクロとか入れたりして、
どこまでがちゃんと動いてるかを確認しよう。

>>507
いいんじゃない?がんがれ〜

509 :506:03/05/18 01:48
>>508
>エディットってCEdit?
そうです、CEditです。

2.の中で、SetCursorPosを使って、マウスが動いた分を無かった事にしているのですが、
どうもこれが問題のようです。わけがわかりません。

510 :デフォルトの名無しさん:03/05/18 02:49
GetCaptureじゃなくSetCaptureってのはどうでもいいのか・

511 :デフォルトの名無しさん:03/05/18 05:22
switch(result) {
case IDOK:
CString fullPath = dialog.GetPathName();
try {
CFile aFile( char fullPath );
}
catch(CFileException *e) {
e->Delete();
}
case IDCANCEL:
break;

っていうプログラムで

fullPath' の初期化が 'case' ラベルによって行われませんでした。

こんなエラーがでてくるのですが…
どうすればいいですか?(゚д゚;)

512 :372:03/05/18 05:29
>>511
CString fullPath;
switch(result) {
case IDOK:
fullPath = dialog.GetPathName();
以下略

513 :デフォルトの名無しさん:03/05/18 06:06
>>512
どもありがとうございました〜〜〜〜〜!
解決しますた!

514 :デフォルトの名無しさん:03/05/18 10:09
>>506
Invalidate() を調べてみるよろし

515 :508:03/05/18 12:34
>>509
あー、3Dモデリングソフトによくあるアレね。
<ボタン押してマウスドラッグすると、関連したCEditの値が変わる

OnLButtonDown,OnMouseMove,OnLButtonUpの
ソース上げてもらえれば原因わかるかもよ。

516 :デフォルトの名無しさん:03/05/18 14:54
>>513
switch case文の中で変数の宣言をするとエラーになります。
場合によって変数が宣言されないということがあるためです。

517 :デフォルトの名無しさん:03/05/18 15:21
ドラッグしてからドロップするまでマウスカーソルが変わるというSpy++のような
動作を作りたいのですが、上手くいきません。
void CTestDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
::SetCursor(::LoadCursor(NULL, IDC_SIZEALL)); // とりあえず4方向矢印カーソル(IDC_SIZEALL)でテスト

CDialog::OnLButtonDown(nFlags, point);
}

上記のように書いたのですが、ドラッグして少しでもマウスを移動させると
もとのカーソル形状に戻ってしまいます。
どうすればいいのでしょうか?

518 :デフォルトの名無しさん:03/05/18 15:58
SetCursorのあとでSetCaptureしてみるとか。

519 :517:03/05/18 17:42
>>518
ありがとうございました。上手くいきましたヽ(´ー`)ノ

520 :デフォルトの名無しさん:03/05/18 18:20
エディットボックスに書いた文字列を
振り当てたCEditの関数m_editを使ってdatというCStringに書きこむとき、

m_edit.SetWindowText(dat);

なのですが、読みこみはどうしたらいいのでしょうか??


521 :デフォルトの名無しさん:03/05/18 19:25
GetWindowText

522 :デフォルトの名無しさん:03/05/18 21:56
>>511
すでに解決した質問にレスつけるのもなんだけど……


switch(result) {
case IDOK:
{ //ここから
CString fullPath = dialog.GetPathName();
try {
CFile aFile( char fullPath );
}
catch(CFileException *e) {
e->Delete();
}
} //ここまで
case IDCANCEL:
break;

スコープ使うという手も。

523 :デフォルトの名無しさん:03/05/18 23:26
MFCのプログラムを見るとよくCWndから派生しながらCeate時には
AfxRegisterWndClass()で独自のウィンドウクラスを登録している
のを見かけますがこれってどんな意味があるのですか?

524 :デフォルトの名無しさん:03/05/20 10:18
エディットボックス(edit1)に、00 1A CA 8D
の様に、ファイルのバイナリを表示させ、
もう一つのエディットボックス(edit2)に
8DCA1A00 hex
の十進数になおした整数を表示させたいのですが、

HANDLE afile;
BYTE buff[4];
CString buf;
CString path;
DWORD dw;
m_edit3.GetWindowText(path); ←これはパス所得用エディットボックスです。
afile = CreateFile(path,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(afile == INVALID_HANDLE_VALUE){
MessageBox("ファイルがオープンできません", "ファイルのオープンの失敗", MB_OK);
}
SetFilePointer(afile, 0, NULL, FILE_BEGIN);
memset(buff, 0, sizeof(buff));
ReadFile(afile, &buff, sizeof(buff),&dw,NULL);

ここの処理がわかりません…

m_edit1.SetWindowText(なにか);
m_edit2.SetWindowText(なにか);

どうしたらいいでしょうか

525 :デフォルトの名無しさん:03/05/20 11:20
>>524 = http://pc2.2ch.net/test/read.cgi/tech/1052931903/136
マルチかよ
氏ね

526 : :03/05/20 13:03
DrawText で矩形に文字書くときに
左右にマージンとる方法ないですか?

文字列に空白足すとかはしないで

527 :デフォルトの名無しさん:03/05/20 13:34
>>526
センタリングして表示すれば?

528 : :03/05/20 13:42
>>527
センタリングはダメなんです・・・
数字なので、元々右寄せしてて・・・


529 :デフォルトの名無しさん:03/05/20 17:01
>>526
マージン分だけ矩形を狭めればいいんじゃないの?

530 : :03/05/20 17:27
>>529
DrawTextの前に、引数として渡すRECTに
InflateRect(-4, 0)したらできました。ありがとう。

531 :デフォルトの名無しさん:03/05/20 19:54
>>525
すみません汗
いろんなスレの先輩達にさまざまな方法
を教えてもらいたかったんです…涙

532 :デフォルトの名無しさん:03/05/21 00:02
>>531
もう二度と来るな
回線切って首吊って氏ね

533 :デフォルトの名無しさん:03/05/21 00:17
>回線切って首吊って

いまどき古いな・・・

534 :デフォルトの名無しさん:03/05/21 01:49
>>533
そんなことをわざわざageて書くおまえに惚れた

535 :デフォルトの名無しさん:03/05/21 07:16
>>531
むしろ、生きるな!


536 :デフォルトの名無しさん:03/05/21 19:23
ウインドウメッセージが
全てのアプリケーションに送られる前に捕まえて、
加工するようなことは可能でしょうか。
(自アプリと関係ないウインドウメッセージを補足・加工)

 もし、可能でしたら、その実現方法(プロジェクトの種類など)も
教えていただけるとうれしいです。よろしくお願いします。

537 :デフォルトの名無しさん:03/05/21 20:11
>>536
漏れは良く知らんが、DLLでフックじゃないかい?

538 :デフォルトの名無しさん:03/05/21 21:04
そうだね。フックだね。

539 :デフォルトの名無しさん:03/05/21 21:23
実は漏れもフックだと思った

540 :デフォルトの名無しさん:03/05/21 21:24
逆にフックじゃないかな?

541 :デフォルトの名無しさん:03/05/21 21:24
フックってなんだろう?



どうでもいいがピーターパンを思い出した


542 :デフォルトの名無しさん:03/05/21 21:26
漏れはノックだと思う。

543 :デフォルトの名無しさん:03/05/21 21:50
甘いな。サップだ。

544 :デフォルトの名無しさん:03/05/21 22:25
モックンかもしれない。

545 :537:03/05/21 22:29
             /ヽ       /ヽ
            / ヽ      / ヽ
  ______ /U ヽ___/  ヽ
  | ____ /   U    :::::::::::U:\
  | |       // ___   \  ::::::::::::::|
  | |       |  |   |     U :::::::::::::|
  | |      .|U |   |      ::::::U::::|  ・・・・・
  | |       | ├―-┤ U.....:::::::::::::::::::/
  | |____ ヽ     .....:::::::::::::::::::::::<
  └___/ ̄ ̄      :::::::::::::::::::::::::|
  |\    |           :::::::::::::::::::::::|
  \ \  \___      ::::::

546 :デフォルトの名無しさん:03/05/21 22:39
SDIのプログラムを作っているのですがダイアログベースのOnOKに相当する
オーバーライドできる関数はどれなんでしょうか。終了するときにダイアログを出したいんです。


547 :デフォルトの名無しさん:03/05/21 22:44
ノックはセクハラだから違うと思うけど、逆に当たってるかも。

548 :デフォルトの名無しさん:03/05/21 22:45
>>546
OnCloseでどうか。

549 :デフォルトの名無しさん:03/05/21 23:00
パンチは引退したから違うな。

550 :デフォルトの名無しさん:03/05/21 23:54
正解はファック

551 :546:03/05/22 00:39
>>548
ちゃんとできました。ありがとうございました。

552 :デフォルトの名無しさん:03/05/22 12:54
ダイアログベースのアプリで
ShowWindow(SW_HIDE)したときのような
ウィンドウを表示しない状態で起動させるには
どうすればよいのでしょうか

553 :デフォルトの名無しさん:03/05/22 13:06
>>552
マルチさんようこそ

554 :デフォルトの名無しさん:03/05/22 13:41
>>552
非表示にして起動って、どういうUIなの?タスクトレイアプリか何か?
それによって答えが違う。

555 :552:03/05/22 14:55
>>553
コンヌツワ

>>554
そのとおりです
現状はボタンクリックでHIDE->アイコン表示としています。
でOnInitDialogでHIDEしたりしても無駄みたいなのでどうしたものかと・・
そもそもトレイに入れるときHIDEでいいのかという疑問もあったり・・


556 :デフォルトの名無しさん:03/05/22 15:18
あー、前に試したけどDialogアプリケーションって非表示には出来なかった
気がする。
俺は非表示のウィンドウをメインウィンドウにして、必要なときにダイアログ
を表示するように組んだ記憶がある。

557 :デフォルトの名無しさん:03/05/22 15:33
ウソ言え。簡単にできたはず。

558 :554:03/05/22 15:41
>>555
だったら >556の「非表示のウィンドウをメインウィンドウにして、必要なときに
ダイアログ」がよいでしょう。

>そもそもトレイに入れるときHIDEでいいのか
省リソースという点から言うとあまり良い方法ではないと思う。

>>556
>前に試したけどDialogアプリケーションって非表示には出来なかった気がする。
CWinApp::InitInstance()でDoModal()せず、モードレスにすれば実現可能。

559 :552:03/05/22 17:20
>>558
どもです
やってみます。

ところでモードレスにした場合すぐにアプリケーションが終わってしまいますが
使いどころは有りですか?

560 :デフォルトの名無しさん:03/05/22 18:03
>>559
// ダイアログが閉じられてからアプリケーションのメッセージ ポンプを開始するよりは、
// アプリケーションを終了するために FALSE を返してください。
return TRUE;

561 :デフォルトの名無しさん:03/05/22 18:17
CListCtrlにCImageListのアイコンを設定したのですが、InsertItemの時でなく、そのあとに
アイコンを変更する方法はないでしょうか。

562 :デフォルトの名無しさん:03/05/22 18:56
>>560
なるほど〜

InitInstance()で
dlg = new CTestDlg; dlg->Create( ... ); m_pMainWnd = dlg; return TRUE;
デストラクタで
dlg = (CTestDlg*)m_pMainWnd; dlg->DestroyWindow(); delete dlg;
でいいんでしょうか?
(´-`).。oO(OK押したらウィンドウはどこへ行くんだろう・・・)

563 :デフォルトの名無しさん:03/05/22 19:29
ユーザー定義メッセージを使ってプロセス間でやり取りしたい場合、
受信側はCWnd::WindowProc()をオーバーライドしてそこで処理すればいいですか?
処理をしたらTRUEを返し、関係ないメッセージだった場合は基底クラスのWindowProcに渡す
でOKですか?

564 :デフォルトの名無しさん:03/05/22 19:50
>>563
んなことしないでON_MESSAGE使えばいいのでわ?

565 :デフォルトの名無しさん:03/05/22 20:03
>>562
消滅は違う。こんな感じ↓で ~CTestApp は何もしない。

void CTestDlg::OnCancel() { DestroyWindow(); }
void CTestDlg::OnOK() { DestroyWindow(); }
void CTestDlg::PostNcDestroy() { delete this; }

566 :562:03/05/22 21:05
>>565
なるほど・・ありがとうございます!

567 :デフォルトの名無しさん:03/05/23 16:26
MDIアプリのCXXXDoc::Serializeでファイルを読み込み、
1.読み込みに成功したらMDI子ウィンドウのサイズを固定する
2.読み込みに失敗したらMDI子ウィンドウを破棄する
としたいのです。
(可能であれば、CXXXDoc::Serialize内での)MDI子ウィンドウのサイズ固定方法と破棄方法を教えて下さい。


568 :デフォルトの名無しさん:03/05/23 17:41
>>567
ModifyStyle/ModifyStyleEx使えばスタイルの変更ができる。
破棄する場合はWM_CLOSEとかを送ればいいんでないかい?

569 :567:03/05/23 18:45
>>567
ウィンドウハンドルを得るにはどうすればいいのですか?


570 :569:03/05/23 18:46
×>>567
>>568
です。

571 :デフォルトの名無しさん:03/05/23 19:50
ドッキングウィンドウ(ダイアログバー)を使っているのですが、
その中のTreeViewからCMainFrame にイベントを受けたいのですが、
afx_msg void OnDblClickTree();
と、
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
//}}AFX_MSG_MAP
ON_CBN_DBLCLK(IDC_TREE, OnDblClickTree)
END_MESSAGE_MAP()
で、
void CMainFrame::OnDblClickTree()
{
}
では受け取れません。
どう対処すべきですか?

572 :サンプルです:03/05/23 19:55
女女女女女女女女女女女女女★2日間無料★
http://endou.kir.jp/betu/linkvp2/linkvp.html

573 :デフォルトの名無しさん:03/05/23 21:26
>>571
ダイアログバーにメッセージをルーティングしてないんじゃ?

574 :デフォルトの名無しさん:03/05/23 22:13
>>569
最近の厨房様は検索という言葉をご存知ないらしい
ttp://www.google.com/search?q=MFC+MDI+%E5%AD%90%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6

575 :デフォルトの名無しさん:03/05/23 23:06
>>574
調べてここまで行き着いてダウンしたんっす。

576 :デフォルトの名無しさん:03/05/24 00:20
スレッドの排他制御をしたいんだがCRITICAL_SECTIONをグローバルにしちゃ
ダメですか?

577 :デフォルトの名無しさん:03/05/24 00:43
クリティカルセクションってグローバルで使うもんでないの?

578 :デフォルトの名無しさん:03/05/24 00:45
>>577
んなことないだろ。
保護したいもんと同じスコープで使えばいいと思う。

579 :名無し@沢村:03/05/24 02:24
>>575
CDocument::GetFirsutViewPosition()
CDocument::GetNextView()

580 :567:03/05/24 15:47
>>579
>>575ではありませんが、ありがとうございます。
CXXXDoc内からCXXXViewにアクセスできました。
(既に、CXXXViewのOnInitialUpdateでGetDocumentして、CXXXDocに設定したフラグを得るように実装してしまいましたが)

581 :580:03/05/24 15:51
×CXXXDoc内からCXXXViewにアクセスできました。
○CXXXDoc内からCViewにアクセスできました。
です。

582 :デフォルトの名無しさん:03/05/24 19:42
メインスレッドとワーカスレッドという本質的に異なる2つのクラス
の両方の間を取り持ち、インスタンスは一つしかないクリティカルセクション
どちらか一方のクラスのメンバにするべきかグローバルにすべきか。。
みんなならどうする?
すれ違いスマソ〜


583 :デフォルトの名無しさん:03/05/24 20:23
>>582
すげぇ。理解できなかった。

584 :デフォルトの名無しさん:03/05/24 20:29
簡単にいうと
クリティカルセクションのオブジェクトをどこに持たすか。
です。

グローバルに持たすかCDialogのメンバにして
そのCSを利用するスレッドにはCDialogへのポインタを渡して利用するとか。
どちらがより優れていますか?



585 :吉岡美穂:03/05/24 20:32
>>584
好みの問題

586 :デフォルトの名無しさん:03/05/24 20:43
もしグローバルにCRITICAL_SECTIONのオブジェクトとか
イベント通知用のHANDLEを宣言しても
初期化処理とかはCDialogの初期化時にいっしょにしてしまうことになるから
CDialogのメンバにすべきかな。でもポインタ渡すのめんどいしな。
なやムー

587 :デフォルトの名無しさん:03/05/24 20:59
CStringで10*10の配列に文字列を格納したいときにとどのように配列を作ればいいのでしょうか
int x = 10, y = 10;
CString* pTest = new CString[x][y];
このようにすると、文字列ではなく1文字だけしか格納できなくて困っています。

588 :デフォルトの名無しさん:03/05/24 21:12
>>587
それコンパイル通るの?

589 :587:03/05/24 21:14
通りませんでした。

590 :デフォルトの名無しさん:03/05/24 21:24
CStringArrayをnewしてはどうか?

591 :587:03/05/24 21:26
>>590
ありがとうございます。そうしてみます。

592 :吉岡美穂:03/05/24 22:09
>>587
std::vector<std::vector<CString> >

593 :デフォルトの名無しさん:03/05/25 00:17
>>587

CArray<CString,CString&>

594 :デフォルトの名無しさん:03/05/25 10:06
エディットボックスの変数がint型の時、変数に何を代入すれば
実行した時、表示を空白にできますか?
NULL入れたら「0」って表示されてしまいました。
CString型だったら「""」を変数に代入したら空白が表示されました。

595 :デフォルトの名無しさん:03/05/25 10:49
>>594
空白表示したいんなら、int 型じゃまずいんじゃないの ?
int a; printf("%d", a);
さて、a に何を代入したら空白が表示されるでしょうか ? と聞いてるのと同じだと思うが。
素直に CString 型にしといて、普通は文字列に直して表図するようにすればいいと思う。

エディットボックス側でなんか強制的に空白を表示するような機能があるなら別だけど...。

596 :デフォルトの名無しさん:03/05/25 11:54
>>595
エディットボックスにint型を割り当てても、変換してWindowTextを表示しているだけだ。
空白にしたければエディットボックス自体を操作すればよい。

597 :デフォルトの名無しさん:03/05/25 12:10
>>594
int型、CString型なんてやめて、CEdit型で操作しれ。

598 :デフォルトの名無しさん:03/05/25 12:45
>>579
返事なってへんのとちゃう?


599 :デフォルトの名無しさん:03/05/25 13:26
if( !m_iEdit )
 SetDlgItemText( IDC_EDIT, "");

600 :デフォルトの名無しさん:03/05/25 13:30
>>582
シングルトンにして両方に持たせる

601 :デフォルトの名無しさん:03/05/25 13:37
別のプロジェクトで作成される DLL があって、その中のリソースと
して定義されてるダイアログを、自分のプロジェクト内からクラス
ウィザードで操作するのって、なんかいい方法ある?

602 :デフォルトの名無しさん:03/05/25 13:55
アプリケーションを終了させる為に
::PostQuitMessage(0);
とすると、メモリーリークが出てしまうんです。(涙
どうしたら良いんでしょう? 助けてください。

603 :吉岡美穂:03/05/25 16:51
>>602
その質問で答えが出てくると思う?
その質問で答えが出てくると思う?

604 :デフォルトの名無しさん:03/05/25 17:08
>>602
おもしろい質問だなあー(w.さすがの吉岡美穂でもむりだろ.
メモリーリークの意味から考えていったらいいと思います.

605 :デフォルトの名無しさん:03/05/25 21:01
>>599
やってみたけど、「0」って表示された。もう少し説明をお願いします。

606 :デフォルトの名無しさん:03/05/25 21:06
ES_NUMBERスタイルがついてるんぢゃない?

607 :デフォルトの名無しさん:03/05/25 23:41
IDがMFC4…

608 :デフォルトの名無しさん:03/05/26 01:31
>>602
それはメモリリークしてるんだよ。
お前の頭含めて。

609 :デフォルトの名無しさん:03/05/26 03:03
>>608
最近漏れの頭のなかのスタック領域の破壊が
進んで来ているようなんだが…

610 :デフォルトの名無しさん:03/05/26 04:55
>>607
IDなど(ry

611 :デフォルトの名無しさん:03/05/26 08:48
>>602
つかさ、命令を全角で書くなんざプログラマの風下にもおけないと思うわけよ

612 :デフォルトの名無しさん:03/05/26 11:34
どなたか教えて下さい、質問です。
C#では画面(DOS画面)のクリアの時にエスケープシーケンスで
printf("\033[2J");
とやれば画面のクリアができますが、C++ではどのようにコーディングすればいいのですか?
ちなみにOSはWindows2000を使用しています。

613 :デフォルトの名無しさん:03/05/26 11:44
>>611

「命令」って...

ベーシッカーですか?、あんた

614 :デフォルトの名無しさん:03/05/26 12:56
アセンブりゃーだろ

615 :デフォルトの名無しさん:03/05/26 13:23
普通に閉じてもリークしないなら、送るウィンドウが違うかかな

616 :デフォルトの名無しさん:03/05/26 14:47
http://www.geocities.co.jp/AnimalPark-Lucky/2482/tsuri.gif
つまり、なんだ。

617 :デフォルトの名無しさん:03/05/26 16:36
ツールバーを使いたくてMicrosoft Toolbarコンポーネントをダイアログ上に配置しました
ボタンの追加やクリックイベントの検出までは出来たのですが、
どのボタンが押されたのかが判定出来ません…
皆様はどのようにしてるのでしょうか?

618 :デフォルトの名無しさん:03/05/26 16:39
>>612
いつC#にprintfなんか出来たんだ?

619 :デフォルトの名無しさん:03/05/26 17:06
すんません、ちょっと質問させて下さい。
VC++ 6.0(MFC) & Win2000 SP3 & IE6 SP1です。

通常、アプリケーションを起動すると
タスクバーにそのアプリケーションのスイッチ(ボタン)が追加されますが、
これを右クリックした時に出るコントロールボックス?のメニューに
自分で作った項目を追加、あるいは既存メニューの削除をしたいのですが、
どのクラスのメンバを追ったらいいのかいまいち検討がつきません。

どなたかご教授頂ければと思います。

620 :デフォルトの名無しさん:03/05/26 17:35
>>619
GetSystemMenu()

621 :デフォルトの名無しさん:03/05/26 17:50
>>620さん
ありがとうございます。なんとかやってみます。

622 :デフォルトの名無しさん:03/05/26 23:08
質問です。
VBで既に出来上がっているプログラムをVCに書き直す作業が必要です。
手っ取り早くやるにはどうしたらいいですか?
VCで書き直した後にいろいろと拡張したいのですが。

623 :デフォルトの名無しさん:03/05/26 23:33
>>622
一から作り直す。

624 :デフォルトの名無しさん:03/05/27 00:33
VC6.0のIDEのツールバーですが、これはMFCのCToolBarを使って
ないみたいですがなんででしょう。
(VCはVC(MFC)で作られているんじゃ...)

625 :617:03/05/27 01:07
624の質問に便乗して、ついでに回答よろ。
VCのツールバーは全部クラスから作ってるんじゃ?

626 :デフォルトの名無しさん:03/05/27 01:07
>>624
Spy++で覗いて見れ。

627 :デフォルトの名無しさん:03/05/27 01:09
>>625
CodeGuruにある。URLは失念した。

628 :617:03/05/27 01:15
>>627
サンクスコ!

629 :デフォルトの名無しさん:03/05/27 08:20
>>624
VC使ったからと言ってMFCつかわにゃならん義務があるわけじゃねぇし。

630 :デフォルトの名無しさん:03/05/27 16:12
どなたかご指南願います・・

VC++6.0+MFCなんですが、
コンボボックスのリストのアイテムを選択した後
エディット部分に表示される瞬間が取得したいのですが・・

CBN_EDITCHANGE
CBN_EDITUPDATE
の2つは、リスト選択時にはまったく動きません。

CBN_SELCHANGE
の方は、まだエディット部分にテキストが表示される前なので
やはりダメです・・

何か良い方法はないでしょうか?

631 :デフォルトの名無しさん:03/05/27 16:20
【PC版】Ever17-the out of infinity【大失敗作】
http://www2.bbspink.com/test/read.cgi/erog/1053601941/


632 :デフォルトの名無しさん:03/05/27 16:31
よろしくおながいします。

実行したとき、ウィンドウも開かずフォーカスも移らずに
そっと内容を実行して終了する(例えばデータファイルを
開いてフィルタリングして終了する、など)、そんなプログラムを
VC++で作りたいのですが、ベストな方法は?

他のプログラムから呼び出して使いたいのですが、
フォーカスが移るとまずいのです。

633 :_:03/05/27 16:31
http://homepage.mac.com/hiroyuki43/hankaku/hankaku08.html

634 :デフォルトの名無しさん:03/05/27 16:31
◎よろしかったら見て下さい◎
http://endou.kir.jp/betu/linkvp2/linkvp.html

635 :デフォルトの名無しさん:03/05/27 16:34
CBN_CLOSEUPは?

636 :630:03/05/27 16:43
CBN_CLOSEUPもマズイです・・
これも、まだエデット部分に表示される前なので・・

637 :デフォルトの名無しさん:03/05/27 16:45
>>632
単にShowWindow()しなければいいだけかも

他のプログラムから実行するのであればコンソールアプリにして
呼び出すプログラムがCreateProcess()でコンソールを
作らないようにしてもいいけど

638 :630:03/05/27 16:49
も・もしかして不可能?・・(泣

639 :デフォルトの名無しさん:03/05/27 16:51
>>630 何がしたいのかな?

640 :デフォルトの名無しさん:03/05/27 16:57
>>630
>CBN_SELCHANGE
>の方は、まだエディット部分にテキストが表示される前なので
テキストを取得するのであれば、このときにGetLBText(), GetCurSel()

641 :630:03/05/27 16:58
>>639
コンボボックスのリスト選択時に、
選択された文字列が、エデット部分に表示されたますよね?
その表示された瞬間に、エデット部分の文字列を変更したんですよ・・
その為には、リストを選択されたあと、
エデット部分に表示される瞬間の取得が必要な訳でして、
その表示される瞬間が取得したいのですが、
630にも書いたとおり うまく取得できません・・

642 :630:03/05/27 17:02
>>640
ダメなんですよ、それも・・
CBN_SELCHANGEでイベントを受けとって
GetLBText()でテキストを取得して、テキストを変更したとしても
その時点では、リストで選択されたテキストが、エデット部分に表示されていないので
自分が変更した後に、再度変更されるんですよ・・(泣きじゃくり

643 :デフォルトの名無しさん:03/05/27 17:13
>>630
CBN_SELCHANGE受け取った後自分に自前のメッセージをPostしなおせ。

644 :エデット:03/05/27 17:19
>>630
いっそのことコンボボックスの上に別のエデットボックスを上書きして
そのエデットボックスに表示するようにしたら

645 :632:03/05/27 17:50
>>637
回答ありがとうございます。

え?DOS窓抜きで実行できるコンソールアプリが
作成できれば理想的なんですが、そんなの出来るんですか?
(^_^;;

呼び出し側は実行するファイル名を指定できるだけで、
中のソースは書き換えられないのですが…

646 :637:03/05/27 18:16
>呼び出し側は実行するファイル名を指定できるだけで、
>中のソースは書き換えられないのですが…
呼び出し側のCreateProcess()でコンソールを出ないようにする方法しか
しらない。
起動直後にFreeConsole()しても多分一瞬コンソールが表示されると思うし、
このへんのことはここよりもWin32Apiスレのほうがいいと思う。

647 :デフォルトの名無しさん:03/05/27 18:25
CString cs;
m_combo1.GetWindowText(cs);
という記述をOnButton関数内で行ない、デバックしてみるとcsに関して以下のような
CXX0017: Error: シンボル "cs" が見つかりません
というようなコメントがでて、コンボボックス内に表示している文字を読み取ることができませんでした。
何故なのでしょうか。だれか教えてください。


648 :630:03/05/27 18:31
レスどうもです。

>>643
でも、リストからエデット部分に表示される前では
意味が無いような気がするんですが・・
エデット部分に表示された直後にメッセージを取得する事は可能ですか?
具体的に教えて頂けるとありがたいのですが・・

>>644
たしかに、その方法だとイケそうなんですが、
コンボボックスにアクセスするコードが大量にありますので
すべて書き直すのはちょっと・・
出来れば、コンボボックス自体でやりたいんですよね・・

649 :デフォルトの名無しさん:03/05/27 18:38
>>647
そのコード自体は間違ってないとおもいますよ。
OnButton関数全体を書いた方がいいかも。

650 :デフォルトの名無しさん:03/05/27 18:38
>>648
>出来れば、コンボボックス自体でやりたいんですよね・・
...サブクラス化せいよ

651 :632:03/05/27 18:41
>>646
ありがとうございます。
そっちで聞いてみます。

652 :630:03/05/27 18:45
>>650
なるほど・・ サブクラス化ですか。
こういう方法があるのか・・
ちょっと調べてみます。どうも。

653 :デフォルトの名無しさん:03/05/27 18:48
>>648
SendとPostの違いはわかるよね。

654 :630:03/05/27 18:52
>>653
分かってなかったッス・・

サブクラス化にPostMessage、よい勉強になりました。
どうもです。

655 :デフォルトの名無しさん:03/05/28 09:33
AppWizard 使ってダイアログベースのアプリケーションを作成して、
App クラスの InitInstance() でやりたい事やって、FALSE で
抜ければいいんじゃん?
コマンドラインとGUIの両方から実行できるツールで、引数やらの
実行環境が正しい時のみ実行し、そうでない時はダイアログを
表示して…なんてやりたい時に、よくやる手だが。

A.exe が作成するプログラムだったら、こんな感じに

BOOL A::InitInstance()
{
   AfxEnableControlContainer();

   #ifdef _AFXDLL
      Enable3dControls();
   #else
      Enable3dControlsStatic();
   #endif

   { ←ここから
      // do whatever you want like if (2 == _argc) {
      // or CString csStrTmp(__argv[1]);
      …
      return FALSE;
   }←ここまで

   CWADlg dlg;
   m_pMainWnd = &dlg;

}

656 :デフォルトの名無しさん:03/05/28 09:36
↑632、637、646 の話ね。抜けてたけど。

657 :632:03/05/28 10:54
>>655
わざわざソースまで書いていただいて、ありがとうございます。
win32APIスレでも同じやり方を教えていただき、試してみた
ところ、上手く行きました。ありがとうございました。
勉強になりました。

658 :デフォルトの名無しさん:03/05/28 11:27
現在大学の課題をやってます。ワケわかりません。
おまいら、助けれ。

<例>
#include<stdio.h>
double beki(int m, int n);
void main()
{
int i;
for(i=2;i>=-2;i--){
printf("3^%d=%f\n",i,beki(3,i));
}
}
double beki(int m,int n)
{
int i;
double p=1.0;
if(n>=0){
for(i=1;i<=n;i++)
p=p*m;
return p;
}
else
for(i=1;i<=-n;i++)
p=p/m;
return p;
}

<課題>
beki(m,n)関数を用いて、数列an=(1+1/n)^nが自然対数e=2,71828に近づくことを調べよ。

ってかbekiって何よ。

659 :デフォルトの名無しさん:03/05/28 11:42
べき乗だろ。
それがなにかわからないならC以前の問題。

あと宿題の質問はこっちな
http://pc2.2ch.net/test/read.cgi/tech/1053963794/l50

660 :デフォルトの名無しさん:03/05/28 13:31
リストビューコントロールの表示をレポートにして、そのリスト内の
各アイテムをコンボボックスには出来まつか?

661 :デフォルトの名無しさん:03/05/28 13:45
>>660
オーナードロー

662 :デフォルトの名無しさん:03/05/28 13:58
山崎渉のせいですごいことになってんな。
とりあえずage

663 :デフォルトの名無しさん:03/05/28 20:23
質問です。
MSDNでは以下のようなことが記述されています
■マルチスレッド : プログラミングのヒント■
「非MFCのセカンダリスレッドからはMFCオブジェクトにアクセスできない」
ここで非MFCのセカンダリスレッドとは_beginthread()などのwin32apiで作成したスレッドとします
(ここで間違ってるかもしれませんが。。)

前述のことは以下のどれでしょう??
@非MFCのセカンダリスレッド内部ではいかなるMFCクラス、オブジェクトも利用できない
A非MFCのセカンダリスレッド内部では主スレッドで生成したいかなるMFCオブジェクトも利用できない
B非MFCのセカンダリスレッド内部ではハンドルラッピング系のMFCクラス、オブジェクトも利用できない
C非MFCのセカンダリスレッド内部では主スレッドで生成したハンドルラッピング系のMFCオブジェクトを利用できない
ここでハンドルラッピング系とはHWND→CWndみたいなハンドルをラッピングするクラスのことです。


664 :デフォルトの名無しさん:03/05/28 20:28
アクセス違反で会えなかったキミと、

久しぶりに対面できたから、

今日はSpy++記念日



665 :デフォルトの名無しさん:03/05/28 23:15
>663
(1)に一票。
AfxBeginThreadで起動したスレッドだとMFCに必要ななんやかんやを初期化してくれてる
んじゃなかったかな。
ハンドルラッピングっていうと単純に思えるけど、CWndなんてかなりいろいろやってるから
ちっとも単純なラッピングじゃない。
ま、使えるやつもあるかもしれないけど…。

666 :デフォルトの名無しさん:03/05/29 01:11
AfxMessageBoxの逆みたいに、ポンと文字列を尋ねるような関数ないすか

667 :名無し@沢村:03/05/29 01:17
>>666
gets()

668 :デフォルトの名無しさん:03/05/29 01:27
>>667
ダイアログでトリタイのです

669 :デフォルトの名無しさん:03/05/29 08:42
ダイアログ自作すりゃいいじゃん。
Editコンポーネント貼り付けるだけだし。

670 :デフォルトの名無しさん:03/05/29 19:04
>>665
レスありがとうございます。
自分はCかな〜(というか、Cならいいなー)と思ってるんですよ。(^^;)
実はCSringを非MFCセカンダリスレッドで使ってます。
stringに書き直すべきでしょうか?
みなさんならどうします??




671 :bloom:03/05/29 19:13
http://homepage.mac.com/ayaya16/

672 :デフォルトの名無しさん:03/05/29 19:14
ひとまず寝てから考える。

673 :デフォルトの名無しさん:03/05/30 01:19
ちょっと調べたら「終了時にリークする」とかあったけど。

この辺は CRTが使われている場合、CreateThreadでなく_beginthreadにしないと
リークする場合があるのと同じでないの?

ってか素直に AfxBeginThreadを...

674 :デフォルトの名無しさん:03/05/30 23:42
_beginthreadex使え
CreateThreadなんて使うな


675 :デフォルトの名無しさん:03/05/31 00:13
初心者板から追い出されました。

質問です。VC++6.0 MFCでアプリを作ってるんですけど、
クラス外からもアクセスできる外部変数は普通はどのように宣言しますか?
やっぱりcppの先頭でグローバル宣言しておいて、他のクラスでextern宣言して
使用するのが普通なのですか?

今、あるクラスのpublicでメンバ変数(char [255])を宣言しておいて、他のクラスからは

CXxxx* pApp = (CXxxx*)AfxGetApp();

として、pApp->メンバ変数にアクセスしてますが、アサートを起こします。
やり方が間違っているのでしょうか?


676 :デフォルトの名無しさん:03/05/31 00:15
それってグローバル宣言というより
単にCWinApp派生クラスのメンバでないの?

677 :デフォルトの名無しさん:03/05/31 00:21
>>676
そうです。
派生クラスのメンバをあらゆるクラスから操作したいのです。
やはり問題あるコーディングでしょうか?

678 :デフォルトの名無しさん:03/05/31 00:24
>>677
問題も何も。
アサートってどこでどんなアサート?

679 :デフォルトの名無しさん:03/05/31 00:28
>>675
>やっぱりcppの先頭でグローバル宣言しておいて、他のクラスでextern宣言して
>使用するのが普通なのですか?

あんまり良い事ではないみたいだけどそれで良いんじゃない?
漏れもそうしちゃってたりする(´ー`;)

680 :デフォルトの名無しさん:03/05/31 00:31
>>678
アサートを起こしたり起こさなかったり。
ダイアログを切り替えた場合にアサートとなるようです。
今ちょっと再現しないので、内容がちょっとわかりません。。
問題はなさそうですか?
オーババッファフローを起こしてるんかな〜。。

681 :デフォルトの名無しさん:03/05/31 00:36
>>678
でました。
File:appcore.cpp
Line:545

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

です。


682 :デフォルトの名無しさん:03/05/31 00:38
>>679
やっぱりそれで良いですか。。
皆さんそうしてますか?
周りにVC使いがいなくて相談できないんです。


683 :デフォルトの名無しさん:03/05/31 00:40
CWinAppの派生クラスのメンバにして他のクラスからはAfxGetAppでポインタをとって
つーのはやり方としてはあると思われ。漏れはいつもグローバルにしちまうけどね。
多分別の原因じゃ。。


684 :デフォルトの名無しさん:03/05/31 00:43
>>681
いまMFCのソースみてみるね。

685 :デフォルトの名無しさん:03/05/31 00:44
>>683
とりあえず、グローバルにして使ってみます。
その方が楽ちんですしね。
ども、ありがとうございました。


686 :デフォルトの名無しさん:03/05/31 00:45
>>684
あっ、時間差が。。
ちょっと待ちます。

687 :デフォルトの名無しさん:03/05/31 00:48
680の文脈から
 アサート ≒ ワーニング、エラー
みたいな意味でアサートという言葉を使用しているけど、
一般的に通じるの?

688 :デフォルトの名無しさん:03/05/31 00:55
ASSERTなんとかっていうチェックでエラーを起こしてるから
アサートという表現にしましたけど間違ってますか?
アサートって予期せぬエラーって感じですよね?



689 :681:03/05/31 00:57
>>686
VC6だよね。
#ifdef _DEBUG
void CWinApp::AssertValid() const
{
(略)
ASSERT(afxCurrentInstanceHandle == m_hInstance);←ココ
(略)
}

該当行は↑なんだけどよく分からん。力になれんなスマン

690 :デフォルトの名無しさん:03/05/31 00:57
ASSERT()だろ?
多分MFCの内部でハンドルとかを判定してそこでアサートが出たとかそんなんだろ?
別にエラーやわーにんぐをアサートという言い方はしないし、680も言ってないと思うが


691 :689=678:03/05/31 01:00
名前欄書き間違えた。>>678です。

692 :デフォルトの名無しさん:03/05/31 01:03
>>689
うーん。m_hInstanceが0にでもなってそうですね。
ちょっと調査します。
ども、ありがとうございました。


693 :デフォルトの名無しさん:03/05/31 01:29
構造体についての質問です。
public内に
 struct set{・・・・・・・};
struct set mySet;

と宣言すると構造体を宣言する前はきちんとダイアログが表示されるのですが、構造体を宣言すると例外処理が行なわれダイアログも表示されないまま終了されてしまいました。
どうすればよいのでしょうか?


694 :デフォルトの名無しさん:03/05/31 08:39
本当に宣言しただけ?
メモリ解放し忘れとかないよね?

695 :デフォルトの名無しさん:03/05/31 08:59
>>693
デバッグしろ。
メモリは位置がずれて、バグが顕在化したんじゃないの ?

696 :デフォルトの名無しさん:03/05/31 12:05
>>693
つぅかクラス内の構造体って合法なんでつか?

697 :デフォルトの名無しさん:03/05/31 12:17
>>696
合法だよ。

クラス宣言のネスト
クラスは、別のクラスのスコープ内でも宣言できます。
このようなクラスを "ネストされたクラス" と呼びます。
ネストされたクラスは、これを囲むクラスのスコープにあるとみなされ、
このスコープ内で利用できます。
ネストされたクラスを囲むクラスのスコープの外から、このネストされたクラスを参照するには、
完全な限定名を使います。

(MSDNより)

698 :デフォルトの名無しさん:03/05/31 12:19
>>697
昔仮に書いたスコープ違いの同名構造体がソースに残ってたりとかしてるんですかね?


699 :デフォルトの名無しさん:03/05/31 12:59
>>694
メモリ解放???
ソースの中でですか?それとも構造体自信のですか?

ホントに宣言しただけ・・・だと思います。
なんでなんでしょうね・・・

700 :デフォルトの名無しさん:03/05/31 13:43
>>699
マルチポストすんな
氏ね
二度と来るなカスが

701 :デフォルトの名無しさん:03/05/31 15:04
>>700
答えられないからってカッカするなよ プププ

702 :デフォルトの名無しさん:03/05/31 15:16
マルチポストが嫌われることぐらい常識だと思うが。

703 :デフォルトの名無しさん:03/05/31 16:58
厨房様に常識はない

↓次の人どうぞ

704 :デフォルトの名無しさん:03/05/31 17:10
宣言しただけでエラーが突然多発するようになった。
というタイプのバグはあります。
そういうバグはたいていメモリ関連です。
たとえば昔は構造体のメンバにアクセスするのに先頭アドレスから何バイト目とかいう形で
コーディングしたりする人も居ました。
この場合単純にメンバを追加しただけで(バイナリオフセットがずれるから
)エラーになるわけ。
そのほかにもメモリを壊してたけど程度がひどくないため表面化しなかったものが
コードが変化してメモリの使い方がかわってドカンとメモリを壊す→アプリ例外
とか。


705 :デフォルトの名無しさん:03/05/31 17:14
>>704
かわいそうに・・・

706 :デフォルトの名無しさん:03/05/31 17:48
VC6++の初心者です。
タブコントロールのやり方がよくわからないので調べてたら、

[プロジェクト]→[プロジェクトに追加]→[コンポーネント及びコントロール]→[プロパティーシート]
でそれっぽいのが出来るというのを見つけて、
それっぽいのが出来たんですが、

リソースにはタブの部分のダイアログがなくて、
プロパティーに標準でついてると思われる
「OK」「キャンセル」「適用」「ヘルプ」ボタン
ってのが削除ができません。

「適用」「ヘルプ」とかは削除したいのですが、どうすればよいですか?

707 :デフォルトの名無しさん:03/05/31 19:06
>>706
propSheet.m_psh.dwFlags |= PSH_NOAPPLYNOW;
propSheet.DoModal();

で適用は消えるが、ヘルプが消せない(;´Д`)
propSheet.m_psh.dwFlags &= ~PSH_HASHELP ;
もダメ。
自分で作ってる他のアプリでは、ヘルプボタンは何もしなくても最初から
消えてるんだが...おかしいな。

708 :707:03/05/31 19:15
ttp://www.athomejp.com/goldfish/mfc/dialog/nonhelp.html
PropertyPageの HASHELPフラグも除去する必要があるのか。

CPropertyPage::CommonConstruct()
{
 ・・・
 if (AfxHelpEnabled())
  m_psp.dwFlags |= PSP_HASHELP;
}
が敗因だった。質問に答える側が勉強になってる罠

709 :706:03/05/31 19:20
>>707
ありがとうございました!

早速やってみます!

710 :デフォルトの名無しさん:03/06/01 08:23
リストコントロールのメッセージハンドラ(カラムを押したときの)を呼び出したいのですが
うまくいきません。下は試しに書いてみたのですが、
LPNMLISTVIEW pNMLV;
LRESULT pResult;
NMHDR pNMHDR = reinterpret_cast<NMHDR>(pNMLV);// '型キャスト' : 'LPNMLISTVIEW' から 'tagNMHDR' に変換できません。
SendMessage(LVN_COLUMNCLICK, (WPARAM)pNMHDR, (LPARAM)pResult);// '型キャスト' : 'NMHDR' から 'WPARAM' に変換できません。
どうしたらいいでしょうか。

711 :デフォルトの名無しさん:03/06/01 09:59
>>710
こうじゃないか?
NMHDR *pNMHDR = (NMHDR*)pNMLV;

LP〜っていう型はポインタ型だから、NMHDRではなくNMHDR*にキャストすべし。
下のエラーは上のエラーを直せば消える。と思う。

712 :デフォルトの名無しさん:03/06/01 09:59
NMHDR pNMHDR
これポインタになってないじゃん

713 :710:03/06/01 10:12
>>711>>712さん
ありがとうございます。無事コンパイルは通ったのですが、警告が出てしまいました。
無視して構わないのでしょうか
値が割り当てられていないローカルな変数 'pResult' に対して参照が行われました。

714 :デフォルトの名無しさん:03/06/01 10:39
>>713
お前はCを理解しているのかと小一時間問い詰めたい…

715 :710:03/06/01 10:46
>>713
あっ 出来ましたすみません。 説明までしてもらったのに..
申し訳ないんですが、今度はSendMessageがうまくいきません。関数が呼ばれないんです。


716 :デフォルトの名無しさん:03/06/01 10:50
>>715
前提知識がなさ過ぎる。

CWndクラスのSendMessageを呼んだのならそのクラスにメッセージが飛ぶから、
別のウィンドウに送りたいならそのウィンドウのポインタなりウィンドウハンドラなりを取得して
pWnd->SendMessage(〜〜〜);    または
::SendMessage(hWnd, 〜〜〜);
みたいにする必要がある。

どうやってポインタを取得するんですか、とか聞くなよ。

717 :710:03/06/01 10:53
>>716
同じクラスです。
ON_NOTIFY_REFLECT(LVN_COLUMNCLICK, OnLvnColumnclick)
関数もちゃんとあります

718 :デフォルトの名無しさん:03/06/01 11:04
そもそも何がしたいんだ?リストビューコントロールのヘッダクリックをシミュレートしたいのか?
だとしたらカラのNMHDRやNMLISTVIEWを送りつけて何の意味があるのかと小一時間

719 :710:03/06/01 11:06
>>718
ソートしたいだけです。

720 :デフォルトの名無しさん:03/06/01 11:08
>>719
だったらSendMessageする必要ないじゃん。
OnLvnColumnclickにソート処理書けよ。

721 :デフォルトの名無しさん:03/06/01 11:11
>>720
そうします。汚してすみませんでした

722 :デフォルトの名無しさん:03/06/01 15:05
CObjectから派生してシリアライズ機能を追加したクラスをDLLに作りました。(CMyClassとする)
メインのEXEでそのDLLを読み込みそのCMyClassをインポートして、インスタンスをつくります。
シリアライズの書き出しのとき、operator << で書き出すとそのインスタンスが正しく出力されるのですが、
読み込みのとき、operator >> で失敗してしまいます。
CRuntimeClass::Load(CArchive& ar, UINT* pwSchemaNum)のなかでCMyClassを見つけることができず失敗しています。
DLLからインポートしたクラスでCObjectのシリアライズ機能は使えないもなのでしょうか?

723 :デフォルトの名無しさん:03/06/01 15:09
安心確実

お支払は安心の代金引換です
振り込んだのに商品が届かない等
の心配は無用!
http://www.net-de-dvd.com/

724 :デフォルトの名無しさん:03/06/01 19:03
?c@b@@AAGXM@Z

装飾名の後半部(AAGXM@Z)の
命名規則をまとめてあるところってないでしょうか?

725 :デフォルトの名無しさん:03/06/01 19:10
>>724
ここ?
http://www.kegel.com/mangle.html


726 :724:03/06/01 19:12
>>725
ありがとうございます。

727 :デフォルトの名無しさん:03/06/02 16:59
描画するオブジェクト数が多く、逐一OnDraw()を使うと描画に時間がかかりそうなので、
一度バックグラウンドに描画してから、必要な部分を随時ウィンドウにコピーしようと思うのですが
どのようにすれば良いのでしょうか。

まったく分からないので、概略や参考HPだけでも教えていただけると助かります。

728 :デフォルトの名無しさん:03/06/02 17:05
>>727
メモリDC
BitBlt

729 :デフォルトの名無しさん:03/06/03 11:23
_T マクロでSJIS/UNICODEを切り分けてRDBに文字を保存できるのは良いと思うのですが、UCS-2でなくUTF-16で保存したい場合にはどういう記述になりますか?

730 :デフォルトの名無しさん:03/06/03 16:55
マルチ〜

731 :デフォルトの名無しさん:03/06/03 17:32
>>729
NT や 2000 では、1文字 16 bit を仮定している(Unicode 3.0以前の)
Unicode しか対応してないから、UCS-2 も UTF-16 も同じ意味

XP は0xFFFF を超えるコードポイントも一部のAPIでサポートするように
なってるけど、Unicode 3.0 以降で追加されたサロゲート領域に対応した
グリフを含むフォントは中国語版のOffice XP を買わないと入手できな
かったりする。ってか実際に SimSun Founder Extended とかの
フォントを使ってる日本人は居るのか超疑問

UCS-4 のフルレンジをカバーし実用的に使えるようになるのは、次期
Windows バージョンだって MS も言ってるしね。今は UCS-2 == UTF-16
と考えてていいと思うがなー

732 :デフォルトの名無しさん:03/06/03 18:38
COM/ActiveXにGUIDってありますよね。
あれって何て読むんでしょう。
グイド?

733 :デフォルトの名無しさん:03/06/03 18:44
>>732
ぢーゆーあいーでー

734 :ガイコツジン:03/06/03 19:03
ぐーいどイイマース
チナミニGUIハぐーいデース

735 :がにまたで滑り台をあがる反町の嫁:03/06/04 04:42
// VB上の記述
Public Type tblA
m_a As String * 100
m_b As String * 17
m_c As Long
m_d As Long
m_e As Long
m_f As Long
End Type

Public Type tblB
m_h As String * 300
End Type


Declare Sub Start Lib "A.dll" (pParam As tblA, ByVal sA As String, ByVal sB As String, ByVal lc As Long, ByVal ld As Long, ByVal le As Long)
Declare Function Open Lib "A.dll" (pParam As tblA, ByVal lA As Long) As Long
Declare Function RcvData Lib "A.dll" (rcvData As tblB, pParam As tblA) As Long

// VC上の記述
void (WINAPI *Start )(void *, char *, char *, int, int, int);
int (WINAPI *Open )(void *, int);
int (WINAPI *RcvData )(void *, void *);

VBのプログラムでDLLを呼んで正常な動きをします。
VCのプログラムではOPEN呼んで受信関数のRcvDataの戻りがうまくいきません。
VCのメンバ関数の引数の定義があやしいと思っていますが、
誰か教えてください。

736 :_:03/06/04 04:43
http://homepage.mac.com/hiroyuki43/hankaku02.html

737 :デフォルトの名無しさん:03/06/04 09:31
>>GUID
アメ公の発音は グイッド って言ってるように聞こえる
グに強調で、イの前までこころもち伸ばし気味
ジー・ユー・アイ・ディー、でも通じるけど
GUID は MSI インストーラでも多用されとるがな

738 :これわかりますか?:03/06/04 12:23
3つの数値を入力したとき、それらの値を辺とする三角形ができるか否かを判断して結果を表示せよ。

739 :解いてください:03/06/04 12:24
問題 各自の名前を入れた文字配列を決め、その順序を逆にして表示せよ。

740 :デフォルトの名無しさん:03/06/04 13:20
>>738
値は辺の長さ?
それなら一番長い辺がその他の2つの辺の合計よりも短ければいい。

っていうか、738も739も宿題みたいだが、MFCで解くっていう課題なのか?

741 :デフォルトの名無しさん:03/06/04 13:33
>>739
マルチバイト文字も考慮するんですか?

ネタも宿題も↓へ

C/C++の宿題やらせてください。7代目。
http://pc2.2ch.net/test/read.cgi/tech/1053963794/l50


742 :デフォルトの名無しさん:03/06/04 14:35
>>739 MFC-MLにも「解いてください」とかいって投稿しただろ! ○海大学生!

743 :デフォルトの名無しさん:03/06/04 14:37
>>738もだな

744 :VC見習い:03/06/04 16:40
ちょっと教えてください。おながいします。
三つの返り値をもつメンバ関数を作成したのですが
呼出元から この関数を呼ぶと 最初の一つは値が引き継がれるのですが
残りの二つは値が消失してしまいます。関数内では値取得できているのですが
なぜでしょうか。それぞれの違いは 
最初の返り値の定義をchar型で残りの2つはDWORD型というくらいです
たすけてください。

745 :デフォルトの名無しさん:03/06/04 16:50
>>744
「戻り値」の意味をよく理解してから出直せ。

746 :デフォルトの名無しさん:03/06/04 18:19
>三つの返り値をもつメンバ関数を作成したのですが
それたぶんCじゃない。
C++でもない。

747 :デフォルトの名無しさん:03/06/04 18:22
>>744
勉強しなおし。

「引数」「値渡し」「参照渡し」
ttp://www.google.com/search?q=%E5%BC%95%E6%95%B0+%E5%80%A4%E6%B8%A1%E3%81%97+%E5%8F%82%E7%85%A7%E6%B8%A1%E3%81%97

748 :デフォルトの名無しさん:03/06/04 18:53
return (1,2,3);
としたのか
いや1番目の値が残るならこれだろうか。
return 1,2,3;

749 :デフォルトの名無しさん:03/06/04 19:12
return 1;
return 2;
return 3;

でおおけい


750 :デフォルトの名無しさん:03/06/04 20:35
>>746-749
バカばっかりだな。

#include <stdio.h>
#include <windows.h>
class ThreeValues {
public:
 char C;
 DWORD D[2];
 ThreeValues(char C0, DWORD D0, DWORD D1){
  C = C0; D[0] = D0; D[1] = D1;
 };
};
class Test {
public:
 ThreeValues GetThreeValue();
};
ThreeValues Test::GetThreeValue()
{
 return ThreeValues(1, 2, 3);
}
int main()
{
 Test T;
 ThreeValues V = T.GetThreeValue();
 printf("%d, %d, %d\n", V.C, V.D[0], V.D[1]);
 return 0;
}

>>744
マジな話すると、「ソース晒せ」。まずはそれからだ。

751 :デフォルトの名無しさん:03/06/04 22:22
3つの値を返したいなら、3つの値を持つ構造体を返り値にしてもできるぞ
ま、引数を参照渡しするのが普通だと思うが

関数型の言語って、x = f(a,b,c) のように入力と複数で出力が1個の
場合はすっきりするんだが、入出力がそれぞれ複数の場合はなんか
スマートでない気がしたんだな。慣れちゃうとそんな事あまり考えなく
なるのだが


752 :デフォルトの名無しさん:03/06/04 22:31
>>751
なんで関数型の言語の話が出てくるの?

753 :デフォルトの名無しさん:03/06/04 22:38
>>752
C も C++ でも事情は一緒だと思うがなー


754 :デフォルトの名無しさん:03/06/04 23:11
>>750
返り値は一個だろw

755 :デフォルトの名無しさん:03/06/05 02:06
VC++6.0SP5のMFC使ってます

CRichEditCtrlを初めて使ってみましたが
通知メッセージ(EN_SETFOCUS, EN_KILLFOCUSなど)が
全く飛んでこないんですが・・・(CEditは普通に飛んでくる

::AfxInitRichEdit();はきちんと呼び出しています(WinAppの派生クラスの関数InitInstance内で


756 :デフォルトの名無しさん:03/06/05 05:09
>>752
750-751は釣り

757 :デフォルトの名無しさん:03/06/05 09:02
>>755
MSDN見るとCEditやCListBoxには通知メッセージの説明があるけれど、
CRichEditにはありませんな〜。

ひょっとして、EN_〜じゃなくてNM_〜では?

758 :デフォルトの名無しさん:03/06/05 14:35
>>46
久々にMFC使ったら俺もそうなったので焦った。
オプションのディレクトリ設定で"Microsoft SDK"のパスの優先度を下げて解決。

759 :デフォルトの名無しさん:03/06/06 12:17
リスト状に、コントロールが乗っている子ウインドウを並べて操作したいと思っております。
CListBox、CListCtrl等の中に子ウインドウを並べる事は出来るでしょうか?
色々と試行錯誤している段階なので、よろしければヒント等をいただけたらと思います。


760 :デフォルトの名無しさん:03/06/06 12:34
>>759

一般論だけど、ダメ。無理。ムダ。
普段はカスタムドローでも何でも使って普通に描画しといて、
クリックされたりした瞬間だけ(使いまわした)コントロールを show するのが良いよ。


761 :デフォルトの名無しさん:03/06/06 18:43
MFCのAppWizardで作成したソフトで、「ファイル→開く」から複数の拡張子を選べるようにしたのですが、保存する時は開いた時の拡張子でしか保存できません。
これを「開く」と同じようにファイルの種類を選べるようにするにはどうすればいいのですか?
それと、開くときにフィルタを(*.txt; *.doc)のようにして、ダイアログに.txtと.docを両方表示させるようにするにはどこをいじればいいのですか?

762 :デフォルトの名無しさん:03/06/06 22:00
GetDocString あたりを調べれば何とかなりそうな予感。
あるいは保存部分を自作コードで……

763 :デフォルトの名無しさん:03/06/07 20:12
MFC内部で使われてる関数って、勝手に使うと問題あるのかね...?

例えば mfc\src\afximpl.hで定義されてるような香具師を、afximpl.h を
includeして使うとか。

764 :761:03/06/07 21:12
>>762
GetDocStringをいろいろと試してみます。
あと保存部分の自作も挑戦してみます。
ありがとうございました。

765 :デフォルトの名無しさん:03/06/07 21:22
>>763
自分が何やってるか理解できればいいと思うよ。
MFC ったって、単なるクラスだからね。
(まあ、複雑に絡み合ってるだろうから、解析するのは大変だろうけど。)

766 :    :03/06/07 21:37
VC++.NET で MFC も消滅の運命を歩むだろう。
もうMFCは古い。

767 :デフォルトの名無しさん:03/06/07 21:45
VC++.NETも儲からなければあっさり捨てられるだろう。
COMのように。

768 :デフォルトの名無しさん:03/06/07 21:50
>>767
しったか半可通。

769 :デフォルトの名無しさん:03/06/07 22:04
メインフレームってどういった概念なのでしょうか?
viewクラスとdocクラスとメインフレームクラスをわざわざ分けるのはなぜですか?
単純にwin32のように一つのcppにまとめて書いてあってもいい気がするのですが。

770 :デフォルトの名無しさん:03/06/07 22:19
>>769
document-viewについて勉強することを勧める。

俺の理解では(間違ってるかもしれんが)
アプリケーションというのはドキュメント(テキストや画像のデータ)があり、
ビューはそのドキュメントの内容を描画するだけ。
それらを収めてメニューやツールバーを管理するのがフレーム(枠)、ということ。

フォルダにファイルを作成→関連付けたアプリを起動、というように、
ドキュメント(ファイル)を起点にしたものがWindowsの思想だと思ってる。

771 :デフォルトの名無しさん:03/06/07 22:25
描画するだけ、ってのはちょっと語弊があるな。スマソ

アプリケーションはデータを編集するためのツール、という視点で捕らえればわかるかもしれない。
もちろんそういうアプリばかりではないが、doc-view構造を持つということはそういうことだと思う。

772 :デフォルトの名無しさん:03/06/07 22:29
>>769
VBから離れるとその利点が良くわかる。

773 :デフォルトの名無しさん:03/06/07 22:31
>>772
またお前か

774 :デフォルトの名無しさん:03/06/07 22:37
>>769
この辺みとけ。
ttp://www.microsoft.com/japan/developer/library/vccore/_core_document.2f.view.3a_.overview.htm

770の言ってることをちょっと補足するなら、
たとえばひとつのドキュメントに複数のビューを持つ場合。
(数値データに対して表モードとグラフモードを切り替えて表示するような場合ね。)
表を表示する専用のビューとグラフを表示する専用のビュー、みたいに独立して書けるわけ。
Win32(SDKのことだと思うが)はコードがごちゃごちゃしないか?

775 :769:03/06/07 22:52
MSDNってこういう使い方もあるんですね。
APIの解説しか読んでなかったや。
熟読してみます。皆さん、ありがとうございました。

776 :デフォルトの名無しさん:03/06/08 17:46
エクスプローラみたいなファイラを練習として作ってます。
エクスプローラなら、ツリーで選択されているディレクトリに
変更があった場合(新しいディレクトリが追加されたとか)、
ツリービュー・リストビューともに更新されますが、これって
エクスプローラが何かの方法でディレクトリの変化を知った
ということですよね。1秒置きにポーリングするなどの原始的な
方法以外で、変化を知る方法があるのでしょうか?

777 :_:03/06/08 17:47
http://kame.kakiko.com/hiroyuki/hankaku_b01.html

778 :デフォルトの名無しさん:03/06/08 20:12
>>776
あるよ。忘れたけど。

確かFindfastなんちゃらかんちゃらだ。

779 :デフォルトの名無しさん:03/06/08 20:29
>>776
FindFirstChangeNotification
FindNextChangeNotification
かな?
使ったことないから知らんけど。

780 :776:03/06/08 21:26
>>778 >>779
サンキューです!
MSDN調べてみます。

781 :デフォルトの名無しさん:03/06/08 21:38
>>755
ON_NOTIFY(EN_SETFOCUS, IDC_XXX_EDIT1, OnSetfocusXXXEdit1)
ON_NOTIFY(EN_KILLFOCUS, IDC_XXX_EDIT1, OnKillfocusXXXEdit1)

を、下記のように変更する。

ON_EN_SETFOCUS(IDC_XXX_EDIT1, OnSetfocusXXXEdit1)
ON_EN_KILLFOCUS(IDC_XXX_EDIT1, OnKillfocusXXXEdit1)

782 :名無し@沢村:03/06/08 22:47
>>776
SHChangeNotifyRegister()
ReadDirectoryChangesW()

783 :デフォルトの名無しさん:03/06/09 11:06
質問です。
ポートlistenしてUIスレッドを生成、
それぞれのスレッドがAsyncSocket派生クラスで通信を行うようなサーバプログラムなのですが、
ときどきデバッガ実行中に無言で落ちるときがあります。
次のような出力がありますが、その他ASSERTやらは一切出ず。
「スレッド'Win32 スレッド'(0xXXX)はコード3(0x3)で終了しました。」
デストラクタ等も動いていないようなので落ちてるのは間違いないようです。

これはどういう現象でしょうか?
または突き止めるにはどういう方法が有効でしょう?

環境はWin2kPro/SP3、VC++.NET
動作環境がかなり貧弱でペン3/600MHz、メモリ128
動作環境でしょうかねぇ・・・?

784 :直リン:03/06/09 11:13
http://homepage.mac.com/yuuka20/

785 :783:03/06/09 11:13
追記。
スレッドは多いときで20〜30くらい立ちます。
ソケットメッセージ編集のためにふんだんにメモリ使います。
書けば書くほど動作環境のような気がしてきた。
出力されるメッセージとの関連がわかれば、それで納得できるのですが・・・

786 :デフォルトの名無しさん:03/06/09 21:51
MDIでプログラミングした時などに、「最近使ったファイル」というものがメニュー内にあります。
それを操作するにはどうすればいいでしょうか?

787 :デフォルトの名無しさん:03/06/09 22:08
>>786
CRecentFileList

788 :デフォルトの名無しさん:03/06/10 05:37
OSがアップデートされたときなどに右下のタスクバーに吹き出しが
でるけど、あれってどうやって表示させればよいのですか?
なるべく自分で調べますので関連するキーワードとか教えてください
よろしくお願いします


789 :_:03/06/10 05:42
http://homepage.mac.com/hiroyuki44/hankaku09.html

790 :デフォルトの名無しさん:03/06/10 10:01
>>788
バルーンだね。この質問も定期的にあるなぁ。

791 :デフォルトの名無しさん:03/06/10 14:51
例えばMFCのCDC::FillSolidRect()でCRectのポインタを引数
として受け取るようになっているのですが、変数をそのまま渡しても
ちゃんと走ります。これはおかしくないのでしょうか?

792 :デフォルトの名無しさん:03/06/10 14:53
CRect::operator LPCRECT

793 :791:03/06/10 15:00
>>792
ハッ!そういうことでしたか。
厨な質問ですみませんでしたm(__)m

794 :デフォルトの名無し:03/06/10 16:47
Visual C++ .netのキーバインドってemacs風にはならないのかな???
選択開始が割り当てられない・・・・
誰か教えてください、よろしくお願いします。


795 :デフォルトの名無しさん:03/06/10 16:53
>>794
emacsを.net風にカスタマイズするほうが楽だよ。

796 :デフォルトの名無しさん:03/06/10 17:14
>>794
カスタマイズ可能。
.NETだったら [キーボード マップ スキーム]なるものがあって、そこに
emacs風とかあったり? (.NET使ってないから分からん)

VC6は一個一個キーバインドをシコシコ替えなければならんかったが。

誰かがemacs風のキーバインド定義して、レジストリ公開すればいいんだけどね(w

797 :デフォルトの名無しさん:03/06/10 17:17
>>794
マルチうぜぇ
市ね
二度と来るな
回線切って首吊(ry

798 :デフォルトの名無しさん:03/06/10 17:35
そんな事よりよ、1、ちょいと聞いてくれよ。
このあいだ、Visual C++ .netでプログラム書いてたんですよ。Visual C++ .netで。
そしたらなんか「Visual C++ .netのキーバインドってemacs風にはならないのかな」
とか、いってるやつがいるんですよ。(ry
もうね、アホかと。馬鹿かと。 (ry
お前ら、emacsって言いたいだけちゃうんかと。(ry

799 :デフォルトの名無しさん:03/06/10 17:49
Windowsを超えるOSをVCで作りたいと思っています。
どなたか参考になるサイトあったら教えてください。

800 :デフォルトの名無しさん:03/06/10 17:50
みてね〜♪
http://www1.free-city.net/home/s-rf9/page002.html

801 :デフォルトの名無しさん:03/06/10 17:51
>>800
見るな。ブラクラだったよ。

802 :デフォルトの名無しさん:03/06/10 17:52
>>797
マルチうぜぇ
市ね
二度と来るな
回線切って首吊(ry

803 :789:03/06/10 17:53
>>790
もう少しかみ砕いて教えてください!!


804 :デフォルトの名無しさん:03/06/10 18:11
789は死ね
788なら、キーワード教えてくれっつーんだから十分だろ?

805 :デフォルトの名無しさん:03/06/10 18:12
>>789
氏ね

806 :デフォルトの名無しさん:03/06/10 23:03
CRectにCopyRect()という他のCRectインスタンスをコピーする
関数がありますが、これってどんなとき使うのですか?
dest=sorcでいけるのに何のためにあるのでしょう?

807 :名無し@沢村:03/06/11 00:33
>>789
キエロ

808 :デフォルトの名無しさん:03/06/11 01:31
OSがアップデートされたときなどに右下のタスクバーに吹き出しが
でるけど、あれってどうやって表示させればよいのですか?
なるべく自分で調べますので関連するキーワードをAPI名で
教えてください。


809 :名無し@沢村:03/06/11 01:33
>>808
つまらん、おまいのカキコはつまらん

810 :デフォルトの名無しさん:03/06/11 06:42
>>808
うちのOSであるHP-UXでは出ません。以上。


811 :793:03/06/11 10:47
くだらねぇ煽り合戦やめれ。
あー原因がつかめん・・・
何も言わずに落ちるのは何故?

812 :デフォルトの名無しさん:03/06/11 11:30
>>808
TTS_BALLOON

813 :デフォルトの名無しさん:03/06/11 12:04
キーワードは>>790でとっくに出てるのにマルチする厨はほっとけ

814 :811=783:03/06/11 12:21
へんなのとレス番間違えちゃったw

815 :100人に1人:03/06/11 18:33
◎人の嫌がることをズケッと言うのはこんな奴!
<アスペルガー症候群(自閉症スペクトラム)←脳の機能的疾患(遺伝が要因)>
●変化を嫌う
http://web.kyoto-inet.or.jp/org/atoz3/kado/book1/Williams-Asp.htm

●接し方のルールがわからず無邪気に周囲の人に対して迷惑なことをしてしまうことがある。人を傷つけるということには鈍感(相手の立場に立って考えられない)。
●パターン的行動、生真面目すぎて融通が利かない
 毎朝の通学電車では同じホームの同じ場所から、同じ時間の同じ号車に乗ることに決めていたりする。パターンを好むということは反復を厭わないことでもある。
●アスペルガー症候群の子どもは(大人も)感覚刺激に対して敏感。敏感さは聴覚、視覚、味覚、嗅覚、温痛覚などのいずれの感覚の敏感さもありえる(特に視覚が敏感)。
●アスペルガー症候群の子ども(大人も)は予測できないことや変化に対して苦痛を感じることが多い。
http://www.autism.jp/l-02-03-aspe3.htm

●独り言を言うことが多い(考えていることを口に出す)
●物事をいつまでも同じにしておこうとする欲求が強く、そうでないと非常に不安。いわゆる「こだわり」。
●自発的に行動することが少なく、興味の幅が狭い
●物まねをしているような不自然な言語表現
●自閉症スペクトラム全体としては一万人に91人(およそ100人に1人)。
http://www.ypdc.net/asuperugar.htm

★自閉症スペクトラムの考え方(アスペルガーに至らない気質の偏りもある(遺伝性))
http://www.imaizumi-web.com/030413.html  
   
★アスペルガー症候群(自閉症スペクトラム)かどうかのテスト
http://twitwi.s10.xrea.com/psy/add.htm 
http://www.geocities.co.jp/Beautycare/5917/as/marksheetmake.html




816 :デフォルトの名無しさん :03/06/11 18:51
VisualC++ってタダ?

817 :デフォルトの名無しさん:03/06/11 19:28
>>816
そのネタ秋田。

818 :デフォルトの名無しさん:03/06/12 23:23
これは VC++ Standard .NET 2003 には最適化コンパイラが付いているって事かい?
http://www.microsoft.com/japan/msdn/visualc/productinfo/topten/upgrade60.asp
俺(VC++6.0Proユーザー)VB、C#いらないからVS.NETPro買い控えてた。
これってほんとか? むちゃくちゃ安いし・・・

819 :デフォルトの名無しさん:03/06/12 23:27
VC++でデータベースを使ったプログラムを作る場合、
データベースは何がいいのでしょうか?やはりソフトが
必要なんですよね?
本当に簡単なのでもいいのですが・・・。


820 :名無し@沢村:03/06/12 23:39
>>819
MSDE

821 :デフォルトの名無しさん:03/06/12 23:43
>>818
Standard版には最適化コンパイラは付いてないですよ。
Visual Studio .NETに付いてるのがProfessional版です。

822 :デフォルトの名無しさん:03/06/13 00:05
>>821
そうなのか? リンク先を見る限り .NET2003 では、VC++ Standard版に
最適化コンパイラがついているように見えるが。

だとしたら、俺も買いたい。

823 :デフォルトの名無しさん:03/06/13 00:15
>>822
http://direct.ips.co.jp/pc/ihtml/vsnet/VSnet_seet.htm

824 :デフォルトの名無しさん:03/06/13 00:23
>>823 いや、だから .NET「2003」は違うんじゃないか?

825 :デフォルトの名無しさん:03/06/13 00:44
>>824
製品構成と価格から見ても微妙だと思うけど…
仮に Standard .NET 2003に最適化コンパイラが付いてたら
VS.NET買っちゃった人はブチギレですな

最適化コンパイラがついてるなら、俺もStandard買うよ。

826 :デフォルトの名無しさん:03/06/13 01:16
ListViewの MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
が呼び出された後で、パラメータを変更したいとき、
みんなどうやってる?

たとえば、
lpMeasureItemStruct->itemHeight
を後で変更したくなったようなとき。

ウィンドウサイズを変更して、MeasureItem()が呼び出されるようにとか
色々試してはいるけど、決定打がないのよね。


827 :デフォルトの名無しさん:03/06/13 01:58
CHtmlView::GetHtmlDocumentについて疑問があります。
MFCのコードは以下のようになっていますが、
  LPDISPATCH result;
  m_pBrowserApp->get_Document(&result);
  return result;
これだと、呼び出すたびにドキュメントの参照カウントが増加すると思います。
しかし、GetHtmlDocumentを使用している部分ではそのことを考慮しているようには見えません。
Releaseしなくても良いのでしょうか?

828 :デフォルトの名無しさん:03/06/13 06:34
>>825
StandardにはMFCのソースコードが付いていないだろ。
そんな環境でMFCのアプリの開発なんかやってられるかよ。

829 :デフォルトの名無しさん:03/06/13 09:21
>>827
使い終わったらReleaseしましょう……

830 :デフォルトの名無しさん:03/06/13 09:23
>>819
別に何でもいいんじゃないの。
Access持ってるならそれで作っちゃうとか。

831 :デフォルトの名無しさん:03/06/13 10:32
>>829
やはりReleaseは必要なのでしょうか?
MFCのCHtmlViewのソースではCComPtrを使っているためAddRef/Releaseが対で呼ばれてしまい、get_Document内でAddRefされた分のReleaseが呼ばれていないような気がします。
またWeb上の多くの文章やMSDNでもReleaseは呼んでいないようです。

832 :デフォルトの名無しさん:03/06/13 11:21
Visual Studio .NET 2003 Feature Comparisonのサイト
http://msdn.microsoft.com/vstudio/howtobuy/choosing.aspx
「stand-alone client tools vs VS.NET が見たいなら、Related Links box のリンクをクリックしなさい」
と言うことなので VisualC++.NETStandard クリックしてみると、
http://msdn.microsoft.com/visualc/howtobuy/choosing.aspx
これらのリンクが正しければ、やっぱり予想通りなのねん。
「最適化コンパイラが使いたければあと8万円(6.0→.NETupgrade)出しなゴルァ」って・・・
日本政府はマイクロソフトに対し、竹の子剥ぎボッタクリ防止条例の適用をしてホスイ。

833 :819:03/06/13 19:11
>>820
>>830

レスどうもです。確かに別になんでもいいのですが、少なくとも
今はVC++.NETしか持ってない状態なので・・・。
ほんとに簡単なものでもいいんですよね。自前で検索効率のいい
ファイル構造を作っちゃえるならそれでもいいし・・・。
でもそんな技術ないし・・・。
とりあえず、たくさんのデータをためて、そこからいろんな条件で
検索とかするという構想なので、やはりデータベースですよね。
MSDEってけっこう大掛かりじゃないのでしょうか?
個人レベルならAccessですかね・・・。


834 :デフォルトの名無しさん:03/06/13 19:40
>>833
つか、使い方なんて、どれでも一緒。
Access持ってるなら使っても良いけど、買う気ならやめれ。
MSDEでも一緒だし、いっそのことフリーのDB選ぶのもよし。

835 :デフォルトの名無しさん:03/06/13 22:19
>>833
たいしたものでないならAccess買うなんて勿体無い。
834の言うようにフリーのモノを使うべし。

ところでMySQLって商用目的に使わないならOKだっけか。

836 :デフォルトの名無しさん:03/06/13 22:29
>>828
何言ってんの・・・

837 :デフォルトの名無しさん:03/06/13 23:20
>>833
条件つけて検索するだけで、ちょいちょいと作るならPerl/Tkがいいぞ。
ん?スレ違いか?

838 :デフォルトの名無しさん:03/06/14 10:25
ダイアログボックスでコントロールを配置するときに
見やすく線で区切りたいのですがフレームコントロールではなく
横棒一本(あるいは縦棒)を引きたいです。
でもどれを使っていいか分かりません。
やりかた教えてください。


839 :デフォルトの名無しさん:03/06/14 10:31
>>838
OnPaintで線を引けばいいんでないの。

840 :819:03/06/14 14:17
フリーですか・・・。ちょっと探してみます。
フリーのがあったんですね(汗

アドバイス感謝です。

841 :デフォルトの名無しさん:03/06/14 18:14
VC++ Standard はリモートデバッガが付いていないんだな。
こりゃ話にならん。

842 :デフォルトの名無しさん:03/06/14 19:37
つか、Standard版の話なんかどうでもいい。
もっと言えば、Windows開発環境でフリーに固執する奴らの気が知れねー
くだらねーことで右往左往するのが楽しいんだろうな・・・

843 :デフォルトの名無しさん:03/06/14 20:37
AfxGetApp()->OpenDocumentFile("-");
でMDIではファイルを表示しますが、子ウィンドウを新規作成で表示するにはどうすればいいでしょうか?
それから、VC++のように、「全て保存」という機能はどのように実装すればいいのですか?



844 :デフォルトの名無しさん:03/06/14 22:04
>>843
::AfxGetMainWnd()->SendMessage(WM_COMMAND, ID_FILE_NEW)
これで無理かのう?

「すべて保存」は自分でチマチマつくるんじゃないかな。
開いているドキュメントをスキャンして。

845 :デフォルトの名無しさん:03/06/14 22:51
>>844
チマチマスキャンするには、
MDIGetActive,MDINextを組み合わせる方法しか思いつかないのですが、
いい方法はありますか?


846 :デフォルトの名無しさん:03/06/14 23:13
BOOL CWinApp::SaveAllModified()

を参考にするのもいいかもしれません。

847 :デフォルトの名無しさん:03/06/14 23:53
>>843
子ウィンドウの新規作成は844で書かれているやり方で多分
いいと思う。試してないけど。
すべて保存は次のように書いてみてはどないやろ?

HWND hWnd = ::AfxGetMainWnd()->m_hWndMDIClient; //メインフレームウィンドウのMDICLIENTウィンドウのハンドルを取得
CWnd *pWnd = CWnd::FromHandle(hWnd);
pWnd->SendMessageToDescendants(WM_COMMAND,ID_FILE_CLOSE,FALSE,FALSE); //MDI子ウィンドウの全ての直系の子に対しメッセージ送信

知ったか君の言うことなのであまり信用しないように。:-)
おいらならこれを試してみる、という程度。

848 :デフォルトの名無しさん:03/06/14 23:59
TCKってなんですか?

849 :デフォルトの名無しさん:03/06/15 00:00
847なんだが、

「MDI子ウィンドウの全ての直系の子」
じゃなくて、
「MDICLIENTウィンドウの全ての直系の子」
だった。スマソ
回線切って首吊って逝ってくる。


850 :デフォルトの名無しさん:03/06/15 01:59
>>849
朝ご飯までには帰ってくるのよ

851 :デフォルトの名無しさん:03/06/15 14:17
今後VC++はどうなるんでしょう?
C#がでてきたし、マイクロソフト自身の手によって
葬り去られるのでしょうか・・・。

というのも、勉強はしたいのですが、ことC++に関しては
他より勉強量が必要かと。でも、消えちゃうならやる気が
半減なんすよね・・・D言語とかいうのも出てくるみたいだし。
どうなんでしょうか。

852 :デフォルトの名無しさん:03/06/15 14:34
>>851
.NETはあくまで最上位レベルでの開発にしか使えんからなぁ。
そう言うことだ。

853 :デフォルトの名無しさん:03/06/15 14:36
>>851
C++は死滅しないに一票。
なるべく非MFCで書くよう心がければ
MSと心中することもないだろう。


854 :デフォルトの名無しさん:03/06/15 14:42
>>851
PC、OS、プログラム言語については、先の事なんて考えるだけ無駄。
その時手に入る物で、使いたいように使うべし。
新しいの出たら、その時考えれ。
悩んでるだけ時間の無駄だ。

855 :デフォルトの名無しさん:03/06/15 17:35
大抵は応用が利くしね。
勉強して損するって事はないよ。

856 :デフォルトの名無しさん:03/06/15 19:02
始める前にあれこれ躊躇しているようなヤツは
いざ始めてもやっぱりああすればよかった、こうすればよかったと
いつまでたっても後悔ばかりしているものだ。
つまんないことで悩んでるヒマがあったら何でもいいから
始めてみろとの忠告はまるで耳に入ってないやつが多い。

857 :デフォルトの名無しさん:03/06/15 19:44
まあまずは作ってみろってこったな。
MFCのダイアログアプリ辺りでもなんでもいいから。

858 :デフォルトの名無しさん:03/06/15 20:10
>>856
激しく同意。人生多少の無駄をしても余る位の時間はある。

859 :デフォルトの名無しさん:03/06/15 21:36
店頭での販売まだ〜???

860 :859:03/06/15 21:49
誤爆スィタ〜!スマソ。

861 :デフォルトの名無しさん:03/06/16 11:31
質問さして下さい。MFCでタスクトレイ常駐型のアプリ作ってます。
(環境:Win2000 SP3 / MSVC6.0 / IE6.0SP1)

リソースでアクセラレータキーを割り当てておいて、
それをそのアプリが常駐している(タスクトレイにアイコンが表示されている)間は
常に有効にしたいと思っています。

プログラムの挙動としては、最初に非表示の空ウィンドウを生成して
それをベースにポップアップメニューを出したり、ダイアログを表示したりと
やっております。

この場合、前述の空ウィンドウにアクセラレータの処理を記述する方がいいんでしょうか?
それともどこか別なクラスの方が適切なのでしょうか。
また、具体的に記述してあるサイト等知っていらっしゃいましたら
お教え頂けますと有難いです。

862 :デフォルトの名無しさん:03/06/16 11:37
コンマで区切っているテキストを読み込んでコンマで挟まれているテキストを
取り出すにはどうすればよいですか?

863 :デフォルトの名無しさん:03/06/16 11:40
>>861
ホットキー

>>862
while(コンマが見つかった) {
 コンマの前後を分割;
}

864 :861:03/06/16 11:49
>>863さん
試してみます。ありがとうございます。

865 :862:03/06/16 13:13
>>863さん
もう少し詳しくお願いできませんか?

866 :デフォルトの名無しさん:03/06/16 13:39
>>861
フックつかったらいいんでないかい

>>865
それ以上詳しくって……(;´Д`)

867 :デフォルトの名無しさん:03/06/16 13:54
>>865
いや、ていうかスレタイ5万回復唱して回線切って首(ry

868 :862:03/06/16 14:36
>>867
はいはい

869 :デフォルトの名無しさん:03/06/16 14:47
>>862
CString s("abcd,あいうえお,123456,四面楚歌");
CArray<CString*,CString*> a;
int start,end,i, len = s.GetLength();
start = end = 0;
while(1){
if(start >= len) break;
if((end = s.Find(',',start)) == -1){
if(end >= len) break;
else end = len;
}
CString &tmp= *(new CString());
for(i=start;i<end;i++) tmp += s[i];
a.Add(&tmp);
start = end + 1;
}

CStringにstrncpyはないんか・・・

870 :デフォルトの名無しさん:03/06/16 14:51
>>869
フツーにCStringArray使えばいいじゃん。

871 :デフォルトの名無しさん:03/06/16 14:52
>>869
何故CString::LeftとかCString::Midとかを使わない?

872 :869:03/06/16 14:53
わっは、初心者がばれた。CStringArrayか・・・。

873 :869:03/06/16 15:04
そーすると、
forでまわしてるところを、
a.Add( * new CString(s.Mid(start,end)) );
とすりゃいいんかな。
aはCStringArrayにして、保存するのはポインタじゃなくインスタンスになるので注意っと。


874 :869:03/06/16 15:07
ちがった文字数だった Mid(start,end-start) 。スレ汚しスマソ。

875 :デフォルトの名無しさん:03/06/16 15:18
>>873
Addに渡すインスタンスは一時オブジェクト。

876 :869:03/06/16 15:38
うい、newはいらんすね。
しかも配列をローカルにとって、その中にnewでつくったオブジェクト入れてる、意味不明だ。

877 :861:03/06/16 16:03
>>866さん
アドバイスどもです。下のようにしてみました。

#define WM_USER_HOTKEY_EXITWM_USER+110
class CMona : public CWnd{ … }

BOOL CMona::Create(){
  …
  RegisterHotKey(m_hWnd, WM_USER_HOTKEY_EXIT, MOD_CONTROL, VK_F12);
  …
}

LRESULT CMona::WindowProc(UINT message, WPARAM wParam, LPARAM lParam){
  switch(message){
   …
   case WM_HOTKEY:
    switch(wParam){
     case WM_USER_HOTKEY_EXIT:
     OnPopExit();  //タスクトレイのポップアップメニュー[終了]と同じ処理
    }
   …
  }
}

void CMona::PostNcDestroy(){
  …
  unregisterHotKey(m_hWnd, WM_USER_HOTKEY_EXIT);
  …
}

WindowProc()で直接拾ってます。

878 :デフォルトの名無しさん:03/06/16 17:17
>>847
ありがとうございます。
もう一つあるのですが、
childview のメンバ変数として int i;
とし、mainframe から その i の値を書き換えることができるのでしょうか?


879 :デフォルトの名無しさん:03/06/16 17:29
MFCの関数が仮想になってなくてむかつくことって結構ない?
InitialUpdateFrameとかさ

880 :デフォルトの名無しさん:03/06/16 18:29
>>878
GetActiveView()等で子ウィンドウのポインタを取得して
childviewにキャストすれば使えるんでないかい。

# データはドキュメントクラスが持つべきだとは思うが……

881 :デフォルトの名無しさん:03/06/16 18:34
>>879
仮想である必要はあるかな……?
俺はCViewのOnInitialUpdateをオーバーライドして用事を済ますから必要を感じないだけかもしレンガ。

882 :デフォルトの名無しさん:03/06/16 19:17
>>862
std::string使え!

883 :デフォルトの名無しさん:03/06/16 20:14
std::stringちょっと嫌い

std::string str;
str = "";
これだとメモリ確保されないから困ることがある

884 :デフォルトの名無しさん:03/06/16 21:46
>>880
CView は CChildFrame にキャストできないそうです。

885 :デフォルトの名無しさん:03/06/16 22:15
>>883
何でメモリ確保されないと困るのか後学のために教えていただきたい。

886 :デフォルトの名無しさん:03/06/16 22:25
>>884
当然でしょ……。
少し考えればGetActiveFrame()を思いつきそうなもんだが、
最近のお子様たちは応用力がないのかな。

887 :デフォルトの名無しさん:03/06/16 22:52
1、TreeViewやListViewに表示するデータをドキュメントでどう持つべきでしょう?

2、AppAのバージョンアップをAppBとして
それぞれで作成されたファイルをFileA,FileBとします(Serialize経由のファイル)
  AppAでFileBも読み込めるようなうまい方法はありますか?

以上、お願いします。

888 :887:03/06/16 22:52

あ、1と2は別々の質問です。

889 :デフォルトの名無しさん:03/06/16 23:13
>>887
1.あんたの勝手
2.VERSIONABLE_SCHEMA

890 :887:03/06/16 23:50
1、
ちょっと質問がおかしかったです。
通常TreeViewの各アイテムにオブジェクトを結び付けたい
場合は、SetItemDataなどをつかうのが簡単なんですが、これだとたとえば、アプリ起動時
にファイルを読み込む場合、TreeViewが作成される前にSerializeが呼ばれてしまうし、
ドキュメントとまったく関係ないのであんまりうれしくないんです。

2、
VERSIONABLE_SCHEMAはAppBでFileAを読み込むための仕組みではないのでしょうか?

891 :デフォルトの名無しさん:03/06/16 23:56
CDC::FrameRectを使って、XORでワクを描きたいんですけど、どうやったら描画モードをXORに変えられるんでしょうか?

892 :デフォルトの名無しさん:03/06/17 02:40
>>890
なぜTreeViewの作成とSerializeの呼び出しタイミングが関係あるのかわからん。
ノードの登録は当然View側でやるんだからOnInitialUpdate時点ですでにSerializeは完了してるので何の問題もない。


893 :デフォルトの名無しさん:03/06/17 06:20
>>887
よく分からんが、まずドキュメント&ビューの概念は理解しているのかい?

894 :デフォルトの名無しさん:03/06/17 08:55
>>891
FrameRectはブラシつかって描画するから、直接XORはできないんじゃないかな。
ビットマップに描画してXORで重ねるくらいしか思いつかない。

895 :デフォルトの名無しさん:03/06/17 09:37
CWinThreadについて質問です。
クラスウィザード(クラスビュー)からCWinThreadの派生クラスを作成すると、
コンストラクタがprotectedになってますよね。
これはいったい何のためでしょうか?
暗にAfxBeginThreadを使え!と言っているのでしょうか。

# サンプルの\ADVANCED\MTGDIではpublicになっているところを見ると、
# publicに書き換えても問題なさそうな気はしますが……。

896 :デフォルトの名無しさん:03/06/17 09:54
>>894
Windowsのグラフィックエンジンって、ペンとBlt以外で転送モード指定できないの?
フォントを凝った描き方するのも無理みたいだし

897 :デフォルトの名無しさん:03/06/17 09:59
>>896
MSがWin95の時代にそんな設計を考慮に入れる余裕はなかったと思うw

898 :デフォルトの名無しさん:03/06/17 10:18
便乗で申し訳ないんですがFrameRect()ってどんな時便利
なのですか?
Rectangle()とはどう使い分けるんですか?

899 :デフォルトの名無しさん:03/06/17 11:03
>>898
速い

900 :889:03/06/17 11:47
>>890
1.について
Document-Viewを前提とすれば、データの管理はCDocumentがするべき。
TreeViewとかItemDataというのは表示の問題。

CDocument::OnNewDocument()
CDocument::OnOpenDocument()
CDocument::UpdateAllViews()
CView::OnInitialUpdate()
CView::OnUpdate()
などをヘルプで

901 :889:03/06/17 11:50
>>890
2.について
旧Verをマイナーアップできるのであれば、VERSINABLE_SCHEMAで。
 
旧Verをいじくれないのであれば、あくまで案だが
新Verでの保存前に『旧Verとの互換有モード』と『互換無モード』を選択させて
1)互換無モードのときは普通に保存。
2)互換有モードのとき
 旧Verと共有できる部分を最初に保存し、
 新Verの追加部分をa)続けて保存する、または、b)別ファイルとして保存。

 たぶんa)で旧Verでも読めると思うが、旧Verには新Verのデータを保存するコードがないので、
 旧Verで編集して保存した場合は新Verのデータは失われてしまう。

 保存する変数が一つ二つ増えただけのときは簡単そうだが、
 あるクラスのメンバ変数が追加されていて、それが配列やリストなどに格納されているような場合は
 新Verで読み込んだときに新データの部分をどうアタッチさせるか考慮しなければならず面倒かも。


902 :861:03/06/17 15:47
861です。引き続きタスクトレイ常駐型アプリ作ってます。
(環境:Win2000 SP3 / MSVC6.0 / IE6.0SP1)

タスクトレイのアイコンを右クリックすると、ポップアップメニューを表示するような
処理を記述しているのですが、ここで負に落ちない点が2点程あります。

A. 表示されたポップアップメニューから[設定]を選ぶと、
dlg.DoModal()で設定用のウィンドウが開きます。(CDlgOptionと仮定)
で、この CDlgOption で[OK]あるいは[キャンセル]を押すとウィンドウを閉じるようにしています。
これらの動作で CDlgOption を閉じ、またすぐにタスクトレイのアイコンを
右クリックしようとしても、なぜかクリック一回分の反応が無視されてしまうようです。
(間をおいて2回クリックするとまたポップアップメニューが表示されます)
この現象に関してどなたか覚えのある方いらっしゃますでしょうか?
近いヒントだけでも構いませんので、お教え頂ければ幸いです。

B. 右クリックでポップアップメニューが表示されますが、このメニューは現在
いずれかのメニューアイテムをクリックしないと消えないようになっています。
一般的なタスクトレイアプリケーションのポップアップメニューのように、
例えばメニューとは別な場所をクリックした場合はメニューを消す、といった
挙動がありますが、これらの処理は自分で記述する必要があるのでしょうか?
よくある挙動なので、既存の関数か何かがあればと思っているのですが…。

毎度長くなってしまいすいませんが、ご教授頂ければと思います。

903 :デフォルトでない名無しさん:03/06/17 16:17
B.は
ポップアップメニューを表示する前に、メニューの
オーナーウィンドウにフォーカスをセットする

904 :861:03/06/17 16:28
>>903さん
ありがとうございます。

これはフォーカスをオーナーに設定する事によって、
それ以外の部分にフォーカスが当たった場合、それを無効化する
…という解釈で宜しいでしょうか?

905 :デフォルトの名無しさん:03/06/17 17:19
>>904
オーナーからフォーカスが外れれば、メニューの標準仕様により勝手に消える。

906 :デフォルトの名無しさん:03/06/17 17:54
>>903さん
表示する直前の部分に SetFocus(); で動作しました。
ありがとうございました。

907 :890:03/06/17 20:41
> ノードの登録は当然View側でやるんだからOnInitialUpdate時点ですでにSerializeは完了してるので何の問題もない。
> Document-Viewを前提とすれば、データの管理はCDocumentがするべき。

なるほどわかりました。
とすると、Treeの階層構造そのものをDocumentが持たなくてはならないわけですよね。
これは結構大変の予感。TRee構造のほかにHTREEITEMとのMAPも必要になりそうですし。

2について
やはり簡単な方法はないみたいですね。
ご意見ありがとうございます。

しかしこれ、ファイルヘッダも付けずにファイルをつくってると
はまりますよね。旧VERでの読み込みエラーに対応できなくなる。
もっとも拡張子もアイコンも変えて別アプリのようにしてしまえばいいんですが。

908 :デフォルトの名無しさん:03/06/17 20:55
Visual C++のAPIのリファレンスが載っている
ページはないでしょうか

909 :デフォルトの名無しさん:03/06/17 20:56
>>908
MSDN onlineじゃダメなん?

910 :デフォルトの名無しさん:03/06/17 21:00
>Visual C++のAPI
この時点でもうちょっと悩め、>>909よ。

911 :909:03/06/17 21:01
>>910
すんまそんm(__)m

912 :912:03/06/17 21:05
どういたしましてm(__)m

913 :908:03/06/18 00:48
>>909
ありました
ありがとうございました

914 :デフォルトの名無しさん:03/06/19 02:52
>>909 >>910
あったそうだぞ。

915 :デフォルトの名無しさん:03/06/19 10:45
OSはWindows2000、Visual Studio 6.0でVC++つかってます。

タスクバー(通常デスクトップの下部にあるアレ)の高さを取得したいのですが、
具体的にどんな手順を踏めばいいんでしょうか?
ググってもそれらしきものが出て来なかったので…

916 :デフォルトの名無しさん:03/06/19 11:03
>>915
GetSystemMetrics(SM_CXFULLSCREEN),GetSystemMetrics(SM_CYFULLSCREEN)と
SystemParametersInfo(SPI_GETWORKAREA,...)の差分を取る。

917 :915:03/06/19 13:13
>>916
できました!ありがとうございました。

918 :デフォルトの名無しさん:03/06/19 19:15
詰まっています。質問させてください。
多少長くなってしまいますがすいません。

MFC AppWizard(exe)のダイアログ形式でアプリのスケルトンを作成すると、
例えばプロジェクト名をGikoとすれば"CGikoApp"という
CWinAppのクラスができますよね?

このクラスに、今現在アプリケーションがどのような状態なのかを
IDで保持しておく変数を付け加えました。

  private:
    UINT  m_uStatus;

そして、この変数に対して値を読み書きする為の
メンバ関数も付け加えました。

  public:
    BOOL SetAppStatus(UINT uIDStatus);
    UINT GetAppStatus();

(つづく)

919 :918:03/06/19 19:16
(つづき)

CGikiAppはgikoapp.cppでグローバル変数として宣言されています。

  CGikoApp theApp;

なので、別なクラスのメンバ関数からこのm_uStatusに対して
アクセスする為の記述として、以下のようにコードを書きました。

  //ステータス初期化(ログオフ)
  theApp.SetAppStatus(UM_APP_LOGOFF);
  …
  //ステータス変更(ログオン)
  theApp.SetAppStatus(UM_APP_LOGON);
  …
  //ステータスの取得
  if(theApp.GetAppStatus()==UM_APP_LOGON){

ですが、この時点で「theApp : 定義されていない識別子です」というエラーが出ます。
コードもtheApp. とまで入力した場合、メンバ一覧にちゃんと
先の2つのメンバ関数も出てきます。(SetAppStatus, GetAppStatus)

本アプリケーションの処理は基本的に一本道なので、
CGikoAppで情報を保持した方が良いのではと思いメンバ変数を追加したのですが…。
何が原因なのでしょうか?ご教授頂ければ幸いです。

環境は、Windows2000 サービスパック3 + Visual C++ 6.0 Professional Editionです。

920 :デフォルトの名無しさん:03/06/19 19:30
theAppを参照するファイル内に、
extern theApp;
てしたらどう?

921 :920:03/06/19 19:31
extern CGikoApp theApp; だった。
cppがインクルードしているヘッダファイルでも可

922 :デフォルトの名無しさん:03/06/19 19:51
>UINT GetAppStatus();

UINT GetAppStatus() const;
こうしたい(ボソ

923 :デフォルトの名無しさん:03/06/19 20:01
((CGikoApp*)AfxGetApp())->GetAppStatus()
で解決。

924 :デフォルトの名無しさん:03/06/19 20:29
>>923
もしそれでいけるのなら、なんでtheApp->GetAppStatus()
でいけないのだろう...

925 :デフォルトの名無しさん:03/06/19 20:39
フレームワークがポインタを持ってるんじゃない?

926 :デフォルトの名無しさん:03/06/19 20:45
>>924

それじゃどうやってもコンパイルエラーになるからだな。

927 :918:03/06/19 21:10
>>920-926
皆様ありがとうございます。
 
 extern CGikoApp theApp;
 または
 ((CGikoApp*)AfxGetApp())->GetAppStatus();

のように修正したところ、コンパイルエラーがなくなりました。
Giko.h(CGikoAppが宣言されているヘッダファイル)をインクルードしているので、
externは必要ないのかなと思ったのですが…。

また、>>922さんのご指摘もありがとうございます。

 UINT GetAppStatus() const;

に修正致しました。
確かに、この方がより確実ですね。

回答が遅くなってしまいすいませんでした&ありがとうございました。

928 :デフォルトの名無しさん:03/06/20 10:33
>CGikiAppはgikoapp.cppでグローバル変数として宣言されています。

externされてないグローバル変数がgikoapp.cppの外で参照できないのは当然かと

929 :861:03/06/20 15:39
タスクトレイアプリ制作中の861です。ハマってます。
(環境:Win2000 SP3 / MSVC6.0 / IE6.0SP1)

CTaskMainをメインのクラス(CWnd)、CTaskDlgConfigをメインから呼ばれて
表示されるダイアログのクラス(CDialog)として制作しています。
具体的には以下のような感じです。

//タスクトレイのポップアップメニューで[Config]を押した時の処理
void CTaskMain::OnConfigClick(){
  CTaskDlgConfig dlg;
  int nResult = dlg.DoModal();
  if(nResult == WM_USER_RESULTOK)
   AddNotifyIcon(IDR_ICONRED);
}
CTaskDlgChildクラスのダイアログを表示し、それがWM_USER_RESULTOKを返した場合
タスクトレイのアイコンを変化させるというような処理になっています。
AddNotifyIcon(UINT nIconResID)で、引数で指定したリソースのアイコンに変更します。

で、このCTaskDlgChildが開かれている間に、ダイアログ上のあるボタンをクリックすると
タスクトレイのアイコンが変わるような処理を追加したいと考えています。
なので、AddNotifyIcon()はCTaskMainのメンバ関数なので
  CTaskMain::AddNotifyIcon(IDI_ICONGREEN);
としてみたのですが、
  静的でないメンバ関数の中で呼び出しが正しくありません。
と言った旨のエラーにてはじかれてしまいます。
他に色々試してはみたのですが、どれもコンパイルエラーではじかれてしまうので
どうにもいかない状況です。

派生クラス(CTaskDlgConfig=CDialog)から継承したクラス(CTaskMain=CWnd)を
参照しているからいけないのか?等々考えてみましたが、いま一つ突破口になる
ものがつかめません。どなたかご教授頂ければ幸いです。

930 :デフォルトの名無しさん:03/06/20 15:54
>>929
今後のためにも一度C++の本読もうよ

931 :デフォルトの名無しさん:03/06/20 15:55
>>929
CTaskDlgChildからCTaskMainのインスタンスを参照できればいい。
((CTaskMain*)GetParent())->AddNotifyIcon(IDI_ICONGREEN);
で解決。

932 :861:03/06/20 16:17
>>931さん
機能しました!ありがとうございます。
クラスに関する学習が不十分だったと思います。精進します。

>>930さん
もっともです。現在時間があまり無い中での制作なので、
C++の概要と基本的な構文ぐらいしか勉強できていない状況です。
時間を取り、書籍で勉強したいところではあるのですが…。

確かにMFCはC++の知識無しでは理解できないし、
それに加えてWin32API等に関する勉強も必要なのですが、
最近新規に移行したものでどれもいっぺんに覚えられないのがもどかしいところです。
C++だけ知っていてもWin32APIの各種命令、関数など知らなければいけませんし、
MFCをやろうとしてもC++の概要を知っていなければ意味不明ですし…。
難しいところです。

休日は家にこもってC++の学習に勤しみたいと思います。

933 :デフォルトの名無しさん:03/06/20 21:38
CSocketを使用するプログラムを作っているのですが、
Connectで接続後、接続がきれるまで次の処理を待ちたいのですが
ソケットが閉じているか、閉じていないかを判別するには
どうしたらよいのでしょうか?

// コードにすると
while( /* 接続している */ )
  Sleep(100);

// 次の処理へ

934 :933:03/06/20 21:38
質問のage忘れすいません。

935 :デフォルトの名無しさん:03/06/20 22:04
>>933
そのスケルトンは冗談だよな?

936 :933:03/06/20 22:24
>>935
本当なのですが…
OnReceive() で全て処理しているのですが
駄目ですか?

937 :デフォルトの名無しさん:03/06/20 22:34
OnReceiveってCAsyncSocketの派生クラスでオーバーライドするメンバ関数でしょ?
CSocketとは関係ないような……???

938 :デフォルトの名無しさん:03/06/20 22:55
CSocketでもオーバーライドするんでなかったかな、OnReceiveは。

939 :933:03/06/20 23:01
>>937
本当ですね。
親クラスをCAsyncSocketにしても動きました。
OnConnect() でフラグを立てて、
OnClose() でフラグを消すことにします。
ありがとうございました。

940 :デフォルトの名無しさん:03/06/21 01:19
>>939
おそらく君はまだわかってない。

941 :デフォルトの名無しさん:03/06/21 12:02
ダイアログでピクチャボックスなどを貼り付けていると座標やらサイズが右下の方にでますよね
でもデバッグしててGetClientRectとかでとったサイズで、はなからこの大きさにしよう、
とおもってダイアログエディタで座標とサイズを見ながらぴったしほしいサイズにしても
実際に表示されると違った大きさになりませんか?


942 :デフォルトの名無しさん:03/06/21 13:17
実際ダイアログエディタで出る座標は実際の座標とは違うから、何故か。
コントロールの配置にしても座標は1ずつ変わってるのに画面上では微妙に合わなかったりする。
複数ダイアログ作る場合等に参考にする程度のものって感じ。

943 :デフォルトの名無しさん:03/06/21 15:08
「ダイアログ単位」って香具師が絡んでるんでしょ?

944 :デフォルトの名無しさん:03/06/21 15:37
スタティックコントロールを表みたいに並べた時に微妙に行間、列間が
合わなかったりするからね(´Д`;)
なんなんだろ、この仕様。

945 :デフォルトの名無しさん:03/06/21 15:40
フォントサイズが環境依存だからじゃないの?

946 :デフォルトの名無しさん:03/06/21 16:34
ダイアログ単位についてはMSDNの GetDialogBaseUnits() 参照。

DWORD base = ::GetDialogBaseUnits();
int pixelX = MulDiv( 1, LOWORD(base), 4 );
int pixelY = MulDiv( 1, HIWORD(base), 8 );

を実行すると、pixelX = pixelY = 2 となり、1ダイアログテンプレート単位が
2ピクセルに相当することがわかる。

すなわち2ピクセルの精度でしかコントロールを配置できない、ということになる...?

947 :デフォルトの名無しさん:03/06/21 17:20
 RECT wrTarget, crTarget;
 ::GetWindowRect(hWnd, &wrTarget);
 ::GetWindowRect(hWnd, &crTarget);

#define DUX (LOWORD(GetDialogBaseUnits()))
#define DUY (HIWORD(GetDialogBaseUnits()))
#define DSX(x) ((x) * 4) / (DUX)
#define DSY(y) ((y) * 8) / (DUY)


 CString kekka;
 kekka.Format( "ピクセル座標\r\n"
        "ウインドサイズ :(%4d, %4d)-(%4d, %4d) 幅=%4d, 高=%4d\r\n"
        "クライアントサイズ:(%4d, %4d)-(%4d, %4d) 幅=%4d, 高=%4d\r\n"
        "ダイアログ座標\r\n"
        "ウインドサイズ :(%4d, %4d)-(%4d, %4d) 幅=%4d, 高=%4d\r\n"
        "クライアントサイズ:(%4d, %4d)-(%4d, %4d) 幅=%4d, 高=%4d\r\n"
        , wrTarget.left, wrTarget.top, wrTarget.right, wrTarget.bottom, wrTarget.right - wrTarget.left, wrTarget.bottom - wrTarget.top
        , crTarget.left, crTarget.top, crTarget.right, crTarget.bottom, crTarget.right - crTarget.left, crTarget.bottom - crTarget.top
        , DSX(wrTarget.left), DSY(wrTarget.top), DSX(wrTarget.right), DSY(wrTarget.bottom), DSX(wrTarget.right - wrTarget.left), DSY(wrTarget.bottom - wrTarget.top)
        , DSX(crTarget.left), DSY(crTarget.top), DSX(crTarget.right), DSY(crTarget.bottom), DSX(crTarget.right - crTarget.left), DSY(crTarget.bottom - crTarget.top)
        );
でためしますた。ダイアログエディタの表示とは異なる結果が・・
ちなみにたて横15ピクセルの窓ですが7*6という結果になってしまいました。



948 :デフォルトの名無しさん:03/06/22 12:25
>>947
MapDialogRect()使ってね♥

949 :デフォルトの名無しさん:03/06/22 16:27
CMainFrameで子ウィンドウを新規に作成するには
::AfxGetMainWnd()->SendMessage(WM_COMMAND, ID_FILE_NEW);
って教えてもらったんですけど、
メッセージボックスのエラーがでます。
新規作成の関数を消してMFCに依存すると上手く実行できるのですが。

950 :デフォルトの名無しさん:03/06/22 16:42
MFCは糞ライブラリの代名詞

951 :デフォルトの名無しさん:03/06/22 16:47
>>949
エラーメッセージを読んで見ましょう。

952 :デフォルトの名無しさん:03/06/22 17:00
>>951
例外unknown software exception(0xc00000fd)がアプリケーションの0x5f466cbcで発生しました。


953 :デフォルトの名無しさん:03/06/22 18:35
どなたかワトソン先生の詳しい使い方を書いたサイトを教えてください。


954 :デフォルトの名無しさん:03/06/22 18:41
>>949
>新規作成の関数を消してMFCに依存すると上手く実行できるのですが。
あたりまえだと思う。

955 :デフォルトの名無しさん:03/06/22 19:11
>>952
何がしたいのかさっぱりわからんが
DocTemplate辺りを読んで見れ。

956 :デフォルトの名無しさん:03/06/22 21:56
>>955
そうなんです。DocTemplateを使いたいのですが、
OpenDocumentFileでパラメータを入れないと受け付けないし、
といった具合でうまくいかないのです。

957 :デフォルトの名無しさん:03/06/22 23:02
>>956
もっとちゃんと嫁。

958 :デフォルトの名無しさん:03/06/23 17:10
>>957
問題はCMainFrameで使いたいことにあるのです。

959 :デフォルトの名無しさん:03/06/23 17:24
>>958
そんなことは全然問題じゃない

960 :デフォルトの名無しさん:03/06/23 19:48
>>959
どうすりゃいいんすか?

961 :デフォルトの名無しさん:03/06/23 22:45
VisualStudioの『プロジェクト』の『設定』の『リンク』に関するオプションは,
プログラム中に以下のように記すことが出来ますが,
#pragma comment(linker, 〜

『プロジェクト』の『設定』の『C/C++』に関するオプションは,
同じように,#pragma 〜 で記述することは出来ないでしょうか?

よろしくお願いします.

962 :デフォルトの名無しさん:03/06/23 22:56
出来ないです。

スレ違いでもあるが。

963 :デフォルトの名無しさん:03/06/23 23:00
>>962
残念です.
微妙にスレ違いかと思いましたが,多分,このスレの人の方が関係あるかと・・・

どうも有り難うございました.

964 :デフォルトの名無しさん:03/06/24 18:21
↓に置いてあるようなメモリー最適化とか解放ツールって内部でどんなことやってるんでしょうか?
ttp://www.vector.co.jp/vpack/filearea/win95/hardware/mem/by_trend.html

965 :デフォルトの名無しさん:03/06/24 18:32
>>964
そのページにある「超M」ってソフトにソース付いてるヨ(MFC)

原理はどれかのヘルプで説明してるでしょ
片っ端からダウンロードして読みな!


966 :964:03/06/24 18:45
>>965
ありがとうございます。
ソース付のもあったんですね……。

大量にメモリを確保して、スワップを起こさせてるのか。

API スレのほうで聞くべき質問でした、すいません。

967 :デフォルトの名無しさん:03/06/24 19:08
スレ違いだったら申し訳ないんですが、vc6でcファイルやcppファイルの関連付け
のパラメータ設定ってどうなってますか? 

他の開発ツールが勝手に関連づけ変えちゃったのでエクスプローラーから

"C:\Microsoft Visual Studio\Common\MSDev98\Bin\msdev.exe" "%1"

って感じに修正したら・・・
必ず新しいMSDEVを起動してソースを開くようになっちゃいました( ´Д⊂ヽ
※以前は最後にアクティブにしたmsdevウインドウで開いてくれたのですが



968 :デフォルトの名無しさん:03/06/24 19:19
>>967

DDEなんで説明がメンドー。だし、やっぱりスレ違い。

969 :967:03/06/24 19:54
>>968
DDEメッセージに[open("%1")]て入れたら行けマスタ。スレ汚しスマソ(´・ω・`)


970 :デフォルトの名無しさん:03/06/25 00:19
CFormViewの中身の大きさを、作成時にプログラムからで設定するにはどうすたらいいんですか

971 :デフォルトの名無しさん:03/06/25 00:57
GetDlgItem( )->SetWindowPos

972 :デフォルトの名無しさん:03/06/25 01:19
違うな。SetScrollSizesだ。

973 :デフォルトの名無しさん:03/06/25 02:06
MFCって理解しにくいよ。
そこでお願いなんだけど、良い参考書、お勧めの参考書を教えて欲しいんだ。
出来ればAppWizを使わないで解説してくれるようなのがいいな。

974 :デフォルトの名無しさん:03/06/25 11:35
>>973
AppWiz使うとどういう不都合がありますか?

975 :デフォルトの名無しさん:03/06/25 18:53
>>957
ホント、どうすればいいんですか?

976 :デフォルトの名無しさん:03/06/25 18:55
ダイアログウィンドウをリサイズさせたいんですが、イベントはどのように受け取ればいいでしょうか?
ご存じのかたがおられましたら教えてください。

977 :デフォルトの名無しさん:03/06/25 19:14
CListCtrl で Itemの無い領域(最大列(行)数より右(下)) も
OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult) で
描画させる方法はありますか?

978 :デフォルトの名無しさん:03/06/25 19:19
>>973
とりあえず4000円未満の本は無視。
10000万円前後で探せばあるかも。
あと洋書、もしくは原著が外人。

979 :デフォルトの名無しさん:03/06/25 19:25
>>975
try{
  ::AfxGetMainWnd()->SendMessage(WM_COMMAND, ID_FILE_NEW);
}
catch(...){
  MessageBox("MFC逝ってよし!");
}

980 :デフォルトの名無しさん:03/06/25 19:35
>>978
どっかの国買えそう。

981 :デフォルトの名無しさん:03/06/25 19:41
買えるかなあ?

982 :デフォルトの名無しさん:03/06/25 20:20
>>976
イベントを取るって?

983 :デフォルトの名無しさん:03/06/25 20:30
>977
OnEraseBkgnd じゃだめなの?

984 :デフォルトの名無しさん:03/06/25 22:22
AВГД・EЁ

985 :デフォルトの名無しさん:03/06/25 23:34
>>974
MFCとしての構造が理解しにくい

>>978
1万円か〜
と思ったら一億!!
ムリっす

986 :デフォルトの名無しさん:03/06/26 01:58
買え!

987 :デフォルトの名無しさん:03/06/26 02:00
次スレまだ〜?

988 :デフォルトの名無しさん:03/06/26 02:14
>>985
ウィザードの吐くコードなんかたかが知れてるだろ。
あの程度把握できなきゃMFCの内部なんか到底無理。

989 :デフォルトの名無しさん:03/06/26 03:16
「MFCによるWindowsプログラミング」を薦めたいところだが売ってないみたいだしな

990 :デフォルトの名無しさん:03/06/26 04:07
■ VisualC++(MFC限定)相談室 MFC7.dll■
http://pc2.2ch.net/test/read.cgi/tech/1047949606/
■ VisualC++(MFC限定)相談室 MFC6.dll■
http://pc2.2ch.net/tech/kako/1039/10396/1039607377.html
■ 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


ごめん、スレ立てれなかった。誰か頼む〜

991 :デフォルトの名無しさん:03/06/26 08:48
立てました
http://pc2.2ch.net/test/read.cgi/tech/1056584836/

992 :デフォルトの名無しさん:03/06/26 22:20
>>991

ありがとうー

240 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)