★初心者にVisual C++を教えるスレ★ Part31

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
Visual C++入門者・初心者からの質問を、
お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

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

質問の仕方については次のページが大変参考になります。
http://www.hyuki.com/writing/techask.html

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

過去スレ、関連スレなどは>>2-5辺り。
2デフォルトの名無しさん:2008/07/31(木) 18:03:50
3デフォルトの名無しさん:2008/07/31(木) 18:04:33
4デフォルトの名無しさん:2008/07/31(木) 18:08:44
【関連スレ】
■MFC相談室 mfc19d.dll■
http://pc11.2ch.net/test/read.cgi/tech/1207301867/l50
Win32API質問箱 Build68
http://pc11.2ch.net/test/read.cgi/tech/1215348804/
【C++】 DirectX初心者質問スレ Part18 【C】
http://pc11.2ch.net/test/read.cgi/tech/1216270204/
C言語なら俺に聞け(入門篇) Part 33
http://pc11.2ch.net/test/read.cgi/tech/1217073697/
【初心者お断り】ガチ規格準拠C専用スレ Part133
http://pc11.2ch.net/test/read.cgi/tech/1201153965/
C++相談室 part63
http://pc11.2ch.net/test/read.cgi/tech/1217008269/
C/C++の宿題を片付けます 114代目
http://pc11.2ch.net/test/read.cgi/tech/1216746971/
【初心者歓迎】C/C++室 Ver.57【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1216215558/


【関連サイト】
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
MSDN ライブラリ ※変更された
http://msdn.microsoft.com/library/ja/
http://msdn2.microsoft.com/ja-jp/library/ (2005のことはこっち)
Platform SDK Update ※変更された
http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
Google
http://www.google.co.jp/
5デフォルトの名無しさん:2008/07/31(木) 18:09:25
6デフォルトの名無しさん:2008/07/31(木) 18:09:54
Platform SDKの中で一番新しいのはこっち
Microsoft Windows Server 2003 R2 Platform SDK Web Install
http://www.microsoft.com/downloads/details.aspx?FamilyID=0baf2b35-c656-4969-ace8-e4c0c0716adb&DisplayLang=en
(ISO版などあり)

これ以降、Platform SDK + .NET Framework SDKとして
Windows SDKが公開されていて、その中で一番新しいのはこれ。
Windows SDK for Windows Server 2008 and .NET Framework 3.5
http://www.microsoft.com/downloads/details.aspx?FamilyID=f26b1aa4-741a-433a-9be5-fa919850bdbf&DisplayLang=en
少し前のバージョン(Vista + .NET 3.0の初期版)には日本語版もあったけど、
日本語化されているのは専ら.NET Framework部分だけ。

VC6対応の、最後のPSDKはここ。
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm



テンプレ終わり。
7デフォルトの名無しさん:2008/08/01(金) 00:50:37
VS2008のSP1はまだかな〜
8デフォルトの名無しさん:2008/08/01(金) 00:52:57
案外ウィルスに感染しているとかってオチじゃないか?
98:2008/08/01(金) 00:54:43
誤爆スマン
10デフォルトの名無しさん:2008/08/02(土) 17:09:17
VC++6.0を使っています。
vector<string>の宣言時に一括して配列へ文字を
代入したいのですがどうすればいいのでしょうか。

javaとかだとこんな感じの事です。
var s1 = ["【", "】"];
11デフォルトの名無しさん:2008/08/02(土) 17:19:06
C++スレで質問すればいい
12デフォルトの名無しさん:2008/08/02(土) 17:23:36
CStringListのがいいよ
13デフォルトの名無しさん:2008/08/02(土) 17:31:17
初心者なら素直に本でも買って勉強しろ
ろくに勉強もしないで人に聞くのは感心しない
14デフォルトの名無しさん:2008/08/02(土) 18:08:23
>>11
C++スレ行ってみます。
>>12
vectorであるのかなと思いまして。
15デフォルトの名無しさん:2008/08/02(土) 18:57:56
質問です。
システムフックによって任意のウィンドウを操作するプログラムを作成しているのですが、
以下のウィンドウクラスのウィンドウを移動、リサイズすることができません。
・afx:...
・WTL:...
・TApplication
WM_CREATEメッセージをフックしているのですが、他のメッセージを処理する
必要があるのでしょうか?処理対象のウィンドウが間違っているのでしょうか?
開発環境はVC++ 2008 Express Editionです。WindowsXP SP3で動作確認しています。
16デフォルトの名無しさん:2008/08/02(土) 19:03:16
スタイルとか属性とか調べるものがあるだろ
1715:2008/08/02(土) 19:27:39
>>16 レスありがとうございます。
以下のページに記載されている方法によって操作対象のウィンドウを抽出しています。
http://blog.goo.ne.jp/masaki_goo_2006/e/e6586cd582874300c0e97e12a1056415
ウィンドウの抽出条件に問題があるのでしょうか?
18デフォルトの名無しさん:2008/08/02(土) 19:41:32
WM_CREATE以外で動けばメッセージがまずい
WM_CREATE以外でも動かなかったら処理対象のウィンドウがまずい
1915:2008/08/02(土) 19:57:25
>>18 レスありがとうございます。
WM_SIZEメッセージをフックするようにしたところ、afx:...とWTL:...の操作に成功しました。
しかし、TApplicationの操作に失敗します。
20デフォルトの名無しさん:2008/08/02(土) 21:53:42
>>15
たしかTApplicationではなく、そいつをオーナーにしているウィンドウが
実際に画面に表示されているウィンドウのはず。
2115:2008/08/03(日) 01:48:33
>>20 レスありがとうございます。
http://www.asahi-net.or.jp/~HA3T-NKMR/vcl3-2.htm
TApplicationの子ウィンドウを操作することによって
移動、リサイズすることができるようになりました。
22デフォルトの名無しさん:2008/08/04(月) 21:42:49
VS2008 ExpressEditionsをインストールしようとしたのですが、
ttp://xtp0001.s3.x-beat.com/cgi-bin/up/source/Sonata_25362.jpg
この D: 243MB が気になって夜も眠れません
外付けHDD(H:\)を繋ぐと H: 243MB と表示されます
これは何なのでしょうか
23デフォルトの名無しさん:2008/08/04(月) 21:48:50
ウイルス
24デフォルトの名無しさん:2008/08/04(月) 21:49:33
>>22
ウイルスだな
25デフォルトの名無しさん:2008/08/04(月) 21:51:42
割れ厨
2622:2008/08/04(月) 22:26:50
>>23-24
ウイルスとはどういうことでしょうか?
27デフォルトの名無しさん:2008/08/04(月) 22:37:07
すでに手遅れだから気にしなくていい
2822:2008/08/04(月) 23:11:06
>>27
分かりました
ありがとうございます。これで夜もぐっすり眠れます
29デフォルトの名無しさん:2008/08/05(火) 17:59:55
ピクチャボックスに表示してある画像をファイルに保存するのは、どうすればいいのでしょうか?
30デフォルトの名無しさん:2008/08/05(火) 19:07:37
>>29
望む画像形式のデータを構築して、ファイルをopenしてwriteする。
31デフォルトの名無しさん:2008/08/05(火) 20:30:10
エディットボックスに数字以外入力できない様にするにはどうすればいいんでしょうか?
タイプはCString型です。
32デフォルトの名無しさん:2008/08/05(火) 20:38:49
C++初心者が1番最初に作ってみるといいプログラムって何ですか?
33デフォルトの名無しさん:2008/08/05(火) 21:24:23
キー入力見て数字以外は無視
コピペされたら数字以外除去
34デフォルトの名無しさん:2008/08/05(火) 21:26:11
>>32
HelloWorld!
35デフォルトの名無しさん:2008/08/05(火) 21:48:00
ES_NUMBER
36デフォルトの名無しさん:2008/08/06(水) 00:14:36
いまVisualc++2005でウィンドウアプリケーションの勉強してるんですが、

HWND hWnd や HINSTANCE hCurInst とは
int a みたいな感覚でいいんでしょうか?hWnd、hCurInstのところは自分で勝手に変えられるのでしょうか?
37デフォルトの名無しさん:2008/08/06(水) 00:17:34
>>36
その認識で合っている。
38デフォルトの名無しさん:2008/08/06(水) 00:37:41
おお、そうなんですか。モヤモヤが晴れましたどーもです!
39デフォルトの名無しさん:2008/08/06(水) 01:30:58
【事件】 熱上昇気流で突風! 都内パンチラスポット
http://news24.2ch.net/test/read.cgi/news7/1212845155/l50
40デフォルトの名無しさん:2008/08/06(水) 09:59:26
スピンボタンを使いたいんですけど、数値の自動関連付けと自動表示を使わずに、
エディットボックスの文字列をOnDeltaposSpin1関数
内で取得して変数に変換してこの値にスピンボタンを押したとき
エディットボックスの文字列の値が指定しただけ増えるというような
設定にしたいのですがOnDeltaposSpin1関数でエディットボックスの
文字列を取得する方法がわかりません。
どうか教えてください。
41デフォルトの名無しさん:2008/08/06(水) 10:04:41
GetDlgItem(IDC_xxx)->GetWindowText()
ていうか、エディットボックスの文字列、普段どうやって取得してるの?
42デフォルトの名無しさん:2008/08/06(水) 10:11:20
UpdateData(TRUE)
43デフォルトの名無しさん:2008/08/06(水) 10:17:39
あー、そんなのあったね
44デフォルトの名無しさん:2008/08/06(水) 10:46:20
うまくいきましたありがとうございます。
45デフォルトの名無しさん:2008/08/06(水) 17:09:05
ダイアログ上にエディットボックスとボタンがあって、ボタンを押すと
エディットボックスに表示されている文字列が保存されるという事をやりたいんですが、
inifileを使えばいいらしいんですけど調べてみても使い方がよくわかりらないので
教えて下さい。お願いします。
46デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/08/06(水) 19:05:22
C++/CLI というやつです。
48デフォルトの名無しさん:2008/08/06(水) 19:07:12
つーか、その部分だけなら普通にC++だけどなw
49デフォルトの名無しさん:2008/08/06(水) 19:16:31
C++なんすか!すんませんCしかやったことなかったんです・・・どうもっす!
50デフォルトの名無しさん:2008/08/06(水) 23:12:41
_itoa_s
_i64toa_s
_ui64toa_s

の違いがわからんのですが
int
long int
unsigned long int
に対応したitoa という認識でおKですか?
51デフォルトの名無しさん:2008/08/06(水) 23:58:29
64ビットCPUバージョン
52デフォルトの名無しさん:2008/08/07(木) 00:01:35
>>49
C++/CLIは最早C++ではないぞ。
53デフォルトの名無しさん:2008/08/07(木) 02:47:24
まじすか・・・ようやくCを覚えてきたのに、この先不安じゃ・・
54デフォルトの名無しさん:2008/08/07(木) 03:26:17
VC++2008でPathFileExistsを使う前と使った後で
GetProcessMemoryInfoでヒープメモリを比べてみた所、
ファイルサイズ分?メモリを消費していました。
PathFileExistsの後にこの分のメモリは解放できないのでしょうか。
55デフォルトの名無しさん:2008/08/07(木) 04:40:43
shlwapi.dllを逆アセして調べる
56デフォルトの名無しさん:2008/08/07(木) 06:10:53
いちいち解放してると効率悪いから、わざと解放しない場合もあるし
プログラムがおわった時点で解放されてれば問題なし
57デフォルトの名無しさん:2008/08/07(木) 08:53:48
なるほどです。
ファイルを読み込ませる時のチェックに使っているので、
その度にメモリへ蓄積されていってくのですが、
こちらは気にしなくても良いのでしょうか。
58デフォルトの名無しさん:2008/08/07(木) 09:02:42
プログラム終了までにメモリ不足にならない保証があるならいいんじゃない?
59デフォルトの名無しさん:2008/08/07(木) 12:01:16
ファイルを沢山読み込ませるような事をすると不足になる可能性が…。
そういった場合はどうすればいいのでしょうか。
60デフォルトの名無しさん:2008/08/07(木) 13:10:19
PathFileExistsに問題があったら他でも問題になってるはずだから
PathFileExistsには問題がなくてお前のプログラムに問題があるか、
全然問題ないのに単なる妄想でいらない心配してるかのどっちかだろ
61デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/08/07(木) 14:07:41
>>61
それだけ書かれても原因はわからん。
そこ以外に問題があるんじゃないの?
63デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/08/07(木) 14:52:45
実際にiniファイル直接開いて中見てみりゃいいじゃん。
VistaでProgram Files の中で実行してる、とかじゃないだろうな?

あまりiniファイルお勧めしないけどな。
65デフォルトの名無しさん:2008/08/07(木) 16:00:37
なんかいろいろいじくってたらよく分からないけど上書き保存できるようになりました。
アドバイスしてくれた皆さんありがとうございました。
イニファイルのなかってメモ帳みたいですね。
いろいろじくってたせいでいろんな値が入ってました。
66デフォルトの名無しさん:2008/08/07(木) 16:01:26
ていうかメモ帳って書いてありました。
すいません。
67デフォルトの名無しさん:2008/08/07(木) 16:53:48
コンボボックスの使い方で
コンボボックスの選択位置を読み取るには、
   int n=comboBox1->SelectedIndex;
を用いる。一番上が選ばれている場合は、n=0になる。
って書いてあったのでそのままコピペしたら
comboBox1定義されていない識別子です
SelectedIndex左側がクラス、構造体、共用体へのポインタではありません。
ってエラーが出てきたんですけどどうしたらいいんですか?

68デフォルトの名無しさん:2008/08/07(木) 17:06:19
>>67
環境は?
FormならComboBox貼り付けたらデフォルトでそういった名前になってると思うが。
MFCなら右クリックで変数の追加、Win32APIならもうちょっと別な方法になる。
69デフォルトの名無しさん:2008/08/07(木) 17:11:16
レスありがとうございます。
VC++6.0のMFCで作ってます。
70デフォルトの名無しさん:2008/08/07(木) 17:20:06
ググったけど、これか。
ttp://homepage3.nifty.com/ishidate/vcpp05_3/vcpp05_3.htm
ここでの解説はフォームアプリだからVC++6.0じゃ参考にならないよ。
まあMFCなら、変数の追加でControlで好きな名前で追加して、
その名前.GetCurSel() になるかな。
71デフォルトの名無しさん:2008/08/07(木) 17:24:15
保存ボタンと読み込みボタンとコンボボックスとエディットボックスを使って、
コンボボックスはドロップダウンリスト形式にして、
リストが1.2.3.の三つを作ってドロップダウンリストから1を選んでから
保存ボタンを押すと1にエディットボックスのデータが保存されて、
2を選んでから保存ボタンを押すと2番に保存される、
読み込みボタンの方も同様に1を選んで読み込みを押すと1のデータが読み込まれる、
といったプログラムを作りたいんです。
それでコンボボックスをダイアログに貼り付けてOnSelchangeCombo1()
という%
72デフォルトの名無しさん:2008/08/07(木) 17:25:09
保存ボタンと読み込みボタンとコンボボックスとエディットボックスを使って、
コンボボックスはドロップダウンリスト形式にして、
リストが1.2.3.の三つを作ってドロップダウンリストから1を選んでから
保存ボタンを押すと1にエディットボックスのデータが保存されて、
2を選んでから保存ボタンを押すと2番に保存される、
読み込みボタンの方も同様に1を選んで読み込みを押すと1のデータが読み込まれる、
といったプログラムを作りたいんです。
それでコンボボックスをダイアログに貼り付けてOnSelchangeCombo1()
という関数を追加したんですがここからどうしたらいいのか分からなくて困ってます。
初心者でよくわからないので教えてもらえたらありがたいのですが。
保存ボタンと読み込みボタンはなんとか作りました。
ひとつしかデータセーブ出来ませんけど。
73デフォルトの名無しさん:2008/08/07(木) 17:28:51
>70さん
レスありがとうございます、試してみます。
74デフォルトの名無しさん:2008/08/07(木) 17:31:59
VC++6.0久しぶりに触ってみたけど、
変数の追加の部分は、右クリックでClassWizard...選んでメンバ変数から
該当のコントロール選んで変数の追加でカテゴリをコントロールにする、だな。
75デフォルトの名無しさん:2008/08/07(木) 17:32:29
70さんに教えてもらった方法を試したら値がとれました!
ありがとうございます。
76デフォルトの名無しさん:2008/08/07(木) 17:58:35
値は取れたのでこの値を使って
if(m_combo1.GetCurSel==0){0の場所に保存する}
という感じだと思うのですが、
すいません実は61からの質問全部僕のなんですけど、保存する場所を変えるにはszSection
を変えれば良いんですかね。
コンボボックスの関数追加しなくてもよかったのかな?
どうもわかりません、教えてもらえないでしょうか?


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

[section1]
key1=param1

という形式。
同じ項目ならkey1を増やせばいいし、カテゴリ増やすならsectionかえればいい。}
78デフォルトの名無しさん:2008/08/07(木) 18:47:15
ありがとうございます。
がんばってみます。
79デフォルトの名無しさん:2008/08/07(木) 20:14:50
おかげさまで保存ボタンの方は3つの場所に分けて保存する事が出来たっぽいんですが、
読み込みボタンで1番以外を選んで読み込むとフフフフフフフフとか出てきて
上手く読み込めません。
これはどういった現象なんでしょうか?
80デフォルトの名無しさん:2008/08/07(木) 20:40:06
>>79
debugビルドだよね?きっと「フ」じゃなくて「フ」だよね?
なら、プログラムが値を入れていない所を読み出したってこと。
http://www.google.co.jp/search?hl=ja&q=%EF%BE%8C%EF%BE%8C%EF%BE%8C%EF%BE%8C%EF%BE%8C%E3%80%80debug&lr=
81デフォルトの名無しさん:2008/08/07(木) 20:51:42
そうですフフフフフフフフフフフフです、
でもフフフフフフフフフが一瞬表示されてから、規定の範囲内の値を入れてください、
って警告が出た後、ちゃんと2番目のデータが表示されるんです。
なんで一番目だけうまくいくのか不思議です。
82デフォルトの名無しさん:2008/08/07(木) 20:51:55
charは1バイトだから8ビットときいたのですが
0〜255までの数値を入れることができるということですよね?
charに数値を入れるにはどうしたらいいですか?
83デフォルトの名無しさん:2008/08/07(木) 21:07:25
そのまま普通に数値を代入すれば良い
84デフォルトの名無しさん:2008/08/08(金) 04:56:56
お世話になります。

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

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

hoge.h
hoge.cpp

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


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

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

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

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

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

今まではCでソートだとか入出力みたいな勉強しかしてこなかったので、進んでいくうちに疑問がわいてきました。
できればレスお願いします・・・
86デフォルトの名無しさん:2008/08/08(金) 05:35:50
ヘッダファイルってのは要するにこんな関数
まあこの場合クラスだけど、どこかにはありますよと言う宣言だから

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

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

あと現場では良いとかじゃなくて普通そうするもの
87デフォルトの名無しさん:2008/08/08(金) 05:37:48
そんなのはメモリを相当喰うようなプログラムを作る時に考えれば良いんじゃない?
88デフォルトの名無しさん:2008/08/08(金) 05:52:30
>>86
ヘッダーについて回答ありがとうございます。

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

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

予想2のように、モジュールごとにプロジェクトを作成するのものなのでしょうか?
90デフォルトの名無しさん:2008/08/08(金) 09:49:02
>>84
cpp はコンパイルして obj になるだろ。
関数そのものは、このobjとリンクして使えるようになるんだよ。
その関数の使い方が書いてあるのがヘッダだし、
1つ以上のobjをまとめたものが lib ファイル。
91デフォルトの名無しさん:2008/08/08(金) 09:51:14
>>85
そのソートだって、膨大なデータをソートするとなると
オンメモリでできるのかどうかが重要になるでしょう。
ゲームで問題になるのは、リアルタイムで動作させなくちゃならないから、
できる限りオンメモリにしておく必要があるからな。
92デフォルトの名無しさん:2008/08/08(金) 12:44:52
>>89
モジュールごとにプロジェクトを作成する。
けど、上記のモジュールってできあがるファイルのことよ。exeとかlibとかdllとか。
もんの凄い強力な電卓でなければ、普通はGUIと計算を別モジュールに分けないでしょうね。
「分けるのが目的なんだ」ってことならば、分けるのは可能です。
93デフォルトの名無しさん:2008/08/08(金) 15:30:49
>>90
>>92
回答ありがとうございます。

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

94デフォルトの名無しさん:2008/08/08(金) 15:43:14
習うより慣れろ
95デフォルトの名無しさん:2008/08/08(金) 19:06:15
>>83
ありがとうございました
charに数値を入れることができました

