■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

★初心者にVisual C++を教えるスレ★ Part9
501 名前:499 :03/12/24 21:37
どこで聞けばいいのでしょうか?

502 名前:デフォルトの名無しさん :03/12/24 22:00
>>499
C言語スレ池。スレッドの検索の仕方がわからないなら
PC初心者板池。

503 名前:デフォルトの名無しさん :03/12/24 22:23
親切にありがとうございました。

504 名前:デフォルトの名無しさん :03/12/24 23:11
>>498
OnActivateじゃ駄目なのか?

505 名前:デフォルトの名無しさん :03/12/25 14:21
>>498
spy++を使って調べましょう

506 名前:デフォルトの名無しさん :03/12/25 15:05
windowsでマイクロ秒でSleepしたいんですが、
今はとりあえず

timeval tv;
tv.tv_sec=0;
tv.tv_usec=100;
select(0,NULL,NULL,NULL,&tv);

なんてしてます。
APIでさっくりできるのってないんでしょうか?

507 名前:デフォルトの名無しさん :03/12/25 18:56
PrintHookProcを指定して
印刷コモンダイアログを表示させると、
古いスタイルのダイアログになってしまいます。

新しいスタイルのダイアログにするには、
どうすれば良いでしょうか?

508 名前:デフォルトの名無しさん :03/12/25 18:59
>>506
そういう API はないと思う。
つか、その常套手段を知ってる君は初心者と言えるのか!?

509 名前:デフォルトの名無しさん :03/12/25 19:04
WaitableTimerは100ns単位で設定はできるが、
そのselectにしても、µsの精度は出ないはず。

510 名前:適当レス :03/12/25 19:16
>>507
よくわかんないけど PRINTDLG 構造体を渡しているのなら
そのメンバーの lStructSize の値が関係しているかも。
その場合、SDKがある程度新しくないと難しいと思う。

511 名前:デフォルトの名無しさん :03/12/25 19:36
そもそもμs単位でSleepさせる意味がわからん。

512 名前:デフォルトの名無しさん :03/12/26 02:32
>>511
分からんなら黙っとけ

513 名前:デフォルトの名無しさん :03/12/26 04:22
>>511
早寝早起きなんだYO!!

514 名前:デフォルトの名無しさん :03/12/26 07:29
EXEファイルのあるディレクトリを知るには
::GetModuleFileName()
してから、最後の\以降を切り取るしかないのでしょうか?

515 名前:デフォルトの名無しさん :03/12/26 11:01
>>514
そうじゃない?

516 名前:506 :03/12/26 12:34
>>508
WIN32APIスレのほうがよかったような気もする。スマソ

>>511
タイトなループをしているスレッドがあって、
ループ毎に1msのSleepすると処理速度が遅くて、
SleepさせないとCPU使用率がすごく高くなるから
もっと短い時間のSleepさせたいの。

>>509
WaitableTimer イイ!!

>そのselectにしても、sの精度は出ないはず。
別に100s丁度Sleepしてくれる関数じゃなくて
単純に1msよりもっと短い時間ブロッキングしてくれる
select関数でよかったから使ってみた。
もしかしてselectのタイムアウト時間の誤差ってすごく大きい?

517 名前:デフォルトの名無しさん :03/12/26 21:20
thread priorityで一番遅い奴を指定してはいかがか?
CPU使用率が100%近くてもGUIの入力を受け付けさえすれば問題
ないんでしょ?

518 名前:デフォルトの名無しさん :03/12/26 21:51
>>516
何回かに1回Sleepでもいいんじゃないの?
517氏の言うようにThreadPriority下げてもいいかと。

519 名前:デフォルトの名無しさん :03/12/26 22:03
>>514
APIのsplitpath が超便利

520 名前:デフォルトの名無しさん :03/12/26 23:06
PathRemoveFileSpecの方が楽かと

521 名前:デフォルトの名無しさん :03/12/27 09:44
519ですがAPIスレと勘違いしてました

あと、正しくは _splitpath です

522 名前:デフォルトの名無しさん :03/12/27 12:59
>>516
ホントにキッカリ1msのSleepになってるか?
精度はちゃんと高めた?

523 名前:デフォルトの名無しさん :03/12/27 16:39
WM_PAINTメッセージを受信時の描画処理について質問です。
描画自体はされているし、フォォントの種類も正しく変更されるのですが、
フォントのカラーだけが全く反映されません。
メモリデバイスコンテキストを使わず、直接デバイスコンテキストに描画
するようにすれば、ちゃんとカラーも反映してくれます。
何が原因なのでしょうか。


hdc = BeginPaint( hWnd, &paint );
hdcMem= CreateCompatibleDC( hdc );
hBmp = CreateCompatibleBitmap( hdcMem, w, h );
SelectObject( hdcMem, hdcBmp );
DeleteObject( hdcBmp );

SelectObject( hdcMem, hFont );
SetTextCharacterExtra( hdc, 0 );
SetTextColor( hdcMem, RGB( 0x00, 0xff, 0xff ) );
SetBkColor( hdcMem, RGB( 0x40, 0x40. 0x40 ) );

TextOut( mHdcMem, 0, 0, str, strlen( str ) );

BitBlt( hdc, 0, 0, w, h, hdcMem, 0, 0, SRCCOPY );
DeleteDC( hdcMem );

::EndPaint( hWnd, &paint );



524 名前:デフォルトの名無しさん :03/12/27 16:42
TextOutの mHdcMem は、hdcMemです。
抜粋なので修正し忘れてました。


525 名前:デフォルトの名無しさん :03/12/27 16:57
>hBmp = CreateCompatibleBitmap( hdcMem, w, h );
作成時、CompatibleDCにbindされているのは1*1のモノクロだから。
このhdcMemが指定されるので、ComaptibleBitmapがw*hのモノクロに
なってしまう。 hdcMemをhdcにすれば大丈夫のはず。

526 名前:デフォルトの名無しさん :03/12/27 18:36
ちゃんと反映されました。
メモリデバイスコンテキスト作成後は、常にメモリデバイスコンテキストを使用しなければならないと
盲目的に信じ込んでしまっていました。
ありがとうございます^^


527 名前:デフォルトの名無しさん :03/12/27 21:38
>>516
タイトなループでは、時々
Sleep(0) ;
をしろ、って先輩に言われたことがあります。

528 名前:デフォルトの名無しさん :03/12/28 10:53
c++6.0のリソースエディタで、ダイアログボックスを作成して、
ラジオボタンを配置したのですが、そのラジオボタンの、
ウィンドウハンドルは、どうやって取得するのでしょうか。

ご教授おながいします。

529 名前:デフォルトの名無しさん :03/12/28 12:03
>>528
VisualStudioの話だと仮定して。
#つーか、C++6.0ってなんだよ。

リソースIDから拾える。
或いはClassWizardで変数に割り当てて、それから拾ってもいい。
#休みで手元にVisualStudioがないのでそれ以上は知らん。

530 名前:デフォルトの名無しさん :03/12/28 12:30
CWnd* GetDlgItem(リソースID); だったかな
というかメンバ変数に登録しろ
(C++6.0ってVC++6.0のことだよな)

531 名前:528 :03/12/28 13:09
>>529-530

GetDlgItem(リソースID)で取得できました。


532 名前:デフォルトの名無しさん :03/12/28 17:37

VisualC++6.0 でMFCアプリケーションを作る方法を勉強中です。

コンボボックスのドロップダウンリストで選択した文字列を取得して
エディットボックスにすぐにそれを表示させてみたいのですが
うまくいきません。
ダイアログボックスにコンボボックスとエディットボックスだけを
配置して、テストをしております。

CBN_SELCHANGE を使った関数で↓のようにしてみたのですが、
選択を変更するたびに、エディットボックスに表示してくれては
いるのですが、毎度毎度、前回選択した(変更前)の文字列が表示されます。
どうしたら選択したものをすぐに調べることができるのか教えてください。


void CProp1::OnSelchangeCombo1()
{
CString ss;
CEdit* cmb1=(CEdit*)GetDlgItem(IDC_COMBO1);
CEdit* edt1=(CEdit*)GetDlgItem(IDC_EDIT1);
cmb1->GetWindowText(ss);
edt1->SetWindowText(ss);
}



533 名前:デフォルトの名無しさん :03/12/28 17:46
>>532
結構FAQかも。以下MSDNより

ON_CBN_SELCHANGE
このメッセージを処理するとき、コンボ ボックスのエディット コントロール内の
テキストを取得するには、GetLBText 関数または別の同種の関数を使います。
GetWindowText 関数は使えません。

534 名前:デフォルトの名無しさん :03/12/29 04:48
CEdit* cmb1=(CEdit*)GetDlgItem(IDC_COMBO1);

なぜにCEdit?
CComboBoxでは?

まずクラス・ウィザードでコントロールのメンバ変数を作成してやると良い

