1 名前:Part28の1000 mailto:sage [2008/02/15(金) 01:45:56 ] Visual C++入門者・初心者からの質問を、 お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。 ■質問するにあたって ・エラーや警告のときはエラーメッセージを書きましょう。 ・開発環境も書きましょう。 ・できるだけ具体的に。 質問の仕方については次のページが大変参考になります。 www.hyuki.com/writing/techask.html myu.daa.jp/osiete/ ■回答するにあたって ・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。 (MSDNのどの項目だとか、何のキーワードでGoogleするとか) ・ネタや煽りは軽く流しましょう。 過去スレ、関連スレなどは>>2-5 辺り。
641 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 18:31:58 ] あまり別物でないように使う事も出来るけど、 フルに機能を利用すれば全くの別物になる。 入門書は ・ 独習 C++ ・ C++ プライマー 第4版 ・ ロベールの C++ 入門教室 の3つを実際に店頭で読んでみて決めてみたら。
642 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 18:36:17 ] >>639 デバッグ中の出力ウィンドウのこと? OutputDebugStringとかOutputDebugStringFormatとか使う MFCだとTRACEマクロもある
643 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 18:41:14 ] >>641 なるほど、基本的な部分が似てるのなら少し安心です 前に独習Perlがすごい役にたったから今回も独習シリーズでいいや、とか思ってた たしかに読んでみて自分に合ったの探したほうがよさそうですね。 どうもありがとうございます
644 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 19:53:10 ] >>636 依存関係ではダメと思う。 自分は634のようにしている。
645 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 21:00:54 ] >>643 自分は「やさしいC++」がオススメ
646 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 23:31:13 ] >>642 アリガトン
647 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 02:55:42 ] >>634 >>635 ありがとうございます。うまくいきました。 [プロジェクト]→[設定]→[ビルド後の処理]タブで、 出来たての.dllをコピーするコマンドを指定しました。 copy $(TargetPath) コピー先フォルダ これでビルド後に.dllが(対応する).exeのフォルダにコピーされ、 .exeの実行時に適切な.dllが使われるようになりました。 >あと、デバッグとリリースを分けるなら別名にしたほうがいろいろ便利だよ 考えてみます。今のところ不都合はないように思います。 >>636 >同じソリューションに入れて依存関係作っとけばよかった気がする >>644 さんのおっしゃる通り、この方法はダメでした。 1つのワークスペース(VisualC++6.0なので)に2つのプロジェクトを挿入して、 それらのプロジェクトの間に依存関係を指定してみたのですが、 うまくいきませんでした。この方法でできれば簡単で良いのですが。。。
648 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 07:19:02 ] WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_OWNDC, MsgProc, 0L, 0L, GetModuleHandle(NULL), NULL, LoadCursor(NULL,IDC_CURSOR1), NULL, NULL, L"Cursor Test", NULL }; カーソルを自作カーソルIDC_CURSOR1にするにはどうすればいいんですか? こうやるとエラーになってしまいます。
649 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 08:12:29 ] ■質問するにあたって ・エラーや警告のときはエラーメッセージを書きましょう。 ・開発環境も書きましょう。 ・できるだけ具体的に。
650 名前:デフォルトの名無しさん [2008/04/03(木) 08:20:17 ] >>648 -LoadCursor(NULL,IDC_CURSOR1), +MAKEINTERSORSE(IDC_CURSOR1) 綴りまちがってるから自分で確認して
651 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 09:06:33 ] 開発環境は2008です。 WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_OWNDC, MsgProc, 0L, 0L, GetModuleHandle(NULL), NULL, LoadCursor(NULL, MAKEINTRESOURCE(IDC_CURSOR1)), NULL, NULL, L"Cursor Test", NULL }; - + の意味がわからないのですが これで実行した時のエラーは error C2065: 'IDC_CURSOR1' : 定義されていない識別子です。 warning C4003: マクロ 'CreateWindowW' に指定された実引数の数が少なすぎます。 error C2059: 構文エラー : ')' です。
652 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 09:38:12 ] IDC_CURSOR1っていう名前のカーソルのリソースがないんじゃないのかい?
653 名前:デフォルトの名無しさん [2008/04/03(木) 10:09:47 ] Windowsフォームアプリケーションだとコントロールを個別にフォントとかをプロパティで簡単に設定できるんですね。 なんでMFCだとできないんですかね。。。実はできたりするんですか?
654 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 10:14:51 ] ポトペタRAD環境をC++で使いたいならC++Builderへどうぞ VC++ではできません
655 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 11:50:43 ] >>651 LoadCursor(NULL,IDC_CURSOR1) だと IDC_CURSOR1 でエラーにならないのに LoadCursor(NULL, MAKEINTRESOURCE(IDC_CURSOR1)) だとエラーになるのはおかしいだろ。 そして、LoadCursorの第一引数がNULLなのはシステム定義アイコンを使うときだ。 hInst を入れてみ。
656 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 12:30:44 ] だめでした。 IDC_CURSOR1 を定義する方法は、 リソースビュー>追加>リソース>cursor>新規作成 出来た resource.h をcppにインクルード だけでいいですか? LoadCursorのヘルプに afxwin.h が必須インクルードと書いてあるのですが、インクルードすると #ifdef _DLL #ifndef _AFXDLL #error Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d] の#errorに飛んでしまいます。
657 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 15:09:25 ] MFCのLoadCursor使うならafxwin.hが必要でMFCとしてビルドしないといけない
658 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 16:21:45 ] もしかして>>648 のエラーも >error C2065: 'IDC_CURSOR1' : 定義されていない識別子です。 なのか? そうでないなら出たエラー書いてみて
659 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 16:29:47 ] あと、>>648 のその行以外は問題ないとすると WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_OWNDC, MsgProc, 0L, 0L, GetModuleHandle(NULL), NULL, LoadCursor(GetModuleHandle(NULL),MAKEINTRESOURCE(IDC_CURSOR1)), NULL, NULL, L"Cursor Test", NULL }; こうだな。GetModuleHandle(NULL)がかぶってるから、 事前に呼んでとっておくといい、けどこれWinMainの第一引数なんだけどな。
660 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 18:12:45 ] エラーが出なくなりましたが、今度はウインドウが出てこなくなりました。 正常だった記述に戻してもウインドウが出てこなくなりました。 中間ファイルもソリューションのクリーンで消しましたがだめです。WINごと再起動してもだめです。 DirectX9SDKのサンプルCreateDeviceのVS2005プロジェクトをVS2008で自動変換して取り込み自作カーソルリソースを新規作成で追加して #include "resource.h"追加と WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L, GetModuleHandle(NULL), NULL, NULL, NULL, NULL, L"D3D Tutorial", NULL }; の部分を WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_OWNDC, MsgProc, 0L, 0L, GetModuleHandle(NULL), NULL, LoadCursor(GetModuleHandle(NULL),MAKEINTRESOURCE(IDC_CURSOR1)), NULL, NULL, L"Cursor Test", NULL }; に書き換えただけです。たすけてください。もう12時間これやってます^^;
661 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 18:18:42 ] エラーが出ないって事はコンパイルできたんだろ? そしたら次はデバッガの使い方をだな・・・ とりあえず、F10連打だ
662 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 18:53:10 ] ああそうか!カーソルはこれでクリア出来てるってことですよね LoadCursor(GetModuleHandle(NULL),MAKEINTRESOURCE(IDC_CURSOR1)) の意味と、CreateDeviceが失敗してるのはまた明日調べます。 まじありがとうございました。
663 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 19:00:16 ] ちょっとサンプルみたけど、hInst でいいんじゃん。 LoadCursor(hInst,MAKEINTRESOURCE(IDC_CURSOR1)) で。前のGet・・・につられたわ
664 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 19:24:36 ] 拾ったサンプルをあてずっぽうで改造? ほとんど何も知らないでやってる?
665 名前:644 mailto:sage [2008/04/03(木) 20:28:26 ] >>647 dllのコピーは必要だけど、依存関係を設定するのはオススメ。 libのリンクを自動的にやってくれるし、 exeをビルドする前にdllをビルドしてくれるので、 古いdllを使ってハマルようなことがなくなる。 つまり 依存関係+ビルド後の処理でコピー と。
666 名前:647 mailto:sage [2008/04/04(金) 00:44:33 ] >>665 なるほどです。そうしてみました。
667 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 08:56:37 ] >>663 hInstで動きました。ありがとうございました。
668 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 00:09:59 ] PCSX2というソフトをコンパイルしたいんですがやり方がわかりません。 プログラムについての知識0です。 勉強したいとかではなくこのソフトがほしいだけです。 Microsoft Visual C++ 2008をとりあえずインストールしましたがやり方がまったくわかりません。 サルにも判るように教えてくれる方がいれば幸いです。 ttp://www.pcsx2.net/files/10490 ttp://pcsx2.svn.sourceforge.net/viewvc/pcsx2/pcsx2/GS.cpp?view=markup&pathrev=346
669 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 00:25:00 ] readme嫁
670 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 02:26:07 ] 勉強する気ないやつに教えるほど俺は性格良くないです
671 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 04:37:38 ] >>668 エミュレータでタダゲーしたいんだけど、コンパイルしないといけない。 だれか手取り足取り教えろ、ということか。 …たしかに何も教える気がまったく起こらんなw 初心者には寛容なほうなのだが。
672 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 10:00:14 ] 実は頭悪いだろ、ここの人たち
673 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 10:29:33 ] 残念ながらそんな煽りに乗るほどには悪くないんだな。(w
674 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 16:45:39 ] >>668 ここは勉強する意欲のある初心者に教えるスレであって 勉強するつもりもない素人に教えるスレではありません お帰り下さい
675 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 20:47:50 ] 今までXPで開発していましたがPCをVistaで新調して開発したところ、 Vista機では問題なく実行できるexeがXPマシンに持っていくとアプリケーション構成エラーが出て実行できません おそらく>>527 さんとほぼ同じ症状で、/MTでコンパイルを通すと実行できるようにはなりますが ファイルサイズが大きくなるのでできるだけ/MDにしたいです 何か良い手段はないでしょうか VC2008を使用しています
676 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 21:08:55 ] それが嫌なら>528の方法 それも嫌ならライブラリ使わない
677 名前:675 mailto:sage [2008/04/06(日) 21:26:15 ] なるほど… やはり基本的には/MTにするかランタイム導入を促す方向になるのですね ありがとうございました
678 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 21:32:39 ] ランタイムをインストールするのが嫌なら、 EXEと同じフォルダに置くという方法もできる。 マニフェスト関係が面倒だけど。
679 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 00:18:33 ] intやfloatの値をLPSTRに変換するにはどうすればいいですか?
680 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 00:26:55 ] キャスト int i = ...; LPSTR s = (LPSTR)i;
681 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 02:39:25 ] すごいな。 いろいろと。 dobuleでなくて良かったとかそういう話なんだな。。
682 名前:デフォルトの名無しさん [2008/04/07(月) 03:11:47 ] どぶれ?
683 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 06:17:22 ] >679 CやC++でintやfloatを文字列に変換するのと同じでもいいし apiやMFC使う方法もある
684 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 06:19:08 ] でもfloatは対応してないのもあったかも
685 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 08:34:49 ] >>680 オマイ天才
686 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 08:42:03 ] 2008のMFCで、チェックボックスのメンバ変数を追加して、初期化時に 変数名 = TRUE; とすればチェックされた常態で起動されるとVC++6.0の本に書いてあるのですが error C2679: 二項演算子 '=' : 型 'int' の右オペランドを扱う演算子が見つかりません (または変換できません)。 のエラーが出てしまいます。 VBのようにプロパティにもそれらしき項目がないです。教えてください。
687 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 09:36:44 ] 何の問題もなくできたよ
688 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 10:06:14 ] 変数を作ったら DDX_Control(pDX, IDC_CHECK1, as); この行が追加された。 で OnInitDialog()の中に as = TRUE; を追加してもだめです。
689 名前:デフォルトの名無しさん [2008/04/07(月) 10:27:05 ] このスレの住人なら知っていますね、あの糞開発ツールのことを ・自分のプログラムのバグなのかコンパイラのバグなのかわからない ・他の仕事に応用できない糞開発ツールの独自世界を必死に学習している ・テキストエディタで書いたほうが効率的なのに糞UIツールを懸命に使っている ・糞開発ツールを批判すると「性格が悪いから糞ツールを批判するんだ」と言われる 糞だけど、政治的な理由で無理やり使わされているんですよね。 もう、あんな厨の作った糞ツールを我慢して使うのはやめましょう。 ・糞開発ツールを部下に押し付ける上司の命令は無視しましょう。 上司は糞開発ツールが使われる実績を作ることであの会社のごきげんをとっているのです。 ・糞開発ツールを使わせる上司の下では働けません、と上司の上司に直訴しましょう。 ・あの糞開発ツール提供会社には「おたくの糞開発ツールは話にならない」と突き放しましょう。 バグレポートなどしてはいけません。改善要求などもってのほかです。 あの会社はあなたたちのことをテスター/モルモットとしか思っていません。 ・あの会議で「糞開発ツールを使ったら生産性がxx%アップしました」 なんて話が出たら力強く机を叩き、会議室を出ましょう。 あの人たちは糞開発ツールをマンセーすることで立場を確保しているのです。 糞な開発ツールを糞だと言える、そんな当たり前の環境をみんなの力で取り戻しましょう。
690 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 10:48:51 ] >>688 単にデフォルトでチェック状態にしたいなら as.SetCheck(BST_CHECKED) をすればいいんじゃないの?
691 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 12:21:28 ] できました。ありががとうございます。 できましたが、わからないことを逆引きできず、きりがありません、本も相当買いましたが、VBと違いまったく応用できません このまま一個ずつ積み重ねるしかないのでしょうか?
692 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 12:25:51 ] MSDNで調べる癖をつけましょう それでもわからなければWebやメーリングリストの過去ログなども使いましょう CheckBoxの場合はCButtonというクラスの変数なのでそのメンバを調べましょう
693 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 13:01:00 ] DDX_Controlにするから型があわない たぶん本に書いてあるのと違うことやってる
694 名前:デフォルトの名無しさん [2008/04/08(火) 17:56:11 ] Visual C++6.0を起動すると、 「ワークスペースにあるウィンドウのすべてを開くことはできません。」 という意味不明なメッセージボックスが表示されることがあります。 [OK]ボタンがひとつあるだけの単純なメッセージボックスです。 このメッセージは次のように言っているように聞こえます。 「ワークスペースにはウィンドウがいくつかある。あなたはそれをすべて 開こうとした。でもそれはできない。」 ??? 別に困っているわけではないのですが起動時に数回に一回の割合で出現するので 気になります。一体、このメッセージボックスは何が言いたいのでしょうか?
695 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 19:13:41 ] support.microsoft.com/kb/315617/ja このぺージの ダイアログ ボックスでWebBrowserコントロールを使用 の部分なのですが、webbrowser2.hが存在していないエラーが出ます。2008では使えないんですか? 代りに何を使えば同じように使えるんでしょうか
696 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 19:45:02 ] msdn2.microsoft.com/en-us/library/aa752044.aspx ここらへんをみるとwebbrowser2.hは、該当 ActiveXからMFCクラスを生成するとできる、 って書いてあるような気がする
697 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 19:47:36 ] >694 メニュー > ウインドウ
698 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 10:09:33 ] そこの英語ページぜんぜんわかりません CWebBrowser2とIWebBrowser2の違いもわかりません。 ドキュメント自体しないですよね void CtestDlg::OnBnClickedOk() { //CWebBrowser2* hExp1 = (CWebBrowser2*)GetDlgItem(IDC_EXPLORER1) ; //hExp1->Navigate2((CString*)("www.google.com/intl/ja/ "), &noArg, &noArg, &noArg, &noArg); IWebBrowser2* hExp1 = (IWebBrowser2*)GetDlgItem(IDC_EXPLORER1) ; hExp1->Navigate2((VARIANT*)("www.google.com/intl/ja/ "), NULL, NULL, NULL, NULL); } これで起動するとコンパイルはできるのですが、ボタンをクリックすると test.exe の 0x78a49c05 (mfc90ud.dll) でハンドルされていない例外が発生しました : 0xC0000005: 場所 0x8b55ffdb を読み込み中にアクセス違反が発生しました。 と出てしまいます。VC++2ヶ月でこれはまだ早いですかね
699 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 11:03:06 ] IWebBrowser2はインターフェイスでCWebBrowser2はその実装されたクラスだけど多分難しいと思う 単に表示させたいならGetDlgItem使わずにダイアログに直接貼り付けてクラス変数作ってNavigateした方が楽だよ なんにしてもCOMとかActiveXとかめんどくさい物を勉強した方がいいと思う
700 名前:デフォルトの名無しさん [2008/04/09(水) 15:18:28 ] VC++6.0の初心者です。 マウスのイベントについて教えて下さい。 (漢字はよく読めないので、なるべく平仮名でお願う) MFC AppWizard(exe)を使って、しゅるい はダイアログベース(D)を使います。 1つめ. ダブルホイールマウスを使ってた。 マウスにかんけい知るイベントで、自分で調べて解ったのは WM_MOUSAWHEEL という奴ですが・・・ホイールが2つある、もっと、マウスで アプリケーションに必要な処理をおこうなうには何すれば? どう考えればいいでしょうか?
701 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 15:47:15 ] 日本語でOK
702 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 15:59:22 ] ホイールが二つあるマウスのイベントを拾いたい
703 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 17:39:18 ] 横ホイールか
704 名前:デフォルトの名無しさん [2008/04/09(水) 17:39:57 ] >>702 さん。 Yes.ホイールが2つ以上あるマウスのイベントを拾いたいです。 (日本語あってる?)
705 名前:デフォルトの名無しさん [2008/04/09(水) 18:05:07 ] VisualC++2005のMFCのダイアログベースでプログラムを作成しています。 まだ初めて1ヶ月もたってないので初歩的なことを聞いてすいません。 OnInitDIalog内の//TODO: 初期化をここに追加します。 というところで font.CreateFont( 36, 0, 0, 0, FW_NORMAL, TRUE, FALSE, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, "Italic"); GetDlgItem(IDC_STATIC)->SetFont(&font); として、文字のフォントを変更しようとしました。 最初は問題なく変更できていたのですが、気づいたらいつの間にか変換できていませんでした。 ボタンを使って、ボタン動作で GetDlgItem(IDC_STATIC)->SetFont(&font); を行うと変更されますので、一度変更した後になんらかの理由で元に戻ってると推測していますが、その理由と場所がわかりません。 これだけの情報でわかれば教えていただけますか?
706 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 18:25:46 ] そのfontは保持し続けてるのか? どこで宣言してる?
707 名前:デフォルトの名無しさん [2008/04/09(水) 21:21:31 ] long ldata[] = {0x00000000,0x00000001,0x00000002,・・・・・}; このような配列を、文字列、"0x000000000x000000010x00000002・・・・・" と変換するにはどのようにしたらいいでしょうか。 また、この文字列を逆に配列に戻すことは可能でしょうか。
708 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 21:40:00 ] VCというよりCかC++を勉強すれば可能
709 名前:デフォルトの名無しさん [2008/04/09(水) 21:54:15 ] >>708 ありがとうございました。可能ということで、勉強したいと思います。
710 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 22:33:41 ] >>709 sprintfとかで速効
711 名前:705 [2008/04/10(木) 09:50:43 ] >706 一応グローバルで宣言してるつもりで関数の外で宣言してます。 ちなみにC言語は初心者レベルで理解してるつもりです。 まだ、簡単なソフトを1つ作っただけですが。。。初心者レベルで。
712 名前:デフォルトの名無しさん [2008/04/10(木) 10:50:01 ] 最近VisualC#2008 Expressをダウンロードして使っているものです。 質問なのですが、 イミディエイトウィンドウを使ってコマンドを入力してデバッグできる ことを知ったのですが、普通にGUI上からデバッグするだけでは できないことや効果的な利用方法などがあったら教えて頂きたいです。
713 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 10:53:47 ] ここC#じゃないよ
714 名前:デフォルトの名無しさん [2008/04/10(木) 12:20:50 ] static DWORD beforeTime = 0; DWORD nowTime;static int fps = 0;char buff[80]; nowTime = timeGetTime();fps++; if ( nowTime - beforeTime >= 1000 ) {wsprintf(buff, "%05d FPS\n", fps); TextOut(hDC,1,1,buff,lstrlen(buff));fps = 0; beforeTime = nowTime; } counter++; これは某所にあった FPSを表示するソースの一部なんだけど これを使うと(WM_TIMERで呼ぶと) 最初の一回は00001FPSと出て、その後は25000とか二万を越える値が出ます。 どうして?
715 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 12:31:49 ] 1秒に25000回呼ばれてるんだろ
716 名前:デフォルトの名無しさん [2008/04/10(木) 12:56:24 ] >713 あ、思いっきり間違えました! すいません。
717 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 05:19:00 ] リソースファイルは、Express Edition じゃビルドできないんですか? ちなみにバージョンは2008です。
718 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 06:07:09 ] リソースコンパイラはRC.EXE
719 名前:705 [2008/04/11(金) 10:28:39 ] どなたかヒントだけでも教えていただけませんか?
720 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 11:27:20 ] >>705 文字を替えたいコントロールのIDをIDC_STATICから別の名前に替えてみて
721 名前:デフォルトの名無しさん [2008/04/11(金) 12:07:17 ] >>720 変更しましたところ、グループボックスの文字が変化しました。 グループボックスのIDもIDC_STATICになっていました。 その原因は GetDlgItem(IDC_STATIC)->SetFont(&font); でIDを変更していなかったので、 ここでGetするIDも変更したのですが、文字は変化しませんでした。 原因はこれですか??
722 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 12:40:58 ] >>721 IDC_STATICってのは (-1) になってて ID未設定でいいときに使うんだよ。 プログラム中で指定するなら自分でIDつけろ
723 名前:デフォルトの名無しさん [2008/04/11(金) 13:36:40 ] >>722 ありがとうございます。 しかし、変更しましたが文字は変化しません。。。
724 名前:デフォルトの名無しさん [2008/04/11(金) 13:43:12 ] すいません。文字変更できました! なぜかスタティックテキストの上に全く同じスタティックテキストができていて、 上を必死に変更してたのですが、下のものが表示されてたためにいくらやっても変化しなかったようです。 コピーやペーストをした覚えはないんですが、、、 でも、おかげさまでIDのことを覚えることができました。ありがとうございました。 もっと勉強してきます!!
725 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:00:41 ] しかしこのスレって土日になるととたんに書き込みなくなるよね 仕事でこんなところに書き込んでる奴ばかりなんだろうか
726 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 03:40:49 ] 仕事でか(((( ;゚Д゚))))
727 名前:デフォルトの名無しさん [2008/04/13(日) 09:24:12 ] VC++2008ExpressでReleaseでビルドしてもtest.exeファイルが作成されません Releaseフォルダにはtest.exe.intermediate.manifestやtest.objがあるだけです どうすればいいですか?
728 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 09:52:27 ] >>727 あるじゃん
729 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 10:16:14 ] Releaseフォルダは2箇所にある。
730 名前:デフォルトの名無しさん [2008/04/13(日) 10:35:39 ] >>727 ほんとだ
731 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 12:13:21 ] >>727 リンクエラー出てませんか?
732 名前:デフォルトの名無しさん [2008/04/15(火) 18:04:24 ] 設定に関する質問です。 以前VisualC#2005をつかっていた時は、 括弧を閉じたりセミコロンを入れると自動でコードが綺麗に整列されて、例えば x=5 が x = 5 というように、空白が挿入されたりインデントされたりしてたのですが、 こういった機能はVisualC++2008にはありますか? 自分でも調べたのですがよくわかりませんでした。設定方法がありましたらお願いします。 上手く説明できなくてすみません。。orz
733 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 19:18:10 ] >>732 C++に、そういう機能はなかったはず C#なら2008にもある
734 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 20:07:24 ] そうですか。。回答ありがとうございました
735 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 20:50:01 ] C#はそんなのがあるんだ。 C++は他の言語や環境と比べると不便さを感じるかもね。
736 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 21:11:22 ] 昔からVBがそうだけど、特にVCが不便と感じたことはない 逆にいちいち余計なことされるとむかつく
737 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 22:37:16 ] VBは改行時にいちいち構文チェックしてうざかったな〜 .netになってからVBとかC#とかのインテリセンスはかなり優秀に C#になれてたんでVC++にきたときに不便さに困った 今となっては慣れたけど
738 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 03:22:50 ] C++ はマクロとかあるし、それ抜きにしても文法凶悪だからね。処理系的には。 賢くしづらいのはよく分かる。
739 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 03:29:29 ] VCで極力小さい実行ファイルを作るにはどうしたら良いのでしょうか。 #include <windows.h> int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow) { return 0; } だけをコンパイルしても24KBにもなってしまい、ビルドオプションで サイズ優先とかしても変化せず。 変なランタイム使ったり実行ファイルが圧縮されてるわけでも無いのに、 ファイルサイズ10KB台で色々な処理をしてるまともなGUIツールが あるんですが、何をどうしたらこう言う実行ファイルが作れるのか 皆目見当が付きません。
740 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 05:43:44 ] 既存のライブラリを使わない
741 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 06:57:12 ] あとは/opt:nowin98だっけか。