ひょっとしてcharを配列にすると8Bit以上の数値を入れることもできますか?
96デフォルトの名無しさん:2008/08/08(金) 19:28:03
なぜ試さないの?
97デフォルトの名無しさん:2008/08/09(土) 00:04:46
>>85
分野にもよる。
家庭用ゲーム機は全体的にメモリが(同時期のPCと比べ)少ない場合が多いというだけ。
だからその分上手にやりくりしないといけない。
PCやサーバだとあまりそういう話は聞かない。無駄遣いは忌避されるべきだがそこまでシビアにはならない。
98デフォルトの名無しさん:2008/08/09(土) 00:13:04
使えるメモリは有効に使うべき。ってのがVista
99デフォルトの名無しさん:2008/08/09(土) 13:50:06
>>85
PSとサターンで同じゲームを作ったときは
どの文字を使うかってのも気を使ってた
同じシーンで使う文字種を減らしてフォント絵のメモリ節約とか
100デフォルトの名無しさん:2008/08/09(土) 13:53:12
音源仕様の差は面倒だったなぁ
101デフォルトの名無しさん:2008/08/09(土) 16:46:11
ここにはゲーム製作者もいるのかお
102デフォルトの名無しさん:2008/08/09(土) 16:50:39
ゲームってどうやって作ってたん?
キャラ動かしたりするのは元データがあって、それをプログラマーが動かしてたの?
プログラマーによって綺麗な画面になったり汚い画面になるとか聞いたことがあるが。。。。。。わからん
103デフォルトの名無しさん:2008/08/09(土) 16:53:19
ゲームとか今の話なのか昔の話なのかでかなり変わりそうだが
104デフォルトの名無しさん:2008/08/09(土) 16:55:51
昔のゲームのハードを調べるのがいい
105デフォルトの名無しさん:2008/08/09(土) 18:38:36
今の3DゲームはMAYAとかでモデリングした後に、そのデータを使ってフィールド上で動かすの?
それだとリアルタイムレンダリング?だからプログラマーの腕が問われるのかね。スレチだな
106デフォルトの名無しさん:2008/08/10(日) 16:47:15
C++で自分だけのライブラリーのようなものを作るにはどうやって
作っていったらいいのですか?

ソリューションライブラリーのようなものを作って、
プロジェクトごとにヘッダーを1つずつ作ればいいのでしょうか?
107デフォルトの名無しさん:2008/08/10(日) 19:04:48
106よろしく!
108デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/08/10(日) 20:29:08
1pCmdLineがいけない
110デフォルトの名無しさん:2008/08/10(日) 20:43:51
変数名の先頭って数字は使えなかったんじゃなかったっけ?
111デフォルトの名無しさん:2008/08/10(日) 21:10:24
>>109 >>110
言われた場所を変えてみたらできました!
ありがとうございました!
112デフォルトの名無しさん:2008/08/10(日) 22:25:33
106も答えてください
113デフォルトの名無しさん:2008/08/10(日) 22:39:30
自分がよそのlib使うときを考えたらわかるべ
114デフォルトの名無しさん:2008/08/10(日) 23:52:58
>>106
あまりしつこいと教えてくれないよ。
プログラマとはそんな性分の奴が多いw
115デフォルトの名無しさん:2008/08/11(月) 00:29:37
>>106
ここで聞いても自分で使う暮らすライブラリこりこり作ってる殊勝な人間は少ないから無駄
116デフォルトの名無しさん:2008/08/11(月) 05:49:57
そうなのか。
117デフォルトの名無しさん:2008/08/11(月) 06:03:37
そうなのだ。
118デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/08/11(月) 07:54:38
y = x % 1000;
じゃいかんのか?
120デフォルトの名無しさん:2008/08/11(月) 09:35:47
% 10がわかってて % 1000 が出てこないとはw
121デフォルトの名無しさん:2008/08/11(月) 13:24:21
質問です。
以下のページに記載されている内容と同じ問題が発生します。
http://m--takahashi.com/bbs/pastlog/05700/05696.html
TrackPopupMenu()の前後でSetForegroundWindow()とPostMessage(WM_NULL)を実行しましたが、
効果がありません。どうすればこの問題を回避することができますか?
122デフォルトの名無しさん:2008/08/11(月) 14:02:21
前後ってなんだよ。
TrackPopupMenuの前でSetForegroundWindowしてる?
どうしてもおかしいままなら、その部分のコード出してごらん。
123121:2008/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);
}
124121:2008/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デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/08/11(月) 15:50:02
>>125
プロジェクトのプロパティの「C/C++」の「コード生成」の「ランタイム ライブラリ」で指定する。
127デフォルトの名無しさん:2008/08/11(月) 18:53:08
keybd_event使って特定キーが押されてる間処理を繰り返したいのですが
voidだからwhileの条件式に入れれませんでした。
どうすればいいのでしょうか
128125:2008/08/11(月) 19:25:58
>>126
なるほど。オプションで指定するんですね。ありがとうございました。
129デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/08/12(火) 14:21:54
すいませんVC++6.0のMFCでCSVファイルを作るにはどうすればいいですか?
131デフォルトの名無しさん:2008/08/12(火) 14:22:53
>>129
std::vectorは一度確保したメモリはデストラクタを除き
自動的には解放されない。

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

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

もしくは

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

だった
133デフォルトの名無しさん:2008/08/12(火) 15:37:34
>>130
CSVといっても、所詮はテキストデータ
"123,456,789"
とういテキストデータで、ファイル化してみれば分かる
拡張子csvだと尚良し
134デフォルトの名無しさん:2008/08/12(火) 15:48:32
今乗り換えというかなれておかないと大変だと思うよ。
俺は趣味でやってるからいいんだけど。
135デフォルトの名無しさん:2008/08/12(火) 15:53:12
>>132
それをMyFuncの最後に書いてみたのですが、結果は変わらず…。
使い方が間違っているのでしょうか。

↓メモリ表示結果

0
68435968
7213056
136デフォルトの名無しさん:2008/08/12(火) 16:11:06
freeしてもOSにメモリが返されるわけではないし、
ワーキングセットなんてプログラム上の確保した量とはあまり関係がないし。
137デフォルトの名無しさん:2008/08/12(火) 17:25:11
>>132
前者はダメだ。
非constな参照引数に一時オブジェクトは渡せない
138デフォルトの名無しさん:2008/08/12(火) 17:51:38
質問させてください。
WINAPIでは、戻り値にTRUEかFALSEを多用している様に思うのですが、これは0か0以外の数値を
表しているのでしょうか?

たとえばマウスの左ボタンをクリックして、クリックされたら数字の1、されなかったら0を返す、という事?
いまいちイメージが掴めないのですが、0以外の数字が返された場合はその関数を正常処理する、という感じですか?
139デフォルトの名無しさん:2008/08/12(火) 18:11:12
MBCSの場合charに1バイトと2バイトの文字を混ぜた文字列を設定したとき
char[x]が1バイト文字か2バイト文字の前か後ろかを見分ける方法はありますか?

140デフォルトの名無しさん:2008/08/12(火) 18:27:31
>>138
あまり気にせず、結果をif文その他の条件判断で使える、位に思っていればいい。
141デフォルトの名無しさん:2008/08/12(火) 18:29:38
>>140
そうなんですか
なんかしっくりこなくて戸惑ってました。ありがとうございます
142デフォルトの名無しさん:2008/08/12(火) 18:30:04
>>139
MBCSの文字コードによるが、SJISだと前にさかのぼらないと判断できない。
UTF-8だと、1バイト文字か、2バイト以上の1バイト目かそれ以降かの判断はつく。
143デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/08/12(火) 18:39:52
>>142
つまり、コードによるけどふつうの1バイト文字と同じものが2バイトの前か後ろに
出る可能性はあるということですね

2バイト文字に含まれない文字ってないですかね〜
区切り文字として都合のいい文字を探してます
145デフォルトの名無しさん:2008/08/12(火) 19:52:52
>>136
なるほどです、ありがとうございました。
146デフォルトの名無しさん:2008/08/12(火) 21:16:15
>>144
所謂ShiftJISの2バイト目には、(単独なら)アルファベットと同じ文字コードも来れば1バイト目と同じコードも来る。
従って、前に遡って判定するか素直に頭から判定するか、対策が必要。
尤も、0x40未満のコードはShiftJISに使われないので'/'でも';'でも区切りに使えなくはないと思う。
147デフォルトの名無しさん:2008/08/12(火) 21:29:37
>>143
1の数字は、同じカテゴリでかぶらないようになってれば適当で良い。

2は、ダイヤログの大きさ。後ろ二つが幅と高さ。適当に変えてみるとわかるよ。
148デフォルトの名無しさん:2008/08/12(火) 22:31:47
>144
タブコードはダメ?
149デフォルトの名無しさん:2008/08/13(水) 02:03:57
>>146
0x40以下のコードを調べてみようと思います
ありがとうございました


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

TRACE出力にユニコード(漢字)文字列を出力するには、どうすれば良いのでしょうか ?
151デフォルトの名無しさん:2008/08/13(水) 18:28:49
>>147
助かります、どうもありがとうございました。早速やってみます。
152デフォルトの名無しさん:2008/08/14(木) 02:48:16
USBから受信したデータをキー入力に変えたいのですが
パソコンのキーボードでキーを入力したときに送られるメッセージってなんですか?
ソフトでこのメッセージを送ればキーボートと同じようなものも作れますか?
153デフォルトの名無しさん:2008/08/14(木) 02:58:31
USBから受信したでーた?

キー入力フックして入力内容をだますってことか?
それともソフトがキーが入力されたように振舞うってことか?
それなら最悪DDKとかめんどくさいのに手を出さないとだめかもな
どっちにしても何が言いたいのかよくわからん
エスパーな人よろしく
154デフォルトの名無しさん:2008/08/14(木) 09:33:08
別に受信するほうはすでにあるんだろ。
キーを送るのはウィンドウに限ればメッセージ送るだけでいいかもしれない。
155デフォルトの名無しさん:2008/08/14(木) 11:44:08
オートマウスでも作る気か?
MMORPGとかで不正行為する用か、三国人!
156デフォルトの名無しさん:2008/08/14(木) 16:24:45
初心者の妄想質問です。
例えば、1つのアプリケーションなのですが扱う機能が違う為に2つのウィンドウを開いて同時に使う、という場合には
どのようにしたらいいのでしょうか?

同じプロジェクト内ではなく、別々のプロジェクトでソースを書いていかなくてはならないのでしょうか?
またその際は、ハンドルの名前も別々にしなくてはならないのでしょうか?
157デフォルトの名無しさん:2008/08/14(木) 17:04:09
>>156
「一つのアプリケーション」が「一つの実行モジュール」を指すなら、逆に寧ろプロジェクトは一つにしないと(一般的には)ダメ。
一つのソースで複数のウィンドウの面倒を見るか、別のソースに分けるかは、使用するライブラリ次第。
# まぁ、普通分けるだろうけれど。
つーか、扱う機能が違うのに「一つのアプリケーション」にする理由がないなら分けた方が使い易くないか?
158デフォルトの名無しさん:2008/08/14(木) 17:28:32
>>152
ゲームパッドの入力をキー入力に変えたいのか?
だったら無理せずJoyToKey使え。
159デフォルトの名無しさん:2008/08/14(木) 20:53:15
>>153
PICとPCをUSBで接続していて、親指先が+で他4本が−のスイッチで組み合わせによるPCへのキー入力をしたいのですが、
PICまではできてるんですが、PCのキーボードでキーを押した時と同じようにPC上に送出する関数というかメッセージというか流れが知りたいのです。
160デフォルトの名無しさん:2008/08/14(木) 21:00:26
>>154
その辺の流れがちょっとわからないのですが、キーダウンメッセージはアクティブなウィンドウに対して受取分岐がソフト上にある場合に機能するもの
なんですよね。キーが押されたメッセージ事態を作り出すにはどうすればいいんでしょうか?
161デフォルトの名無しさん:2008/08/14(木) 23:47:50
Visual C++ 2008 Express Editionを落としてインスコしてて、諸事情でアンスコしてインスコし直そうと思ったのですが
どれをアンスコすればいいのかわかりません
C++をアンスコすれば全てアンスコされるのではなく、C++と一緒に複数同時にインスコされてました
それぞれ個別にアンスコしないといけないようです
C++ アンスコでぐぐっても的したページがヒットしません
どれを消すべきかわかる方いましたらお願いします
162デフォルトの名無しさん:2008/08/14(木) 23:48:28
アクティブじゃなくてフォーカスのあるウインドウ
163デフォルトの名無しさん:2008/08/14(木) 23:49:44
アンダースコートがどうしたって?
164デフォルトの名無しさん:2008/08/15(金) 01:35:20
アポリケーションの追加と削除で、VCEEとインストロール日時が同じで、見覚えの無いやつを全部消しちゃえば?
165デフォルトの名無しさん:2008/08/15(金) 01:56:31
SQL Server CompactとWindows SDKとあと何があったっけ?
166デフォルトの名無しさん:2008/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
167161:2008/08/15(金) 09:12:27
(TдT)アリガトウございました無事インスコ出来ました
168121:2008/08/15(金) 16:16:15
コードに問題があれば指摘してください。
以下のページに記載されている方法を試しましたが、効果がありません。
http://homepage3.nifty.com/endou/tips/04/tips39.htm
本体のウィンドウでは、このような現象は起きません。
開発環境はVC++ 2008 Express Editionです。WindowsXP SP3で動作確認しています。
169デフォルトの名無しさん:2008/08/16(土) 13:39:15
これまではC言語の学習用にEmacsを使用していたのですが、今回VisualStudio2008を購入しました。
そこで質問なのですが、VisualStudio2008にはEmacsのようにtabキーを押したときに必要なだけ字下げする機能がありますか?
170デフォルトの名無しさん:2008/08/16(土) 20:18:08
複数行選択時の、TAB、ShiftTABの動作が近い?
171デフォルトの名無しさん:2008/08/16(土) 20:22:56
>>169
とりあえずキーバインド設定は変更したのか?
172デフォルトの名無しさん:2008/08/16(土) 20:48:58
ちょっと質問があります。

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

この二つは何か違うのでしょうか?
上のやつは #include <cctype> しないといけないようだが・・・
173169:2008/08/16(土) 21:20:11
キーバインド Visual Studioで検索したらやり方がわかりました。
どうもありがとうございました。
174169:2008/08/16(土) 22:53:11
インデントはEmacsのようにできるのですが、
データの保存など他のキーの設定もEmacsのものになってしまいました。
インデントだけをEmacsのものにする方法はありますか?
175デフォルトの名無しさん:2008/08/17(日) 02:19:20
そうきたか、
コマンド検索のとこに「インデント」っていれて
適当なコマンドと設定を入れ替えろ

あと、プログラマ志望なら
今のうちにEmacs操作覚えた方が良いぞ、楽だから
vi派って訳じゃないんだろ
176デフォルトの名無しさん:2008/08/17(日) 02:51:42
( ´д)ヒソ(´д`)ヒソ(д` )今時Emacsだって・・・
177デフォルトの名無しさん:2008/08/17(日) 04:41:46
最近の流行はなんなんだ?
178デフォルトの名無しさん:2008/08/17(日) 06:58:46
スレ違いかもしれませんが、教えてください。
Microsoft Visual C++ 2008 再頒布可能パッケージ (x86)をダウンロードしてきて
インストールしたのですが、インストールディレクトリが”一番空き容量が多いドライブの直下”に
インストールされてしまいます。これは仕様なんでしょうか?
179デフォルトの名無しさん:2008/08/17(日) 10:39:00
テンポラリ展開じゃなくて?
180デフォルトの名無しさん:2008/08/17(日) 11:17:04
>>179
一時ファイルのようで、展開されたファイルは削除しても問題ないっぽいです。
お騒がせしました
181デフォルトの名無しさん:2008/08/17(日) 13:53:54
Visual C++ 2008 Express Editionで、
ファイル → 新規作成 → プロジェクト → Win32 コンソールアプリケーション

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

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

どうしたら開いたままにしておけるのでしょうか?
182デフォルトの名無しさん:2008/08/17(日) 14:31:25
あるあるw
どうするんだろ

出力ウィンドウにも何も出ない?
183デフォルトの名無しさん:2008/08/17(日) 15:16:03
「○○を読み込みました」・「シンボルが読み込まれました。」
っていうのが4行と、
あともう1行、
「プログラム○○はコード0(0×0)で終了しました。」
っていうのが出ます。
コード0っていうのはreturn 0にしたからだと思うんですが…。
184デフォルトの名無しさん:2008/08/17(日) 15:19:07
邪気眼がどーのこーの
185デフォルトの名無しさん:2008/08/17(日) 15:35:48
>>181

同じく初心者で、昨日から始めたんですが
returnの前に、文字を入力する関数を入れることで対処してます。
Cだと
scanf("%d",n);
とかなんですが。
186185:2008/08/17(日) 15:38:07
ごめん。
今見たら
scanf("%d",&n);
でした。もちろん、先にnは宣言するものとして。
でもC++だと入力するための関数違うと読んだ気も。
187デフォルトの名無しさん:2008/08/17(日) 15:40:48
Ctrl+F5でいいじゃね?
188デフォルトの名無しさん:2008/08/17(日) 15:45:39
そうか、、、
とりあえず、
・確認したいだけなんだったら、stderrでメッセージ出せる
・あと処理の最後に無限ループ入れる
189デフォルトの名無しさん:2008/08/17(日) 15:46:25
>>187
ガチで知らなかったんだがw
190デフォルトの名無しさん:2008/08/17(日) 15:50:17
全ての質問が初心者ではなく初心者を装った釣師によるものだと仮定して
いかにうまくボケるかを競いあう
ここはそういうスレの一つだと思い込んでいる
191デフォルトの名無しさん:2008/08/17(日) 16:01:39
>>190
ガチで知らなかったんだがw
192181:2008/08/17(日) 16:30:01
>>185,>>187,>>188
出来ました!ありがとうございます!
193デフォルトの名無しさん:2008/08/17(日) 16:42:45
dialogBoxにPostMessageしても届かないんだが、ちなみに
PostMessage(hDlg,0x500,123,456);
なぜだ?
194デフォルトの名無しさん:2008/08/17(日) 16:52:28
お前ぜんぶ聞く気だろ
調子乗んな
195デフォルトの名無しさん:2008/08/17(日) 20:53:27
アふぉはだまっとれ
196デフォルトの名無しさん:2008/08/18(月) 10:52:14
>>185
getchar()でいいじゃん。わざわざ変数を用意する必要があるscanf()を使うのはナンセンスだ。

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

>>181
cmd動かしておいて、コマンドラインから動かすって手もあるよ。
197デフォルトの名無しさん:2008/08/18(月) 10:58:29
昔から、return 0; の部分にブレークポイント置いている。
まあデバッグ必要ないときはCtrl-F5だが。
198デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/08/18(月) 17:45:36
>>196
>getchar()でいいじゃん。

あらほんと。今度からこっち使います。
ありがとう。
200デフォルトの名無しさん:2008/08/18(月) 18:39:01
VC使ってるならsystem("pause");でいいかと
201デフォルトの名無しさん:2008/08/18(月) 20:15:09
変なクセつけちまうから
getchar()で良いでしょ
202デフォルトの名無しさん:2008/08/18(月) 23:10:13
>198
たしかWindowsが隠して格納してる8.3なファイル名がひっかかるんだな。
Short Filenameってやつ。findfirstしてあらためて排除するとか。
203デフォルトの名無しさん:2008/08/19(火) 02:02:38
メソッド名の頭にアンダーバー付いてるのとか
何か意味があるのですか?
204デフォルトの名無しさん:2008/08/19(火) 02:21:43
205デフォルトの名無しさん:2008/08/19(火) 12:28:52
ありがとう
206デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/08/20(水) 08:00:59
インストーラが一時ファイルを展開したんだろ。
208デフォルトの名無しさん:2008/08/20(水) 09:56:20
VS2008のインストールしたんだろうな
209デフォルトの名無しさん:2008/08/20(水) 11:36:28
インストーラって怖いな
210デフォルトの名無しさん:2008/08/20(水) 12:32:56
やっぱりか
2005は初めから入ってたんだけど、これって勝手に更新したりするものなの?
2008なんてインストールした覚えがないし、気味わるいからアンインストールしたいんだけど。。
211デフォルトの名無しさん:2008/08/20(水) 12:47:25
別に一時ファイルだし勝手に消せば?
とりあえずそのファイル群は再配布可能なやつだと思うから
なんかのソフトが必要としたんじゃないの?
2008というのは2007/11/20だからそう思ったんだけど。
212デフォルトの名無しさん:2008/08/20(水) 13:03:48
なんかのソフトが必要としてるんならアンインストールしないほうがいいね。。
一時ファイルだけ削除しておく。
>>207-210サンクス
213デフォルトの名無しさん:2008/08/20(水) 13:03:53
> 2005は初めから入ってたんだけど、
VisualStudioプリインストールなんてどこで売ってるの??

> これって勝手に更新したりするものなの?
しない。
214デフォルトの名無しさん:2008/08/20(水) 13:06:36
visualstudioというのははいってなかった。
visualC++2005Redistributableというのが初めからはいってた。
215デフォルトの名無しさん:2008/08/20(水) 13:12:58
それはランタイム。VCどころかパソコン初心者レベルの話になってきたな・・・
216デフォルトの名無しさん:2008/08/20(水) 19:01:21
そのランタイムというやつは消しても問題ない?
217デフォルトの名無しさん:2008/08/20(水) 19:23:17
消すな。最初から入ってたということは他のソフトが使ってる。
218デフォルトの名無しさん:2008/08/20(水) 20:57:37
Visual Studio2003でWindowsプログラムを作ってるんですが、
よくバグってメモリリークしたり、既に解放済みのアドレスを解放したりしてます。
そういうのって、PCに悪影響は無いんでしょうか?
219デフォルトの名無しさん:2008/08/20(水) 21:11:17
悪影響はあります
220デフォルトの名無しさん:2008/08/20(水) 21:28:19
>>217
最初から入ってたのは2005。
今日気づいたら2008がインストールされてた。
まぁ気にしないことにする。
221デフォルトの名無しさん:2008/08/20(水) 21:35:34
>>220だけど自己解決。
BUFFALOの
ttp://buffalo.jp/products/catalog/multimedia/chideji/streamtest.html
をインストールしたときに一緒についてきたみたい
222デフォルトの名無しさん:2008/08/20(水) 22:02:47
>>220
気付いたらってどういう意味だおいw
223デフォルトの名無しさん:2008/08/20(水) 23:41:28
>>222
もう放っとこうぜ