CComboBox::GetCurSel()

535 名前:デフォルトの名無しさん :03/12/29 09:02
532です。いろいろありがとうございました。
なんとかできました。GetCurSelで。がんばります。

void CProp1::OnSelchangeCombo1()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
CString ss;
m_combo_1.GetLBText(m_combo_1.GetCurSel(),ss);
m_edit_1.SetWindowText(ss);
}


536 名前:デフォルトの名無しさん :03/12/30 17:18
EnumWindowsでWHNDを取得することは出来ますが、CWndを取得
出来ません。EnumWindowsProcのヘルプは
BOOL CALLBACK EnumWindowsProc(
HWND hwnd,// 親ウィンドウのハンドル
LPARAM lParam// アプリケーションによって定義された値
);
となっていますが初心者なのでHWNDからCWndに変換したいんですが
どうすれば良いでしょうか?

537 名前:デフォルトの名無しさん :03/12/30 17:22
ヒント:CWndのFから始まるメンバ関数

538 名前:デフォルトの名無しさん :03/12/30 17:33
>>537
そういう意味のないじらしはマジでうざい。
CWnd::FromHandle←こんなので優越感に浸るっておまえはガキか。

539 名前:デフォルトの名無しさん :03/12/30 17:34
>>537 findwindowでしょうか?ClassNameでウインドウを
識別してるのですが、この方法だとClassNameが同じで
欲しくないウインドウが上に来てると取得できないので
困ってしまいました。

540 名前:536 :03/12/30 17:36
ありがとうございました。2ちゃんいろいろ行くけど
このスレで裏切られたことないな。

541 名前:デフォルトの名無しさん :03/12/30 17:57
>>536
たまに質問者を騙る奴がいるから
質問するときはトリップをつけたほうがいいと思われ。

542 名前:デフォルトの名無しさん :03/12/30 20:38
暇そうだもんな、来てる奴。


543 名前:デフォルトの名無しさん :03/12/31 03:30
標準入力から文字列を読み込んで処理するプログラムがあります。
VisualStudioを使ってデバッグをしたいのですが
どうやって標準入力に、用意したファイルを流したらいいのかわかりません。
(DOSやUNIX(シェル)のパイプ処理のような事をさせたいです)

ご教授お願いします。
VC++.NETを使用しています。

544 名前:デフォルトの名無しさん :03/12/31 03:48
>>543
Visual Studio .NET 2003 デバッガの使い方
http://sparrow.math.ryukoku.ac.jp/~hig/course/kisoseminar_2003/debugger.html

545 名前:543 :03/12/31 04:36
ありがd。

そこのキーワードからぐぐってうまくいきました。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vsdebug/html/_core_changing_project_settings_for_a_debug_build.asp

546 名前:デフォルトの名無しさん :03/12/31 12:10
すいません、質問です。
windowsプログラミングを勉強しようと思って、VisualC++ .net(単品)を
購入しようと思っているのですが、このパッケージにはMSDNLibraryのCDって
同梱されているのでしょうか?

定期的にCD送ってくるらしい、MSDNのライセンスはいらないのですが、
APIの仕様とか参照するのにMSDNLibraryはぜひとも欲しいと思っています。

いちおうMSのWEBサイトから見られるのも知っていますが、やはりHDDに
インストールしてすばやくアクセスできるのが望ましいと思っています。

VisualC.netを買った方、MSDNLibraryのCD付いていたかどうか教えて
いただけないでしょうか?


547 名前:デフォルトの名無しさん :03/12/31 15:42
>>546
普通に考えてついてないわけなかろう。

548 名前:532 :04/01/01 18:41
VisualC++6.0 の Viewクラスに OpenGLで描いた絵を
保存するためにbmpファイルを出力しています。
できることはできたんですが。

作成直後に bmp ファイルのプレビューをしようとしても
作成元のプログラムを終了するまで、表示できません。

たとえばWindowsXP に付属のPaint で見ようとしたら
output.bmp へのアクセス中に共有違反が発生しました。
とエラーメッセージが出てしまいます。

fclose(fp)==0 になることは確認してるので、
ちゃんとファイルは閉じれてるっぽいのですが、
これだけだとファイルを見たり編集したりできないものですか。


549 名前:532 :04/01/01 19:02
補足ですが、
_fcloseall( );
だと、bmpファイルのプレビューできました(;_;)
なんでだろう。


550 名前:PTVI :04/01/01 19:10
>>532
じゃ、どっかでオープンしたままなんだろ。
すべてのオープンからクローズのfpをしらべにょ。

551 名前:PTVI :04/01/01 19:15
番号間違えた。

552 名前:532 :04/01/01 19:15
二回開いてました。すみません。くだらないオチで。
以後気をつけます。ありがとうございました。。。。

553 名前:デフォルトの名無しさん :04/01/01 21:48
VC++ からEXCEL のセルに字を入れてセーブするのは難しいですね。
何処かよいHPありますか..

554 名前:553 :04/01/01 22:30
自己レス
ttp://www.attain-sys.com/vc/excel/vc_excel.html#1000
ここよさそう。

555 名前:デフォルトの名無しさん :04/01/01 22:57
レジストリクリーナを作りたいのですが、
参照されていないレジストリってどう判定するんでしょうか?

556 名前:デフォルトの名無しさん :04/01/01 23:27
4GB以上のファイルにアクセスするときはどうすればいいですか?
CStdioFileなどではファイルポインタがUINTだから4GBまでですよね

557 名前:デフォルトの名無しさん :04/01/02 00:08
>>556
CreateFile

558 名前:デフォルトの名無しさん :04/01/02 00:45
>>556
>ファイルポインタがUINTだから4GBまでですよね
SetFilePointerEx使え

559 名前:556 :04/01/02 01:07
>>557
>>558
CreateFile()の戻り値を使ってSetFilePointerEx()ですね。
どもです

560 名前:デフォルトの名無しさん :04/01/02 13:15
VC++6.0でスタティックライブラリ(LIB)の作成について質問です。
ほかのLIBをリンクさせてLIBを作成したいのですが
プロジェクトの設定のライブラリのタブにはインプットがありません。
このようなことはできるのでしょうか?
お願いします。


561 名前:デフォルトの名無しさん :04/01/02 15:02
リストビューコントロールで、カラムとアイテムとの間に
2ドット程の余白を入れる方法は無いでしょうか?
Winのフォルダと同じような見た目を作りたいのですが。

562 名前:デフォルトの名無しさん :04/01/02 23:31
海外掲示板用オフラインリーダーを作るスレ
http://pc2.2ch.net/test/read.cgi/tech/1072883528/

海外でよく使われていうる掲示板スクリプト
専用のオフラインリーダー作って下さい。

必要な条件はID、PASSを管理できること、
OpenJaneみたいな三面型の見た目。
簡単にローカライズできるように言語ファイルを採用

563 名前:デフォルトの名無しさん :04/01/03 18:29
厨質問ですいませんが、
visual c++ 6.0でコンパイルすると固まって、
ビルドの中止を選択しても何も起きないんですけど、
どうすればいいんでしょう

564 名前:デフォルトの名無しさん :04/01/03 20:46
VisualC++6.0を人から借りて、最近いじってみているんですが、
よくわからないのでネットで調べてみたら、
「MFC AppWizard(exe)」と「Win32 Application」について書かれているページが多かったんですが、
どっちを覚えたほうがいいんでしょうか?
また、それぞれの特徴は何なんでしょうか?

565 名前:デフォルトの名無しさん :04/01/03 20:55
どっちも覚える羽目になる。

Win32APIをC++でラップしたのがMFC。

566 名前:564 :04/01/03 21:18
>>565
なんとなくわかったような気がします。
ありがとうございました。

567 名前:デフォルトの名無しさん :04/01/03 22:15
VC6よりも2003の方がイイと思うが漏れだけかな?
C++の標準準拠度も上がってることだし、喪前らも
さっさと移行しれ。

と言ってみる。つか、いまさらコードの補完・エディタの機能が
貧弱なVC6とか使う気がしないのだが…。

568 名前:デフォルトの名無しさん :04/01/03 23:37
おまえの感想なんかどーでもいい。

569 名前:デフォルトの名無しさん :04/01/04 03:04
ちょっと質問なんですけど
SDIプログラムでCviewを使い、ビュー上に表示された文字の上にマウスが来ると
I型ポインタにしたり、文字をドラッグして選択できるようにするにはどうすればよいのでしょう?

もちろんCEditViewなんかは使わなくて
分かる人教えてください

570 名前:デフォルトの名無しさん :04/01/04 03:05
×文字をドラッグして
○ドラッグして文字を

だった...すんません

571 名前:デフォルトの名無しさん :04/01/04 15:05
>>569
俺も初心者なんでよくわかりませんが、
自分で文字の位置を計算して、反転表示させるのでは
ないですかね? ポインタ(Caret)の変更は、APIには
あるけどMFCにもあるんかな? ちょっとみつけられ
なかった。

