トップページ⇒tech
992コメント304KB

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

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001的場フミオNGNG
             / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      ∧_∧   <  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
0002デフォルトの名無しさんNGNG
CListCtrl系のDrag&Dropについて参考になるサイトを教えて下さい。

Googleで引っかからん・・・
0003デフォルトの名無しさんNGNG
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

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

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
0004デフォルトの名無しさんNGNG
禁煙パピコ
0005おまいら!NGNG
CStringからconst WCHAR*型に変換する方法を教えてくれ。すぐ教えてくれ。
00065NGNG

いや、まじでお願いします。
0007デフォルトの名無しさんNGNG
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が印刷されちゃいますよね。
それを隠す方法があれば、ご教授ください

よろしくお願いします
0008デフォルトの名無しさんNGNG
>>6
GetBuffer()
MultiByteToWideChar()
00095NGNG
あった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;


00105NGNG
>>8
サンクス。それも試してみるっす。
0011デフォルトの名無しさん NGNG
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]...
って書き込まれますか?

0012デフォルトの名無しさんNGNG
>>11
試 せ ば い い だ ろ ?
001311NGNG
ダメなのですが、
変数をファイルのストリームに書き込む方法は
どうすればいいでしょうか?
0014デフォルトの名無しさんNGNG
>>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は使わないほうが楽
001511NGNG
>>14
hとかの変数の値が入らないのですが・・・。
0016デフォルトの名無しさんNGNG
オブジェクトの挿入とかの「Microsoft Excel ワークシート」みたいな文字列を
ID から取得する方法はありますか?
0017名無し~3.EXENGNG
Cに関する雑談のできるIRCチャンネルはありませんか?
00182NGNG
誰か教えてよ・・・>>2
0019デフォルトの名無しさんNGNG
>>2
http://www.codeguru.com/listview/index.shtml
0020デフォルトの名無しさんNGNG
http://www.codeproject.com/listctrl/#Drag%20and%20Drop
0021デフォルトの名無しさんNGNG
>>15
どんなコード書いたんだ?
0022デフォルトの名無しさんNGNG
誰も7の疑問わからないのか?
答えてやれよ
0023デフォルトの名無しさんNGNG
>>22 == >>7
0024デフォルトの名無しさんNGNG
レジストリに関連付けの変更や定義アイコンの変更を施した後、
実際にデスクトップ上のアイコンにも適用を施す処理ってありますか?

どうもそのままだと、アイコンが更新されないのですが・・・
すいませんが教えてください
0025デフォルトの名無しさんNGNG
>>24
SHChangeNotify( SHCNE_ASSOCCHANGED, ... );
0026デフォルトの名無しさんNGNG
これ何だろ?
ダイアログベースアプリ終了時に出力ウィンドウに出て来るんだが・・・
子ウィンドウのモードレスダイアログがあるからその関係かな・・・

Warning: calling DestroyWindow in CDialog::~CDialog --
OnDestroy or PostNcDestroy in derived class will not be called.
0027デフォルトの名無しさんNGNG
自己レスだけど、メッセージそのままの意味だった。
親ウィンドウのOnDestroyで、明示的に子ウィンドウをDestroyWindow
してやると消えた。

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

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

ちょっと覚えている方、ヘルプよろしく!
0029デフォルトの名無しさんNGNG
>>7
IEのページ設定のヘッダー・フッターどうかするんじゃないの
自分のプログラムだけなら一時的にそのへんのレジストリいじるとか
0030デフォルトの名無しさんNGNG
MDIでプログラミングをしたいんだけど、
子ウィンドウを複数種類作りたいんです。
デフォルト以外の子ウィンドウを足すにはどうすればよいでしょうか?
参考になるサイトか方法を教えてください。
0031デフォルトの名無しさんNGNG
まずは本買いなさい。
話はそれからだ。
0032デフォルトの名無しさんNGNG
ふつーそんなこと書いてませんよ。
003332NGNG
本当にどう書けばいいのでしょう?
VC++のように、ソース、リソースダイアログ etc.
のようにしたいのですが。
0034デフォルトの名無しさんNGNG
このスレッドで消化されていない7の質問
誰もわかるやついねえのか?
そろそろ教えてあげなよ
0035デフォルトの名無しさんNGNG
>>32
ハァ?(顔文字略

>>34
正直、知らん。
0036デフォルトの名無しさんNGNG
>>30
前スレを読めと。
0037デフォルトの名無しさんNGNG
CListCtrlをレポートビューで使っています。
コラムの幅より長い文字列をInsertItemすると略されて「hogehoge...」
と表示されますよね。これを全て表示するようにする方法はありますでしょうか。


0038デフォルトの名無しさんNGNG
>>37
コラムの幅を増やせば良いとおもうが...。
0039デフォルトの名無しさんNGNG
自分で計算するのがめんどかったら
ListView_SetColumnWidthでLVSCW_AUTOSIZE
0040デフォルトの名無しさんNGNG
CTreeCtrlでCImageListで画像を関連づけて
その画像を表示することはできるのですが
画像の背景の色を透過できないんですが
どうすればできるでしょうか?

CImageListの方でSetBkColor(CLR_NONE)あたりを使うと思うのですが
マスクを使うというのがいまいちよく分かりません
0041デフォルトの名無しさんNGNG
MFCの仕事はまだあるんですか?
これからもあるんですか?
0042デフォルトの名無しさんNGNG
>>41
部長に聞け。
0043デフォルトの名無しさんNGNG
>>41学生でつ。
先生はパーでわかってません。
004443 == 41NGNG
>>41は学生という意味です。
部長いません。
0045デフォルトの名無しさんNGNG
パソコン部長ですがなにか?
0046質問NGNG
すいません質問です。
PlatformSDKの最新をインストールして、新たにMFCアプリを作ろうとしてビルドしたところ、
意味不明なエラーが出てきました。

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

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

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

開発環境はVC++6、WinXPPROです。
だれかご存知な方はいますでしょうか?
0047デフォルトの名無しさんNGNG
MFCアプリ(ダイアログベース)を作ってるんですが、
エンターキーを押すとアプリが終了してしまいます。
終了しないようにするにはどうやったらいいのでしょうか?
0048デフォルトの名無しさんNGNG
>>47
PreTranslateMessageでキーをトラップしてreturn false;
ちなみにESCキーでも同じ現象が起こる
004947NGNG
できました。ありがとうございました。
0050デフォルトの名無しさんNGNG
>>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);
}
0051デフォルトの名無しさんNGNG
>>ただそれだとtabによる移動や
おっとこれは大丈夫だね
0052デフォルトの名無しさんNGNG
すいません。MDIの新規作成の子ウィンドウの追加の方法はわかったのですが、
VC++がツリーをクリックすれば、子ウィンドウを作るように
メニュー以外で必要なダイアログを必要な情報(ファイル)を足して
子ウィンドウを作るにはどうすればいいのでしょうか?
0053デフォルトの名無しさんNGNG
>48-52
void CHogeDlg::OnOk()
{
//do nothing
}

の方がよくね?簡単だし。 ま、解決してるならいいか。
0054デフォルトの名無しさんNGNG
× void CHogeDlg::OnOk()
○ void CHogeDlg::OnOK()
0055デフォルトの名無しさんNGNG
>>53
DoModal()で作るならそれでいいけど
Create()で作る場合もあると考えるとPreTranslateMessage()を使う方がいい
Create()で作った場合はOnOK()使わんし
0056デフォルトの名無しさんNGNG
CreateでもOnOKでdo nothingには変わりないと思うが
0057デフォルトの名無しさんNGNG
ん? あれれ? Create()で作った場合ってOnOK()にメッセージ�dできたっけ?

飛んでこなかったから私はPreTranslateMessage()を使い始めたような・・・
以前はOnOK()のデフォルト処理をコメントアウトしてたけど
0058デフォルトの名無しさんNGNG
>MFCアプリ(ダイアログベース)を作ってるんですが、
OnOKに一票
0059デフォルトの名無しさんNGNG
>>52
質問が意味不明でわかりにくい。
何がわからないのかちゃんと書かないと?
CDocTemplate::OpenDocumentFileのことか?
0060デフォルトの名無しさんNGNG
>>55 >>57
モードレスでも OnOK呼ばれる。IDOKボタンがなくても呼ばれる。
006152NGNG
>>59
VCは、ツリーのダイアログバーをクリックすると、子ウィンドウが新規に作成されるじゃないですか。
で、必要に応じて、対応しているファイルを開いてエディットに表示するじゃないですか。
それから、メニューバーのファイル から、ワークスペースを閉じる で子ウィンドウを
終了できるじゃないですか。
そのような仕組みはどのようにすればいいのかな?
と質問しました。
わかりにくくてごめんなさい。
0062デフォルトの名無しさんNGNG
※急募!※
MFCのドキュメント・ビューアーキテクチャーにIShellBrowserをぶっこむ方法を知ってる人
0063デフォルトの名無しさんNGNG
VC++/MFCは、UNICODEを簡単にASCIIというかSJISに変える方法も無いんで鹿?
0064デフォルトの名無しさんNGNG
>>61
MSDNに載ってる
006552NGNG
>64
どの項目をみればいいんでしょうか。
0066デフォルトの名無しさんNGNG
>>63
W2Aとかいうマクロがある
0067デフォルトの名無しさんNGNG
>>66
なんか、定義されてないってコンパイルエラーだけど。
0068デフォルトの名無しさんNGNG
>>61
CMultiDocTemplate::OpenDocumentFile()でファイルが開けるんじゃないの?
子ウィンドウが閉じたかったら、アクティブなフレームにPostMessage(WM_CLOSE)

とりあえず『MFCアンサーブック』でも立ち読みしてくれ。
0069デフォルトの名無しさんNGNG
>>67
AFXPRIV.Hインクルード
0070前スレの985NGNG
前スレの985ですが、思い出したので追記しておきます。
CDocTemplate::OpenDocumentFile(NULL) だと
ビューに加えてドキュメントも作成されてしまうので、
ドキュメントとビューの関係が 1 対 多 ではなく 多 対 多 になってしまっていました。
CDocTemplate::CreateNewFrame() と CDocTemplate::CreateNewDocument()
を分けて使うことで今度こそ期待通りの動作をするようになりました。

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

>>61
この発言が参考にはなりませんか?
また全てのウインドウを閉じるのは CloseAllDocument() というのがあります。
0071デフォルトの名無しさんNGNG
ちょっと、変なこと聞くかも知れないんだけど、
コンボボックスとかリストボックスってデータの数が増えても対応するじゃん。
で、配列を動的に宣言して増やしてるんだと思うんだけど、
どうやってそういうのをかきゃいんですか?
0072デフォルトの名無しさんNGNG
有難うございました。>>69

ATLかMFCのバージョン違いみたいで、自分のバージョンでは、
CString str = CString(bstr);strcpy(cBuf, str);
みたいな感じになりましたが。
0073デフォルトの名無しさんNGNG
UNICODE文字列の配列宣言教えてください。
0074デフォルトの名無しさんNGNG
>>71
CArray

>>73
WCHAR* aa[100];
007552NGNG
>>70
助言ありがとうございます。
騒がせながら、CMainFrame のなかで、Create()で作れました。
しかし、子ウィンドウを操作するに当たり、
子ウィンドウの持っている変数に値を代入したり
する方法がわかりません。MDIGetActive()ではアクティブな
ものしか取得できませんし。
何かご存じないですか?

0076デフォルトの名無しさんNGNG
動的に作られたCEditにスクロールバーをつけたいんですが
どうしたらいいでしょうか?
ModifyStyle, ModifyStyleEx のとちらも試しましたがだめです、、。
0077デフォルトの名無しさんNGNG
ListCtrl を派生させて色々作ってるんだけど
あるセルの値が変わった時に例えば1秒間
表示色を変えよう、と思ったらどういう手段がありますか?

全然思いつかないんだが・・・
0078デフォルトの名無しさんNGNG
>>77
タイマー使えばいいんじゃないの?
0079デフォルトの名無しさんNGNG
>>76
>ModifyStyle, ModifyStyleEx のとちらも試しましたがだめです
どんなスタイルを設定してダメだったか書けよ。
Createするときにちゃんと ES_ 系のスタイルを指定したか?
WS_HSCROLL や WS_VSCROLL を忘れてないか?
0080デフォルトの名無しさんNGNG
>>79
コントロールをCreateしているソースの個所は私が見ることができないのでわかりません。
が、一旦作成されたCEditに対して、
ModifyStyleEX( 0, WS_HSCROLL|WS_VSCROLL)
を呼んでもスクロールバーがつかないというのはどういうことなのでしょうか?
0081デフォルトの名無しさんNGNG
m_edit.ModifyStyleEX( 0, WS_HSCROLL|WS_VSCROLL);
^^^^^^^
↑これが無いってオチじゃないよね
0082デフォルトの名無しさんNGNG
>>81
m_zEdit.ModifyStyleEX( 0, WS_HSCROLL|WS_VSCROLL);
ってコールしてます。
むぅ。。。
0083デフォルトの名無しさんNGNG
>>82
>>79も書いてるけどES_ 系のスタイルは指定してんの?ES_MULTILINEとか。
0084デフォルトの名無しさんNGNG
>>82
m_zEdit.ModifyStyle(0, WS_HSCROLL | WS_VSCROLL, SWP_DRAWFRAME);
0085デフォルトの名無しさんNGNG
>>84
ありがとうございます。でもだめみたいです。
CEditはリードオンリーモードになっていて、その内容が動的に
変わるようになっています。CEditが貼り付けられているメインダイアログ
のOnInitDialog()内と、テキストの内容を書き換えるごとに

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

をコールしてみましたがだめです。ユーザの実務上クリティカルな問題なので
何とかしたいと思っています。何かアイデアがありますでしょうか、、、。
0086デフォルトの名無しさんNGNG
>>84
あわわ、やっぱりそれで正しかったようです。
ES_AUTO*SCROLLとWS_*SCROLLを混乱していました。おっしゃるように
コーディングしたところ動作しました。ありがとうございました!
まとめ。
m_zEdit.ModifyStyle(0, WS_HSCROLL | WS_VSCROLL, SWP_DRAWFRAME);
SWP_DRAWFRAMEの指定がポイントでした。


0087名無し@沢村NGNG
>>62
CHtmlView使え
008862NGNG
>>87
おお!ありがとうございます!
半分あきらめかけていたところでした!
タイムリミット9分前の劇的なレスにちょっとシビれています。

CHtmlViewですか。
さっそく調べてきます。
0089デフォルトの名無しさんNGNG
スプリッタつかって縦3分割してるフレームをサイズ変更する際に
デフォルトではスプリッタ自体の位置が変わらないと思うのですが
真中のViewの高さだけを変える方法はありますか?
0090デフォルトの名無しさんNGNG
>>89
スプリッタを入れ子にする。
0091デフォルトの名無しさんNGNG
あ、90は勘違い。
自分で計算してWM_SIZEで変えたら?
0092デフォルトの名無しさんNGNG
スプリッタのsetrowinfoだったかでできなかったっけ?
(うろおぼえ)
0093デフォルトの名無しさんNGNG
ファイルダイアログをセーブモードで使っていて、既存のファイルを指定して
保存ボタンが押された場合上書き確認のダイアログを出したいのですが、
フラグか何かでMFCにやってもらう方法はありますでしょうか。
それとも自前で実装するしかないんでしょうか。
0094デフォルトの名無しさんNGNG
>>93
CFileDialog でMSDN見たらそのまんま載っていると思うが。
0095デフォルトの名無しさんNGNG
>>94
ありました。OFN_OVERWRITEPROMPTですね。
てめーで調べずにここですぐ聞こうとする癖を改めますです。
0096デフォルトの名無しさんNGNG
>>91-92

できますた。ありがとうございませた。
0097デフォルトの名無しさんNGNG
CFrameWnd でコントロールバーがDockingした時点を検出する方法はあります?
0098デフォルトの名無しさんNGNG
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();
}
0099デフォルトの名無しさんNGNG
>>97
自信ないけどCDockBar::DockControlBar(), CDockBar::ReDockControlBar()あたりか、
どちらも仮想関数ではないし、CDockBarを持ってるCMiniDockFrameWndもポインタでは
持っていないのでDockControlBar()などから検出するには書き足さないとむりだな、
CDockBarとCMiniDockFrameWndの派生クラスを作って、、、も、無理か
0100デフォルトの名無しさんNGNG
>>98
CFileDialogで指定したパスにout.txtが作られていると見た。
ファイル選択するときにカレントディレクトリが変わってんじゃない?
0101デフォルトの名無しさんNGNG
>>97
多分、CDockContext::StartDrag()で検出できる。これは仮想関数なので
派生して、オーバーライドすればよいはず。CDockContextを持っている
CControlBarはポインタでCDockContextを持っているので都合はよいが
CDockContextを生成するEnableDocking()が仮想関数で無いのでCToolBar
などを使用する場合には都合が悪い。ただ、EnableDocking()はプログラム中では
明示的に呼び出しているので(普通はCMainFrame::OnCreate())その後で
普通に生成されたCDockContextのCControlBar::m_pDockContextをdeleteして
CDockContextの派生クラスをnewしてm_pDockContextにいれればOKか
0102101NGNG
これであってるのかは知らないけどな。
もっと簡単な方法があったらアフォですな。
0103デフォルトの名無しさんNGNG
さびれたねぇ。
0104デフォルトの名無しさんNGNG
たった四時間でか
010598NGNG
>>100 Σ(´Д`ズガガーン
大正解ですた。いたる所にout.txtが!!
これで成仏できます。ありがとう。ありがとう。
0106デフォルトの名無しさんNGNG
>いたる所にout.txt
ワラタ
0107デフォルトの名無しさんNGNG
CTreeCtrlの選択されたアイテムのラベルをコンテキストメニューでクリップボードに
コピーできるようにしたいのですが方法がありますでしょうか。
0108デフォルトの名無しさんNGNG
>>107
あります。

ちょっと調べりゃ分かるだろ……
0109デフォルトの名無しさんNGNG
>>105
俺も昔それやった
スタートメニュー→ファイル検索でtest.txt検索したらあちこちのフォルダに保存されてた(w
0110デフォルトの名無しさんNGNG
MFCでアプリケーション作成しているのですが、midiを流す方法がわかりません。
DirectXの知識がないので、APIを使えばできるとか聞いたのですが。
まだWindowsプログラミングは初心者なものでどうしていいか・・・
アドバイスお願いします。
0111デフォルトの名無しさんNGNG
>>110
http://www.google.com/search?q=MFC+MIDI
0112デフォルトの名無しさんNGNG
ダイアログベースのピクチャボックスにマウスクリックで線を引きたいんだけど
0113デフォルトの名無しさんNGNG
>>112
引けば?
0114デフォルトの名無しさんNGNG
>>112
何を聞きたいのか分からないんだけど。
入門書でも読んでろ。
0115110NGNG
>>111

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

じゃ、どうする?死ぬか?
ゴチャゴチャ言わずにサッサト教えろ。
0116デフォルトの名無しさんNGNG
ごめんなさい。もうゴチャゴチャいいません。氏にマス。
0117デフォルトの名無しさんNGNG
>>115
(゚Д゚) ハァ?
0118デフォルトの名無しさんNGNG
>>115
まず検索して、試行錯誤して、詰まってから来い。
、と釣られてみる。
0119デフォルトの名無しさんNGNG
MFCのWebブラウザオブジェクトにホームページを表示させて
制御する際に、User-Agentを変更する方法ってありますか?

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

もし、いい代案があれば、ご教授ください
よろしくお願いします
0120デフォルトの名無しさんNGNG
Navigate()で変えられる。
0121119NGNG
バナー処理とはまた別の話で、Webブラウザオブジェクトに表示させた
Webページ上から、別のページにリンクした際に、そのURLを
履歴に残さないようにする方法ってありますか?
0122デフォルトの名無しさんNGNG
>>121
キミは検索したのかね。
WebBrowser 履歴で検索したら重要なヒントが出てきたぞ。
ttp://www.microsoft.com/japan/msdn/weeklynews/webteam000825.asp
0123119NGNG
>>122
ありがとうございます
そこでかかれているようなコンテンツ側ではなくプログラム側で
制御することはできないでしょうか?

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


0124デフォルトの名無しさんNGNG
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);
}
0125デフォルトの名無しさんNGNG
MFCちゃうやん
0126デフォルトの名無しさんNGNG
せっかくなんで聞くけど
mciSend***でmidi鳴らすときって
ハードで鳴らせればハード、
ない場合はソフトみたいに自動的に選択してくれてるの?

0127デフォルトの名無しさんNGNG
(´-`).。oO(何がせっかくなんだ?)
0128124NGNG
MFCを使って、AAAviewクラス(プロジェクト名がAAA)のコンストラクタに
mciSendString("open 'C:\test.mid' alias mcitest",NULL,0,NULL);
mciSendString("play mcitest",NULL,0,NULL);
を書き
デストラクタでクローズするようにしました。
これでもならないのですが・・・
0129デフォルトの名無しさんNGNG
>>124
細かいつっこみはしないが、
mciSendString("open C:\\test.mid alias mcitest",NULL,0,0);
↑のようにすればいい。クラスは関係ない。

0130デフォルトの名無しさんNGNG
mciSendString("open C:\test.mid alias mcitest",NULL,0,0);

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