>>218
OSがうまくやってくれる、たぶん
224デフォルトの名無しさん:2008/08/21(木) 13:36:39
ちょっとよろしいでしょうか?
MFCを勉強しようと思って
http://www.kumei.ne.jp/c_lang/mfc/mfc_01.htm
のページのコードをコンパイルしてみて
うごいたのですが
プロジェクトの設定は「MFCを使用しない」に
なっていても問題ないみたいなのです。
MFCを使っているのに「MFCを使用しない」でよいのでしょうか?
225デフォルトの名無しさん:2008/08/21(木) 13:48:07
>>224
そんな設定どこにあった?
基本的にMFCを使うかどうかはヘッダのincludeとリンクするライブラリで決まる。
226デフォルトの名無しさん:2008/08/21(木) 14:05:37
>>225
なるほど。MFCを使用するかしないかを変更することによって
リンクするライブラリやコード生成のオプションが変わるみたいです。
なのでMFCを使用するかしないかの設定はあくまで
テンプレートということですね。
やっぱウィザードに頼っているとだめっすね。
227デフォルトの名無しさん:2008/08/21(木) 14:16:49
やべー
なんかMFCマスターした気がする
228デフォルトの名無しさん:2008/08/21(木) 14:19:55
おめでとう
229デフォルトの名無しさん:2008/08/21(木) 14:26:17
ありがとう
230デフォルトの名無しさん:2008/08/21(木) 14:38:50
オナニーマスター黒沢
231デフォルトの名無しさん:2008/08/21(木) 14:57:30
http://fatalita.sakura.ne.jp/3DLib/Ref/_T/
にCStringはマルチスレッドに対応してないって書いてあるんだけど
マジで?
やべーじゃん。
232デフォルトの名無しさん:2008/08/21(木) 15:43:32
>STLのstring型やwstring型は利便性においてはCString型にあるマルチバイトとユニコードの相互変換機能が無い分劣りますが、
>スレッドセーフである為classやtypedef内の変数に宣言するのに向いています。
>マルチスレッドで文字列を扱う際にはstring型かwstring型を使いましょう。

大嘘やん。標準にはスレッドの概念が無いし、スレッドセーフかどうかは実装依存になる。
CStringも使い方さえ間違わなきゃマルチスレッドで使える。
ttp://msdn.microsoft.com/ja-jp/library/h14y172e.aspx
233デフォルトの名無しさん:2008/08/21(木) 15:47:26
なーんだ
234デフォルトの名無しさん:2008/08/21(木) 15:48:29
そして、VC++のstd::stringはどうかというと、こうなっている。
http://msdn.microsoft.com/ja-jp/library/c9ceah3b.aspx
ちゃんとやらないとだめだという点でCStringと互角。
235デフォルトの名無しさん:2008/08/21(木) 19:32:26
charに0〜255の数値を設定することはできるようですが
char[]にintやfloat等の数値を設定したり取得するにはどうすればいいですか?
236デフォルトの名無しさん:2008/08/21(木) 19:39:53
union使うかビットシフトかキャストで。
目的による。
237デフォルトの名無しさん:2008/08/21(木) 20:50:24
型について学び直せ。
238デフォルトの名無しさん:2008/08/21(木) 21:13:58
文字列として受け取って変換するとかの話?
239デフォルトの名無しさん:2008/08/21(木) 23:59:01
>>236

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

こうですか?
キャストできませんでした
240デフォルトの名無しさん:2008/08/22(金) 00:28:12
一体何がしたいんだ
241デフォルトの名無しさん:2008/08/22(金) 01:03:46
冗談きつすぎるだろこれは…
242デフォルトの名無しさん:2008/08/22(金) 09:30:00
int型をchar型に入れなきゃならない理由を述べよ。
243デフォルトの名無しさん:2008/08/22(金) 09:46:01
>>239
あえてそういう風にキャストしたいのなら、例えば・・・
*(int *)&ic[0] = i;
とか
244デフォルトの名無しさん:2008/08/22(金) 10:00:39
&と[0]は説明のためにあえて入れただけでなくてもいける
245デフォルトの名無しさん:2008/08/22(金) 10:10:37
memcpyでいいじゃん
246デフォルトの名無しさん:2008/08/22(金) 18:43:37
>>242
ネットでデータ送るときに、パケットサイズを固定長にしたいときとか
247デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/08/24(日) 09:34:37
C++を仕事で扱い始めて自宅でも勉強したいと思っています。