572 名前:デフォルトの名無しさん :04/01/04 15:13

さっきテストでDoc/ViewサポートのSDIプロジェクトを
作成して、
a.新しいCEditView派生クラスを定義
b.ウインドウを分割。aを割り当て。
してみたのですが、作成されたCEditViewが
Docクラスと関連付けされていないので、

CSingleDocTemplate* pDocTemplate2;
pDocTemplate2 = new CSingleDocTemplate(
IDR_MAINFRAME2,
RUNTIME_CLASS(CSampleEditDoc),
RUNTIME_CLASS(CMainFrame), // メイン SDI フレーム ウィンドウ
RUNTIME_CLASS(CSampleEditView));
AddDocTemplate(pDocTemplate2);

こんな感じで関連付けしてみたのですが、予想に反して
起動時にDoc/Viewの組み合わせを選択する形になってしまった。

新しく派生させたViewクラスをドキュメントに関連付ける
ときってどうするのでしょうか? ドキュメントクラスは
基本的に1つのアプリに1つだけですか?



573 名前:デフォルトの名無しさん :04/01/04 15:57
>>572
CSplitterWnd使ってる?

574 名前:デフォルトの名無しさん :04/01/04 16:00
>>571
レスありがとうございます
もうちょっと調べて見ます

575 名前:デフォルトの名無しさん :04/01/04 16:31
>>573
使ってます。CreateStaticです。
CreateViewを実行した時点で関連付けはされているのでしょうか?

CView派生クラスと、CEditView派生クラスでテストしているのですが、
双方のクラスのGetDocument()↓はとりあえずNULLポインタではない
ポインタを指しているようです。(双方とも同じ数値だった)
CSampleDoc* pDoc = GetDocument();



576 名前:デフォルトの名無しさん :04/01/04 16:38
C++を新しく勉強したいのだけど、お奨めの本ない?

当方のLVは、C++無知、FlashASを少々と言った感じです。

577 名前:デフォルトの名無しさん :04/01/04 16:51
>>575
CSplitterWndにCEditView入れたこと無いけどたぶんOK

578 名前:デフォルトの名無しさん :04/01/04 17:27
>>577
ありがとうございます。
この方向で色々試してみます。

579 名前:デフォルトの名無しさん :04/01/04 17:28
>>576
http://pc2.2ch.net/test/read.cgi/tech/1072184936/164
推薦図書/必読書のためのスレッド PART 14

これはどうですか?

580 名前:デフォルトの名無しさん :04/01/04 18:19
>>568
C++の標準の準拠度が上がったというのは
結構大きいと思うがねぇ。

>>569
SetCursor();

581 名前:デフォルトの名無しさん :04/01/04 20:45
>>580
準拠度が上がったことなどMSのサイト行けばすぐわかるので
おまえの情報などいりません。
つーか誰か質問したのか。準拠度について。.NET2003について。
おまえは単に.NET2003が手に入ってテンション上がっただけちゃうんかと。
テンション上がって書き込んでみたかっただけちゃうんかと。


582 名前:デフォルトの名無しさん :04/01/04 21:49
>>581
>>564でVC6を始めるって書いてあるだろ?
「友人から借りた」のだから仕事でもなかろうし。

583 名前:デフォルトの名無しさん :04/01/04 23:18
>>567>>564宛のレスだとでも言いたいのかい?>>567で「喪前ら」と書いてるのに。
つか>>564は別にVC6にこだわってるわけじゃないだろ。借りたものがたまたま6だっただけであって。
「これからVC6を買う」と言ってるなら2003を薦めるのも納得できるが、
そんなのどこにも書いてないのにいきなり2003イイ!とか書いても「ハァ?今更何いってんの」って感じ。

584 名前:デフォルトの名無しさん :04/01/04 23:23

CSplitterWnd と Doc/Viewについて引き続き質問です。

(a) 新しいサンプルプロジェクトを作成。
  (AppWizardでCViewの派生クラス CSample3Viewを持つ)
(b) 新たに CView派生クラスの CSample3BView を作成。
(c) CSplitterWnd の CreateStatic で上下に2分割をし、(a)(b)を割り当て。

ここまでは良かったのです。ちゃんとコンパイルできました。
(a)に関しては初めから、GetDocument()がオーバーライド
されていて、即CDocumentクラスにアクセスできました。
問題は(b)の方で、ドキュメントクラスとの関連付けがされて
いないのか、単にGetDocument()をオーラーライドしても
正しくコンパイルできません。


585 名前:デフォルトの名無しさん :04/01/04 23:23
>>584 (続き)
MSDNのVIEWEXサンプルアプリを見るとCSplitterWndで
使用されるViewクラスはすべて

protected: // シリアライズ機能のみから作成します。
CTextView();
DECLARE_DYNCREATE(CTextView)

このようになっており、これはAppWizardではじめから
用意されるViewクラスと同じです。一方、独自に派生
させたViewクラスでは

protected:
CSample3BView(); // 動的生成に使用されるプロテクト コンストラクタ
DECLARE_DYNCREATE(CSample3BView)

となっています。GetDocument()のオーバーライドには
CArchive の m_pDocument が必要なのですが、その辺り
に影響しているのではと思っています。

どうしたら、独自派生のViewクラスからDocumentクラスに
アクセスできるのでしょうか?




586 名前:デフォルトの名無しさん :04/01/04 23:38
>>585
AppWizardで作ったクラスと同じようにする。

587 名前:デフォルトの名無しさん :04/01/04 23:40
>>583
>>567>>564宛のレスだとでも言いたいのかい?
多分>>560, 563-564の辺り。

>「ハァ?今更何いってんの」
お前は「今更」かも知れんが、VC6は初心者に薦められたもんじゃないだろ。

>>584
>正しくコンパイルできません。
エラー内容を書くべき。
恐らくMSDNのCCreateContextがヒントになると思われ。

588 名前:デフォルトの名無しさん :04/01/04 23:43
>>586
挿入の「クラスの新規作成」で新しいCView派生クラスを作っている
んですが、AppWizardと同じようにするには何かコツがあるんでしょうか?


589 名前:デフォルトの名無しさん :04/01/04 23:55
>>587
次のようにSample3Doc.h をインクルードすることで
コンパイルはできました。しかし、このGetDocument()
を使っても、どうもアクセスできません。

// CSample3BView ビュー

#include "Sample3Doc.h"

class CSample3BView : public CView
{
protected:
CSample3BView(); // 動的生成に使用されるプロテクト コンストラクタ
DECLARE_DYNCREATE(CSample3BView)

// アトリビュート
public:
CSample3Doc* GetDocument()
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSample3Doc)));
return (CSample3Doc*)m_pDocument;
}


590 名前:デフォルトの名無しさん :04/01/04 23:58
>>589 (続き)

失敗するのは次のOnDraw関数のpDoc->m_stringです。

void CSample3BView::OnDraw(CDC* pDC)
{
CDocument* pDoc = GetDocument();
// TODO: この位置に描画用のコードを追加してください

numOnDraw++;
int tx = 10;
int ty = 10;

pDC->TextOut(tx,ty, "CSample3BViewの画面");

char strbuf[100];
wsprintf(strbuf, "OnDraw()の実行回数: %d", numOnDraw);
ty += pDC->GetTextExtent("A").cy + 5;
pDC->TextOut(tx,ty,strbuf, lstrlen(strbuf));

ty += pDC->GetTextExtent("A").cy + 5;
pDC->TextOut(tx,ty,pDoc->m_string);

}

Sample3\Sample3BView.cpp(54) : error C2039: 'm_string' : 'CDocument' のメンバではありません。
vc98\mfc\include\afxwin.h(4450) : 'CDocument' の宣言を確認してください。

CCreateContext の方はこれから調べてみます。



591 名前:デフォルトの名無しさん :04/01/04 23:59
>>588
自分で書くんだって。

592 名前:デフォルトの名無しさん :04/01/04 23:59
>>587
いや、だから誰もVC6を薦めて無いじゃん。

593 名前:デフォルトの名無しさん :04/01/05 00:23
>>590
m_stringってメンバを追加したのは
CDocumentじゃないだろ。
つかデータメンバをpublicに置くのは関心できね。

>>592
お前は覚えたての吉野家のコピペを使いたかっただけちゃうんかと。

594 名前:デフォルトの名無しさん :04/01/05 00:42
>>590
一応解決したみたいです。

void CSample3BView::OnDraw(CDC* pDC)
{
CSample3Doc* pDoc = GetDocument();
}

この部分、CDocument* ではなく、 派生クラスのCSample3Doc*で
受け取らなければならなかったです。デフォルトでは
CDocument* になってました。

いやはや、お騒がせしました。
みなさんありがとうございました。



