★初心者にVisual C++を教えるスレ★ Part31at TECH
★初心者にVisual C++を教えるスレ★ Part31 - 暇つぶし2ch1:デフォルトの名無しさん
08/07/31 18:02:28
Visual C++入門者・初心者からの質問を、
お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。
・できるだけ具体的に。

質問の仕方については次のページが大変参考になります。
URLリンク(www.hyuki.com)

■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
 (MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。

過去スレ、関連スレなどは>>2-5辺り。

2:デフォルトの名無しさん
08/07/31 18:03:50
Part30 スレリンク(tech板)
Part29 スレリンク(tech板)
Part28 スレリンク(tech板)
Part27 スレリンク(tech板)
Part26 スレリンク(tech板)
Part25 スレリンク(tech板)
Part24 スレリンク(tech板)
Part23 スレリンク(tech板)
Part22 スレリンク(tech板)
Part21 スレリンク(tech板)
Part20 スレリンク(tech板)
Part19 スレリンク(tech板)
Part18 スレリンク(tech板)
Part17 スレリンク(tech板)
Part16 スレリンク(tech板)
Part15 スレリンク(tech板)
Part14 スレリンク(tech板)
Part13 スレリンク(tech板)

3:デフォルトの名無しさん
08/07/31 18:04:33
Part12 スレリンク(tech板)
Part11 スレリンク(tech板)
Part10 スレリンク(tech板)
Part09 スレリンク(tech板)
Part08 URLリンク(pc5.2ch.net)
Part07 URLリンク(pc5.2ch.net)
Part06 URLリンク(pc5.2ch.net)
Part05 URLリンク(pc5.2ch.net)
Part04 URLリンク(pc5.2ch.net)
Part03 URLリンク(pc5.2ch.net)
Part02 URLリンク(pc3.2ch.net)
Part01 URLリンク(pc3.2ch.net)

4:デフォルトの名無しさん
08/07/31 18:08:44
【関連スレ】
■MFC相談室 mfc19d.dll■
スレリンク(tech板)l50
Win32API質問箱 Build68
スレリンク(tech板)
【C++】 DirectX初心者質問スレ Part18 【C】
スレリンク(tech板)
C言語なら俺に聞け(入門篇) Part 33
スレリンク(tech板)
【初心者お断り】ガチ規格準拠C専用スレ Part133
スレリンク(tech板)
C++相談室 part63
スレリンク(tech板)
C/C++の宿題を片付けます 114代目
スレリンク(tech板)
【初心者歓迎】C/C++室 Ver.57【環境依存OK】
スレリンク(tech板)


【関連サイト】
猫でもわかるプログラミング
URLリンク(www.kumei.ne.jp)
MSDN ライブラリ ※変更された
URLリンク(msdn.microsoft.com)
URLリンク(msdn2.microsoft.com) (2005のことはこっち)
Platform SDK Update ※変更された
URLリンク(www.microsoft.com)
Google
URLリンク(www.google.co.jp)

5:デフォルトの名無しさん
08/07/31 18:09:25
【このスレの前身 VisualC++相談室 過去スレ】
part 1 URLリンク(piza.2ch.net)
part 2 URLリンク(piza.2ch.net)
part 3 URLリンク(piza2.2ch.net)
part 4 URLリンク(pc.2ch.net)
part 5 URLリンク(pc.2ch.net)
part 6 URLリンク(pc.2ch.net)
part 7 URLリンク(pc.2ch.net)
part 8 URLリンク(pc.2ch.net)
part 9 URLリンク(pc5.2ch.net)

6:デフォルトの名無しさん
08/07/31 18:09:54
Platform SDKの中で一番新しいのはこっち
Microsoft Windows Server 2003 R2 Platform SDK Web Install
URLリンク(www.microsoft.com)
(ISO版などあり)

これ以降、Platform SDK + .NET Framework SDKとして
Windows SDKが公開されていて、その中で一番新しいのはこれ。
Windows SDK for Windows Server 2008 and .NET Framework 3.5
URLリンク(www.microsoft.com)
少し前のバージョン(Vista + .NET 3.0の初期版)には日本語版もあったけど、
日本語化されているのは専ら.NET Framework部分だけ。

VC6対応の、最後のPSDKはここ。
URLリンク(www.microsoft.com)



テンプレ終わり。

7:デフォルトの名無しさん
08/08/01 00:50:37
VS2008のSP1はまだかな~

8:デフォルトの名無しさん
08/08/01 00:52:57
案外ウィルスに感染しているとかってオチじゃないか?

9:8
08/08/01 00:54:43
誤爆スマン

10:デフォルトの名無しさん
08/08/02 17:09:17
VC++6.0を使っています。
vector<string>の宣言時に一括して配列へ文字を
代入したいのですがどうすればいいのでしょうか。

javaとかだとこんな感じの事です。
var s1 = ["【", "】"];

11:デフォルトの名無しさん
08/08/02 17:19:06
C++スレで質問すればいい

12:デフォルトの名無しさん
08/08/02 17:23:36
CStringListのがいいよ

13:デフォルトの名無しさん
08/08/02 17:31:17
初心者なら素直に本でも買って勉強しろ
ろくに勉強もしないで人に聞くのは感心しない

14:デフォルトの名無しさん
08/08/02 18:08:23
>>11
C++スレ行ってみます。
>>12
vectorであるのかなと思いまして。

15:デフォルトの名無しさん
08/08/02 18:57:56
質問です。
システムフックによって任意のウィンドウを操作するプログラムを作成しているのですが、
以下のウィンドウクラスのウィンドウを移動、リサイズすることができません。
・afx:...
・WTL:...
・TApplication
WM_CREATEメッセージをフックしているのですが、他のメッセージを処理する
必要があるのでしょうか?処理対象のウィンドウが間違っているのでしょうか?
開発環境はVC++ 2008 Express Editionです。WindowsXP SP3で動作確認しています。

16:デフォルトの名無しさん
08/08/02 19:03:16
スタイルとか属性とか調べるものがあるだろ

17:15
08/08/02 19:27:39
>>16 レスありがとうございます。
以下のページに記載されている方法によって操作対象のウィンドウを抽出しています。
URLリンク(blog.goo.ne.jp)
ウィンドウの抽出条件に問題があるのでしょうか?

18:デフォルトの名無しさん
08/08/02 19:41:32
WM_CREATE以外で動けばメッセージがまずい
WM_CREATE以外でも動かなかったら処理対象のウィンドウがまずい

19:15
08/08/02 19:57:25
>>18 レスありがとうございます。
WM_SIZEメッセージをフックするようにしたところ、afx:...とWTL:...の操作に成功しました。
しかし、TApplicationの操作に失敗します。

20:デフォルトの名無しさん
08/08/02 21:53:42
>>15
たしかTApplicationではなく、そいつをオーナーにしているウィンドウが
実際に画面に表示されているウィンドウのはず。

21:15
08/08/03 01:48:33
>>20 レスありがとうございます。
URLリンク(www.asahi-net.or.jp)
TApplicationの子ウィンドウを操作することによって
移動、リサイズすることができるようになりました。

22:デフォルトの名無しさん
08/08/04 21:42:49
VS2008 ExpressEditionsをインストールしようとしたのですが、
URLリンク(xtp0001.s3.x-beat.com)
この D: 243MB が気になって夜も眠れません
外付けHDD(H:\)を繋ぐと H: 243MB と表示されます
これは何なのでしょうか

23:デフォルトの名無しさん
08/08/04 21:48:50
ウイルス

24:デフォルトの名無しさん
08/08/04 21:49:33
>>22
ウイルスだな

25:デフォルトの名無しさん
08/08/04 21:51:42
割れ厨

26:22
08/08/04 22:26:50
>>23-24
ウイルスとはどういうことでしょうか?

27:デフォルトの名無しさん
08/08/04 22:37:07
すでに手遅れだから気にしなくていい

28:22
08/08/04 23:11:06
>>27
分かりました
ありがとうございます。これで夜もぐっすり眠れます

29:デフォルトの名無しさん
08/08/05 17:59:55
ピクチャボックスに表示してある画像をファイルに保存するのは、どうすればいいのでしょうか?

30:デフォルトの名無しさん
08/08/05 19:07:37
>>29
望む画像形式のデータを構築して、ファイルをopenしてwriteする。

31:デフォルトの名無しさん
08/08/05 20:30:10
エディットボックスに数字以外入力できない様にするにはどうすればいいんでしょうか?
タイプはCString型です。

32:デフォルトの名無しさん
08/08/05 20:38:49
C++初心者が1番最初に作ってみるといいプログラムって何ですか?

33:デフォルトの名無しさん
08/08/05 21:24:23
キー入力見て数字以外は無視
コピペされたら数字以外除去

34:デフォルトの名無しさん
08/08/05 21:26:11
>>32
HelloWorld!

35:デフォルトの名無しさん
08/08/05 21:48:00
ES_NUMBER

36:デフォルトの名無しさん
08/08/06 00:14:36
いまVisualc++2005でウィンドウアプリケーションの勉強してるんですが、

HWND hWnd や HINSTANCE hCurInst とは
int a みたいな感覚でいいんでしょうか?hWnd、hCurInstのところは自分で勝手に変えられるのでしょうか?


37:デフォルトの名無しさん
08/08/06 00:17:34
>>36
その認識で合っている。

38:デフォルトの名無しさん
08/08/06 00:37:41
おお、そうなんですか。モヤモヤが晴れましたどーもです!

39:デフォルトの名無しさん
08/08/06 01:30:58
【事件】 熱上昇気流で突風! 都内パンチラスポット
スレリンク(news7板)l50

40:デフォルトの名無しさん
08/08/06 09:59:26
スピンボタンを使いたいんですけど、数値の自動関連付けと自動表示を使わずに、
エディットボックスの文字列をOnDeltaposSpin1関数
内で取得して変数に変換してこの値にスピンボタンを押したとき
エディットボックスの文字列の値が指定しただけ増えるというような
設定にしたいのですがOnDeltaposSpin1関数でエディットボックスの
文字列を取得する方法がわかりません。
どうか教えてください。

41:デフォルトの名無しさん
08/08/06 10:04:41
GetDlgItem(IDC_xxx)->GetWindowText()
ていうか、エディットボックスの文字列、普段どうやって取得してるの?

42:デフォルトの名無しさん
08/08/06 10:11:20
UpdateData(TRUE)

43:デフォルトの名無しさん
08/08/06 10:17:39
あー、そんなのあったね

44:デフォルトの名無しさん
08/08/06 10:46:20
うまくいきましたありがとうございます。

45:デフォルトの名無しさん
08/08/06 17:09:05
ダイアログ上にエディットボックスとボタンがあって、ボタンを押すと
エディットボックスに表示されている文字列が保存されるという事をやりたいんですが、
inifileを使えばいいらしいんですけど調べてみても使い方がよくわかりらないので
教えて下さい。お願いします。

46:デフォルトの名無しさん
08/08/06 19:01:52
VisualC++2005でWindowsフォームアプリケーションを選択してソースを覗いたのですが、
Application::EnableVisualStyles()

#include "stdafx.h"

using namespace System;
using namespace System::Reflection;
using namespace System::Runtime::CompilerServices;
using namespace System::Runtime::InteropServices;
using namespace System::Security::Permissions;

この様な中身になっているのですが、これは何の言語なのでしょうか?C、C++?
初めて見る形なので戸惑ってます・・・

47:デフォルトの名無しさん
08/08/06 19:05:22
C++/CLI というやつです。

48:デフォルトの名無しさん
08/08/06 19:07:12
つーか、その部分だけなら普通にC++だけどなw

49:デフォルトの名無しさん
08/08/06 19:16:31
C++なんすか!すんませんCしかやったことなかったんです・・・どうもっす!

50:デフォルトの名無しさん
08/08/06 23:12:41
_itoa_s
_i64toa_s
_ui64toa_s

の違いがわからんのですが
int
long int
unsigned long int
に対応したitoa という認識でおKですか?

51:デフォルトの名無しさん
08/08/06 23:58:29
64ビットCPUバージョン

52:デフォルトの名無しさん
08/08/07 00:01:35
>>49
C++/CLIは最早C++ではないぞ。

53:デフォルトの名無しさん
08/08/07 02:47:24
まじすか・・・ようやくCを覚えてきたのに、この先不安じゃ・・

54:デフォルトの名無しさん
08/08/07 03:26:17
VC++2008でPathFileExistsを使う前と使った後で
GetProcessMemoryInfoでヒープメモリを比べてみた所、
ファイルサイズ分?メモリを消費していました。
PathFileExistsの後にこの分のメモリは解放できないのでしょうか。

55:デフォルトの名無しさん
08/08/07 04:40:43
shlwapi.dllを逆アセして調べる

56:デフォルトの名無しさん
08/08/07 06:10:53
いちいち解放してると効率悪いから、わざと解放しない場合もあるし
プログラムがおわった時点で解放されてれば問題なし

57:デフォルトの名無しさん
08/08/07 08:53:48
なるほどです。
ファイルを読み込ませる時のチェックに使っているので、
その度にメモリへ蓄積されていってくのですが、
こちらは気にしなくても良いのでしょうか。

58:デフォルトの名無しさん
08/08/07 09:02:42
プログラム終了までにメモリ不足にならない保証があるならいいんじゃない?

59:デフォルトの名無しさん
08/08/07 12:01:16
ファイルを沢山読み込ませるような事をすると不足になる可能性が…。
そういった場合はどうすればいいのでしょうか。

60:デフォルトの名無しさん
08/08/07 13:10:19
PathFileExistsに問題があったら他でも問題になってるはずだから
PathFileExistsには問題がなくてお前のプログラムに問題があるか、
全然問題ないのに単なる妄想でいらない心配してるかのどっちかだろ

61:デフォルトの名無しさん
08/08/07 13:54:56
すいません上書き保存ってどうやるんですか?
↓のような保存ボタンと読み込みボタンを作って保存して読み込みしたら、
読み込みには成功したんですけど、もう一回保存を押して読み込みを押しても、
一回目の値が表示されます。
TCHAR szIniFile[MAX_PATH+1];
LPCTSTR szSection;

GetModuleFileName( NULL, szIniFile, sizeof(szIniFile) );
for (int i = _tcslen(szIniFile) - 1; i >= 0; i --)
{
if (szIniFile[i] == _T('\\'))
{
szIniFile[i + 1] = _T('\0');
break;
}
}
_tcscat(szIniFile, "setting.ini" );
szSection = _T("No");
WritePrivateProfileString(szSection, _T("No.1"), m_ed, szIniFile);

62:デフォルトの名無しさん
08/08/07 14:07:41
>>61
それだけ書かれても原因はわからん。
そこ以外に問題があるんじゃないの?

63:デフォルトの名無しさん
08/08/07 14:23:52
さっきのが保存ボタンのソース全部で読み込みボタンはこれでエディットボックスに
表示する文字列を扱ってます。なにか
指定先にすでにファイルがある場合消去して書き直すような方法はないでしょうか?
ほかの部分が問題っていうのはもっとほかの部分なんでしょうか?
TCHAR szIniFile[MAX_PATH+1];
LPCTSTR szSection;
char tmp[6];
GetModuleFileName( NULL, szIniFile, sizeof(szIniFile) );
for (int i = _tcslen(szIniFile) - 1; i >= 0; i --)
{
if (szIniFile[i] == _T('\\'))
{
szIniFile[i + 1] = _T('\0');
break;
}
}
_tcscat(szIniFile, "setting.ini" );
szSection = _T("No.1");
GetPrivateProfileString(szSection, _T("No.1"), _T("0"), tmp, sizeof(tmp), szIniFile);
SetDlgItemText(IDC_EDIT1,tmp);

64:デフォルトの名無しさん
08/08/07 14:52:45
実際にiniファイル直接開いて中見てみりゃいいじゃん。
VistaでProgram Files の中で実行してる、とかじゃないだろうな?

あまりiniファイルお勧めしないけどな。

65:デフォルトの名無しさん
08/08/07 16:00:37
なんかいろいろいじくってたらよく分からないけど上書き保存できるようになりました。
アドバイスしてくれた皆さんありがとうございました。
イニファイルのなかってメモ帳みたいですね。
いろいろじくってたせいでいろんな値が入ってました。

66:デフォルトの名無しさん
08/08/07 16:01:26
ていうかメモ帳って書いてありました。
すいません。

67:デフォルトの名無しさん
08/08/07 16:53:48
コンボボックスの使い方で
コンボボックスの選択位置を読み取るには、
   int n=comboBox1->SelectedIndex;
を用いる。一番上が選ばれている場合は、n=0になる。
って書いてあったのでそのままコピペしたら
comboBox1定義されていない識別子です
SelectedIndex左側がクラス、構造体、共用体へのポインタではありません。
ってエラーが出てきたんですけどどうしたらいいんですか?



68:デフォルトの名無しさん
08/08/07 17:06:19
>>67
環境は?
FormならComboBox貼り付けたらデフォルトでそういった名前になってると思うが。
MFCなら右クリックで変数の追加、Win32APIならもうちょっと別な方法になる。

69:デフォルトの名無しさん
08/08/07 17:11:16
レスありがとうございます。
VC++6.0のMFCで作ってます。


70:デフォルトの名無しさん
08/08/07 17:20:06
ググったけど、これか。
URLリンク(homepage3.nifty.com)
ここでの解説はフォームアプリだからVC++6.0じゃ参考にならないよ。
まあMFCなら、変数の追加でControlで好きな名前で追加して、
その名前.GetCurSel() になるかな。

71:デフォルトの名無しさん
08/08/07 17:24:15
保存ボタンと読み込みボタンとコンボボックスとエディットボックスを使って、
コンボボックスはドロップダウンリスト形式にして、
リストが1.2.3.の三つを作ってドロップダウンリストから1を選んでから
保存ボタンを押すと1にエディットボックスのデータが保存されて、
2を選んでから保存ボタンを押すと2番に保存される、
読み込みボタンの方も同様に1を選んで読み込みを押すと1のデータが読み込まれる、
といったプログラムを作りたいんです。
それでコンボボックスをダイアログに貼り付けてOnSelchangeCombo1()
という%

72:デフォルトの名無しさん
08/08/07 17:25:09
保存ボタンと読み込みボタンとコンボボックスとエディットボックスを使って、
コンボボックスはドロップダウンリスト形式にして、
リストが1.2.3.の三つを作ってドロップダウンリストから1を選んでから
保存ボタンを押すと1にエディットボックスのデータが保存されて、
2を選んでから保存ボタンを押すと2番に保存される、
読み込みボタンの方も同様に1を選んで読み込みを押すと1のデータが読み込まれる、
といったプログラムを作りたいんです。
それでコンボボックスをダイアログに貼り付けてOnSelchangeCombo1()
という関数を追加したんですがここからどうしたらいいのか分からなくて困ってます。
初心者でよくわからないので教えてもらえたらありがたいのですが。
保存ボタンと読み込みボタンはなんとか作りました。
ひとつしかデータセーブ出来ませんけど。

73:デフォルトの名無しさん
08/08/07 17:28:51
>70さん
レスありがとうございます、試してみます。


74:デフォルトの名無しさん
08/08/07 17:31:59
VC++6.0久しぶりに触ってみたけど、
変数の追加の部分は、右クリックでClassWizard...選んでメンバ変数から
該当のコントロール選んで変数の追加でカテゴリをコントロールにする、だな。

75:デフォルトの名無しさん
08/08/07 17:32:29
70さんに教えてもらった方法を試したら値がとれました!
ありがとうございます。

76:デフォルトの名無しさん
08/08/07 17:58:35
値は取れたのでこの値を使って
if(m_combo1.GetCurSel==0){0の場所に保存する}
という感じだと思うのですが、
すいません実は61からの質問全部僕のなんですけど、保存する場所を変えるにはszSection
を変えれば良いんですかね。
コンボボックスの関数追加しなくてもよかったのかな?
どうもわかりません、教えてもらえないでしょうか?




77:デフォルトの名無しさん
08/08/07 18:15:19
iniファイルは、

[section1]
key1=param1

という形式。
同じ項目ならkey1を増やせばいいし、カテゴリ増やすならsectionかえればいい。}

