■過去ログ置き場に戻る■
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.