595 名前:デフォルトの名無しさん :04/01/05 00:43
>>593
まさにそのとおりです。
どうもでした。

596 名前:デフォルトの名無しさん :04/01/05 02:51
C++でクラス・構造体どうしを相互に参照させるにはどうすればいいのでしょうか?

597 名前:569 :04/01/05 03:06
またまた質問なんですけど
CCSrollViewを基本クラスとしたSDIプログラムで
現在ブラウザのようなプログラムを作成しているのですが、
ビュー上に表示された文字列を反転(選択時みたいに)するにはどうすればよいのでしょう?
(コピー処理を行いたい)
やっぱりCDCあたりを利用するのでしょうか?

598 名前:596 :04/01/05 03:14
class Test1
{
Test2 test2;
public:
Test1(Test2* test2)
{
this->test2=test2;
}
}

class Test2
{
Test1 test1;
public:
Test1(Test1* test1)
{
this->test1=test1;
}
}

・・・
error C2501: 'Test2' : 識別名を宣言するのに、型が指定されていません。
(その他エラーいっぱい)

という状況です

599 名前:596 :04/01/05 03:17
あ、解決しました

600 名前:デフォルトの名無しさん :04/01/05 06:28
>>599
自己解決したなら「解決しました」じゃなくて、どう間違えていたか書けよ。

601 名前:596 :04/01/05 08:24
>>600
失礼、クラスのプロトタイプ宣言をしたら直りました

class Test2;