78:デフォルトの名無しさん
08/08/07 18:47:15
ありがとうございます。
がんばってみます。

79:デフォルトの名無しさん
08/08/07 20:14:50
おかげさまで保存ボタンの方は3つの場所に分けて保存する事が出来たっぽいんですが、
読み込みボタンで1番以外を選んで読み込むとフフフフフフフフとか出てきて
上手く読み込めません。
これはどういった現象なんでしょうか?

80:デフォルトの名無しさん
08/08/07 20:40:06
>>79
debugビルドだよね?きっと「フ」じゃなくて「フ」だよね?
なら、プログラムが値を入れていない所を読み出したってこと。
URLリンク(www.google.co.jp)

81:デフォルトの名無しさん
08/08/07 20:51:42
そうですフフフフフフフフフフフフです、
でもフフフフフフフフフが一瞬表示されてから、規定の範囲内の値を入れてください、
って警告が出た後、ちゃんと2番目のデータが表示されるんです。
なんで一番目だけうまくいくのか不思議です。


82:デフォルトの名無しさん
08/08/07 20:51:55
charは1バイトだから8ビットときいたのですが
0~255までの数値を入れることができるということですよね?
charに数値を入れるにはどうしたらいいですか?


83:デフォルトの名無しさん
08/08/07 21:07:25
そのまま普通に数値を代入すれば良い

84:デフォルトの名無しさん
08/08/08 04:56:56
お世話になります。

C++で質問です。
Visual c++ 2008で勉強中です。

ヘッダーファイルの使い方をお聞きします。
ある本のCDについていたコードなのですが、

hoge.h
hoge.cpp

というファイルがありました。


ヘッダーファイルにはクラスの定義しか書いていなくて、
cppファイルにそのクラスで利用する関数の中身が書かれていました。
自分はこのままでは、ヘッダーファイルをincludeしても利用できないと考えています。
でも、上記のヘッダーファイルをincludeしたファイルを動かすことができます。

何故上のようにかけるのでしょうか?
また、ヘッダーファイルにはクラス定義しか書かなくて、
そのメンバ関数の実装はヘッダーと同名のcppファイルに記述するのが現場ではいいとされているのでしょうか?

「お前これ分かってないからここ調べろ」という意見もぜひお願いします。
誰かに聞くことができない状態なので、ものすごく助かります。

お願いします。

85:デフォルトの名無しさん
08/08/08 05:32:05
VISUALC++に限った話ではないのですが、これを勉強してて思ったのでちょっと質問させてください。

アプリ開発の際は、メモリをどう考えるのでしょうか?
たとえばPS1だとVRAMが少ないから格闘ゲームには不向きだ、セガサターンの方が向いてる、みたいな話を見たことがあるのですが
大規模な開発をする場合は、メモリはかなり重要な問題なのでしょうか?

今まではCでソートだとか入出力みたいな勉強しかしてこなかったので、進んでいくうちに疑問がわいてきました。
できればレスお願いします・・・

86:デフォルトの名無しさん
08/08/08 05:35:50
ヘッダファイルってのは要するにこんな関数
まあこの場合クラスだけど、どこかにはありますよと言う宣言だから

そのヘッダファイルをインクルードして実装している
ソースファイルがきちんとあれば

他では宣言だけ見て存在だけ知ってれば使える

あと現場では良いとかじゃなくて普通そうするもの

87:デフォルトの名無しさん
08/08/08 05:37:48
そんなのはメモリを相当喰うようなプログラムを作る時に考えれば良いんじゃない?

88:デフォルトの名無しさん
08/08/08 05:52:30
>>86
ヘッダーについて回答ありがとうございます。

なるほど。では、ヘッダーは1つで、実装してるcppが2つある、
ということもあるのでしょうか?
ヘッダーを利用するプログラムによって、そのcppを切り替えたりすることができそうな
気がしいるのですが、そんなことってありますか?

