★初心者にVisual C++を教えるスレ★ Part31
at TECH
1:デフォルトの名無しさん
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
A// 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といった数字の部分がわかりません・・・。
@とAでは数字の意味が違うと思うのですが、@の数字は適当に決めていいのでしょうか?
Aは何か決まりごとが?
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キーを押したときに必要なだけ字下げする機能がありますか?
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4657日前に更新/181 KB
担当:undef