class Test1
{
・・・



602 名前:デフォルトの名無しさん :04/01/05 11:14
自分のライブラリをnamespaceでかこってるとソースが全部インデントから始まってうっとうしい。
class hoge {
 public:
  hoge();
};

namespace hoge {
 class hoge {
  public:
   hoge();
 };
}
という感じにインデントが深くなって画面が狭いと見にくいです。
namespaceだけインデントしなくしたいんですがVC.NETでできますか?
あと、みなさん的にnamespaceだけインデントしないのどう思います?

603 名前:デフォルトの名無しさん :04/01/05 11:53
Visual C++6.0でテキストファイルを連結してひとつのテキストファイルに
まとめるという簡単なコンソールアプリのプログラムを書き、
cat A.txt B.txt C.txt
とコマンドから入力すれば連結されたテキストファイルが出力されました。
次にこれらのテキストファイルをエクスプローラからD&Dで
実行ファイルに渡してみたのですが、うまく引き渡せていないようです。
大量のテキストファイルを処理するときに不便なのでなんとかD&Dで
できるようにしたいのですがどのようにすれば実現可能でしょうか?
よろしくお願いいたします。

604 名前:デフォルトの名無しさん :04/01/05 12:29
>>603
D&Dで複数のファイル名を渡すということですか?
それは難しいんじゃないですか?

cat A.txt

だけなら、D&Dでできるでしょうが。

605 名前:デフォルトの名無しさん :04/01/05 12:39
>>604
そうです。複数のテキストファイルをD&Dで渡すということです。
難しいことなのですか○| ̄|_
コマンドラインからcat A.txt B.txt・・・・・・
これは使いにくそうなプログラムを作ってしまった><
レスありがとうございました。

606 名前:デフォルトの名無しさん :04/01/05 13:51
>>604
何処が?

607 名前:デフォルトの名無しさん :04/01/05 14:45
c++のソフトって初めから入ってますか?


608 名前:デフォルトの名無しさん :04/01/05 14:56
>>603
こーゆーことかい?
main( int argc, char *argv[ ], char *envp[ ] )
{
 for( int n = 0;n < argc;n++ )
 {
  printf( "%s\r\n", argv[ n ] );
 }
}

609 名前:デフォルトの名無しさん :04/01/05 15:19
>>607
OSとは別売りです。

610 名前:デフォルトの名無しさん :04/01/05 16:47
VCで関数を左のワークスペースウインドウでメンバ関数やメンバ変数をダブルクリック
するとその内容が右のウインドウに現れますよね。
ところが引数をenumの型の変数にするとどうしてもインプリメンテーションが見つかりませんという
表示が現れ、内容の表示ができません。enumの型はヘッダファイルで宣言しています。
また、CSampleProjectView::というような記述を加えてもできません。
どうすればいいのでしょうか。

611 名前:CEdit入力時のマウスカーソルについて :04/01/05 17:26
VC6.0SP5を使用しています。
ダイアログベースのアプリケーションを作成し、CEditを貼り付けました。
これを起動して、CEditに半角入力しますと、
マウスカーソルが消えてしまい、マウスを動かさないと表示されません。
入力中もマウスカーソルを消えないようにしたいのですが、
そもそもこれは仕様なのか、環境または設定の問題か、
どのようにすれば解決するか、
ご存知の方いましたら宜しくお願いします。


612 名前:603 :04/01/05 18:37
>>608
なるほどD&Dでもきちんと複数ファイル分の引数が渡されているようですね。
上にパスがくっついているのがいけないのかな・・・
とにかくできそうなのでもうちょっとがんばってみます。
ありがとうです。

613 名前:デフォルトの名無しさん :04/01/05 21:46
>>560です。

どなたか知恵をお貸し頂けないでしょうか?

●やりたいこと。
VC++ 6.0 のプロジェクトにて「スタティックリンクライブラリ」を選択。
A.lib を リンクして B.lib を作成したい。

●悩んでいるところ
B.lib のプロジェクトの設定で
A.lib をリンクさせるための手段が分からない。

重ね重ね、よろしくお願いします。


614 名前:デフォルトの名無しさん :04/01/05 22:05
>>611
ShowCursor()がヒントになると思われ。

>>613
A.libのソースを貰え。

615 名前:デフォルトの名無しさん :04/01/05 22:08
>>613です。
>>614
情報ありがとうございます。
リンクしようとしているライブラリは商用です。
ソースは公開されていません。
このようなリンク方式は一般的ではないのでしょうか?


616 名前:デフォルトの名無しさん :04/01/05 22:09
>>613
リンカじゃなくてライブラリアンで結合。昔やったけどどうやったか忘れた。
ヘルプにLIB.EXEかなんかの説明載ってない?

617 名前:DBGファイル :04/01/05 22:50
質問なのですが、VC++.NET2003でデバッグをしたときに画面の下(出力ウィンドウ)に
表示される「...必要なDBGファイルが見つからないか、開けません。」というのは、
エラーなのでしょうか?(OSはWindows2000を使っています。)

618 名前:デフォルトの名無しさん :04/01/05 22:55
>>613です。
情報ありがとうございます。
ヘルプを頼りに結果をだせるように頑張ります。
ところで階層的にリンクするというのは一般的ではないのでしょうか?

とあるライブラリのLIBをリンクして
フレームワーク(LIB)を作ろうとしています。
各プログラムはそのフレームワーク利用して開発を進めたい方針です。
LIBにする必要はない?
フレームワークのヘッダとCPPを共有ディレクトリへ置いて
各プログラムで各自コンパイルしてもらうほうがいいのでしょうか?
ただ、CPPUnitなどでテストしたい場合などは
テスト対象をLibにする記述があったような。
ちぐはぐしていてすみません。


619 名前:603 :04/01/05 23:24
下のように書いてみたのですがコンソールからの入力
ではきちんと動作するのにD&Dでファイルを渡すと動きません。
デバッグしてみるとD&Dの場合にもファイルパスなどは引数として
渡されているようなのですが・・・putcなども使ってみましたがだめでした。
お助けくださいpq
#include <stdio.h>
#include <stdlib.h>
void main(int argc,char *argv[]){
FILE *fp,*outfile;
int c;
outfile=freopen("out.txt","w",stdout);
if(argc==1){
printf("Warning:Please input files\n");
exit(1);
}
else{
while(--argc>0){
if((fp=fopen(*++argv,"r"))==NULL){
printf("Warning:File open error\n");
exit(1);
}
else{
while((c=getc(fp))!=EOF){
printf("%c",c);
}
fclose(fp);
}
}
}
}


620 名前:↑微妙にすれ違いナ気がするが。 :04/01/06 01:29
/* 略 */
void main(int argc,char *argv[]){
  for(int i=0;i<argc;i++) puts(argv[i]);
}

621 名前:デフォルトの名無しさん :04/01/06 01:37
ダイアログベースで簡単なプログラムを作りたいのですが
その中のいくつかの関数は int ,CString 型の変換ややり取りしかしません
それをWin32 Console Applicationでテストしながら作りたいのですが

CStringを使うときに必要なヘッダーを教えてください。

MSDNなどを見たり検索したりしたのですが自分の力では見つけられなかったのでお願いします

622 名前:デフォルトの名無しさん :04/01/06 01:38
↑付けたし
C++相談室 part26 から誘導されてきました。

623 名前:デフォルトの名無しさん :04/01/06 01:47
MSDNのCStringのページの下の方見れ。

624 名前:デフォルトの名無しさん :04/01/06 01:49
>>617
エラーじゃないよ。
文字通り、デバッグシンボルが見つからない時に表示されないだけ。
デバッグシンボルをインストールしておくとコールスタックを見る時に便利だから
入れておいた方がいいかもね。

625 名前:621 :04/01/06 02:02
ありました。それにしたがって

#include"cstringt.h"
#include"atlstr.h "

と書いてビルドしたら

fatal error C1083: インクルード ファイルがオープンできません。
'cstringt.h': No such file or directory
cl.exe の実行エラー

と出てしまいました

626 名前:デフォルトの名無しさん :04/01/06 02:16
Dialogを出して、Dialog上のボタン押したら
別ウインドウに反映するとかが解らない
グローバル使うべき?

627 名前:デフォルトの名無しさん :04/01/06 02:23
test

628 名前:デフォルトの名無しさん :04/01/06 02:57
>>625
ヘッダだけincludeすれば使えるというレベルじゃないので、素直にMFCを使う
コンソールアプリプロジェクトで作ればよいと思う。

//CStringに限っては、afx.hをinclude+プロジェクトの一般設定でMFCを使う
ように設定すれば使えるっぽいんだけど

>>626
グローバルは使わなくてもできる悪寒。
っていうか、具体的にどんなことがしたいの?

629 名前:デフォルトの名無しさん :04/01/06 03:13
ダイアログに親ウィンドウのハンドルを持たせて
SendMessageすれ。

630 名前:デフォルトの名無しさん :04/01/06 03:37
つーか>>625はATLだ


631 名前:603 :04/01/06 07:27
>>620
レスありがとうございました。
C言語のスレに書こうと思ったのですが、D&Dなので
Windows関係の話になるかもと思いこちらに書き込んでしまいました。

このまま質問続けていいかわかりませんが、一応書いておきます。
複数のテキストの内容を結合したファイルを出力したいのです。
>>619のプログラムで
outfile=freopen("out.txt","w",stdout);
の行をコメントアウトすると画面出力に切り替わるのですが
そちらのほうだとD&Dでもうまく結合されて出力されます。
コメントアウトをはずしてファイル出力にすると、なにも出力されなくなってしまいます。
OSはXPを使っていますがもしかしたらこれが悪いのかな・・・
何回も質問すみませんです。スレ違いだと思われましたら放置してくださいtt


632 名前:デフォルトの名無しさん :04/01/06 08:07
>>631
OSを疑う前に問題を切り分けろ。
D&Dの問題なのか、freopen()の問題なのか。
freopen()を使って巧く動くようになってからD&Dで悩めばよい。
#ふつーfreopen()なんて使わんがな。

633 名前:DBGファイル :04/01/06 08:56
>>624
ありがとうございました。エラーかと思っていたので安心しました。
早速、デバッグシンボルをインストールしようと思うのですが、これはVC++付属の
CD-ROMからインストールできるのでしょうか?(続けて質問して申し訳ございません。)


634 名前:603 :04/01/06 09:23
>>632
レスありがとうございます。
freopenは最初から使っていたわけではないのですが
fopenで開いてputcで出力しようとしていてできなかったので
あれこれ試していて使いました。

619のプログラムに
A.txt(ファイルの中身 aaa)
B.txt(ファイルの中身 bbb)
C.txt(ファイルの中身 ccc)
というファイルを
・コマンドプロンプトから
cat A.txt B.txt C.txt
と渡した場合→ out.txt(ファイルの中身 aaabbbccc)が出力されます。

・D&Dでファイルを渡した場合→out.txtが出力されないです。

おかしいなと思い先ほどもいったように
outfile=freopen("out.txt","w",stdout);
の行をコメントアウトし、画面出力に切り替えて
D&Dでファイルを渡すときちんと画面には
aaabbbccc
と出力されているのです。
これはfopenでファイルを開いてputcした時も同じようになっていたので
D&Dの問題なのではないかと思っています。
D&Dの時にはなにかファイル関係で気をつけなくてはいけないことが
あるのでしょうか。○| ̄|_

635 名前:デフォルトの名無しさん :04/01/06 10:14
>>634
カレントディレクトリにできてるはず。D&Dするとカレントは実行ファイルとは違うこともある。
あと、argc,argvのインクリメント・デクリメントは感心しない

636 名前:624 :04/01/06 11:53
>>633
デバッグシンボルは http://www.microsoft.com/whdc/ddk/debugging/symbolpkg.mspx
から入手できるけど、インターネットに常時接続している環境なら、それよりも
シンボルサーバーを使った方がいいかもね。自分もそうしてる。
http://www.microsoft.com/japan/msdn/library/ja/vsdebug/html/vxtskusingasymbolserver.asp

637 名前:DBGファイル :04/01/06 12:36
情報ありがとうございます。
接続環境がADSLなのでシンボルサーバーを使ってみます。

638 名前:621 :04/01/06 12:48
>>628
どうも それでやってみます

639 名前:603 :04/01/06 17:05
>>635
C:\Documents and Settings\ユーザー名
のところにファイルができておりました。
どうもありがとうございました。
実行ファイルがあるフォルダに吐かせるように改良してみます。

>>argc,argvのインクリメント・デクリメント
C言語の某バイブル本に載っていたので真似してしまいました。
指摘ありがとうございます。

640 名前:デフォルトの名無しさん :04/01/07 01:43
実行エラーでaccess viorationとなってしまいます。
メモリ関連のエラーだというのはわかったのですが
どういう対処をすればいいのでしょうか。
デバッグを毎回するたびに1行1行読み込ませるとうまくいく
場合もあります。

641 名前:デフォルトの名無しさん :04/01/07 01:45
>>640
デバッグモードで実行すれば
assertが出るんでない?

642 名前:デフォルトの名無しさん :04/01/07 02:03
ちみたち、VC++で何つくってるのか教えなさい

643 名前:デフォルトの名無しさん :04/01/07 02:04
assertが出てきても何をしていいのかよくわからなくて。
すいません。教えてくれるとうれしいです。

644 名前:デフォルトの名無しさん :04/01/07 03:04
>>643
関数の呼び出し履歴を見ればどこでassertが起きてるかわかるだろ?

645 名前:デフォルトの名無しさん :04/01/07 04:30
Visual C++ で、.cファイルをC++としてコンパイルしたいのですが、
どこで設定すればいいのでしょうか?

646 名前:デフォルトの名無しさん :04/01/07 09:11
>>635
> argc,argvのインクリメント・デクリメントは感心しない
なんで?

647 名前:ひみつだよ :04/01/07 12:33
Pentium Proへの最適化のオプションて
どれぐらい意味があるの?
おしえて、お兄ちゃん。

648 名前:デフォルトの名無しさん :04/01/07 13:26
>>644
呼び出し履歴はどうやってみるのでしょうか。
何度もすいません。

649 名前:デフォルトの名無しさん :04/01/07 13:44
ボタンを作成し、そのボタンに対応した関数も
作ったとき、
そのボタンを全て消したいときはどうすればいいのでしょうか。

650 名前:デフォルトの名無しさん :04/01/07 13:58
>>648
コールスタック

651 名前:デフォルトの名無しさん :04/01/07 16:24
データをファイルに書き込むとき、作った構造体そのものを
書き込むことはできるのでしょうか。
例えば、
struct kouzou{
int a;
int b;
};
という構造体を作ったとき、この構造体をそのままファイルに書き込むことは
できるのでしょうか。なるべくこの構造体のままで書き込みたいです。
また、enum型はファイルに書き込むことはできるのでしょうか。

652 名前:デフォルトの名無しさん :04/01/07 16:50
fwrite
これ以上はC言語のスレで質問したほうがよい

653 名前:651 :04/01/07 17:14
>>652
ありがとうございました。調べてわからなかったら別スレで
質問させていただきます。

654 名前:デフォルトの名無しさん :04/01/07 20:34
VC++6.0
デバッグでF10で進めていった場合に
実行ファイルの最後で(まれに途中でも)ソースファイルの検索ダイアログってのが出ます。
出さないようにできますか?

655 名前:デフォルトの名無しさん :04/01/07 20:44
ここに書くのが適切ではないかもしれませんが、

INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )
という風に第2引数以下を省略しても動作に問題はないでしょうか?

656 名前:デフォルトの名無しさん :04/01/07 20:48
ラジオボタンの表示と、初期化時に先頭のラジオボタンに
チェック入れる所まではできたが、マウスでクリックしても
ウンともスンともいわなくて困った。

流れ的にはボタンクリックのイベントが発生したらそこへ飛ぶ、というタイプにしてるんだけど
この部分にはミスはないと思うのでなにか他の部分がダメなのかも。