89:デフォルトの名無しさん
08/08/08 06:27:20
VC++で質問です。
開発する際、ソリューションエクスプローラの使い方がいまいち分かりません。
たとえば電卓をGUIで作るとき、どのようなプロジェクト構成になりますか?
■予想1
ソリューション電卓
 電卓プロジェクト
  ソースファイル  ○GUIソース、処理ソース
  ヘッダーファイル ○(必要なもの)
  リソースファイル ○(なし)

それとも、
■予想2
ソリューション電卓
 GUIプロジェクト
  ソースファイル  ○GUIソース
  ヘッダーファイル ○(必要なもの)
  リソースファイル ○(なし)
 処理プロジェクト
  ソースファイル  ○処理ソース
  ヘッダーファイル ○(必要なもの)
  リソースファイル ○(なし)

予想2のように、モジュールごとにプロジェクトを作成するのものなのでしょうか?

90:デフォルトの名無しさん
08/08/08 09:49:02
>>84
cpp はコンパイルして obj になるだろ。
関数そのものは、このobjとリンクして使えるようになるんだよ。
その関数の使い方が書いてあるのがヘッダだし、
1つ以上のobjをまとめたものが lib ファイル。

91:デフォルトの名無しさん
08/08/08 09:51:14
>>85
そのソートだって、膨大なデータをソートするとなると
オンメモリでできるのかどうかが重要になるでしょう。
ゲームで問題になるのは、リアルタイムで動作させなくちゃならないから、
できる限りオンメモリにしておく必要があるからな。

92:デフォルトの名無しさん
08/08/08 12:44:52
>>89
モジュールごとにプロジェクトを作成する。
けど、上記のモジュールってできあがるファイルのことよ。exeとかlibとかdllとか。
もんの凄い強力な電卓でなければ、普通はGUIと計算を別モジュールに分けないでしょうね。
「分けるのが目的なんだ」ってことならば、分けるのは可能です。

93:デフォルトの名無しさん
08/08/08 15:30:49
>>90
>>92
回答ありがとうございます。

どうやらC++でのプログラムの作り方自体自分はよくわかっていないようです。
何か勉強になるサイトや本、見るとためになるようなものがあれば教えていただけませんか?



94:デフォルトの名無しさん
08/08/08 15:43:14
習うより慣れろ

95:デフォルトの名無しさん
08/08/08 19:06:15
>>83
ありがとうございました
charに数値を入れることができました

ひょっとしてcharを配列にすると8Bit以上の数値を入れることもできますか?

96:デフォルトの名無しさん
08/08/08 19:28:03
なぜ試さないの?

97:デフォルトの名無しさん
08/08/09 00:04:46
>>85
分野にもよる。
家庭用ゲーム機は全体的にメモリが(同時期のPCと比べ)少ない場合が多いというだけ。
だからその分上手にやりくりしないといけない。
PCやサーバだとあまりそういう話は聞かない。無駄遣いは忌避されるべきだがそこまでシビアにはならない。

98:デフォルトの名無しさん
08/08/09 00:13:04
使えるメモリは有効に使うべき。ってのがVista

99:デフォルトの名無しさん
08/08/09 13:50:06
>>85
PSとサターンで同じゲームを作ったときは
どの文字を使うかってのも気を使ってた
同じシーンで使う文字種を減らしてフォント絵のメモリ節約とか

100:デフォルトの名無しさん
08/08/09 13:53:12
音源仕様の差は面倒だったなぁ

101:デフォルトの名無しさん
08/08/09 16:46:11
ここにはゲーム製作者もいるのかお

102:デフォルトの名無しさん
08/08/09 16:50:39
ゲームってどうやって作ってたん?
キャラ動かしたりするのは元データがあって、それをプログラマーが動かしてたの?
プログラマーによって綺麗な画面になったり汚い画面になるとか聞いたことがあるが。。。。。。わからん

103:デフォルトの名無しさん
08/08/09 16:53:19
ゲームとか今の話なのか昔の話なのかでかなり変わりそうだが

104:デフォルトの名無しさん
08/08/09 16:55:51
昔のゲームのハードを調べるのがいい

105:デフォルトの名無しさん
08/08/09 18:38:36
今の3DゲームはMAYAとかでモデリングした後に、そのデータを使ってフィールド上で動かすの?
それだとリアルタイムレンダリング?だからプログラマーの腕が問われるのかね。スレチだな

106:デフォルトの名無しさん
08/08/10 16:47:15
C++で自分だけのライブラリーのようなものを作るにはどうやって
作っていったらいいのですか?

ソリューションライブラリーのようなものを作って、
プロジェクトごとにヘッダーを1つずつ作ればいいのでしょうか?


107:デフォルトの名無しさん
08/08/10 19:04:48
106よろしく!

108:デフォルトの名無しさん
08/08/10 20:18:28
Visual C++ 2008 Express Editionで、本に書いてある通りに
ファイル → 新規作成 → プロジェクト → Win32プロジェクト → アプリケーションの設定画面で「空のプロジェクト」にチェック

プロジェクト → 新しい項目の追加 → C++ファイル(cpp)
として、ソースファイルに
#include <windows.h>

int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR 1pCmdLine,
int nCmdShow
) {
return 0;
}
 というプログラムを書いて「ソリューションのビルド」をしたところ、
1>------ ビルド開始: プロジェクト: test, 構成: Debug Win32 ------
1>コンパイルしています...
1>test.c
1>c:\source\test\test.c(6) : error C2059: 構文エラー : 'サフィックスが無効です。'
1>c:\source\test\test.c(6) : error C2143: 構文エラー : ')' が '定数' の前にありません。
1>c:\source\test\test.c(6) : error C2143: 構文エラー : '{' が '定数' の前にありません。
1>c:\source\test\test.c(6) : error C2059: 構文エラー : '<不明>'
1>c:\source\test\test.c(8) : error C2059: 構文エラー : ')'
1>ビルドログは "■■■■" に保存されました。
1>test - エラー 5、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
となって失敗してしまいました。
全て本に書いてある通りに行ったつもりなのですが、何がいけなかったのでしょうか。
使用OSはWindows Vistaなのですが・・・


109:デフォルトの名無しさん
08/08/10 20:29:08
1pCmdLineがいけない

110:デフォルトの名無しさん
08/08/10 20:43:51
変数名の先頭って数字は使えなかったんじゃなかったっけ?

111:デフォルトの名無しさん
08/08/10 21:10:24
>>109 >>110
言われた場所を変えてみたらできました!
ありがとうございました!

112:デフォルトの名無しさん
08/08/10 22:25:33
106も答えてください

113:デフォルトの名無しさん
08/08/10 22:39:30
自分がよそのlib使うときを考えたらわかるべ

114:デフォルトの名無しさん
08/08/10 23:52:58
>>106
あまりしつこいと教えてくれないよ。
プログラマとはそんな性分の奴が多いw

115:デフォルトの名無しさん
08/08/11 00:29:37
>>106
ここで聞いても自分で使う暮らすライブラリこりこり作ってる殊勝な人間は少ないから無駄

116:デフォルトの名無しさん
08/08/11 05:49:57
そうなのか。

117:デフォルトの名無しさん
08/08/11 06:03:37
そうなのだ。

118:デフォルトの名無しさん
08/08/11 06:18:01
int型整数の下三桁を抜き出したいんですが、
どうやったら効率的ですか?

a=123456
とあったら、
b=456
って感じに抜き出したいんですが。

私が考えたのでは、
b=(a%10);
a/=10;
b+=(a%10)*10;
a/=10;
b+=(a%10)*100;
a/=10;
というのなんですが、もっとスマートなやり方ってありますか?


119:デフォルトの名無しさん
08/08/11 07:54:38
y = x % 1000;
じゃいかんのか?

120:デフォルトの名無しさん
08/08/11 09:35:47
% 10がわかってて % 1000 が出てこないとはw

121:デフォルトの名無しさん
08/08/11 13:24:21
質問です。
以下のページに記載されている内容と同じ問題が発生します。
URLリンク(m--takahashi.com)
TrackPopupMenu()の前後でSetForegroundWindow()とPostMessage(WM_NULL)を実行しましたが、
効果がありません。どうすればこの問題を回避することができますか?

122:デフォルトの名無しさん
08/08/11 14:02:21
前後ってなんだよ。
TrackPopupMenuの前でSetForegroundWindowしてる?
どうしてもおかしいままなら、その部分のコード出してごらん。

123:121
08/08/11 15:17:09
>>122 レスありがとうございます。
以下がフックプロシージャです。
LRESULT CALLBACK MouseProc(int p_iCode,WPARAM p_wParam,LPARAM p_lParam)
{
COPYDATASTRUCT stCopyDataStruct;
MOUSEHOOKSTRUCT *pstMouseHookStruct = (MOUSEHOOKSTRUCT *)p_lParam;
if (p_iCode == HC_ACTION
&& p_wParam == WM_NCRBUTTONUP
&& pstMouseHookStruct->wHitTestCode == HTMAXBUTTON) {
stCopyDataStruct.dwData = 0;
stCopyDataStruct.cbData = sizeof(MOUSEHOOKSTRUCT);
stCopyDataStruct.lpData = pstMouseHookStruct;
SendMessage(g_hWnd,WM_COPYDATA,0,(LPARAM)&stCopyDataStruct);
return TRUE;
}
return CallNextHookEx(g_hHook,p_iCode,p_wParam,p_lParam);
}

124:121
08/08/11 15:17:43
以下が本体のウィンドウプロシージャです。
LRESULT CALLBACK WndProc(HWND p_hWnd,UINT p_uiMsg,WPARAM p_wParam,LPARAM p_lParam)
{
COPYDATASTRUCT *pstCopyDataStruct = (COPYDATASTRUCT *)p_lParam;
HMENU hSubMenu; // ポップアップメニューのハンドル
MOUSEHOOKSTRUCT *pstMouseHookStruct = pstCopyDataStruct->lpData;
switch (p_uiMsg) {
case WM_COPYDATA:
hSubMenu = CreatePopupMenu();
AppendMenu(hSubMenu,MF_STRING,0,TEXT("MenuItem"));
SetForegroundWindow(pstMouseHookStruct->hwnd);
TrackPopupMenu(
hSubMenu,TPM_NONOTIFY,
pstMouseHookStruct->pt.x,pstMouseHookStruct->pt.y,
0,p_hWnd,NULL);
PostMessage(pstMouseHookStruct->hwnd,WM_NULL,0,0);
DestroyMenu(hSubMenu);
break;
default:
return DefWindowProc(p_hWnd,p_uiMsg,p_wParam,p_lParam);
break;
}
return 0;
}

125:デフォルトの名無しさん
08/08/11 15:27:15
MSDNライブラリでprintf関数の説明を読んでみると、以下の記述があります。

----------------------------------------------------
ライブラリ

 LIBC.LIB    シングルスレッド スタティック ライブラリ、リテール版
 LIBCMT.LIB  マルチスレッド スタティック ライブラリ、リテール版
 MSVCRT.LIB  MSVCRT.DLL 用インポート ライブラリ、リテール版
----------------------------------------------------

このことから、printfにはスタティックライブラリの版とDLLの版がある
ということが分かります。

そこで質問なのですが、僕が作った"Hello, World"プログラムは
printf関数をスタティックに.exeにリンクしているんでしょうか?

それとも.exeにはprintf関数は含まれていなくて、実行時にprintf関数
を含むDLLがロードされてそれを呼び出しているんでしょうか?

どうやったら確かめることができるのかを含めて教えてください。


126:デフォルトの名無しさん
08/08/11 15:50:02
>>125
プロジェクトのプロパティの「C/C++」の「コード生成」の「ランタイム ライブラリ」で指定する。

127:デフォルトの名無しさん
08/08/11 18:53:08
keybd_event使って特定キーが押されてる間処理を繰り返したいのですが
voidだからwhileの条件式に入れれませんでした。
どうすればいいのでしょうか

128:125
08/08/11 19:25:58
>>126
なるほど。オプションで指定するんですね。ありがとうございました。