(⊃Д`)ありがとう。できました
0132デフォルトの名無しさんNGNG
>>123
答えそのものが載ってるわけじゃないよ。
そこをヒントにすればプログラム側でも制御できる。
0133デフォルトの名無しさんNGNG
>>121
OnBeforeNavigate2のフラグ制御は?

って調べてみたら、このフラグ、未使用なんだね
0134デフォルトの名無しさんNGNG
mfcで選んだディレクトリにあるファイルやフォルダの名前やサイズを
全部取得したいんですが、便利な関数無いですかね?
いちおうMSDNで調べてみるとCFindFileというクラスが見つかったのですが、
ファイル名指定しないと行けないみたいなので悩んでいます。
0135デフォルトの名無しさんNGNG
>>134
ワイルドカード使えばええやん
0136デフォルトの名無しさんNGNG
関係ないけど_findfirstと_findnextの方が数倍早くね?
0137デフォルトの名無しさんNGNG
>>136
MFCと混在させるのはよくない
0138デフォルトの名無しさんNGNG
CHtmlView上で左クリックを検知して親ウィンドウにイベントを発生させたいのですが、
どのようにして左クリックを検知すればいいのでしょうか?
0139デフォルトの名無しさんNGNG
>>138
過去ログを読めと。
0140任意のIE履歴を消すNGNG
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なのですが・・・)

どなたか教えてください
0141デフォルトの名無しさんNGNG
FAQかもしれませんが、IHTMLElement2が未定義と言われてしまいます。
#include <mshtml.h>
してもダメでした。
MSHTML::IHTMLElement2* pIHTMLElement2;
と書いたり、
CComQIPtr<IHTMLDocument2> pIHTMLElement2;
と書いても未定義と言われてしまいます。どうすれば解決できますでしょうか?
環境はWinXP+VC6SP5+IE6SP1です。
0142名無し@沢村NGNG
>>141
ヌヒよ、#import "mshtml.idl" でどうだ。
0143デフォルトの名無しさんNGNG
>>141
mshtml.hが古いんじゃないの?
とりあえずGoogleでIHTMLElement2をキーワードに検索することを薦める。
0144デフォルトの名無しさんNGNG
だれか>>140に教えてやれよ
せっかくコードまでのせてんだからさ
0145デフォルトの名無しさんNGNG
>>142
ありがとうございます。「.idl」では開けなかったのですが
#import "mshtml.tlb"
と書いたらコンパイル通りましたです。

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

0146デフォルトの名無しさんNGNG
>>144
140必死だな
0147140NGNG
>>146
わからない香具師は騙っててください。
0148デフォルトの名無しさんNGNG
>>147
回答を得られる可能性を自分で断ったな。
0149140NGNG
>>708
お口添えありがとうございます
やっぱり特殊分野なので、さすがにみんなわからないんでしょうね

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

ちょっとせっぱ詰まっています。
解決できなければ上司におこられます
よろしくお願いします
0150デフォルトの名無しさんNGNG
>>149
怒られてください。

はい次↓
0151デフォルトの名無しさんNGNG
708は向こうのスレの「協力者」だな。
0152デフォルトの名無しさんNGNG
708てものすごいあからさまなコピペに笑った
0153デフォルトの名無しさんNGNG
スゲェよ!>>149!
あんた最高のネタ野郎だ!!
0154デフォルトの名無しさんNGNG
相互リンク
IEコンポーネントを使い倒すスレ
http://pc2.2ch.net/test/read.cgi/tech/982930049/l50
0155デフォルトの名無しさんNGNG
まぁ>>140のどこがMFCと関係あるのかという根本的な問題があるわけだが
0156デフォルトの名無しさんNGNG
つーか、>>7==>>22もだよな。
仕事で詰まったら全部他人にやらせるつもりか。
0157デフォルトの名無しさんNGNG
まあまあ、みんな相談室の原点に戻ってさ、
140の質問も勉強だと思って、消化していこうよ
0158デフォルトの名無しさんNGNG
すでに「スレ違い」ということで消化されている罠。
0159デフォルトの名無しさんNGNG
c++でiso-2022-jpをデコードできるサンプルありませんか?
0160デフォルトの名無しさんNGNG
JIS>Unicodeの変換の例ならRougewaveのドキュメントが京大の鯖に転がってるが
0161デフォルトの名無しさんNGNG
だからMFCと何の関係があるのかと・・・
0162デフォルトの名無しさんNGNG
システムメニューのサブメニューにチェックを入れたいのですが
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);
}

と呼ぶとダメなようです。
どのあたりが問題でしょうか?
0163162NGNG
すみません。質問なのでage升
0164162NGNG
OnCreate内のCMenuをグローバルで持たせたら解決しました。
首吊ってきます…
0165デフォルトの名無しさんNGNG
せめてメンバ変数に汁
0166162NGNG
あ、メンバ変数にしてました。ひよっこで申し訳ないです。
0167デフォルトの名無しさんNGNG
ドラッグ中にマウスのポインタを変えるにはどうすればいいですか?

ドラッグは検知できているとして
0168デフォルトの名無しさんNGNG
>>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
0169デフォルトの名無しさんNGNG
突然で申し訳ありません。前も似たものをかきこしたのですが、
MDIで開く を自前で実装するにはどうすればいいのですか?
(実際はファイルが決まっているのでダイアログを表示しないでいいのですが)
ご存じであれば教えてください。お願いします。
0170デフォルトの名無しさんNGNG
VISUALSTUDIO.NETっていくらするの?
0171169NGNG
ものによってです。アカデミックの3万ぐらいから上は30万ぐらいまで。
0172169NGNG
>>170
ものによってです。アカデミックの3万ぐらいから上は30万ぐらいまで。
0173デフォルトの名無しさんNGNG
>>167
http://www.google.com/search?q=OnDragOver+COleDropTarget+%83%7D%83E%83X%83%7C%83C%83%93%83%5E&lr=lang_ja
0174デフォルトの名無しさんNGNG
thread の中で、this ポインタを引き継いでって
SetWindowTextとはなら成功するんですが...
UpdateData が必ず 「Debug Assertion Failed!」って
失敗してしまうんですが、
そういう仕様なんでしょうか?
0175デフォルトの名無しさんNGNG
VC++.NETにもMFCはあるの?
0176デフォルトの名無しさんNGNG
>>174
多分、SetWindowText()はウインドウメッセージを送るだけの処理なので
HWNDを生成したスレッドでなくても大丈夫で、
UpdateData()は普通のメンバー関数なので、別のスレッドから
呼び出せないようにASSERT()いれてあるんだと思う
0177デフォルトの名無しさんNGNG
>>174
仕様です。

>>175
あります。
0178デフォルトの名無しさんNGNG
CListCtrlのヘッダ部分の高さを変えるにはどうすればいいんでしょうか?
CheaderCtrlでヘッダ取得してSetWindowPosで無理矢理変えたらヘッダだけは高さ変わったんですが
ヘッダの裏にあたる(?)リストの部分の高さが変わらずヘッダの部分が内容に被ってしまいますた。
0179デフォルトの名無しさんNGNG
CImageList
0180デフォルトの名無しさんNGNG
CEditであるキーが入らないようにするにはどうすればいいですか?
例えば「a」が入らないように・・・
0181デフォルトの名無しさんNGNG
>>180
CEditの派生クラスで好きなようにしる!
0182デフォルトの名無しさんNGNG
             / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      ∧_∧   <  OnCharで出来ました。
     ( ´_ゝ`)   \ アリガトー!>>181 
    /::☆::::☆::\   \________
   /:/\:::::☆::/ ̄\
 _| ̄ ̄ \☆/  ヽ \_
 \ ̄ ̄ ̄ ̄ ̄ ̄ \__)
  ||\            \
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
  ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
     .||              ||
0183デフォルトの名無しさんNGNG
MFCでアイドルループどう書きますか?
0184デフォルトの名無しさんNGNG
const int kago = 1000;
for (int tsuji = 0; tsuji < kago; tsuji++)
{
・・・・
}
0185デフォルトの名無しさんNGNG
ワラタ
0186デフォルトの名無しさんNGNG
複数ダイアログバーあるとき
親のフレームのサイズを縮めると
かってにはみ出たダイアログバーが
下に下がっちゃうんだけど・・・

下がって欲しくないときはどうするん?
0187デフォルトの名無しさんNGNG
少しMFCと話題ずれるけど、EXEに関連づけられた
アイコンって、あとからbmpとかを読み込んで再定義とか
できるの?
本来なら、レジストリで、exeに埋め込まれたアイコンデータを
参照するようだけど。
教えてください
0188デフォルトの名無しさんNGNG
exeのリソース書き換えてアイコンを変更することはできる。
0189187NGNG
>>188
うーん・・・
外部に画像ファイルとして持たせて、ユーザーが選択
できるようにしたいのですが・・・
0190デフォルトの名無しさんNGNG
exeのリソースを書き換えるプログラムを同梱すれ。
0191デフォルトの名無しさんNGNG
ウィンドウの垂直位置をMoveWindowで負の座標にもっていっても
自動的に、タイトルバーが見える状態に下がってしまいますが
(デスクトップ上で移動で試しても確認できます)
これを禁止するか、座標が修正されたタイミングを取得する方法って
ありますか?
0192デフォルトの名無しさんNGNG
CSocketやCAsyncsocketを使った場合、相手側もCSocketやCAsyncsocketを使った
アプリケーションじゃないと通信出来なかったりする事ありますか?
0193デフォルトの名無しさんNGNG
>>192
そのくらい自分で試せよ
0194デフォルトの名無しさんNGNG
>>191
>ウィンドウの垂直位置をMoveWindowで負の座標にもっていっても
>自動的に、タイトルバーが見える状態に下がってしまいますが
SDIでもダイアログでも下がりませんですた

Windows2000SP3 VC6SP5 MFC4.2
0195191NGNG
>>194
要するにオリジナルスキンを持ったウィンドウのドラッグ操作の
部分なのですが、
MoveWindowを呼んだ直後は下がらないけど、その後(タイミングが不明)に
修正されます。

例えば、
WindowsMediaPlayerの下をドラッグして上に持っていくまでは
OK(MoveWindowでも負のy座標が適当される)だけど
マウスを放したときに、戻っちゃいます
0196デフォルトの名無しさんNGNG
タイトルバーを削除しちゃいかんのか?
0197191NGNG
>>196
プロパティでタイトルバーはオフにしていますが
同じ結果です
0198デフォルトの名無しさんNGNG
VC2003まだ〜
0199デフォルトの名無しさんNGNG
>>195
それはWindowsの仕様なんじゃないか……?
0200191NGNG
うーむ、実はドラッグでMoveWindowしたウィンドウに追随させて
ほかのウィンドウも制御してるのですが、OSに勝手に移動されると、
つじつまが合わなくなりますね
0201デフォルトの名無しさんNGNG
>>191
MoveWindowというか、ユーザがドラッグや Alt+Space,M でウィンドウを動かした
ときの話でしょ?

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

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

位置の修正があったとき
WM_POSCHANGEING (移動した座標)
WM_POSCHANGEING (修正された座標)
WM_POSCHANGED (  〃  )
0202191NGNG
>>201
ヒント
ありがとうございます
無事解決できそうです
0203花NGNG
リストボックスが空の状態でリストボックスの内容を保存しようとすると
エラーのメッセージを表示させたいです。どのようなコードを書き込めばよいでしょうか?
ご教授お願いいたします。
0204デフォルトの名無しさんNGNG
>>203
中身があるかどうか確認してから保存する。
0205デフォルトの名無しさんNGNG
ずっと疑問に思っていたのですが、デバッグウィンドウで
dllのロード後に
「○○.dllをロードしました。合致するシンボル情報は見つかりませんでした。」
ってどういう意味なんでしょ??
0206デフォルトの名無しさんNGNG
>>205
日本語わかりますでしょうか?
0207デフォルトの名無しさんNGNG
>>206
町に出て日本語知っている人に聞いて答えてもらえると思いますか?
あなたは質問の意味が理解できてないように思われます。
日本語わかりますでしょうか?
0208デフォルトの名無しさんNGNG
>>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
0209デフォルトの名無しさんNGNG
>>205
合致するシンボル情報(foo.dllに対してfoo.dbgあるいはfoo.pdb)
があれば、VisualC++のデバッガはそれを使ってDLL内の関数名とか
を表示することができる。それができませんよ、ってこと。
0210デフォルトの名無しさんNGNG
>>208
一番上に回答がくるようにしない奴はム板にむいてない
0211205NGNG
>>209
ありがとう!!
よくわかりましたっ!!!m(__)m
0212デフォルトの名無しさんNGNG
>>210
ム版に最も適した人材

0213デフォルトの名無しさんNGNG
最近の厨房様は検索という言葉をご存知ないらしい
0214214NGNG
シリアライズして保存したいのですが
保存する変数を配列で定義してるせいか
二項演算子'>>':型'CString[15][100]'の右オペランドを扱う演算子が見つかりません(または変換できません)
と出ます。ar >> m_id >> m_account >> m_name >> m_address >> m_day; ってな感じでやってるんですが
解決策ありますか?
0215デフォルトの名無しさんNGNG
>>214
イマイチ分かり辛いが、
配列ならをforで回して保存したらどうよ
0216214NGNG
シリアライズしないってこと・・・・ですか?
あっぷしてみたので見ていただけるとうれしいです・・(爆
http://members.tripod.co.jp/aiton21/customer.zip
0217デフォルトの名無しさんNGNG
>>216
*.objはサイズが大きいから、次回うpするときは、削除してから
うpするよーに。
0218デフォルトの名無しさんNGNG
と言うことで、誰も見ないから放置プレイ?
0219デフォルトの名無しさんNGNG
シリアライズできる配列クラスを作れってこったろ。
0220214NGNG
>217
了解です。
>219
あほなのでよくわからんのですが
配列の変数でも保存が可能なシリアライズクラスを作れってことですか?
0221214NGNG
こんな感じの作ってみたんですが構文エラー出ちゃいます。。。
ar << m_id;
for(i=0;i<m_id;i++)
{
m_account[][i] << m_name[][i] << m_address[][i] << m_day[][i];
}
0222214NGNG
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で定義されています。
とでます。オブジェクト名を変えるとまたそのオブジェクト名でエラーが出るので
二重定義定義しているとは思えません。ググってみてもそれらしい物がでないので。。。よろしくです
0223デフォルトの名無しさんNGNG
>>222
とりあえず中間ファイルを消してリビルドすることをオススメする
0224デフォルトの名無しさんNGNG
>>222
……と、そのまえに>216の中のdata.hはギャグだよな?
data.hを2つ以上のcppファイルでインクルードすると当然2重定義になるわけだが……
0225デフォルトの名無しさんNGNG
ぬぁに!知らなかった。。。
二つ以上のcppファイルでdata.hを使いたいときはどうすればよい?
0226214NGNG
あ、ヘッダファイルでインクルードすればよいわけか。
どっちにしてもエラー消えません(泣
0227デフォルトの名無しさんNGNG
>>226
indef
0228214NGNG
>>227
検索しても何もでないです。。俺がへたれのせい?!
0229デフォルトの名無しさんNGNG
>>228
いや、ミスタイプしたものの誰かが訂正してくれるだろうと放置した俺の責任だ。スマソ。

ifdef
0230214NGNG
>>229
#ifdefが条件付コンパイルってとこまでわかったんですがそこからがどうも。。。
他のヘッダファイルで定義したクラス使うにはどうすればよい?
0231デフォルトの名無しさんNGNG
いや、つーか、クラス宣言と切り離せよ
data.hでは
class CData
{
:
:
};

んで他のcppふぁいるで
CData data;
これでオブジェクトは1つだけ宣言される。
あとはヘッダファイルでextern宣言でもしとけ。
0232デフォルトの名無しさんNGNG
>>230
ヘッダファイルを#include

まさかとは思うが
class hogehoge
{
/* 変数とか関数とか */
} hage;
とかやってないだろうな。
0233214NGNG
>232
もちろんやりました(笑)
>231
extern宣言見つけました!って書こうとしたら書き込みが。。。
感謝です。確かにcppで宣言した方がいいっすね。
そしたら今度は外部シンボルが未解決やら言い出しました。
エラーってつきないっすね(泣)一応メインフレームのオンクリエイトで
オブジェクトできるようにしたんですけど、何がだめなんだろ・・・
0234214NGNG
>あとはヘッダファイルでextern宣言でもしとけ。
ってどこのヘッダファイルですか??
とりあえず全部のヘッダファイルに書いてみたけどだめでした。。。
0235デフォルトの名無しさんNGNG
>>233
MFCには関係ないようだな。
とりあえずその書き込みからわかることは

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

エラー文のコピペとOnCreateのあたりのソースを見ないとなんとも言えん。
0236デフォルトの名無しさんNGNG
>>234
(;´Д`)
何がダメだったのか、どんなエラーがでるかくらい書けよ。

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

俺はグローバル変数嫌いだから、
アプリケーションクラスのpublic変数として宣言しておいて
CHoheApp *pApp = (CHoheApp *)::AfxGetApp();
pApp->data = ....
っていう風にするけど。
(それ以前にグローバル変数を使わない設計にするがw)
0237214NGNG
http://members.tripod.co.jp/aiton21/customer.zip
に一番新しいのアップしました。エラー文コピペとかより
分かりやすいと思ったので。試行錯誤中です。。。
0238214NGNG
あああ!グローバルじゃなかった罠。お騒がせしました。。。
0239デフォルトの名無しさんNGNG
>>237-238
とりあえずお前に学習能力がないことがよくわかった(>>217)

で、解決したのか。
そうか。
0240214NGNG
ほんとすいません。。。分かってたんですが急いでたもんで(泣)
いちおう解決しました。どもでした。
0241デフォルトの名無しさんNGNG
(´-`).。oO(急がば回れ……)
0242214NGNG
あれ。。。消せた。さっきはデバッグフォルダの中身にロックかかってて
消すのに一回.NET閉じたんですよ。また閉じるとなると相当時間かかるから
そのまま圧縮しちまいました
0243デフォルトの名無しさんNGNG
>>241
ワラタ
0244デフォルトの名無しさんNGNG
289件のビルドタスクエラーがでたので顔殴らせてください
0245デフォルトの名無しさんNGNG
DDXでコントロールしてる文字列があるんですが
その文字列のコピーの仕方が分かりません。
どうやればこぴれますか?
0246教えてクンNGNG
モードレスダイアログのZオーダをアプリケーション内で最前面に固定するにはどうすれば?
(システムで最前面ではなく。)
0247デフォルトの名無しさんNGNG
>>246
SetWindowPos(&wndTop);
0248246NGNG
>>247
固定、したいんですが‥‥。
0249デフォルトの名無しさんNGNG
>>248
俺の記憶が確かならウィンドウは親ウィンドウよりも前に来る
0250デフォルトの名無しさんNGNG
>>248
>>247であってるんでない?VC6だけど、ちゃんとなるよ。
何が不満なのよ?
0251デフォルトの名無しさんNGNG
>>214
2重インクルード防止に#ifdefなんてもう古い。
#pragma once 使え。
0252246NGNG
>>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 );
  }
0253246NGNG
あ、まさか。
0254214NGNG
>251
どもです。とりあえず問題解決したので余裕ができたら調べます。
質問なんですが
あるcppファイルから他のヘッダを取り込んで
他のヘッダにあるクラスでオブジェクトを宣言しようとすると、
コンストラクタ関数を呼び出したことになってしまいます。
オブジェクトを新たに宣言できないんですがどうすればいいですか?
0255デフォルトの名無しさんNGNG
両方使え
0256デフォルトの名無しさんNGNG
>>252
>固定、したいんですが‥‥。

(゚Д゚)ハァ?
0257246NGNG
アハハ。親をデスクトップにしてたyo!
0258デフォルトの名無しさんNGNG
>>257
吊ってよし。
0259214NGNG
>>255
これが自分へのレスなのかすら分からない俺は馬鹿だ・・・
0260246NGNG
   ||
 ∧||∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( / ⌒ヽ < みんなありがとー。
 | | 、, |  \__________
 ∪ ノ )〜
  | | |
  ∪∪
   : 
   : 
      
 ‐ニ三ニ‐ 