BEGIN_MESSAGE_MAP(SelectTexturePtn, CDialog)
ON_BN_CLICKED( IDC_TEXTURE_PTN00,OnBnClickedBtnradio0 )
ON_BN_CLICKED( IDC_TEXTURE_PTN01,OnBnClickedBtnradio1 )
ON_BN_CLICKED( IDC_TEXTURE_PTN02,OnBnClickedBtnradio2 )
END_MESSAGE_MAP()

BOOL SelectTexturePtn::OnInitDialog()
{
CheckRadioButton( IDC_TEXTURE_PTN00, IDC_TEXTURE_PTN03, IDC_TEXTURE_PTN00 );
return TRUE;
}

void SelectTexturePtn::OnBnClickedBtnradio0()
{
CheckRadioButton( IDC_TEXTURE_PTN00, IDC_TEXTURE_PTN03, IDC_TEXTURE_PTN00 );
}
void SelectTexturePtn::OnBnClickedBtnradio1()
{
CheckRadioButton( IDC_TEXTURE_PTN00, IDC_TEXTURE_PTN03, IDC_TEXTURE_PTN01 );
}
void SelectTexturePtn::OnBnClickedBtnradio2()
{
CheckRadioButton( IDC_TEXTURE_PTN00, IDC_TEXTURE_PTN03, IDC_TEXTURE_PTN02 );
}


657 名前:デフォルトの名無しさん :04/01/07 21:08
>>655
ないでしょ。

>>656
それで?

658 名前:デフォルトの名無しさん :04/01/08 01:30
MFCを使わずにリッチテキストにビットマップ等のピクチャー類を
貼り付ける方法はありますか?VC++6を使っています。



659 名前:デフォルトの名無しさん :04/01/08 08:30
>>658
bitbltかな

660 名前:デフォルトの名無しさん :04/01/08 11:02
>>646
グローバル変数を軽軽しく扱うと分かりづらいバグの原因になる。
変なクセは抜いておいた方が後後のため。
第一、argc,argvの意味合いを考えれば、変更するのはおかしい。
自動変数にコピーするくらいの考え方は身に付けておいて欲しい。

661 名前:デフォルトの名無しさん :04/01/08 12:05
boost::filesystemのサンプルプログラムをVC++.NETで試しています。
プロジェクトにboost\libs\filesystem\src\*.cppを含めてコンパイルするとうまくいくのですが
含めないと「error LNK2019: 未解決の外部シンボル」が出てしまいます。
ライブラリへのパスが通ってないのが原因かと思い、設定してみましたが変化なしです。
プロジェクト毎にいちいちboostのソースファイルを含めるなんてめんどうなことをしないのが
正しいと思うのですが、何の設定が足りないのでしょうか?
基礎がわかってないと思うので猿でもわかるような解説きぼん。

662 名前:デフォルトの名無しさん :04/01/08 12:07
標準関数の定義を見たいのですが、VC++のフォルダの中にはありませんでした
どこにあるのでしょうか?

663 名前:デフォルトの名無しさん :04/01/08 13:25
>>662
目的の関数を選択反転 → 右クリック「定義へ移動」 @VC++ 2003

664 名前:デフォルトの名無しさん :04/01/08 14:38
>>663
おおお!
ありがとうございます

665 名前:デフォルトの名無しさん :04/01/08 17:26
リッチエディットを縦書き表示にしたいのですが、
SendMessage(hWnd, EM_SETOPTIONS, (WPARAM)ECOOP_OR, (LPARAM)ECO_VERTICAL);
としても何も変化がありません。
どうすれば良いでしょうか?

666 名前:デフォルトの名無しさん :04/01/08 17:48
Cでキー入力をもらうのってどうやったらいいでしょうか?
scanfみたいにエンター押すまでじゃなくて、
何かキーが押された瞬間に判定をしたいので

667 名前:デフォルトの名無しさん :04/01/08 17:49
>>666
getch()

668 名前:デフォルトの名無しさん :04/01/08 17:52
>>667
ありがとうございます。
変数名=getch();
みたいな感じでしょうか。
あと関数群はどれですか?

669 名前:デフォルトの名無しさん :04/01/08 17:57
>>668
conio.h

>変数名=getch();
これでOKです。

670 名前:デフォルトの名無しさん :04/01/08 18:03
>>669
どうもありがとうございました。

671 名前:デフォルトの名無しさん :04/01/08 18:12
#pragma warning(disable : 4786)
みたいなことをプロジェクトの設定か何かでできますか?
つまり、プログラムソース上でなくてプロジェクト単位で指定したいのです。
よろしくお願いします。


672 名前:デフォルトの名無しさん :04/01/08 18:12
>>665
俺もMFCで指定してみたが変化ないなぁ。

http://www.kumei.ne.jp/c_lang/sdk2/sdk_138.htm
↑猫のソースみても特別なことはやってないようなんだが。

673 名前:デフォルトの名無しさん :04/01/08 19:28
>>671
プロジェクトで必ずインクルードするファイルに指定しとけば?
VC.NETなら指定するところがあるけどな。


674 名前:デフォルトの名無しさん :04/01/08 19:37
Windowsムービーメーカーでは動画キャプチャできないカメラから、
イメージをキャプチャしてそれをリアルタイムに動画で書き出すことは可能ですか?

うまく説明できないので、
「カメラから、現在映っている画像を取得する。
そのデータを、動画データに変換」
「」を繰り返して、最終的に何分かの動画になる。
できれば、フレーム間隔は一定。

このようなことはVCでできますか?

675 名前:671 :04/01/08 20:13
>>673
レスありがとうごさいます。
必ずというのは自動的にインクルードする(cppにincludeを書かなくても)という意味でしょうか?
VC6を使っているのですが[C/C++]-[プリコンパイル済みヘッダー]の項目には
自動的に.hをインクルードするような項目はありませんでした。
include文を強制させるのはありましたが。

UNIX系で開発したプログラムをVCでコンパイルしているのですが、警告が多いので
どうでもいい警告は消そうと思ったのです。
.cppファイルが多いのでMFCでのstdafx.hのようにする方法はとりあえずあきらめて、
ほかに楽な方法があればと思い投稿しました。

676 名前:デフォルトの名無しさん :04/01/08 20:29
CFILE型の変数を引数とした関数を作ることはできないのでしょうか。

CFILE cfile;
Function{
Function2(&cfile);
}

Function2(CFILE *cfile){
*cfile.Write(......);
}
としてもコンパイルがうまくいきません。


677 名前:デフォルトの名無しさん :04/01/08 20:45
>>676

Function {

};

の最後には ; がいると思うが、そこは大丈夫?

どういうコンパイラエラーがでるの?

678 名前:デフォルトの名無しさん :04/01/08 21:04
>>675
それじゃしゃーないな。

perlかなんかのスクリプト組んでですべてのcppファイルにプラグマ埋め込めば?


679 名前:デフォルトの名無しさん :04/01/08 21:08
>>677
おまえこそ大丈夫か

680 名前:デフォルトの名無しさん :04/01/08 21:21
DirectXのプログラムをしてみようとはじめたばっかりなんですが、

error C2660: 'ID3DXSprite::Begin' : 関数に 0 個の引数を指定できません。
error C2660: 'ID3DXSprite::Draw' : 関数に 7 個の引数を指定できません。

というエラーで行き詰ってます。

DirectXの質問というよりなんかもっと根本的な気がしてこちらに質問いたしました。

SDKのヘルプでは引数の数はあっているんですが、なんかの関数と混同して
このエラーが出るというとこまでこぎつけました。
が、どう対処していいのかわかりません・・。
どなたか、お教え願いませんでしょうか。

環境 VS.NET (WinXP Pro)
インクルード
#include <windows.h>
#include <tchar.h>
#include <d3dx9.h>
#include <dxerr9.h>
宣言
LPD3DXSPRITE g_pD3DXSprite = NULL;
使用部
g_pD3DXSprite->Begin();
g_pD3DXSprite->Draw(g_pD3DTexture, NULL, NULL, NULL, 0.0f, NULL,
   D3DCOLOR_ARGB(alpha>255?511-alpha:alpha,255,255,255));

681 名前:デフォルトの名無しさん :04/01/08 21:49
>>679
Function は関数か?
まあ、参考にならぬなら無視してくれ。

682 名前:デフォルトの名無しさん :04/01/08 22:59
>>676
>*cfile.Write(......);
cfile->Write(......);
だろ

>Function は関数か?
ワラタ

683 名前:658 :04/01/08 23:32
>>659
レスありがとうございます

684 名前:デフォルトの名無しさん :04/01/09 00:07
std::vectorを使いたいのですが、使用後の領域の削除(後始末)は自動的に行われるのですか?
何か自分でやらなければいけないのでしょうか?

685 名前:デフォルトの名無しさん :04/01/09 00:17
>>676
宣言で参照引数なのに、実装でポインタにしてるのはなぜ?
(*cfile).Write(......); またはcfile->Write(......);