129:デフォルトの名無しさん
08/08/12 14:19:03
#include <iostream>
#include <vector>
#include <windows.h>
#include <psapi.h>
#pragma comment(lib, "psapi.lib")
int WorkSize(void){
PROCESS_MEMORY_COUNTERS info;
GetProcessMemoryInfo(GetCurrentProcess(),&info,sizeof info);
return info.WorkingSetSize;
}
using namespace std;
int pm=WorkSize();
void MyFunc(){
vector<string> vec;
for(int i = 0; i < 1000000; i++)
vec.push_back("abcdefghijklmnopqrstuvwxyz");
cout<<WorkSize()-pm<<endl;
}
int main(){
cout<<WorkSize()-pm<<endl;
MyFunc();
cout<<WorkSize()-pm<<endl;
system("pause");
return 0;
}

VC++2008でvector+stringを使ったらメモリ解放しきれてないみたいなのですが、
これはちゃんと解放しきる事は出来ないのでしょうか。

130:デフォルトの名無しさん
08/08/12 14:21:54
すいませんVC++6.0のMFCでCSVファイルを作るにはどうすればいいですか?

131:デフォルトの名無しさん
08/08/12 14:22:53
>>129
std::vectorは一度確保したメモリはデストラクタを除き
自動的には解放されない。

どうしてもやりたいならswap技法を。

vec.swap(std::vector<std::string> >());

132:デフォルトの名無しさん
08/08/12 14:24:48
vec.swap(std::vector<std::string>());

もしくは

std::vector<std::string>().swap(vec);

だった

133:デフォルトの名無しさん
08/08/12 15:37:34
>>130
CSVといっても、所詮はテキストデータ
"123,456,789"
とういテキストデータで、ファイル化してみれば分かる
拡張子csvだと尚良し

134:デフォルトの名無しさん
08/08/12 15:48:32
今乗り換えというかなれておかないと大変だと思うよ。
俺は趣味でやってるからいいんだけど。

135:デフォルトの名無しさん
08/08/12 15:53:12
>>132
それをMyFuncの最後に書いてみたのですが、結果は変わらず…。
使い方が間違っているのでしょうか。

↓メモリ表示結果

0
68435968
7213056

136:デフォルトの名無しさん
08/08/12 16:11:06
freeしてもOSにメモリが返されるわけではないし、
ワーキングセットなんてプログラム上の確保した量とはあまり関係がないし。

137:デフォルトの名無しさん
08/08/12 17:25:11
>>132
前者はダメだ。
非constな参照引数に一時オブジェクトは渡せない

138:デフォルトの名無しさん
08/08/12 17:51:38
質問させてください。
WINAPIでは、戻り値にTRUEかFALSEを多用している様に思うのですが、これは0か0以外の数値を
表しているのでしょうか?

たとえばマウスの左ボタンをクリックして、クリックされたら数字の1、されなかったら0を返す、という事?
いまいちイメージが掴めないのですが、0以外の数字が返された場合はその関数を正常処理する、という感じですか?


139:デフォルトの名無しさん
08/08/12 18:11:12
MBCSの場合charに1バイトと2バイトの文字を混ぜた文字列を設定したとき
char[x]が1バイト文字か2バイト文字の前か後ろかを見分ける方法はありますか?



140:デフォルトの名無しさん
08/08/12 18:27:31
>>138
あまり気にせず、結果をif文その他の条件判断で使える、位に思っていればいい。

141:デフォルトの名無しさん
08/08/12 18:29:38
>>140
そうなんですか
なんかしっくりこなくて戸惑ってました。ありがとうございます

142:デフォルトの名無しさん
08/08/12 18:30:04
>>139
MBCSの文字コードによるが、SJISだと前にさかのぼらないと判断できない。
UTF-8だと、1バイト文字か、2バイト以上の1バイト目かそれ以降かの判断はつく。

143:デフォルトの名無しさん
08/08/12 18:39:10
今、猫でもわかる~を見て勉強しているのですが

// timer.h
#define IDM_END 1000
#define IDM_OPTION 2000
#define IDC_STATIC 3000

②// Dialog
OPTDLG DIALOG DISCARDABLE 0, 0, 121, 69
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "オプション"
FONT 9, "MS Pゴシック"
BEGIN
DEFPUSHBUTTON "OK",IDOK,7,38,50,14
PUSHBUTTON "キャンセル",IDCANCEL,61,37,50,14
LTEXT "オブションです。",IDC_STATIC,36,19,48,8
END

の、1000や0, 0, 121, 69といった数字の部分がわかりません・・・。
①と②では数字の意味が違うと思うのですが、①の数字は適当に決めていいのでしょうか?
②は何か決まりごとが?

144:デフォルトの名無しさん
08/08/12 18:39:52
>>142
つまり、コードによるけどふつうの1バイト文字と同じものが2バイトの前か後ろに
出る可能性はあるということですね

2バイト文字に含まれない文字ってないですかね~
区切り文字として都合のいい文字を探してます

145:デフォルトの名無しさん
08/08/12 19:52:52
>>136
なるほどです、ありがとうございました。

146:デフォルトの名無しさん
08/08/12 21:16:15
>>144
所謂ShiftJISの2バイト目には、(単独なら)アルファベットと同じ文字コードも来れば1バイト目と同じコードも来る。
従って、前に遡って判定するか素直に頭から判定するか、対策が必要。
尤も、0x40未満のコードはShiftJISに使われないので'/'でも';'でも区切りに使えなくはないと思う。

147:デフォルトの名無しさん
08/08/12 21:29:37
>>143
1の数字は、同じカテゴリでかぶらないようになってれば適当で良い。

2は、ダイヤログの大きさ。後ろ二つが幅と高さ。適当に変えてみるとわかるよ。

148:デフォルトの名無しさん
08/08/12 22:31:47
>144
タブコードはダメ?

149:デフォルトの名無しさん
08/08/13 02:03:57
>>146
0x40以下のコードを調べてみようと思います
ありがとうございました


>>148
タブとか改行コードとか使うのが無難ですかねやっぱり

150:デフォルトの名無しさん
08/08/13 18:12:38
Visual C++ 2005を勉強中なのですが、TRACEマクロ(ATLTRACEマクロ)で
ユニコード文字列(*wchar)を出力しようとして、フォーマット文字列に"%S"と
指定したら、実行時にライブラリ内のASSERTで引っかかって止まってしまいます。

TRACE出力にユニコード(漢字)文字列を出力するには、どうすれば良いのでしょうか ?

151:デフォルトの名無しさん
08/08/13 18:28:49
>>147
助かります、どうもありがとうございました。早速やってみます。

152:デフォルトの名無しさん
08/08/14 02:48:16
USBから受信したデータをキー入力に変えたいのですが
パソコンのキーボードでキーを入力したときに送られるメッセージってなんですか?
ソフトでこのメッセージを送ればキーボートと同じようなものも作れますか?


153:デフォルトの名無しさん
08/08/14 02:58:31
USBから受信したでーた?

キー入力フックして入力内容をだますってことか?
それともソフトがキーが入力されたように振舞うってことか?
それなら最悪DDKとかめんどくさいのに手を出さないとだめかもな
どっちにしても何が言いたいのかよくわからん
エスパーな人よろしく

154:デフォルトの名無しさん
08/08/14 09:33:08
別に受信するほうはすでにあるんだろ。
キーを送るのはウィンドウに限ればメッセージ送るだけでいいかもしれない。

155:デフォルトの名無しさん
08/08/14 11:44:08
オートマウスでも作る気か?
MMORPGとかで不正行為する用か、三国人!

156:デフォルトの名無しさん
08/08/14 16:24:45
初心者の妄想質問です。
例えば、1つのアプリケーションなのですが扱う機能が違う為に2つのウィンドウを開いて同時に使う、という場合には
どのようにしたらいいのでしょうか?

同じプロジェクト内ではなく、別々のプロジェクトでソースを書いていかなくてはならないのでしょうか?
またその際は、ハンドルの名前も別々にしなくてはならないのでしょうか?

157:デフォルトの名無しさん
08/08/14 17:04:09
>>156
「一つのアプリケーション」が「一つの実行モジュール」を指すなら、逆に寧ろプロジェクトは一つにしないと(一般的には)ダメ。
一つのソースで複数のウィンドウの面倒を見るか、別のソースに分けるかは、使用するライブラリ次第。
# まぁ、普通分けるだろうけれど。
つーか、扱う機能が違うのに「一つのアプリケーション」にする理由がないなら分けた方が使い易くないか?

158:デフォルトの名無しさん
08/08/14 17:28:32
>>152
ゲームパッドの入力をキー入力に変えたいのか?
だったら無理せずJoyToKey使え。

159:デフォルトの名無しさん
08/08/14 20:53:15
>>153
PICとPCをUSBで接続していて、親指先が+で他4本が-のスイッチで組み合わせによるPCへのキー入力をしたいのですが、
PICまではできてるんですが、PCのキーボードでキーを押した時と同じようにPC上に送出する関数というかメッセージというか流れが知りたいのです。

160:デフォルトの名無しさん
08/08/14 21:00:26
>>154
その辺の流れがちょっとわからないのですが、キーダウンメッセージはアクティブなウィンドウに対して受取分岐がソフト上にある場合に機能するもの
なんですよね。キーが押されたメッセージ事態を作り出すにはどうすればいいんでしょうか?

161:デフォルトの名無しさん
08/08/14 23:47:50
Visual C++ 2008 Express Editionを落としてインスコしてて、諸事情でアンスコしてインスコし直そうと思ったのですが
どれをアンスコすればいいのかわかりません
C++をアンスコすれば全てアンスコされるのではなく、C++と一緒に複数同時にインスコされてました
それぞれ個別にアンスコしないといけないようです
C++ アンスコでぐぐっても的したページがヒットしません
どれを消すべきかわかる方いましたらお願いします

162:デフォルトの名無しさん
08/08/14 23:48:28
アクティブじゃなくてフォーカスのあるウインドウ

163:デフォルトの名無しさん
08/08/14 23:49:44
アンダースコートがどうしたって?

164:デフォルトの名無しさん
08/08/15 01:35:20
アポリケーションの追加と削除で、VCEEとインストロール日時が同じで、見覚えの無いやつを全部消しちゃえば?

165:デフォルトの名無しさん
08/08/15 01:56:31
SQL Server CompactとWindows SDKとあと何があったっけ?

166:デフォルトの名無しさん
08/08/15 07:03:44
>>161
Microsoft .NET Framework 3.5
Microsoft .NET Framework 3.5 Language Pack - 日本語
Microsoft Visual C++ 2008 Express Edition - 日本語
Microsoft Windows SDK for Visual Studio 2008 Express Tools for .NET Frameword
Microsoft Windows SDK for Visual Studio 2008 Express Tools for Win32
Microsoft Windows SDK for Visual Studio 2008 Headers and Libraies
MSDN Library for Microsoft Visual Studio 2008 Express Edition
Microsoft Silverlight


167:161
08/08/15 09:12:27
(TдT)アリガトウございました無事インスコ出来ました

168:121
08/08/15 16:16:15
コードに問題があれば指摘してください。
以下のページに記載されている方法を試しましたが、効果がありません。
URLリンク(homepage3.nifty.com)
本体のウィンドウでは、このような現象は起きません。
開発環境はVC++ 2008 Express Editionです。WindowsXP SP3で動作確認しています。

169:デフォルトの名無しさん
08/08/16 13:39:15
これまではC言語の学習用にEmacsを使用していたのですが、今回VisualStudio2008を購入しました。
そこで質問なのですが、VisualStudio2008にはEmacsのようにtabキーを押したときに必要なだけ字下げする機能がありますか?


170:デフォルトの名無しさん
08/08/16 20:18:08
複数行選択時の、TAB、ShiftTABの動作が近い?

171:デフォルトの名無しさん
08/08/16 20:22:56
>>169
とりあえずキーバインド設定は変更したのか?

172:デフォルトの名無しさん
08/08/16 20:48:58
ちょっと質問があります。

std::cout << std::toupper('a') << '\n';
std::cout << toupper('a') << '\n';

この二つは何か違うのでしょうか?
上のやつは #include <cctype> しないといけないようだが・・・

173:169
08/08/16 21:20:11
キーバインド Visual Studioで検索したらやり方がわかりました。
どうもありがとうございました。

174:169
08/08/16 22:53:11
インデントはEmacsのようにできるのですが、
データの保存など他のキーの設定もEmacsのものになってしまいました。
インデントだけをEmacsのものにする方法はありますか?