0261デフォルトの名無しさんNGNG
>>214
( ´ー`)y-~~.。oO(C言語について基礎からやったら?)
0262デフォルトの名無しさんNGNG
>>261
いくらC言語を勉強しても解決できない悪寒
0263214NGNG
>261
基礎特訓中です。。。へたれですいません・・・。
なんでコンストラクタ関数になっちまうんだろぅ
0264デフォルトの名無しさんNGNG
>>262
ヘッダに

int Global_HOGE;

と書くわけだ。( ´_ゝ`)フーン…
0265デフォルトの名無しさんNGNG
わざわざVC++初心者スレがあるのに・・・
0266デフォルトの名無しさんNGNG
>>264
デムパゆんゆん
0267214NGNG
>265
いってきまつ
0268デフォルトの名無しさんNGNG
3つ質問させてください。締め切り間際で焦っております(つД`)

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

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

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

どうかご教授お願いいたします。
0269デフォルトの名無しさんNGNG
>>268
低能プログラマはクビになってしまえ

1. ムリ
2. 別に?
3. エラーをなくす
0270268NGNG
>>269
回答ありがとうございます。

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

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

0271デフォルトの名無しさんNGNG
  _, ._
( ゚ Д゚)  ・・・
0272去るNGNG
CFileDialogで詳細表示の項目にオリジナルの項目を追加したいのですが
どうすれば宜しいでしょうか?ご指導願います(名前、サイズ とか表示されているところです)
0273デフォルトの名無しさんNGNG
>>268
>アプリを落とす処理

ど う や っ て 落 と し て る ん で す か ?
0274デフォルトの名無しさんNGNG
アホな質問でしみません。
デバッグ中にMFCのコードで止まるのですが、コードを修正しても
ステップ実行で無視されます。またMFCのソースコードを修正しても
いいものなのでしょうか?
0275デフォルトの名無しさんNGNG
アホな質問というか日本語的にどうかと。
0276デフォルトの名無しさんNGNG
>>272
自分でダイアログを作る
0277デフォルトの名無しさんNGNG
>>270
1に関してはVCLは実現していますね。
二つのウィンドウを使って擬似的に行っているようです。
0278デフォルトの名無しさんNGNG
APIスレから流れてきました。
(http://pc2.2ch.net/test/read.cgi/tech/1047819779/546)
フォルダのツリービュー(エクスプローラの左側にあるやつ)を手っ取り早く実装する方法ってありませんか?
フリーのライブラリの情報でもありがたいです。
0279デフォルトの名無しさんNGNG
>>278
そっちで答えでてんのにどうしてわざわざこっちへ?
0280デフォルトの名無しさんNGNG
>>278
有る。探せ。
それかPIDL(ITEMIDLIST)勉強しる。
0281デフォルトの名無しさんNGNG
ちなみに人に聞いて回ることは「勉強する」って言わないからね
0282猿NGNG
>> 272 です。CFileDialogを拡張して
hList = GetListViewInner();// リストビューのハンドル確保
hHead = ::GetWindow(hList, GW_CHILD);// そのヘッダーのハンドル確保
LV_COLUMNを利用して項目を追加するも詳細表示の表示項目その他を選択すると
落ちてしまいます。どなたかよきアドバイスをお願いします。
やはり1から作成するしかないのでしょうか?
0283デフォルトの名無しさんNGNG
>>282
マルチポストかよ
氏ね
0284デフォルトの名無しさんNGNG
RichEdit2.0の機能をつかってるサンプルソースを公開してる
サイトとかないでしょうか?

あのリンク機能とかバックカラー、アンダーラインなんかを使ってる
サンプルが欲しいんですが・・
0285デフォルトの名無しさんNGNG
>>282
>>284
codeguruあたりに載ってない?
0286猿NGNG
>>285
英語のサイトなんか教えられても、ちっとも嬉しくないんだよ。
0287デフォルトの名無しさんNGNG
>>285
codeguruもcodeprojectも見てみましたが
RichEdit1.0のサンプルが主で、いくつか1.0の機能拡張とか2.0の単機能だけ
引っぱってきたサンプルはあるようなんですが
RichEdit2.0を前面につかったサンプルがまるでないようで・・・
0288デフォルトの名無しさんNGNG
>>286
英語も読めない低学歴か(藁
0289猿NGNG
>>286 偽者が語るな
0290猿NGNG
>>286 偽者が!! 人の名を語るな
0291デフォルトの名無しさんNGNG
あの程度の英語に学歴は関係ない。とにかく読め。
0292猿NGNG
>>285 さん ありがとうございました
早速拝見させていただいたのですが
自分のほしい内容がありませんでした。
ほかに無いか再度探してみます
0293デフォルトの名無しさんNGNG
>>292
マジレスするが、エディタは自作が最強。
0294278NGNG
>>280
それっぽいのが見つかりました。
レスどうもです。
0295286NGNG
>>290
× 人の名を語る
○ 人の名を騙る
0296デフォルトの名無しさんNGNG
唐突なんですが、携帯電話とPCとを接続するケーブルってありますよね。
で、それを利用するアプリケーションは、そのケーブルのドライバを内部で使用しますよね。

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

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

ちなみにIOデータの"USB-CDMA"に付属のドライバ、UCDMAM.SYSでは、当然内部で
USBD.SYSをimportしてるんですが、これの仕様もどこか(例えばMSDN等)で公開
されてるんでしょうか。
0297デフォルトの名無しさんNGNG
>>296
COMポートを使っている例なら……
ttp://osaka.cool.ne.jp/fillin/kmeback/index.html
02982chブラウザつくってるわけじゃないですがNGNG
静的分割ウィンドウの分割方向って変更でき……ないですよね。
ホットゾヌみたいに表示形式を変えたい場合はどうすればいいんでしょう?
  _______     _______
 |   |   B   |    |   |   |    |
 | A |______.|    | A. | B | C  |
 |   |       |    |   |   |    |
 |   |   C   |    |   |   |    |
   ̄ ̄ ̄ ̄ ̄ ̄ ̄      ̄ ̄ ̄ ̄ ̄ ̄ ̄
--
Windows2000SP3 VC6SP5
0299298NGNG
ふと考えたのが
1. AとBをダイアログバーにしてしまう
2. CFormViewにしてA,B,Cをコントロールとして貼り付ける(VBみたいに)
……あんまりスマートじゃないな。
ヒントやキーワードがあったらお願いします。
0300フルカラーアイコンNGNG
XP上のIEのように、ツールバーをフルカラーアイコンにしようと調べてるけど、
IEって、画面のプロパティの色設定が反映されないの。
ツールバーや、メニューなど。

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

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

フルカラーのツールバー用アイコンをアルファチャネルのデータを
反映させて透過色にできるのが本当は一番いいんだけど。
よろしくね。
0301デフォルトの名無しさんNGNG
オーナードロー
0302デフォルトの名無しさんNGNG
>>298=299
垂直分割と水平分割の切り替えはやったことが無いんだが、
分割したViewの中身を後から入れ替えたことはある。

Googleで「CSplitterWnd 切り替え」でヒットする情報なんかが参考になるかと。
0303デフォルトの名無しさんNGNG
>>298
Janeのソース
0304298NGNG
一眠りしたら頭がすっきりしますた

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

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

>>303
見る前に解決してしまいました。
レスありがとう。
0305猿NGNG
>>282 codeproject内にて"Column Settings"で
検索すると見つかりましたのでここに報告します。
レスをいただいた方々にこちらにてお礼の返事とさせていただきます。
ありがとうございました。また何かありましたらよろしくお願いいたします
0306デフォルトの名無しさんNGNG
>>268
1.逆に、タイトルバーの方を自分で描画すればいいだろ。
どうしてもタスクバーの方を変えたいなら、
クラス名が"Shell_TrayWnd"のウィンヅゥの中のタブコントロールを探せ。
タスクバーはタブコントロールだから、
うまいことメッセージを送れば表示を変えられる。
0307デフォルトの名無しさんNGNG
>>268
クラシックスタイルまでは、SetWIndowText()でタスクバー、
WM_GETTEXTでキャプションだったのだが、
LUNAでこけてしまった。
私も知りたい。
0308デフォルトの名無しさんNGNG
>>270
例外を無視する・・・・んじゃ駄目なんだろうなぁ・・・。
0309山崎渉NGNG
(^^)
0310デフォルトの名無しさんNGNG
Spy++って便利だねぇ。
まさかデスクトップが
0311デフォルトの名無しさんNGNG
CHtmlViewからCMainFrameの関数を使おうと
(CMainFrame*)GetParentFrame()->xxx();
のようにしたのですが、
「'CMainFrame' 定義されていない識別子です」
と言われてしまいました。MainFrm.hをincludeしてみたら、
「'xxx'(CMainFrameの関数名):'CFrameWnd'のメンバではありません」
と怒られます。どうやったら解決しますでしょうか?
0312デフォルトの名無しさんNGNG
((CMainFrame*)GetParentFrame())->xxx();
こうじゃねえか。
0313デフォルトの名無しさんNGNG
うう、本当だ。ありがとうございます。

MainFrm.hはincludeの必要ありでいいのでしょうか? CmainFrameの定義が書いてあるので
とりあえずincludeしてみましたが、Google等で調べたサイトなんかでは特にそんなことは書か
れていなかったのですが…。
0314デフォルトの名無しさんNGNG
問題ないと思う。俺はいつもそうしてる。
気になるようならCMainFrameに向かってSendMessage()すればいい。
AfxGetMainWnd()->SendMessage(・・・・);な感じ。
0315313NGNG
ありがとうございます。安心しますた。
どうしてもダメだったらSendMessageしかないかなー、とは少し思っていました。
0316デフォルトの名無しさんNGNG
SendMessageか
最近つかわないなぁ

今はPostMessageの方を使ってる
こっちの方がなんとなく安全そうだし
0317デフォルトの名無しさんNGNG
その「なんとなく」ってのがコワイ
0318デフォルトの名無しさんNGNG
変数の生存期間とか考えてちゃんと使い分けないとダメだよ(^_^;)
0319デフォルトの名無しさんNGNG
>>316
もしかしてPostMessageでローカル変数のポインタとか渡してないか?
もしかしてPostMessageでローカル変数のポインタとか渡してないか?
0320デフォルトの名無しさんNGNG
>>319
黒やぎさんたら読まずに食べた・・・
0321デフォルトの名無しさんNGNG
安全って面ではSendMessageの方が安全っぽい感じがするけどなあ・・・・
0322デフォルトの名無しさんNGNG
cs.style |= WS_CLIPCHILDREN;
とすると、
CRect rc;
GetClientRect(&rc);
InvalidateRect(rc, TRUE);
で再描画されなくなってしまうのですが、
何か他に描画を促す方法ありませんか?
0323デフォルトの名無しさんNGNG
>>322
UpdateWindow()
0324デフォルトの名無しさんNGNG
>>323
UpdateWindow駄目だったけれど、
RedrawWindowでいけました。
ありがとう。
0325デフォルトの名無しさんNGNG
ダイアログベースアプリで
そこからCFrameWndとCViewを構築したんですが
ViewのON_UPDATE_COMMAND_UIが呼ばれてこないんですが
どんな問題が考えられるでしょうか?

ちなみにCFrameWndにはメニューはついてませんが
ツールバーはついてます。
0326デフォルトの名無しさんNGNG
>ダイアログベースアプリで
>そこからCFrameWndとCViewを構築したんですが
  _, ._
( ゚ Д゚)  ・・・
0327デフォルトの名無しさんNGNG
>>326
ダイアログベースアプリから呼び出すダイアログを
CFrameWndの派生クラスから作った感じです。
単純にCFrameWnd::Createを呼んでOnCreateClientでViewを作っただけなんですが
そのCFrameWnd::OnCreateで普通に作ったツールバーのEnable/Disable更新のため
CViewの派生クラスにON_UPDATE_COMMAND_UIを作ったんですが
これが呼ばれてこないんで??な状況です。
一応ツールバーのボタンをクリックすればViewにあるON_COMMANDは呼ばれてます。
0328bloomNGNG
http://www2.leverage.jp/start/
0329デフォルトの名無しさんNGNG
ドキュメント・ビューについて勉強することをおすすめする
0330325NGNG
すんません解決しました。
親ダイアログでWM_KICKIDLEをひろって
そこで子のCFrameWndに
SendMessageToDescendants(WM_IDLEUPDATECMDUI・・・を
送ったらViewのON_UPDATE_COMMAND_UIが呼ばれるようになりました。
0331デフォルトの名無しさんNGNG
CxxxAppのInitInstanceでProcessShellCommandの
app filename → 開く
という場合だけ処理させないようにしたいのですが、どうすれば
いいでしょうか?
app → 新規作成
はそのまま残しておきたいのですが。あるいは、ProcessShellCommandの
行を丸ごとコメントアウトして、コマンドライン引数がないときのみ新規作成
処理をさせる方法も考えたのですが、方法が解らずです…。
お願いします。
0332デフォルトの名無しさんNGNG
>>331
ProcessShellCommand filenew
あたりでググってみれ
0333デフォルトの名無しさんNGNG
ところでおまえらもうMFC7に移行してる?
VS.NET2003のMFCが8になるのかどうかは知らんが、
やはりWin95(そろそろWin98も斬り捨てるのかなぁ)では動かないだろうから、
今のところMFC6から先に行かず、むしろATL/WTLに興味を持ち始めた
今日この頃の俺なんだが。
0334山崎渉NGNG
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0335山崎渉NGNG
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0336デフォルトの名無しさんNGNG
いいんじゃない?
0337デフォルトの名無しさんNGNG
>やはりWin95(そろそろWin98も斬り捨てるのかなぁ)では動かないだろうから、
95はすでにMSがサポート打ち切ってんじゃん。
98とNT4.0は6月までだっけか。
0338デフォルトの名無しさんNGNG
>>332
ハゲシク感謝です!
0339デフォルトの名無しさんNGNG
>>337
MSがWin95のサポート打ち切ったのとMFC7がWin95を斬り捨てたのはなんか関係あんの?
その論理で行くと次のMFCはWin98/NTを斬り捨てることになるが。
0340デフォルトの名無しさんNGNG
Win95のサポートが2001年3月まで、
MFC7(VisualStudio.NET)の発売が2002年3月末であることを考えると
MFC7は95をサポートしていない、と見ていいんじゃないかな……。
0341新人NGNG
CFileDialog表示時
詳細項目表示状態画面にて
詳細項目の表示欄の項目をこちらの
希望どおりにプログラムにて
表示させる方法があれば
教えていただけませんか。
(例 CFailDialogを開く前に
  Aを選択すると
   名前 サイズ タイトル と表示
  Bを選択すると
   名前 サイズ 種類   と表示
)
ツールとOSは
VC++6 WIN2000です。
0342デフォルトの名無しさんNGNG
>>341
自分でCFileDialogみたいなダイアログを自作する
0343デフォルトの名無しさんNGNG
フォトショップのツールの様なウインドウをMDIにて作成中です。

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

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

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

0344デフォルトの名無しさんNGNG
>>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);
}
0345344NGNG
ぬけてた、class CMyDialogBar 内に
DECLARE_DYNCREATE(CMyDialogBar)
をついか、
0346344NGNG
ああ、すまん345はいらなかった、無視してくれ。
0347344NGNG
つぎはこれ
ヘッダーファイル
#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);
}
0348344NGNG
で、自分が作ってたダイアログバーの派生もとのクラスを
CMyDialogBarに変更して、CMainFrame::OnCreate()内の
EnableDocking()を呼び出している後ぐらいに
m_pFloatingFrameClass = RUNTIME_CLASS(CMyMiniDockFrameWnd) ;
を付け足して終わり
試したことないから報告よろしく
0349344NGNG
ちなみに、やっていることは単にクリックされたら一番前に来るように
してるだけ。
ツールバーの時にはツールバー自体のウインドウとその枠の部分のウインドウ
になってたのでCMyDialogBarとCMyMiniDockFrameWndの二つが必要なはず
0350343NGNG
>>344さん出来ましたどうもありがとう!

返事が早くて恐縮です。

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

ダイアログバーでも使えることがわかったのでこちらからもサンクス
0352デフォルトの名無しさんNGNG
DrawFrameControl で

DrawFrameControl(rc, DFC_BUTTON, DFCS_BUTTONPUSH);

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

SetBkColorとかじゃ変わらないのですが?
0353デフォルトの名無しさんNGNG
SetTextColorは違うのか?
0354デフォルトの名無しさんNGNG
>>352
ムリでしょ。
0355デフォルトの名無しさんNGNG
MDIで複数の子ウィンドウを表示させている時、特定のウィンドウだけをwndTopMostみたいに
他の子ウィンドウに対して常に前面に表示させるという事は出来ますか?
ちなみにその子ウィンドウに対し、SetWindowPosでwndTopMostを試して見ましたが駄目でした。
よろしくお願いします。
0356デフォルトの名無しさんNGNG
CPropertySheetを使って設定のプロパティーシートを作ってみたのですが、
どうしてもクラスの外(C〜View)からコンストラクタのみでCPropertyPage内の関数を呼び出したいのですが、
何かよい方法をご存じないでしょうか?

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

やっぱりCreateとかを呼び出さないと無理なんでしょうか?
0357デフォルトの名無しさんNGNG
そのC〜ViewをShowWindow(...)で表示しないで
プロパティウィンドウを普通に表示すればいいと思うが・・・
0358デフォルトの名無しさんNGNG
おっとちょっと間違えたかな

>>コンストラクタのみでCPropertyPage内の関数を呼び出したいのですが
??? シートのコンストラクタからページの関数を呼び出すということか?
普通にできると思うが
0359デフォルトの名無しさんNGNG
>>357
レスありがとうございます。書き方が悪かったです。スミマセン。
もともとViewは表示してあって、プロパティーシートの方を表示したくないのです。
CPropertySheet sheet("設定");
sheet.m_Page1.関数();
これだとエラーが出てしまいます。
0360デフォルトの名無しさんNGNG
>>359
最近の厨房様は「エラーが出ます」と書けば回答者がエラーを推測して答えてくれるとお考えらしい。
0361352NGNG
>>354
やっぱ、無理っすか。サンクス。
自前で描画すりゃいいのか。
0362356NGNG
スミマセン自己解決できました。イベントハンドラの関数を呼び出していたのがいけなかったらしいです。
0363356NGNG
やっぱりダメでした。GetDlgItemを呼び出すと
Debug Assertion Failed!
File: Winocc.cpp
Line: 94
というエラーが出てしまいます。
0364デフォルトの名無しさんNGNG
VS.NET2003出たね。ダウンロードだけど。
0365デフォルトの名無しさんNGNG
>>363
ウインドウハンドルを使用する関数などはDoModal()やCreate()の後でなければ
hwndが無効な値なので使用できない。GetDlgItem()もhwndを使用するので無理。
これはダイアログのときも同様。
MFCではダイアログ データ エクスチェンジ(DDX)でコントロールに変数に
int, CStringなどの値を設定しているときはその変数へのアクセスはDoModal()等
しなくても普通にできるが、コントロールクラス(CListBox等)を設定した場合は
DoModal()等の後でなければならない。GetDlgItem()等も同様。
これらのコントロールクラスにアクセスするタイミングは普通、OnInitDialog()の
中であるので、この関数をオーバーライドしてCListBox等の初期化を行う。
プロパティーシートの場合はシート・ページ別々にあるのが、普通はページのほう
をオーバーライドする。
0366356NGNG
>>365
ありがとうございます。別の方法を考えてみます。
0367デフォルトの名無しさんNGNG
フレームにビューを使わず自作のコントロール(CXXXCtrlを派生したもの)
を直接張るにはどうすればいいですか?
0368名無し@沢村NGNG
>>367
Create()
0369デフォルトの名無しさんNGNG
>>367
・ダイアログベースで作る
・ドキュメント/ビューを使わない
0370デフォルトの名無しさんNGNG
>>369
CViewにも子ウィンドウは貼り付けられますが?
0371デフォルトの名無しさんNGNG
コントロールから独自のViewを作れるよ。
0372デフォルトの名無しさんNGNG
>>371
大まかで良いからやり方を教えてください。または参考になる文書でもいいです。
CCtrlView絡みだとは思っているのですが、何回かやった時には出来ませんでした。
0373デフォルトの名無しさんNGNG
>>372
CEditViewとかCListViewのソースを見ればよろしい。
0374デフォルトの名無しさんNGNG
>>372
「MFCによるWindowsプログラミング」という本のP657に載ってる。
WEBでもCodeGuruやCodeProjectあたりにありそうだけど確認してない。
0375372NGNG
>>373-374
ありがとうございます。ちょっと頑張ってみます。
0376デフォルトの名無しさんNGNG
>>370
ビューを使わず、って書いてあったからさ……
0377新人NGNG
>>341 です。
できればCFileDialogを拡張して
動作可能な状態にしたいのですが・・・
CodeGuruやCodeProjectでも見つかりませんでした。
どなたか回答していただけませんでしょうか
よろしくお願いいたします。
0378デフォルトの名無しさんNGNG
リソーススクリプト(*.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"

みたいに現在有効な行以外が全て消されてしまいます。
何かいい方法は無いでしょうか?
0379デフォルトの名無しさんNGNG
>「MFCによるWindowsプログラミング」という本のP657に載ってる。
今でも買えるところ教えてください。
増刷してくれんかな・・・
0380デフォルトの名無しさんNGNG
>>378

app.rc2 とかに書いてインクルードすべし。
っていうか別に手で書かなくても IDE で出来るでしょ。。
なんだっけ、リソース(アイコン)を右クリックしてコピーの挿入とかそんなので。
0381378NGNG
>>380
IDEが勝手に「#ifdef APP1」とかの記述を消してしまうんです。
#includeも試したのですが、結果は同じでした。
(#includeも消されます)
コンパイルオプションによってアプリのアイコンを変えるのが
目的なので、rcファイル以外の方法があれば・・・。
0382デフォルトの名無しさんNGNG
>>379
こっちが貼り付ける方法で
http://www.codeguru.com/doc_view/custom_view.shtml

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

CodeGuruやCodeProject探せって言われてるだろうに・・・
0383デフォルトの名無しさんNGNG
MFCの場合、コールバック関数(WndProcとか)はどこに記述されているのですか?

デスクトップ上のウインドウを列挙したくてヘルプを見ると、
EnumWindows関数でウインドウハンドルをコールバック関数であるEnumWindowProcに
送り、その中で処理をしろと書かれているのですが、EnumWindowProcがどこに記述されて
いるのか分りません。
EnumWindowProcを適当に追加してみると、
「(?EnumWindowsProc@@YGHPAUHWND__@@J@Z) はすでに test1.obj で定義されています」
というエラーがでてしまします。VC++6.0です。
0384デフォルトの名無しさんNGNG
>>383
その手の質問(単一のAPI関数の使い方のような質問)は、
まずGoogle行った方が確実な情報が見つかりますよ。
0385デフォルトの名無しさんNGNG
>>382
いえ、私は以前の人とは別で、
あの本を探しているだけの者でして・・・
0386デフォルトの名無しさんNGNG
そういうことにしたいのですね
0387デフォルトの名無しさんNGNG
>>381

VisualStudio 6.x だと、アイコンリソースを右クリックして「コピーの挿入」、
出てきたダイアログの「条件」のとこにdefine 名(ReleaseとかDebugとか)を
書けばできますよ。.NET ではどうやるのかシランけど。
0388デフォルトの名無しさんNGNG
>>384
レスありがとうございます。質問前にgoogleでいろいろ調べていたのですが・・。
でも、見つかりました。ので、一応かいときます。

MFC でコールバック関数を使う
http://plaza2.mbn.or.jp/~yoshio2/vcmemo16-1.html
0389378NGNG
>>387
できました!!!。
#if defined(APSTUDIO_INVOKED)
という記述で変更禁止をしているみたいです。

380さん、387さん、大変お世話になりました。
0390デフォルトの名無しさんNGNG
MFCを使ったドトネトは流行ってますか?
0391動画直リンNGNG
http://homepage.mac.com/hitomi18/
0392デフォルトの名無しさんNGNG
すいません。(またですが)
ドッキングダイアログ上のリストボックス・ツリーボックスのクリックイベント
の取得と初期化と選択している項目の変更ってどうすればよいでしょうか?

0393デフォルトの名無しさんNGNG
>>392
用語をもっと正確かつ具体的に!
ドッキングダイアログって?
ツリーボックスって?
0394デフォルトの名無しさんNGNG
>>392
ネタ質なら他所でやれYO!
0395デフォルトの名無しさんNGNG
サイズ変更可能なドッキングバーを作ろうとて
http://www.datamekanix.com/
を参考に作成していますが、
ドキュメント化されていないクラスの解説等をしているページや書籍を
知っていれば教えてください。
MFCのソース解読するのそろそろ疲れてきた。
0396392NGNG
すまそ。
ツリービューとドッキングバーです。
0397デフォルトの名無しさんNGNG
知ってる人教えてください
VC++をインストールしたら特定のWebを開くとランタイムエラーと表示されます
どうやったら消えるか分からないので
とりあえずインストールしたVC++をアンインストールしました
しかしまだランタイムエラーと出ます
これを表示させなくする方法知ってるひといませんか?
0398デフォルトの名無しさんNGNG
>>397
VCはだいぶ前の商品だから古いDLLが上書きされちゃったんでしょうね。
WindowsのSPを当てなおしてみるのとかどうですか?
それで動けば、またVCをインストしてその上からさらにSPを当てる。
まぁボクはその状況になってないので、正確な答えじゃないかもしれませんが。
でも、なんでMFC限定のこのスレに?(  ̄ー ̄)
0399デフォルトの名無しさんNGNG
>>395
日本語の書籍で説明してるのはMFCインターナルぐらいかな。。。
http://www.amazon.co.jp/exec/obidos/ASIN/4795296952/ref%3Dsr%5Faps%5Fb%5F/250-7262064-9913843
0400デフォルトの名無しさんNGNG
リサイズ可能ドッキングバーってCodeGuruあたりにサンプルなかったっけ
0401デフォルトの名無しさんNGNG
>>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
でどう?
0402デフォルトの名無しさんNGNG
>>395
ここは見た?
ttp://www.codeguru.com/docking/index.shtml
0403デフォルトの名無しさんNGNG
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);
}
0404デフォルトの名無しさんNGNG
>>403
ViewにRegionくっつけても
Viewの親にCFrameWndがいるからおかしな事になるんでないの?

やるなら、CTestFrameWnd::OnCreateあたりでためしてみたら?
0405デフォルトの名無しさんNGNG
OnInitDialogとOnIntialUpdateは動作的に別物と考えた方がいい。
0406デフォルトの名無しさんNGNG
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が帰ってきてしまう。
0407デフォルトの名無しさんNGNG
>>404-405

レスありがとうございます。
言われた通り、CMainFrame::OnCreate以下に>>403と全く同じコードで
希望のSDI/MDIができました!!!ヽ(´ー`)ノ
0408デフォルトの名無しさんNGNG
>>406
LoadBitmapはあくまでもリソースからロードする関数なので、
ファイルから直接ロードしたい場合はLoadImageで。
0409デフォルトの名無しさんNGNG
>>408