686 名前:デフォルトの名無しさん :04/01/09 18:55
作成したツールバーのボタンを無効にしたり
有効にしたりする操作をインタフェース上で
やるにはどうすればいいのでしょうか?

687 名前:デフォルトの名無しさん :04/01/09 19:24
>>686
MFCで開発してるの?

688 名前:デフォルトの名無しさん :04/01/09 19:45
>>687
はい。そうです。できないんでしょうか。

689 名前:デフォルトの名無しさん :04/01/09 21:12
>>688から何か若さのようなものを感じるヤシの数→(1)

690 名前:デフォルトの名無しさん :04/01/09 22:32
>>688
ON_UPDATE_COMMAND_UI とかのことかな
クラスウィザードでイベントハンドラ追加して

void CxxxView::OnUpdateXXX(CCmdUI *pCmdUI){
 pCmdUI->Enable(無効とか有効とかの条件) ;
}
こんな感じになるんじゃねーの

691 名前:デフォルトの名無しさん :04/01/09 23:53
「インターフェイス上でやるには」という表現がどうもしっくりこない。

692 名前:688 :04/01/10 01:13
ありがとうございます。
インターフェース上というのは、例えば、あるボタンを押したら、
ツールボタンの1つが使えるようになるというような感じです。



693 名前:デフォルトの名無しさん :04/01/10 02:07
時報つき時計を作っています。
時報といってもピッ、ピッ、ピッ、ポーン!という2音のものです。
最初ビープでやっていたんですが機種によってはヘッドホン端子に音が出ません。
そこでWaveform でやってみたんですが、音を鳴らすたびにデバイスを切断する?
のかへんな雑音が入り、大変聞き苦しいです。
こういう場合どんな感じでやるのがよいのでしょうか?


694 名前:デフォルトの名無しさん :04/01/10 02:55
>>693
・ピ・ピ・ポンの・の部分で雑音がなるの?
BEEP音はサウンドカード使わずに音を鳴らすからね。


695 名前:デフォルトの名無しさん :04/01/10 03:37
char *lpszBuf = "ここを印刷します。";
ってどういう意味なんですか?
印刷するプログラムをつくらなきゃいけなくなって、
自分の買った本に書いてあったんですけど、
エディットボックスの中を印刷したくて、
char *lpszBuf = m_a;
にするとエラーが出てしまいます、
エラーの内容は:Class CStringからcharに変換することはできません。
とでます。
本の名前は猫でも分かるwindowsプログラミングです。

よろしくお願いします。

696 名前:デフォルトの名無しさん :04/01/10 04:23
>>695
C言語の基礎からやり直せ。

697 名前:デフォルトの名無しさん :04/01/10 05:34
>>693
とりあえずBOSEのスピーカーを使ってみれば?

698 名前:デフォルトの名無しさん :04/01/10 05:42
#include<iostream>

#define HOGE( method ) gObj->method();

class CBase
{
public:
void Init(){}
};

intmain()
{
CBase gObj;
HOGE( Init );

return 0;
}

さっきから上のソースの部分が時々コンパイルが通ったり
通らなかったりするのですが、
これは何かマズイソースなんでしょうか?
win VC++6

699 名前:デフォルトの名無しさん :04/01/10 05:51
即効自己解決しました。

前:#define HOGE( method ) gObj->method();
後:#define HOGE( method ) gObj.method();

アロー演算子でやっていました。どうもすいませんでした。
しかし何回かコンパイルが通った気が・・・
むーん

700 名前:693 :04/01/10 06:11
>>694
そうなんです。
やっぱり使い方が悪いのかな。


701 名前:デフォルトの名無しさん :04/01/10 14:29
>>700
変な値やWin95で使っているとか?

あとは、接触が悪いとか・・・・・

702 名前:デフォルトの名無しさん :04/01/11 02:42
おながいします。

exeとそれが使っているdllの2つのプロジェクトが入ったワークスペース
があるときにexeをアクティブプロジェクトにしてデバッグ実行
したのですが、dll中のコードをステップ実行できません。
どうすればいいのでしょうか?

703 名前:デフォルトの名無しさん :04/01/11 02:52
>>702
dllに関してもpdbファイルが無いとだめだったはず。

704 名前:702 :04/01/11 02:55
>>703
夜分どうもありがとう(TT)
やってみますぅ。。。

705 名前:デフォルトの名無しさん :04/01/11 15:57
WINxpにVB6.0をインストールしようとすると
問題が発生したため、vs60wiz.exe を終了します。
ご不便をおかけして申し訳ありません。と出てインストールできません。
どなたか解決法がわかる人いませんでしょうか?5.0を前にインストールすることは
できたのですが6.0だけはなぜかできません。わかる方いましたらよろしくお願いします。
このエラー報告には以下のファイルが含まれていますとでてました。
C\LOCALS~1\Temp\WER9.tmp.dir00\appcompat.txt

706 名前:デフォルトの名無しさん :04/01/11 17:03
>>705
FAQだよ。MSDNで調べなさい。

707 名前:デフォルトの名無しさん :04/01/11 21:45
>>705
割れたからだろ。

708 名前:デフォルトの名無しさん :04/01/11 22:09
FAQで今調べていますが今のところわからないです。
>>707さん割れたからというのは?

709 名前:ヘタレ :04/01/12 02:08
ここで聞くのが妥当だと思って質問させていただきます。
環境はVisual C++ 6.0 SP5, WindowsXP SP1です。

ビットマップを表示するアプリを作っています。
ウィンドウ上のクリックした場所にビットマップを表示するのですが
CDC::BitBltのラスタオペレーションでSRCPAINTを
選択するとビットマップ表示されません。
他のラスタオペレーションでは表示されます。
原因として考えられることだけでも教えてくれるとありがたいです。


710 名前:デフォルトの名無しさん :04/01/12 02:29
VisualC++6.0からNETのヘルプが起動するようにする方法はありませんか?

711 名前:710 :04/01/12 02:30
NET→.NET のことね。

712 名前:デフォルトの名無しさん :04/01/12 03:43
>>709
SRCPAINTは転送元と転送先のORだろ。
転送先がオール1(白)だと何も変化しない。

713 名前:デフォルトの名無しさん :04/01/12 04:14
一時期.NETインストールして
ヘルプドキュメントだけ使ってたなぁ。
>>709
普通SRCCOPYを使うな。うん。

714 名前:ヘタレ :04/01/12 05:14
>>712, 713
転送先とORを取ってるんですね。
そりゃ、表示されないはずです。
勉強不足ですいませんでした。
どうも有り難う御座いました。



715 名前:デフォルトの名無しさん :04/01/12 21:53
例外でポインタを投げたときのアドレス解放の仕方を教えてください
「//*1」の行をコメントアウトしないと、
実行したときエラーになってしまうのですが、なぜだかわかりません
afx.hをinclude+プロジェクトの一般設定で
MFCを使うように設定しCStringを使えるようにしました
#include<iostream>
#include"afx.h"
using namespace std;

void myfunc(int flag){
if(flag == 0){
char *ErrorMessage = new char[128];
ErrorMessage = "errorです";
throw ErrorMessage;
}else if(flag == 1 ){
CString ErrorMessage = "errorです";
throw ErrorMessage;
}else if(flag == 2 ){
CString* ErrorMessage = new CString();
*ErrorMessage = "errorです";
throw ErrorMessage;
}
}

716 名前:デフォルトの名無しさん :04/01/12 21:54