175:デフォルトの名無しさん
08/08/17 02:19:20
そうきたか、
コマンド検索のとこに「インデント」っていれて
適当なコマンドと設定を入れ替えろ

あと、プログラマ志望なら
今のうちにEmacs操作覚えた方が良いぞ、楽だから
vi派って訳じゃないんだろ

176:デフォルトの名無しさん
08/08/17 02:51:42
( ´д)ヒソ(´д`)ヒソ(д` )今時Emacsだって・・・

177:デフォルトの名無しさん
08/08/17 04:41:46
最近の流行はなんなんだ?

178:デフォルトの名無しさん
08/08/17 06:58:46
スレ違いかもしれませんが、教えてください。
Microsoft Visual C++ 2008 再頒布可能パッケージ (x86)をダウンロードしてきて
インストールしたのですが、インストールディレクトリが”一番空き容量が多いドライブの直下”に
インストールされてしまいます。これは仕様なんでしょうか?

179:デフォルトの名無しさん
08/08/17 10:39:00
テンポラリ展開じゃなくて?

180:デフォルトの名無しさん
08/08/17 11:17:04
>>179
一時ファイルのようで、展開されたファイルは削除しても問題ないっぽいです。
お騒がせしました

181:デフォルトの名無しさん
08/08/17 13:53:54
Visual C++ 2008 Express Editionで、
ファイル → 新規作成 → プロジェクト → Win32 コンソールアプリケーション

プロジェクト → 新しい項目の追加 → C++ファイル

として、
stdio.hをインクルードして文字列を表示させる簡単なコードを書いて実行したのですが、
コマンドプロントみたいなウィンドウが一瞬開いてすぐに閉じてしまったため
文字列をよく確認出来ませんでした。

どうしたら開いたままにしておけるのでしょうか?


182:デフォルトの名無しさん
08/08/17 14:31:25
あるあるw
どうするんだろ

出力ウィンドウにも何も出ない?

183:デフォルトの名無しさん
08/08/17 15:16:03
「○○を読み込みました」・「シンボルが読み込まれました。」
っていうのが4行と、
あともう1行、
「プログラム○○はコード0(0×0)で終了しました。」
っていうのが出ます。
コード0っていうのはreturn 0にしたからだと思うんですが…。

184:デフォルトの名無しさん
08/08/17 15:19:07
邪気眼がどーのこーの

185:デフォルトの名無しさん
08/08/17 15:35:48
>>181

同じく初心者で、昨日から始めたんですが
returnの前に、文字を入力する関数を入れることで対処してます。
Cだと
scanf("%d",n);
とかなんですが。

186:185
08/08/17 15:38:07
ごめん。
今見たら
scanf("%d",&n);
でした。もちろん、先にnは宣言するものとして。
でもC++だと入力するための関数違うと読んだ気も。

187:デフォルトの名無しさん
08/08/17 15:40:48
Ctrl+F5でいいじゃね?

188:デフォルトの名無しさん
08/08/17 15:45:39
そうか、、、
とりあえず、
・確認したいだけなんだったら、stderrでメッセージ出せる
・あと処理の最後に無限ループ入れる

189:デフォルトの名無しさん
08/08/17 15:46:25
>>187
ガチで知らなかったんだがw


190:デフォルトの名無しさん
08/08/17 15:50:17
全ての質問が初心者ではなく初心者を装った釣師によるものだと仮定して
いかにうまくボケるかを競いあう
ここはそういうスレの一つだと思い込んでいる

191:デフォルトの名無しさん
08/08/17 16:01:39
>>190
ガチで知らなかったんだがw

192:181
08/08/17 16:30:01
>>185,>>187,>>188
出来ました!ありがとうございます!

193:デフォルトの名無しさん
08/08/17 16:42:45
dialogBoxにPostMessageしても届かないんだが、ちなみに
PostMessage(hDlg,0x500,123,456);
なぜだ?


194:デフォルトの名無しさん
08/08/17 16:52:28
お前ぜんぶ聞く気だろ
調子乗んな

195:デフォルトの名無しさん
08/08/17 20:53:27
アふぉはだまっとれ

196:デフォルトの名無しさん
08/08/18 10:52:14
>>185
getchar()でいいじゃん。わざわざ変数を用意する必要があるscanf()を使うのはナンセンスだ。

>>188
無限ループってあんた、エコじゃないな。

>>181
cmd動かしておいて、コマンドラインから動かすって手もあるよ。

197:デフォルトの名無しさん
08/08/18 10:58:29
昔から、return 0; の部分にブレークポイント置いている。
まあデバッグ必要ないときはCtrl-F5だが。

198:デフォルトの名無しさん
08/08/18 17:12:40
_findfirst("tes*.tx", &searchData) でファイルを検索した場合には
test.tx は見つかり test.txt は見つかりません。
しかし、_findfirst("tes*.txt", &searchData) で検索した場合には
test.txt も test.txtx も見つかります。
Q1. ドキュメントには書いてないのですが、この関数は拡張子を3文字しか見ないのでしょうか。
Q2. 4文字以上の拡張子に対応したファイル検索関数にはどんなものがありますか。

199:デフォルトの名無しさん
08/08/18 17:45:36
>>196
>getchar()でいいじゃん。

あらほんと。今度からこっち使います。
ありがとう。

200:デフォルトの名無しさん
08/08/18 18:39:01
VC使ってるならsystem("pause");でいいかと

201:デフォルトの名無しさん
08/08/18 20:15:09
変なクセつけちまうから
getchar()で良いでしょ

202:デフォルトの名無しさん
08/08/18 23:10:13
>198
たしかWindowsが隠して格納してる8.3なファイル名がひっかかるんだな。
Short Filenameってやつ。findfirstしてあらためて排除するとか。

203:デフォルトの名無しさん
08/08/19 02:02:38
メソッド名の頭にアンダーバー付いてるのとか
何か意味があるのですか?

204:デフォルトの名無しさん
08/08/19 02:21:43
URLリンク(msdn.microsoft.com)

205:デフォルトの名無しさん
08/08/19 12:28:52
ありがとう

206:デフォルトの名無しさん
08/08/20 05:52:40
Dドライブに今までなかったファイルがいくつか作成されてる。。。
Eula.1041.txt
globdata.ini
install.exe
install.ini
install.res.1041.dll
VC_RED.cab
VC_RED.MSI
vcredist.bmp
しかも作成日時が2007‎年‎11‎月‎20‎日。
二週間ほど前にPC買い替えたばかりだからこの作成日時はおかしいと思う。
調べてたらvisualC++が関係してるっぽい。
これなに?

207:デフォルトの名無しさん
08/08/20 08:00:59
インストーラが一時ファイルを展開したんだろ。

208:デフォルトの名無しさん
08/08/20 09:56:20
VS2008のインストールしたんだろうな

209:デフォルトの名無しさん
08/08/20 11:36:28
インストーラって怖いな

210:デフォルトの名無しさん
08/08/20 12:32:56
やっぱりか
2005は初めから入ってたんだけど、これって勝手に更新したりするものなの?
2008なんてインストールした覚えがないし、気味わるいからアンインストールしたいんだけど。。

211:デフォルトの名無しさん
08/08/20 12:47:25
別に一時ファイルだし勝手に消せば?
とりあえずそのファイル群は再配布可能なやつだと思うから
なんかのソフトが必要としたんじゃないの?
2008というのは2007/11/20だからそう思ったんだけど。

212:デフォルトの名無しさん
08/08/20 13:03:48
なんかのソフトが必要としてるんならアンインストールしないほうがいいね。。
一時ファイルだけ削除しておく。
>>207-210サンクス

213:デフォルトの名無しさん
08/08/20 13:03:53
> 2005は初めから入ってたんだけど、
VisualStudioプリインストールなんてどこで売ってるの??

> これって勝手に更新したりするものなの?
しない。

214:デフォルトの名無しさん
08/08/20 13:06:36
visualstudioというのははいってなかった。
visualC++2005Redistributableというのが初めからはいってた。

215:デフォルトの名無しさん
08/08/20 13:12:58
それはランタイム。VCどころかパソコン初心者レベルの話になってきたな・・・

216:デフォルトの名無しさん
08/08/20 19:01:21
そのランタイムというやつは消しても問題ない?

217:デフォルトの名無しさん
08/08/20 19:23:17
消すな。最初から入ってたということは他のソフトが使ってる。


218:デフォルトの名無しさん
08/08/20 20:57:37
Visual Studio2003でWindowsプログラムを作ってるんですが、
よくバグってメモリリークしたり、既に解放済みのアドレスを解放したりしてます。
そういうのって、PCに悪影響は無いんでしょうか?

219:デフォルトの名無しさん
08/08/20 21:11:17
悪影響はあります

220:デフォルトの名無しさん
08/08/20 21:28:19
>>217
最初から入ってたのは2005。
今日気づいたら2008がインストールされてた。
まぁ気にしないことにする。

221:デフォルトの名無しさん
08/08/20 21:35:34
>>220だけど自己解決。
BUFFALOの
URLリンク(buffalo.jp)
をインストールしたときに一緒についてきたみたい

222:デフォルトの名無しさん
08/08/20 22:02:47
>>220
気付いたらってどういう意味だおいw


223:デフォルトの名無しさん
08/08/20 23:41:28
>>222
もう放っとこうぜ

>>218
OSがうまくやってくれる、たぶん

224:デフォルトの名無しさん
08/08/21 13:36:39
ちょっとよろしいでしょうか?
MFCを勉強しようと思って
URLリンク(www.kumei.ne.jp)
のページのコードをコンパイルしてみて
うごいたのですが
プロジェクトの設定は「MFCを使用しない」に
なっていても問題ないみたいなのです。
MFCを使っているのに「MFCを使用しない」でよいのでしょうか?

225:デフォルトの名無しさん
08/08/21 13:48:07
>>224
そんな設定どこにあった?
基本的にMFCを使うかどうかはヘッダのincludeとリンクするライブラリで決まる。

226:デフォルトの名無しさん
08/08/21 14:05:37
>>225
なるほど。MFCを使用するかしないかを変更することによって
リンクするライブラリやコード生成のオプションが変わるみたいです。
なのでMFCを使用するかしないかの設定はあくまで
テンプレートということですね。
やっぱウィザードに頼っているとだめっすね。

227:デフォルトの名無しさん
08/08/21 14:16:49
やべー
なんかMFCマスターした気がする

228:デフォルトの名無しさん
08/08/21 14:19:55
おめでとう

229:デフォルトの名無しさん
08/08/21 14:26:17
ありがとう

230:デフォルトの名無しさん
08/08/21 14:38:50
オナニーマスター黒沢

231:デフォルトの名無しさん
08/08/21 14:57:30
URLリンク(fatalita.sakura.ne.jp)
にCStringはマルチスレッドに対応してないって書いてあるんだけど
マジで?
やべーじゃん。

232:デフォルトの名無しさん
08/08/21 15:43:32
>STLのstring型やwstring型は利便性においてはCString型にあるマルチバイトとユニコードの相互変換機能が無い分劣りますが、
>スレッドセーフである為classやtypedef内の変数に宣言するのに向いています。
>マルチスレッドで文字列を扱う際にはstring型かwstring型を使いましょう。

大嘘やん。標準にはスレッドの概念が無いし、スレッドセーフかどうかは実装依存になる。
CStringも使い方さえ間違わなきゃマルチスレッドで使える。
URLリンク(msdn.microsoft.com)

233:デフォルトの名無しさん
08/08/21 15:47:26
なーんだ

234:デフォルトの名無しさん
08/08/21 15:48:29
そして、VC++のstd::stringはどうかというと、こうなっている。
URLリンク(msdn.microsoft.com)
ちゃんとやらないとだめだという点でCStringと互角。

235:デフォルトの名無しさん
08/08/21 19:32:26
charに0~255の数値を設定することはできるようですが
char[]にintやfloat等の数値を設定したり取得するにはどうすればいいですか?

236:デフォルトの名無しさん
08/08/21 19:39:53
union使うかビットシフトかキャストで。
目的による。