レスありがとうございます。
納得しました!!!ヽ(´ー`)ノ
0410デフォルトの名無しさんNGNG
MFCでフォーム作ると、1つの大きなrcファイルになるのでしょうか。
フォームを色んなシステムで使いまわししたいとき不便だと思うのですが、
どうなんでしょう。
0411デフォルトの名無しさんNGNG
プロパティページのエディットボックスコントロールに
あらかじめ値を入れておくにはどこに記述すればいいんでしょうか?
PreCreateWindowは通らないみたいだし
PreInitDialogの中でSetWindowTextをやっても
「Debug Assertion Failed!」になってしまいます。
おしえてください。おねがいします。
0412動画直リンNGNG
http://homepage.mac.com/hitomi18/
0413デフォルトの名無しさんNGNG
>>411
そのAssertion は ASSERT(IsWindow(m_hWnd)) みたいなのでは?
だとしたら、その意味をよく考えることですな。
0414デフォルトの名無しさんNGNG
OnInitDialog
0415デフォルトの名無しさんNGNG
>>411
OnInitDialog()でやれ、つーか値ならDDX使え
0416411NGNG
>>413-415
ありがとうございました。
できるようになりました。

>>415
コントロールのメンバ変数が
CStringじゃなくてCEditでもできるんですか?
0417デフォルトの名無しさんNGNG
>>416
CEditの他にCString変数も作ればええやん
0418デフォルトの名無しさんNGNG
DDXやら CString はコードが肥大化するから、大して必要も無いならやめとけ
0419デフォルトの名無しさんNGNG
なんでやねん
0420デフォルトの名無しさんNGNG
モードレスダイアログにリストビューを貼って、LVS_EX_INFOTIPスタイルを追加したのですが、
ツールチップがダイアログの後ろに表示されているようです。
ちゃんと前面に表示させるにはどうすればよいのでしょうか?
0421420NGNG
プロパティシートでも同様の問題が起こるんだけど、みんなどうしてるのかな・・・
0422 NGNG
>>418

EXEサイズじゃなくて?
0423デフォルトの名無しさんNGNG
>>422
オブジェクト「コード」のことだろ。
0424デフォルトの名無しさんNGNG
マジで>>420はどうすれば・・・
モードレスダイアログまたはプロパティシート状のリストビューコントロールで
m_list.SetExtendedStyle(LVS_EX_INFOTIP);
とするとツールチップが後ろに表示されてしまう・・・
0425デフォルトの名無しさんNGNG
>>422 EXEサイズ
0426デフォルトの名無しさんNGNG
MFCのプロジェクトで、
throw std::runtime_error
しても、文字列も出ないしプログラムが終了してしまいまつ。
キャッチを自分で書かなきゃならないでつか?
それともMFC用のエラークラスがあるのでしょうか?

例えば、BCBとかだと、キャッチのコードが生成されてて、
throw Exception("")すると、
エラー系のメッセージボックスが出てプログラムが終了しませんけど。
0427426NGNG
「MFCのWinMainがライブラリに閉じられてるがために、
アプリケーション全体のキャッチを記述出来ない」なんてことは無いですよね?

もしそうだったら、やっぱ、さっさとBCBにコンバートした方がヨサゲ。
0428426NGNG
CWinApp::InitInstance()のオーバーライドのソースに
#include <iostream>を入れると、

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

というエラーがでまつ。
MSDNでは、マルチスレッド対応してないライブラリが混ざってると。
MFCって本当にC++でつか?
0429デフォルトの名無しさんNGNG
>>428
リンクするライブラリ・使用するランタイムライブラリの指定を確認するか、BCBにカエレ
0430デフォルトの名無しさんNGNG
マルチポストするほど必死なのになぜ煽る?
0431デフォルトの名無しさんNGNG
>>426
強制終了させたいならabort()でも呼び出しとけば?
0432デフォルトの名無しさんNGNG
>>426
MSDNで「処理されない C++ 例外」とか。
>現在の例外に対して該当するハンドラ (または省略記号の catch ハンドラ) が
>見つからないと、定義済みの terminate 関数が呼び出されます。
>terminate のデフォルト機能は、abort を呼び出すことです。

MFCにもエラークラス(CxxxException)はある。
MFCでTHROW使ったときに関しても
>CATCH ブロックを用意していないときは、制御は Microsoft Foundation Class
>ライブラリのモジュールに移り、エラー メッセージを出力してプログラムを終了
>します。
0433426NGNG
強制終了になるのを回避したくて、キャッチしたのですが、
>>428 に書いたようなコンパイルエラーです。
0434デフォルトの名無しさんNGNG
>>433 /MD(/MDd) or /MT(/MTd) かな?
0435426NGNG
コンパイルは通るようになりました。有難うございまつ。

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);
}
}
だと、プログラム自体終わってしまいます。
もっと良いキャッチの場所は無いでしょうか?
0436デフォルトの名無しさんNGNG
>>435 それはSEH使わんといかんのかな?詳しい人きぼんぬ。
0437426NGNG
>SEH
はつみみです。

で、ググったら、
http://www.microsoft.com/japan/developer/library/vccore/_core_exception_handling.3a_.overview.htm
>MFC プログラムでは、C++ 例外を使います。構造化例外処理 (SEH) は使用しないでください。
>SEH は、非 MFC プログラム内でだけ使用します。C++ 例外処理と SEH を混用しないでください。
とありました。
例外処理って言語どころかコンパイラやクラスライブラリレベル依存で困りますね。
0438デフォルトの名無しさんNGNG
>>424
まずソースを載せてみてはどうかね。
0439デフォルトの名無しさんNGNG
たったいま例外処理スレの方に書いたとこ。

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

SEHは放っておいてワトソン博士に任せたい。
自分でコールスタック解析したりしたくないから。
0440439NGNG
ところで>>435のVCのコードって、エラーメッセージボックスも出ないで
終わっちゃうの?
メインウィンドウが破棄されるとMFCがPostQuitMessageを
コールするので、メッセージボックスが出せなくなるってやつかな?
0441435NGNG
>>440
エラーメッセージボックスは出まつ。

が、キャッチを入れずにdlg.DoModal();の後にメッセージボックスコールを入れも、仰るとおりメッセージボックスは出ません。
0442435NGNG
>でもオレならSDI とフォームビューで書き換えるな。

すごい興味深い内容だけど、ソースコードで見たいな...
0443デフォルトの名無しさんNGNG
>>435
Wincore.cpp にある AfxCallWndProc() 関数内の CATCH_ALL に引っかかってる?
0444デフォルトの名無しさんNGNG
超初心者でもうしわけないのですが、
Editコントロールに複数行をコードから表示したい場合どうすればいいのですか?
リソースエディタのスタイルでは複数行と改行を許可にチェックは入れています。

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

aaaa
bbbb
と表示したいのです・・・。
0445デフォルトの名無しさんNGNG
>aaaa
>bbbb
>と表示されてしまいます

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

何が違うのこれ。
0446デフォルトの名無しさんNGNG
>>445
ん?分かんない?環境が違うのかな・・・俺んとこじゃあ(ry
0447デフォルトの名無しさんNGNG
  _, ._
( ゚ Д゚) ・・・
0448デフォルトの名無しさんNGNG
よくわからんけど\r\nで解決。

俺んとこでも同じに見えるよ・・・
0449444NGNG
>>445-448
レスありがとうございます。
あうっΣ(´Д`lll) カキコで変換されてしまってたようです。
aaaa・bbbb みたいな形で1行になってしまっていたのでした。

>>448さんの言う通り
CString str1 = "aaaa\r\nbbbb"としたら2行に表示されました。
ありがとうございました。
0450デフォルトの名無しさんNGNG
すいませんが、もう1つ質問があります。
FormView上に貼り付けたEditコントロールのフォントを変更したいのですが、
どうにもよくわからないのです。ヒントでいいので教えてください。
0451デフォルトの名無しさんNGNG
SetFont
0452450NGNG
>>451
上手くいきました。ありがとうございました。

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

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

で、例外処理はInitInstance, ExitInstanceと
各ウィンドウのWindowProcの中をtry-catchして処理。
0454デフォルトの名無しさんNGNG
CTreeCtrl で LVITEM と関連付いていないものがあるとします。
それで、ItemTextなどを指定してLIVTEM を取得する方法はありませんか?
0455デフォルトの名無しさんNGNG
CTreeCtrlなのにLVITEM?
CListCtrlみたいなFindItemとかがなければ
ループで一つ一つ探すしかないんじゃない?
0456デフォルトの名無しさんNGNG
すいません。HTREEITEMです。
0457420NGNG
かなり遅れましたが原因がわかりました。全然違いところにありました。
メインのダイアログをSetWindowPosでTopmostに表示していたため、
リストビューにLVS_EX_INFOTIPスタイルを設定しても、ツールヒントが
メインダイアログの後ろに表示されていました。
これは仕様なんでしょうね・・・
0458デフォルトの名無しさんNGNG
テキストをマウスでクリックしたときのイベントを
ClassWizzardで作成しましたが、起動されません。
どうしたら良いのでしょうか?
0459458NGNG
具体的には、CTEXTのクリックイベントを作りたいです。
0460デフォルトの名無しさんNGNG
>>459
CStaticとかCEditではないの?
0461459NGNG
ごめんなさい、ぐぐったらわかりました。
http://www.athomejp.com/goldfish/mfc/static/onclick.html

でも、このへんBCBに激しく負けてないことない?
BCBなら、
Text1.OnClickとかOnDblClickがプロパティになってて、
GUIのダブルクリックでイベントハンドラ開くか、または外から関数設定出来るし、
その関数にsenderっていう、Text1の実態が入ってて同じ処理ならイベントハンドラ使いまわしだし。
0462デフォルトの名無しさんNGNG
なんだ、それが言いたかっただけか
0463デフォルトの名無しさんNGNG
>>461
ダイアログだったらリソースエディターで通(略
某島社員も大変だな…
0464デフォルトの名無しさんNGNG
>>463
ちゃんと嫁。
ダイアログエディタでダブルクリックしただけじゃ、イベントハンドラできるけど、起動されん。
M$厨ったら...
0465デフォルトの名無しさんNGNG
BCBのTLabelのイベント調べたら、
>OnClick, OnContextPopup, OnDblClick, OnDragDrop, OnDragOver
>OnEndDrag, OnMouseDown, OnMouseMove, OnMouseUp, OnStartDrag
これだけあるし、派生でイベント足せるし。

それに対して、CTEXTは、BN_CLICKEDだけってどういうことよ?
0466デフォルトの名無しさんNGNG
>>465
そういうことだよ。
0467デフォルトの名無しさんNGNG
今更な話題をあえてもってくる理由とは
0468デフォルトの名無しさんNGNG
VC初心者のBCB信者も大変だな。
とりあえず、CTEXTってなんだよ…
0469デフォルトの名無しさんNGNG
CTEXT age
0470デフォルトの名無しさんNGNG
リソーススクリプトのCTEXTのことかな。
スタティックコントロールくらいは言って欲しかったね。
0471デフォルトの名無しさんNGNG
MFC プロジェクト作りますた。
何も変更せずビルドしますた。
そのままデバッグ実行しますた。
フリーズしますた。


   ど う す れ ば い い ん だ

0472デフォルトの名無しさんNGNG
>>471
そんな日は寝るに限る。
0473471NGNG
ちょっとふざけた書き方でしたが、
ホントにどうすればいいのかサッパリで...。
何が原因なんでしょうか?
0474デフォルトの名無しさんNGNG
>>471
っで環境は?



















と煽って欲しいんですね。
0475デフォルトの名無しさんNGNG
>471
VS.NETproでそれなったことある。
漏れの場合、IISのインストールが正しく出来てなかった。
マニュアル見てIISだけ入れなおしたら、デバッグ通るようになった。
0476デフォルトの名無しさんNGNG
MFC7で追加されたクラスで何か便利だと思うものある?
よく言われるのはDHTML系のクラスとメッセージマクロだけど、
他にもこんなのがこんなふうに使える!とかあったらきぼん。
0477471NGNG
>>474
経験したことのある人なら環境も分かるかと思いまして。
ちなみに、環境は Windows XP Pro. + Visual Studio .NET Academic です。

>>475
その線でチャレンジしてみたいと思います。
0478デフォルトの名無しさんNGNG
>経験したことのある人なら環境も分かるかと思いまして。

真の教えて君としてはなかなかの筋。
0479デフォルトの名無しさんNGNG
CListCtrl(リストビュー)のことでお聞きしたいのですが、
エクスプローラなどでは、
選択→濃い青、未選択→白、選択(フォーカスなし)→灰 ですが、
CListCtrlを貼り付けて適当にアイテム追加して実行すると
選択→濃い青、未選択→白、選択(フォーカスなし)→白 となってしまいます。
これでは、未選択と選択(フォーカスなし)の区別がつかないのですが、
これは、フォーカスを自分でチェックしてその時に灰色で描画するように
ぐりぐりとコードを書かなければならないのでしょうか?
0480デフォルトの名無しさんNGNG
>>478
真の教えて君は必要なことを書かずについ余計なこと書いちゃうからね。
0481471NGNG
>>475
IIS ではありませんが、
一部修復インストールすることで解決しました。
ありがとうございました。
0482デフォルトの名無しさんNGNG
>>499
試してないんで違うかもしれんが、
LVS_SHOWSELALWAYSを追加したらどう?
0483471NGNG
と思ったら、何かまた新規プロジェクトを作ったら
同様の症状が現れましたね。
とりあえず何かすれば症状が治まるようです。
まぁ、訳分かりませんが、とりあえずそれで我慢しときます。
0484479NGNG
>>482
ビンゴです!エクスプローラと同様の表示になりました。
CListCtrl(リストビュー)のプロパティに「常に選択を表示」と
いうのがありました。o( 〃゜O゜〃)ゝアイタタタ・・・
ありがとうございました。
0485デフォルトの名無しさんNGNG
DDX/DDVってなんじゃ
これってpublicな変数とちゃうんか
わけわかめ酒
0486デフォルトの名無しさんNGNG
>>485 (;´Д`)
0487デフォルトの名無しさんNGNG
MFC Programmer's SourceBookの日本語訳のページが見つからないのですが、
どこにあるのか教えて下さい
0488 NGNG
CReBar使った時の各コントロールバーの位置を
記憶しておく方法ってなんか無いですか?
0489デフォルトの名無しさんNGNG
>>488
GetReBarCtrl()とGetBandInfo()かな?
0490 NGNG
REBARINFO のどこにその手の情報が入っているのですか?>>489
0491デフォルトの名無しさんNGNG
レバーコントロール。
語源:取っ手の形をしているから。
0492デフォルトの名無しさんNGNG
レバー = lever
0493デフォルトの名無しさんNGNG
>>490
REBARINFOじゃなくてREBARBANDINFO

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

>>491
猫ではそう呼んでるね
0494デフォルトの名無しさんNGNG
ReBarの様なフラットなビットマップボタンをダイアログ上で
利用するにはどうすれば良いのでしょうか?
ご教授お願いいたします。
0495デフォルトの名無しさんNGNG
>>494
ツールバーでいいんでないの
0496デフォルトの名無しさんNGNG
マルチスレッド@MFCの質問っす

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

0497デフォルトの名無しさんNGNG
>>496
AfxBeginThreadはCWinThread オブジェクトへのポインタを返す
0498494NGNG
自由に配置したいんです。
0499デフォルトの名無しさんNGNG
>>498
そういうボタンを自分で作るか、MFC7にあるCDHtmlDialgみたいな名前のクラス使ってはどうか。
0500デフォルトの名無しさんNGNG
>>498
CReBarCtrlをCreate()できない?
ダイアログ上でもできそうだけど
0501デフォルトの名無しさんNGNG
>>494
CBitMapButtonかCButtonをオーナードローかけるか...
0502デフォルトの名無しさんNGNG
>500
そもそもReBarってコンテナだからボタンとは関係ないのでは?
0503500NGNG
>>502
そうなんだけど、元投稿>>494でReBarって書いてたから。
0504デフォルトの名無しさんNGNG
なるへそ
0505499NGNG
Dialgってなんだ。CDHtmlDialogね。
0506デフォルトの名無しさんNGNG
自前で、スクロールバーのような機能を持つボタンを作成しています。
1.CMyButton::OnLButtonDown()の中でGetCaptureし、
2.CMyButton::OnMouseMove()の中でマウスを追跡&関連付けられたエディットの数値更新
3.CMyButton::OnLButtonUp()でReleaseCapture
という感じになっているんですが、2のエディットの数値を更新する所で、エディット
が再描画されず困っています。
なんででしょうか。エディットにWM_PAINT自体行ってないように見えます。
0507デフォルトの名無しさんNGNG
今からMFC初めてもいいですか?
0508デフォルトの名無しさんNGNG
>>506
エディットってCEdit?
よくわからんが、とりあえず途中にTRACEマクロとか入れたりして、
どこまでがちゃんと動いてるかを確認しよう。

>>507
いいんじゃない?がんがれ〜
0509506NGNG
>>508
>エディットってCEdit?
そうです、CEditです。

2.の中で、SetCursorPosを使って、マウスが動いた分を無かった事にしているのですが、
どうもこれが問題のようです。わけがわかりません。
0510デフォルトの名無しさんNGNG
GetCaptureじゃなくSetCaptureってのはどうでもいいのか・
0511デフォルトの名無しさんNGNG
switch(result) {
case IDOK:
CString fullPath = dialog.GetPathName();
try {
CFile aFile( char fullPath );
}
catch(CFileException *e) {
e->Delete();
}
case IDCANCEL:
break;

っていうプログラムで

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

こんなエラーがでてくるのですが…
どうすればいいですか?(゚д゚;)
0512372NGNG
>>511
CString fullPath;
switch(result) {
case IDOK:
fullPath = dialog.GetPathName();
以下略
0513デフォルトの名無しさんNGNG
>>512
どもありがとうございました〜〜〜〜〜!
解決しますた!
0514デフォルトの名無しさんNGNG
>>506
Invalidate() を調べてみるよろし
0515508NGNG
>>509
あー、3Dモデリングソフトによくあるアレね。
<ボタン押してマウスドラッグすると、関連したCEditの値が変わる

OnLButtonDown,OnMouseMove,OnLButtonUpの
ソース上げてもらえれば原因わかるかもよ。
0516デフォルトの名無しさんNGNG
>>513
switch case文の中で変数の宣言をするとエラーになります。
場合によって変数が宣言されないということがあるためです。
0517デフォルトの名無しさんNGNG
ドラッグしてからドロップするまでマウスカーソルが変わるというSpy++のような
動作を作りたいのですが、上手くいきません。
void CTestDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
::SetCursor(::LoadCursor(NULL, IDC_SIZEALL)); // とりあえず4方向矢印カーソル(IDC_SIZEALL)でテスト

CDialog::OnLButtonDown(nFlags, point);
}

上記のように書いたのですが、ドラッグして少しでもマウスを移動させると
もとのカーソル形状に戻ってしまいます。
どうすればいいのでしょうか?
0518デフォルトの名無しさんNGNG
SetCursorのあとでSetCaptureしてみるとか。
0519517NGNG
>>518
ありがとうございました。上手くいきましたヽ(´ー`)ノ
0520デフォルトの名無しさんNGNG
エディットボックスに書いた文字列を
振り当てたCEditの関数m_editを使ってdatというCStringに書きこむとき、

m_edit.SetWindowText(dat);

なのですが、読みこみはどうしたらいいのでしょうか??
0521デフォルトの名無しさんNGNG
GetWindowText
0522デフォルトの名無しさんNGNG
>>511
すでに解決した質問にレスつけるのもなんだけど……


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

スコープ使うという手も。
0523デフォルトの名無しさんNGNG
MFCのプログラムを見るとよくCWndから派生しながらCeate時には
AfxRegisterWndClass()で独自のウィンドウクラスを登録している
のを見かけますがこれってどんな意味があるのですか?
0524デフォルトの名無しさんNGNG
エディットボックス(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(なにか);

どうしたらいいでしょうか
0525デフォルトの名無しさんNGNG
>>524 = http://pc2.2ch.net/test/read.cgi/tech/1052931903/136
マルチかよ
氏ね
0526 NGNG
DrawText で矩形に文字書くときに
左右にマージンとる方法ないですか?

文字列に空白足すとかはしないで
0527デフォルトの名無しさんNGNG
>>526
センタリングして表示すれば?
0528 NGNG
>>527
センタリングはダメなんです・・・
数字なので、元々右寄せしてて・・・
0529デフォルトの名無しさんNGNG
>>526
マージン分だけ矩形を狭めればいいんじゃないの?
0530 NGNG
>>529
DrawTextの前に、引数として渡すRECTに
InflateRect(-4, 0)したらできました。ありがとう。
0531デフォルトの名無しさんNGNG
>>525
すみません汗
いろんなスレの先輩達にさまざまな方法
を教えてもらいたかったんです…涙
0532デフォルトの名無しさんNGNG
>>531
もう二度と来るな
回線切って首吊って氏ね
0533デフォルトの名無しさんNGNG
>回線切って首吊って

いまどき古いな・・・
0534デフォルトの名無しさんNGNG
>>533
そんなことをわざわざageて書くおまえに惚れた
0535デフォルトの名無しさんNGNG
>>531
むしろ、生きるな!
0536デフォルトの名無しさんNGNG
ウインドウメッセージが
全てのアプリケーションに送られる前に捕まえて、
加工するようなことは可能でしょうか。
(自アプリと関係ないウインドウメッセージを補足・加工)

 もし、可能でしたら、その実現方法(プロジェクトの種類など)も
教えていただけるとうれしいです。よろしくお願いします。
0537デフォルトの名無しさんNGNG
>>536
漏れは良く知らんが、DLLでフックじゃないかい?
0538デフォルトの名無しさんNGNG
そうだね。フックだね。
0539デフォルトの名無しさんNGNG
実は漏れもフックだと思った
0540デフォルトの名無しさんNGNG
逆にフックじゃないかな?
0541デフォルトの名無しさんNGNG
フックってなんだろう?



どうでもいいがピーターパンを思い出した
0542デフォルトの名無しさんNGNG
漏れはノックだと思う。
0543デフォルトの名無しさんNGNG
甘いな。サップだ。
0544デフォルトの名無しさんNGNG
モックンかもしれない。
0545537NGNG
             /ヽ       /ヽ
            / ヽ      / ヽ
  ______ /U ヽ___/  ヽ
  | ____ /   U    :::::::::::U:\
  | |       // ___   \  ::::::::::::::|
  | |       |  |   |     U :::::::::::::|
  | |      .|U |   |      ::::::U::::|  ・・・・・
  | |       | ├―-┤ U.....:::::::::::::::::::/
  | |____ ヽ     .....:::::::::::::::::::::::<
  └___/ ̄ ̄      :::::::::::::::::::::::::|
  |\    |           :::::::::::::::::::::::|
  \ \  \___      ::::::
0546デフォルトの名無しさんNGNG
SDIのプログラムを作っているのですがダイアログベースのOnOKに相当する
オーバーライドできる関数はどれなんでしょうか。終了するときにダイアログを出したいんです。
0547デフォルトの名無しさんNGNG
ノックはセクハラだから違うと思うけど、逆に当たってるかも。
0548デフォルトの名無しさんNGNG
>>546
OnCloseでどうか。
0549デフォルトの名無しさんNGNG
パンチは引退したから違うな。
0550デフォルトの名無しさんNGNG
正解はファック
0551546NGNG
>>548
ちゃんとできました。ありがとうございました。
0552デフォルトの名無しさんNGNG
ダイアログベースのアプリで
ShowWindow(SW_HIDE)したときのような
ウィンドウを表示しない状態で起動させるには
どうすればよいのでしょうか
0553デフォルトの名無しさんNGNG
>>552
マルチさんようこそ
0554デフォルトの名無しさんNGNG
>>552
非表示にして起動って、どういうUIなの?タスクトレイアプリか何か?
それによって答えが違う。
0555552NGNG
>>553
コンヌツワ

>>554
そのとおりです
現状はボタンクリックでHIDE->アイコン表示としています。
でOnInitDialogでHIDEしたりしても無駄みたいなのでどうしたものかと・・
そもそもトレイに入れるときHIDEでいいのかという疑問もあったり・・
0556デフォルトの名無しさんNGNG
あー、前に試したけどDialogアプリケーションって非表示には出来なかった
気がする。
俺は非表示のウィンドウをメインウィンドウにして、必要なときにダイアログ
を表示するように組んだ記憶がある。
0557デフォルトの名無しさんNGNG
ウソ言え。簡単にできたはず。
0558554NGNG
>>555
だったら >556の「非表示のウィンドウをメインウィンドウにして、必要なときに
ダイアログ」がよいでしょう。

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

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

ところでモードレスにした場合すぐにアプリケーションが終わってしまいますが
使いどころは有りですか?
0560デフォルトの名無しさんNGNG
>>559
// ダイアログが閉じられてからアプリケーションのメッセージ ポンプを開始するよりは、
// アプリケーションを終了するために FALSE を返してください。
return TRUE;
0561デフォルトの名無しさんNGNG
CListCtrlにCImageListのアイコンを設定したのですが、InsertItemの時でなく、そのあとに
アイコンを変更する方法はないでしょうか。
0562デフォルトの名無しさんNGNG
>>560
なるほど〜

InitInstance()で
dlg = new CTestDlg; dlg->Create( ... ); m_pMainWnd = dlg; return TRUE;
デストラクタで
dlg = (CTestDlg*)m_pMainWnd; dlg->DestroyWindow(); delete dlg;
でいいんでしょうか?
(´-`).。oO(OK押したらウィンドウはどこへ行くんだろう・・・)
0563デフォルトの名無しさんNGNG
ユーザー定義メッセージを使ってプロセス間でやり取りしたい場合、
受信側はCWnd::WindowProc()をオーバーライドしてそこで処理すればいいですか?
処理をしたらTRUEを返し、関係ないメッセージだった場合は基底クラスのWindowProcに渡す
でOKですか?
0564デフォルトの名無しさんNGNG
>>563
んなことしないでON_MESSAGE使えばいいのでわ?
0565デフォルトの名無しさんNGNG
>>562
消滅は違う。こんな感じ↓で ~CTestApp は何もしない。

void CTestDlg::OnCancel() { DestroyWindow(); }
void CTestDlg::OnOK() { DestroyWindow(); }
void CTestDlg::PostNcDestroy() { delete this; }
0566562NGNG
>>565
なるほど・・ありがとうございます!
0567デフォルトの名無しさんNGNG
MDIアプリのCXXXDoc::Serializeでファイルを読み込み、
1.読み込みに成功したらMDI子ウィンドウのサイズを固定する
2.読み込みに失敗したらMDI子ウィンドウを破棄する
としたいのです。
(可能であれば、CXXXDoc::Serialize内での)MDI子ウィンドウのサイズ固定方法と破棄方法を教えて下さい。
0568デフォルトの名無しさんNGNG
>>567
ModifyStyle/ModifyStyleEx使えばスタイルの変更ができる。
破棄する場合はWM_CLOSEとかを送ればいいんでないかい?
0569567NGNG
>>567
ウィンドウハンドルを得るにはどうすればいいのですか?
0570569NGNG
×>>567
○>>568
です。
0571デフォルトの名無しさんNGNG
ドッキングウィンドウ(ダイアログバー)を使っているのですが、
その中の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()
{
}
では受け取れません。
どう対処すべきですか?
0572サンプルですNGNG
女女女女女女女女女女女女女★2日間無料★
http://endou.kir.jp/betu/linkvp2/linkvp.html
0573デフォルトの名無しさんNGNG
>>571
ダイアログバーにメッセージをルーティングしてないんじゃ?
0574デフォルトの名無しさんNGNG
>>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
0575デフォルトの名無しさんNGNG
>>574
調べてここまで行き着いてダウンしたんっす。
0576デフォルトの名無しさんNGNG
スレッドの排他制御をしたいんだがCRITICAL_SECTIONをグローバルにしちゃ
ダメですか?
0577デフォルトの名無しさんNGNG
クリティカルセクションってグローバルで使うもんでないの?
0578デフォルトの名無しさんNGNG
>>577
んなことないだろ。
保護したいもんと同じスコープで使えばいいと思う。
0579名無し@沢村NGNG
>>575
CDocument::GetFirsutViewPosition()
CDocument::GetNextView()
0580567NGNG
>>579
>>575ではありませんが、ありがとうございます。
CXXXDoc内からCXXXViewにアクセスできました。
(既に、CXXXViewのOnInitialUpdateでGetDocumentして、CXXXDocに設定したフラグを得るように実装してしまいましたが)
0581580NGNG
×CXXXDoc内からCXXXViewにアクセスできました。
○CXXXDoc内からCViewにアクセスできました。
です。
0582デフォルトの名無しさんNGNG
メインスレッドとワーカスレッドという本質的に異なる2つのクラス
の両方の間を取り持ち、インスタンスは一つしかないクリティカルセクション
どちらか一方のクラスのメンバにするべきかグローバルにすべきか。。
みんなならどうする?
すれ違いスマソ〜
0583デフォルトの名無しさんNGNG
>>582
すげぇ。理解できなかった。
0584デフォルトの名無しさんNGNG
簡単にいうと
クリティカルセクションのオブジェクトをどこに持たすか。
です。

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

0585吉岡美穂NGNG
>>584
好みの問題
0586デフォルトの名無しさんNGNG
もしグローバルにCRITICAL_SECTIONのオブジェクトとか
イベント通知用のHANDLEを宣言しても
初期化処理とかはCDialogの初期化時にいっしょにしてしまうことになるから
CDialogのメンバにすべきかな。でもポインタ渡すのめんどいしな。
なやムー
0587デフォルトの名無しさんNGNG
CStringで10*10の配列に文字列を格納したいときにとどのように配列を作ればいいのでしょうか
int x = 10, y = 10;
CString* pTest = new CString[x][y];
このようにすると、文字列ではなく1文字だけしか格納できなくて困っています。
0588デフォルトの名無しさんNGNG
>>587
それコンパイル通るの?
0589587NGNG
通りませんでした。
0590デフォルトの名無しさんNGNG
CStringArrayをnewしてはどうか?
0591587NGNG
>>590
ありがとうございます。そうしてみます。
0592吉岡美穂NGNG
>>587
std::vector<std::vector<CString> >
0593デフォルトの名無しさんNGNG
>>587

CArray<CString,CString&>
0594デフォルトの名無しさんNGNG
エディットボックスの変数がint型の時、変数に何を代入すれば
実行した時、表示を空白にできますか?
NULL入れたら「0」って表示されてしまいました。
CString型だったら「""」を変数に代入したら空白が表示されました。
0595デフォルトの名無しさんNGNG
>>594
空白表示したいんなら、int 型じゃまずいんじゃないの ?
int a; printf("%d", a);
さて、a に何を代入したら空白が表示されるでしょうか ? と聞いてるのと同じだと思うが。
素直に CString 型にしといて、普通は文字列に直して表図するようにすればいいと思う。

エディットボックス側でなんか強制的に空白を表示するような機能があるなら別だけど...。
0596デフォルトの名無しさんNGNG
>>595
エディットボックスにint型を割り当てても、変換してWindowTextを表示しているだけだ。
空白にしたければエディットボックス自体を操作すればよい。
0597デフォルトの名無しさんNGNG
>>594
int型、CString型なんてやめて、CEdit型で操作しれ。
0598デフォルトの名無しさんNGNG
>>579
返事なってへんのとちゃう?
0599デフォルトの名無しさんNGNG
if( !m_iEdit )
 SetDlgItemText( IDC_EDIT, "");
0600デフォルトの名無しさんNGNG
>>582
シングルトンにして両方に持たせる
0601デフォルトの名無しさんNGNG
別のプロジェクトで作成される DLL があって、その中のリソースと
して定義されてるダイアログを、自分のプロジェクト内からクラス
ウィザードで操作するのって、なんかいい方法ある?
0602デフォルトの名無しさんNGNG
アプリケーションを終了させる為に
::PostQuitMessage(0);
とすると、メモリーリークが出てしまうんです。(涙
どうしたら良いんでしょう? 助けてください。
0603吉岡美穂NGNG
>>602
その質問で答えが出てくると思う?
その質問で答えが出てくると思う?
0604デフォルトの名無しさんNGNG
>>602
おもしろい質問だなあー(w.さすがの吉岡美穂でもむりだろ.
メモリーリークの意味から考えていったらいいと思います.
0605デフォルトの名無しさんNGNG
>>599
やってみたけど、「0」って表示された。もう少し説明をお願いします。
0606デフォルトの名無しさんNGNG
ES_NUMBERスタイルがついてるんぢゃない?
0607デフォルトの名無しさんNGNG
IDがMFC4…
0608デフォルトの名無しさんNGNG
>>602
それはメモリリークしてるんだよ。
お前の頭含めて。
0609デフォルトの名無しさんNGNG
>>608
最近漏れの頭のなかのスタック領域の破壊が
進んで来ているようなんだが…
0610デフォルトの名無しさんNGNG
>>607
IDなど(ry
0611デフォルトの名無しさんNGNG
>>602
つかさ、命令を全角で書くなんざプログラマの風下にもおけないと思うわけよ
0612デフォルトの名無しさんNGNG
どなたか教えて下さい、質問です。
C#では画面(DOS画面)のクリアの時にエスケープシーケンスで
printf("\033[2J");
とやれば画面のクリアができますが、C++ではどのようにコーディングすればいいのですか?
ちなみにOSはWindows2000を使用しています。
0613デフォルトの名無しさんNGNG
>>611

「命令」って...

ベーシッカーですか?、あんた
0614デフォルトの名無しさんNGNG
アセンブりゃーだろ
0615デフォルトの名無しさんNGNG
普通に閉じてもリークしないなら、送るウィンドウが違うかかな
0616デフォルトの名無しさんNGNG
http://www.geocities.co.jp/AnimalPark-Lucky/2482/tsuri.gif
つまり、なんだ。
0617デフォルトの名無しさんNGNG
ツールバーを使いたくてMicrosoft Toolbarコンポーネントをダイアログ上に配置しました
ボタンの追加やクリックイベントの検出までは出来たのですが、
どのボタンが押されたのかが判定出来ません…
皆様はどのようにしてるのでしょうか?
0618デフォルトの名無しさんNGNG
>>612
いつC#にprintfなんか出来たんだ?
0619デフォルトの名無しさんNGNG
すんません、ちょっと質問させて下さい。
VC++ 6.0(MFC) & Win2000 SP3 & IE6 SP1です。

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

どなたかご教授頂ければと思います。
0620デフォルトの名無しさんNGNG
>>619
GetSystemMenu()
0621デフォルトの名無しさんNGNG
>>620さん
ありがとうございます。なんとかやってみます。
0622デフォルトの名無しさんNGNG
質問です。
VBで既に出来上がっているプログラムをVCに書き直す作業が必要です。
手っ取り早くやるにはどうしたらいいですか?
VCで書き直した後にいろいろと拡張したいのですが。
0623デフォルトの名無しさんNGNG
>>622
一から作り直す。
0624デフォルトの名無しさんNGNG
VC6.0のIDEのツールバーですが、これはMFCのCToolBarを使って
ないみたいですがなんででしょう。
(VCはVC(MFC)で作られているんじゃ...)
0625617NGNG
624の質問に便乗して、ついでに回答よろ。
VCのツールバーは全部クラスから作ってるんじゃ?
0626デフォルトの名無しさんNGNG
>>624
Spy++で覗いて見れ。
0627デフォルトの名無しさんNGNG
>>625
CodeGuruにある。URLは失念した。
0628617NGNG
>>627
サンクスコ!
0629デフォルトの名無しさんNGNG
>>624
VC使ったからと言ってMFCつかわにゃならん義務があるわけじゃねぇし。
0630デフォルトの名無しさんNGNG
どなたかご指南願います・・

VC++6.0+MFCなんですが、
コンボボックスのリストのアイテムを選択した後
エディット部分に表示される瞬間が取得したいのですが・・

CBN_EDITCHANGE
CBN_EDITUPDATE
の2つは、リスト選択時にはまったく動きません。

CBN_SELCHANGE
の方は、まだエディット部分にテキストが表示される前なので
やはりダメです・・

何か良い方法はないでしょうか?
0631デフォルトの名無しさんNGNG
【PC版】Ever17-the out of infinity【大失敗作】
http://www2.bbspink.com/test/read.cgi/erog/1053601941/
0632デフォルトの名無しさんNGNG
よろしくおながいします。

実行したとき、ウィンドウも開かずフォーカスも移らずに
そっと内容を実行して終了する(例えばデータファイルを
開いてフィルタリングして終了する、など)、そんなプログラムを
VC++で作りたいのですが、ベストな方法は?

他のプログラムから呼び出して使いたいのですが、
フォーカスが移るとまずいのです。
0633_NGNG
http://homepage.mac.com/hiroyuki43/hankaku/hankaku08.html
0634デフォルトの名無しさんNGNG
◎よろしかったら見て下さい◎
http://endou.kir.jp/betu/linkvp2/linkvp.html
0635デフォルトの名無しさんNGNG
CBN_CLOSEUPは?
0636630NGNG
CBN_CLOSEUPもマズイです・・
これも、まだエデット部分に表示される前なので・・
0637デフォルトの名無しさんNGNG
>>632
単にShowWindow()しなければいいだけかも

他のプログラムから実行するのであればコンソールアプリにして
呼び出すプログラムがCreateProcess()でコンソールを
作らないようにしてもいいけど
0638630NGNG
も・もしかして不可能?・・(泣
0639デフォルトの名無しさんNGNG
>>630 何がしたいのかな?
0640デフォルトの名無しさんNGNG
>>630
>CBN_SELCHANGE
>の方は、まだエディット部分にテキストが表示される前なので
テキストを取得するのであれば、このときにGetLBText(), GetCurSel()
0641630NGNG
>>639
コンボボックスのリスト選択時に、
選択された文字列が、エデット部分に表示されたますよね?
その表示された瞬間に、エデット部分の文字列を変更したんですよ・・
その為には、リストを選択されたあと、
エデット部分に表示される瞬間の取得が必要な訳でして、
その表示される瞬間が取得したいのですが、
630にも書いたとおり うまく取得できません・・
0642630NGNG
>>640
ダメなんですよ、それも・・
CBN_SELCHANGEでイベントを受けとって
GetLBText()でテキストを取得して、テキストを変更したとしても
その時点では、リストで選択されたテキストが、エデット部分に表示されていないので
自分が変更した後に、再度変更されるんですよ・・(泣きじゃくり
0643デフォルトの名無しさんNGNG
>>630
CBN_SELCHANGE受け取った後自分に自前のメッセージをPostしなおせ。
0644エデットNGNG
>>630
いっそのことコンボボックスの上に別のエデットボックスを上書きして
そのエデットボックスに表示するようにしたら
0645632NGNG
>>637
回答ありがとうございます。

え?DOS窓抜きで実行できるコンソールアプリが
作成できれば理想的なんですが、そんなの出来るんですか?
(^_^;;

呼び出し側は実行するファイル名を指定できるだけで、
中のソースは書き換えられないのですが…
0646637NGNG
>呼び出し側は実行するファイル名を指定できるだけで、
>中のソースは書き換えられないのですが…
呼び出し側のCreateProcess()でコンソールを出ないようにする方法しか
しらない。
起動直後にFreeConsole()しても多分一瞬コンソールが表示されると思うし、
このへんのことはここよりもWin32Apiスレのほうがいいと思う。
0647デフォルトの名無しさんNGNG
CString cs;
m_combo1.GetWindowText(cs);
という記述をOnButton関数内で行ない、デバックしてみるとcsに関して以下のような
CXX0017: Error: シンボル "cs" が見つかりません
というようなコメントがでて、コンボボックス内に表示している文字を読み取ることができませんでした。
何故なのでしょうか。だれか教えてください。
0648630NGNG
レスどうもです。

>>643
でも、リストからエデット部分に表示される前では
意味が無いような気がするんですが・・
エデット部分に表示された直後にメッセージを取得する事は可能ですか?
具体的に教えて頂けるとありがたいのですが・・

>>644
たしかに、その方法だとイケそうなんですが、
コンボボックスにアクセスするコードが大量にありますので
すべて書き直すのはちょっと・・
出来れば、コンボボックス自体でやりたいんですよね・・
0649デフォルトの名無しさんNGNG
>>647
そのコード自体は間違ってないとおもいますよ。
OnButton関数全体を書いた方がいいかも。
0650デフォルトの名無しさんNGNG
>>648
>出来れば、コンボボックス自体でやりたいんですよね・・
...サブクラス化せいよ
0651632NGNG
>>646
ありがとうございます。
そっちで聞いてみます。
0652630NGNG
>>650
なるほど・・ サブクラス化ですか。
こういう方法があるのか・・
ちょっと調べてみます。どうも。
0653デフォルトの名無しさんNGNG
>>648
SendとPostの違いはわかるよね。
0654630NGNG
>>653
分かってなかったッス・・

サブクラス化にPostMessage、よい勉強になりました。
どうもです。
0655デフォルトの名無しさんNGNG
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;
…
}
0656デフォルトの名無しさんNGNG
↑632、637、646 の話ね。抜けてたけど。
0657632NGNG
>>655
わざわざソースまで書いていただいて、ありがとうございます。
win32APIスレでも同じやり方を教えていただき、試してみた
ところ、上手く行きました。ありがとうございました。
勉強になりました。
0658デフォルトの名無しさんNGNG
現在大学の課題をやってます。ワケわかりません。
おまいら、助けれ。

<例>
#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って何よ。
0659デフォルトの名無しさんNGNG
べき乗だろ。
それがなにかわからないならC以前の問題。

あと宿題の質問はこっちな
http://pc2.2ch.net/test/read.cgi/tech/1053963794/l50
0660デフォルトの名無しさんNGNG
リストビューコントロールの表示をレポートにして、そのリスト内の
各アイテムをコンボボックスには出来まつか?
0661デフォルトの名無しさんNGNG
>>660
オーナードロー
0662デフォルトの名無しさんNGNG
山崎渉のせいですごいことになってんな。
とりあえずage
0663デフォルトの名無しさんNGNG
質問です。
MSDNでは以下のようなことが記述されています
■マルチスレッド : プログラミングのヒント■
「非MFCのセカンダリスレッドからはMFCオブジェクトにアクセスできない」
ここで非MFCのセカンダリスレッドとは_beginthread()などのwin32apiで作成したスレッドとします
(ここで間違ってるかもしれませんが。。)

前述のことは以下のどれでしょう??
�@非MFCのセカンダリスレッド内部ではいかなるMFCクラス、オブジェクトも利用できない
�A非MFCのセカンダリスレッド内部では主スレッドで生成したいかなるMFCオブジェクトも利用できない
�B非MFCのセカンダリスレッド内部ではハンドルラッピング系のMFCクラス、オブジェクトも利用できない
�C非MFCのセカンダリスレッド内部では主スレッドで生成したハンドルラッピング系のMFCオブジェクトを利用できない
ここでハンドルラッピング系とはHWND→CWndみたいなハンドルをラッピングするクラスのことです。
0664デフォルトの名無しさんNGNG
アクセス違反で会えなかったキミと、

久しぶりに対面できたから、

今日はSpy++記念日

0665デフォルトの名無しさんNGNG
>663
(1)に一票。
AfxBeginThreadで起動したスレッドだとMFCに必要ななんやかんやを初期化してくれてる
んじゃなかったかな。
ハンドルラッピングっていうと単純に思えるけど、CWndなんてかなりいろいろやってるから
ちっとも単純なラッピングじゃない。
ま、使えるやつもあるかもしれないけど…。
0666デフォルトの名無しさんNGNG
AfxMessageBoxの逆みたいに、ポンと文字列を尋ねるような関数ないすか
0667名無し@沢村NGNG
>>666
gets()
0668デフォルトの名無しさんNGNG
>>667
ダイアログでトリタイのです
0669デフォルトの名無しさんNGNG
ダイアログ自作すりゃいいじゃん。
Editコンポーネント貼り付けるだけだし。
0670デフォルトの名無しさんNGNG
>>665
レスありがとうございます。
自分は�Cかな〜(というか、�Cならいいなー)と思ってるんですよ。(^^;)
実はCSringを非MFCセカンダリスレッドで使ってます。
stringに書き直すべきでしょうか?
みなさんならどうします??


0671bloomNGNG
http://homepage.mac.com/ayaya16/
0672デフォルトの名無しさんNGNG
ひとまず寝てから考える。
0673デフォルトの名無しさんNGNG
ちょっと調べたら「終了時にリークする」とかあったけど。

この辺は CRTが使われている場合、CreateThreadでなく_beginthreadにしないと
リークする場合があるのと同じでないの?

ってか素直に AfxBeginThreadを...
0674デフォルトの名無しさんNGNG
_beginthreadex使え
CreateThreadなんて使うな
0675デフォルトの名無しさんNGNG
初心者板から追い出されました。

質問です。VC++6.0 MFCでアプリを作ってるんですけど、
クラス外からもアクセスできる外部変数は普通はどのように宣言しますか?
やっぱりcppの先頭でグローバル宣言しておいて、他のクラスでextern宣言して
使用するのが普通なのですか?

今、あるクラスのpublicでメンバ変数(char [255])を宣言しておいて、他のクラスからは

CXxxx* pApp = (CXxxx*)AfxGetApp();

として、pApp->メンバ変数にアクセスしてますが、アサートを起こします。
やり方が間違っているのでしょうか?
0676デフォルトの名無しさんNGNG
それってグローバル宣言というより
単にCWinApp派生クラスのメンバでないの?
0677デフォルトの名無しさんNGNG
>>676
そうです。
派生クラスのメンバをあらゆるクラスから操作したいのです。
やはり問題あるコーディングでしょうか?
0678デフォルトの名無しさんNGNG
>>677
問題も何も。
アサートってどこでどんなアサート?
0679デフォルトの名無しさんNGNG
>>675
>やっぱりcppの先頭でグローバル宣言しておいて、他のクラスでextern宣言して
>使用するのが普通なのですか?

あんまり良い事ではないみたいだけどそれで良いんじゃない?
漏れもそうしちゃってたりする(´ー`;)
0680デフォルトの名無しさんNGNG
>>678
アサートを起こしたり起こさなかったり。
ダイアログを切り替えた場合にアサートとなるようです。
今ちょっと再現しないので、内容がちょっとわかりません。。
問題はなさそうですか?
オーババッファフローを起こしてるんかな〜。。
0681デフォルトの名無しさんNGNG
>>678
でました。
File:appcore.cpp
Line:545

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

です。
0682デフォルトの名無しさんNGNG
>>679
やっぱりそれで良いですか。。
皆さんそうしてますか?
周りにVC使いがいなくて相談できないんです。
0683デフォルトの名無しさんNGNG
CWinAppの派生クラスのメンバにして他のクラスからはAfxGetAppでポインタをとって
つーのはやり方としてはあると思われ。漏れはいつもグローバルにしちまうけどね。
多分別の原因じゃ。。
0684デフォルトの名無しさんNGNG
>>681
いまMFCのソースみてみるね。
0685デフォルトの名無しさんNGNG
>>683
とりあえず、グローバルにして使ってみます。
その方が楽ちんですしね。
ども、ありがとうございました。
0686デフォルトの名無しさんNGNG
>>684
あっ、時間差が。。
ちょっと待ちます。
0687デフォルトの名無しさんNGNG
680の文脈から
 アサート ≒ ワーニング、エラー
みたいな意味でアサートという言葉を使用しているけど、
一般的に通じるの?
0688デフォルトの名無しさんNGNG
ASSERTなんとかっていうチェックでエラーを起こしてるから
アサートという表現にしましたけど間違ってますか?
アサートって予期せぬエラーって感じですよね?

0689681NGNG
>>686
VC6だよね。
#ifdef _DEBUG
void CWinApp::AssertValid() const
{
(略)
ASSERT(afxCurrentInstanceHandle == m_hInstance);←ココ
(略)
}

該当行は↑なんだけどよく分からん。力になれんなスマン
0690デフォルトの名無しさんNGNG
ASSERT()だろ?
多分MFCの内部でハンドルとかを判定してそこでアサートが出たとかそんなんだろ?
別にエラーやわーにんぐをアサートという言い方はしないし、680も言ってないと思うが
0691689=678NGNG
名前欄書き間違えた。>>678です。
0692デフォルトの名無しさんNGNG
>>689
うーん。m_hInstanceが0にでもなってそうですね。
ちょっと調査します。
ども、ありがとうございました。
0693デフォルトの名無しさんNGNG
構造体についての質問です。
public内に
 struct set{・・・・・・・};
struct set mySet;

と宣言すると構造体を宣言する前はきちんとダイアログが表示されるのですが、構造体を宣言すると例外処理が行なわれダイアログも表示されないまま終了されてしまいました。
どうすればよいのでしょうか?
0694デフォルトの名無しさんNGNG
本当に宣言しただけ?
メモリ解放し忘れとかないよね?
0695デフォルトの名無しさんNGNG
>>693
デバッグしろ。
メモリは位置がずれて、バグが顕在化したんじゃないの ?
0696デフォルトの名無しさんNGNG
>>693
つぅかクラス内の構造体って合法なんでつか?
0697デフォルトの名無しさんNGNG
>>696
合法だよ。

クラス宣言のネスト
クラスは、別のクラスのスコープ内でも宣言できます。
このようなクラスを "ネストされたクラス" と呼びます。
ネストされたクラスは、これを囲むクラスのスコープにあるとみなされ、
このスコープ内で利用できます。
ネストされたクラスを囲むクラスのスコープの外から、このネストされたクラスを参照するには、
完全な限定名を使います。

(MSDNより)
0698デフォルトの名無しさんNGNG
>>697
昔仮に書いたスコープ違いの同名構造体がソースに残ってたりとかしてるんですかね?
0699デフォルトの名無しさんNGNG
>>694
メモリ解放???
ソースの中でですか?それとも構造体自信のですか?

ホントに宣言しただけ・・・だと思います。
なんでなんでしょうね・・・
0700デフォルトの名無しさんNGNG
>>699
マルチポストすんな
氏ね
二度と来るなカスが
0701デフォルトの名無しさんNGNG
>>700
答えられないからってカッカするなよ プププ
0702デフォルトの名無しさんNGNG
マルチポストが嫌われることぐらい常識だと思うが。
0703デフォルトの名無しさんNGNG
厨房様に常識はない

↓次の人どうぞ
0704デフォルトの名無しさんNGNG
宣言しただけでエラーが突然多発するようになった。
というタイプのバグはあります。
そういうバグはたいていメモリ関連です。
たとえば昔は構造体のメンバにアクセスするのに先頭アドレスから何バイト目とかいう形で
コーディングしたりする人も居ました。
この場合単純にメンバを追加しただけで(バイナリオフセットがずれるから
)エラーになるわけ。
そのほかにもメモリを壊してたけど程度がひどくないため表面化しなかったものが
コードが変化してメモリの使い方がかわってドカンとメモリを壊す→アプリ例外
とか。
0705デフォルトの名無しさんNGNG
>>704
かわいそうに・・・
0706デフォルトの名無しさんNGNG
VC6++の初心者です。
タブコントロールのやり方がよくわからないので調べてたら、

[プロジェクト]→[プロジェクトに追加]→[コンポーネント及びコントロール]→[プロパティーシート]
でそれっぽいのが出来るというのを見つけて、
それっぽいのが出来たんですが、

リソースにはタブの部分のダイアログがなくて、
プロパティーに標準でついてると思われる
「OK」「キャンセル」「適用」「ヘルプ」ボタン
ってのが削除ができません。

「適用」「ヘルプ」とかは削除したいのですが、どうすればよいですか?
0707デフォルトの名無しさんNGNG
>>706
propSheet.m_psh.dwFlags |= PSH_NOAPPLYNOW;
propSheet.DoModal();

で適用は消えるが、ヘルプが消せない(;´Д`)
propSheet.m_psh.dwFlags &= ~PSH_HASHELP ;
もダメ。
自分で作ってる他のアプリでは、ヘルプボタンは何もしなくても最初から
消えてるんだが...おかしいな。
0708707NGNG
ttp://www.athomejp.com/goldfish/mfc/dialog/nonhelp.html
PropertyPageの HASHELPフラグも除去する必要があるのか。

CPropertyPage::CommonConstruct()
{
 ・・・
 if (AfxHelpEnabled())
  m_psp.dwFlags |= PSP_HASHELP;
}
が敗因だった。質問に答える側が勉強になってる罠
0709706NGNG
>>707
ありがとうございました!

早速やってみます!
0710デフォルトの名無しさんNGNG
リストコントロールのメッセージハンドラ(カラムを押したときの)を呼び出したいのですが
うまくいきません。下は試しに書いてみたのですが、
LPNMLISTVIEW pNMLV;
LRESULT pResult;
NMHDR pNMHDR = reinterpret_cast<NMHDR>(pNMLV);// '型キャスト' : 'LPNMLISTVIEW' から 'tagNMHDR' に変換できません。
SendMessage(LVN_COLUMNCLICK, (WPARAM)pNMHDR, (LPARAM)pResult);// '型キャスト' : 'NMHDR' から 'WPARAM' に変換できません。
どうしたらいいでしょうか。
0711デフォルトの名無しさんNGNG
>>710
こうじゃないか?
NMHDR *pNMHDR = (NMHDR*)pNMLV;

LP〜っていう型はポインタ型だから、NMHDRではなくNMHDR*にキャストすべし。
下のエラーは上のエラーを直せば消える。と思う。
0712デフォルトの名無しさんNGNG
NMHDR pNMHDR
これポインタになってないじゃん
0713710NGNG
>>711>>712さん
ありがとうございます。無事コンパイルは通ったのですが、警告が出てしまいました。
無視して構わないのでしょうか
値が割り当てられていないローカルな変数 'pResult' に対して参照が行われました。
0714デフォルトの名無しさんNGNG
>>713
お前はCを理解しているのかと小一時間問い詰めたい…
0715710NGNG
>>713
あっ 出来ましたすみません。 説明までしてもらったのに..
申し訳ないんですが、今度はSendMessageがうまくいきません。関数が呼ばれないんです。
0716デフォルトの名無しさんNGNG
>>715
前提知識がなさ過ぎる。

CWndクラスのSendMessageを呼んだのならそのクラスにメッセージが飛ぶから、
別のウィンドウに送りたいならそのウィンドウのポインタなりウィンドウハンドラなりを取得して
pWnd->SendMessage(〜〜〜);    または
::SendMessage(hWnd, 〜〜〜);
みたいにする必要がある。

どうやってポインタを取得するんですか、とか聞くなよ。
0717710NGNG
>>716
同じクラスです。
ON_NOTIFY_REFLECT(LVN_COLUMNCLICK, OnLvnColumnclick)
関数もちゃんとあります
0718デフォルトの名無しさんNGNG
そもそも何がしたいんだ?リストビューコントロールのヘッダクリックをシミュレートしたいのか?
だとしたらカラのNMHDRやNMLISTVIEWを送りつけて何の意味があるのかと小一時間
0719710NGNG
>>718
ソートしたいだけです。
0720デフォルトの名無しさんNGNG
>>719
だったらSendMessageする必要ないじゃん。
OnLvnColumnclickにソート処理書けよ。
0721デフォルトの名無しさんNGNG
>>720
そうします。汚してすみませんでした
0722デフォルトの名無しさんNGNG
CObjectから派生してシリアライズ機能を追加したクラスをDLLに作りました。(CMyClassとする)
メインのEXEでそのDLLを読み込みそのCMyClassをインポートして、インスタンスをつくります。
シリアライズの書き出しのとき、operator << で書き出すとそのインスタンスが正しく出力されるのですが、
読み込みのとき、operator >> で失敗してしまいます。
CRuntimeClass::Load(CArchive& ar, UINT* pwSchemaNum)のなかでCMyClassを見つけることができず失敗しています。
DLLからインポートしたクラスでCObjectのシリアライズ機能は使えないもなのでしょうか?
0723デフォルトの名無しさんNGNG
安心確実

お支払は安心の代金引換です
振り込んだのに商品が届かない等
の心配は無用!
http://www.net-de-dvd.com/
0724デフォルトの名無しさんNGNG
?c@b@@AAGXM@Z

装飾名の後半部(AAGXM@Z)の
命名規則をまとめてあるところってないでしょうか?
0725デフォルトの名無しさんNGNG
>>724
ここ?
http://www.kegel.com/mangle.html
0726724NGNG
>>725
ありがとうございます。
0727デフォルトの名無しさんNGNG
描画するオブジェクト数が多く、逐一OnDraw()を使うと描画に時間がかかりそうなので、
一度バックグラウンドに描画してから、必要な部分を随時ウィンドウにコピーしようと思うのですが
どのようにすれば良いのでしょうか。

まったく分からないので、概略や参考HPだけでも教えていただけると助かります。
0728デフォルトの名無しさんNGNG
>>727
メモリDC
BitBlt
0729デフォルトの名無しさんNGNG
_T マクロでSJIS/UNICODEを切り分けてRDBに文字を保存できるのは良いと思うのですが、UCS-2でなくUTF-16で保存したい場合にはどういう記述になりますか?
0730デフォルトの名無しさんNGNG
マルチ〜
0731デフォルトの名無しさんNGNG
>>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
と考えてていいと思うがなー
0732デフォルトの名無しさんNGNG
COM/ActiveXにGUIDってありますよね。
あれって何て読むんでしょう。
グイド?
0733デフォルトの名無しさんNGNG
>>732
ぢーゆーあいーでー
0734ガイコツジンNGNG
ぐーいどイイマース
チナミニGUIハぐーいデース
0735がにまたで滑り台をあがる反町の嫁NGNG
// 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のメンバ関数の引数の定義があやしいと思っていますが、
誰か教えてください。
0736_NGNG
http://homepage.mac.com/hiroyuki43/hankaku02.html
0737デフォルトの名無しさんNGNG
>>GUID
アメ公の発音は グイッド って言ってるように聞こえる
グに強調で、イの前までこころもち伸ばし気味
ジー・ユー・アイ・ディー、でも通じるけど
GUID は MSI インストーラでも多用されとるがな
0738これわかりますか?NGNG
3つの数値を入力したとき、それらの値を辺とする三角形ができるか否かを判断して結果を表示せよ。
0739解いてくださいNGNG
問題 各自の名前を入れた文字配列を決め、その順序を逆にして表示せよ。
0740デフォルトの名無しさんNGNG
>>738
値は辺の長さ?
それなら一番長い辺がその他の2つの辺の合計よりも短ければいい。

っていうか、738も739も宿題みたいだが、MFCで解くっていう課題なのか?
0741デフォルトの名無しさんNGNG
>>739
マルチバイト文字も考慮するんですか?

ネタも宿題も↓へ

C/C++の宿題やらせてください。7代目。
http://pc2.2ch.net/test/read.cgi/tech/1053963794/l50
0742デフォルトの名無しさんNGNG
>>739 MFC-MLにも「解いてください」とかいって投稿しただろ! ○海大学生!
0743デフォルトの名無しさんNGNG
>>738もだな
0744VC見習いNGNG
ちょっと教えてください。おながいします。
三つの返り値をもつメンバ関数を作成したのですが
呼出元から この関数を呼ぶと 最初の一つは値が引き継がれるのですが
残りの二つは値が消失してしまいます。関数内では値取得できているのですが
なぜでしょうか。それぞれの違いは 
最初の返り値の定義をchar型で残りの2つはDWORD型というくらいです
たすけてください。
0745デフォルトの名無しさんNGNG
>>744
「戻り値」の意味をよく理解してから出直せ。
0746デフォルトの名無しさんNGNG
>三つの返り値をもつメンバ関数を作成したのですが
それたぶんCじゃない。
C++でもない。
0747デフォルトの名無しさんNGNG
>>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
0748デフォルトの名無しさんNGNG
return (1,2,3);
としたのか
いや1番目の値が残るならこれだろうか。
return 1,2,3;
0749デフォルトの名無しさんNGNG
return 1;
return 2;
return 3;

でおおけい
0750デフォルトの名無しさんNGNG
>>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
マジな話すると、「ソース晒せ」。まずはそれからだ。
0751デフォルトの名無しさんNGNG
3つの値を返したいなら、3つの値を持つ構造体を返り値にしてもできるぞ
ま、引数を参照渡しするのが普通だと思うが

関数型の言語って、x = f(a,b,c) のように入力と複数で出力が1個の
場合はすっきりするんだが、入出力がそれぞれ複数の場合はなんか
スマートでない気がしたんだな。慣れちゃうとそんな事あまり考えなく
なるのだが
0752デフォルトの名無しさんNGNG
>>751
なんで関数型の言語の話が出てくるの?
0753デフォルトの名無しさんNGNG
>>752
C も C++ でも事情は一緒だと思うがなー
0754デフォルトの名無しさんNGNG
>>750
返り値は一個だろw
0755デフォルトの名無しさんNGNG
VC++6.0SP5のMFC使ってます

CRichEditCtrlを初めて使ってみましたが
通知メッセージ(EN_SETFOCUS, EN_KILLFOCUSなど)が
全く飛んでこないんですが・・・(CEditは普通に飛んでくる

::AfxInitRichEdit();はきちんと呼び出しています(WinAppの派生クラスの関数InitInstance内で
0756デフォルトの名無しさんNGNG
>>752
750-751は釣り
0757デフォルトの名無しさんNGNG
>>755
MSDN見るとCEditやCListBoxには通知メッセージの説明があるけれど、
CRichEditにはありませんな〜。

ひょっとして、EN_〜じゃなくてNM_〜では?
0758デフォルトの名無しさんNGNG
>>46
久々にMFC使ったら俺もそうなったので焦った。
オプションのディレクトリ設定で"Microsoft SDK"のパスの優先度を下げて解決。
0759デフォルトの名無しさんNGNG
リスト状に、コントロールが乗っている子ウインドウを並べて操作したいと思っております。
CListBox、CListCtrl等の中に子ウインドウを並べる事は出来るでしょうか?
色々と試行錯誤している段階なので、よろしければヒント等をいただけたらと思います。
0760デフォルトの名無しさんNGNG
>>759

一般論だけど、ダメ。無理。ムダ。
普段はカスタムドローでも何でも使って普通に描画しといて、
クリックされたりした瞬間だけ(使いまわした)コントロールを show するのが良いよ。
0761デフォルトの名無しさんNGNG
MFCのAppWizardで作成したソフトで、「ファイル→開く」から複数の拡張子を選べるようにしたのですが、保存する時は開いた時の拡張子でしか保存できません。
これを「開く」と同じようにファイルの種類を選べるようにするにはどうすればいいのですか?
それと、開くときにフィルタを(*.txt; *.doc)のようにして、ダイアログに.txtと.docを両方表示させるようにするにはどこをいじればいいのですか?
0762デフォルトの名無しさんNGNG
GetDocString あたりを調べれば何とかなりそうな予感。
あるいは保存部分を自作コードで……
0763デフォルトの名無しさんNGNG
MFC内部で使われてる関数って、勝手に使うと問題あるのかね...?

例えば mfc\src\afximpl.hで定義されてるような香具師を、afximpl.h を
includeして使うとか。
0764761NGNG
>>762
GetDocStringをいろいろと試してみます。
あと保存部分の自作も挑戦してみます。
ありがとうございました。
0765デフォルトの名無しさんNGNG
>>763
自分が何やってるか理解できればいいと思うよ。
MFC ったって、単なるクラスだからね。
(まあ、複雑に絡み合ってるだろうから、解析するのは大変だろうけど。)
0766    NGNG
VC++.NET で MFC も消滅の運命を歩むだろう。
もうMFCは古い。
0767デフォルトの名無しさんNGNG
VC++.NETも儲からなければあっさり捨てられるだろう。
COMのように。
0768デフォルトの名無しさんNGNG
>>767
しったか半可通。
0769デフォルトの名無しさんNGNG
メインフレームってどういった概念なのでしょうか?
viewクラスとdocクラスとメインフレームクラスをわざわざ分けるのはなぜですか?
単純にwin32のように一つのcppにまとめて書いてあってもいい気がするのですが。
0770デフォルトの名無しさんNGNG
>>769
document-viewについて勉強することを勧める。

俺の理解では(間違ってるかもしれんが)
アプリケーションというのはドキュメント(テキストや画像のデータ)があり、
ビューはそのドキュメントの内容を描画するだけ。
それらを収めてメニューやツールバーを管理するのがフレーム(枠)、ということ。

フォルダにファイルを作成→関連付けたアプリを起動、というように、
ドキュメント(ファイル)を起点にしたものがWindowsの思想だと思ってる。
0771デフォルトの名無しさんNGNG
描画するだけ、ってのはちょっと語弊があるな。スマソ

アプリケーションはデータを編集するためのツール、という視点で捕らえればわかるかもしれない。
もちろんそういうアプリばかりではないが、doc-view構造を持つということはそういうことだと思う。
0772デフォルトの名無しさんNGNG
>>769
VBから離れるとその利点が良くわかる。
0773デフォルトの名無しさんNGNG
>>772
またお前か
0774デフォルトの名無しさんNGNG
>>769
この辺みとけ。
ttp://www.microsoft.com/japan/developer/library/vccore/_core_document.2f.view.3a_.overview.htm

770の言ってることをちょっと補足するなら、
たとえばひとつのドキュメントに複数のビューを持つ場合。
(数値データに対して表モードとグラフモードを切り替えて表示するような場合ね。)
表を表示する専用のビューとグラフを表示する専用のビュー、みたいに独立して書けるわけ。
Win32(SDKのことだと思うが)はコードがごちゃごちゃしないか?
0775769NGNG
MSDNってこういう使い方もあるんですね。
APIの解説しか読んでなかったや。
熟読してみます。皆さん、ありがとうございました。
0776デフォルトの名無しさんNGNG
エクスプローラみたいなファイラを練習として作ってます。
エクスプローラなら、ツリーで選択されているディレクトリに
変更があった場合(新しいディレクトリが追加されたとか)、
ツリービュー・リストビューともに更新されますが、これって
エクスプローラが何かの方法でディレクトリの変化を知った
ということですよね。1秒置きにポーリングするなどの原始的な
方法以外で、変化を知る方法があるのでしょうか?
0777_NGNG
http://kame.kakiko.com/hiroyuki/hankaku_b01.html
0778デフォルトの名無しさんNGNG
>>776
あるよ。忘れたけど。

確かFindfastなんちゃらかんちゃらだ。
0779デフォルトの名無しさんNGNG
>>776
FindFirstChangeNotification
FindNextChangeNotification
かな?
使ったことないから知らんけど。
0780776NGNG
>>778 >>779
サンキューです!
MSDN調べてみます。
0781デフォルトの名無しさんNGNG
>>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)
0782名無し@沢村NGNG
>>776
SHChangeNotifyRegister()
ReadDirectoryChangesW()
0783デフォルトの名無しさんNGNG
質問です。
ポートlistenしてUIスレッドを生成、
それぞれのスレッドがAsyncSocket派生クラスで通信を行うようなサーバプログラムなのですが、
ときどきデバッガ実行中に無言で落ちるときがあります。
次のような出力がありますが、その他ASSERTやらは一切出ず。
「スレッド'Win32 スレッド'(0xXXX)はコード3(0x3)で終了しました。」
デストラクタ等も動いていないようなので落ちてるのは間違いないようです。

これはどういう現象でしょうか?
または突き止めるにはどういう方法が有効でしょう?

環境はWin2kPro/SP3、VC++.NET
動作環境がかなり貧弱でペン3/600MHz、メモリ128
動作環境でしょうかねぇ・・・?
0784直リンNGNG
http://homepage.mac.com/yuuka20/
0785783NGNG
追記。
スレッドは多いときで20〜30くらい立ちます。
ソケットメッセージ編集のためにふんだんにメモリ使います。
書けば書くほど動作環境のような気がしてきた。
出力されるメッセージとの関連がわかれば、それで納得できるのですが・・・
0786デフォルトの名無しさんNGNG
MDIでプログラミングした時などに、「最近使ったファイル」というものがメニュー内にあります。
それを操作するにはどうすればいいでしょうか?
0787デフォルトの名無しさんNGNG
>>786
CRecentFileList
0788デフォルトの名無しさんNGNG
OSがアップデートされたときなどに右下のタスクバーに吹き出しが
でるけど、あれってどうやって表示させればよいのですか?
なるべく自分で調べますので関連するキーワードとか教えてください
よろしくお願いします
0789_NGNG
http://homepage.mac.com/hiroyuki44/hankaku09.html
0790デフォルトの名無しさんNGNG
>>788
バルーンだね。この質問も定期的にあるなぁ。
0791デフォルトの名無しさんNGNG
例えばMFCのCDC::FillSolidRect()でCRectのポインタを引数
として受け取るようになっているのですが、変数をそのまま渡しても
ちゃんと走ります。これはおかしくないのでしょうか?
0792デフォルトの名無しさんNGNG
CRect::operator LPCRECT
0793791NGNG
>>792
ハッ!そういうことでしたか。
厨な質問ですみませんでしたm(__)m
0794デフォルトの名無しNGNG
Visual C++ .netのキーバインドってemacs風にはならないのかな???
選択開始が割り当てられない・・・・
誰か教えてください、よろしくお願いします。
0795デフォルトの名無しさんNGNG
>>794
emacsを.net風にカスタマイズするほうが楽だよ。
0796デフォルトの名無しさんNGNG
>>794
カスタマイズ可能。
.NETだったら [キーボード マップ スキーム]なるものがあって、そこに
emacs風とかあったり? (.NET使ってないから分からん)

VC6は一個一個キーバインドをシコシコ替えなければならんかったが。

誰かがemacs風のキーバインド定義して、レジストリ公開すればいいんだけどね(w
0797デフォルトの名無しさんNGNG
>>794
マルチうぜぇ
市ね
二度と来るな
回線切って首吊(ry
0798デフォルトの名無しさんNGNG
そんな事よりよ、1、ちょいと聞いてくれよ。
このあいだ、Visual C++ .netでプログラム書いてたんですよ。Visual C++ .netで。
そしたらなんか「Visual C++ .netのキーバインドってemacs風にはならないのかな」
とか、いってるやつがいるんですよ。(ry
もうね、アホかと。馬鹿かと。 (ry
お前ら、emacsって言いたいだけちゃうんかと。(ry
0799デフォルトの名無しさんNGNG
Windowsを超えるOSをVCで作りたいと思っています。
どなたか参考になるサイトあったら教えてください。
0800デフォルトの名無しさんNGNG
みてね〜♪
http://www1.free-city.net/home/s-rf9/page002.html
0801デフォルトの名無しさんNGNG
>>800
見るな。ブラクラだったよ。
0802デフォルトの名無しさんNGNG
>>797
マルチうぜぇ
市ね
二度と来るな
回線切って首吊(ry
0803789NGNG
>>790
もう少しかみ砕いて教えてください!!
0804デフォルトの名無しさんNGNG
789は死ね
788なら、キーワード教えてくれっつーんだから十分だろ?
0805デフォルトの名無しさんNGNG
>>789
氏ね
0806デフォルトの名無しさんNGNG
CRectにCopyRect()という他のCRectインスタンスをコピーする
関数がありますが、これってどんなとき使うのですか?
dest=sorcでいけるのに何のためにあるのでしょう?
0807名無し@沢村NGNG
>>789
キエロ
0808デフォルトの名無しさんNGNG
OSがアップデートされたときなどに右下のタスクバーに吹き出しが
でるけど、あれってどうやって表示させればよいのですか?
なるべく自分で調べますので関連するキーワードをAPI名で
教えてください。
0809名無し@沢村NGNG
>>808
つまらん、おまいのカキコはつまらん
0810デフォルトの名無しさんNGNG
>>808
うちのOSであるHP-UXでは出ません。以上。
0811793NGNG
くだらねぇ煽り合戦やめれ。
あー原因がつかめん・・・
何も言わずに落ちるのは何故?
0812デフォルトの名無しさんNGNG
>>808
TTS_BALLOON
0813デフォルトの名無しさんNGNG
キーワードは>>790でとっくに出てるのにマルチする厨はほっとけ
0814811=783NGNG
へんなのとレス番間違えちゃったw
0815100人に1人NGNG
◎人の嫌がることをズケッと言うのはこんな奴!
<アスペルガー症候群(自閉症スペクトラム)←脳の機能的疾患(遺伝が要因)>
●変化を嫌う
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


0816デフォルトの名無しさん NGNG
VisualC++ってタダ?
0817デフォルトの名無しさんNGNG
>>816
そのネタ秋田。
0818デフォルトの名無しさんNGNG
これは VC++ Standard .NET 2003 には最適化コンパイラが付いているって事かい?
http://www.microsoft.com/japan/msdn/visualc/productinfo/topten/upgrade60.asp
俺(VC++6.0Proユーザー)VB、C#いらないからVS.NETPro買い控えてた。
これってほんとか? むちゃくちゃ安いし・・・
0819デフォルトの名無しさんNGNG
VC++でデータベースを使ったプログラムを作る場合、
データベースは何がいいのでしょうか?やはりソフトが
必要なんですよね?
本当に簡単なのでもいいのですが・・・。
0820名無し@沢村NGNG
>>819
MSDE
0821デフォルトの名無しさんNGNG
>>818
Standard版には最適化コンパイラは付いてないですよ。
Visual Studio .NETに付いてるのがProfessional版です。
0822デフォルトの名無しさんNGNG
>>821
そうなのか? リンク先を見る限り .NET2003 では、VC++ Standard版に
最適化コンパイラがついているように見えるが。

だとしたら、俺も買いたい。
0823デフォルトの名無しさんNGNG
>>822
http://direct.ips.co.jp/pc/ihtml/vsnet/VSnet_seet.htm
0824デフォルトの名無しさんNGNG
>>823 いや、だから .NET「2003」は違うんじゃないか?
0825デフォルトの名無しさんNGNG
>>824
製品構成と価格から見ても微妙だと思うけど…
仮に Standard .NET 2003に最適化コンパイラが付いてたら
VS.NET買っちゃった人はブチギレですな

最適化コンパイラがついてるなら、俺もStandard買うよ。
0826デフォルトの名無しさんNGNG
ListViewの MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
が呼び出された後で、パラメータを変更したいとき、
みんなどうやってる?

たとえば、
lpMeasureItemStruct->itemHeight
を後で変更したくなったようなとき。

ウィンドウサイズを変更して、MeasureItem()が呼び出されるようにとか
色々試してはいるけど、決定打がないのよね。
0827デフォルトの名無しさんNGNG
CHtmlView::GetHtmlDocumentについて疑問があります。
MFCのコードは以下のようになっていますが、
  LPDISPATCH result;
  m_pBrowserApp->get_Document(&result);
  return result;
これだと、呼び出すたびにドキュメントの参照カウントが増加すると思います。
しかし、GetHtmlDocumentを使用している部分ではそのことを考慮しているようには見えません。
Releaseしなくても良いのでしょうか?
0828デフォルトの名無しさんNGNG
>>825
StandardにはMFCのソースコードが付いていないだろ。
そんな環境でMFCのアプリの開発なんかやってられるかよ。
0829デフォルトの名無しさんNGNG
>>827
使い終わったらReleaseしましょう……
0830デフォルトの名無しさんNGNG
>>819
別に何でもいいんじゃないの。
Access持ってるならそれで作っちゃうとか。
0831デフォルトの名無しさんNGNG
>>829
やはりReleaseは必要なのでしょうか?
MFCのCHtmlViewのソースではCComPtrを使っているためAddRef/Releaseが対で呼ばれてしまい、get_Document内でAddRefされた分のReleaseが呼ばれていないような気がします。
またWeb上の多くの文章やMSDNでもReleaseは呼んでいないようです。
0832デフォルトの名無しさんNGNG
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)出しなゴルァ」って・・・
日本政府はマイクロソフトに対し、竹の子剥ぎボッタクリ防止条例の適用をしてホスイ。
0833819NGNG
>>820
>>830

レスどうもです。確かに別になんでもいいのですが、少なくとも
今はVC++.NETしか持ってない状態なので・・・。
ほんとに簡単なものでもいいんですよね。自前で検索効率のいい
ファイル構造を作っちゃえるならそれでもいいし・・・。
でもそんな技術ないし・・・。
とりあえず、たくさんのデータをためて、そこからいろんな条件で
検索とかするという構想なので、やはりデータベースですよね。
MSDEってけっこう大掛かりじゃないのでしょうか?
個人レベルならAccessですかね・・・。
0834デフォルトの名無しさんNGNG
>>833
つか、使い方なんて、どれでも一緒。
Access持ってるなら使っても良いけど、買う気ならやめれ。
MSDEでも一緒だし、いっそのことフリーのDB選ぶのもよし。
0835デフォルトの名無しさんNGNG
>>833
たいしたものでないならAccess買うなんて勿体無い。
834の言うようにフリーのモノを使うべし。

ところでMySQLって商用目的に使わないならOKだっけか。
0836デフォルトの名無しさんNGNG
>>828
何言ってんの・・・
0837デフォルトの名無しさんNGNG
>>833
条件つけて検索するだけで、ちょいちょいと作るならPerl/Tkがいいぞ。
ん?スレ違いか?
0838デフォルトの名無しさんNGNG
ダイアログボックスでコントロールを配置するときに
見やすく線で区切りたいのですがフレームコントロールではなく
横棒一本(あるいは縦棒)を引きたいです。
でもどれを使っていいか分かりません。
やりかた教えてください。
0839デフォルトの名無しさんNGNG
>>838
OnPaintで線を引けばいいんでないの。
0840819NGNG
フリーですか・・・。ちょっと探してみます。
フリーのがあったんですね(汗

アドバイス感謝です。
0841デフォルトの名無しさんNGNG
VC++ Standard はリモートデバッガが付いていないんだな。
こりゃ話にならん。
0842デフォルトの名無しさんNGNG
つか、Standard版の話なんかどうでもいい。
もっと言えば、Windows開発環境でフリーに固執する奴らの気が知れねー
くだらねーことで右往左往するのが楽しいんだろうな・・・
0843デフォルトの名無しさんNGNG
AfxGetApp()->OpenDocumentFile("-");
でMDIではファイルを表示しますが、子ウィンドウを新規作成で表示するにはどうすればいいでしょうか?
それから、VC++のように、「全て保存」という機能はどのように実装すればいいのですか?

0844デフォルトの名無しさんNGNG
>>843
::AfxGetMainWnd()->SendMessage(WM_COMMAND, ID_FILE_NEW)
これで無理かのう?

「すべて保存」は自分でチマチマつくるんじゃないかな。
開いているドキュメントをスキャンして。
0845デフォルトの名無しさんNGNG
>>844
チマチマスキャンするには、
MDIGetActive,MDINextを組み合わせる方法しか思いつかないのですが、
いい方法はありますか?
0846デフォルトの名無しさんNGNG
BOOL CWinApp::SaveAllModified()

を参考にするのもいいかもしれません。
0847デフォルトの名無しさんNGNG
>>843
子ウィンドウの新規作成は844で書かれているやり方で多分
いいと思う。試してないけど。
すべて保存は次のように書いてみてはどないやろ?

HWND hWnd = ::AfxGetMainWnd()->m_hWndMDIClient; //メインフレームウィンドウのMDICLIENTウィンドウのハンドルを取得
CWnd *pWnd = CWnd::FromHandle(hWnd);
pWnd->SendMessageToDescendants(WM_COMMAND,ID_FILE_CLOSE,FALSE,FALSE); //MDI子ウィンドウの全ての直系の子に対しメッセージ送信

知ったか君の言うことなのであまり信用しないように。:-)
おいらならこれを試してみる、という程度。
0848デフォルトの名無しさんNGNG
TCKってなんですか?
0849デフォルトの名無しさんNGNG
847なんだが、

「MDI子ウィンドウの全ての直系の子」
じゃなくて、
「MDICLIENTウィンドウの全ての直系の子」
だった。スマソ
回線切って首吊って逝ってくる。
0850デフォルトの名無しさんNGNG
>>849
朝ご飯までには帰ってくるのよ
0851デフォルトの名無しさんNGNG
今後VC++はどうなるんでしょう?
C#がでてきたし、マイクロソフト自身の手によって
葬り去られるのでしょうか・・・。

というのも、勉強はしたいのですが、ことC++に関しては
他より勉強量が必要かと。でも、消えちゃうならやる気が
半減なんすよね・・・D言語とかいうのも出てくるみたいだし。
どうなんでしょうか。
0852デフォルトの名無しさんNGNG
>>851
.NETはあくまで最上位レベルでの開発にしか使えんからなぁ。
そう言うことだ。
0853デフォルトの名無しさんNGNG
>>851
C++は死滅しないに一票。
なるべく非MFCで書くよう心がければ
MSと心中することもないだろう。
0854デフォルトの名無しさんNGNG
>>851
PC、OS、プログラム言語については、先の事なんて考えるだけ無駄。
その時手に入る物で、使いたいように使うべし。
新しいの出たら、その時考えれ。
悩んでるだけ時間の無駄だ。
0855デフォルトの名無しさんNGNG
大抵は応用が利くしね。
勉強して損するって事はないよ。
0856デフォルトの名無しさんNGNG
始める前にあれこれ躊躇しているようなヤツは
いざ始めてもやっぱりああすればよかった、こうすればよかったと
いつまでたっても後悔ばかりしているものだ。
つまんないことで悩んでるヒマがあったら何でもいいから
始めてみろとの忠告はまるで耳に入ってないやつが多い。
0857デフォルトの名無しさんNGNG
まあまずは作ってみろってこったな。
MFCのダイアログアプリ辺りでもなんでもいいから。
0858デフォルトの名無しさんNGNG
>>856
激しく同意。人生多少の無駄をしても余る位の時間はある。
0859デフォルトの名無しさんNGNG
店頭での販売まだ〜???
0860859NGNG
誤爆スィタ〜!スマソ。
0861デフォルトの名無しさんNGNG
質問さして下さい。MFCでタスクトレイ常駐型のアプリ作ってます。
(環境:Win2000 SP3 / MSVC6.0 / IE6.0SP1)

リソースでアクセラレータキーを割り当てておいて、
それをそのアプリが常駐している(タスクトレイにアイコンが表示されている)間は
常に有効にしたいと思っています。

プログラムの挙動としては、最初に非表示の空ウィンドウを生成して
それをベースにポップアップメニューを出したり、ダイアログを表示したりと
やっております。

この場合、前述の空ウィンドウにアクセラレータの処理を記述する方がいいんでしょうか?
それともどこか別なクラスの方が適切なのでしょうか。
また、具体的に記述してあるサイト等知っていらっしゃいましたら
お教え頂けますと有難いです。
0862デフォルトの名無しさんNGNG
コンマで区切っているテキストを読み込んでコンマで挟まれているテキストを
取り出すにはどうすればよいですか?
0863デフォルトの名無しさんNGNG
>>861
ホットキー

>>862
while(コンマが見つかった) {
 コンマの前後を分割;
}
0864861NGNG
>>863さん
試してみます。ありがとうございます。
0865862NGNG
>>863さん
もう少し詳しくお願いできませんか?
0866デフォルトの名無しさんNGNG
>>861
フックつかったらいいんでないかい

>>865
それ以上詳しくって……(;´Д`)
0867デフォルトの名無しさんNGNG
>>865
いや、ていうかスレタイ5万回復唱して回線切って首(ry
0868862NGNG
>>867
はいはい
0869デフォルトの名無しさんNGNG
>>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はないんか・・・
0870デフォルトの名無しさんNGNG
>>869
フツーにCStringArray使えばいいじゃん。
0871デフォルトの名無しさんNGNG
>>869
何故CString::LeftとかCString::Midとかを使わない?
0872869NGNG
わっは、初心者がばれた。CStringArrayか・・・。
0873869NGNG
そーすると、
forでまわしてるところを、
a.Add( * new CString(s.Mid(start,end)) );
とすりゃいいんかな。
aはCStringArrayにして、保存するのはポインタじゃなくインスタンスになるので注意っと。
0874869NGNG
ちがった文字数だった Mid(start,end-start) 。スレ汚しスマソ。
0875デフォルトの名無しさんNGNG
>>873
Addに渡すインスタンスは一時オブジェクト。
0876869NGNG
うい、newはいらんすね。
しかも配列をローカルにとって、その中にnewでつくったオブジェクト入れてる、意味不明だ。
0877861NGNG
>>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()で直接拾ってます。
0878デフォルトの名無しさんNGNG
>>847
ありがとうございます。
もう一つあるのですが、
childview のメンバ変数として int i;
とし、mainframe から その i の値を書き換えることができるのでしょうか?
0879デフォルトの名無しさんNGNG
MFCの関数が仮想になってなくてむかつくことって結構ない?
InitialUpdateFrameとかさ
0880デフォルトの名無しさんNGNG
>>878
GetActiveView()等で子ウィンドウのポインタを取得して
childviewにキャストすれば使えるんでないかい。

# データはドキュメントクラスが持つべきだとは思うが……
0881デフォルトの名無しさんNGNG
>>879
仮想である必要はあるかな……?
俺はCViewのOnInitialUpdateをオーバーライドして用事を済ますから必要を感じないだけかもしレンガ。
0882デフォルトの名無しさんNGNG
>>862
std::string使え!
0883デフォルトの名無しさんNGNG
std::stringちょっと嫌い

std::string str;
str = "";
これだとメモリ確保されないから困ることがある
0884デフォルトの名無しさんNGNG
>>880
CView は CChildFrame にキャストできないそうです。
0885デフォルトの名無しさんNGNG
>>883
何でメモリ確保されないと困るのか後学のために教えていただきたい。
0886デフォルトの名無しさんNGNG
>>884
当然でしょ……。
少し考えればGetActiveFrame()を思いつきそうなもんだが、
最近のお子様たちは応用力がないのかな。
0887デフォルトの名無しさんNGNG
1、TreeViewやListViewに表示するデータをドキュメントでどう持つべきでしょう?

2、AppAのバージョンアップをAppBとして
それぞれで作成されたファイルをFileA,FileBとします(Serialize経由のファイル)
  AppAでFileBも読み込めるようなうまい方法はありますか?

以上、お願いします。
0888887NGNG
↑
あ、1と2は別々の質問です。
0889デフォルトの名無しさんNGNG
>>887
1.あんたの勝手
2.VERSIONABLE_SCHEMA
0890887NGNG
1、
ちょっと質問がおかしかったです。
通常TreeViewの各アイテムにオブジェクトを結び付けたい
場合は、SetItemDataなどをつかうのが簡単なんですが、これだとたとえば、アプリ起動時
にファイルを読み込む場合、TreeViewが作成される前にSerializeが呼ばれてしまうし、
ドキュメントとまったく関係ないのであんまりうれしくないんです。

2、
VERSIONABLE_SCHEMAはAppBでFileAを読み込むための仕組みではないのでしょうか?
0891デフォルトの名無しさんNGNG
CDC::FrameRectを使って、XORでワクを描きたいんですけど、どうやったら描画モードをXORに変えられるんでしょうか?
0892デフォルトの名無しさんNGNG
>>890
なぜTreeViewの作成とSerializeの呼び出しタイミングが関係あるのかわからん。
ノードの登録は当然View側でやるんだからOnInitialUpdate時点ですでにSerializeは完了してるので何の問題もない。
0893デフォルトの名無しさんNGNG
>>887
よく分からんが、まずドキュメント&ビューの概念は理解しているのかい?
0894デフォルトの名無しさんNGNG
>>891
FrameRectはブラシつかって描画するから、直接XORはできないんじゃないかな。
ビットマップに描画してXORで重ねるくらいしか思いつかない。
0895デフォルトの名無しさんNGNG
CWinThreadについて質問です。
クラスウィザード(クラスビュー)からCWinThreadの派生クラスを作成すると、
コンストラクタがprotectedになってますよね。
これはいったい何のためでしょうか?
暗にAfxBeginThreadを使え!と言っているのでしょうか。

# サンプルの\ADVANCED\MTGDIではpublicになっているところを見ると、
# publicに書き換えても問題なさそうな気はしますが……。
0896デフォルトの名無しさんNGNG
>>894
Windowsのグラフィックエンジンって、ペンとBlt以外で転送モード指定できないの?
フォントを凝った描き方するのも無理みたいだし
0897デフォルトの名無しさんNGNG
>>896
MSがWin95の時代にそんな設計を考慮に入れる余裕はなかったと思うw
0898デフォルトの名無しさんNGNG
便乗で申し訳ないんですがFrameRect()ってどんな時便利
なのですか?
Rectangle()とはどう使い分けるんですか?
0899デフォルトの名無しさんNGNG
>>898
速い
0900889NGNG
>>890
1.について
Document-Viewを前提とすれば、データの管理はCDocumentがするべき。
TreeViewとかItemDataというのは表示の問題。

CDocument::OnNewDocument()
CDocument::OnOpenDocument()
CDocument::UpdateAllViews()
CView::OnInitialUpdate()
CView::OnUpdate()
などをヘルプで
0901889NGNG
>>890
2.について
旧Verをマイナーアップできるのであれば、VERSINABLE_SCHEMAで。
 
旧Verをいじくれないのであれば、あくまで案だが
新Verでの保存前に『旧Verとの互換有モード』と『互換無モード』を選択させて
1)互換無モードのときは普通に保存。
2)互換有モードのとき
 旧Verと共有できる部分を最初に保存し、
 新Verの追加部分をa)続けて保存する、または、b)別ファイルとして保存。

 たぶんa)で旧Verでも読めると思うが、旧Verには新Verのデータを保存するコードがないので、
 旧Verで編集して保存した場合は新Verのデータは失われてしまう。

 保存する変数が一つ二つ増えただけのときは簡単そうだが、
 あるクラスのメンバ変数が追加されていて、それが配列やリストなどに格納されているような場合は
 新Verで読み込んだときに新データの部分をどうアタッチさせるか考慮しなければならず面倒かも。
0902861NGNG
861です。引き続きタスクトレイ常駐型アプリ作ってます。
(環境:Win2000 SP3 / MSVC6.0 / IE6.0SP1)

タスクトレイのアイコンを右クリックすると、ポップアップメニューを表示するような
処理を記述しているのですが、ここで負に落ちない点が2点程あります。

A. 表示されたポップアップメニューから[設定]を選ぶと、
dlg.DoModal()で設定用のウィンドウが開きます。(CDlgOptionと仮定)
で、この CDlgOption で[OK]あるいは[キャンセル]を押すとウィンドウを閉じるようにしています。
これらの動作で CDlgOption を閉じ、またすぐにタスクトレイのアイコンを
右クリックしようとしても、なぜかクリック一回分の反応が無視されてしまうようです。
(間をおいて2回クリックするとまたポップアップメニューが表示されます)
この現象に関してどなたか覚えのある方いらっしゃますでしょうか?
近いヒントだけでも構いませんので、お教え頂ければ幸いです。

B. 右クリックでポップアップメニューが表示されますが、このメニューは現在
いずれかのメニューアイテムをクリックしないと消えないようになっています。
一般的なタスクトレイアプリケーションのポップアップメニューのように、
例えばメニューとは別な場所をクリックした場合はメニューを消す、といった
挙動がありますが、これらの処理は自分で記述する必要があるのでしょうか?
よくある挙動なので、既存の関数か何かがあればと思っているのですが…。

毎度長くなってしまいすいませんが、ご教授頂ければと思います。
0903デフォルトでない名無しさんNGNG
B.は
ポップアップメニューを表示する前に、メニューの
オーナーウィンドウにフォーカスをセットする
0904861NGNG
>>903さん
ありがとうございます。

これはフォーカスをオーナーに設定する事によって、
それ以外の部分にフォーカスが当たった場合、それを無効化する
…という解釈で宜しいでしょうか?
0905デフォルトの名無しさんNGNG
>>904
オーナーからフォーカスが外れれば、メニューの標準仕様により勝手に消える。
0906デフォルトの名無しさんNGNG
>>903さん
表示する直前の部分に SetFocus(); で動作しました。
ありがとうございました。
0907890NGNG
> ノードの登録は当然View側でやるんだからOnInitialUpdate時点ですでにSerializeは完了してるので何の問題もない。
> Document-Viewを前提とすれば、データの管理はCDocumentがするべき。

なるほどわかりました。
とすると、Treeの階層構造そのものをDocumentが持たなくてはならないわけですよね。
これは結構大変の予感。TRee構造のほかにHTREEITEMとのMAPも必要になりそうですし。

2について
やはり簡単な方法はないみたいですね。
ご意見ありがとうございます。

しかしこれ、ファイルヘッダも付けずにファイルをつくってると
はまりますよね。旧VERでの読み込みエラーに対応できなくなる。
もっとも拡張子もアイコンも変えて別アプリのようにしてしまえばいいんですが。
0908デフォルトの名無しさんNGNG
Visual C++のAPIのリファレンスが載っている
ページはないでしょうか
0909デフォルトの名無しさんNGNG
>>908
MSDN onlineじゃダメなん?
0910デフォルトの名無しさんNGNG
>Visual C++のAPI
この時点でもうちょっと悩め、>>909よ。
0911909NGNG
>>910
すんまそんm(__)m
0912912NGNG
どういたしましてm(__)m
0913908NGNG
>>909
ありました
ありがとうございました
0914デフォルトの名無しさんNGNG
>>909 >>910
あったそうだぞ。
0915デフォルトの名無しさんNGNG
OSはWindows2000、Visual Studio 6.0でVC++つかってます。