int main(){
for(int i=0; i<3; i++){
try{
myfunc(i);
}catch(char * chErrorMessage){
cout<< "char*型でエラーメッセージが送られてきた" <<endl;
//*1delete [] chErrorMessage;
}catch(CString strErrorMessage){
cout << "CStringでエラーメッセージが送られてきた" << endl;
}catch(CString* strErrorMessage){
cout << "CStringのポインタでエラーメッセージが送られてきた" << endl;
delete strErrorMessage;
}
}


717 名前:デフォルトの名無しさん :04/01/12 22:15
>>715
char *ErrorMessage = new char[128];
ErrorMessage = "errorです";

この2行目が問題。2行目は
"errorです"という定数文字列へのポインタ
を代入する意味になってます。つまり
1行目と2行目でErrorMessageの指し示す
アドレスの値が変わっている。
catch側で定数文字列を解放しようとしたた
めに実行時のエラーになってると思います。

new char[128]で確保したメモリに
"errorです"という文字列をコピーするには
strcpy(ErrorMessage, "errorです");
とすることが必要です。

718 名前:715 :04/01/12 22:31
>>717
うまくいきました

>>"errorです"という定数文字列へのポインタ
>>を代入する意味になってます。

ということはstrcpyを用いた解決方法以外に

char *ErrorMessage = new char[128];
をなくし
char *ErrorMessage = "errorです";
とすると
catchの中で開放がいらないということですか?

719 名前:デフォルトの名無しさん :04/01/12 22:49
Integer division by zero を catch(exception_type exception_name)
で拾いたい場合、
exception_type は何を指定すればよいのでしょうか?

catch(...) では拾えますが、
それだと Integer division by zero だけとは限らないので・・・


720 名前:デフォルトの名無しさん :04/01/12 22:59
>>718
そういうことですね。

"文字列";
は、関数の中でも外でも、どこにあろうと
メモリ確保は静的に、つまりプログラムの
起動から終了まで、メモリのどこかに
固定的に確保されていて、

char *ptr;
char ch;
int i;
などは、グローバル領域に宣言&確保される
場合は上記文字列と同様だと思いますが、
関数内で宣言&確保された場合は関数が
呼び出されるたびにメモリが確保されて
関数のスコープ { } を抜け出た時点で
自動的に確保したメモリを解放します。

これで正しかったと思う。

721 名前:デフォルトの名無しさん :04/01/12 23:01
static_castして==で判定してそれ以外ならまた投げるとか?

722 名前:715 718 :04/01/12 23:03
>>720
わかりました
どうもありがとうございます

723 名前:デフォルトの名無しさん :04/01/12 23:52
6.0で以前作ったクラスを再利用する時ってその親クラスの
ヘッダファイルも全てプロジェクトに入れる以外に、
エディタのインテリセンスを利用する事はできんの?
Win32やMFCの関数なんかだと、何もしなくても
インテリセンス使えるのに・・・(´・ω・`)

ツール→オプション→ディレクトリの部分をいじって
#include <myclass.h>みたいのはできるようになったけど・・・

724 名前:デフォルトの名無しさん :04/01/12 23:54
Windowsフォームを追加して、フォームの表示をしたいのですが
C#だと

Form2 f = new Form2();
f.ShowDialog(this);
こんな感じですが
VC++.NETだとどうなるんでしょうか?


725 名前:デフォルトの名無しさん :04/01/13 00:37
[][][][][][][][][][][][][][][][][][][][
[][][][][]] [][][][][][][][][][][] []][][
][][][][][][][][][][][[][][][][][][][][][][][][][]

[]はいくつあるでしょうか?


726 名前:デフォルトの名無しさん :04/01/13 00:38
>>725
48個

727 名前:デフォルトの名無しさん :04/01/13 01:24
std::vector<char[256]> vec;
〜中略〜
for (i = 0; i<=10; i++ ){
fscanf(fp, "%s", itizi);
vec.push_back(itizi);
}
なのですがエラーがでてしまいます。素直にstring等を使ったほうがいいのでしょうか?

728 名前:デフォルトの名無しさん :04/01/13 01:30
>>727
どういうエラーが出るのか
書いてくれないと。

729 名前:デフォルトの名無しさん :04/01/13 01:55
>>728
c:\program files\microsoft visual studio\vc98\include\xutility(39) : error C2440: '=' : 'const char [256]' から 'char [256]' に変換することはできません。(新しい動作 ; ヘルプを参照)
この変換が可能なコンテキストはありません。
c:\program files\microsoft visual studio\vc98\include\vector(170) : コンパイルされたクラスのテンプレートのインスタンス化 'void __cdecl std::fill(char (*)[256],char (*)[256],const char (&)[256])' の参照を確認してください
c:\program files\microsoft visual studio\vc98\include\xutility(25) : error C2106: '=' : 左のオペランドが、左辺値になっていません。
c:\program files\microsoft visual studio\vc98\include\vector(174) : コンパイルされたクラスのテンプレートのインスタンス化 'char (*__cdecl std::copy_backward(char (*)[256],char (*)[256],char (*)[256]))[256]' の参照を確認してください
c:\program files\microsoft visual studio\vc98\include\xmemory(34) : error C2538: new : 配列に対し初期化子が与えられています。
c:\program files\microsoft visual studio\vc98\include\xmemory(66) : コンパイルされたクラスのテンプレートのインスタンス化 'void __cdecl std::_Construct(char (*)[256],const char (&)[256])' の参照を確認してください
こんな感じです・・・

730 名前:デフォルトの名無しさん :04/01/13 04:21
>>724
無理

731 名前:デフォルトの名無しさん :04/01/13 10:01
>>727
該当ソースを全部見ないとなんとも言えないが、const char[256]とchar[256]は
castしないと代入できないからどちらかに統一してみてはどうか。

尤も、それ以前にstd::stringでできるのならそのほうがよいと思うのだが。

732 名前:デフォルトの名無しさん :04/01/13 11:55
親以下のコントロールにファイルをドロップする処理を
クラスを使わずに実現したいのですが
何か方法はありませんか。


733 名前:デフォルトの名無しさん :04/01/13 12:08
今までBCBやってて、VCはどんなもんかとインストしてみたらマンドクセー
コンポーネントとかプロパティとかねーし。コードをガリガリ書くの大変だね。

734 名前:デフォルトの名無しさん :04/01/13 13:13
ガリガリ書かねーよ。
みんな、アップウィザードとコードウィザードとコピペだけだ。

735 名前:デフォルトの名無しさん :04/01/13 16:00
本についての質問です。
これからVCをはじめます。
しかし、参考書がありません。
最終的には、音声とか画像を扱いたいので、
入門書にもなり、メディアをカバーしたという都合の良い本はありますか?
一応、Javaやってきてるんで、プログラミング自体は初心者ではないです。

736 名前:デフォルトの名無しさん :04/01/13 18:40
Digital Mars C++の
コンパイラをダウンローをしたけど
使えません。どうやって使うんですか

737 名前:デフォルトの名無しさん :04/01/13 18:49
キーボードからの入力を捕らえたいです。
普通に窓の WndProc で WM_KEYDOWN を拾うのはわかりましたが、
ウインドウがアクティブでない状態でもキー入力を感知したいです。
どのような手法をとればいいでしょうか?

738 名前:デフォルトの名無しさん :04/01/13 18:53
>>736
"Code of the Nerds" Digital Mars C/C++
http://pc2.2ch.net/test/read.cgi/tech/1044210976/

739 名前:デフォルトの名無しさん :04/01/13 19:02
サンスこ>>738

740 名前:デフォルトの名無しさん :04/01/13 19:19
VC++.NETなんですけど
.NETアプリでプロジェクトを作成たんですけど

LoadLibrary()関数を使うために
#include<Windows.h>をインクルードしたら

this->Icon = (__try_cast<System::Drawing::Icon * >(resources->GetObject(S"$this.Icon")));
↑この行がエラーを吐くようになりました。
\Form1.h(158) : error C2039: 'GetObjectA' : 'System::Resources::ResourceManager' のメンバではありません。

こんなエラーです。
#include<windows.h>をコメントアウトすると、直ります。
どうしてでしょうか?


741 名前:デフォルトの名無しさん :04/01/13 20:12
>>731
結局stringを使いました。これで一応解決・・・です

742 名前:740 :04/01/13 20:51
解決しました。
海外サイト調べたら
#ifdef GetObject
#undef GetObject
#endif
を追加するといけるとの事だったのでやってみたら
出来ました。


743 名前:724 :04/01/13 20:56
どなかたか>>724分かりませんか?
サイト調べたりMSDN調べても、Windowsフォームの追加方法しか乗ってなくて
肝心の表示方法が載ってません。

助けてください(涙

744 名前:デフォルトの名無しさん :04/01/13 21:04
イテレータをintに変換したいんですがどうすればいいでしょうか

745 名前:724 :04/01/13 21:16
自己解決です。

Form *f = new Form2();
f->ShowDialog(this);
でいけました。


746 名前:デフォルトの名無しさん :04/01/13 23:12

DOC/Viewアーキテクチャのプロジェクトで、
左側のクラスのツリーで、viewクラスにあるメニューコマンドの
ハンドラを削除したら、viewクラス全体がワークスペースから
削除されてしまいました。

これを追加するにはどうしたら良いんでしょう?
単純にファイルタブからファイルを追加してもすでに
プロジェクトに追加されていると出てしまいます。



747 名前:デフォルトの名無しさん :04/01/14 00:01
VS6の場合なら一度終了させてから、
******.clw というファイルを削除して再度VS6を起動し
さらにClassWizardを起動すれば戻る可能性あり。


748 名前:デフォルトの名無しさん :04/01/14 00:24
***View.h を再保存しても直るよ

749 名前:デフォルトの名無しさん :04/01/14 01:06
>>747-748
どもども。お蔭様で直りました。

再度やり直しかと思っていたので助かりました。
短いコードなんですが、3日ほど四苦八苦して
作ったものなので。(笑


750 名前:デフォルトの名無しさん :04/01/14 10:33

MFCにはシフトJISとEUCの相互変換する関数って
ないんすかねぇ。自分で実装しなくちゃいかん?
マンドクセ。


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.