237:デフォルトの名無しさん
08/08/21 20:50:24
型について学び直せ。

238:デフォルトの名無しさん
08/08/21 21:13:58
文字列として受け取って変換するとかの話?

239:デフォルトの名無しさん
08/08/21 23:59:01
>>236

int i=1234;
char ic[50];
ic = (char[50])i;

こうですか?
キャストできませんでした

240:デフォルトの名無しさん
08/08/22 00:28:12
一体何がしたいんだ

241:デフォルトの名無しさん
08/08/22 01:03:46
冗談きつすぎるだろこれは…

242:デフォルトの名無しさん
08/08/22 09:30:00
int型をchar型に入れなきゃならない理由を述べよ。

243:デフォルトの名無しさん
08/08/22 09:46:01
>>239
あえてそういう風にキャストしたいのなら、例えば・・・
*(int *)&ic[0] = i;
とか

244:デフォルトの名無しさん
08/08/22 10:00:39
&と[0]は説明のためにあえて入れただけでなくてもいける

245:デフォルトの名無しさん
08/08/22 10:10:37
memcpyでいいじゃん

246:デフォルトの名無しさん
08/08/22 18:43:37
>>242
ネットでデータ送るときに、パケットサイズを固定長にしたいときとか

247:デフォルトの名無しさん
08/08/22 18:54:16
>>243
ありがとうございます。 下記のようにしたところ

int i=256;
char ic[50];
*(int *)&ic[0] = i;

char[]の最初の4バイトにそれらしい値が入るようになりました
int=32bit char=8bit なので期待通りの結果が得られてる ような気がします
これはcharの参照をintのポインタのポインタにキャストしてるんでしょうか?
char[]に入れることはできましたがintに戻すにはどうすればいいかわからんので
もっと勉強が必要なようです ありがとうございました

248:デフォルトの名無しさん
08/08/24 09:34:37
C++を仕事で扱い始めて自宅でも勉強したいと思っています。

そこで質問なのですがVISUAL STADIOの学生用の安いものとそうでないものとの間で機能に差はありますか?

249:デフォルトの名無しさん
08/08/24 09:46:05
>>248
C++の勉強よりも、英語を始めとした一般常識を身につけることをこそ、お勧めします。

250:デフォルトの名無しさん
08/08/24 14:12:06
>>248
仕事してるんじゃないのか?
なで学生用なんだ
経費で落とせないのか?

251:デフォルトの名無しさん
08/08/24 14:29:10
EEならフリーで学生じゃなくても手に入れられます。

252:デフォルトの名無しさん
08/08/24 15:53:05
EE(笑)

253:デフォルトの名無しさん
08/08/24 16:01:34
っGCC/G++/MINGW