タスクバー(通常デスクトップの下部にあるアレ)の高さを取得したいのですが、
具体的にどんな手順を踏めばいいんでしょうか?
ググってもそれらしきものが出て来なかったので…
0916デフォルトの名無しさんNGNG
>>915
GetSystemMetrics(SM_CXFULLSCREEN),GetSystemMetrics(SM_CYFULLSCREEN)と
SystemParametersInfo(SPI_GETWORKAREA,...)の差分を取る。
0917915NGNG
>>916
できました!ありがとうございました。
0918デフォルトの名無しさんNGNG
詰まっています。質問させてください。
多少長くなってしまいますがすいません。

MFC AppWizard(exe)のダイアログ形式でアプリのスケルトンを作成すると、
例えばプロジェクト名をGikoとすれば"CGikoApp"という
CWinAppのクラスができますよね?

このクラスに、今現在アプリケーションがどのような状態なのかを
IDで保持しておく変数を付け加えました。

  private:
    UINT  m_uStatus;

そして、この変数に対して値を読み書きする為の
メンバ関数も付け加えました。

  public:
    BOOL SetAppStatus(UINT uIDStatus);
    UINT GetAppStatus();

(つづく)
0919918NGNG
(つづき)

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です。
0920デフォルトの名無しさんNGNG
theAppを参照するファイル内に、
extern theApp;
てしたらどう?
0921920NGNG
extern CGikoApp theApp; だった。
cppがインクルードしているヘッダファイルでも可
0922デフォルトの名無しさんNGNG
>UINT GetAppStatus();

UINT GetAppStatus() const;
こうしたい(ボソ
0923デフォルトの名無しさんNGNG
((CGikoApp*)AfxGetApp())->GetAppStatus()
で解決。
0924デフォルトの名無しさんNGNG
>>923
もしそれでいけるのなら、なんでtheApp->GetAppStatus()
でいけないのだろう...
0925デフォルトの名無しさんNGNG
フレームワークがポインタを持ってるんじゃない?
0926デフォルトの名無しさんNGNG
>>924

それじゃどうやってもコンパイルエラーになるからだな。
0927918NGNG
>>920-926
皆様ありがとうございます。
 
 extern CGikoApp theApp;
 または
 ((CGikoApp*)AfxGetApp())->GetAppStatus();

のように修正したところ、コンパイルエラーがなくなりました。
Giko.h(CGikoAppが宣言されているヘッダファイル)をインクルードしているので、
externは必要ないのかなと思ったのですが…。

また、>>922さんのご指摘もありがとうございます。

 UINT GetAppStatus() const;

に修正致しました。
確かに、この方がより確実ですね。

回答が遅くなってしまいすいませんでした&ありがとうございました。
0928デフォルトの名無しさんNGNG
>CGikiAppはgikoapp.cppでグローバル変数として宣言されています。

externされてないグローバル変数がgikoapp.cppの外で参照できないのは当然かと
0929861NGNG
タスクトレイアプリ制作中の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)を
参照しているからいけないのか?等々考えてみましたが、いま一つ突破口になる
ものがつかめません。どなたかご教授頂ければ幸いです。
0930デフォルトの名無しさんNGNG
>>929
今後のためにも一度C++の本読もうよ
0931デフォルトの名無しさんNGNG
>>929
CTaskDlgChildからCTaskMainのインスタンスを参照できればいい。
((CTaskMain*)GetParent())->AddNotifyIcon(IDI_ICONGREEN);
で解決。
0932861NGNG
>>931さん
機能しました!ありがとうございます。
クラスに関する学習が不十分だったと思います。精進します。

>>930さん
もっともです。現在時間があまり無い中での制作なので、
C++の概要と基本的な構文ぐらいしか勉強できていない状況です。
時間を取り、書籍で勉強したいところではあるのですが…。

確かにMFCはC++の知識無しでは理解できないし、
それに加えてWin32API等に関する勉強も必要なのですが、
最近新規に移行したものでどれもいっぺんに覚えられないのがもどかしいところです。
C++だけ知っていてもWin32APIの各種命令、関数など知らなければいけませんし、
MFCをやろうとしてもC++の概要を知っていなければ意味不明ですし…。
難しいところです。

休日は家にこもってC++の学習に勤しみたいと思います。
0933デフォルトの名無しさんNGNG
CSocketを使用するプログラムを作っているのですが、
Connectで接続後、接続がきれるまで次の処理を待ちたいのですが
ソケットが閉じているか、閉じていないかを判別するには
どうしたらよいのでしょうか?

// コードにすると
while( /* 接続している */ )
  Sleep(100);

// 次の処理へ
0934933NGNG
質問のage忘れすいません。
0935デフォルトの名無しさんNGNG
>>933
そのスケルトンは冗談だよな?
0936933NGNG
>>935
本当なのですが…
OnReceive() で全て処理しているのですが
駄目ですか?
0937デフォルトの名無しさんNGNG
OnReceiveってCAsyncSocketの派生クラスでオーバーライドするメンバ関数でしょ?
CSocketとは関係ないような……???
0938デフォルトの名無しさんNGNG
CSocketでもオーバーライドするんでなかったかな、OnReceiveは。
0939933NGNG
>>937
本当ですね。
親クラスをCAsyncSocketにしても動きました。
OnConnect() でフラグを立てて、
OnClose() でフラグを消すことにします。
ありがとうございました。
0940デフォルトの名無しさんNGNG
>>939
おそらく君はまだわかってない。
0941デフォルトの名無しさんNGNG
ダイアログでピクチャボックスなどを貼り付けていると座標やらサイズが右下の方にでますよね
でもデバッグしててGetClientRectとかでとったサイズで、はなからこの大きさにしよう、
とおもってダイアログエディタで座標とサイズを見ながらぴったしほしいサイズにしても
実際に表示されると違った大きさになりませんか?
0942デフォルトの名無しさんNGNG
実際ダイアログエディタで出る座標は実際の座標とは違うから、何故か。
コントロールの配置にしても座標は1ずつ変わってるのに画面上では微妙に合わなかったりする。
複数ダイアログ作る場合等に参考にする程度のものって感じ。
0943デフォルトの名無しさんNGNG
「ダイアログ単位」って香具師が絡んでるんでしょ?
0944デフォルトの名無しさんNGNG
スタティックコントロールを表みたいに並べた時に微妙に行間、列間が
合わなかったりするからね(´Д`;)
なんなんだろ、この仕様。
0945デフォルトの名無しさんNGNG
フォントサイズが環境依存だからじゃないの?
0946デフォルトの名無しさんNGNG
ダイアログ単位については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ピクセルの精度でしかコントロールを配置できない、ということになる...?
0947デフォルトの名無しさんNGNG
 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という結果になってしまいました。

0948デフォルトの名無しさんNGNG
>>947
MapDialogRect()使ってね♥
0949デフォルトの名無しさんNGNG
CMainFrameで子ウィンドウを新規に作成するには
::AfxGetMainWnd()->SendMessage(WM_COMMAND, ID_FILE_NEW);
って教えてもらったんですけど、
メッセージボックスのエラーがでます。
新規作成の関数を消してMFCに依存すると上手く実行できるのですが。
0950デフォルトの名無しさんNGNG
MFCは糞ライブラリの代名詞
0951デフォルトの名無しさんNGNG
>>949
エラーメッセージを読んで見ましょう。
0952デフォルトの名無しさんNGNG
>>951
例外unknown software exception(0xc00000fd)がアプリケーションの0x5f466cbcで発生しました。
0953デフォルトの名無しさんNGNG
どなたかワトソン先生の詳しい使い方を書いたサイトを教えてください。
0954デフォルトの名無しさんNGNG
>>949
>新規作成の関数を消してMFCに依存すると上手く実行できるのですが。
あたりまえだと思う。
0955デフォルトの名無しさんNGNG
>>952
何がしたいのかさっぱりわからんが
DocTemplate辺りを読んで見れ。
0956デフォルトの名無しさんNGNG
>>955
そうなんです。DocTemplateを使いたいのですが、
OpenDocumentFileでパラメータを入れないと受け付けないし、
といった具合でうまくいかないのです。
0957デフォルトの名無しさんNGNG
>>956
もっとちゃんと嫁。
0958デフォルトの名無しさんNGNG
>>957
問題はCMainFrameで使いたいことにあるのです。
0959デフォルトの名無しさんNGNG
>>958
そんなことは全然問題じゃない
0960デフォルトの名無しさんNGNG
>>959
どうすりゃいいんすか?
0961デフォルトの名無しさんNGNG
VisualStudioの『プロジェクト』の『設定』の『リンク』に関するオプションは,
プログラム中に以下のように記すことが出来ますが,
#pragma comment(linker, 〜

『プロジェクト』の『設定』の『C/C++』に関するオプションは,
同じように,#pragma 〜 で記述することは出来ないでしょうか?

よろしくお願いします.
0962デフォルトの名無しさんNGNG
出来ないです。

スレ違いでもあるが。
0963デフォルトの名無しさんNGNG
>>962
残念です.
微妙にスレ違いかと思いましたが,多分,このスレの人の方が関係あるかと・・・

どうも有り難うございました.
0964デフォルトの名無しさんNGNG
↓に置いてあるようなメモリー最適化とか解放ツールって内部でどんなことやってるんでしょうか?
ttp://www.vector.co.jp/vpack/filearea/win95/hardware/mem/by_trend.html
0965デフォルトの名無しさんNGNG
>>964
そのページにある「超M」ってソフトにソース付いてるヨ(MFC)

原理はどれかのヘルプで説明してるでしょ
片っ端からダウンロードして読みな!
0966964NGNG
>>965
ありがとうございます。
ソース付のもあったんですね……。

大量にメモリを確保して、スワップを起こさせてるのか。

API スレのほうで聞くべき質問でした、すいません。
0967デフォルトの名無しさんNGNG
スレ違いだったら申し訳ないんですが、vc6でcファイルやcppファイルの関連付け
のパラメータ設定ってどうなってますか? 

他の開発ツールが勝手に関連づけ変えちゃったのでエクスプローラーから

"C:\Microsoft Visual Studio\Common\MSDev98\Bin\msdev.exe" "%1"

って感じに修正したら・・・
必ず新しいMSDEVを起動してソースを開くようになっちゃいました( ´Д⊂ヽ
※以前は最後にアクティブにしたmsdevウインドウで開いてくれたのですが

0968デフォルトの名無しさんNGNG
>>967

DDEなんで説明がメンドー。だし、やっぱりスレ違い。
0969967NGNG
>>968
DDEメッセージに[open("%1")]て入れたら行けマスタ。スレ汚しスマソ(´・ω・`)
0970デフォルトの名無しさんNGNG
CFormViewの中身の大きさを、作成時にプログラムからで設定するにはどうすたらいいんですか
0971デフォルトの名無しさんNGNG
GetDlgItem( )->SetWindowPos
0972デフォルトの名無しさんNGNG
違うな。SetScrollSizesだ。
0973デフォルトの名無しさんNGNG
MFCって理解しにくいよ。
そこでお願いなんだけど、良い参考書、お勧めの参考書を教えて欲しいんだ。
出来ればAppWizを使わないで解説してくれるようなのがいいな。
0974デフォルトの名無しさんNGNG
>>973
AppWiz使うとどういう不都合がありますか?
0975デフォルトの名無しさんNGNG
>>957
ホント、どうすればいいんですか?
0976デフォルトの名無しさんNGNG
ダイアログウィンドウをリサイズさせたいんですが、イベントはどのように受け取ればいいでしょうか?
ご存じのかたがおられましたら教えてください。
0977デフォルトの名無しさんNGNG
CListCtrl で Itemの無い領域(最大列(行)数より右(下)) も
OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult) で
描画させる方法はありますか?
0978デフォルトの名無しさんNGNG
>>973
とりあえず4000円未満の本は無視。
10000万円前後で探せばあるかも。
あと洋書、もしくは原著が外人。
0979デフォルトの名無しさんNGNG
>>975
try{
  ::AfxGetMainWnd()->SendMessage(WM_COMMAND, ID_FILE_NEW);
}
catch(...){
  MessageBox("MFC逝ってよし!");
}
0980デフォルトの名無しさんNGNG
>>978
どっかの国買えそう。
0981デフォルトの名無しさんNGNG
買えるかなあ?
0982デフォルトの名無しさんNGNG
>>976
イベントを取るって?
0983デフォルトの名無しさんNGNG
>977
OnEraseBkgnd じゃだめなの?
0984デフォルトの名無しさんNGNG
AВГД・EЁ
0985デフォルトの名無しさんNGNG
>>974
MFCとしての構造が理解しにくい

>>978
1万円か〜
と思ったら一億!!
ムリっす
0986デフォルトの名無しさんNGNG
買え!
0987デフォルトの名無しさんNGNG
次スレまだ〜?
0988デフォルトの名無しさんNGNG
>>985
ウィザードの吐くコードなんかたかが知れてるだろ。
あの程度把握できなきゃMFCの内部なんか到底無理。
0989デフォルトの名無しさんNGNG
「MFCによるWindowsプログラミング」を薦めたいところだが売ってないみたいだしな
0990デフォルトの名無しさんNGNG
■ 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


ごめん、スレ立てれなかった。誰か頼む〜
0991デフォルトの名無しさんNGNG
立てました
http://pc2.2ch.net/test/read.cgi/tech/1056584836/
0992デフォルトの名無しさんNGNG
>>991
乙
ありがとうー
レス数が950を超えています。1000を超えると書き込みができなくなります。