そこで質問なのですがVISUAL STADIOの学生用の安いものとそうでないものとの間で機能に差はありますか?
249デフォルトの名無しさん:2008/08/24(日) 09:46:05
>>248
C++の勉強よりも、英語を始めとした一般常識を身につけることをこそ、お勧めします。
250デフォルトの名無しさん:2008/08/24(日) 14:12:06
>>248
仕事してるんじゃないのか?
なで学生用なんだ
経費で落とせないのか?
251デフォルトの名無しさん:2008/08/24(日) 14:29:10
EEならフリーで学生じゃなくても手に入れられます。
252デフォルトの名無しさん:2008/08/24(日) 15:53:05
EE(笑)
253デフォルトの名無しさん:2008/08/24(日) 16:01:34
っGCC/G++/MINGW
254248:2008/08/24(日) 19:08:08
愚かなのでわかりません(´・ω・`)

あくまで個人で勉強したいので…
255デフォルトの名無しさん:2008/08/24(日) 20:09:08
gcc makefileのあたりからじっくり、やったほうがいい腕になるよー
256デフォルトの名無しさん:2008/08/24(日) 21:16:22
>>254
Visual Studio 2008のAcademicはProfessionalと同じ。
だから、同じのが欲しければProfessionalを買え。
違うのがほしければそれ以外を選べ。
257デフォルトの名無しさん:2008/08/24(日) 22:54:44
Visual Studio Express Edition でググれ

と一言書いてやれば済むのに
おまえらほんとに卑屈だな
258248:2008/08/25(月) 06:30:55
>>256
>>257
ありがとうございます。
259デフォルトの名無しさん:2008/08/25(月) 12:12:39
質問させてください・・・
www.geocities.jp/ky_webid/win32c/010.html
このページの、
・最初にクリックした点から、次にクリックした点までを結ぶ直線を描くプログラムを作って下さい。
という例題は、どの様に書いたらいいのでしょうか?
if文を使うのかと思ったのですが、頭が悪くてswitch文とうまくあわせられません・・・
大変申し訳ありませんが、どなたか教えてもらえないでしょうか?もうだめぽ・・・><
260デフォルトの名無しさん:2008/08/25(月) 12:17:57
>>259
そのページを読んでいるのだから直線を描画するプログラムは作れるよね?
そのページの前提としてクリックした座標を取得するプログラムも作れるよね?
後は組み合わせるだけだから頭の良し悪しは関係ない。
261デフォルトの名無しさん:2008/08/26(火) 00:47:46
dllのインクルードというかリンクの仕方を教えてください
262デフォルトの名無しさん:2008/08/26(火) 00:52:05
久々にVC++(2008)を使っているんだけど、
構造体のデータを簡単に表示とかいう拡張機能
できたりしていない? マネージドじゃない状態で。

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

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

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

pdb漁ってBinaryHackするとかしか思い浮かばないヨ
264デフォルトの名無しさん:2008/08/26(火) 01:09:16
プログラム中なら、hoge.(ココでCTRL+SPACE)
デヴァグ中なら、ローカル変数とかそういうの。

それ以外は知らん。
265デフォルトの名無しさん:2008/08/26(火) 09:41:11
>>261
そのDLLに対応したインポートライブラリとリンクするか
実行時にAPIでロードして呼び出す。
インポートライブラリはDLL作成時にできるが、
DLLからLIB.EXE等を使って作ることもできる。
266259:2008/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;
267259:2008/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デフォルトの名無しさん:2008/08/26(火) 14:36:45
case WM_LBUTTONDOWN:が2個あるぞ。
どっちかはWM_LBUTTONUPの間違いだなんてことない?
269デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/08/26(火) 14:41:00
それ、いつまでもindexが0だと思うんだ。
271デフォルトの名無しさん:2008/08/26(火) 14:41:39
と、入れ替えるのか、失礼
272デフォルトの名無しさん:2008/08/27(水) 16:34:08
Visual C++ 2008 EE で、C++ではなくC言語を使うにはどうすれば良いのでしょうか
273デフォルトの名無しさん:2008/08/27(水) 16:38:15
ソースファイルの拡張子を.cppから.cに変える
274デフォルトの名無しさん:2008/08/27(水) 17:22:17
Visual C++ 2008で、フォームを複数使用しているのですが、
変数の値を他のフォームに渡すことは可能ですか?
275デフォルトの名無しさん:2008/08/27(水) 17:46:46
可能です。
276デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/08/27(水) 23:15:11
C:\Program Files\Microsoft SDKs\Windows\v6.0A\lib
278276:2008/08/27(水) 23:33:57
>>277
ありがとうございます
279デフォルトの名無しさん:2008/08/28(木) 08:45:12
>>275
どうやって渡すのか教えて下さい
280デフォルトの名無しさん:2008/08/28(木) 09:09:18
ケースバイケース
281デフォルトの名無しさん:2008/08/28(木) 09:30:15
アンケートの質問を複数のフォームに書いて、最終的にその回答
(はい、いいえ、どちらでもない)を質問のフォームとは別の
フォームに出力したいと思っています。フォーム1の質問で集めた回答を
それぞれの変数に入れ、その値をフォームに2にも引き継ぎ、変数にはフォーム1と
フォーム2の値が入っているようにしたいのですが・・・教えていただけませんか?
282デフォルトの名無しさん:2008/08/28(木) 09:43:53
受け渡しするpublicなメソッド書くとか、プロパティにして読み書きすればいいじゃん。
普通のことなのに、何がひっかかってるのかがわからん。
283デフォルトの名無しさん:2008/08/28(木) 10:23:19
ご回答ありがとうございます。
プログラミングはC言語を2ヶ月ほどしか学んでいなく、
Visual C++ 2008 EEも使用して2日しか経過していない
ので分かりませんでした。publicやメソッドの意味を
調べようと思います。
284デフォルトの名無しさん:2008/08/28(木) 11:14:08
まずC++/CLIを勉強しないとな。
つか.NET使うんならC#の方がいいぞ。
285デフォルトの名無しさん:2008/08/28(木) 18:55:08
.netつかうならどう考えてもC#のほうが…
C++.net好んでつかってるやついるの?
いたら何がいいのか教えて欲しいくらい
C++のメリットドブにすててまで.netする意味がわからない
286デフォルトの名無しさん:2008/08/28(木) 18:58:41
でもC++/CLIはマジで最強だよ
287デフォルトの名無しさん:2008/08/28(木) 19:04:27
>>285
283のようなやつは時々現れるが、
単にC++→フォームアプリケーションでプロジェクト作っただけで、
好みではなく気付いていないだけだと思う。
288デフォルトの名無しさん:2008/08/28(木) 19:42:19
C#はフリーの逆アセツールでソースが丸見えなのが嫌でC++使ってまふ
289デフォルトの名無しさん:2008/08/28(木) 19:52:23
>>286
C++習熟してて
なおかつC#とかで.netつかってるなら
本当に最強かもしれんね

>>288
あとランタイム配布とかめんどくさいの考えると
本気で配布するソフトはあまりC#つかわないのよね
XNAのやる気のなさに絶望して近頃C++しかつかってない
290デフォルトの名無しさん:2008/08/28(木) 19:53:24
C++/CLIは逆汗してもソースでないの?
291デフォルトの名無しさん:2008/08/28(木) 19:57:08
やっぱVC++6.0が一番頭よさそうに見えるからつこてる
292デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/08/28(木) 22:42:44
regsvr32.exeをデバッグしてるって
マイクロソフトの中の人ですか?
294デフォルトの名無しさん:2008/08/28(木) 23:05:59
>>293
結構大きなフリーのライブラリのソースをダウンロードしてきてコンパイルしたのですが、
コンパイル終わって実行する前に、登録するために使うプログラムを選択しろみたいな
メッセージが出てきて、適当にデフォルトのを選択しておいたところ、292みたいな状態になって
しまいました。
ずっとLinux使ってたので、もしかしてすごく見当はずれな質問してるかもしれませんが、
いろいろ検索してもなにも引っかからなかったし、どうすればよいか、ヒントでもよいので
ください。
295デフォルトの名無しさん:2008/08/29(金) 03:44:16
String^ s = "A";
for( int i=0; i<26; i++ ){
〜何か操作〜
func( s );
}

こんな感じで、func()に、「A〜Z」まで文字列を渡したいのですが、どんな操作をするとスマートに出来ますでしょうか?
296デフォルトの名無しさん:2008/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() );
}
297295:2008/08/29(金) 04:19:47
他にも使用していたので、前者を使わせてもらいました。
ありがとうございます。
298デフォルトの名無しさん:2008/08/29(金) 11:04:43
>>292
>ライブラリとかじゃない、普通のプログラムをデバッグしようとしているのですが、

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

どっちなんだ。
299デフォルトの名無しさん:2008/08/29(金) 18:20:27
ダイアログボックスでボタン配置したときは
プロパティからデフォルトボタンに設定できるけど
CreateWindowで配置したボタンを
デフォルトボタンにするにはどうしたらいいですか?
300デフォルトの名無しさん:2008/08/29(金) 18:30:13
作った後?
作るときなら、BS_DEFPUSHBUTTON
301デフォルトの名無しさん:2008/08/29(金) 18:43:58
>>300
作ったあとに
デフォルトボタンにしたり、しなかったり したいです
302デフォルトの名無しさん:2008/08/29(金) 19:14:06
あとでスタイル変えるのは SetWindowLongでできるけど、
どうなるかはわからん、他のボタンのDEFも外さないと無理かも?
見た目はDM_SETDEFID送ればいいみたいだけど。
303デフォルトの名無しさん:2008/08/29(金) 19:18:01
BM_SETSTYLE でもいけた。まあいろいろやってみ
304デフォルトの名無しさん:2008/08/29(金) 19:28:50
>>298
すいません。
結構大きなライブラリのソースをダウンロードしてきて、それをコンパイルした後、付属の
サンプルコード(こいつは結構小さい普通のプログラム)をコンパイルしようとしたんです。
なんでどっちも本当です。
結局まだわからないので、スタティックライブラリを自分で作って勉強してみてます。
でもregsvr32.exeなんて使わないっぽい。

スタティックなライブラリをデバックするときって、regsvr32.exeを使いますか?
手順としてはこんな感じ。
(1)ライブラリ作成(名前はStaticLibrary.libとします)
(2)regsvr32.exe \i StaticLibrary.lib
(3)このライブラリをつかうサンプルプログラムを作成してデバッグ。
305デフォルトの名無しさん:2008/08/29(金) 19:32:48
それはない。
regsver32の対象になるのはDLLだけ。
306デフォルトの名無しさん:2008/08/29(金) 20:29:23
>>304
exeのプロジェクトのプロパティの「デバッグ」の「コマンド」がregsvr32になってるのかな。
空にしてok押してみて。”$(TargetPath)”が入ると思う。

新しいプロジェクトを作るときのウィザードで選択を間違えたのかな。
307デフォルトの名無しさん:2008/08/30(土) 01:12:35
>>304
ありがとうございます。おっしゃるとおりになってました。
そこを空にして、追加のインクルードパスにboostを追加して、F7でビルドするとビルドできました。
その後、同じソリューションの中のほかのサンプルプログラムをコンパイルするごとに追加の
インクルードパスにboostを追加する、という作業が必要だったのですが、これはしょうがないですか?
どこかで設定すれば同じソリューション内なら一度の追加ですむとか、そういうことはできないですか?
308デフォルトの名無しさん:2008/08/30(土) 12:47:12
 VS2008を使っているのですが、newで確保したクラスの動的配列の内容を
デバッガで全て表示させるにはどうしたらよいのでしょうか?
STLのstringやvectorだと上手く表示されているのですが、何かいい方法があるのしょうか?
どなたか教えて下さい。
309デフォルトの名無しさん:2008/08/30(土) 15:57:21
変数の後ろに、カンマと数字で
310デフォルトの名無しさん:2008/08/31(日) 13:09:13
>>309
 最初何のことだか分からなかったのですが、ググって見てようやく分かりました。
御回答どうもありがとうございました。
一応他の方の参考になるかもしれないのでリンク張っておきます。
ttp://support.microsoft.com/kb/198953/ja

 他にもautoexp.datを使う方法もあるみたいですね。
ttp://www.cycleof5th.com/tips/index.php?date=2007-05-13
ttp://blogs.wankuma.com/melt/archive/2007/10/01/98927.aspx
311デフォルトの名無しさん:2008/08/31(日) 17:21:03
某動画を見ながらVC++2008をインストールしたのですが
新規作成-プロジェクトの
「VisualC++」の「空のプロジェクト」実行で
ソース、リソース、ヘッダーファイルが出なく(組み込まれなく?)なりました
どこかさわってしまったらしく元に戻せません

超初歩的だと思いますが宜しくお願いします。
312デフォルトの名無しさん:2008/08/31(日) 17:41:32
「空のプロジェクト」なんだから、そういうのが無くて当たり前。
313311:2008/08/31(日) 18:34:37
http://www.nicovideo.jp/watch/sm4250927
この動画の1’28”くらいのところなんですが
空のプロジェクトなのに3ファイルが組み込まれてるんです

なにか設定を変えているとかでしょうか?
314311:2008/08/31(日) 18:43:15
連投すいません
他の説明動画で解決できました。
前の動画は編集されてたのかな?
315デフォルトの名無しさん:2008/08/31(日) 19:11:35
こんな動画まであるのか。
ホントになんでもあるなw
316299:2008/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デフォルトの名無しさん:2008/08/31(日) 23:45:49
Enter打つとボタンが押されたことになるって挙動が欲しいなら、
ボタンのIDをIDOKにして、メッセージループにIsDlgMessageを組み込むじゃなかったっけ。
318デフォルトの名無しさん:2008/09/01(月) 00:55:14
テキストボックスに入力中にリターン押したときに
ある関数を実行したいんですが
ダイアログのときはデフォルトボタンで代用してました
VBとかでいうところのkeydownイベントのときにキーコードがリターンか調べて
リターンなら処理をする みたいな挙動がほしいです

IsDlgMessageでググったら日本語のページがひとつもないといふ
319デフォルトの名無しさん:2008/09/01(月) 01:55:10
じゃあ、IsDialogMessageでググってみて
320デフォルトの名無しさん:2008/09/01(月) 04:19:22
>>315
そして、
本と同じで、こういう動画も初学者向であふれるんだろなw
321デフォルトの名無しさん:2008/09/01(月) 17:48:26
>>319
ググったけどよくわからんかった
モードレスダイアログにしてIDOK受けるみたいな感じに解釈したんだけど
コントロールのサブクラス化のほうが理解しやすかったんでそっちにしました

ありがとうございました
322デフォルトの名無しさん:2008/09/01(月) 19:49:31
すいません。
これからVisual C++ 6.0を勉強をしようと思っているんですが、
初心者向きのわかりやすい参考書があれば教えて下さい。
よろしくお願いします。
323デフォルトの名無しさん:2008/09/01(月) 20:12:44
>>322
本題(参考書の紹介)にレスできなくてごめん。

これから勉強するのに、なんでvc6なのだ?
vc6はc++の規格が固まる前のものでオススメでない。
vc9(vs2008)でいいじゃないか。
324デフォルトの名無しさん:2008/09/01(月) 21:15:53
VC6使ってるけどC++の規格で困ったことなんかないな
325デフォルトの名無しさん:2008/09/01(月) 21:21:02
>>323
そうなんですか?
しかし会社で使用する開発環境が6.0らしいんですが・・・
vs2008はOSが2000なのでインストール出来ませんが、
vs2005ならインストールしています。
vs2005を勉強すればvs6.0にも応用出来るのでしょうか?
そういうことでしたらvs2005で勉強してみます。
326デフォルトの名無しさん:2008/09/01(月) 21:24:29
会社で使うという事情なら6.0にしておけ。
327デフォルトの名無しさん:2008/09/01(月) 21:25:37
ちゃんとライセンスがあるのか心配なレスだなしかしw
328デフォルトの名無しさん:2008/09/01(月) 21:33:29
そうですね。
やはり6.0を勉強します。
話は戻りますが、初心者向きのわかりやすい参考書が
あれば教えて下さい。
329デフォルトの名無しさん:2008/09/01(月) 21:40:02
VCの場合はCかC++がある程度使えないと初心者以前なので
勉強してから出直して来てください。
330デフォルトの名無しさん:2008/09/01(月) 21:44:23
山本信雄のシリーズは入りとしては最高

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

>>329
VC++とC++ってそこまで違うものですか?
331デフォルトの名無しさん:2008/09/01(月) 21:53:29
C++はプログラミング言語
VC++はマイクロソフト社製の開発環境
332デフォルトの名無しさん:2008/09/01(月) 21:59:50
そっか

VC++はVSのC++コンパイラ群のことだと思ってた
333デフォルトの名無しさん:2008/09/01(月) 22:08:30
ライセンスなんてそんなに(・ε・)キニシナイ!!
334デフォルトの名無しさん:2008/09/01(月) 22:12:31
libviscawinの使い方教えてください
ていうかどこで聞けばいいですか?
335デフォルトの名無しさん:2008/09/01(月) 22:19:35
VC++単体パッケージにはコンパイラしかついてないのか
336デフォルトの名無しさん:2008/09/01(月) 22:59:15
>>332
いやまあその理解でもあまり困らないと思う。
337デフォルトの名無しさん:2008/09/01(月) 23:25:10
まぁ、VC6と言うとMFCを使えることを想定されるな。
338デフォルトの名無しさん:2008/09/02(火) 00:11:16
win32だったらprograming windows (ペゾルド) C言語を知っている前提
MFCだったら標準口座MFC6.0(シルト) C++のクラスぐらいまで知っている前提
339デフォルトの名無しさん:2008/09/02(火) 07:41:32
main( )で始まるプログラムとMFC使ったプログラムは勝手が違うな
340デフォルトの名無しさん:2008/09/04(木) 01:35:06
ポインタをヘッダファイルで定義して、複数のソースから使用します。
そこでヘッダ宣言時に"_declspec(selectany)"で書くと、リンカエラーもなくビルドできます。
この"_declspec(selectany)"とは、どういったものなのでしょうか?
341デフォルトの名無しさん:2008/09/04(木) 01:52:49
>>340
その通りの効果。リンク時に重複した定義を許し、1つにまとめる。
http://msdn.microsoft.com/en-us/library/5tkz6s71.aspx
342デフォルトの名無しさん:2008/09/04(木) 21:03:54
WM_PAINTメッセージの処理で、クライアント領域の左側を白、右側を黒に塗り潰すとして、
再描画が必要な領域で条件分岐して、
343デフォルトの名無しさん:2008/09/04(木) 21:06:21
途中で送信してしまいまして、すいません。

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

描画が必要ない領域を塗り潰しても、結局システムは何もしないと思って
両方とりあえず描画するのか、どちらが一般的なんでしょうか
344デフォルトの名無しさん:2008/09/04(木) 21:55:55
領域を指定する
345デフォルトの名無しさん:2008/09/05(金) 13:16:31
クライアントエリアの中は全部描く
クリッピングは速度のためにある
346デフォルトの名無しさん:2008/09/06(土) 10:23:30
昨日勉強始めました。

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

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

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

環境はVisualC++2008 Expressで、コードはチュートリアル用にダウンロードしたもの。
元のコードはVisualC++6で書かれたようです。
347デフォルトの名無しさん:2008/09/06(土) 10:40:55
それ理解できないなら別のことやった方がいい
348デフォルトの名無しさん:2008/09/06(土) 11:08:18
どっかでひろってきたサンプルのコンパイル方法か
349デフォルトの名無しさん:2008/09/07(日) 21:02:29
>>273について誰か教えてください。よく理解できません。
350デフォルトの名無しさん:2008/09/07(日) 21:07:28
351デフォルトの名無しさん:2008/09/07(日) 21:11:23
特に指定がない場合はコンパイラが拡張子見てどっちか判断する
352デフォルトの名無しさん:2008/09/07(日) 23:33:38
授業でbccを使って書いたプログラムのソース(問題.c)をVisual C++で流用しようとしたら
1>cl : コマンド ライン error D8045 : C ファイル '.\問題.c' を /clr オプションと共にコンパイルできません
というエラーが出てコンパイルが完了しません。どうしたらよいでしょうか?
353デフォルトの名無しさん:2008/09/07(日) 23:48:54
プロジェクト作るときにWin32を選ぶ。
CLR選んだらCは使えない
354デフォルトの名無しさん:2008/09/08(月) 00:02:52
>>353
ありがとうございます。
しかし今度は
「プリコンパイル ヘッダー ファイルが旧バージョンのコンパイラで作成されています。また、C++ のプリコンパイル済みヘッダー ファイルを C で使用しています (その逆も考えられます)。」
というエラーがありました。
355デフォルトの名無しさん:2008/09/08(月) 00:10:12
>>354
空のプロジェクト作って追加するのがいいと思うけど、
cppのプロジェクト作って追加したのなら、ソリューションエクスプローラーのとこで
該当ファイル右クリックしてプロパティ出して、C/C++のプリコンパイルヘッダーの項目のとこで
プリコンパイル済みヘッダーを使用しない、にする。
あるいはプロジェクト全体でこの設定をしてもいい。
356デフォルトの名無しさん:2008/09/08(月) 00:24:59
>>355
ありがとうございます。
何とか上手く行きましたが、最後にscanfの宣言をしてくださいというエラーが出ました。
これはどういうことでしょうか?
357356:2008/09/08(月) 00:25:56
正しくは「'scanf' の宣言を確認してください。」でした。
358356:2008/09/08(月) 00:33:44
すみません。自己解決しました。
Visual C++2005からの仕様変更が原因だったみたいですね。。

お騒がせしました。長らくのお付き合いありがとうございました
359デフォルトの名無しさん:2008/09/08(月) 00:34:45
それは2005以降出るよ。
詳しくは、そのエラーの行でF1押して出たページの「CRT のセキュリティ強化」を読むといい。
その関数使う事が決まってるなら無視してもいいし、気になるならヘルプに出なくする方法も書いてある。
scanf以外にも、printf系、str〜系で出る。
360デフォルトの名無しさん:2008/09/08(月) 01:34:31
移植性?なんだそれ?そんなの知らん!
俺はMSと心中するんだと言う気持ちならscanf_sなど_s系が付いた関数を使えば良いよ
361デフォルトの名無しさん:2008/09/08(月) 10:26:31
すんません
VC++6.0(MFC)でテキストエディタ作れと言われたのですが、
最初の最初でつまづいてます。
プロジェクト新規作成→MFC→SDIアプリ→→で、初期のスケルトン作成。

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

ダイアログベースのプログラムならテキストボックス置けばいいだけですが、
SDIアプリケーションの場合はどうするのでしょうか?
362デフォルトの名無しさん:2008/09/08(月) 10:32:15
>>361
MFCだといくつかのやり方があって、どういう点を学習してるかによるが、、、
CViewをCEditViewに替えるだけでいけるけど、、、

Editコントロールを貼り付けるのなら、メンバーにCEditでも置いて
ウィンドウのOnCreateで一緒にCreateしてやって、OnSize時に
CEditをクライアントエリアと同じ大きさにしてやればいい。
363デフォルトの名無しさん:2008/09/08(月) 12:04:29
>>362
ありがとうございます。
なんとか後者の方法でエディットボックス設置はできました。

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

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

364デフォルトの名無しさん:2008/09/08(月) 12:10:38
クライアントのサイズはGetClientRect()というのがあるけど、
WM_SIZEのハンドラ、OnSizeの引数に幅と高さもあるから、それそのまま使えばいい。
起動時にリサイズ(WM?SIZE)も来るから、起動時のことは考えなくてもいい。
365デフォルトの名無しさん:2008/09/08(月) 16:42:03
>>364
ありがとうございます。
試行錯誤した結果、やはりCEditViewにすることにしました。

http://www.vcppclub.com/kouza/nextstep1/mdieditor1.html
ここを見たら1行も書かずに、読み込み/保存機能はできてしまったのですが、疑問が。

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

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

調べていた段階で、メンバ関数 OnFileOpen() を作成し、
GetOpenFileName();でダイアログを出し、
CFile型に読み込む手順が必要そうだったのですが、
自動生成されたソースではどこにも書かれていません。
にもかかわらず読み書きできるのが疑問です。
(サイトのサンプルはMDIですが、SDIでもほとんど同じのようです)
366デフォルトの名無しさん:2008/09/08(月) 17:33:51
その辺はMFCとDocumentViewアーキテクチャの話だからなあ。
CWinAppからCDocument、CEditViewの操作はMFCの中に含まれている。
もちろん、自分で変更することも可能。
367デフォルトの名無しさん:2008/09/08(月) 18:35:50
派生した部分しか見てないんだろ
368デフォルトの名無しさん:2008/09/08(月) 21:37:06
オリビア派生
369デフォルトの名無しさん:2008/09/09(火) 02:47:07
VisualStudioのエディタのタブや改行の記号表示について質問があります.
デフォルトの表示を変更したいのですがどのようにすればよいのでしょうか?

具体的には改行文字を$にタブ文字を>---という風に変更したいのですが
370デフォルトの名無しさん:2008/09/09(火) 06:11:23
ひとりごとです
371デフォルトの名無しさん:2008/09/09(火) 10:49:53
CEditViewでの、現在表示されている文字列を格納しているメンバは何ですか?
入力されたものを文字列型にコピーして保存やらなにやらいろいろやりたいのですが。
逆に文字列型に格納された文字列を表示する方法も。

そういったテキストバッファの操作のしかたがいまいち分からないです
372デフォルトの名無しさん:2008/09/09(火) 11:00:09
エディットコントロール自身がバッファを持ってる
普通は直接バッファいじらないでメンバ関数使ってアクセスする
373デフォルトの名無しさん:2008/09/09(火) 11:18:51
普通はCDocumentの派生クラスに自分でデータ構造作ってビューはその表示方法書いたりするけど
CEditViewは特殊だからな。GetEditCtrl()でCEditのインスタンスが取れるのでそれを操作すればいい。
374デフォルトの名無しさん:2008/09/09(火) 11:28:37
typedef struct tagTest {
unsigned int x :1;
} Test;

このようなコードを見かけたのですが、「:1」は何を意味しているのでしょうか。
375デフォルトの名無しさん:2008/09/09(火) 11:31:25
>>374
ビットフィールド
376374:2008/09/09(火) 11:43:07
素早い回答、ありがとうございました。
377デフォルトの名無しさん:2008/09/09(火) 13:53:02
>>372-373
なるほど。
CEditのメンバ関数見るとそれらしいものがあるようですね。
しかし、GetLine()のように、行ごとに取得してくる関数はあるみたいですが、
「とりあえず改行も含めて全体をCStringにコピー」するようなものは見当たらないです。

全部の行を走査してコピーする部分は自分で作成しないとダメですか?
378デフォルトの名無しさん:2008/09/09(火) 14:02:47
全取得はGetWindowText()
これはCEditでも、CEditViewでも使える。
379デフォルトの名無しさん:2008/09/09(火) 14:06:23
>>377
MSDNを見るときは、継承元のクラスのメンバも見よう。
GetWindowText()で取れるんじゃね?

って書いてたら先を越されたw
380デフォルトの名無しさん:2008/09/09(火) 14:28:49
>>378-379
おぉ ありがとうございます!
MSDNの見かたを訓練するようにします。

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

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

}
↑ここの記述で、
MainFrameのほうからViewを操作するにはどのようにすれば良いですか?
C(アプリ名)Viewクラスのインスタンス名が分かれば「名前.関数名」のような形
で呼び出せると考えたのですが、
どこにも宣言部分が見当たらないようです。
381デフォルトの名無しさん:2008/09/09(火) 15:12:49
>>380
えーと、SDIだったよな?
CFrameWnd::GetActiveView()でどうか。
382デフォルトの名無しさん:2008/09/09(火) 15:24:53
>>381
CViewのポインタが帰ってくるようで、継承して作られたC???Viewの関数は使えないようです。

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

このようにしてもビルドが通らないです。
383デフォルトの名無しさん:2008/09/09(火) 15:32:12
>>382
GetWindowtext()が見つけられないようだったから、わざわざCFrameWnd::GetActiveView()の
書き方にしたのに、そしたらこれかよ・・・
CなんたらEditView* pView = (CなんたらEditView*)GetActiveView();
でいいだろ、ちょっとは考えろよ。
384デフォルトの名無しさん:2008/09/09(火) 15:36:11
メニューから直接よべる
385デフォルトの名無しさん:2008/09/09(火) 19:30:54
>>383
未熟ですみませぬ・・・
おかげさまで思った通りのものができました。
386デフォルトの名無しさん:2008/09/10(水) 11:58:44
お世話になります。VC++6でダイヤログベースのプログラムを作っています。
ダイヤログにボタンを新設し、Classウィザードを使ってON_BN_CLICKEDメッセージ関数を使って
ボタンがおされた事はプログラムで取得できるようにできました。

ボタンを何秒間押したかを調べたいのですが、ボタンが離されたメッセージがなく、
どうやって作ったらいいかわかりません。
どのようなメッセージを使えばいいのでしょうか?
よろしくお願いいたします。
387デフォルトの名無しさん:2008/09/10(水) 12:04:58
CButtonをサブクラス化して自分でLBUTTONDOWNとLBUTTONUPの時刻の差を取るしかないんじゃないかなあ
388デフォルトの名無しさん:2008/09/10(水) 12:32:58
ボタンのイベントは押した時じゃなくて、離した時に発生する気がしたけど
389デフォルトの名無しさん:2008/09/10(水) 15:12:46
数日前にVC++ 2008 Express Editionを使い始めた初心者です。
ttp://homepage3.nifty.com/ishidate/
を参考にWindowsフォームアプリケーションのテンプレで作成したのですが、
一度目のビルドは普通に実行されて表示されるものの、少しでも書き換えた後(内容に一切変化がない場合でも)
以降ビルドを行おうとするとexeファイルが見つからないと表示され、エラーが発生します。
CやC++は以前から触れていたのですが、VisualStudioの操作に関しては
いまいち分からないので原因が分かりません。
どなたか分かる方は折られるでしょうか?よろしくお願いします。
390デフォルトの名無しさん:2008/09/10(水) 15:16:29
なんかおかしいね。
PCの時計はくるってない?
391デフォルトの名無しさん:2008/09/10(水) 16:59:39
EXE だけど DLL としても使えるバイナリってどうやって作ればいいですか?
392デフォルトの名無しさん:2008/09/10(水) 18:07:37
VC6で、2003以降のXmldocumentクラスに相当するものってありますか?
393391:2008/09/10(水) 19:31:29
自己解決しました。とりあえず
__declspec(dllexport)
付けて宣言しとけばEXEでビルドしてもエクスポートされるんですね。
394デフォルトの名無しさん:2008/09/10(水) 19:42:43
VC++ 2008 Proを使っています。
デバッグでプログラムを実行させると出力欄に、
「'System.NullReferenceException' の初回例外が ImageRecognize.exe で発生しました。」
と表示されるのですが、これがどの行で発生したかを調べるにはどのようにしたらいいでしょうか?
どなたか教えていただけると嬉しいです _ _
395デフォルトの名無しさん:2008/09/10(水) 19:45:00
ヌルポ
396394:2008/09/10(水) 19:47:11
すみません、メニューのデバッグ→例外を設定することで出来るようになりました。
お騒がせいたしました。
397デフォルトの名無しさん:2008/09/11(木) 01:08:30
CreateProcessで新規のルートプロセスを発行した後、
親プロセスはWaitForSingleObject(hHandle, 0)を実行して
即終了させようと思っています。(UNIXのデーモンプロセス生成のような感じ)
ここでWaitForSingleObject()のタイムアウト時間を0秒に設定すると
何か問題あるでしょうか?
398デフォルトの名無しさん:2008/09/11(木) 01:20:13
そのwaitに一体何の意味が?
399デフォルトの名無しさん:2008/09/11(木) 01:25:50
>>398
形式的に入れた方がいいのかと思ったのですが、
もしかして即終了させるならば必要ないですか?
400デフォルトの名無しさん:2008/09/11(木) 08:08:02
何のために待つのか考えろよ
401デフォルトの名無しさん:2008/09/11(木) 09:40:54
VC++ 6.0で、
xmlファイルを解析して読み込む/書き込む仕組みを作らなくてはならないのです
が、手探りで困っております。

検索してみると、VC2003以降になればXmldocumentクラスなるものが使えるよう
ですが、
VC6.0ではmsxml.hを使わなくてはならないようです。
これについての資料やサンプルがweb上にあまり無くて困っています。

また、xercesのライブラリを使う手段も打診されているのですが、
これについてはどのようにすれば良いでしょうか?
ダウンロードしても構成ファイルが大量にあり、これらをどう組み込むのが検討
が付きません。
また、VC6用のサンプルのプロジェクトファイルは同梱されていたものの、なぜ
かビルドが通らないようです。
こちらから入手したものです。
http://xerces.apache.org/xerces-c/

次レスに続きます
402デフォルトの名無しさん:2008/09/11(木) 09:42:05
xerces-all.dswを開いてビルドすると
エラー内容
C:\Liblary\xerces-c-src_2_8_0\src\xercesc\util\Platforms\Win32\Win32PlatformUtils.cpp(691)
: error C2039: 'InterlockedCompareExchangePointer' : '`global
namespace'' のメンバではありません。
C:\Liblary\xerces-c-src_2_8_0\src\xercesc\util\Platforms\Win32\Win32PlatformUtils.cpp(691)
: error C2065: 'InterlockedCompareExchangePointer' : 定義されていない識
別子です。
cl.exe の実行エラー

外部のライブラリを使用するプログラムを作ったことが無いので、そういった部
分の基本から教えていただけると幸いです。
403デフォルトの名無しさん:2008/09/11(木) 09:51:27
>>401
VC2008とboostいれようぜ。
そしたら簡単。serializationとか
404デフォルトの名無しさん:2008/09/11(木) 09:55:05
VC2008が無料で2005より軽いことをしらんのか?
405401:2008/09/11(木) 09:57:19
すんません
業務で、VC6と指定なのです。
406デフォルトの名無しさん:2008/09/11(木) 10:02:12
この辺参照。

これ使うとXMLの扱いがとっても簡単になりますね
基本的にはシリアライズしたいクラスのメンバにserialize関数を追加するだけです
http://d.hatena.ne.jp/faith_and_brave/20070809/1186672741
http://d.hatena.ne.jp/cass_src/20070730


407デフォルトの名無しさん:2008/09/11(木) 10:04:40
>>405
では、boostをいれれば? コンパイルできるかは知らないけれど。
でも、msxml.hを使うのが普通ですね。標準機能なので。
408デフォルトの名無しさん:2008/09/11(木) 10:18:04
ありがとうございます。
boostを研究してみます。
409デフォルトの名無しさん:2008/09/11(木) 10:18:40
410デフォルトの名無しさん:2008/09/11(木) 10:23:01
>>408
boostが動かせる(コンパイルできる) かどうかのコンパイラ別の対応表がどこかにあったのですが
忘れてしまいました。boostのホームページのどこかにあったはずです。
XMLを扱う簡単さでは、boostの方が上と思いますが
VC6の機能からなるべくはみ出ないようにするには、MSXMLと思います。
411デフォルトの名無しさん:2008/09/11(木) 11:24:48
やはりVC6でビルドしようとすると、「ブロックが大きすぎてコンパイルできません」と出ます。
あきらめてmsxmlのほう使います。
詳しい資料ありがとうございました。
412デフォルトの名無しさん:2008/09/11(木) 15:42:25
>>411
MSの機能以外を使って良いなら、いったんVC2008とboostのバイナリパッケージをインストールして
serializationを使ってXML操作DLLやLIBを作成してVC6でそれを利用するという手をある。
上位のライブラリをVC6で使えるかはよくわからないけど、
DLLにしてあればMinGWやBCCやVCで共通に使えるので平気と思う。
413デフォルトの名無しさん:2008/09/11(木) 15:45:08
boostのバイナリパッケージはここにある。次に対応している。
Visual C++ 7.1 (Visual Studio 2003), 8.0 (Visual Studio 2005), and 9.0 (Visual Studio 2008)

http://www.boostpro.com/products/free
414デフォルトの名無しさん:2008/09/11(木) 17:15:00

このサイトで解説している、以下の部分
http://www.sutosoft.com/oldroom/devdiary/20020505.html
// ●ファイルから読み込む。●
lpXMLDoc->put_async(VARIANT_FALSE);
VARIANT FilePath;
::VariantInit(&FilePath);
FilePath.vt = VT_BSTR;
V_BSTR(&FilePath) = ::SysAllocString(L"test.xml");
VARIANT_BOOL result;
lpXMLDoc->load(FilePath, &result);
::VariantClear(&FilePath);

わざわざファイル名を指定するのにVARIANT型を使うのは何故ですか?
CString型でパス名指定したりして読めれば楽なのですが・・・
実行ファイルと同じフォルダにtest.xmlを置いても、読み込みできていないよう
です。
::VariantInit〜::VariantClearで囲うことの意味、
V_BSTR(&FilePath) と、一見関数に見えるものに代入演算子が付いている意味など、
VARIANT型を扱う処理が全体的に分からず困ってます。
415デフォルトの名無しさん:2008/09/11(木) 18:00:39
DOM(Document Object Model)、COM(Component Object Model)の約束なのでしかたがないのでは?


Microsoft社が提唱する、部品化されたプログラムを作成・利用するための基盤となる技術仕様。
特定の機能のみを持つプログラム部品を組み合わせることでアプリケーションソフトの開発が容易になる。
この仕様に基づいてデータのやりとりができるプログラム部品のことをCOMコンポーネントと呼ぶ。
COMコンポーネントは開発に使った言語やコンポーネントのある場所などに拠らず、
どの言語からでも、どこからでも利用することができる。
ネットワークを通じて別のコンピュータ上にあるCOMコンポーネントを利用する技術をDCOMと言う。
これらの技術はWindowsだけでなく、UNIXやMac OSにも移植されている。
コンポーネント開発が楽にできるよう改良された次世代のCOM+の開発が進んでおり、
Windows DNAの中核技術として期待されている。
http://bizex.goo.ne.jp/tool/it/8_77/209/
416デフォルトの名無しさん:2008/09/11(木) 19:01:57
そういうのはVBで扱う前提だからVCだとめんどくさい
417デフォルトの名無しさん:2008/09/11(木) 19:58:31
CComVariantとか使うべき
418デフォルトの名無しさん:2008/09/11(木) 23:08:34
char str[20]とかいうのがあって
strが"abcd%EFG"だったときに
%以前の文字を削る(str="EFG"にする)にはどうしたらいいですか?
419デフォルトの名無しさん:2008/09/11(木) 23:31:26
>>414
#importでのraw_interface_onlyやめろ。
それを無くすと、高水準なラッパを作ってくれてめちゃくちゃ楽になる。
例えば、loadメソッドならVARIANTやBSTRを使わず文字列を直接渡せるようになる。
420デフォルトの名無しさん:2008/09/11(木) 23:32:59
size_t length = strlen(str);
char * rp = str; // read
char * wp = str; // write

while (rp != '\0') {

421デフォルトの名無しさん:2008/09/12(金) 11:37:10
>>419
詳しく教えてください。
#importから、raw_interface_onlyを削除しました。

しかし、あいかわらずloadメソッドではVARIANT型、VARIANT_BOOL型のふたつの
引数が要求されます。

IXMLDOMDocument* を定義してから、インスタンスを生成し、ファイル名を指定
して読み込み、ノードを指定してい読み込んでくるまでの
一連の流れを教えていただけると幸いです。
422デフォルトの名無しさん:2008/09/12(金) 11:46:14
初心者スレでやることとは思えない
423デフォルトの名無しさん:2008/09/12(金) 11:56:30
コピペ

pDoc->load(_variant_t(L"http://majissuka.com/NewInfo.xml"),
424デフォルトの名無しさん:2008/09/12(金) 11:59:33
ファイルなら絶対指定では
file:///C:/windows/test.txt
かな? test.txtでもいいとはおもう。
425デフォルトの名無しさん:2008/09/12(金) 12:13:02
>>418
> char str[20]とかいうのがあって
> strが"abcd%EFG"だったときに
> %以前の文字を削る(str="EFG"にする)にはどうしたらいいですか?
>
char *p;
p = strchr(str,'%');
p++;
strcpy(str,p);
426デフォルトの名無しさん:2008/09/12(金) 12:20:56
これでいけたけど・・・
#include <msxml.h>
#include <comdef.h>
#include <atlbase.h>

int main(){
CoInitialize(NULL);
IXMLDOMDocument* lpXMLDoc;
CoCreateInstance(CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER, IID_IXMLDOMDocument, (void**)&lpXMLDoc);
// ●ファイルから読み込む。●
VARIANT_BOOL result;
lpXMLDoc->put_async(VARIANT_FALSE);
lpXMLDoc->load(_variant_t(L"test.xml"), &result);

// ●ノード検索●
IXMLDOMNodeList* lpNodeList;
BSTR NodePath = ::SysAllocString(L"Test/Item");
lpXMLDoc->selectNodes(NodePath, &lpNodeList);
::SysFreeString(NodePath);
long lLength;
lpNodeList->get_length(&lLength);
for (int i = 0; i < lLength; i++){
IXMLDOMNode* lpItem;
lpNodeList->get_item(i, &lpItem);
BSTR str;
lpItem->get_text(&str);
USES_CONVERSION; printf("%s\n", W2A(str));
SysFreeString(str);
lpItem->Release();}
lpNodeList->Release();
lpXMLDoc->Release();
CoUninitialize();}
427デフォルトの名無しさん:2008/09/12(金) 17:59:27
>>423-424,426
ありがとうございます。
やはりうまくビルドできないですが・・・
引き続き試行錯誤しつつ、XML関連のスレのほう除いてみます。


ところで、CEdit型のエディットコントロールの、それ自身のウィンドウ内での座標をゲットおよびセットする関数ってありますか?
(つまり、事後的にプログラム内で任意で位置を変更したい)
SetRect(),GetRect()だと思ったらコレはこのコントロール内での座標のことのようでした。
428デフォルトの名無しさん:2008/09/12(金) 19:02:06
ふと思ったんだがCDとかDVDとかって
Diskか?
Discか?
429デフォルトの名無しさん:2008/09/12(金) 19:05:27
Discは光学メディア
Diskは磁器媒体
430デフォルトの名無しさん:2008/09/12(金) 19:13:23
CDはソニーが作ったから
431デフォルトの名無しさん:2008/09/12(金) 19:21:35
サンクス!
そう言う区分だったのか
ってことはCD/ DVDを「Disk」って書いちまった資料を全部直さないとか・・・
432デフォルトの名無しさん:2008/09/12(金) 19:26:55
http://ja.wikipedia.org/wiki/Universal_Disk_Format
Universal Disk Format (ユニバーサルディスクフォーマット、UDF)は光ディスク用のファイルシステムである。
433デフォルトの名無しさん:2008/09/12(金) 19:46:30
>Discは光学メディア
>Diskは磁器媒体
MOはどっち?
434デフォルトの名無しさん:2008/09/12(金) 19:46:43
http://e-words.jp/w/E58589E38387E382A3E382B9E382AF.html
光ディスク 【optical disk】
データの読み書きにレーザー光を利用する記憶媒体のこと。
CDやDVD、PDなどが代表的な光ディスクである。
435デフォルトの名無しさん:2008/09/12(金) 19:48:37
http://e-words.jp/w/E58589E7A381E6B097E38387E382A3E382B9E382AF.html
光磁気ディスク 【MO】
読み方 : ひかりじきディスク
別名 : Magneto-Optical disk
436デフォルトの名無しさん:2008/09/12(金) 20:19:20
VC2008でテキストボックスに0x01と表示するにはどうしたらいいですか?
unsigned char buf[2] ={0x01,0x02};
textBox1->Text = buf[0];

と実行したらエラーがでます。
error C2664: 'void System::Windows::Forms::Control::Text::set(System::String ^)' : 1 番目の引数を 'unsigned char' から 'System::String ^' に変換できません。(新しい機能 ; ヘルプを参照)
1> 使用可能なユーザー定義された変換演算子がない、または
1> 演算型のボックス化された形式からターゲット型への標準変換は存在しません
437デフォルトの名無しさん:2008/09/12(金) 20:24:20
>>436
unsigned char *buf[2] ={"0x01","0x02"};
textBox1->Text = buf[0];
438デフォルトの名無しさん:2008/09/12(金) 20:40:21
>>437
その方法でもエラーがでまます。
error C2440: '初期化中' : 'const char [5]' から 'unsigned char *' に変換できません。
Hexデータをテキストボックスに表示したいだけなのに。難しい
439デフォルトの名無しさん:2008/09/12(金) 21:14:27
テキストボックスに "あいう"と表示してみろ
440デフォルトの名無しさん:2008/09/12(金) 21:17:46
>438
テキストボックスはテキストを表示する所だから
Hexデータは表示できない
441デフォルトの名無しさん:2008/09/12(金) 22:53:49
基本的なことなんですけど


文字判定でスペースが入力されたら 「空白です」 と表示させたいんですけど、誰かご教授ください
442デフォルトの名無しさん:2008/09/12(金) 22:57:06
C++を初めてインスコしたんですけど、
製品の登録ってなんですか?
無料ですか?
443デフォルトの名無しさん:2008/09/12(金) 22:58:38
有料
444デフォルトの名無しさん:2008/09/12(金) 23:00:42
そうですか。

いくらですか?
445デフォルトの名無しさん:2008/09/12(金) 23:09:11
>>438
抜粋
private: System::Void Showbutton_Click(System::Object^ sender, System::EventArgs^ e)
{
array<System::String^>^ Numdata = {L"0x01",L"0x02",L"0x03",L"0x04"};
if(i < Numdata->Length)
this->textBox1->Text = Numdata[i];
else{
i = 0;
this->textBox1->Text = Numdata[i];
}
}
private: System::Void NextShowbutton_Click(System::Object^ sender, System::EventArgs^ e)
{
i++;
}
446デフォルトの名無しさん:2008/09/12(金) 23:15:48
>441
キー入力をチェックしてもいいけど
マウスで入力する場合もありえるから
入力内容が変った時のイベントでやるのが無難
447デフォルトの名無しさん:2008/09/14(日) 01:09:45
Express 2005で3連休プログラマーなんだけど、

 String^ folderName;

の ^ ってなに?

448デフォルトの名無しさん:2008/09/14(日) 01:26:01
>>447
ハットサイン、或いは山形アクセント記号。
449デフォルトの名無しさん:2008/09/14(日) 01:30:56
C++/CLIのスレで聞いて来いw
450デフォルトの名無しさん:2008/09/14(日) 08:42:37
C++/CLIとC++は別の言語。
C++を勉強したいならVisual studioのCLRのカテゴリには手を出すな。
451デフォルトの名無しさん:2008/09/14(日) 10:09:05
今まで普通に使えていたのですが突然MessageBoxが使えなくなりました。

1>.\main.cpp(135) : error C3861: 'MessageBox': 識別子が見つかりませんでした

とエラーが出ます。コードは
if(MessageBox(hWnd,"あ","あ",MB_YESNO) == IDYES)
等で文字セットはマルチバイト文字です。windows.hもインクルードしてあるのですが何がいけないのでしょうか。
VS2008再インストールしても直りません。
452デフォルトの名無しさん:2008/09/14(日) 10:32:27
デフォルトはマルチバイトじゃないはずだから
いらんところいじってるだろ
453デフォルトの名無しさん:2008/09/14(日) 10:58:11
MessageBoxAだとかMessageBoxWとかにしてやってみたらー(
454デフォルトの名無しさん:2008/09/14(日) 11:41:04
プロジェクトの設定にある文字セットってどういう意味なの?
あの設定によってコンパイルが通らなくなるし。
455デフォルトの名無しさん:2008/09/14(日) 13:12:52
マルチバイトかUnicodeか
456デフォルトの名無しさん:2008/09/14(日) 13:17:03
>>455
exeファイルを配布する上で、文字セットの設定が問題になるの?
457デフォルトの名無しさん:2008/09/14(日) 13:24:35
Unicode: NTネイティブ、9xでは原則として動かない
マルチバイト: NT/9x両方で動くけど、NTではAPI内部で変換がかかるのでオーバーヘッド有り。
458デフォルトの名無しさん:2008/09/14(日) 14:10:02
>>457
なるほど。参考になります。
文字コードに「設定なし」とあるけどこれは一体?
459デフォルトの名無しさん:2008/09/14(日) 14:15:19
いや、9xの時代から、APIはAとWの両方あったような記憶があるけど。
460デフォルトの名無しさん:2008/09/14(日) 14:26:05
>>458
基本的にはマルチバイトと同じ。
ただ、<tchar.h>の中の一部に、なし/マルチバイト/Unicodeの3つで切り替わるやつが存在する。
例えば_tcscpy→strcpy/_mbscpy/wcscpy。
mbs版は2バイト文字の2バイト目が欠ける事態にならないなどといった効果を持っていることが多い。

>>459
エントリポイントだけはあるが、実装されているのはごく一部の例外的存在。
http://msdn.microsoft.com/en-us/library/ms813063.aspx
461デフォルトの名無しさん:2008/09/14(日) 14:32:09
TEXT/_Tマクロをちゃんと使った参考書って少ないよな
462デフォルトの名無しさん:2008/09/14(日) 14:49:42
>>461
正直、文字列は、ワイドかマルチバイトか決めうちにして、それは使わないほうがいいんじゃないかって気がする。
463デフォルトの名無しさん:2008/09/14(日) 17:39:00
自分ひとりでやるなら勝手だろうけど
マクロ使ってない糞サンプルばらまかれると迷惑する
464デフォルトの名無しさん:2008/09/14(日) 18:07:04
大人数でやるところほど、きめうちしたほうが無難っていうか。

ジェネリックテキストつかってても、ワイド文字版と、マルチバイト版と両方でテストやってるところなんてほとんどないだろうし。
文字列を編集してる処理とか、ちゃんと、マルチバイトでもワイド文字でも動くように意識して書いてなかったりするだろうし。
テスト以前に、コンパイル通すとかもやってないだろうし。
古いコードをあさったら、char *p = _T("・・・・"); みたいのいっぱいあるだろうし。

中途半端に対応しても、どうせ片方でしか動かないコードなら、きめうちのほうが安全だと思われ。
465デフォルトの名無しさん:2008/09/14(日) 18:58:07
そういう場合は開発環境も限定するだろ
特定の環境でしかコンパイルできないサンプルをばらまかれると皆が迷惑する
466デフォルトの名無しさん:2008/09/14(日) 19:24:42
いや、ジェネリックテキストなんて、VCにしかないでしょ。
467デフォルトの名無しさん:2008/09/14(日) 19:28:35
>>466
またまた御冗談を

真面目な話、BCCでもGCCでも<windows.h>が使えるやつならどれでも使える。
<tchar.h>も結構存在するし。
468デフォルトの名無しさん:2008/09/14(日) 20:36:49
それでもWindows限定じゃん。
469デフォルトの名無しさん:2008/09/14(日) 20:42:29
まあWindows APIだしね。
470デフォルトの名無しさん:2008/09/14(日) 20:48:41
>>465
それはジェネリックテキストを使っても、ぜんぜん解決してない。
471デフォルトの名無しさん:2008/09/15(月) 06:11:10
C#でメソッドなどの一行上に"///"書くことで自動生成されるXMLのドキュメント

/// <summary>
///
/// </summary>
/// <param name="i"></param>
/// <returns></returns>
public int hoge(int i) { return 0; }

このような機能はC++ではないのでしょうか
クラスやメソッドをオブジェクトブラウザで参照したいのですが,うまくいきません.
どのようにすればいいか教えていただけませんでしょうか.
お願いします.
472デフォルトの名無しさん:2008/09/15(月) 06:19:51
C++はプログラミング言語です
473デフォルトの名無しさん:2008/09/15(月) 09:00:10
テキストボックスを使わずに、キースキャンで読み取った文字から漢字辞書変換をしたいのですが
できるでしょうか?どのようにすればいいですか?
474デフォルトの名無しさん:2008/09/15(月) 09:15:21
IME使う
475デフォルトの名無しさん:2008/09/15(月) 09:29:19
説明してあるHPなんかあったら紹介して欲しいです
476デフォルトの名無しさん:2008/09/15(月) 09:44:21
つ[msdn]
477デフォルトの名無しさん:2008/09/15(月) 09:52:50
初心者にやさしくヽ(`Д´)ノ
478デフォルトの名無しさん:2008/09/15(月) 10:03:22
http://msdn.microsoft.com/ja-jp/library/cc448105.aspx
ここにIME関連のapiの一覧があるから
適当なapiの名前でぐぐれば何か見つかる
479デフォルトの名無しさん:2008/09/15(月) 10:06:30
ありがd
480デフォルトの名無しさん:2008/09/16(火) 18:04:42
VC6でDirectXを使いたいです。
本格的なゲーム作るわけじゃないんですが、
ある業務用ソフトの画面効果で軽い2D処理が必要になりまして。(スプライトが
使えればいい程度)

ウェブを見た限りではVC6で使う情報はあまり無かったようです。
9.0のSDKと、VC6で使えるようになるという2004 Summer Extrasは入手しました。

ライブラリをインクルードするところから知りたいです。
481デフォルトの名無しさん:2008/09/16(火) 18:22:45
質問です。

VisualC++ 6.0 MFC
WindowsXP SP3

の環境で作成した、画面をビットマップ保存するプログラムを、
別のPC
VisualC++ 6.0
WindowsXP SP3

の同じ環境で実行すると、作成されたBMP画像が「描画できませんでした」となってしまいます。

この場合、どのようなことが原因だと考えられますでしょうか?
また対応策はあるのでしょうか?
どうかご教授おねがいします。
482デフォルトの名無しさん:2008/09/16(火) 18:29:52
業務用ソフトだったら外注に頼むだけ
483デフォルトの名無しさん:2008/09/16(火) 18:30:32
多分、ビットマップが微妙に正しく生成されていないのだろう
別のPCで、BMPファイルは何と関連付けされてるの?
ペイント?Windowsのビューア?IE?

対策:「画面をビットマップ保存するプログラム」のソースを見直す
484デフォルトの名無しさん:2008/09/16(火) 18:42:21
画面をビットマップ保存するプログラム

作成されたBMP画像が「描画できませんでした」

本当にお前が作ったプログラムか?
ソースコピペしたら動きましたレベルだろ
485デフォルトの名無しさん:2008/09/16(火) 18:54:08
>>483
Windowsのビューアです。プログラムを見直したいと思います。
>>484
そうです、申し訳ありません。
ですが、同じ環境のPCなのに失敗するのは何が原因と考えられるのでしょうか?
よろしくお願いします。
486デフォルトの名無しさん:2008/09/17(水) 00:19:45
考えられる原因は無限にある。
せめてどこで失敗するのか突き止めろ。
487デフォルトの名無しさん:2008/09/17(水) 06:44:43
>>481
モニターのカラーのビット数が違うとか
488デフォルトの名無しさん:2008/09/17(水) 06:48:41
何も知らない初心者がC#ってやつから始める事にしたお。
その次はJAVAかな。地味に頑張るお。新兵に激励を頼むお。
489デフォルトの名無しさん:2008/09/17(水) 07:58:15
貴様は人間ではない!糞ほどの価値もない!
C#訓練に生き残れたら、プログラムの司祭となる!
サービス残業に命を捧げるTI土方だ!
490デフォルトの名無しさん:2008/09/17(水) 09:22:37
ビットマップの作成で失敗するか、表示で失敗するかぐらい確認しろ
それぞれの環境で両方のビットマップ表示したらわかるだろ
491デフォルトの名無しさん:2008/09/17(水) 16:09:06
std::vectorに自分で作ったクラスのオブジェクトのポインタ入れてあるんですけど
clear()をすると、保持してるポインタのさしてるオブジェクトをdeleteしてくれるんでしょうか?
492デフォルトの名無しさん:2008/09/17(水) 16:44:02
スレ違い
493デフォルトの名無しさん:2008/09/17(水) 16:54:08
>>492
死ねアホ。
494デフォルトの名無しさん:2008/09/17(水) 16:57:32
std::vectorに自分で作ったクラスのオブジェクトのポインタ入れてあるんですけど
clear()をすると、保持してるポインタのさしてるオブジェクトをdeleteしてくれるんでしょうか?
495デフォルトの名無しさん:2008/09/17(水) 17:05:43
ここC++スレじゃないけど
496デフォルトの名無しさん:2008/09/17(水) 17:07:42
>>494
boost::ptr_vectorを使うか、boost::smart_ptrでポインタを包む
497デフォルトの名無しさん:2008/09/17(水) 17:08:26
Visual 「「「「C++」」」」」」
498デフォルトの名無しさん:2008/09/17(水) 17:08:28
×boost::smart_ptr
○boost::shared_ptr

std::auto_ptrはだめです
499デフォルトの名無しさん:2008/09/17(水) 17:12:02
>>496>>498
要するに勝手にdeleteまではしてくれないということですね?
boostの使用も検討してみます。ありがとうございました。
500デフォルトの名無しさん:2008/09/17(水) 17:12:37
数学の授業で小学校レベルの算数の質問されたら迷惑だろ
いちおう関係なくはないけど
501デフォルトの名無しさん:2008/09/17(水) 17:15:39
↑今日一番のアホ
502デフォルトの名無しさん:2008/09/17(水) 17:31:33
>492,495,500
痛いな
503デフォルトの名無しさん:2008/09/17(水) 18:00:34
寧ろ>493,497,501,502が痛い罠。
504デフォルトの名無しさん:2008/09/17(水) 18:14:29
いやいや、俺に言わせれば
>502,503
が必死w
505デフォルトの名無しさん:2008/09/17(水) 18:15:20
C++やC#やるのにどのソフトがお勧めとかある?
506デフォルトの名無しさん:2008/09/17(水) 18:28:10
とりあえず2008 Express Edition使っとけ
507デフォルトの名無しさん:2008/09/17(水) 18:50:45
Microsoft Visual Studio 2008 Express Editionの事?
無料でいいのか?とか不安に思った
Visual Studio .NET Professional普通にこっちのがいいかとも思ったけど
Express Editionでも平気ならそっちでいいか
508デフォルトの名無しさん:2008/09/17(水) 19:19:56
お前に使えるのか不安に思った
509デフォルトの名無しさん:2008/09/17(水) 20:36:02
むむ…初心者を舐めたらいかん
きっとなんとかなる…はず…多分…恐らく…
510デフォルトの名無しさん:2008/09/17(水) 21:23:22
>>507
グダグダ言ってる間に使ってみればいいだろ
511デフォルトの名無しさん:2008/09/17(水) 21:41:18
>>499
VC++ 2008にSP1当ればboostなくてもstd::tr1::shared_ptrが使える。
512デフォルトの名無しさん:2008/09/18(木) 18:39:27
数日前までうまく言っていたのに、急にコンソールウィンドウを
最大化しないと見られなくなりました。
原因が分からないのでどなたか教えてください
513デフォルトの名無しさん:2008/09/18(木) 20:22:37
VC6で、ウィンドウ上部のメニューやツールバーアイコンを、
必要に応じて適宜、グレー可(クリック不可なようにする)などの変更をする方法教えてください。
514デフォルトの名無しさん:2008/09/18(木) 21:07:25
Enable: ボタンを選択可能または選択不可能に設定します。
515デフォルトの名無しさん:2008/09/19(金) 09:06:37
CとC++の違いって何ですか?
516デフォルトの名無しさん:2008/09/19(金) 10:07:07
一言では言い表せない
517デフォルトの名無しさん:2008/09/19(金) 14:06:30
VC++とBorland C++Builderってどっちのほうがつかいやすい?
低スペPCの俺には無理?
518デフォルトの名無しさん:2008/09/19(金) 14:35:32
人による
519デフォルトの名無しさん:2008/09/19(金) 15:15:31
VC++のほうが低スペック
コンパイル速度はBCC
520デフォルトの名無しさん:2008/09/19(金) 15:18:52
そんなどうでもいいことで選ぶやつもいるんだ
521481:2008/09/19(金) 17:35:10
>>486
ビットマップの作成で失敗していると思われます。
プログラムの作成に使用したPCではビットマップ画像のファイルの大きさが2,521KB
に対して、プログラムを移行させたPCではファイルの大きさが1,262KBで作成されてしまいます。

>>487
プログラムを移行させたPCが手元にないのでわかりませんが、調べて同じにしてみたいと思います。

>>490
上にも書いたとおり、ファイルの大きさが違うので作成で失敗していると思われます。

よろしくお願いします。
522デフォルトの名無しさん:2008/09/19(金) 17:56:20
>>517
VCスレきたんだからおとなしくVCつかっときな
BCのほうはただでさえ人少ないのに
偏屈なこだわりがある自称玄人ばかりだから
ネットの情報すくないし何を聞くにしても大変
だからといってVCはましなのかというと腐ってるわけだがBCほど腐ってない

523デフォルトの名無しさん:2008/09/20(土) 16:48:08
VC6で、DirectXのAPIを使わずに、スプライトなどの2Dグラフィックス表現を実現する簡単な方法はありますか?
オートシェイプのような簡単な画面レイアウトソフトを作りたいのですが、
標準のコントロールやCViewクラスの描画メソッドでは、重なりや透過などの指定に限界が出てきてしまうようです。
オブジェクトをドラッグで移動したり拡大縮小したりにも対応させたいので、
ゲームプログラムに近い作り方で各オブジェクトをスプライトとして扱いたいのです。

業務用で使うツールとして、DirectXが動くかどうか怪しい環境でも使うことを想定しているので。
DirectXのAPIを使うことは無しの方向で、いろいろ模索しています。
524デフォルトの名無しさん:2008/09/20(土) 16:52:36
bitbitがある
525デフォルトの名無しさん:2008/09/20(土) 16:59:53
このソースで初めて、windowsの標準で描写できるのを知った

おまいらSaGa4つくろうぜ!
http://www.geocities.jp/saga4project/
526デフォルトの名無しさん:2008/09/20(土) 17:12:53
VC++でソースをかいてビルドするのですが、
VC++が応答なしになってしまってビルドできません。
これはスペックの問題でしょうか?

ちなみに警告やエラーはありません。
527デフォルトの名無しさん:2008/09/20(土) 17:31:06
正直向いてない
528デフォルトの名無しさん:2008/09/20(土) 20:25:09
bitbltだろww
529デフォルトの名無しさん:2008/09/20(土) 21:32:17
当然とは思ったけど念のため手持ちのゲームを解析してみたら
必ずしもDirectXは使ってないね
530481:2008/09/20(土) 22:24:56
解決しました。

>>487さんがおっしゃってたことを試しました。
プログラムに使用したPCのモニターのカラーのビット数を最高(32ビット)から16ビットにして
ビットマップを作成すると、1,262KBの描画できていないビットマップが作成されました。

なので移行したPCもモニターのカラーを最高(32ビット)に変更したいと思います。
ありがとうございました。
531デフォルトの名無しさん:2008/09/20(土) 22:29:28
なんつう糞プログラムだ
532523:2008/09/20(土) 23:17:20
>>524 >>525 >>528 >>529

Bitbltですね。ヒントありがとうございます。

スプライト的な使い方ができる解説やサンプルみたいなのありますか?
>>525のソースは見てみましたが、
できればVC6のプロジェクト形式でのサンプルがあればと。

Bitbltを使えば、CViewクラスのビュー上に描画することが可能なのですか?
533デフォルトの名無しさん:2008/09/20(土) 23:21:35
VC++開発においてC#やVBなどで用いられる
IDE機能をもたらすアドインはないでしょうか?

例えば、コメント表示(C#ではコメントはXMLで整理されており
コード内のメンバにカーソルをあわせたときや入力補完のときに
情報ウィンドウにコメントが表示されます)や、
コードチェッカ・整形(C#ではresharperというアドインによって
定義されていないメンバの呼び出しに色づけしたり、
メンバ名変更などのリファクタリングができます)
クラス定義のリンク
(既定・継承クラスへのリンクを列挙したり
名前からクラスやメンバを検索したり、
参照へのリンクも標準のgrepみたいな質素なのではなくて、
名前空間・クラス・メンバで階層化されたものがよいです)

こういった定番的な付加機能のアドインを知りたいです。

あとVSのエディタで宣言部分
(例えば「Vector vec;」でVectorの部分)に色づけをすることはできませんか?
534デフォルトの名無しさん:2008/09/20(土) 23:43:50
コピペ、クレクレ厨かよ
535533:2008/09/20(土) 23:55:04
>>534
お気を悪くされたのでしたら申し訳ありません。
でもコピペではないし、
ここはVC++関連について教えて頂けるスレではないのでしょうか?
クレクレばかりではなく普段自分が教えられることは教えていますし、
事前に一応検索もしました。うまく見つけられなかったので
お力を借りたいと思いここに書きました。
536デフォルトの名無しさん:2008/09/21(日) 00:22:22
その機能ってインテリセンスなんじゃないのか?
あと、特定の単語に色をつける機能はある。Userナントカってファイルがどうのこうの、だったが……忘れた。
537デフォルトの名無しさん:2008/09/21(日) 08:25:41
>535
初心者スレで質問してるんだから初心者だよな?
慣れるまでデフォルト、ノーマルで使っとけ
538533:2008/09/21(日) 19:33:38
>>537
すみません、C++は初心者ですが必要になったから使うだけなので
ガリガリ書いてマスターする気にはなれません
(デフォでやったからといって上達するわけでもないし)。
なので支援機能は是非欲しいのですが皆さんデフォで使ってるのでしょうか?
.NETと比べるとまるでプレーンテキストを読み書きする感覚です。
初心者スレではなく他のスレに書いたほうがいいのかな?
539デフォルトの名無しさん:2008/09/21(日) 19:44:47
C++はマスターしてから書きましょう
540デフォルトの名無しさん:2008/09/21(日) 20:25:18
visual C++の入門書を買おうと思うんですが、どれがいいでしょうか?
プログラミング経験は、あまりないです。(PHPを少し扱える程度)
541デフォルトの名無しさん:2008/09/21(日) 20:34:15
>プレーンテキストを読み書きする感覚
的確な表現だと思うのは俺だけか。


ドットネットが部品を組み合わせて使うものなら、C/C++はその部品を自分で作らなくちゃいけないんだよ。
判りやすく言うと、マゾい。作りたいアプリとは関係ないところで躓くことも多いし、
ちょっと間違えただけで簡単にクラッシュする。一昔前ならOSごと落ちる。

はっきりいって、そのような向上心のない態度ではとてもじゃないが使えない。
時間の無駄。断言できる。結果が出せるまで一年くらいかかることは確定的に明らか。

それでもC/C++を使ってる人たちは、そのような強烈なデメリットを承知の上で、
なおあまりあるメリットを見いだしてるから。
部品を自分で作る必要がある、ってのを、どうとらえるか。
それ次第で、C/C++は便利な道具にも、使えないガラクタにもなる。

いいかね?使う方が言語を選ぶんじゃあない、言語が使い手を選ぶんだ。それがC/C++だ。
わかったらドットネッターにもどるんだな。おまえにも かぞくがいるだろう……
542デフォルトの名無しさん:2008/09/21(日) 20:35:39
ガイル乙www
543デフォルトの名無しさん:2008/09/21(日) 20:36:22
少佐!お疲れ様であります!
544デフォルトの名無しさん:2008/09/21(日) 21:27:48
545デフォルトの名無しさん:2008/09/21(日) 21:28:39
>>541
マスターする気がないといったことは、
バリバリやってるマ様には失礼な発言ですみませんでした。
でもそこまでマゾになんなくても、
楽をするのに努力を惜しまないのがマなのでは?
OSSが巷に溢れる昨今に部品を自作する意味は弱いという考えもありますし、
そもそも今回の話題は部品の自作ではなく環境の整備が焦点です。
あんまりにも環境が貧弱でそれが無駄にC++の敷居を上げている
と思ったのです。
以下は質問なのですが
継承クラスを探すのにはgrepでもやってるのでしょうか?
与える引数の型がミスしてるのを脳内チェックかコンパイラしか
見つけられないのでしょうか?
メンバ名の変更は対象以外が置き換わる危険性を孕んでまで全文置換でしょうか?
細かな仕様(例えば参照渡しで事前に値設定が必要なのかなど)
もわかりづらいと思うのですが、いちいちリファレンスを引くのでしょうか?
546デフォルトの名無しさん:2008/09/21(日) 21:32:51
C++は複雑すぎてインテリセンスできないのです。
C#のように単純な言語ならではなのですインテリセンスは。
547デフォルトの名無しさん:2008/09/21(日) 21:40:51
>>546
インテリセンス(入力補完)はC++でも有効でしょうし複雑さとは
関係がないような気がします。コメント概略が表示されないのは何故…。
548デフォルトの名無しさん:2008/09/21(日) 21:49:20
>>544
ありがとうございます!少し道が開けた感じです。
連投すみませんでした。皆様もよりよい環境でプログラミング
できますように。
549デフォルトの名無しさん:2008/09/22(月) 12:20:40
ここでそんなことをぐだらぐだら聞くよりもやるべきことは他にあるだろうに。
550デフォルトの名無しさん:2008/09/22(月) 18:21:41
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=3904878&SiteID=7

日本語読まない奴ってどこにでもいるなぁ
551デフォルトの名無しさん:2008/09/22(月) 18:26:45
自分の知らない単語は無意識に飛ばしてるのだろう。
これは日本語でも英語でも同じw
552デフォルトの名無しさん:2008/09/22(月) 18:54:56
>>540の回答お願いします。
553523,532:2008/09/22(月) 18:56:55
Bitbltでオブジェクトを表示したりマスクかけたりする処理についていろいろ調べてみました。
画像とそのマスクを用意して透過するぐらいまではなんとかできるようになりました。

今作ってる表示のメインはテキストや図形なので、とりあえずテキストを貼り付けたCDCオブジェクトを用意したいのですが・・・
どのようにしても表示されず困っています。

viewのOnDrawメソッドで、

CDC* spr=new CDC;
spr->CreateCompatibleDC(pDC);

spr->TextOut(0,0,"テスト文字");
pDC->BitBlt( 0, 0, 300, 300, spr, 0, 0, SRCCOPY);

これで何も出ないです。

TextOutではなくDrawTextでやる方法も試みました。
DrawText(spr->m_hDC,"てすともじ",11,temp,DT_CENTER)

こちらも表示されないようです。

画像表示のときは
CDC::SelectObject()
で、対象のCBitMapを指定すれば良かったようですが、
テキストの場合はどう指定すればよいですか?
VC6なので資料やサンプルが少なくて難儀してます・・・
554デフォルトの名無しさん:2008/09/22(月) 18:58:30
>552
PHPを少し扱える程度じゃVCは無理
もうちょっと初心者向けの言語をお勧めします。
555デフォルトの名無しさん:2008/09/22(月) 18:59:52
>>553
DCはデフォルトでは1x1のモノクロビットマップが選択されている
そのまま描いたらたぶん、1ドットだけBitBltされてると思うよ、よくみてみ。
通常はイメージに限らず、ビットマップを作成してDCに選択し、そこに書き込んでから
ウィンドウにBitBltする。
556デフォルトの名無しさん:2008/09/22(月) 19:20:34
>>555
CBitmapクラスにテキスト(の形)を読み込んで使うということですか?
どのメソッドを使ったら良いか教えてください。
557デフォルトの名無しさん:2008/09/22(月) 19:29:20
コピペ君には教えるだけ無駄
558デフォルトの名無しさん:2008/09/22(月) 21:59:36
メソッドじゃできないよ。CでAPIを直に触らないとダメ
559デフォルトの名無しさん:2008/09/23(火) 00:49:37
>>553
CBitmap::CreateCompatibleBitmapをやって
553で言うところのsprにSelectObject
あとはspr->TextOut or DrawTextしてpDCへBitBlt

手(CDC)に紙(CBitmap)と活字(CFont)を持って(SelectObject)文字を書く(DrawText)
最初は面倒だけどすぐ慣れるよ。
560デフォルトの名無しさん:2008/09/23(火) 13:30:31
>>556
DCにつながってるデバイスってディスプレイだったりプリンターだったりするじゃない?
そういうデバイスを指定しないで作ったDCはビットマップがデバイスなんだよ。
だから自分でビットマップを作りそれをDCに選択してそのDCにTextOutすると
そのビットマップに文字が描かれる。
そのビットマップをウィンドウのDCにBitBltすれば画面上で見られるってわけ。
561デフォルトの名無しさん:2008/09/23(火) 13:42:57
visual studio 2008 express を使用しています。
現在あるオープンソースソフトウェアをソースからビルドしようとしているのですが、
ビルドに際し、環境変数が見つからないと言われます。

windowsOSの環境変数は指定されている通り設定しているのですが、エラーが起こります。
確かvisual studio自体にも環境変数を指定する箇所があったと思うのですが、
場所がわかりません。

visual studio自体に環境変数を指定する場所があるならば、
その方法を教えていただきたいです。
562デフォルトの名無しさん:2008/09/23(火) 13:49:35
すいません。
スレ違いのようですね・・・
失礼いたしました。
563デフォルトの名無しさん:2008/09/23(火) 13:53:25
さようなら
564デフォルトの名無しさん:2008/09/23(火) 16:36:04
新規プロジェクト追加時に、自分で設定した値を常に反映させることは可能でしょうか。
具体的には警告レベルを4として、新規プロジェクトが作成されることを望んでいます。
565デフォルトの名無しさん:2008/09/23(火) 16:48:50
お使いの製品のグレードあるいはユーザーの知的レベルによって可能
566デフォルトの名無しさん:2008/09/23(火) 16:51:39
VS2005EEです。知能は未アカデミックです。
567デフォルトの名無しさん:2008/09/23(火) 18:01:03
エンタープライズエディションをばかにするな あやまれ!!


みたいな。
568デフォルトの名無しさん:2008/09/23(火) 18:35:19
カスタムプロジェクトを使用
マクロで設定
既存のプロジェクトをコピーして使いまわす。
プログラム、スクリプト等で定義ファイルを書き替え
VSにパッチを当てて改造する。
569デフォルトの名無しさん:2008/09/24(水) 15:57:07
C/C++室から誘導されて参りました。
VC++2005の使い方を教えてください。質問は以下です。

> 482 :デフォルトの名無しさん [] :2008/09/24(水) 07:57:18
> VC++2005を利用しています
> 例外を勉強しているのですが、例外を発生させたときに、
> catchで例外を処理しても、デバッガに例外があったことが出力されます
>
> catchで例外を処理するときは、
> デバッガの出力に例外が発生したことが出力されるのを防ぎたいですが、どのようにすればいいでしょうか
>
> 483 :デフォルトの名無しさん [↓] :2008/09/24(水) 12:37:12
> >>482
> 出力って、例外時のデバッガのダイアログ?だったら、デバッグ->例外で設定できる
> デバッグ出力の例外のレポートだったら気にするな。レポートが出すぎて困るのだったら例外の使い方が間違っている。
>
> 484 :482 [] :2008/09/24(水) 13:18:40
> >>483
> れす、ありがとうございます。後者です。
>
> 例外のつかいかたについては勉強していくところです。
> もし、テストケースとかを今後記述するような場合に、デバッグ出力でOFFにできないのか探しています。
570デフォルトの名無しさん:2008/09/24(水) 16:12:20
リリースビルド
571デフォルトの名無しさん:2008/09/24(水) 16:18:03
勉強?
その出力で困るやつがいるのか?
遊びじゃないんだからいい加減にしろ
572デフォルトの名無しさん:2008/09/24(水) 16:30:52
無料になってから馬鹿が増えたな
573デフォルトの名無しさん:2008/09/24(水) 22:37:53
>>569
Googleで検索しろ
遊びじゃないんだからそのくらい自分で調べろ
574553:2008/09/25(木) 08:33:12
>>559 >>560
大変分かりやすい説明ありがとうございました。
やりたかったことが実現できました。
575デフォルトの名無しさん:2008/09/25(木) 12:49:58
>>569
例外は文字通り例外的なことが起きた場合に使うもので、実行を中断せざるを得ないぐらいの場合にしか使わないほうがいい。
そんな滅多におきないことのためにifをたくさん書くのは面倒だしテストが大変になる。だから例外を使って楽に例外処理を実装する。
576デフォルトの名無しさん:2008/09/26(金) 21:16:30
class Hoge{
public:
  Hoge();
  virtual void abs_func() = 0;
};

class Hoge_1:public Hoge{
public:
  virtual void abs_func();
};

Hoge::Hoge(){
  abs_func();
}
void Hoge_1::abs_func(){
}

int main(int argc, char* argv[]){
  Hoge *p = new Hoge_1;
  delete p;
  return 0;
}
このコード、BCB6では正常ビルドできるけど
VC2005では「外部参照 1 が未解決」リンカエラーなる。
何で?コンパイラスイッチで回避可能?
577デフォルトの名無しさん:2008/09/26(金) 22:18:04
基底クラスのコンストラクタで純粋仮想関数呼んでるから
578デフォルトの名無しさん:2008/09/27(土) 10:58:32
今までEclipceをずっと使ってたんだけど、C++で開発するにあたり、VisualC++を使ってみた。
これにはEclipceみたいに、コンパイルエラーが出る箇所を赤線で事前に教えてくれたりってのはないの?
579デフォルトの名無しさん:2008/09/27(土) 11:12:32
ないね。
580デフォルトの名無しさん:2008/09/27(土) 11:27:05
ありがと〜
581デフォルトの名無しさん:2008/09/27(土) 11:40:47
ほのぼのしたスレですね
582デフォルトの名無しさん:2008/09/27(土) 13:14:19
文法間違えてると、それ以降のツールチップヒントが出てこない場合がある。

例えば、構造体のメンバだと、 hoge. ここまで書くとメンバ一覧がひょこっとでてくるが、
前に間違いがあると、

a += b:  これ間違い。
hoge.    ここでヒントが出てこなくなる。
583デフォルトの名無しさん:2008/09/27(土) 14:30:10
VC2005でプログラム(コンソールで動くもの)を作成しています。
コンパイルして実行してみても予期したとおりに動かないのでデバッグで調べた所、
cppファイルのテキストと実行している位置がずれているようです。
ステップオーバーで1行ずつ実行しているのにありえないところで数行飛んだりします。
(代入文が5つ続いてるのをジャンプしたりする)

一つ気になる点はビルド時に
LINK : 前回のインクリメンタル リンクで C:\Documents and Settings\管理者\My Documents\Visual Studio 2005\Projects\****\Debug\****.exe が見つからなかったか、ビルドされませんでした。フル リンクを行います。

という表示が出ることです。
ソリューションのクリーンを行ってもncbファイルを削除してからリビルドしてもこの表示が出ています。
原因or解決方法ご存知の方、お助けくださいませ。
584デフォルトの名無しさん:2008/09/27(土) 14:34:59
Release版をデバッグ実行してね?
585583:2008/09/27(土) 14:38:59
>>582
素早いレスありがとうございます。

確認しましたが構成はDebugになってます。
586デフォルトの名無しさん:2008/09/27(土) 14:39:39
そもそもデバッガなんて使わないほうがいいよ。
printfとfprintfがあればおk
587583:2008/09/27(土) 14:39:42
↑は>>582じゃなくて>>584です。

588デフォルトの名無しさん:2008/09/27(土) 14:42:31
漢は黙ってmdbg
589583:2008/09/27(土) 14:43:31
>>586
了解です。
printfで変数を調べてみた所きちんと代入されていることが分かりました。
一つ一つチェックしていくことにします。

回答ありがとうございました。
590デフォルトの名無しさん:2008/09/27(土) 14:43:32
586みたいなのを時代遅れっていうんだろうな
591デフォルトの名無しさん:2008/09/27(土) 14:45:50
>>585
つか、Debugビルドの構成が間違ってるんじゃね?
592583:2008/09/27(土) 14:52:03
>>591
回答ありがとうございます

構成マネージャ->
構成=Debug
プラットフォーム=Win32
ビルド=チェックあり

構成プロパティ->C/C++->全般にある
デバッグ情報の形式=C7互換

となってます。
Debugビルドの構成の部分がどこを指すのかイマイチよくわからないのですが
593デフォルトの名無しさん:2008/09/27(土) 14:54:47
デバッガに頼るようでは真のプログラマとは言えない
594583:2008/09/27(土) 14:56:02
>>593
まだ真のプログラマじゃないのでご容赦下さい
595デフォルトの名無しさん:2008/09/27(土) 15:06:08
旧バージョンのプロジェクトからアップグレードでもしたのかな?
C7互換を /Zi か/ZI にする。
最適化 無効 (/Od) であることを確認する。

変なのが沸いてるけどデバッガにトラウマでもあるのかな(笑
596583:2008/09/27(土) 15:12:34
>>595
最適化無効によりデバッグ情報と実行位置情報が一致するようになりました。
無事いつもどおりのデバッグができるようになりました。

回答していただいた皆様、どうもありがとうございました
597デフォルトの名無しさん:2008/09/27(土) 15:23:25
最適化してたら一致しないのはあたり前だ
598583:2008/09/27(土) 15:30:00
>>597
すいません。全くもってその通りですね…

いつもはデフォルトで最適化が無効になっているのですが
今回はなぜか最適化されてしまっていたので気づきませんでした。
599デフォルトの名無しさん:2008/09/28(日) 00:30:32
Visual C++ と C++ って何が違うんですか><
600デフォルトの名無しさん:2008/09/28(日) 00:34:06
VC++は商品名。
601デフォルトの名無しさん:2008/09/28(日) 01:01:13
C++はプログラミング言語の名前、Visual C++はC++開発のためのソフトウェアの名前
602デフォルトの名無しさん:2008/09/28(日) 01:19:12
開発ソフトの名前に言語名入れるの禁止にしようぜ
603デフォルトの名無しさん:2008/09/28(日) 02:27:43
むしろ言語名が入ってないほうが困る
604デフォルトの名無しさん:2008/09/28(日) 03:34:12
Visual C++/CLI
でおk
605デフォルトの名無しさん:2008/09/28(日) 14:42:10
パソコンもプログラミングも初心者ですがインストールで詰まったり(一応)解決できたりしたので報告してみる

OS:Vista HomeBasic SP1

はじめ、Visual Studio 2008 SP1 のDVDイメージをダウンロードして焼いてVC++インストール開始。
インストールの途中で、暗転・黒背景白字の英文エラー数秒出て(読めない)OSが落ちて再起動、インストール失敗。

次に書籍付録DVDからVC++2008無印をインストール。一応最後まで成功。
だが前回インストール失敗した残骸(?)が中途半端に残っているのか、登録手続きでキーが表示されなかったり、
ヘルプの参照で壊れている項目があったり、ということが発生。

そこでMicroSoftのアンインストールツールでアンインストール、.NET FRAMEWORK 日本語パックと本体も削除した。

今度はVC++2008SP1をウェブインストール開始。
が.NET FRAMEWORKインストール直後あたりに数秒エラーメッセージが出て(やっぱり読めない)落ちて再起動、失敗。

再びアンインストール作業をして、今度はもうちょっと慎重にやろうと決意。
LAN抜いて、セキュリティソフト(ウイルスバスター2008)を切って、msconfigからMS以外のサービスを停止。
そしてSP1のDVDからインストール開始。
途中Machine Debug Managerを停止せよとの通告が出たので、コンピュータの管理から該当サービス停止。
またHTMLアプリケーションホストも停止せよと言ってきたので、(これっておかしくね?DVDからインスーラ起動する(?)htaのアレだろ?
なんで邪魔にすんだよ?とか思ったが)setup.htaのウィンドウを閉じて、再試行。
最後まで進んでコンピュータの再起動。「システムの構成を更新」してるという表示が出て2回ほど再起動。

今度はうまくいったようで、今のところ問題なく hello fuck'n world とかで遊べてます。
すごい迷走だ。バスターのせいだったのかな。
606605:2008/09/28(日) 14:50:10
Cドライブ直下にインストール作業フォルダっぽいのがいくつも残ってるwww
607デフォルトの名無しさん:2008/09/28(日) 17:41:04
ここはあなたのメモ張じゃありませんよ
608デフォルトの名無しさん:2008/09/28(日) 18:23:28
失敗例と解決しての成功例は貴重なレポートなのでむしろいいぞもっとやれ
609デフォルトの名無しさん:2008/09/28(日) 18:41:01
ブログにでも買い解け
610デフォルトの名無しさん:2008/09/28(日) 18:48:56
>>609
はげどう
611デフォルトの名無しさん:2008/09/30(火) 12:26:56
インストールだけでこんなにも躓く奴が存在するなんて・・・
612デフォルトの名無しさん:2008/09/30(火) 19:13:31
ttp://www.microsoft.com/japan/msdn/vstudio/express/maninstall/2008/default.aspx
最新で無料のバージョンはこれでいいの?
613デフォルトの名無しさん:2008/09/30(火) 19:59:04
VC6で質問です。
CScrollViewクラスのビュー上で、
クライアント領域にBitbltでいくつかのオブジェクトを貼り付けて表示したり動かしたりするプログラムを作っています。
ページが動かないときはそれでいいのですが、スクロールバーを動かしたりしても連動して動いてくれないです。

たとえばBitbltで座標100,100に貼り付けた場合、スクロール有効領域全体の0,0を基点にするわけではなく、
「現在見えている」領域の、100,100の位置に貼り付けられるといった具合です。

OnScrollメソッドで再描画をかけて、GetScrollPosition()の値分、補正して貼り付けてやれば、
スクロールバー連動で位置を動かすことはできたのですが、画面がちらついてしまいます。

スクロールバーと連動して描画したい場合、もっとスマートなやり方はありますか?

たとえば、スクロール有効領域全体の0,0を基点にしたデバイスコンテキスト(のようなもの)を取得して、
そこに貼り付けてやればこちらで再描画かけてやらなくても、スクロールによりWindowsが勝手に動かしてくれるイメージで。
614デフォルトの名無しさん:2008/09/30(火) 20:11:36
ずらして描画は正しい
まずはちらつく原因を特定して、それを抑えよう
バッファに描いてそれを転送でもいいし、バックグラウンドの塗り潰しかもしれん

スクロールした場合、元の画像はずらしてくれて、
新たな部分だけ無効領域になってるはずだよ
615デフォルトの名無しさん:2008/09/30(火) 20:16:25
ってもしかしてOnScrollでInvalidateしてんのか?
それは意味ないぞ
全部更新したいなら別だが。

そこはUpdateWindowだけな
616デフォルトの名無しさん:2008/09/30(火) 21:13:48
VisualC++ 2005 Express Editionをインストールしようとしたらvs_setup.msを開けませんでした
と出てきてインストール出来ませんでした。

ちょっと前には普通にインストール出来てたのですが、何が原因かわからないです。
617デフォルトの名無しさん:2008/09/30(火) 21:21:14
私も分からないです
618デフォルトの名無しさん:2008/09/30(火) 21:28:44
ハードディスクがお亡くなりになる前兆ですね
なむ〜
619デフォルトの名無しさん:2008/09/30(火) 22:22:53
>>618
HDの寿命なのか・・・
うわああああああああああああああああああ
620デフォルトの名無しさん:2008/10/01(水) 09:45:34
>vs_setup.ms
こんなもん始めから無いだろ。
vs_setup.msiじゃないの?
これ試してみては。
ttp://support.microsoft.com/default.aspx/kb/833594/ja
621613:2008/10/01(水) 14:09:24
>>614
ありがとうございます。

バッファとしてのデバイスコンテキストを持つようにする方式を試してみました。
CreateCompatibleBitmapでビューのDCと互換のでDCをクリエイトするようにしたところ、
ディスプレイ解像度を超える部分には書き込まれないようです。
(ディスプレイ解像度を大きく超える広さの領域をバーでスクロール表示したい)

ディスプレイに影響されない、独自の形式(解像度)のDCを作る方法がありましたら、教えてください。

CreateCompatibleBitmapではなく、
CreateDCで独自の形式(解像度)のDCを定義することを考えていますが、
このメソッドの使い方(引数の指定方法)がよく分かりません。
ウェブの資料にあった、
bufDC.CreateDC("DISPLAY", 0, 0, 0);
とすると、書き込んだ時点で全画面モードになってしまう予想外の動きが・・・
622デフォルトの名無しさん:2008/10/01(水) 15:01:03
そりゃディスプレイのDC持ってくりゃそうなるだろ。
いったいどうやってんの?
Bitmap作るのに大きさ指定できるでしょ?

GetClientRect(&rect);
CPoint pos = GetScrollPosition();
(略)
pDC->BitBlt(pos.x, pos.y, rect.Width(), rect.Height(), &dc, pos.x, pos.y, SRCCOPY);

こんな感じでやってる?
面倒だからとりあえず、
pDC->BitBlt(0, 0, bitmap.Width, bitmap.Height(), &dc, 0, 0, SRCCOPY);
で試してみては?
623デフォルトの名無しさん:2008/10/01(水) 15:32:08
ところでbitbltの読み方はビットブリットでいいのかな
ビットブルト?ビットブロット?
624デフォルトの名無しさん:2008/10/01(水) 16:06:19
ビットブリットと言っているなあ
625デフォルトの名無しさん:2008/10/01(水) 16:06:54
自分はビットブリットだと思ってるけど
周りのみんなはビットビルトって言ってる
626デフォルトの名無しさん:2008/10/01(水) 17:11:16
>>620
vs_setup.msiでした

無事インストール出来ました。ありがとうございます
627デフォルトの名無しさん:2008/10/01(水) 18:42:06
>>622
ありがとうございます。
ディスプレイ解像度うんぬんは的外れで、CBitmapのCreateBitmapのところで必要な解像度指定すればうまくいきました。


もうひとつ質問です。
VC6で、DrawTextで貼り付けるテキストを、サイズ指定したりフォントや色を変えたりできますか?
MFC見ているとVC2003以降はDrawTextExってのがあるみたいですが、6でそのようなことをする方法あったら教えてください
628デフォルトの名無しさん:2008/10/01(水) 18:50:05
えーと、、、、それは基本中の基本だと思うんだが。
フォント作ってDCに選択して書くだけだろ。
色はペンやブラシを替えればいいし、GDI関連一通り実験してくれ。
629デフォルトの名無しさん:2008/10/01(水) 18:50:29
DrawTextExはVC6にもある
630デフォルトの名無しさん:2008/10/01(水) 21:52:49
俺はビットビーエルテーって読んでる。
631デフォルトの名無しさん:2008/10/01(水) 22:15:45
C++って何て読むのー?しーぷらすぷらす?
632デフォルトの名無しさん:2008/10/01(水) 22:17:59
633デフォルトの名無しさん:2008/10/01(水) 22:18:09
シータスタス
634デフォルトの名無しさん:2008/10/01(水) 22:53:07
吹いた
635デフォルトの名無しさん:2008/10/01(水) 23:14:48
質問です。

今、自作のゲームソフトを作っているのですが、
プログラムでどのぐらいメモリが使われてるか見てみようと思って
Windows タスクマネージャでメモリ使用量を眺めていた所です。

どうも、ファイル読み込みがあるたびにメモリ使用量が増えていき
ある程度の数字を超えると使用量の増加がやむ、というような感じみたいなのです。
mallocやnewで確保したメモリが開放されていないのかな?と思いましたが、
何度見直しても開放処理を行っています。

これってひょっとしてXPのシステムキャッシュというのが
プロセスのメモリ使用量として加算されてるという解釈であっていますでしょうか?

また、ゲームを公開するにあたって動作環境の表記は必要だと思いますが、
このようにプログラマの意図しない所でメモリが消費されているとすると、
プロセスが実際に使う最大メモリ使用量というのはどのように割り出せばいいのでしょうか?
636デフォルトの名無しさん:2008/10/01(水) 23:19:22
メモリのほうは判らんが、
動作環境なら、自分の動かしてる環境書いて、「これ以上のスペックなら問題ないでしょう」でいいんじゃない?
637デフォルトの名無しさん:2008/10/02(木) 00:11:42
>635
基本的に「メモリ使用量」(専門的にはワーキングセットという)は
OSがプロセスに割り当てた物理メモリの量。

プログラムがまたアロケートしたときに
割り当てのための余計なコストが増えないよう
物理メモリを確保したままでとどまる。

プロセスがバックグラウンドに移されたり、
他のプロセスがメモリを要求したりした時点で
初めてワーキングセットが減らされる。

ちなみに実際にプロセスが使っているメモリの量を知りたければ
「仮想メモリサイズ」を得る必要がある。
638デフォルトの名無しさん:2008/10/02(木) 01:23:31
>>636-637
レスありがとうございます。

>>636
確かにそれでもいいのかも知れませんが、Windowsアプリになれたプロの人なんかは、
そのソフトに必要なメモリをどのように決めているのかと思いまして。

>>637
>プログラムがまたアロケートしたときに
>割り当てのための余計なコストが増えないよう
>物理メモリを確保したままでとどまる。

ということは、メモリ割り当ての問題であってファイル読み込みとは無関係なのですか?
音声のファイルを読み込んだりしたときに、ディスクアクセスしてないように見えるのですが
639デフォルトの名無しさん:2008/10/02(木) 01:33:47
そりゃ以前読み込んだ音声ファイルのデータがキャッシュに残ってたんだわ。

ちなみにシステムやプログラムが使ってない物理メモリは
全部ディスクキャッシュとして使われる。
640デフォルトの名無しさん:2008/10/02(木) 02:30:24
なるほど。ファイル読み込みのキャッシュはプロセスのメモリ使用量とは
また別として確保されるのですね。

仮想メモリサイズを取得するというのはGlobalMemoryStatus()でしょうか?
これってプロセス単体の使用量を調べられましたっけ?
それとも、他にプロセスの仮想メモリサイズを調べるための関数がありますか?
641デフォルトの名無しさん:2008/10/02(木) 11:14:10
GUIアプリとコンソールアプリの共存って出来ますか?
例えば、物理シミュレーションの映像をDirectXやopenGLでウィンドウ表示しつつ、
演算結果はコンソールで表示し続けるみたいなことです。
プロジェクトを作るときに、コンソールとwin32アプリの2択しかないので、
そういうことは出来ないのでしょうか…
642デフォルトの名無しさん:2008/10/02(木) 11:15:59
コンソールプログラムからCreateWindow関数を呼ぶとできます。
643641:2008/10/02(木) 11:39:08
>>642
ありがとうございます。
644デフォルトの名無しさん:2008/10/02(木) 12:18:40
そんなに簡単に呼べたっけ?
ライブラリとインクルード用意すれば呼べそうな気もするけど、
mainとwinmainで全然作りが違う気がする
645デフォルトの名無しさん:2008/10/02(木) 12:25:00
一つのプロジェクトの中には、一つのmain関数しか定義できないのですか?
だとすると、directxなどのライブラリを用いるサンプルソースを試すにはその
都度、プロジェクトを作成しなといけないと思うのですが、ソリューション内の
プロジェクト全てに同じインクルードパスとライブラリパスを適用するような
ことは出来ますか?
646デフォルトの名無しさん:2008/10/02(木) 12:41:45
パスの設定はVC++そのものの設定でやればいいだろう。
lib指定が面倒だったらヘッダーに#pragma comment入れとけばいいし
647645:2008/10/02(木) 13:02:32
>>646
ありがとうございます。
#pragmaはコンパイラによって挙動が違ったような気がするので
見送りかな。linuxでもコンパイル出来るようにしときたいので。
648デフォルトの名無しさん:2008/10/02(木) 13:13:28
>>647
LinuxではDirectX使えないよ
そもそもここはVisualC++のばりばり環境依存のスレです
649デフォルトの名無しさん:2008/10/02(木) 13:28:45
>>644
#include <windows.h>

int main(void)
{
HWND myWindow = CreateWindow(
TEXT("STATIC"),
TEXT("hogehoge"),
WS_OVERLAPPED,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
NULL,
NULL
);
ShowWindow(myWindow, SW_SHOW);
MessageBox(NULL,TEXT("ok"),TEXT("close"),MB_OK);
return 0;
}
650640:2008/10/02(木) 13:40:43
一応自分なりに調べてみてGetProcessMemoryInfo()という関数があるのがわかりました。
プロセス終了時に取得したPROCESS_MEMORY_COUNTERS構造体のメンバのうち、
PeakWorkingSetSize と PeakPagefileUsage の合計値が
プロセスで実際に使われた最大メモリ使用量という事でいいのでしょうか?

というか、ゲームに使われる全てのファイルサイズの合計超えてます^^;
こういうものなのでしょうか?プロの人は本当にどうしてるのか気になります。
一度大きくメモリを確保してプログラムで小出しにするなんちゃってアロケート実装とかですかね?
651647:2008/10/02(木) 13:45:51
>>648
directxはあくまで例で言っただけで、openGL使うと思います。
混乱させてすみませんでした。
652デフォルトの名無しさん:2008/10/02(木) 13:46:00
テストプログラム作って実測だろうが
机上で計算しても何の意味もない
653デフォルトの名無しさん:2008/10/02(木) 13:59:01
lib指定のpragmaはcomment文なので、他には影響なさそうだけどね。
654デフォルトの名無しさん:2008/10/02(木) 14:00:34
>>641 は入門用にglutから入ればそんな心配も出てこなかったろうに。
655デフォルトの名無しさん:2008/10/02(木) 14:01:06
>>652
>>650は実測はしてはみたけどそれが正しい方法なのか知りたいって事でしょ
俺もメモリ関係よくわからんから知りたいわ
656デフォルトの名無しさん:2008/10/02(木) 14:05:12
>一度大きくメモリを確保してプログラムで小出しにするなんちゃってアロケート実装とかですかね?

こんなこと言うくらいだから知ったかぶりして余計な心配してるだけだろ
657デフォルトの名無しさん:2008/10/02(木) 14:05:17
GUIって「ぐい」ってよみますよね。
無知な後輩から馬鹿にされたんですが。師ねよ。
658デフォルトの名無しさん:2008/10/02(木) 14:06:53
>>656
Windowsはともかく、家庭用ゲームの開発だと大抵はそういう手法とってるよ
Windowsのメモリ管理なんてまともにやってるゲーム会社なんてないんじゃね?
659デフォルトの名無しさん:2008/10/02(木) 14:06:57
自動で付けられるコードの「 { 」を次の行にする設定ってあるんでしょうか?
660デフォルトの名無しさん:2008/10/02(木) 14:10:17
>>659
C言語で { を勝手に改行されたら逆に困りますよ
661デフォルトの名無しさん:2008/10/02(木) 14:14:03
C++クラスの追加とかの自動で挿入されるコードについて、ってこと?
662デフォルトの名無しさん:2008/10/02(木) 14:17:34
具体的に言うと
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
て感じです

そもそも後者の方は一般的ではないんでしょうか?
もしそうなら今の設定に慣れるように努力します
663デフォルトの名無しさん:2008/10/02(木) 14:20:33
俺は後者だよ。その方が見やすい。別に手動で改行すればいいじゃん。
664デフォルトの名無しさん:2008/10/02(木) 14:28:00
自動でできる設定はないですか・・・。
分かりました手動で頑張ってみます
どうもありがとうございました
665デフォルトの名無しさん:2008/10/02(木) 22:29:37
ツール→オプション→テキストエディタ→C#→書式設定→改行→新しい行にメソッドの始めかっこを配置する

にチェック

ではないか
C++/CLIの設定ってあるのかね?
666デフォルトの名無しさん:2008/10/02(木) 23:20:17
自分で探せ
667デフォルトの名無しさん:2008/10/02(木) 23:33:03
あるレジストリキーの直下にある複数のレジストリキーの
リストを取得する関数はありますか?
具体的には↓のtest直下にあるtest1、test2、test3の名称を取得したいです。

 test\test1
    \test2
    \test3
668デフォルトの名無しさん:2008/10/02(木) 23:41:52
apiにはそういう機能がないから第三者が作った関数を探してるということ?
669デフォルトの名無しさん:2008/10/02(木) 23:50:43
test以下に何があるかわかんない場合だよね
RegOpenKeyEx と RegQueryInfoKey と RegEnumValue で列挙できたと思う
詳しい使い方忘れた、ググれ
670デフォルトの名無しさん:2008/10/02(木) 23:51:36
>>668
そういうAPIを探していたのですが見つからないので
自作しかないでしょうか?
671デフォルトの名無しさん:2008/10/02(木) 23:55:52
>>669
ありがとうございます。それらのAPIを調べてみます。
672デフォルトの名無しさん:2008/10/03(金) 00:31:05
RegEnumKeyExという関数を見つけました。
これで取得できそうです。
673デフォルトの名無しさん:2008/10/03(金) 01:22:01
#define ANYARGS ...
と言う宣言は、可変長引数を表しているのですか?
'...'でググッたら死ねましたorz
674デフォルトの名無しさん:2008/10/03(金) 01:48:13
レジストリ触るのが怖くて未だにINIファイルな俺
675デフォルトの名無しさん:2008/10/03(金) 07:49:35
そう予測したのなら、可変長引数でググってみればいいじゃない
676デフォルトの名無しさん:2008/10/03(金) 11:18:54
>>673
名前と ... から考えるとそうだろう
677デフォルトの名無しさん:2008/10/03(金) 13:01:50
今Vista(x64)マシンでVC++.net2008を使いコンパイルしたのを
ノーパソのXP(x86)にもってきてみると動きませんでした
動かない理由は
1.x64でコンパイルしたから
2.MS土台のバージョンが古いから
3.そもそもXPでは動かない
どれでしょうか?
678デフォルトの名無しさん:2008/10/03(金) 13:08:52
クイズかよ
679デフォルトの名無しさん:2008/10/03(金) 13:12:15
ワロタw
680デフォルトの名無しさん:2008/10/03(金) 13:12:24
あと2008は2005と違って日数制限があって完全フリーじゃないんですよね?
681デフォルトの名無しさん:2008/10/03(金) 13:16:15
2008 expressはフリー゜
682デフォルトの名無しさん:2008/10/03(金) 13:20:20
AnyCPUなら動くよ…
fw入ってないんだろう
683デフォルトの名無しさん:2008/10/03(金) 13:20:24
そうですか
677 ノーパソに2008入れてないのがまずいのかな〜
684デフォルトの名無しさん:2008/10/03(金) 13:21:48
>>682
ノートはシングルコアでした
685デフォルトの名無しさん:2008/10/03(金) 13:24:34
ああ、ここVC++か
再配布可能なファイルredistなんたらが入ってるから
それ入れてみ
686デフォルトの名無しさん:2008/10/03(金) 13:28:45
やってみます
使う側も最新にしとかないとだめなんですねえ
687デフォルトの名無しさん:2008/10/03(金) 13:36:14
あと、ターゲットをx64にしてたら
動かすほうのOSも64bitじゃないと
動かないよ、当然だけど念のため
688デフォルトの名無しさん:2008/10/03(金) 13:38:04
了解
689デフォルトの名無しさん:2008/10/03(金) 13:47:38
あーあとコード生成の設定で/MTにすると追加無くても動くかもな。
690デフォルトの名無しさん:2008/10/03(金) 13:54:58
/MTですか
探して見ます
691デフォルトの名無しさん:2008/10/03(金) 14:04:42
結局、Debug版という落ちだったりして。
692デフォルトの名無しさん:2008/10/03(金) 14:07:41
>>674
俺は商用アプリでもなきゃレジストリ使わないな
インストーラーアンインストーラー不要で済むし
693デフォルトの名無しさん:2008/10/03(金) 14:08:23
いくらなんでもメッセージ見て気が付くだろ
694デフォルトの名無しさん:2008/10/03(金) 21:11:03
.netから *View.cpp はないんですよね
全部 *.cpp に書くんですか
695デフォルトの名無しさん:2008/10/03(金) 21:20:11
C++/CLIのことを言ってるならありゃ全部 *.hに書くんだぜ。
MVCとかMVPにしたいなら自分で勝手にrefクラスを分ける。
696デフォルトの名無しさん:2008/10/04(土) 14:25:37
C++勉強しようとインストールしたまでは良いのですが、コンパイルが出来ません
メニューにビルドの項目が無いのですが、どうやって追加するのですか?
697デフォルトの名無しさん:2008/10/04(土) 14:30:07
新規プロジェクトを作成して、書いたコードをプロジェクトに追加してからビルドする。
698デフォルトの名無しさん:2008/10/04(土) 14:31:19
>>696
メニューの、新規作成 -> プロジェクト でプロジェクトを作成しないと、ビルドはでないよ。
699デフォルトの名無しさん:2008/10/04(土) 14:36:09
>>697-698
親切にありがとうございます
無事にコンパイルが出来ました
700 ◆3CnrSiNVYE :2008/10/04(土) 21:47:21
http://pc11.2ch.net/test/read.cgi/tech/1222813731/31,32
で宿題を教えてもらったものですが、
Visual C++で
http://pc11.2ch.net/test/read.cgi/tech/1222813731/32
のソースコードで開くファイルを指定するにはどうすればよいでしょうか?

向こうのスレでは
http://pc11.2ch.net/test/read.cgi/tech/1222813731/71
という方法を教えられたのでコマンド引数にファイル名をフルパスで書いたのですが、うまくいきません
701デフォルトの名無しさん:2008/10/04(土) 22:19:53
あなたはプログラムをやらない方がいいと思うよ
とっととコンビにのバイトの面接でも受けにいけばいかがでしょうか。
702デフォルトの名無しさん:2008/10/04(土) 22:24:13
コンビ弐
703デフォルトの名無しさん:2008/10/04(土) 22:27:46
学校で聞け
704デフォルトの名無しさん:2008/10/04(土) 22:32:32
過去ログ読まないでいきなり質問するやつ
705 ◆3CnrSiNVYE :2008/10/04(土) 22:43:46
>>704
このスレのログは「ファイル」で検索して読みました。
読んでもわかりませんでした。
706デフォルトの名無しさん:2008/10/04(土) 22:46:39
この程度のことを自力でできないような奴にプログラマになられても迷惑だよ
707デフォルトの名無しさん:2008/10/04(土) 22:53:44
>>705
何がどううまくいかないのか説明して欲しい。
fopen()でNULLが返ってくるのか、
それとも他に何かエラーが出ているのか。
708 ◆3CnrSiNVYE :2008/10/04(土) 23:05:14
>>707
ソースコードは
#include<stdio.h>

void moji_line_count(const char *filename){
FILE *fp;
int prev='\n', moji, moji_count=0, line_count=0;

if((fp=fopen(filename, "rb"))==NULL) return;
for(;(moji=fgetc(fp))!=EOF;prev=moji,moji_count++) if(moji=='\n') line_count++;
fclose(fp);
if(prev!='\n') line_count++;

printf("File : %s\nCharacter count : %d\nLine count : %d\n\n", filename, moji_count, line_count);
}

int main(int argc, char *argv[]){
int i;

for(i=1;i<argc;i++) moji_line_count(argv[i]);
return 0;
}

なのですが、エラーが帰ってくるのではなく純粋にこのソースコードで開くファイルを指定する方法ががわからないのです
709デフォルトの名無しさん:2008/10/04(土) 23:09:33
コマンドラインに打ち込んだ文字列も書けよ
710デフォルトの名無しさん:2008/10/04(土) 23:10:36
>>708
ファイルを指定する方法は、
プロジェクトのプロパティ>構成プロパティ>デバッグ>コマンド引数で
ファイル名を指定する、と既にアドバイスをもらっているはずだけど。
711 ◆3CnrSiNVYE :2008/10/04(土) 23:16:07
>>710
適当なテキストファイルのフルパスを打ち込んで見ましたが、うまくいきませんでした
アドレスは
打ち込むのってこれであってますよね?
C:\\Documents and Settings\\ユーザー名\\デスクトップ\\テキストファイル.txt
712デフォルトの名無しさん:2008/10/04(土) 23:17:26
gccつかえ
713デフォルトの名無しさん:2008/10/04(土) 23:19:19
714デフォルトの名無しさん:2008/10/04(土) 23:20:39
コマンドライン使えないやつ
715デフォルトの名無しさん:2008/10/04(土) 23:22:00
>>711
何度も言うけど、うまくいかないという書き方は良くない。
何をやって何がうまくいかなかったのか丁寧に書くべき。

で、そのフォルダに「テキストファイル.txt」というファイルは置いてある?
716デフォルトの名無しさん:2008/10/04(土) 23:23:24
結局何がどううまくいかないのかがわからないんだが。
意図していた結果と、実際に得られた結果がどうなってるの?
717 ◆3CnrSiNVYE :2008/10/04(土) 23:28:54
>>715
すいませんでした。
Ctrl+F5でビルドしても「続行するには何かキーを押してください」とでてキーを押すと終了します。

ファイルは確かにデスクトップにおいてあります。

>>716
>>708のソースで求めているものは、
ファイルを1つまたは複数指定し、
各ファイルに含まれる行数と文字数を数えて画面に出力
なのですが、
ファイルを指定して各ファイルに含まれる行数と文字数を数えて画面に出すことができず、
終了してしまいます
718デフォルトの名無しさん:2008/10/04(土) 23:30:42
もう711で答え出てるじゃん
719デフォルトの名無しさん:2008/10/04(土) 23:38:22
>>717
コマンド引数を指定して、ファイルは存在するとしたら
プログラム自体がおかしい、となる。
そこでブレークポイントを置いてF5でデバッグ実行。
720デフォルトの名無しさん:2008/10/04(土) 23:41:47
あっちの71です。
ひょっとしてDocuments and Settingsの罠にかかってる?
argvの中身確認してみて。
721 ◆3CnrSiNVYE :2008/10/04(土) 23:47:22
>>720
argvをググりましたがさっぱりわかりません
722デフォルトの名無しさん:2008/10/04(土) 23:48:53
だめだこりゃ
723 ◆3CnrSiNVYE :2008/10/04(土) 23:50:49
ダメですか…

んじゃー退散します
つきあってくれたかたありがとうございました
724デフォルトの名無しさん:2008/10/04(土) 23:51:37
>>721
何がわからないのか説明(ry
あとデバッグ実行(ry
725デフォルトの名無しさん:2008/10/04(土) 23:58:07
argvの中身を確認しろと言われてググるとは…
プログラムは誰かに作ってもらったんだろうな。
726デフォルトの名無しさん:2008/10/05(日) 00:18:23
最初から宿題スレで作ってもらったと書いてあるやん
727デフォルトの名無しさん:2008/10/05(日) 01:02:34
\\

バカじゃねーのwww
728デフォルトの名無しさん:2008/10/05(日) 01:16:41
質問者も回答者も馬鹿
ホントゴミ溜め以下だなここは
729デフォルトの名無しさん:2008/10/05(日) 01:18:23
宿題やってもらう前に授業をちゃんと受けろと
730デフォルトの名無しさん:2008/10/05(日) 01:39:36
こういうのがいるから、ソフトのバグはいつまで経っても無くならないんだろうなあ……
731デフォルトの名無しさん:2008/10/05(日) 08:26:38
GUI環境でコンソールプログラムをやると
GUI環境とコンソール環境の両方の知識が必要になるから
最初はコンソール環境で始めた方がいい。
小さなプログラムコンパイルするのにいちいちプロジェクト作ったり
パラメータ渡すのに設定いじるとか
よくそんな面倒なことやってるなと感心する。
732デフォルトの名無しさん:2008/10/05(日) 08:43:54
学校と同じgccいれろよ

http://www.tdragon.net/recentgcc/
733デフォルトの名無しさん:2008/10/05(日) 11:02:31
>>731
MAKEFILE覚えないですむから比較的楽じゃね?
734デフォルトの名無しさん:2008/10/05(日) 11:04:21
いきなりデバッガ使えるからGUIに限る。
しかしデバッガ自体知らないのでは話にならんが。
735デフォルトの名無しさん:2008/10/05(日) 11:07:01
確かに、printfデバッグより楽だからいいよな
まあでも学生ならgccなりBolandのC++コンパイラーなり覚えた方がいいと思うが
736デフォルトの名無しさん:2008/10/05(日) 11:30:02
プロジェクトつくるまでもない規模ならMAKEFILEも必要ない
737デフォルトの名無しさん:2008/10/05(日) 11:34:58
プロジェクト作る程度の事がそんなに大変だともおもわんけどね
738デフォルトの名無しさん:2008/10/05(日) 11:41:45
プロジェクトがないとCやるのは不便
一ファイルに難行も詰め込んだら間違える
739デフォルトの名無しさん:2008/10/05(日) 12:00:43
まあ、ちょいとしたツールや宿題程度の問題なら、
cl main.c で充分だわな
740デフォルトの名無しさん:2008/10/08(水) 00:48:38
Microsoft Visual C++ 2008 Express Editionで
windowsフォームアプリケーションを作成しようとしています。

フォントについて質問させてください。
ニコニコ動画や、Live2Viewというソフトのような
白地の上でも見づらくない白文字→( http://www2.imgup.org/iup703826.jpg.html
が使いたいのですが、それらしいフォントが見つからず、
ラベルのフォントのプロパティでも見つけられませんでした。

フォントやプロパティの設定とかじゃなく、けっこう難しいことをしないと実現できないのでしょうか。
※白地の上でも見づらくない白文字であれば、
 ニコニコのように影を付けるでも、Live2Viewというソフトのようにフチを付けるでも
 どちらでもよいです。
741デフォルトの名無しさん:2008/10/08(水) 01:12:47
昔書いたときは、黒い文字書いてずらして白い文字書いたっけな、
上下左右でずらせば縁取り
742デフォルトの名無しさん:2008/10/08(水) 01:31:58
上下左右っつーか、左上、左下、右上、右下だったかな
743デフォルトの名無しさん:2008/10/08(水) 03:40:04
ま、フォントだけで表現するならそれしかないわな
つーかそれぐらい思いつけよ
影をつけるんならPhotoshopでも使って書いて画像を表示しろ
744デフォルトの名無しさん:2008/10/08(水) 08:53:33
GDIパス
745デフォルトの名無しさん:2008/10/08(水) 11:35:09
それはないわw
746デフォルトの名無しさん:2008/10/08(水) 16:57:36
ツリービューについての質問です。

WM_NOTIFY で TVN_BEGINDRAG を捕まえ、
TVM_CREATEDRAGIMAGE を呼んでいるのですが、
直後の GetLastError() で 6 (ハンドルが無効)となってしまいます。
また、ハンドルは返ってきているため
そのエラーを無視して処理を続けたのですが、
( ImageList_BeginDrag() など )
ドラッグイメージが描画されません。
ただし、描画されないだけで落ちるようなことはありません。

また、ドラッグイメージを使用するためには、
TreeView_SetImageList() を呼び、
関連付けしなければいけないとリファレンスに書いてあると思いますが、
イメージリストの作成方法が間違っているのでしょうか?
イメージの追加 ( ImageList_Add() など ) はしていません。
加えて、項目の先頭に不要な空間(イメージが出ているであろう場所)が
あるのですが、それをなくすことは可能でしょうか?
現在は以下のように処理をしています。
img = ImageList_Create( 16, 16, ILC_COLOR, 0, 1 );
TreeView_SetImageList( htree, img, TVSIL_NORMAL );

ツリービューのスタイルは以下の通りです。
| TVS_HASBUTTONS // +/-ボタンを表示する。
| TVS_HASLINES // 破線を表示する。
| TVS_SHOWSELALWAYS // 選択したアイテムの色が変わる。
| TVS_LINESATROOT // rootにも破線表示。
| TVS_EDITLABELS // ラベルの変更をする。
| TVS_CHECKBOXES // チェックボックス付き

環境は XP SP2 + VC2003 です。
よろしくお願いします。
747デフォルトの名無しさん:2008/10/08(水) 17:23:38
ImageListに先にイメージを格納してみては。
748746:2008/10/08(水) 17:36:52
>>747
アドバイスありがとうございます。
以下のように変更し、試して見ましたが
変化はないようでした。

img = ImageList_Create( 16, 16, ILC_COLOR, 0, 1 );

{
HDC hdc( GetDC( m_Hwnd ) );
HBITMAP bmp( CreateCompatibleBitmap( hdc, 16, 16 ) );
int ret( ImageList_Add( img, bmp, NULL ) );
BOOL b( ImageList_Remove( img, ret ) );
DeleteObject( bmp );
ReleaseDC( m_Hwnd, hdc );
}

TreeView_SetImageList( m_Hwnd, img, TVSIL_NORMAL );

ImageList_Remove() をしなかったり、
ImageList_Create() の最後を2つの引数をいろいろ変更してみましたが、
それも変化なしでした。
749デフォルトの名無しさん:2008/10/08(水) 18:08:41
周波数などを自由に変更して音を出したいんですが、どういう方法でやるんですか?
750デフォルトの名無しさん:2008/10/08(水) 18:14:17
>>748
イメージリストは生きている間、保持してないとならんはずだが。
渡した先でコピーを持ってるわけじゃない。
751デフォルトの名無しさん:2008/10/08(水) 18:15:25
>>749
デバイスは?
Beep()つかうか、DirectSoundあたりで。
752デフォルトの名無しさん:2008/10/08(水) 18:31:09
>>749
無責任にwaveOut
753デフォルトの名無しさん:2008/10/08(水) 18:38:22
そういやsndPlaySound()とかもあったなあ。
754746:2008/10/08(水) 18:47:18
>>750
イメージリストはプログラムの終了時に破棄しています。
ビットマップも同じくプログラムの終了時に
破棄するようにしましたが、変化ありませんでした。
755デフォルトの名無しさん:2008/10/08(水) 18:59:07
GetLastError()の事について書いてないなら、そのエラー値は意味無いぜ。
(成功したら必ずNOERRORにリセットされるわけではない)
756デフォルトの名無しさん:2008/10/08(水) 19:11:26
>>742
それを全てやらないときれいにふちどりできないよ
上下左右の方がまだマシな結果になるんでね

どちらにしても一ドットずらし限定だけど
757746:2008/10/08(水) 19:11:59
>>755
確かにリファレンスには GetLastError() については書かれていません。
しかし、以下のソースを実行すると、実行前は 0 に対し、
実行後に 6 になりました。
( ここでの DebPrintf() はデバッグ出力自作関数です。 )

DebPrintf( "bf %d\n", GetLastError() );
m_DragImg = TreeView_CreateDragImage( m_Hwnd, lpnmtv->itemNew.hItem );
DebPrintf( "af %d\n", GetLastError() );
758デフォルトの名無しさん:2008/10/08(水) 19:29:39
別に珍しい処理でもないし、
ちゃんと動くサンプルがいっぱいありそうなもんだけど
759デフォルトの名無しさん:2008/10/08(水) 19:43:52
ダメな理由がimagelistのハンドルがすでに無効としか思いつかんなあ。
普通に試しても動くからな。
760デフォルトの名無しさん:2008/10/08(水) 19:52:46
>>757
だからMSDNに何も書かれてなければ、その値には何の意味も無い。
中での処理でたまたまそうなっただけ。
戻り値が成功を示しているのなら成功している。
761デフォルトの名無しさん:2008/10/08(水) 19:57:07
DirectSoundでもwaveOutでも結局WAVEデータのデータ以外のフォーマットを理解してファイルを作らないと再生できないんですか?
もっと、ONOFF比率50%で262Hzをサウンドカードから出力させて、スライダーで周波数を変えていくようなデータ垂れ流しをするのはどっちいいですか?
フィルタとか合成とかもする場合いちいちRIFFフォーマットをつくって再生関数で再生させるんですか?
762746:2008/10/08(水) 20:03:54
>>759
そうですか・・・
わざわざ試していただいてありがとうございました。

>>760
なるほど。
では、エラー値が返っていないということで、
その他の処理をしても問題ないのですね?
ありがとうございました。
描画処理の方を見直してみます。



>>お答えいただいた方々
ありがとうございました。
763デフォルトの名無しさん:2008/10/08(水) 20:21:30
>>761
日本語でおk
764740:2008/10/08(水) 22:14:14
>>741-744,>>756
アドバイスありがとうございます。

単純にフォントのプロパティをいじるだけでは
ムリということですね。

どうやらCSSやJavascriptでできるようなので、
ラベルの代わりにブラウザ窓を配置して対応してみようと思います。
それがイメージ通りのものになるのかはまだ見えないので、
それがダメなようならフォントを重ねる方向で行きたいと思います。

ありがとうございました。

765デフォルトの名無しさん:2008/10/08(水) 22:32:53
面倒なことすんのね。別にいいけど
766デフォルトの名無しさん:2008/10/08(水) 23:10:26
すみません。
VC++をいじってるんですが、double型の値を画面に表示させると
「0.000000」といった感じで小数部が6桁表示されてしまいます。
この小数部の表示桁数を制限したいのですが、何か良い関数など
があれば教えて下さい。
よろしくお願い致します。
767デフォルトの名無しさん:2008/10/08(水) 23:13:11
死ね
768デフォルトの名無しさん:2008/10/08(水) 23:20:14
C++スレで聞け
769デフォルトの名無しさん:2008/10/08(水) 23:47:55
>766
どうやって画面表示させてるんだ?
770デフォルトの名無しさん:2008/10/09(木) 10:29:58
>>766
%fを使っているのなら、%gに代えろ。
771デフォルトの名無しさん:2008/10/09(木) 13:11:15
>>766
良い関数あるよ
printf( )を使うといいよ


って使ってるんだろうけど
772デフォルトの名無しさん:2008/10/09(木) 20:37:14
2つのクラスがあってそれぞれが相互にメンバにアクセスできるようにしたいのですが
class AAA;
class BBB;

class AAA{
public:
int inta;
void InitB(){
bbb.intb = 0;
}
}aaa;

class BBB{
public:
int intb;
void InitA() {
aaa.inta = 0;
}
}bbb;

void main(void){
bbb.InitA();
}
みたいにプロトタイプ宣言をしてもだめでした
どうすればお互いに相互アクセスできるでしょうか?
773デフォルトの名無しさん:2008/10/09(木) 20:47:05
ソースファイルに関数の定義を書く。
774デフォルトの名無しさん:2008/10/09(木) 20:50:57
ごめん、関数の定義をクラスの宣言から分けて書く。
775デフォルトの名無しさん:2008/10/09(木) 21:22:02
C++スレへ行く
776デフォルトの名無しさん:2008/10/09(木) 22:26:18
メモリいっぱいまで変数配列確保したあと初期化しないでメモリの中見るといろんなデータが埋まってるんだけど、これってフリーソフトに定期的に確認して送信するのを組み込めば
ネットバンキングとか全部抜ける?いやデータが入ってたから一瞬思っただけなんだけど
777デフォルトの名無しさん:2008/10/09(木) 22:27:58
ひとりごとです
778デフォルトの名無しさん:2008/10/10(金) 01:21:30
オマエ程度が思いつくことはとうの昔にみんなやってるよ。
779デフォルトの名無しさん:2008/10/10(金) 14:30:09
もうみんなやってる
780デフォルトの名無しさん:2008/10/10(金) 19:03:53
もとからあるインクルードファイルでエラーが出ます。DVDから修復したんですが、変わりません
ファイル名がわかっている場合の修復はどうすればいいんですか?メディアを検索してもファイル名が引っ掛かりません
781デフォルトの名無しさん:2008/10/10(金) 19:06:48
何を言っているのかわかりません。
質問は日本語でお願いします。
782デフォルトの名無しさん:2008/10/10(金) 19:14:42
インクルードファイルを変更してしまってエラーがでるんです。
783デフォルトの名無しさん:2008/10/10(金) 19:15:26
ものはwinnt.hです。
784デフォルトの名無しさん:2008/10/10(金) 19:17:09
解決しました!
785デフォルトの名無しさん:2008/10/10(金) 19:31:39
解決してしまったんじゃあしょうがない
教えるのはやめにしよう
786デフォルトの名無しさん:2008/10/10(金) 22:32:45
787デフォルトの名無しさん
STLのlistとかvectorで
空なのにpopしたりとか、エラーが出るようなコードを走らせたとき、
STLのコード内でのエラーで止まるのはわかるとして、
どの呼び出し元が原因でSTL内でエラーが出たのか知るにはどうすればいいでしょうか?