254:248
08/08/24 19:08:08
愚かなのでわかりません(´・ω・`)

あくまで個人で勉強したいので…

255:デフォルトの名無しさん
08/08/24 20:09:08
gcc makefileのあたりからじっくり、やったほうがいい腕になるよー

256:デフォルトの名無しさん
08/08/24 21:16:22
>>254
Visual Studio 2008のAcademicはProfessionalと同じ。
だから、同じのが欲しければProfessionalを買え。
違うのがほしければそれ以外を選べ。

257:デフォルトの名無しさん
08/08/24 22:54:44
Visual Studio Express Edition でググれ

と一言書いてやれば済むのに
おまえらほんとに卑屈だな


258:248
08/08/25 06:30:55
>>256
>>257
ありがとうございます。

259:デフォルトの名無しさん
08/08/25 12:12:39
質問させてください・・・
www.geocities.jp/ky_webid/win32c/010.html
このページの、
・最初にクリックした点から、次にクリックした点までを結ぶ直線を描くプログラムを作って下さい。
という例題は、どの様に書いたらいいのでしょうか?
if文を使うのかと思ったのですが、頭が悪くてswitch文とうまくあわせられません・・・
大変申し訳ありませんが、どなたか教えてもらえないでしょうか?もうだめぽ・・・><


260:デフォルトの名無しさん
08/08/25 12:17:57
>>259
そのページを読んでいるのだから直線を描画するプログラムは作れるよね?
そのページの前提としてクリックした座標を取得するプログラムも作れるよね?
後は組み合わせるだけだから頭の良し悪しは関係ない。

261:デフォルトの名無しさん
08/08/26 00:47:46
dllのインクルードというかリンクの仕方を教えてください

262:デフォルトの名無しさん
08/08/26 00:52:05
久々にVC++(2008)を使っているんだけど、
構造体のデータを簡単に表示とかいう拡張機能
できたりしていない? マネージドじゃない状態で。

PHPとかPerlとかやってるとさ、print_r(オブジェクト)で
オブジェクトのプロパティとか値がずらずら表示されて便利なんだよね。

標準のC++にないのはわかる。デバッグ用にそういう拡張
されてないかなぁと。

デバッガみれ? それしかないかな?

263:デフォルトの名無しさん
08/08/26 01:05:18
C++はイントロスペクティブでないから無理ぽ
ってSteve Yeggeが要ってた。

pdb漁ってBinaryHackするとかしか思い浮かばないヨ

264:デフォルトの名無しさん
08/08/26 01:09:16
プログラム中なら、hoge.(ココでCTRL+SPACE)
デヴァグ中なら、ローカル変数とかそういうの。

それ以外は知らん。

265:デフォルトの名無しさん
08/08/26 09:41:11
>>261
そのDLLに対応したインポートライブラリとリンクするか
実行時にAPIでロードして呼び出す。
インポートライブラリはDLL作成時にできるが、
DLLからLIB.EXE等を使って作ることもできる。

266:259
08/08/26 14:17:55
すみません・・・マジで悪いみたいですオレは理解力がなさ過ぎる・・・
上記みたいな感じでいけるかと思ったんですが、error C2196: case の値 '513' は既に使用されています。
と出て動きません・・・ボタンクリックの1回目と2回目を分けるには、どげんしたらいいんでしょうか・・・
プログラム分けてコピペさせていただきます・・・
>>260
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
HDC hDC;
PAINTSTRUCT ps;
int x[2] = {0,0};
int y[2] = {0,0};

switch(msg)
{
case WM_LBUTTONDOWN:
x[0] = LOWORD(lp);
y[0] = HIWORD(lp);
return 0;

case WM_LBUTTONDOWN:
x[1] = LOWORD(lp);
y[1] = HIWORD(lp);
return 0;


267:259
08/08/26 14:20:35

case WM_PAINT:
hDC = BeginPaint(hWnd, &ps);
MoveToEx(hDC, x[0],y[0],NULL);
LineTo(hDC, x[1], y[1]);
EndPaint(hWnd, &ps);
return 0;

case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, msg, wp, lp);
}
すんません下記みたいな感じ、でした・・

268:デフォルトの名無しさん
08/08/26 14:36:45
case WM_LBUTTONDOWN:が2個あるぞ。
どっちかはWM_LBUTTONUPの間違いだなんてことない?

269:デフォルトの名無しさん
08/08/26 14:37:46
>>266
case WM_LBUTTONDOWNが2個あったら、怒られるだろう
あと、それだとx[2], y[2]が、WndProc()抜けると消滅する

static int x[2] = {0,0}; 
static int y[2] = {0,0}; 
static int index = 0;

switch(msg) 
{ 
case WM_LBUTTONDOWN: 
x[index] = LOWORD(lp); 
y[index] = HIWORD(lp); 
index = index ? 0 : 1;
return 0; 


WM_PAINTで、ボタンクリックが2回目以降のみ描画する・・・
とか、詰めなきゃいけないところは、まだあるけど
とりあえず、こんな感じでどう?


270:デフォルトの名無しさん
08/08/26 14:41:00
それ、いつまでもindexが0だと思うんだ。

271:デフォルトの名無しさん
08/08/26 14:41:39
と、入れ替えるのか、失礼

272:デフォルトの名無しさん
08/08/27 16:34:08
Visual C++ 2008 EE で、C++ではなくC言語を使うにはどうすれば良いのでしょうか

273:デフォルトの名無しさん
08/08/27 16:38:15
ソースファイルの拡張子を.cppから.cに変える

274:デフォルトの名無しさん
08/08/27 17:22:17
Visual C++ 2008で、フォームを複数使用しているのですが、
変数の値を他のフォームに渡すことは可能ですか?

275:デフォルトの名無しさん
08/08/27 17:46:46
可能です。

276:デフォルトの名無しさん
08/08/27 23:03:05
CodeBlocksでこれのVC++のコンパイル諸々を使うためにVisual C++ 2008 EEを入れたんですが
コンパイル時にkernel32.libが開けないと言われます
Visual C++ 2008 EEを標準でインストールした場合のkernel32.libの場所はどこでしょうか

C:\Program Files\Microsoft Visual Studio 9.0\VC\lib 配下あたりだと思ったのですが
そのあたり検索しても見つかりません

277:デフォルトの名無しさん
08/08/27 23:15:11
C:\Program Files\Microsoft SDKs\Windows\v6.0A\lib

278:276
08/08/27 23:33:57
>>277
ありがとうございます

279:デフォルトの名無しさん
08/08/28 08:45:12
>>275
どうやって渡すのか教えて下さい

280:デフォルトの名無しさん
08/08/28 09:09:18
ケースバイケース

281:デフォルトの名無しさん
08/08/28 09:30:15
アンケートの質問を複数のフォームに書いて、最終的にその回答
(はい、いいえ、どちらでもない)を質問のフォームとは別の
フォームに出力したいと思っています。フォーム1の質問で集めた回答を
それぞれの変数に入れ、その値をフォームに2にも引き継ぎ、変数にはフォーム1と
フォーム2の値が入っているようにしたいのですが・・・教えていただけませんか?

282:デフォルトの名無しさん
08/08/28 09:43:53
受け渡しするpublicなメソッド書くとか、プロパティにして読み書きすればいいじゃん。
普通のことなのに、何がひっかかってるのかがわからん。

283:デフォルトの名無しさん
08/08/28 10:23:19
ご回答ありがとうございます。
プログラミングはC言語を2ヶ月ほどしか学んでいなく、
Visual C++ 2008 EEも使用して2日しか経過していない
ので分かりませんでした。publicやメソッドの意味を
調べようと思います。


284:デフォルトの名無しさん
08/08/28 11:14:08
まずC++/CLIを勉強しないとな。
つか.NET使うんならC#の方がいいぞ。

285:デフォルトの名無しさん
08/08/28 18:55:08
.netつかうならどう考えてもC#のほうが…
C++.net好んでつかってるやついるの?
いたら何がいいのか教えて欲しいくらい
C++のメリットドブにすててまで.netする意味がわからない

286:デフォルトの名無しさん
08/08/28 18:58:41
でもC++/CLIはマジで最強だよ

287:デフォルトの名無しさん
08/08/28 19:04:27
>>285
283のようなやつは時々現れるが、
単にC++→フォームアプリケーションでプロジェクト作っただけで、
好みではなく気付いていないだけだと思う。

288:デフォルトの名無しさん
08/08/28 19:42:19
C#はフリーの逆アセツールでソースが丸見えなのが嫌でC++使ってまふ

289:デフォルトの名無しさん
08/08/28 19:52:23
>>286
C++習熟してて
なおかつC#とかで.netつかってるなら
本当に最強かもしれんね

>>288
あとランタイム配布とかめんどくさいの考えると
本気で配布するソフトはあまりC#つかわないのよね
XNAのやる気のなさに絶望して近頃C++しかつかってない


290:デフォルトの名無しさん
08/08/28 19:53:24
C++/CLIは逆汗してもソースでないの?

291:デフォルトの名無しさん
08/08/28 19:57:08
やっぱVC++6.0が一番頭よさそうに見えるからつこてる

292:デフォルトの名無しさん
08/08/28 21:27:59
ライブラリとかじゃない、普通のプログラムをデバッグしようとしているのですが、
Debugging information for 'regsvr32.exe' cannot be found or does not match. Symbols not loaded.
Do you want to continue debugging ?
というメッセージが出ます。(開発環境は英語版のVC++9です)
Yesを選択しても、
To register a module, you must provide a binary name.
という メッセージが出て結局失敗します。
このエラーメッセージの意味は、regsvr32.exeを引数なしで呼び出したためだ
というのは調べてわかったのですが、このあとどうすればよいのかよくわかりません。
ツールの中などで、regsvr32.exeを削除するような操作が必要なのでしょうか?
regsvr32.exeはOLEコントロールを登録/解除するために使うらしい、というのも
書いてあったのですが、まったく意味がわかってません。
どうかよろしくお願いします。


293:デフォルトの名無しさん
08/08/28 22:42:44
regsvr32.exeをデバッグしてるって
マイクロソフトの中の人ですか?

294:デフォルトの名無しさん
08/08/28 23:05:59
>>293
結構大きなフリーのライブラリのソースをダウンロードしてきてコンパイルしたのですが、
コンパイル終わって実行する前に、登録するために使うプログラムを選択しろみたいな
メッセージが出てきて、適当にデフォルトのを選択しておいたところ、292みたいな状態になって
しまいました。
ずっとLinux使ってたので、もしかしてすごく見当はずれな質問してるかもしれませんが、
いろいろ検索してもなにも引っかからなかったし、どうすればよいか、ヒントでもよいので
ください。

295:デフォルトの名無しさん
08/08/29 03:44:16
String^ s = "A";
for( int i=0; i<26; i++ ){
~何か操作~
func( s );
}

こんな感じで、func()に、「A~Z」まで文字列を渡したいのですが、どんな操作をするとスマートに出来ますでしょうか?

296:デフォルトの名無しさん
08/08/29 03:56:27
func(static_cast<wchar_t>(L'A' + i).ToString());はどう?

iの使い道がほかになければ、こういうループにするという手もある。
マジックナンバー26が消えるのがいい(もっとも、'Z' - 'A'でも消せるけど)。
for ( wchar_t i = L'A'; i<='Z'; i++ ) {
func( i.ToString() );
}


297:295
08/08/29 04:19:47
他にも使用していたので、前者を使わせてもらいました。
ありがとうございます。

298:デフォルトの名無しさん
08/08/29 11:04:43
>>292
>ライブラリとかじゃない、普通のプログラムをデバッグしようとしているのですが、

>>294
>結構大きなフリーのライブラリのソースをダウンロードしてきてコンパイルしたのですが、

どっちなんだ。

299:デフォルトの名無しさん
08/08/29 18:20:27
ダイアログボックスでボタン配置したときは
プロパティからデフォルトボタンに設定できるけど
CreateWindowで配置したボタンを
デフォルトボタンにするにはどうしたらいいですか?

300:デフォルトの名無しさん
08/08/29 18:30:13
作った後?
作るときなら、BS_DEFPUSHBUTTON

301:デフォルトの名無しさん
08/08/29 18:43:58
>>300
作ったあとに
デフォルトボタンにしたり、しなかったり したいです

302:デフォルトの名無しさん
08/08/29 19:14:06
あとでスタイル変えるのは SetWindowLongでできるけど、
どうなるかはわからん、他のボタンのDEFも外さないと無理かも?
見た目はDM_SETDEFID送ればいいみたいだけど。

303:デフォルトの名無しさん
08/08/29 19:18:01
BM_SETSTYLE でもいけた。まあいろいろやってみ

304:デフォルトの名無しさん
08/08/29 19:28:50
>>298
すいません。
結構大きなライブラリのソースをダウンロードしてきて、それをコンパイルした後、付属の
サンプルコード(こいつは結構小さい普通のプログラム)をコンパイルしようとしたんです。
なんでどっちも本当です。
結局まだわからないので、スタティックライブラリを自分で作って勉強してみてます。
でもregsvr32.exeなんて使わないっぽい。

スタティックなライブラリをデバックするときって、regsvr32.exeを使いますか?
手順としてはこんな感じ。
(1)ライブラリ作成(名前はStaticLibrary.libとします)
(2)regsvr32.exe \i StaticLibrary.lib
(3)このライブラリをつかうサンプルプログラムを作成してデバッグ。

305:デフォルトの名無しさん
08/08/29 19:32:48
それはない。
regsver32の対象になるのはDLLだけ。

306:デフォルトの名無しさん
08/08/29 20:29:23
>>304
exeのプロジェクトのプロパティの「デバッグ」の「コマンド」がregsvr32になってるのかな。
空にしてok押してみて。”$(TargetPath)”が入ると思う。

新しいプロジェクトを作るときのウィザードで選択を間違えたのかな。

307:デフォルトの名無しさん
08/08/30 01:12:35
>>304
ありがとうございます。おっしゃるとおりになってました。
そこを空にして、追加のインクルードパスにboostを追加して、F7でビルドするとビルドできました。
その後、同じソリューションの中のほかのサンプルプログラムをコンパイルするごとに追加の
インクルードパスにboostを追加する、という作業が必要だったのですが、これはしょうがないですか?
どこかで設定すれば同じソリューション内なら一度の追加ですむとか、そういうことはできないですか?


308:デフォルトの名無しさん
08/08/30 12:47:12
 VS2008を使っているのですが、newで確保したクラスの動的配列の内容を
デバッガで全て表示させるにはどうしたらよいのでしょうか?
STLのstringやvectorだと上手く表示されているのですが、何かいい方法があるのしょうか?
どなたか教えて下さい。


309:デフォルトの名無しさん
08/08/30 15:57:21
変数の後ろに、カンマと数字で

310:デフォルトの名無しさん
08/08/31 13:09:13
>>309
 最初何のことだか分からなかったのですが、ググって見てようやく分かりました。
御回答どうもありがとうございました。
一応他の方の参考になるかもしれないのでリンク張っておきます。
URLリンク(support.microsoft.com)

 他にもautoexp.datを使う方法もあるみたいですね。
URLリンク(www.cycleof5th.com)
URLリンク(blogs.wankuma.com)


311:デフォルトの名無しさん
08/08/31 17:21:03
某動画を見ながらVC++2008をインストールしたのですが
新規作成-プロジェクトの
「VisualC++」の「空のプロジェクト」実行で
ソース、リソース、ヘッダーファイルが出なく(組み込まれなく?)なりました
どこかさわってしまったらしく元に戻せません

超初歩的だと思いますが宜しくお願いします。


312:デフォルトの名無しさん
08/08/31 17:41:32
「空のプロジェクト」なんだから、そういうのが無くて当たり前。

313:311
08/08/31 18:34:37
URLリンク(www.nicovideo.jp)
この動画の1’28”くらいのところなんですが
空のプロジェクトなのに3ファイルが組み込まれてるんです

なにか設定を変えているとかでしょうか?

314:311
08/08/31 18:43:15
連投すいません
他の説明動画で解決できました。
前の動画は編集されてたのかな?

315:デフォルトの名無しさん
08/08/31 19:11:35
こんな動画まであるのか。
ホントになんでもあるなw

316:299
08/08/31 23:41:36
>>300
BS_DEFPUSHBUTTON も設定しましたがリターンを押しても反応しません

>>302
DM_SETDEFIDを
SendMessage(ウインドウのハンドル, DM_SETDEFID, (WPARAM)ボタンのID, (LPARAM)0 );
で送ってもデフォルトになってないような?

>>303
SendMessage(ウインドウのハンドル,BM_SETSTYLE, (WPARAM)BS_DEFPUSHBUTTON,(LPARAM)0);
にしてみましたがやはりだめです

配置してるボタンはウインドウ上に1つだけです
ひょっとしてデフォルトボタンはダイアログでしか設定できないのでしょうか?

317:デフォルトの名無しさん
08/08/31 23:45:49
Enter打つとボタンが押されたことになるって挙動が欲しいなら、
ボタンのIDをIDOKにして、メッセージループにIsDlgMessageを組み込むじゃなかったっけ。

318:デフォルトの名無しさん
08/09/01 00:55:14
テキストボックスに入力中にリターン押したときに
ある関数を実行したいんですが
ダイアログのときはデフォルトボタンで代用してました
VBとかでいうところのkeydownイベントのときにキーコードがリターンか調べて
リターンなら処理をする みたいな挙動がほしいです

IsDlgMessageでググったら日本語のページがひとつもないといふ

319:デフォルトの名無しさん
08/09/01 01:55:10
じゃあ、IsDialogMessageでググってみて

320:デフォルトの名無しさん
08/09/01 04:19:22
>>315
そして、
本と同じで、こういう動画も初学者向であふれるんだろなw

321:デフォルトの名無しさん
08/09/01 17:48:26
>>319
ググったけどよくわからんかった
モードレスダイアログにしてIDOK受けるみたいな感じに解釈したんだけど
コントロールのサブクラス化のほうが理解しやすかったんでそっちにしました

ありがとうございました

322:デフォルトの名無しさん
08/09/01 19:49:31
すいません。
これからVisual C++ 6.0を勉強をしようと思っているんですが、
初心者向きのわかりやすい参考書があれば教えて下さい。
よろしくお願いします。

323:デフォルトの名無しさん
08/09/01 20:12:44
>>322
本題(参考書の紹介)にレスできなくてごめん。

これから勉強するのに、なんでvc6なのだ?
vc6はc++の規格が固まる前のものでオススメでない。
vc9(vs2008)でいいじゃないか。

324:デフォルトの名無しさん
08/09/01 21:15:53
VC6使ってるけどC++の規格で困ったことなんかないな

325:デフォルトの名無しさん
08/09/01 21:21:02
>>323
そうなんですか?
しかし会社で使用する開発環境が6.0らしいんですが・・・
vs2008はOSが2000なのでインストール出来ませんが、
vs2005ならインストールしています。
vs2005を勉強すればvs6.0にも応用出来るのでしょうか?
そういうことでしたらvs2005で勉強してみます。

326:デフォルトの名無しさん
08/09/01 21:24:29
会社で使うという事情なら6.0にしておけ。

327:デフォルトの名無しさん
08/09/01 21:25:37
ちゃんとライセンスがあるのか心配なレスだなしかしw

328:デフォルトの名無しさん
08/09/01 21:33:29
そうですね。
やはり6.0を勉強します。
話は戻りますが、初心者向きのわかりやすい参考書が
あれば教えて下さい。

329:デフォルトの名無しさん
08/09/01 21:40:02
VCの場合はCかC++がある程度使えないと初心者以前なので
勉強してから出直して来てください。

330:デフォルトの名無しさん
08/09/01 21:44:23
山本信雄のシリーズは入りとしては最高

でも、Cがある程度使えなかったらわかりません

>>329
VC++とC++ってそこまで違うものですか?

331:デフォルトの名無しさん
08/09/01 21:53:29
C++はプログラミング言語
VC++はマイクロソフト社製の開発環境

332:デフォルトの名無しさん
08/09/01 21:59:50
そっか

VC++はVSのC++コンパイラ群のことだと思ってた

333:デフォルトの名無しさん
08/09/01 22:08:30
ライセンスなんてそんなに(・ε・)キニシナイ!!


334:デフォルトの名無しさん
08/09/01 22:12:31
libviscawinの使い方教えてください
ていうかどこで聞けばいいですか?

335:デフォルトの名無しさん
08/09/01 22:19:35
VC++単体パッケージにはコンパイラしかついてないのか

336:デフォルトの名無しさん
08/09/01 22:59:15
>>332
いやまあその理解でもあまり困らないと思う。

337:デフォルトの名無しさん
08/09/01 23:25:10
まぁ、VC6と言うとMFCを使えることを想定されるな。

338:デフォルトの名無しさん
08/09/02 00:11:16
win32だったらprograming windows (ペゾルド) C言語を知っている前提
MFCだったら標準口座MFC6.0(シルト) C++のクラスぐらいまで知っている前提

339:デフォルトの名無しさん
08/09/02 07:41:32
main( )で始まるプログラムとMFC使ったプログラムは勝手が違うな


340:デフォルトの名無しさん
08/09/04 01:35:06
ポインタをヘッダファイルで定義して、複数のソースから使用します。
そこでヘッダ宣言時に"_declspec(selectany)"で書くと、リンカエラーもなくビルドできます。
この"_declspec(selectany)"とは、どういったものなのでしょうか?

341:デフォルトの名無しさん
08/09/04 01:52:49
>>340
その通りの効果。リンク時に重複した定義を許し、1つにまとめる。
URLリンク(msdn.microsoft.com)

342:デフォルトの名無しさん
08/09/04 21:03:54
WM_PAINTメッセージの処理で、クライアント領域の左側を白、右側を黒に塗り潰すとして、
再描画が必要な領域で条件分岐して、

343:デフォルトの名無しさん
08/09/04 21:06:21
途中で送信してしまいまして、すいません。

WM_PAINTメッセージの処理で、クライアント領域の左側を白、右側を黒に塗り潰すとして、
再描画が必要な領域で条件分岐して、白黒それぞれ描画するか判断するのか、

描画が必要ない領域を塗り潰しても、結局システムは何もしないと思って
両方とりあえず描画するのか、どちらが一般的なんでしょうか

344:デフォルトの名無しさん
08/09/04 21:55:55
領域を指定する

345:デフォルトの名無しさん
08/09/05 13:16:31
クライアントエリアの中は全部描く
クリッピングは速度のためにある

346:デフォルトの名無しさん
08/09/06 10:23:30
昨日勉強始めました。

LINK : fatal error LNK1181: 入力ファイル 'object\library.obj' を開けません。

というエラーが出るのですがlibrary.objを検索してもHDにはありませんし、
解決するようなサイトが見つかりませんでした。

なにか解決方法ありましたらお願いします。

環境はVisualC++2008 Expressで、コードはチュートリアル用にダウンロードしたもの。
元のコードはVisualC++6で書かれたようです。

347:デフォルトの名無しさん
08/09/06 10:40:55
それ理解できないなら別のことやった方がいい

348:デフォルトの名無しさん
08/09/06 11:08:18
どっかでひろってきたサンプルのコンパイル方法か

349:デフォルトの名無しさん
08/09/07 21:02:29
>>273について誰か教えてください。よく理解できません。


350:デフォルトの名無しさん
08/09/07 21:07:28
>>349
URLリンク(d.hatena.ne.jp)

351:デフォルトの名無しさん
08/09/07 21:11:23
特に指定がない場合はコンパイラが拡張子見てどっちか判断する

352:デフォルトの名無しさん
08/09/07 23:33:38
授業でbccを使って書いたプログラムのソース(問題.c)をVisual C++で流用しようとしたら
1>cl : コマンド ライン error D8045 : C ファイル '.\問題.c' を /clr オプションと共にコンパイルできません
というエラーが出てコンパイルが完了しません。どうしたらよいでしょうか?

353:デフォルトの名無しさん
08/09/07 23:48:54
プロジェクト作るときにWin32を選ぶ。
CLR選んだらCは使えない

354:デフォルトの名無しさん
08/09/08 00:02:52
>>353
ありがとうございます。
しかし今度は
「プリコンパイル ヘッダー ファイルが旧バージョンのコンパイラで作成されています。また、C++ のプリコンパイル済みヘッダー ファイルを C で使用しています (その逆も考えられます)。」
というエラーがありました。

355:デフォルトの名無しさん
08/09/08 00:10:12
>>354
空のプロジェクト作って追加するのがいいと思うけど、
cppのプロジェクト作って追加したのなら、ソリューションエクスプローラーのとこで
該当ファイル右クリックしてプロパティ出して、C/C++のプリコンパイルヘッダーの項目のとこで
プリコンパイル済みヘッダーを使用しない、にする。
あるいはプロジェクト全体でこの設定をしてもいい。

356:デフォルトの名無しさん
08/09/08 00:24:59
>>355
ありがとうございます。
何とか上手く行きましたが、最後にscanfの宣言をしてくださいというエラーが出ました。
これはどういうことでしょうか?

357:356
08/09/08 00:25:56
正しくは「'scanf' の宣言を確認してください。」でした。

358:356
08/09/08 00:33:44
すみません。自己解決しました。
Visual C++2005からの仕様変更が原因だったみたいですね。。

お騒がせしました。長らくのお付き合いありがとうございました

359:デフォルトの名無しさん
08/09/08 00:34:45
それは2005以降出るよ。
詳しくは、そのエラーの行でF1押して出たページの「CRT のセキュリティ強化」を読むといい。
その関数使う事が決まってるなら無視してもいいし、気になるならヘルプに出なくする方法も書いてある。
scanf以外にも、printf系、str~系で出る。

360:デフォルトの名無しさん
08/09/08 01:34:31
移植性?なんだそれ?そんなの知らん!
俺はMSと心中するんだと言う気持ちならscanf_sなど_s系が付いた関数を使えば良いよ

361:デフォルトの名無しさん
08/09/08 10:26:31
すんません
VC++6.0(MFC)でテキストエディタ作れと言われたのですが、
最初の最初でつまづいてます。
プロジェクト新規作成→MFC→SDIアプリ→→で、初期のスケルトン作成。

その後ですが、IDR_MAINFRAMEのフォームの白い部分(メニューバーを除く全部
の領域)を全体的にテキスト入力欄にするにはどう操作すればいいですか?

ダイアログベースのプログラムならテキストボックス置けばいいだけですが、
SDIアプリケーションの場合はどうするのでしょうか?

362:デフォルトの名無しさん
08/09/08 10:32:15
>>361
MFCだといくつかのやり方があって、どういう点を学習してるかによるが、、、
CViewをCEditViewに替えるだけでいけるけど、、、

Editコントロールを貼り付けるのなら、メンバーにCEditでも置いて
ウィンドウのOnCreateで一緒にCreateしてやって、OnSize時に
CEditをクライアントエリアと同じ大きさにしてやればいい。

363:デフォルトの名無しさん
08/09/08 12:04:29
>>362
ありがとうございます。
なんとか後者の方法でエディットボックス設置はできました。

あとは
・起動時にウィンドウのクライアント領域と合わせる
・リサイズ時にも合わせる

のようにしたいですが、ウィンドウサイズの初期値設定、クライアント領域の現在値の取得などはどのようにすれば良いですか?



364:デフォルトの名無しさん
08/09/08 12:10:38
クライアントのサイズはGetClientRect()というのがあるけど、
WM_SIZEのハンドラ、OnSizeの引数に幅と高さもあるから、それそのまま使えばいい。
起動時にリサイズ(WM?SIZE)も来るから、起動時のことは考えなくてもいい。

365:デフォルトの名無しさん
08/09/08 16:42:03
>>364
ありがとうございます。
試行錯誤した結果、やはりCEditViewにすることにしました。

URLリンク(www.vcppclub.com)
ここを見たら1行も書かずに、読み込み/保存機能はできてしまったのですが、疑問が。

ファイル読み込みのダイアログを出す→ユーザーが選択したファイルを読み込む→テキストエリアに表示
保存も同様。

これらに必要な処理がどこにも書かれていないような気がするのですが。

調べていた段階で、メンバ関数 OnFileOpen() を作成し、
GetOpenFileName();でダイアログを出し、
CFile型に読み込む手順が必要そうだったのですが、
自動生成されたソースではどこにも書かれていません。
にもかかわらず読み書きできるのが疑問です。
(サイトのサンプルはMDIですが、SDIでもほとんど同じのようです)

366:デフォルトの名無しさん
08/09/08 17:33:51
その辺はMFCとDocumentViewアーキテクチャの話だからなあ。
CWinAppからCDocument、CEditViewの操作はMFCの中に含まれている。
もちろん、自分で変更することも可能。

367:デフォルトの名無しさん
08/09/08 18:35:50
派生した部分しか見てないんだろ

368:デフォルトの名無しさん
08/09/08 21:37:06
オリビア派生

369:デフォルトの名無しさん
08/09/09 02:47:07
VisualStudioのエディタのタブや改行の記号表示について質問があります.
デフォルトの表示を変更したいのですがどのようにすればよいのでしょうか?

具体的には改行文字を$にタブ文字を>---という風に変更したいのですが

370:デフォルトの名無しさん
08/09/09 06:11:23
ひとりごとです

371:デフォルトの名無しさん
08/09/09 10:49:53
CEditViewでの、現在表示されている文字列を格納しているメンバは何ですか?
入力されたものを文字列型にコピーして保存やらなにやらいろいろやりたいのですが。
逆に文字列型に格納された文字列を表示する方法も。

そういったテキストバッファの操作のしかたがいまいち分からないです

372:デフォルトの名無しさん
08/09/09 11:00:09
エディットコントロール自身がバッファを持ってる
普通は直接バッファいじらないでメンバ関数使ってアクセスする

373:デフォルトの名無しさん
08/09/09 11:18:51
普通はCDocumentの派生クラスに自分でデータ構造作ってビューはその表示方法書いたりするけど
CEditViewは特殊だからな。GetEditCtrl()でCEditのインスタンスが取れるのでそれを操作すればいい。

374:デフォルトの名無しさん
08/09/09 11:28:37
typedef struct tagTest {
unsigned int x :1;
} Test;

このようなコードを見かけたのですが、「:1」は何を意味しているのでしょうか。

375:デフォルトの名無しさん
08/09/09 11:31:25
>>374
ビットフィールド

376:374
08/09/09 11:43:07
素早い回答、ありがとうございました。

377:デフォルトの名無しさん
08/09/09 13:53:02
>>372-373
なるほど。
CEditのメンバ関数見るとそれらしいものがあるようですね。
しかし、GetLine()のように、行ごとに取得してくる関数はあるみたいですが、
「とりあえず改行も含めて全体をCStringにコピー」するようなものは見当たらないです。

全部の行を走査してコピーする部分は自分で作成しないとダメですか?

378:デフォルトの名無しさん
08/09/09 14:02:47
全取得はGetWindowText()
これはCEditでも、CEditViewでも使える。

379:デフォルトの名無しさん
08/09/09 14:06:23
>>377
MSDNを見るときは、継承元のクラスのメンバも見よう。
GetWindowText()で取れるんじゃね?

って書いてたら先を越されたw

380:デフォルトの名無しさん
08/09/09 14:28:49
>>378-379
おぉ ありがとうございます!
MSDNの見かたを訓練するようにします。

ところでもうひとつ質問が。
MainFrameのメニュー選択によりそれらの動作をさせたいのですが、

void CMainFrame::On????(){

}
↑ここの記述で、
MainFrameのほうからViewを操作するにはどのようにすれば良いですか?
C(アプリ名)Viewクラスのインスタンス名が分かれば「名前.関数名」のような形
で呼び出せると考えたのですが、
どこにも宣言部分が見当たらないようです。

381:デフォルトの名無しさん
08/09/09 15:12:49
>>380
えーと、SDIだったよな?
CFrameWnd::GetActiveView()でどうか。

382:デフォルトの名無しさん
08/09/09 15:24:53
>>381
CViewのポインタが帰ってくるようで、継承して作られたC???Viewの関数は使えないようです。

CFrameWnd::GetActiveView()->関数();

このようにしてもビルドが通らないです。

383:デフォルトの名無しさん
08/09/09 15:32:12
>>382
GetWindowtext()が見つけられないようだったから、わざわざCFrameWnd::GetActiveView()の
書き方にしたのに、そしたらこれかよ・・・
CなんたらEditView* pView = (CなんたらEditView*)GetActiveView();
でいいだろ、ちょっとは考えろよ。

384:デフォルトの名無しさん
08/09/09 15:36:11
メニューから直接よべる

385:デフォルトの名無しさん
08/09/09 19:30:54
>>383
未熟ですみませぬ・・・
おかげさまで思った通りのものができました。

386:デフォルトの名無しさん
08/09/10 11:58:44
お世話になります。VC++6でダイヤログベースのプログラムを作っています。
ダイヤログにボタンを新設し、Classウィザードを使ってON_BN_CLICKEDメッセージ関数を使って
ボタンがおされた事はプログラムで取得できるようにできました。

ボタンを何秒間押したかを調べたいのですが、ボタンが離されたメッセージがなく、
どうやって作ったらいいかわかりません。
どのようなメッセージを使えばいいのでしょうか?
よろしくお願いいたします。

387:デフォルトの名無しさん
08/09/10 12:04:58
CButtonをサブクラス化して自分でLBUTTONDOWNとLBUTTONUPの時刻の差を取るしかないんじゃないかなあ


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch