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

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

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

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

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

【過去スレ】
Part36 ttp://hibari.2ch.net/test/read.cgi/tech/1273939582/
Part35 ttp://pc12.2ch.net/test/read.cgi/tech/1256645713/
Part34 ttp://pc12.2ch.net/test/read.cgi/tech/1245382769/
Part33 ttp://pc12.2ch.net/test/read.cgi/tech/1235292263/
Part32 ttp://pc11.2ch.net/test/read.cgi/tech/1225422971/
2デフォルトの名無しさん:2011/03/13(日) 11:16:29.06
【関連スレ】
■MFC相談室 mfc21d.dll■
http://pc12.2ch.net/test/read.cgi/tech/1250919279/
Win32API質問箱 Build82
http://pc12.2ch.net/test/read.cgi/tech/1253699773/
【C++】 DirectX初心者質問スレ Part26 【C】
http://pc12.2ch.net/test/read.cgi/tech/1256403984/
C言語なら俺に聞け(入門篇) Part 54
http://pc12.2ch.net/test/read.cgi/tech/1254829314/
C++相談室 part74
http://pc12.2ch.net/test/read.cgi/tech/1256397778/
C/C++の宿題片付けます 131代目
http://pc12.2ch.net/test/read.cgi/tech/1255709298/
【初心者歓迎】C/C++室 Ver.69【環境依存OK】
http://pc12.2ch.net/test/read.cgi/tech/1256022655/
3デフォルトの名無しさん:2011/03/13(日) 11:16:53.03
4デフォルトの名無しさん:2011/03/13(日) 19:16:54.79
>>1
乙!
5デフォルトの名無しさん:2011/03/13(日) 22:13:04.63
>>1 乙
6デフォルトの名無しさん:2011/03/13(日) 22:44:44.30
VC2008です。

C++で、スタティックライブラリをリンクさせているのですが、
ヘッダの関数宣言で、extern "C" {}でくくっているのにも関わらず、
error LNK2001: 外部シンボル "__imp__*(関数名)*" は未解決です。
となり、名前修飾が行われてしまいます。

どのように解決すればよろしいのでしょうか?

プロパティでは、呼び出し規約が__cdeclになってします。
7デフォルトの名無しさん:2011/03/14(月) 00:09:16.91
>>6
そのライブラリをちゃんと参照してる?
8デフォルトの名無しさん:2011/03/14(月) 07:18:10.80
>1
おつ

あと引越しは995過ぎてからでも十分だぞよ。
9デフォルトの名無しさん:2011/03/14(月) 12:07:23.73
Visual C++ 2008 EE なのですが、

class Test {
private:
 union {
  struct {
   int a;
  };
  int b;
 };
}test;

このようなクラスを作ったところ、

test.a = 100; // コンパイルエラーにならない
test.b = 20; // コンパイルエラー

という結果になったのですが、どうしてなのでしょうか
106:2011/03/15(火) 10:03:17.94
>>7
リンカディレクトリにおいて、特に参照エラーも出ていないのですが…
他のc++名前修飾ライブラリでも試してみます。
11デフォルトの名無しさん:2011/03/16(水) 00:19:04.34
数日前に他掲示板に書き込みましたが、返信がないので質問します。
keybd_event関数を使いましたがvisualstudio2003proではSendInputが使えません。
VS2008ExpressVS・2010Expressではビルドは出来ましたがうまく動作しませんでした。
これについて詳しい方いらしゃいますか?
12デフォルトの名無しさん:2011/03/16(水) 00:29:21.68
>>11
2003でビルド時にエラーになる件は#define _WIN32_WINNT 0x0400か何か書いておけばいいと思う。

実行してうまくいかないのは、お前のSendInputの使い方に問題があるだろうとしか言えない。
ソース貼れ。
13デフォルトの名無しさん:2011/03/16(水) 01:36:49.37
>>9
VC6 だけど、そのままだと両方エラーになるよ

あんたの環境で片方だけエラーになるのが意味不明だけど、private: とか書いてるのがいけないんじゃない?
public: に直したら両方ともエラーにならない

そもそもエラーって、何てメッセージが出てるの?
149:2011/03/16(水) 02:42:26.25
>>13
すみません説明不足でした、エラーは

error C2248: 'Test::b' : private メンバ (クラス 'Test' で宣言されている) にアクセスできません。

本来なら Test::a に対しても同じエラーがでると思っていたのですが、
コンパイルが通ってしまい、test.a にアクセスも代入もできてしまいましたので、
不思議に思い質問いたしました。
15デフォルトの名無しさん:2011/03/16(水) 03:52:13.72
>cl /c /W4 test.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

test.cpp
test.cpp(6) : warning C4201: 非標準の拡張機能が使用されています : 無名の構造体または共用体です。
test.cpp(14) : error C2248: 'a' : private メンバ (クラス 'Test' で宣言されている)にアクセスできません。
test.cpp(5) : 'a' の宣言を確認してください。
test.cpp(15) : error C2248: 'b' : private メンバ (クラス 'Test' で宣言されている)にアクセスできません。
test.cpp(7) : 'b' の宣言を確認してください。

>cl /c /W4 test.cpp
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.

test.cpp
test.cpp(6) : warning C4201: 非標準の拡張機能が使用されています : 無名の構造体または共用体です。
test.cpp(15) : error C2248: 'Test::b' : private メンバ (クラス 'Test' で宣言されている) にアクセスできません。
test.cpp(7) : 'Test::b' の宣言を確認してください。
test.cpp(1) : 'Test' の宣言を確認してください。

確かにバージョンによって結果が違うな
1611:2011/03/16(水) 19:04:35.54
#define _WIN32_WINNT 0x0400
を書き足しましたが、2003では同様のエラーが出ます。
以下詳細
error C2065: 'LPINPUT' : 定義されていない識別子です。

VS2008・2010Expressについては、詳しくいじっていないので私のミスの可能性もあります。
17デフォルトの名無しさん:2011/03/16(水) 19:22:51.92
それのどこが詳細だ・・・
18デフォルトの名無しさん:2011/03/16(水) 23:27:20.02
VS2002が.netframeworkインストールエラーでインスト出来ないんですが、
多分初期化して.netframeworkをインストールする前にVS2002をインストすれば動くと思われるんですが詳しい方いますか?
19デフォルトの名無しさん:2011/03/17(木) 13:51:35.56
ものすごく初心者な質問なのですが、
書かれているソースが、CLIなのかCLRなのかMFCなのかとかどうやって判断するんでしょうか?
最近勉強し始めたのですがイマイチ違いが分からなくて。。
20デフォルトの名無しさん:2011/03/17(木) 13:54:33.67
慣れるまで色々見るしかない
21デフォルトの名無しさん:2011/03/17(木) 15:44:16.13
>>19
とりあえずCLIはかなり異端だし、MFCもそれなりに特徴的な構文だから、
ちょっと慣れればすぐにわかる。
CLIなら
using System::String;
とかString^ stringVar;とかかなり異色で別言語

MFCは単にライブラリをC++から使っているだけ
勉強としてはとりあえず普通のC++をやってけばよろし
2219:2011/03/17(木) 19:40:29.22
なるほど、ありがとうございます。
23デフォルトの名無しさん:2011/03/18(金) 15:37:22.99
CreateProcessでwscriptを実行して引数でVBSを実行させようとしているのですがうまくいきません。
設定ダイヤログがなぜか出てきてします。なぜなんでしょうか


if ( !CreateProcess(
_T("C:\\windows\\system32\\wscript.exe"),
_T("C:\\tst.vbs"),
NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi ) ) { }
2423:2011/03/18(金) 16:49:05.39
パラメーターに//E:vbscriptを追加することで自己解決
25デフォルトの名無しさん:2011/03/19(土) 16:14:11.64
_tWinMainで書いているのですが

外部から受け取ったバッファをMultiByteToWideChar、WideCharToMultiByteといったもので

変換する時に_Tのように自動で変換をさせるにはどうしたらいいのでしょうか?

26デフォルトの名無しさん:2011/03/19(土) 16:44:43.25
>>25
#ifdef UNICODE
...
#else
...
#endif
27デフォルトの名無しさん:2011/03/19(土) 16:57:37.99
>>26
ありがとうございます。
28デフォルトの名無しさん:2011/03/19(土) 18:27:56.29
wchar_tとかまあぶっちゃけ決め打ちでいいと思うがなー
29デフォルトの名無しさん:2011/03/20(日) 21:54:33.84
VC++2010, Win32, ダイアログベースのアプリを作っています。

■やりたいことWindows標準の警告アイコンをダイアログに配置したい
 ・http://msdn.microsoft.com/ja-jp/library/aa511277.aspx
 ・MessageBoxでは MB_ICONWARNING により表示可能ですが、
  MessageBoxではなく、CreateDialog APIで作る自前ダイアログです。
 ・タイトルバー部分ではなく、(何と呼ぶのか分かりませんが)
  ボタンコントロールなどを配置する領域に、警告アイコンを配置したい

調べていますが、解決できませんでした。
上記の実現方法がありましたら、ご教授願います。
よろしくお願いします。
30デフォルトの名無しさん:2011/03/21(月) 07:45:03.99
loadicon
31デフォルトの名無しさん:2011/03/21(月) 14:18:23.14
>>29
ダイアログにPictureControlを貼り付ける
貼り付けたコントロールのプロパティを開き
Type を アイコン
ID を IDC_PICT1(便宜上)
に変更する

DialogProcのWM_INITDIALOGで
SendMessage( GetDlgItem(hDlg,IDC_PICT1), STM_SETICON,(WPARAM)LoadImage(0, IDI_QUESTION, IMAGE_ICON, 0, 0, LR_SHARED),0);
を送る
3229:2011/03/21(月) 23:58:39.02
>>30,31
ありがとうございます。
今回は>>31さんの方法でやらせていただきました。
LoadIcon APIのものも調べてみて、実現できることが分かりました。

※ダイアログのコントロール領域には、32×32のアイコンしか出せないみたいですね。
 http://msdn.microsoft.com/ja-jp/library/aa511277.aspx を見ますと、
 16×16は脚注でのみのサポートでしょうか。
33デフォルトの名無しさん:2011/03/23(水) 20:59:09.93
質問です。
Win32 Windows アプリケーションでリソースビューからメニューで
新しく項目を追加してその項目を右クリックをしてイベントハンドラを追加しようとしたら
無効になっていて追加できませんでした。
プロパティも見て追加できるところはないか探したんですがありませんでした。
どのようにしたら追加できるでしょうか。ご教示願います。
Visual Studioのバージョンは2010 Premiumです。
34デフォルトの名無しさん:2011/03/23(水) 21:55:09.72
>>33
MFCを使ってください。
35デフォルトの名無しさん:2011/03/23(水) 22:53:55.82
exeから、コンパイルに使ったVC++のバージョンを調べることはできますか。
36デフォルトの名無しさん:2011/03/23(水) 22:59:45.29
予想することはできるな
37デフォルトの名無しさん:2011/03/24(木) 10:07:26.54
HWND型からアプリケーションが終了したかかの情報を取得することはできるのでしょうか?
できるのでしたらどのようにやるか教えていただけませんでしょうか?
38デフォルトの名無しさん:2011/03/24(木) 10:10:32.28
少し書き方が間違っていました。
アプリケーションが終了したかというよりウィンドウが閉じたかという情報です
39デフォルトの名無しさん:2011/03/24(木) 10:54:23.27
ウィンドウプロシージャでWM_CLOSEイベントでも来るのを待ってみては?
40デフォルトの名無しさん:2011/03/24(木) 11:04:38.16
すみません言葉足らずでした

他プロセスのhWndを取得してメッセージを送っているのですが
そのプロセスのウィンドウが終了した場合にその処理をやめたいとおもっています
そこでhWndもしくはPIDでウィンドウが閉じたかを確認したいのです
41デフォルトの名無しさん:2011/03/24(木) 11:14:09.24
もうしわけない
そういえばGetMessageすればよかったんですね

お騒がせしました。
42デフォルトの名無しさん:2011/03/24(木) 22:39:45.56
>>38
IsWindowっていうAPIがあるけど。

ただ、IsWindowだろうが他の方法だろうが、ウィンドウが閉じられた後に
すでに別の新規ウィンドウにそのHWND値が再利用されちゃっている
という可能性があるかもしれない。
43デフォルトの名無しさん:2011/03/26(土) 07:08:37.51
>>38
他プロセスのWM_CLOSEメッセージをフックするという手もある
44デフォルトの名無しさん:2011/03/27(日) 08:05:47.45
2010でもうC++0xのregex使える?
45デフォルトの名無しさん:2011/03/27(日) 08:19:11.64
使えますん
46デフォルトの名無しさん:2011/03/27(日) 14:35:04.08
どうもで〜す
47デフォルトの名無しさん:2011/04/04(月) 11:47:15.54
VS2008を使っているのですが、クラス内クラスや、関数内クラスを作った場合、
そのクラスのインスタンスに対してコード補完(.を押した時に、メンバー関数やメンバー変数が一覧で出る)がかかりません。

クラスや関数の外にコピペすれば、コード補完がきくのですが・・・
これは、何か設定が悪いのでしょうか?
それともVSの仕様でしょうか?
48デフォルトの名無しさん:2011/04/05(火) 03:21:11.53
コンソールとかで進行状況をパーセントで表したりしたいのですが
文字の○○%の部分だけ更新させるにはどうすればいいのでしょうか?
49デフォルトの名無しさん:2011/04/05(火) 03:56:46.60
>>48
int i;
printf("start\n");
for(i=0;i<=100;i++){
    printf("\r%3d%%",i);
    Sleep(100);
}
printf("\nend\n");
50デフォルトの名無しさん:2011/04/05(火) 14:09:53.63
>>49

ありがとうございます。
51デフォルトの名無しさん:2011/04/05(火) 22:40:37.19
¥r がきもね
52デフォルトの名無しさん:2011/04/06(水) 16:49:57.19
Visual C++2010 Exp版を使用しています。
テキストエディタ上でリアルタイムにエラーなどを教えてくれる
赤の波線を表示しない様にするにはどうすれば良いでしょうか?
PCが非力らしく動作がカクカクするので止めたいとおもっています。
53デフォルトの名無しさん:2011/04/06(水) 20:57:09.12
設定→テキストエディタ→C++ →詳細
うろ覚えだけど、このあたりでインテリセンスやらの設定ができる
54デフォルトの名無しさん:2011/04/08(金) 03:29:34.77
質問よろしいでしょうか?
ビット演算が苦手なのですが
4バイトのlong型から1バイト分だけ抜き出すにはどうすればよいのでしょうか?
55デフォルトの名無しさん:2011/04/08(金) 03:43:52.66
すみません 事故解決
56デフォルトの名無しさん:2011/04/08(金) 11:25:36.82
union{
unsigned char b[4];
long l;
} bl;
57デフォルトの名無しさん:2011/04/09(土) 00:17:51.73
>>54
ビットシフトとビット積を使う
>>56の場合はエンディアンで死ねる
58デフォルトの名無しさん:2011/04/09(土) 00:51:55.91
>>57
エンディアンを考慮するのは
ビット演算でも同じでは?
59デフォルトの名無しさん:2011/04/09(土) 06:51:45.81
フォームアプリケーションのイベントハンドラというのは何なのでしょうか?
フォームの閉じるボタンが押された場合に処理を噛ませたいのですが
なにぶんフォームアプリケーションをあまりいじったことがないのでよくわからなくて。

よろしければ処理の加え方も教えていただけないでしょうか?
60デフォルトの名無しさん:2011/04/09(土) 08:21:53.39
右下の雷ボタンを押すとイベント一覧が出るから
FormClosingをダブルクリックする。
61デフォルトの名無しさん:2011/04/09(土) 10:22:57.08
>>58
正気か?
62デフォルトの名無しさん:2011/04/09(土) 11:17:26.87
>>61
除算使えばいけるけど
論理演算とシフトだけでのビット演算だと
ちと分からないなぁ
回答よろしく
63デフォルトの名無しさん:2011/04/09(土) 12:40:26.55
union{
unsigned char b[4];
long l;
} bl;
bl.l = 0x12345678;
if(bl.l & 256 == bl.b[0]) return bl.b[n];
else return bl.b[3 - n];
64デフォルトの名無しさん:2011/04/09(土) 12:50:03.57
0x12345612;
だったらバグるでしょ
6564:2011/04/09(土) 12:56:38.77
あぁ、劣化#ifdefか
66デフォルトの名無しさん:2011/04/09(土) 23:52:24.91
質問よろしいでしょうか?

クリップボードで取得した文字列型のIPをクリップボードに移したいのですが、
下の処理でやったところ、最初の1しかコピーされませんでした。
なにか悪いところがあるのでしょうか?

wchar_t _tempwchar[max(NI_MAXHOST, INET6_ADDRSTRLEN) +1]="192.168.0.1";     //実際には関数から代入

HGLOBAL hMem = GlobalAlloc(GHND | GMEM_SHARE , sizeof(_tempwchar) + 1 );
LPWSTR lpstr = (LPWSTR)GlobalLock(hMem);
lstrcpy( lpstr, _tempwchar );                                       //この部分でlpstrと_tempwcharは正常値
GlobalUnlock(hMem);
if( OpenClipboard(NULL) == 0 ) return;                                //クリップボードのオープン
EmptyClipboard();                                             // クリップボードの中身を空にする
SetClipboardData(CF_TEXT, hMem);
CloseClipboard();
67デフォルトの名無しさん:2011/04/09(土) 23:56:24.92
× CF_TEXT
○ CF_UNICODETEXT
68デフォルトの名無しさん:2011/04/10(日) 00:02:42.51
>>67

なるほど そこでしたか。ありがとうございます。
69デフォルトの名無しさん:2011/04/10(日) 00:04:46.67
連続で申し訳ないです。

>>67
無事出来ました。
ありがとうございます。
70デフォルトの名無しさん:2011/04/11(月) 23:19:49.26
fprintfで " を書き込みたいときは \" を使いますが、
fscanfで " の入っている文字列を扱いたいときはどのようにすればよいのでしょうか?
71デフォルトの名無しさん:2011/04/11(月) 23:27:13.68
>>70
文字列定数に " を書き込みたいときは \" を使う。
72デフォルトの名無しさん:2011/04/11(月) 23:41:22.91
>>71
エクセルデータなどで, ="0", ="1" のような値を取り出すときに、
fscanfではどのようにすればよいのでしょうか?
7370:2011/04/11(月) 23:43:25.84
すみません。

="0", ="1",

上記のデータからfscanfをもちいて%dのint型で0と1を取得する方法を知りたいという意味です。
74デフォルトの名無しさん:2011/04/12(火) 00:22:24.18
>>73
「="%d",="%d",」という文字列を記述すればいいから、

"=\"%d\",=\"%d\","

って書けばいい。すでにそう書いていて、うまうできない
なら、どんなコードを書いたかソースを晒せ。
7570:2011/04/12(火) 00:35:26.60
>>74

fscanfの引数に直接その文字列を書くと取得できず困っていたのですが、
char型の配列にその文字列を格納してから引数で渡したらうまく取り出せました。

回答ありがとうございました。
76デフォルトの名無しさん:2011/04/13(水) 00:14:06.74
MFCのデバイスコンテキストで線を描画する際に、
リストボックスなどの上に線を描画することはできますか?

描画してもリストボックスが前面に出てきて隠れてしまいます。
77デフォルトの名無しさん:2011/04/13(水) 08:50:24.05
リストボックスよりも上に書けばいい
78デフォルトの名無しさん:2011/04/14(木) 07:29:59.62
>>77
コードの順序のことでしょうか?
ボタンなどの上にはあとから描画することで上書きできるのですが、
リストにはなぜかできません。
そのあとにどこかで更新しているのでしょうか…
79デフォルトの名無しさん:2011/04/14(木) 09:53:04.84
>>78
それ本当にボタンの上に描けてる?
ボタンにフォーカスを移したりしたときに消えない?
80デフォルトの名無しさん:2011/04/14(木) 20:08:55.24
>>79

フォーカスというのがちょっとわかりませんが、
ボタンを押している間以外は、上に描けています。

あまり関係ありませんが、2つボタンがあり、
片方のボタンを押すと4回に1回くらいは、
押している間もう一つのボタンの上の描画も消えます。
81デフォルトの名無しさん:2011/04/14(木) 20:34:40.76
初歩的な質問すみません。

vc++2010を使っています。
逐一新しいプロジェクト作るのが面倒で、
一つのプロジェクトにソースファイルを複数作ったのですが、
エラーが出てしまいます。
一つのプロジェクトにa.cpp と b.cpp があった場合、
b.cppだけを走らせることは出来ますか?

教えてください。おねがいします。
82デフォルトの名無しさん:2011/04/14(木) 21:04:38.94
>>81
main関数が2つあるんじゃね?
関数名変えるか、プロパティ開いてビルドから除外すればいい
83デフォルトの名無しさん:2011/04/15(金) 11:07:28.15
windowsXP VisualStadio2005です。ダイアログベースのプログラムを作ろうと思います。
で、リソースビューからもう一個ダイアログを作りました。
そのプロパティーを見ると、Styleという項目で
「ポップアップ」「オーバーラップ」「子」という選択ができるのですが、それぞれどう違うのでしょうか?
84デフォルトの名無しさん:2011/04/15(金) 11:16:21.12
>>80
> フォーカスというのがちょっとわかりませんが、

キーボードの入力を受け付けている状態。
ダイアログ上でTabキーを何度も押していけば移動する。

> 押している間もう一つのボタンの上の描画も消えます。

ということは、ボタンの再描画が走ったときに消えてしまっているのだから、
原理的にはリストボックスと同じ問題が発生しているのでは?

それでもボタンは大丈夫というのであれば、
どのタイミングでどのように描いているのかを提示してみては?
85デフォルトの名無しさん:2011/04/16(土) 13:15:21.02
>>81
出来るよ、>>82さんの言うとおりmain関数が2つあったらダメだよ
86デフォルトの名無しさん:2011/04/17(日) 22:42:47.70
VC++でXPSファイルを印刷したいのですが、可能でしょうか?
参考になるサイトとかあれば教えてほしいです。
87デフォルトの名無しさん:2011/04/19(火) 14:32:06.77
vc++でC言語を扱いたいのですが
どのようにすればC言語使えるのでしょうか?
88デフォルトの名無しさん:2011/04/19(火) 14:52:29.06
拡張子をcにする
89デフォルトの名無しさん:2011/04/19(火) 20:31:29.02
たとえば、C言語の入門書に書いてあるプログラムを
動かすには?という質問であれば、Win32コンソール
アプリケーションを選べば、だいたい合ってる。
90デフォルトの名無しさん:2011/04/19(火) 20:55:22.40
それはない
91デフォルトの名無しさん:2011/04/20(水) 01:09:39.05
hoge.cppに

namespace Hoge{

クラス定義

}
があります。

main.cppで

using namespace Hoge:と宣言し、Hogeないのクラスのオブジェクトを使いたいと思っているのですが、
この名前を指定された名前空間は存在しません。というコンパイルエラーが出て、名前空間を使う
宣言ができません。どういう方法が正しいでしょうか?
92デフォルトの名無しさん:2011/04/20(水) 02:15:00.43
まずusingせず使う所から始めろ
93デフォルトの名無しさん:2011/04/20(水) 09:05:31.31
>>91
インクルードはちゃんとしてる?
ソース公開したらおそらく一発で回答がつきそうな質問だ
94デフォルトの名無しさん:2011/04/20(水) 09:13:30.43
>>91
hoge.hで

namespace Hoge{

クラス宣言

}

して
それをインクルードしてください
95デフォルトの名無しさん:2011/04/22(金) 16:56:35.33
ユーズィングなんです(><;)
96デフォルトの名無しさん:2011/04/22(金) 17:41:23.48
気のせいか using の部分が セミコロンではなくコロンなのは、書き込みの間違いなのか?
97デフォルトの名無しさん:2011/04/24(日) 17:29:23.91
char型の文字をテキストボックスに表示させるのはどうしたら
いいのでしょうか?

#pragma once
char code[1];

-----------------省略------------------------------------------------------------------

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
code[0]='a';
textBox1->Text=code[0].ToString();
}

これをするとテキストボックスに「a」じゃなくて「97」と表示されてしまいます。
98デフォルトの名無しさん:2011/04/24(日) 18:24:55.23
wchar_t code[2];
code[0] = L'a';
参考まで
99デフォルトの名無しさん:2011/04/24(日) 18:43:48.33
charは数値。
だいたいそれC++じゃないから、まだわからないならC#スレで訊いてね。
100デフォルトの名無しさん:2011/04/24(日) 20:34:01.29
WCHAR [32]' から 'System::Object ^' に変換できません

というエラーがでた場合、どういう変換処理をかいたらいいんでしょうか??
101デフォルトの名無しさん:2011/04/24(日) 20:38:15.78
だから、C#スレで訊けよ。
102デフォルトの名無しさん:2011/04/24(日) 20:45:43.63
こっちでもいいかもしらん。

くだすれC++/CLI(初心者用)part2
http://hibari.2ch.net/test/read.cgi/tech/1268613679/
103デフォルトの名無しさん:2011/04/24(日) 20:45:45.69
C#てかC++/CLIじゃね?
C++/CLIはC++じゃないからスレチ
104デフォルトの名無しさん:2011/04/24(日) 20:52:14.22
じゃあCもスレ違いなわけだな
105デフォルトの名無しさん:2011/04/24(日) 20:54:22.19
Cは許す
だがCLIてめぇだけはダメだ
106デフォルトの名無しさん:2011/04/24(日) 21:18:32.81
>>98のものです。問題解決しました!
ありがとうございました。

charではなwchar_t型ではなければならなかったのですね。

ちなみに自分が使っているのはVisualC++ CLR Windowsフォームアプリケーションです。
107デフォルトの名無しさん:2011/04/24(日) 22:36:51.09
visual studio2008 MFCを使っています。
ファイルをEXEに内包するにはどうすればいいでしょうか?
また、内包したファイルの取り出しのパスはどういう指定をしたらいいんでしょうか?
108デフォルトの名無しさん:2011/04/24(日) 23:03:48.72
いくらでも方法ありそうだけど
特に隠す必要なかったらリソースとか
109デフォルトの名無しさん:2011/04/25(月) 12:21:47.36
内包などしなけりゃ悩まなくていいしその処理も書かなくていいのに
110デフォルトの名無しさん:2011/04/27(水) 17:29:46.71
パソコン昨日買いました 教えてください
111デフォルトの名無しさん:2011/04/27(水) 18:36:52.79
>>110
まず服を脱ぎます
112デフォルトの名無しさん:2011/04/27(水) 18:47:09.55
textBoxの文字を分割して配列にする方法がわかりません
113デフォルトの名無しさん:2011/04/27(水) 19:03:11.90
>>112
それは.netだC++やCじゃないぞ
ttp://msdn.microsoft.com/ja-jp/library/system.string.split(v=vs.80).aspx
114110:2011/04/28(木) 15:54:00.60
>>111
脱ぎました
115デフォルトの名無しさん:2011/04/28(木) 16:40:36.31
DirectXの参考書の中に

CEffect::CEffect(
float vy, float max_xz, float max_y,
float min_size, float max_size
)
: VY(vy), MaxXZ(max_xz), MaxY(max_y),
MinSize(min_size), MaxSize(max_size)
{

}

というclassのコンストラクタ関数があったのですが
中段の
: VY(vy), MaxXZ(max_xz), MaxY(max_y),
MinSize(min_size), MaxSize(max_size)
という関数内部と宣言の間の:(コンマ)の部分は
どういう仕組みなのでしょうか?
変数などの処理ではなく宣言的な意味の部分が知りたいのですが
116デフォルトの名無しさん:2011/04/28(木) 16:49:55.27
初期化リストでぐぐる
117デフォルトの名無しさん:2011/04/28(木) 16:54:50.23
>>116
了解です、少佐殿。
ありがとうございます。
118デフォルトの名無しさん:2011/04/28(木) 19:30:36.05
>>114
次にネクタイを締めます
119デフォルトの名無しさん:2011/04/28(木) 21:24:19.19
textBoxに入力された文字列 ABCを

A B C という感じに一文字に分解したいです。


array<String^>^ abc=textBox1->Text->Split(',');
textBox2->Text=abc[0];
120デフォルトの名無しさん:2011/04/28(木) 21:52:08.39
C++/CLIはC++じゃねぇつってんだろが
121デフォルトの名無しさん:2011/04/28(木) 22:13:04.27
ここ C++スレじゃないよ
122デフォルトの名無しさん:2011/04/28(木) 22:32:11.88
VC++で扱える言語(C, C++, C++/CLI)全部が対象だろうな
C++/CLIは専門スレ行った方が適切な回答を得られやすいだろうけど
123デフォルトの名無しさん:2011/04/29(金) 10:56:13.46
^>^
124デフォルトの名無しさん:2011/05/01(日) 04:12:02.83
ShellExecute(NULL, "open", "index.html", NULL, NULL, SW_SHOWNORMAL);

これを実行したいのですが、

error LNK2028: 未解決のトークン (0A000011) "extern "C" struct HINSTANCE__ * __stdcall ShellExecuteA(struct HWND__ *,char const *,char const *,char const *,char const *,int)"
(?ShellExecuteA@@$$J224YGPAUHINSTANCE__@@PAUHWND__@@PBD111H@Z) が関数 "private: void __clrcall buildpropeditor::Form1::button5_Click(class System::Object ^,class System::EventArgs ^)"
(?button5_Click@Form1@buildpropeditor@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) で参照されました。
error LNK2019: 未解決の外部シンボル "extern "C" struct HINSTANCE__ * __stdcall ShellExecuteA(struct HWND__ *,char const *,char const *,char const *,char const *,int)"
(?ShellExecuteA@@$$J224YGPAUHINSTANCE__@@PAUHWND__@@PBD111H@Z) が関数 "private: void __clrcall buildpropeditor::Form1::button5_Click(class System::Object ^,class System::EventArgs ^)"
(?button5_Click@Form1@buildpropeditor@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) で参照されました。

とコンパイルエラーが出てしまいます
リンカーの設定だとは思うのですが、いまいち解決方法が分かりません
解決方法を教えてください


Visual C++ 2010
125デフォルトの名無しさん:2011/05/01(日) 04:54:22.65
>>124
http://msdn.microsoft.com/ja-jp/library/cc422072.aspx
Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダー:shellapi.h 内で宣言
インポートライブラリ:shell32.lib を使用
126デフォルトの名無しさん:2011/05/01(日) 10:46:07.52
Win32アプリケーションでフォームなどを使わずに
変換等々もできる入力部分を作るにはどうしたらいいのでしょうか?
127デフォルトの名無しさん:2011/05/01(日) 11:00:15.62
new/deleteに関して質問します。
new[]で配列を確保した場合delete[]で解放しなければいけませんが
以下のようにするとやっぱり不味いでしょうか。
デバッガで追ってみた感じ違いがないのですが。

char* lpsz = new char[10];
strcpy(lpsz, "test");
void* p = lpsz;
delete p;
128デフォルトの名無しさん:2011/05/01(日) 11:11:05.00
テストアプリでメモリ転送を計測するアプリを作りました。
環境はVisual Studio 2008 Pro SP1(VC++、MFC、ダイアログベース)
32ビット版アプリと64ビット版アプリでメモリ転送の違いがありました。
64ビット版が遅いのはどうしてでしょうか。
64ビット転送が32ビット版の約半分です。
32ビット版と64ビット版で同じなら良いのですが。

OS:Windows7 Ultimate 64ビット版
メモリ4GB(2GB x 2, DDR3-10600)

32ビット版メモリ転送アプリ
8ビット転送:1.1GB/sec
16ビット転送:3.1GB/sec
32ビット転送:6.4GB/sec
64ビット転送:12.0GB/sec

64ビット版メモリ転送アプリ
8ビット転送:0.8GB/sec
16ビット転送:1.6GB/sec
32ビット転送:3.3GB/sec
64ビット転送:6.3GB/sec
129デフォルトの名無しさん:2011/05/01(日) 11:12:10.09
誤爆か?
130デフォルトの名無しさん:2011/05/01(日) 11:14:27.12
>>127
VCの実装だと結局同じ関数に投げるから問題が出ないってだけだ
131デフォルトの名無しさん:2011/05/01(日) 11:19:56.36
>>130
なるほど、VCなら問題ないけど汎用性持たせようとするならダメってことですね。
了解です。
132デフォルトの名無しさん:2011/05/01(日) 11:22:05.07
POD/非PODの線引き(だよね?)よりも
配列か否かの線引きのが楽じゃね?
133デフォルトの名無しさん:2011/05/01(日) 16:37:24.26
>>128
コードを晒さないとなんとも言えぬ
134デフォルトの名無しさん:2011/05/01(日) 22:54:54.82
ゴーれデ0えィーけ中や、ぬさぬさひ毎日うベ0な盛るだけし0!いぬも、
音楽りうブ、きへェではうベ0なにど充実はHXん過ごすみすょえ♪

この文章解読できたらすごい
135!omikuji!dama:2011/05/01(日) 22:57:45.72
鳩山氏の演説草稿
136デフォルトの名無しさん:2011/05/01(日) 23:48:25.57
>>134 宣伝乙
ゴールデンウィーク中も、ニコニコは毎日イベント盛りだくさん!
アニメ、音楽ライブ、カフェでのイベントなど充実のGWを過ごしましょう♪
137デフォルトの名無しさん:2011/05/02(月) 16:51:13.86
と、隣の主婦にコンパイルエラーが出てしまいます・・・
138デフォルトの名無しさん:2011/05/02(月) 18:27:57.16
>>136
なんで、わかった!?
139デフォルトの名無しさん:2011/05/02(月) 19:38:22.24
ある程度意味のある言葉が散見してるから暗号としては楽な部類


と知ったかぶってみる
140デフォルトの名無しさん:2011/05/02(月) 19:57:27.92
>>138
母音の発音は曖昧でも、子音だけでだいたいの意味はわかる。
変数名の付け方とか、プログラマなら分かるだろ?

実際に声に出して読んでみると、「ゴールデンウィーク中」とか
「過ごしましょう」とかは、変換の前後でほとんど発音は
変わらない。

そこから、

漢字・拗音・濁音・記号そのまま
0 →ん
あ→お
い→あ
う→い
え→う
お→え

というルールがあるらしいのが分かるので、全文変換してみたら、

ゴールデンウィーク中よ、にそにそは毎日いべんの盛りだくさん!
あにめ、音楽らいブ、かふェでほいベんのなど充実ほ  過ごしましょう♪

…あたりまでは分かった。

変則的な変換ルールもあるようなので、細かいルールは
よく分からないが、あとは、ニコニコ動画のトップページに
書いてあった文章をコピペしておいたw
141デフォルトの名無しさん:2011/05/02(月) 20:08:44.87
単純に1文字進めただけだろ
得意げに解読してみたとか恥ずかしいヤツだな
というかスレチ
142デフォルトの名無しさん:2011/05/02(月) 22:29:19.70
また来る!
>>141
一様スレチではないよ
143デフォルトの名無しさん:2011/05/02(月) 22:32:20.87
>>128
core2な環境だったりしない?
144デフォルトの名無しさん:2011/05/02(月) 22:33:09.72
>>142
スレチじゃない訳くらいは書いてけw
145デフォルトの名無しさん:2011/05/03(火) 01:43:52.91
146デフォルトの名無しさん:2011/05/03(火) 04:33:01.47
初心者っちゃあ初心者なんだけどさ
VC++ってプロジェクトのファイルを別ウィンドウで開けたりしないの?
多重起動とかタブとかじゃなくて
147デフォルトの名無しさん:2011/05/03(火) 05:47:29.49
vc2010なら可能
148デフォルトの名無しさん:2011/05/03(火) 06:01:40.21
さあ早く2010に移行するんだ
149デフォルトの名無しさん:2011/05/03(火) 07:47:52.34
コード何個かフローティング表示にしたら重くなるな・・・いや便利だから良いんだが
150デフォルトの名無しさん:2011/05/03(火) 12:25:02.71
ウィンドウを最大化したいのですが、ShowWindow+SW_MAXIMIZEでは
位置とサイズだけ最大化して、いわゆるシステムメニューでいう「最大化」になりません。
タイトルバー上の最大化ボタンを押すのと同じことをコードからできないものでしょうか?
何か変なことを言っていたらすみません。
151デフォルトの名無しさん:2011/05/03(火) 12:29:35.83
コードから最大化ボタンを押すだけ
152デフォルトの名無しさん:2011/05/03(火) 13:22:06.39
>>151
すみません解決しました。
OnCreate内でShowWindowしていましたが、ここで最大化はまずいようです。
結局>>151さんのレスを参考にPostMessage(WM_SYSCOMMAND, SC_MAXIMIZE, 0)したら一応希望通りになりました。
ありがとうございます。
153デフォルトの名無しさん:2011/05/04(水) 03:01:10.27
>>147-148
thx!面倒だが移行してみようかなぁ
154デフォルトの名無しさん:2011/05/04(水) 13:17:05.27
String^ str = "シフトJISへ変換";
Encoding^ sjisEnc = Encoding::GetEncoding("Shift_JIS");
Byte[] bytes = sjisEnc->GetBytes(str);←

どうしても←の部分で型が合わないとかいうエラーがでます。
どうしたらいいか教えてください。
155デフォルトの名無しさん:2011/05/04(水) 13:21:22.00
配列の使い方も知らないのか
156デフォルトの名無しさん:2011/05/04(水) 13:32:13.45
>>155
'初期化中' : 'cli::array<Type,dimension> ^' から 'unsigned char []' に変換できません。
157デフォルトの名無しさん:2011/05/04(水) 20:52:48.70
VC++初心者です。大学時代にC++は書いてたので、なんとなく覚えています。
Mac用のアプリを開発しており、
それをWindowsに移植しようと考えております。

カスタム形式のViewを作って、それをいくつも Window(ルート的なView?)に
貼り合わせる処理をしたいと思っています。
そのような処理を行うには、
1. 完全にコードベースで作成し、貼り合わせる
2. 「GUIでViewを作成 + 細かな処理を書く」でコンポーネントを作成し、それを張る
という2つの手法がありそうな気がするのですが、
もしよろしければ、やりかたを教えていただけないでしょうか。
よろしくお願いします。
158デフォルトの名無しさん:2011/05/07(土) 16:05:43.23
array<unsigned char>^ GetByteCount(array<wchar_t>^ chars);
のGetByteCountに代入したものをtextBoxに表示させるのは
どうしたらいいのでしょうか?
159デフォルトの名無しさん:2011/05/08(日) 16:31:35.20
VS2010EEでC言語の勉強してるんですけど、ファイルを読み込むって奴が出来ません。
コードは以下の通りです。
プロジェクトの実行ファイルがあるフォルダにpassword.txtというファイルを作って、
それを開くつもりでコマンド引数に同じくpassword.txtと設定したんですけど何が間違っていますでしょうか・・・。
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
FILE *fp;
char ch;

if(argc !=2) {
printf("ファイル名の指定がありません。\n");
exit(1);
}

if((fp = fopen(argv[1], "r"))==NULL) {
printf("ファイルを開く事ができません\n");
exit(1);
}

while((ch=fgetc(fp)) !=EOF) putchar(ch);

fclose(fp);

rewind(stdin);getchar();
return 0;
}
160デフォルトの名無しさん:2011/05/08(日) 17:18:48.59
>>159
カレントディリクトリは必ずしも実行ファイルの位置じゃない
F5で実行ならプロジェクトの位置だった気がす
161デフォルトの名無しさん:2011/05/08(日) 17:51:44.90
>>160
出来ましたああああああああああああああああああああああああああああああああああああああ
ありがとうございます、本当に助かりました!
162デフォルトの名無しさん:2011/05/08(日) 21:00:07.82
いいってことよ
163デフォルトの名無しさん:2011/05/10(火) 16:35:53.90
newとdeleteはスレッドセーフですか?
164デフォルトの名無しさん:2011/05/10(火) 17:37:38.31
ランタイムライブラリの種類がマルチスレッドかマルチスレッドデバッグかマルチスレッドDLLかマルチスレッドデバッグDLLなら
165デフォルトの名無しさん:2011/05/10(火) 18:03:48.17
ありがとうございます
166デフォルトの名無しさん:2011/05/11(水) 16:43:28.29
VC++ でコンソールプログラムを作る場合、
プログラムが Ctrl+C を検知するにはどうしたらいいんでしょうか。

中身の都合上、いきなり中断されてしまうと困るので、
自分で中断処理を行なって終了するようにしたいのですが、どうしたものかと。
167デフォルトの名無しさん:2011/05/11(水) 16:52:03.91
SetConsoleCtrlHandler
168デフォルトの名無しさん:2011/05/11(水) 17:27:50.49
ありがとう。
169デフォルトの名無しさん:2011/05/11(水) 21:19:18.16
電源引っこ抜けよ馬鹿
170デフォルトの名無しさん:2011/05/11(水) 21:22:57.54
using namespace std;
はつかえないのですか?
名前は名前空間である必要があります
とのエラーがでます
171デフォルトの名無しさん:2011/05/11(水) 21:25:05.52
>>170
何もインクルードしないでそれ書いてない?
172デフォルトの名無しさん:2011/05/11(水) 21:29:40.80
>>171
ありがとうございました…
173デフォルトの名無しさん:2011/05/11(水) 22:49:35.52
VC++ .netにて

String^型などの変数に代入された文字列の順番を入れ替えたいのですが
どうやるのか教えてください。



Strng^ temp;

temp="ABC";

ここで何らかの処理をして

temp="CBA";

としたい
174デフォルトの名無しさん:2011/05/12(木) 01:25:42.76
VB2010Expressにて
リストボックスの選択した項目だけ削除するボタンを作りたいのですが、うまくいきません。
プログラミングコードのPrivate Sub btnDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDel.Click
の続きの部分です。よろしくお願いします。
175デフォルトの名無しさん:2011/05/12(木) 13:47:10.26
ウィンドウを持たないプログラムでビットマップイメージの伸張を行ないたいです。

ウィンドウを持っているプログラムであれば、デバイスコンテキストと StretchBlt を使って
伸張を行なう方法を思いつくのだけれど、よい方法はないでしょうか。
非表示のウィンドウを作るというのも出来れば無しの方向で。
176デフォルトの名無しさん:2011/05/12(木) 13:54:41.34
自分が表示してる以外のウインドウにも書けるから
自分がウインドウ持ってるかどうかは全然関係ないように思えるけど
やりたければ単純にビット列として自分で処理してもいい。
177デフォルトの名無しさん:2011/05/12(木) 14:21:08.65
>>175
何がしたいのか分からんがイメージのスケーリングを行いたいってこと?
178175:2011/05/12(木) 14:43:02.72
失礼。目的を書いてませんでした。
画像のリサイズを行なうプログラムを作りたいのです。

最初は自分でビット列から計算することも考えたのですが、
時間が掛かりそうなのと、素人の自分では綺麗に出来そうもなかったので、
既存の API などを利用できないかと考えてて StretchBlt を思い出した次第です。
179デフォルトの名無しさん:2011/05/12(木) 14:44:50.61
web用に画像を自動生成するライブラリ使ったことあるし、
探せば画像用のいろんなライブラリあるだろ
180デフォルトの名無しさん:2011/05/12(木) 14:53:22.38
本当だ
探せばいくらでも見つかるな
181デフォルトの名無しさん:2011/05/12(木) 15:02:36.25
>>178
ビット列に対して線形変換を行えばいいだけだけど
正直既存のライブラリで十分だと思う
182デフォルトの名無しさん:2011/05/12(木) 18:04:12.40
StretchBltもそんなに綺麗じゃなかったような
183デフォルトの名無しさん:2011/05/12(木) 18:05:48.97
OpenCVを使うべき
184175:2011/05/13(金) 17:12:34.42
ありがとうございます。

出来れば標準で使えるものだけで済ませたかったのですが、ライブラリもあってみることにします。
StretchBlt は確かにきれいではなかったと思うのですが、お手軽かな、と。
線形変換‥‥勉強してきます。
185デフォルトの名無しさん:2011/05/13(金) 19:50:33.21
VC++2010expressの質問ですが
Xcodeの過保護なインテリセンスみたいにifやforの後の記述を表示したり
対応する()をそれぞれ色で分けることはできませんか?
186デフォルトの名無しさん:2011/05/18(水) 23:46:17.15
VisualStudio2003つかってます。
ビルドして一回は成功するんだけどリビルドするとコンパイル中にとまってしまいます
ずっと帰ってきません。
雛形のダイアログべースMFCアプリすらビルドできない。
たぶんIDEのバグだとおもうんだけど久々に使ったからなにが原因かさっぱりわからない。
CPU使用率は0。
IDEがコンパイラからのプロセス終了通知を受け取れないとか、そんなような不具合が最近出たりしました?
187デフォルトの名無しさん:2011/05/18(水) 23:51:41.25
バカほどコンパイラの所為にする
188186:2011/05/18(水) 23:57:37.54
じゃあ何のせいよ
189デフォルトの名無しさん:2011/05/18(水) 23:59:21.79
>コンパイラの所為にする
誰もが一度は通る道だろうに。
190186:2011/05/19(木) 00:00:49.43
大体、閉じるボタンを押しても反応しないし、どうみてもIDEのバグだろう。
初心者スレに書くとこれだからなぁ。。

そういう現象が出ていたかどうかを聞いているんだからそこを答えてくれよ。
191デフォルトの名無しさん:2011/05/19(木) 00:04:13.25
>>190
一番の問題は
質問する態度じゃないことだな
192186:2011/05/19(木) 00:09:33.56
もういい。直った。
中途半端なスキルで先生気取りのおこちゃまども。
原因はカラースキームを代えた事だった。「Windows XPスタイル」に戻してリブートしたらいけたよ。
ぐぐったら英語の掲示板でgrepするとハングするって話題があって、そこにカラースキームを戻せって書いてあったのが決めて。
お前らほんと役立たずだね。
そのくせえらそう。
たぶんお前ら雑魚が絡まなかったらそのうち知ってる人が書いてくれたと思う。
それをつぶしてるだけのくずだね。

IDEがハングしてるのにIDEのバグじゃないって。
こんなやつらにソフトかかせてて大丈夫?w
193デフォルトの名無しさん:2011/05/19(木) 00:11:19.81
荒れる前に書いておこう
>・ネタや煽りは軽く流しましょう。
194186:2011/05/19(木) 00:13:40.35
なんか日本の掲示板で特にソフトとかコンピュータ系ってさぁ
やたら回答者が偉そうだよな
外国の掲示板はみんな親身になってくれるのにさ。
ちょっと教えてやる代償として偉ぶりたいんだろうね。
低い志だ
195デフォルトの名無しさん:2011/05/19(木) 00:20:37.61
>>193
やるなあ
196デフォルトの名無しさん:2011/05/19(木) 00:29:04.55
なんか日本の掲示板で特にソフトとかコンピュータ系ってさぁ
やたら質問者が偉そうだよな
197186:2011/05/19(木) 00:29:40.05
英語もわからんくせにw
198デフォルトの名無しさん:2011/05/19(木) 00:36:34.66
質問からの流れが神風すぎる
掲示板なんだから催促せずもう少しゆっくり待てよ
だから小学生って言われるんだよ(-。-)y-゜゜゜
199デフォルトの名無しさん:2011/05/19(木) 00:37:36.51
VS2010はバグバグでさらに楽しいワールドになってて不具合見つけても誰も興味を示さないぐらいになってる
やっぱりIDEはこうでなきゃねw
200デフォルトの名無しさん:2011/05/19(木) 09:45:52.79
なら日本の掲示板なんか使わずに外国の掲示板を使えばいいのに
マゾなの?死ぬの?
201デフォルトの名無しさん:2011/05/19(木) 10:52:38.97
とりあえず開発環境はデフォルトで使わないと
202デフォルトの名無しさん:2011/05/21(土) 13:35:55.48
なんか、バッチプログラムよりもつまらんね。
203デフォルトの名無しさん:2011/05/21(土) 13:56:21.99
お世話様です。

バイト配列同士を結合する方法する方法を教えていただきたいのですが。

+演算子を使ったりConcatを使ったりしましたが、うまくいきませんでした。

方法はあるのでしょうか?
204デフォルトの名無しさん:2011/05/21(土) 14:22:52.79
VC++2008Explessを使っています。
WinInet.lib を使用してHTTPヘッダーを表示するプログラムを作っているのですが
帰ってくるchar が1文字飛ばしでNULLが入っていてTextBoxに表示させようとすると1文字で終わってしまいます。
どうしたら良いでしょう?
ちなみにdwByteReadの中には読み取った文字数みたいなのが入ってました。
文字数分だけTextBoxの変数に強制的に入れられたらいいんじゃないかと思うのですが

char lpBuffer[102400+1];
DWORD dwBytesRead = 102400;

bool inetread = HttpQueryInfo( hService, HTTP_QUERY_RAW_HEADERS_CRLF, lpBuffer, &dwBytesRead, NULL);
if( inetread == false || dwBytesRead == 0 ) break;
textBox2->Text = textBox2->Text + gcnew String(lpBuffer);


WinInet.dll はSystem::stringとか使えないので型変換が非常に面倒ですね。
205デフォルトの名無しさん:2011/05/21(土) 14:33:36.40
char -> WCHARでおk
206デフォルトの名無しさん:2011/05/21(土) 21:58:39.25
HttpQueryInfoもAとW有るんだな
なのにLPVOIDなのかよ
207デフォルトの名無しさん:2011/05/21(土) 22:33:59.24
そりゃ文字列以外を返すこともあるから当然
208デフォルトの名無しさん:2011/05/21(土) 23:19:34.03
1>------ ビルド開始: プロジェクト: NimotsuKunFinal, 構成: Debug Win32 ------
1>コンパイルしています...
1>Parent.cpp
1>d:\gamelib\src\nonfree\nimotsukunfinal\sequence\parent.cpp(1) : fatal error C1083: include ファイルを開けません。'GameLib/GameLib.h': No such file or directory
1>StageSelect.cpp
1>d:\gamelib\src\nonfree\nimotsukunfinal\sequence\stageselect.cpp(1) : fatal error C1083: include ファイルを開けません。'GameLib/GameLib.h': No such file or directory
1>Title.cpp
1>コードを生成中...
1>ビルドログは "file://d:\GameLib\src\NonFree\NimotsuKunFinal\Debug\BuildLog.htm" に保存されました。
1>NimotsuKunFinal - エラー 11、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

こんなのが出るんですけど、パスをいじればいいのでしょうか?環境変数もいじったけど、うまく読んでくれません。
どうしたらいいのでしょうか? そのファイルがあるのは
D:\GameLib\2DGraphics1\include\GameLib
です。
209デフォルトの名無しさん:2011/05/21(土) 23:23:14.26
>>207
どんな時だよ
210デフォルトの名無しさん:2011/05/21(土) 23:44:10.61
>>208
#include してるところにフルパスで書いてみたら?
または、プロジェクトのプロパティの「追加のインクルードディレクトリ」に
D:\GameLib\2DGraphics1\include を入れるか、
D:\GameLib\2DGraphics1\include\GameLib を入れて、#include のところで、GameLib/ を外すか。
211デフォルトの名無しさん:2011/05/21(土) 23:45:07.52
>>209
HTTP_QUERY_STATUS_CODE指定すればDWORDでくれるよ
212デフォルトの名無しさん:2011/05/21(土) 23:54:25.10
>>211
まじかすまんかった
213デフォルトの名無しさん:2011/05/22(日) 00:43:26.06
>>210
やってみたが、どうも開けないです・・
214デフォルトの名無しさん:2011/05/22(日) 12:14:14.35
>>205
うまくいきました!!ありがとうございました
215デフォルトの名無しさん:2011/05/24(火) 00:01:12.09
今まではメモ帳などでプログラム書いてプロンプトのmakeコマンドでコンパイルをしていました。
プログラム環境を整えるためにvisualC++を導入しましたが、プロジェクトやファイル操作が巧く出来ず困っています。
visualC++の操作方法について詳しい解説サイトをご存知ないでしょうか?
自分が探した範囲ではhalloWorldを新規作成する程度の例しか見つけられませんでした。
見当違いの質問ならすみません。
216デフォルトの名無しさん:2011/05/24(火) 00:23:03.97
私がよく見ているサイトはコチラです
ttp://homepage3.nifty.com/ishidate/vcpp.htm
217デフォルトの名無しさん:2011/05/24(火) 00:28:52.84
>>216
有難うございます。参考にさせていただきます。
218デフォルトの名無しさん:2011/05/24(火) 00:29:00.06
VC++2008で構造体を配列的に持つ変数をつくろうとしているのですが、どうもうまくいきません。

ref struct ireko{
int link1;
int link2;
int link3;
int next;
}


array <ireko > ^saraA = gcnew <ireko>(1024);

これでビルドしようとすると
error C3149:トップレベルの '^' なしに、この型をここに使用することはできません
と言われてしまいます。

何を言っているのかさっぱりわからない上に
構造体、配列の使い方が 高校時代に勉強していたものと全く違って戸惑っています。
C++/CLI ではマネージと呼ばれる方式に変わったそうですが、私が知っているのはアンマネージの時代の技術なんですね
ググってもアンマネージのことばかり出てきて、頭が沸騰しそうです。

構造体を配列的にもつにはどうしたらよいのでしょう
219デフォルトの名無しさん:2011/05/24(火) 01:01:13.66
cli::array<ireko^>^ saraA = gcnew cli::array<ireko^>(1000); じゃねーか?

すんごく簡単に言うと、C++/CLI では各オブジェクトはネイティブでいうところのポインタみたいなモンで管理されてる。
それは配列の中身も同じなのな。で、その「ポインタみたいなモン」はハンドルっていうんだっけ?
その型を示すのが ^ なワケだ。

しばらく触ってないから適当なこと言ってるかもしれん。詳しくは自分で調べれ。
220デフォルトの名無しさん:2011/05/24(火) 11:36:40.65
そういうことで、Cと違うものやるぐらいならC#やったほうがいいと考えるわけ
221218:2011/05/24(火) 15:27:19.62
>>219
ありがとうございます。 そのように記述したらcli::は不要でしたがビルドできるようになりました。
ただ、実行しようとすると
「オブジェクト参照がオブジェクト インスタンスに設定されていません。」
というエラーが発生するようになり、実行できなくなってしまいました。

どうやらsaraA[] はLength=1024 確保しているようですが、その中の
saraA[0],saraA[1],saraA[2]・・・ がすべて未定義となっているようです。

これらはすべてひとつづつgcnewをしていくのでしょうか。。

ちなみに、arrayは毎回データを失いたくないので、Form.hの上の方に
private: static array <ireko^> ^saraA = gcnew array <ireko^>(1024);
と記述しています。
222218:2011/05/24(火) 15:37:26.68
コンストラクタで
saraA[0] = gcnew ireko();
とすることでエラーはでなくなりました。
が、これってforかなんかで全数gcnewする必要があるんでしょうか。
一気に全部使えるようにはならないんでしょうか
223デフォルトの名無しさん:2011/05/24(火) 16:17:15.69
そもそも
>private: static array <ireko^> ^saraA = gcnew array <ireko^>(1024);
こういう初期化のやりかたは無理でしょ
224デフォルトの名無しさん:2011/05/24(火) 17:25:33.49
テスト
225デフォルトの名無しさん:2011/05/24(火) 21:12:40.56
>>223
無理でしょ という事が理解できなくて困ってしまうのですが、>>222の方法でひとまず動くプログラムになりました。
226218:2011/05/24(火) 21:28:10.35
次に自作関数をつくって再起をかけたいのですが、
「error C3861: 'myfunc12': 識別子が見つかりませんでした」
と言われてしまい、関数が作れなくて壁に当たってしまいました。

識別子が見つからない、というのは関数自体が見つけられていないということだと思うのですが、なぜ見つけられないのでしょうか
試しに Void myfunc1(){ Me... } 自体をForm1.hの上の方の namespace app{...} 内に置いてみたところ動作するようになりました。

関数は呼び出すところよりも上で定義しないといけないのでしたっけ。
どうも私のイメージでは 下の方にまとめて記述するようなイメージがあるのですが。

以下がテストプログラムです。

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
myfunc1();
};
void myfunc1(){
MessageBox::Show("テスト");
};
227デフォルトの名無しさん:2011/05/24(火) 21:35:56.31
>>226
関数プロトタイプ宣言とか初歩だと思うの
228親切な人:2011/05/24(火) 21:55:22.60
>>226
関数はその関数を使う前に記述するようにする。すべての関数を一つのファイルに
いれることで可読性がよくなる。
また、関数が多くなりすぎるとわかりづらいので、一つ一つの関数はできるだけ大きくする。
関数間でデータをやりとりするのをわかりやすくするためにグローバル変数を各関数で
共有するようにする。
初心者ままずこれぐらいを気を付ければOK.
がんばって。
229デフォルトの名無しさん:2011/05/24(火) 22:09:16.95
すげー親切なヤツだな。w

>>222
ネイティブでやるところの int** a = new int*[16]; みたいなモンだから。
230デフォルトの名無しさん:2011/05/24(火) 22:09:26.94
かなり基本的なことで申し訳ないのですが、このスレでも
C++、CLR、CLI、.NET、MFC等名前が出てきて、
それぞれ似た系統の微妙に別の言語っぽいというのはなんとなく分かるのですが、

・それぞれ何が違うのでしょうか
・VC++2010で新しいプロジェクト→Win32→Win32プロジェクトを選んだ場合、
 記述しているのはどれにあたるのでしょうか

入門書を買おうにも、自分がどの言語をやっているのか分からないという不思議な状況に……
MFCと書いているのが役に立つのか、最初にCLR選べって本がいいのか……
231デフォルトの名無しさん:2011/05/24(火) 22:13:11.23
その用語一つずつここで全部説明してもらおうっていうのがバチあたりというか、
ググればわかるだろ、という話だな。

VC++プログラム入門みたいな本を一冊買ってこい。
232デフォルトの名無しさん:2011/05/24(火) 22:22:42.86
一つづつググっても関連がわからないのです

本を買いたいのですが、少し立ち読んだ限りでは、
「とりあえずコレを選んでこうしろ、ほら動いたろ」
みたいな形で、ネットのVC++講座も似たような感じ
今やっているものが何にあたるのか分からない状況です
233デフォルトの名無しさん:2011/05/24(火) 22:47:11.50
C++  そう言う名前の開発言語。およびその仕様。
CLR  共通言語ランタイム。マイクロソフトによる.NET Frameworkの動作環境の一つ
CLI  共通言語基盤。.NET Frameworkの動作環境についてマイクロソフトが定めた仕様。
.NET  マイクロソフトが開発したアプリケーション開発、実行環境。
MFC  WindowsAPI をラッピングしたクラス群。

軽くググった程度でこんだけわかるんだが。
「わからない」と思った場合はなにがわからないのか。なにをわかりたいのか。
それをちゃんと整理してから聞かないとアホの子扱いされるだけだよ?
234デフォルトの名無しさん:2011/05/24(火) 23:01:39.61
>>233
それぞれの関連、特にVC++との関連がわかりません

C++  言語  VC++立ち上げて新規→Win32コンソールで書くのがこれ
CLR  VC++立ち上げてCLR選べばこれを書ける CLR独自の命令が使える?
CLI  .NETと関係あるっぽい VC++との関連が不明
.NET CLIと関係あるっぽい VC++との関連が不明
MFC  なんか機能 VC++ならどのプロジェクトでも使える、
   ただし使ったら他のコンパイラではエラー

わからない部分を明確にしてみました
間違っている部分を補足してもらえないでしょうか
・VC++2010で新しいプロジェクト→Win32→Win32プロジェクトを選んだ場合、
 記述しているのはどれにあたるのでしょうか
これも教えていただけると助かります
235デフォルトの名無しさん:2011/05/24(火) 23:08:16.04
とりあえず上記のように考えているのですが、
この解釈で合っていれば「CLRでCLIとMFCを使ってプログラムを書く」なんてのも出来るはずですが、
>>19なんか見るとそれぞれ独立しているっぽいですね
分かっている人には当たり前すぎるのでしょうが、何がなにやら
236デフォルトの名無しさん:2011/05/24(火) 23:31:53.00
こういう手合いは「なにがなにやら」とか言いたいだけで理解する努力しないんだろうね。
237デフォルトの名無しさん:2011/05/24(火) 23:32:24.19
>>234
>>233に追加でWin32API、Win64APIも追加で考えないとな

Win32を選んで出来るのは、Win32APIを直接使ったプログラム

他にもMFCとかも選べるだろ?
238デフォルトの名無しさん:2011/05/24(火) 23:40:38.72
ATL・・・
239デフォルトの名無しさん:2011/05/24(火) 23:42:27.73
>>237
ありがとうございます

>Win32を選んで出来るのは、Win32APIを直接使ったプログラム
なるほど、結局それぞれ独立しているのかな
CLRを選ぶとWin32APIは使えないと

>他にもMFCとかも選べるだろ?
VC++2010Expで新規プロジェクトの選択肢にMFCとやらは無いようです
ということは、とりあえず今は考えなくていいようですね
240デフォルトの名無しさん:2011/05/24(火) 23:44:04.19
WTL・・・
241デフォルトの名無しさん:2011/05/24(火) 23:49:15.30
>>239
いや、Win32API(64bitWinならWin64も)だけは、どれからも呼び出せる

WindowsAPIの上に、MFCが乗ってるか、.netFreameWorkが乗ってるかだけ
(厳密には.netは単純に乗ってる訳じゃ無いが)
242デフォルトの名無しさん:2011/05/24(火) 23:52:52.09
あと、C++と、.netで使うC++/CLIは全く別の言語と考えた方が良い
243デフォルトの名無しさん:2011/05/24(火) 23:57:25.53
>>231
手元に二冊入門書あるけど、
片方は何の説明もなく「CLR選びましょう」と書いてある
もう片方も説明無しでVC++=MFCみたいな前提で書いてある

入門書に求める内容じゃないだろ
244デフォルトの名無しさん:2011/05/25(水) 00:06:21.77
>>241-242
Win32を選んでできるのが基本的なC++
CLR(=CLI?)を選べばCLRの機能が使えるけど全体的にC++と別物
MFCを選べばMFCの機能が使えるけどやっぱりC++と別物?

てな感じでしょうか
245デフォルトの名無しさん:2011/05/25(水) 00:27:31.45
>>244
MFCはその名の通りクラスライブラリだぞ?
246デフォルトの名無しさん:2011/05/25(水) 00:28:57.42
>>244
MFCも普通のC++を使います
そもそも、C++/CLIはC++を.net用に拡張した、.net専用C++とでも言うべき言語です
.netで使う場合、ほとんど拡張部分を駆使する形になります
247デフォルトの名無しさん:2011/05/25(水) 08:51:02.66
まったくの初心者がVCで.netは苦労するだけで何のメリットもないから
.netやるつもりならC#やっとけ
248デフォルトの名無しさん:2011/05/25(水) 09:21:42.29
もうペゾルド本でもC#の時代だもんね。
でもこの質問者、熱心に見せかけて人の言うこと聞かない伸びないタイプだから
すぐ放り出すに1000ぺリカ。
249デフォルトの名無しさん:2011/05/25(水) 12:02:13.09
もう少し掛けろよ
250デフォルトの名無しさん:2011/05/25(水) 12:17:16.00
>>247
うむ、vcはネイティブアプリ専用だーね
.net書く時はc#どころか、普通のc++に比べても余計な記述が増えるだけだもんよ

プロでもやってらんね

>>294
私が新たに1億ペリカ掛けよう
。。。ペリカってどこの通過?
ゴールドとかルピーの世代なんだが
251デフォルトの名無しさん:2011/05/25(水) 15:54:41.67
VC++2008 で RichTextBox を使用しています。
文字の色を変えることはできたのですが、太字にすることが出来ずに困っています。

色はColor::Redなどをそのまま代入すればよさそうですが、Font関係はインスタンスをつくってそれを入れる必要があるイメージでしょうか。
以下のようなプログラムを作ったのですが、
「error C2664: 'System::Windows::Forms::RichTextBox::SelectionFont::set' : 1 番目の引数を 'System::Drawing::Font' から 'System::Drawing::Font ^' に変換できません。」
と言われてしまいました。
MDSNを見てもいまいち1番目の引数が何なのかよくわかりません。

textBox1->SelectionStart = start;
textBox1->SelectionLength = 1;
textBox1->SelectionFont = System::Drawing::Font(textBox1->SelectionFont,FontStyle::Bold);


サンプルプログラムはVBかC#が多いですね。。
関数名などは似ているようですが今回のような件にはあまり参考になりません
252デフォルトの名無しさん:2011/05/25(水) 17:20:16.62
g++では-std=c++0xを指定すると使えた配列の指定をVisualStudio2010で使うにはどうすればいいでしょうか。
int* array = new array[3] {1,2,3};
という書き方です。スタンダードに書くとこうですが、
int* array = new array[3];
arry[0] = 1;
array[1] = 2;
array[2] = 3;
要素の数が多くて新しい書き方でかきたいです。
253デフォルトの名無しさん:2011/05/25(水) 17:21:11.78
間違えたので訂正。

g++では-std=c++0xを指定すると使えた配列の指定をVisualStudio2010で使うにはどうすればいいでしょうか。
int* array = new int[3] {1,2,3};
という書き方です。スタンダードに書くとこうですが、
int* array = new int[3];
array[0] = 1;
array[1] = 2;
array[2] = 3;
要素の数が多くて新しい書き方でかきたいです。
254デフォルトの名無しさん:2011/05/25(水) 17:24:08.87
Initializer Lists未サポート
255253:2011/05/25(水) 18:36:05.31
ありがとうございました。死ねバルマー
256デフォルトの名無しさん:2011/05/25(水) 19:45:42.18
初心的な質問宜しいでしょうか?

時々他人のコードを読ませていただいていると
if( a = Func() == 0 )
{

}

こんな感じの処理を見かけるのですが
これは処理の流れはどうなるのでしょうか?

Func()と0を比較した後
aにFunc()の返り値を入れているとかそんなかんじなのでしょうか?
見ていてどう処理されるのかがわからなくて凄く気持ち悪いのですが
257デフォルトの名無しさん:2011/05/25(水) 19:48:26.33
失礼しました。
a = Func()の間に括弧がありました。
この場合、 a(Func()の返り値代入済み)と0の比較になるのでしょうか?
258デフォルトの名無しさん:2011/05/25(水) 19:58:30.38
>>256
if ( a = Func() == 0 ) 〜 なら先に Func() == 0 を評価して
その値を a に代入し、 a の値が真ならば〜
if ( (a = Func()) == 0 ) 〜 なら Func() の値を a に代入してから a == 0 ならば〜
…かな。間違いが起きにくいように分けて書くほうが良いとおもいます
a = Func();
if( a == 0 ) 〜
259デフォルトの名無しさん:2011/05/25(水) 20:02:54.08
注釈 >その値を a に代入し、
その値というのは Func() == 0 の評価値なので
真か偽を a に代入ということになるとおもいます
260デフォルトの名無しさん:2011/05/25(水) 20:44:05.41
>>258-259
なるほど ありがとうございます。
261デフォルトの名無しさん:2011/05/25(水) 21:45:47.42
とりあえず昨日の話を纏めると、こちらの欲しかった回答は
・CLI、CLR、.NET はお仲間さん、しかしC++とは別物
・VC++でWin32選べばC++で書ける
・MFCはどっちでも使えるので出てくるまで考えなくておk
ってことになりそう……だいたい間違ってないよね?

とりあえず、帰りに入門書買ってきた
ここ数日見てる入門サイト(ttp://www5b.biglobe.ne.jp/~suugaku/vckougi/index.html
の冒頭に書いてあった、コレ(ttp://www.7netshopping.jp/books/detail/-/accd/1102539007
なんか本自体は判りやすそうだけど、読んでみたら結局どっちも説明なくCLRだった
VC++入門としか書いてないサイトの方はともかく、
本はこの表紙で取り扱う言語がC++と別物って、詐欺じゃないの……

>>246-247
そもそも結局.netが何かわかってないので……
とりあえずC++ちょこっと弄るのが目的なので、ごめんなさい、ありがとう

>>250
200日もシャバに居られるのか



ということで、改めて簡潔かつ明確に質問させていただきます
Visual C++使って(GUIで)C++覚えるのにオススメの入門書あったら教えてもえらないでしょうか
262デフォルトの名無しさん:2011/05/25(水) 21:51:41.34
>>261
そのサイトひっでぇな
C++って書いてるのにC++/CLI教えてるのか
詐欺ってレベルじゃねーな
263デフォルトの名無しさん:2011/05/25(水) 22:20:30.92
すんごくおおざっぱに言うと、
CLI は動作環境に対する仕様で、.NET Freamework はそれに基づいた実行環境。
CLR は .NET を動かすためのランタイムライブラリのようなもの。
この環境で動作するプログラムを書くための開発言語が、C++/CLI や C#、VB.net 。
これらはコンパイルでは中間コード?に翻訳されてて、仮想マシン上で動作し、マネージコードとも言う。

C や C++ などはこれらとは違ってコンパイル時に直接実行コードに翻訳される。
VC で Win32 プログラムと言われるのはこれ。
Windows 上でプログラムを組むなら普通は WindowsAPI を併用して書くことになる。
WIndowsAPI とは OS のシステムコールのこと。
MFC はマイクロソフトが作った主に WindowsAPI などをラッピングした追加ライブラリのようなもの。
マネージコードに対してアンマネージとかネイティブとか言ったりする。

ちなみに C++/CLI はマネージもアンマネージも両方とも扱える。
だからデバイス制御などの OS やハードよりのコードを C# などから参照できるライブラリとして書いたり出来る。

間違ってる箇所もあるだろうけど、自分で調べれ。

>>261
入門書なんか大抵の物ならなんでもいい。
そこに書いてあることを反復して取り込んで自分の物にしていく。
今の時代ならネットがあるから、疑問に思ったら徹底的に調べることも出来る。調べることが重要。
同じ理由でべつに本でなくてもいい。
264デフォルトの名無しさん:2011/05/25(水) 22:25:24.18
ってかこんな糞サイトよく探してきたな

>>261
やりたいことは決まってるの?
ぶちゃけ最初からGUIだとわからないままおまじないだらけになるぞ
CUIでアルゴリズム構築できるようになれ
あとCは理解してるの?
265デフォルトの名無しさん:2011/05/25(水) 22:25:48.75
C++とC++/CLIが別物とかオタが言ってるだけだから真に受けるなよ
公式的には拡張だからその本も初心者向けに説明省いてるだけで騙す気はないはず
実質別物なんですけどね
266デフォルトの名無しさん:2011/05/25(水) 22:29:13.95
拡張とかほざくのはマネージ拡張までにしておけよ
267デフォルトの名無しさん:2011/05/25(水) 22:31:57.66
>>261
>>246をもう一回嫁

.netFreameWorkってのは、CLRと言うランタイム(VM)の上で走るプログラム用のクラスライブラリ
CLIは色んな言語で共通のクラスライブラリ(.net)を使うためのインターフェイス(取り決め)

対応言語はvbやc#、f#など

.netで楽にプログラミングしたいなら、c#にしとけ


vc++の、それもEEを選ぶ理由は、c/c++で、win32を直接書いてアプリ作る事ぐらいしか無い

まあ、OSがどんな風にアプリとやり取りしてるかの勉強にはなるので、やりたいなら止めないが
268デフォルトの名無しさん:2011/05/25(水) 22:37:33.43
>>265
やっぱ別物じゃんw
ってか、自分の説明と言ってる内容同じなのにオタ扱いかよ
(>>246)
269デフォルトの名無しさん:2011/05/25(水) 22:42:06.56
VC++ EEでネイティブでGUIするのにいいライブラリないかね
270デフォルトの名無しさん:2011/05/25(水) 22:45:04.36
EE でも自分でリソースファイル書けばすむことじゃん。
271デフォルトの名無しさん:2011/05/25(水) 22:54:42.87
>>269
つwin32
272デフォルトの名無しさん:2011/05/25(水) 23:08:23.71
>>269
GTK+
273デフォルトの名無しさん:2011/05/25(水) 23:09:27.11
なんかC++/CLIでいい気がしてきた。
274デフォルトの名無しさん:2011/05/25(水) 23:13:49.82
と思ったけどインテリセンスがきかねぇ
だめだこりゃ
275デフォルトの名無しさん:2011/05/25(水) 23:15:39.94
>>273
それで良いならc#行けよ

そもそも、vc++EEには価値が無いのが気づかないのか
276デフォルトの名無しさん:2011/05/25(水) 23:21:39.48
>>263
ありがとう もう少し理解が進んだ、気がする
同じVC++入門でも扱ってる言語が二種類あって、
前知識必要な上に内容見ないとわからないとかスゴイ話だ

>>264
「VC++ 入門」でトップに出てくるんよ
やりたいことは、C++で書かれたソースで、流れを理解したり多少いじったりしたいものがある
そのためにはC++の基本的な文法や命令を知りたい
そのために、かなり簡単でいいので入門書一冊読破したい
CUIは精神的につらいので、大半理解不能のおまじないでいいのでGUIがいい
1から何か作る気はなくて、必要になったものがもしHSPで実現できなければその時考えればいいと思ってる
277デフォルトの名無しさん:2011/05/25(水) 23:39:52.70
>>276
少しは金払う気があるなら、c++bilderの方が初心者がc++でguiするのに向いてる

ただ、基本文法覚えるのさえ、cuiでは心が折れるなら、そもそもプログラミングに向いてないと思う
278デフォルトの名無しさん:2011/05/25(水) 23:42:43.97
おまい、そう言うことは先に言え。w

だったら UI を作りやすい MFCアプリケーションを選んで、
ダイアログのメイン画面にボタンを貼り付けてそれをダブルクリック。
自動的に追加されるイベントハンドラな関数に好きなだけ C++ コードを書くといい。

たぶんおまえが望んでるような本はない。
経験から言って、本を買ってもページ数の 5% もまともに読まない。知りたいことは書いてない。
図書館でも行ってたくさんの本をつまみ食いでもしとけ。
自分はほぼ独学でネットのつまみ食いでなんとかなったけどな。
279デフォルトの名無しさん:2011/05/25(水) 23:46:57.87
>>278
流れから察するに、彼は無料版しか持ってない
280デフォルトの名無しさん:2011/05/25(水) 23:51:34.77
CUIは絶対必要なものというか、それがつらいならGUIはもっとつらいよ。
意地が悪いかもしれないが、君はなんかどうでもいいことにこだわってうまくいかない感じがする。
いるんだよ、そういう奴。
281デフォルトの名無しさん:2011/05/25(水) 23:55:38.23
ならWTLでよくね?
282デフォルトの名無しさん:2011/05/25(水) 23:58:53.78
ATL付いて無いから無理
283デフォルトの名無しさん:2011/05/26(木) 00:04:29.83
>>277
貴重な情報ありがとう、三万とはまた心憎いラインだ
向いてなくてもプロのグラマーになるじゃなし、
目的があって手段をどうするかというだけの話

>>278
>だったら UI を作りやすい MFCアプリケーションを選んで、
>ダイアログのメイン画面にボタンを貼り付けてそれをダブルクリック。
>自動的に追加されるイベントハンドラな関数に好きなだけ C++ コードを書くといい。
半分くらいしか意味わからんけど、求めてるのはそういう感じ
GUIがいいっても、GUI関連を弄りたいわけでは全くないし
284デフォルトの名無しさん:2011/05/26(木) 00:08:05.62
そろそろ構わない方がいい気がしてきた・・・
285デフォルトの名無しさん:2011/05/26(木) 00:17:29.77
>>283
gui関連に興味ないなら、どこをどうすればcuiで心が折れるのかが分からん。。。
286デフォルトの名無しさん:2011/05/26(木) 00:27:47.42
>>283
なんでもいいから、とりあえずやってみてからな。
この道は試行錯誤を重ねるしかないんだよ。

とりあえず私が書いたモンくらいは理解しとけ。
ID はないけど、長文ばっかだからわかるだろ。w
287デフォルトの名無しさん:2011/05/26(木) 00:31:03.56
>>282
つWindowsSDK
288デフォルトの名無しさん:2011/05/26(木) 00:39:23.84
>>287
ATL3はさすがに古すぎないか?
289デフォルトの名無しさん:2011/05/26(木) 00:43:46.01
>>286
>この道は試行錯誤を重ねるしかないんだよ。
ありがとう。ただ私は概念とかをきちんと理解してから物事を進めるタイプなので
試行錯誤とか無駄なことはしたくないのです
本職のプログラマーはそういう泥臭い世界なのでしょうが、無駄な努力は興味が
ないですし
WEBや書籍を一通りみてみましたが、この世界はきちんとした体系で物事を進める
よりおっしゃるような試行錯誤が前提になっているようですね
プログラムという仕事が低い評価なままなのもそのあたりに原因があるような気がします
290デフォルトの名無しさん:2011/05/26(木) 00:51:32.61
試行錯誤を必要としない技術系の仕事はないよ? 技術系に限らんけど。
291デフォルトの名無しさん:2011/05/26(木) 00:51:52.17
>>288
WTLで使う分には問題なくね?
292デフォルトの名無しさん:2011/05/26(木) 00:52:47.19
>私は概念とかをきちんと理解してから物事を進める

>CUIは精神的につらいので、大半理解不能のおまじないでいいのでGUIがいい

はあ?
293デフォルトの名無しさん:2011/05/26(木) 00:59:02.87
プログラム組んでて試行錯誤しないときなんてないぞ
C++やめて人に作ってもらった方がいいんじゃないかガチで
294デフォルトの名無しさん:2011/05/26(木) 01:00:56.32
騙られるとか何年ぶりだwwww
295デフォルトの名無しさん:2011/05/26(木) 01:04:38.31
肖像権とは、本人の承諾なしに無断で写真やビデオカメラに撮られたり、
それらを無断で公表したり利用されたりすることのできないように、
主張できる権利です。
肖像権には、
・「人格権」の一部としての肖像権
・「財産権」である「パブリシティ権」
の2種類が存在します。
「人格権」
アーティスト、俳優はもちろんのこと、誰にでも認められている権利であり、
一般人の写真が無断で雑誌・ホームページなどに掲載された場合でも、
人格権侵害や名誉毀損等で訴えることも可能です。
296デフォルトの名無しさん:2011/05/26(木) 01:05:31.44
>>289
むしろ、プロの方が会社に金を出させてる分、素人より楽が出来るとも考えられる訳だが。。。

誰も、試行錯誤したくてしてる訳ないだろ

プログラミングの世界は、基本的にvbの様な初心者向けの言語でも、試行錯誤するんだよ

あんたがさっき言ってたhspもそうだったろ?
297デフォルトの名無しさん:2011/05/26(木) 01:06:01.03
別人か。
敢えて特徴的な改行するのは良い釣り師
298デフォルトの名無しさん:2011/05/26(木) 07:26:29.11
最近Javaを始めたらJavaにもいろいろフレームワークとか
あって何が何だかだったがそんな感じなんだろう。
試行錯誤して理解したがなw
299デフォルトの名無しさん:2011/05/26(木) 12:29:20.06
MFC、Win32++を超えるライブラリを作るスレ
http://hibari.2ch.net/test/read.cgi/tech/1286592582/
300デフォルトの名無しさん:2011/05/26(木) 17:11:25.13
MS Sucks!!!!!!!!!!!!!!!!!!
301251:2011/05/26(木) 19:34:21.52
ところで>>251の事も思い出してあげてください・・・
302デフォルトの名無しさん:2011/05/26(木) 21:20:21.66
>>301
c#に移行する気が起きないのは何故なんだぜ?
.netで使った事無いけど、エラーメッセージ見る限りじゃ、"^"付ければ良いんじゃ無い?
ダメなら、キャストかな
型が合ってないだけだから、割と単純だと思うんだが
303デフォルトの名無しさん:2011/05/26(木) 21:23:25.88
フォントの作り方とかC#やVBのサンプルでも読んで勉強した方がいいよ
304デフォルトの名無しさん:2011/05/26(木) 21:28:52.94
textBox1->SelectionStart = start;
textBox1->SelectionLength = 1;
textBox1->SelectionFont = gcnew System::Drawing::Font(textBox1->SelectionFont,FontStyle::Bold);

でおk
305デフォルトの名無しさん:2011/05/26(木) 21:38:42.40
入門書というか解説書っぽいのざっと調べてきた
なんかもう色々アレなのでこれで最後にするよ

世界でいちばん簡単なVisualC++のe本……ちょっとC++に触れて、後はCLI
ひと目でわかるMS Visual C++…….NETプログラムの本
プログラムを作ろう! Microsoft Visual C++ 2010 入門……これも.NETの本
これからはじめるVisual C++……違いにはほぼ触れないが、CLIの本
Visual C++でカンタン はじめて学ぶプログラミング……何も説明なくCLIだけ説明する本
明快入門 Visual C++ 2010……MFCの本 有料版前提 CLIにも多少触れる
かんたん Visual C++……MFCの本 有料版前提 CLIにも多少触れる


総括
・Visual C++がタイトルに入ってるのは、基本的にC++/CLIの本
 というか一般的に、C/C++未経験者にとってVC++はC++/CLIのためのソフトって位置づけなんだろうと思った
・ただしMFCがタイトルや表紙に入っていればMFCの本、C++/CLIにも多少触れてる
・Visual C++でカンタン以下略だけはマジキチ 冒頭読み比べる限りC++とC++/CLIの違いに一切触れてないのはこれだけ
・Visual C++使ってMFC使わずとりあえずC++やる、なんて本は無いのかも
 おとなしく独習C++やるかビルダーやってきます
306デフォルトの名無しさん:2011/05/26(木) 21:47:33.35
>>305
visualも何も付いてないただのC++入門の本はVC++でCUIばっかりだけどな。。。

GUIでC++入門したいって能天気な人だろ?
一応、C++Bilder6は1万ちょいでまだ売ってると思う
在庫限りのはずなんだが、余裕で余ってるからな

VC++は、大人の事情で使うか、最新のDX3Dを使うためののものと考えた方が良いよ
手軽にC++プログラミングは存在しない
307デフォルトの名無しさん:2011/05/27(金) 00:22:09.23
なんだろう。

車の運転を覚えたいのですが、という質問をした人に何か返事したら、
ロータリーエンジンとかディーゼルエンジンとかそんなことばっかり一生懸命しらべて
何にも前に進まないでいるみたい。

アクセルとかブレーキとかハンドルの使い方をまず覚えた方がいいと思うのだが。
あと基本的に人のいうこと聞かないタイプだね。
308デフォルトの名無しさん:2011/05/27(金) 07:18:59.90
>>307
プログラミングは車を運転する事ではなく、車を作る事に対応するからな

車を運転したいって整備工場に来る様なもの
だったらこっちは、自動車学校(アプリ使う側)に言って下さいと言うだろ
309デフォルトの名無しさん:2011/05/27(金) 07:49:48.36
どちらかというと運転にも車の仕組みにも興味なくエンジン機構について知りたいのに何故かトヨタ車に拘ってた感じかと
310デフォルトの名無しさん:2011/05/27(金) 08:06:50.18
BuilderはBuilderでGUIは独自ライブラリだったよな。
あんなもの勉強してどうなるのか
311デフォルトの名無しさん:2011/05/27(金) 08:49:39.03
C言語とC#ある程度かじって、今度はC++学ぼうと思っているんですが
C++のコンパイラのBorland 5.5でどうしてCもC++もコンパイルできるの?
C言語の拡張版がC++って考え方なの?
312デフォルトの名無しさん:2011/05/27(金) 08:50:51.82
C++コンパイラでCをコンパイルできないコンパイラってあるの?
313デフォルトの名無しさん:2011/05/27(金) 08:56:18.41
それよりスレ違いに気がつこう
314デフォルトの名無しさん:2011/05/27(金) 08:57:42.33
質問をさせていただきます。
どなたか解決策をご存じの方はご教授ください。

マルチスレッド周りをデバッグしてると、
パソコンごとフリーズする問題に直面しました。

Windows7 VisualStudio2005 (C++で作業)
サービスパックはすべて当ててます。
VisualStudio2010 Express でも試しましたが同じ現象が発生します。

調べたところIMEが悪さをしているとあったので、
IMEをアンインストール。(ATOKに換えました)

「そもそも停まるもんだ」
という情報もあったのですが、あまりに不便なので困っています。

発生する箇所はLuaというスクリプト言語ファイルを読み込みしている箇所で、
スクリプト側からC言語の関数を呼び出しているところに
ブレークポイントを貼り、ステップオーバーしてると高確率でフリーズします。

(Luaとは別にマルチスレッドも行っています)

デバッガ使っているとフリーズするのは結構前からある問題のようですが、
製品版のVisualStudio2010なら直っているのでしょうか。

何か解決策等ご存知でしたら教えてください。
お願いします。
315デフォルトの名無しさん:2011/05/27(金) 09:35:35.06
IMEをアンインストールしても挙動が変わらなかったのかどうか書いてない。
316デフォルトの名無しさん:2011/05/27(金) 09:36:10.19
そもそもデバッガなんて使ったこと無い
317デフォルトの名無しさん:2011/05/27(金) 09:36:22.15
ここはサポートセンターじゃないよ
318デフォルトの名無しさん:2011/05/27(金) 09:59:48.36
>>315
挙動変わらずです。

サポセン聞くかあ…
319デフォルトの名無しさん:2011/05/27(金) 10:03:55.31
それだけで判断すると製品版でも再現すると思うけど。
プロセスだけ終了させることもできなくなるの? 完全にOSがフリーズ?
320デフォルトの名無しさん:2011/05/27(金) 10:11:52.60
>>319
もうすべてパソコンフリーズです。
マウスは動くけど反応しない感じ…。
CTRL+ALT+DELETEも効きません。

VSは 応答しません
になってます。

しょうがないから電源ボタンで再起動してます。
321デフォルトの名無しさん:2011/05/27(金) 13:22:16.60
詳細なテキストサービスをoffにしてみそ
322デフォルトの名無しさん:2011/05/27(金) 13:40:59.11
>>321
それはIMEを消すまえにやってみたんですけど、
結果は変わらずでした…。

言語バーじゃないとしたらなんなんだろう…。
323デフォルトの名無しさん:2011/05/27(金) 18:42:26.29
IME使わない人がデバッガ作ってるからしょうがない
324デフォルトの名無しさん:2011/05/27(金) 21:24:54.65
マルチスレッドなプログラムでステップ実行すると高確率で固まる。
そう思って諦めるしかないと思ってたんだが、違ったのか?
てっきり IDE が、スレッド間の同期?をとるために排他制御かなにかをはさんでて
それがうまくいかずにああなるのかと。

デバッグするときは、ログ出力を埋め込んで当たりをつけてから、
固まるのを覚悟で局所的にステップ実行って感じでデバッグしてたよ。

同じ症状なら、症状が重くなる前に ctrl + alt + del でログオフ -> 再度ログインで高確率で復帰できる。
まあ保存してないデータは失われるんだけど、復帰までの時間を節約できる。
325デフォルトの名無しさん:2011/05/27(金) 23:48:55.61
>>324
IME全部消してみた(消したはず)だけどダメでした。

>デバッグするときは、ログ出力を埋め込んで当たりをつけて
やっぱこうやってやるしかないのかな。

PC用ソフトを作ってる会社とかどうしてるんだろう…
326デフォルトの名無しさん:2011/05/28(土) 00:25:10.84
まあそのPCソフトを作ってる会社でそうやってるワケなんだがな。w
327デフォルトの名無しさん:2011/05/28(土) 08:45:57.29
デバッグってログ出力かprintfかmessageboxでしかやったことない。
328デフォルトの名無しさん:2011/05/28(土) 10:16:08.60
>>326
マジかw
苦労が絶えませんなそれは…w

>>327
こちらもそうします。

皆さん情報ありがとうー
329デフォルトの名無しさん:2011/05/28(土) 21:39:49.00
>>314
タスクマネ-ジャでctfmonをkillする
330デフォルトの名無しさん:2011/05/29(日) 13:27:19.01
>>329
ctfmon消した(はず)なんです。
はず、ってのは今挙がってこないので…。
331デフォルトの名無しさん:2011/05/29(日) 23:11:24.41
vc++とc++とは何か違うのでしょうか
332デフォルトの名無しさん:2011/05/29(日) 23:35:14.21
コンパイラと開発言語。
333デフォルトの名無しさん:2011/05/30(月) 22:32:50.65
C++:車
VC++:トヨタ車
334デフォルトの名無しさん:2011/06/01(水) 19:31:31.53
エラー 24 error LNK2019: 未解決の外部シンボル __imp__CharPrevA@8 が関数 _ChangeFileExtension で参照されました。

CharPrevとCharNextがないみたいです。マルチバイトです。
誰か助けて。
335デフォルトの名無しさん:2011/06/01(水) 19:51:58.73
解決しました。
いつの間にか「親またはプロジェクトの規定値から継承」のチェックが外れてました。
多分いたずら好きの妖精さんの仕業です。
336デフォルトの名無しさん:2011/06/02(木) 06:19:43.66
PathRenameExtension使えよって突っ込むわ
337名無しさん◎書き込み中:2011/06/04(土) 11:58:47.02
最近Visual C++ 2010 express のWindowsフォームアプリケーションで
プログラムを作りはじめました。しかしForm1.hにどんどん追加され、
肥大化します。cppでなく、ヘッダファイルにロジック書かれるのは
非常に違和感があるのですが、仕方ないのでしょうか。
cppにロジックを書くようにするにはどう設定するのかわかりません。
一応10年前ごろにVC++5でのプログラミング経験があります。
338 忍法帖【Lv=6,xxxP】 :2011/06/04(土) 12:35:55.79
 
339デフォルトの名無しさん:2011/06/04(土) 14:43:56.33
>>337
STLを見れば解決
340名無しさん◎書き込み中:2011/06/05(日) 19:38:10.03
>>339
STLを見ても私の疑問は何も解決しませんでしたが、自己解決しました。
Visual C++ 2010 express のWindowsフォームアプリケーションの仕様の
ようです。私は気に入らないので、ロジックはcppに移しました。
341デフォルトの名無しさん:2011/06/05(日) 20:10:28.08
VC++2008です
あるプログラムをC#からC++に移植することになりました(移植理由は会社の見栄、技術力を顧客に示すため、でもC++出来る人がいないのよね・・・)
そんな理由での移植なので本を見ながら移植していて、困ったことが色々出ているのですが
MFCアプリでメインのフォームやボタンなどの部品に、背景画像を設定するのってどうするんでしょう

C#だと、プロパティにビットマップを指定してあげるだけで良かったんですが
VC++はさっぱり・・・・

やりたくないけど逃げられないです。助けてください
342デフォルトの名無しさん:2011/06/05(日) 20:12:38.88
MFCならCBitmapButtonとかあるだろ
343デフォルトの名無しさん:2011/06/05(日) 22:51:52.20
ボタンはそういうのがあるんですね・・・・
フォームやラベルにもあるんでしょうか(LabelはPictureBoxを組み合わせて逃げようと思ってますが)
344デフォルトの名無しさん:2011/06/10(金) 00:49:38.62
Visual Studioがなくて、Microsoft .NET Framework v2.0のSDKだけを
使って、SDK コマンド プロンプトでコンパイルしてますが、C++ .NETの
コンパイルオプションは、(コマンドプロンプトのプログラムではなく)
Windowsプログラム用は何になりますか。
VB.NETとC#.NETで言う/target:winexeに該当するオプションがわかりません。
345デフォルトの名無しさん:2011/06/10(金) 22:18:40.84
>>344
Express落としてくる手は封じられてるの?
346デフォルトの名無しさん:2011/06/11(土) 21:59:36.03
Visual C++ 2010 expressのWindowsフォームアプリケーションで
フォーム上、またはフォーム上の特定オブジェクト(たとえば
テキストエリアなど)にファイルをドラック&ドロップした時の
イベントハンドラはどのように記述すればいいのでしょうか。
クリック時のハンドラは、デザイナーでダブルクリックすれば
勝手に作ってくれますが、ドラック&ドロップの場合の書き方、
作り方が分かりません。
347デフォルトの名無しさん:2011/06/11(土) 22:19:34.26
>>346
C#のコードですが・・・、.NET上ならあんま変わらないと思います
http://support.microsoft.com/kb/307966/ja

C言語を1ヶ月程やって(メモリ参照、メモリ確保あたりまで)、
C#を2,3ヶ月程やって(ラムダ式、イベントハンドラ、インスタンス)
今C++かじってるんですが、オブジェクト志向言語やってたせいで思考がオブジェクト思考になって
手続き型に拒否反応が出て、ものすごい覚えにくいです
どうにかすっきりしてスパッと覚えたいんですが・・・何かアドバイス教えてください
348デフォルトの名無しさん:2011/06/11(土) 22:30:47.73
>>347
情報ありがとうございます。
やはりD&DするコントロールのAllowDrop プロパティを True に
すればいいはずですよね。ところがファイルをD&Dしてきても
マウスポインターが侵入禁止マークのままでD&Dイベント自体が
発生しないんですよね。どこが間違っているのかな。
349デフォルトの名無しさん:2011/06/11(土) 22:32:40.35
>>347
正直理解できないな
staticメソッドとただの関数なんてさほど変わらないと思うんだが
350デフォルトの名無しさん:2011/06/11(土) 22:59:16.22
ListBox コントロールには、ユーザーが処理する必要のある
2 つのドラッグ アンド ドロップ イベント DragEnter と DragDrop が用意されています。
DragEnter イベントは、コントロールの境界内にオブジェクトをドラッグしたときに発生し、
ドラッグ中のオブジェクトをそのコントロール上にドロップできるかどうかを判定するために使用します。
コントロール上にファイルがドラッグされた場合にこのイベントを処理します。
このイベントを使用すると、オブジェクトがコントロール上にドラッグされたときに、
ドラッグされたオブジェクトに応じて適切なアイコンを表示できます。



って書いてるだろ。
DragEnter イベントで処理してるのかよ。
351デフォルトの名無しさん:2011/06/12(日) 00:19:53.39
>>350
ありがとう、ちゃんと読んでなかった。DragEnter イベント処理したら
うまくいきました。しかしDragDrop イベントでファイル名が取れない。

System::Void textBox_FineName_DragDrop(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e) {
String^ fname = dynamic_cast<String^>(e->Data->GetData(DataFormats::FileDrop, false));
MessageBox::Show( this, fname, "test" );
}

これだと何も表示しない。もう今日は力尽きた。
352デフォルトの名無しさん:2011/06/12(日) 01:52:16.64
Visual C++て、おそらくC標準ライブラリ、Win32API、C++標準ライブラリ、MFC、ATL、
インラインアセンブラも使えて、その上で.net frameworkを上乗せすることもできる
んだろうな。
vb.netやc#.netで学習した.net frameworkの知識をC++にも適用できるし。
こんなワイドな対応力があるのは、すごいな。他にそんなのあるか?
353デフォルトの名無しさん:2011/06/12(日) 08:48:22.69
System::Void textBox_FineName_DragDrop(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e) {
String^ fname = e->Data->GetData(DataFormats::FileDrop, false)->ToString();
MessageBox::Show( this, fname, "test" );
}

これだと「System.String[]」って表示される。
C#やVBばかりで、CLIのサンプルが全然見つからない。
354デフォルトの名無しさん:2011/06/12(日) 09:26:37.23
できた!

System::Void textBox_FineName_DragDrop(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e) {
array<String^>^ arrayfiles;
arrayfiles = (array<String^>^) e->Data->GetData(DataFormats::FileDrop, false);
if ( arrayfiles->Length > 0 ) {
fname = arrayfiles[0];
MessageBox::Show( this, fname, "test" );
}
355デフォルトの名無しさん:2011/06/12(日) 15:40:18.88
>>352
ないね、でもそういうのが嫌いでキメラだという人もいる
俺は好きだけどね
356デフォルトの名無しさん:2011/06/12(日) 17:31:01.16
.netFrameworkあれば他いらなくね?
357デフォルトの名無しさん:2011/06/12(日) 17:36:41.14
>>356
それだけになったら、そもそもvc++の存在価値無くならね?
358デフォルトの名無しさん:2011/06/12(日) 18:54:59.21
>>357
うーん
だからなのかなんなのかたしかに使ってないな
359デフォルトの名無しさん:2011/06/14(火) 13:33:10.74
VC++ 2008でビルドした実行ファイルサイズについて聞きたい。

下記の環境でSDKで作ったプロジェクトをリリースでビルドすると
実行ファイルのサイズが、
XPでのビルドで、400KB。7でのビルドで1.6MBになってしまうんだが。
何か違いはありますでしょうか?XPと同じに400KBになってもらいたい。

以下は、2つの環境
1つ目
OS:XP Pro XP3(32ビット)
開発環境:VS 2008 Pro SP1

2つ目
OS:7 Ulitimate(64ビット)
開発環境:VS 2008 Pro SP1
360デフォルトの名無しさん:2011/06/14(火) 13:34:22.32
マルチスレッドDLL
361359:2011/06/14(火) 13:42:01.84
>>360
プロジェクトのプロパティで
C/C++ → コード生成 →ランタイム ライブラリ → マルチスレッド (/MT)
2つの環境ともこの設定です。
362デフォルトの名無しさん:2011/06/14(火) 14:23:53.56
SDKでってのはMFCを使ってないってこと?
「MFCの使用」はどうなってる?
先日のMS Updateの適用は両方同じ?
7だけUpdateしちゃったとか
363デフォルトの名無しさん:2011/06/14(火) 18:11:09.82
>>362
7の方は、「先日のMS Updateの適用」をしました。
VC++のアプリはSDKをベースをしていますが、一部MFCも使用しております。
色々ぐぐったら、なぜ実行ファイルサイズが増えるのか分かりました。
皆さん、ありがとうございました。
364デフォルトの名無しさん:2011/06/15(水) 10:41:34.87
Microsoft Update で 4月の更新の置き換えが出てるからそれで改善するかも。
365デフォルトの名無しさん:2011/06/16(木) 16:48:59.10
C++相談室のほうで投稿したのですが、誘導でこちらに

以下コピー
C++ 6.0 のADOを使用した処理で質問があります。

現在SQL SERVERに接続し、データを取得しています。
この時

_variant_t varValue;
varValue = rs->Fields->GetItem(_variant_t("TargetDate"))->Value;

このようにデータを取得してきているのですが
DB側がIntegerの値を返すとvarValue はVT_I4となりvarValue.intValで値が取得できるのですが、
DateTime型の場合varValue はVT_BSTRになります。
この時、何かの型の変数に格納する場合、どのような型が適切でどのようにキャストしてやればいいのでしょうか?
ウォッチしたときに varValueは"2011-01-01" BSTR と表示されます。この値を取得して使用したいのです。

よろしくお願いします。

追記:MFCは使用していません。
366デフォルトの名無しさん:2011/06/17(金) 08:52:01.47
ここは初心者スレ
367365:2011/06/17(金) 09:19:52.21
いや・・・初心者なのですが・・・
368デフォルトの名無しさん:2011/06/18(土) 03:05:43.08
VC2010,win32でビットマップの表示のプログラムを作成したところ、
プログラムは作動しているのですが以下のようなエラーが出力されて画像の表示ができません。

file2.exe の 0x7c80baba で初回の例外が発生しました: 0xC0000005: 場所 0x00000081 を読み込み中にアクセス違反が発生しました。

rcファイルはResEditを使用しており
VC2010のリソースファイルは
bitmap1.bmp
file2.rc
となっています
ご教授願います
369デフォルトの名無しさん:2011/06/18(土) 03:14:52.91
ソース貼れよ
ぬるぽチェックしろよ
370デフォルトの名無しさん:2011/06/18(土) 05:02:46.52
引数が間違ってんだよ
371デフォルトの名無しさん:2011/06/18(土) 19:27:42.53
>>369-370
一応解決しました
LoadImage関数の第1,第2引数をそれぞれNULL,TEXT(bitmap1.bmp)にしていなかったことが原因みたいです
追加の質問で悪いのですが、LOADIMAGE関数の第2引数をMAKEINTRESOURCE(IDB_BITMAP1)を使ってリソースファイルから直接読み込む方法はありませんか
↑の方法だとResEditのBITMAPフォルダを使用せず画像をロードしているようなので・・・
よろしくお願いします
372371:2011/06/18(土) 21:00:21.84
自決しました
お二人とも情報ありがとうございました。
373デフォルトの名無しさん:2011/06/18(土) 21:14:48.16
>>365
_bstr_t 経由で LPCTSTR に変換すればいいと思うよ
374超初心者:2011/06/18(土) 22:38:25.62
初心者でお願いがあります。
VC++6.0で、ある一定時間毎に"AAA.CSV"を読み込み、その値を表示するプログラムを考えております。
しかし、"AAA.CSV"が無い場合に"問題が発生したため、TEST.exeを終了します。・・・"というエラーが表示され、
動作停止となります。"AAA.CSV"が無い場合は、そのままを表示を変更せず、動作を継続させる方法をどなたか、
ご教授願いませんでしょうか?プログラムは下記の通りです。どうぞよろしくお願いします。

void CTESTDlg::OnTimer(UINT nIDEvent)
{
if(nIDEvent==1){
static char DATA_B[1000],*DATA[45];
static int DAT;
ifstream fin;
fin.open("C:\\AAA.CSV");
if(fin.fail()){
CEdit* myED1=(CEdit*)GetDlgItem(IDC_EDIT1);
sprintf(SS,"エラー");
myED1->SetWindowText(SS);
fin.close();
}
else{
fin >> DATA_B;
DATA[1]=strtok(DATA_B,",");
DAT=atoi(DATA[1]);
fin.close();
CEdit* myED1=(CEdit*)GetDlgItem(IDC_EDIT1);
sprintf(SS,"%2.0d",DAT);
myED1->SetWindowText(SS);
}
}
CDialog::OnTimer(nIDEvent);
}
375デフォルトの名無しさん:2011/06/18(土) 22:44:47.25
あるかないか調べるだけ
376デフォルトの名無しさん:2011/06/18(土) 23:01:19.71
しかし気持ち悪いプログラムだな
377デフォルトの名無しさん:2011/06/19(日) 15:49:38.01
C言語ちょっとかじって、C++勉強しているんですが
Visual C++じゃないのですが、Borland5.5でC++勉強しているんですが教えてください

http://ideone.com/WyQsu

これなんですが、何故stdlibをインクルードしていないのにreallocが使えるのかわからないです
他にもC++のコンパイラで何故C言語をコンパイルできるのかもわからないです・・・
どなたか教えてください・・・
378デフォルトの名無しさん:2011/06/19(日) 16:36:26.81
>>377
スレ違いBorlandスレに池

>何故stdlibをインクルードしていないのにreallocが使えるのか
stdlibをincludeしてるから

C++ならreallocじゃなくてvector使え

>C++のコンパイラで何故C言語をコンパイルできるのか
コンパイラがそういう風に設計されているから
歴史的経緯から言えばC++がCの拡張からスタートしているため
379デフォルトの名無しさん:2011/06/19(日) 23:22:41.60
クラス(class)でもやや持て余している状況なんですが
テンプレート(tamplete<>)が必要になる状況がさっぱりわからないのですが
単純な例で説明してもらえないでしょうか?
380デフォルトの名無しさん:2011/06/20(月) 05:51:27.16
スレ違いの質問があったときに
テンプレがあれば適切なスレに誘導するのが楽
381デフォルトの名無しさん:2011/06/20(月) 10:29:52.65
>>379
あれば便利な場合があるだけで、必要ではない

例えば配列の機能を持つクラスを作るとしよう
templateがないと、「intの配列クラス」「doubleの配列クラス」「構造体1の」「構造体2の」・・・
と個別に書かなきゃならない
扱うデータの型以外のコードは全く同じものを
382デフォルトの名無しさん:2011/06/20(月) 10:43:12.68
>>379
STLを学習すると良いっすよ
383デフォルトの名無しさん:2011/06/20(月) 12:51:49.67
>>379
よく引き合いに出されるのは、swap
void swap(int& lhs,int& rhs);
void swap(double& lhs,double& rhs);
・・・

template<class T>
void swap(T& lhs,T& rhs);
の一つで済む。型に依存しないアルゴリズムを記述できる
384デフォルトの名無しさん:2011/06/20(月) 13:03:44.10
スレ違い
385デフォルトの名無しさん:2011/06/20(月) 20:06:27.31
test.txt
100,200,300
150,310,520

上記のファイルをifstreamとgetlineを使って中身をカンマ区切り事に読み取り表示させる事はできたのですが
中身のデータを文字列から数値に変換したいのですがどうすればいいのでしょうか?
386デフォルトの名無しさん:2011/06/20(月) 21:33:41.96
lexical_cast
sstream
strtoX
atoX

お好きなのをどうぞ
387デフォルトの名無しさん:2011/06/20(月) 22:37:30.02
>>386
どもです
sstream関連で対処することにしました
388デフォルトの名無しさん:2011/06/21(火) 14:21:38.10
classでPrivateとPublicがありますが
「めんどーだから全部Publicでいいだろ?」と思っていはじめているのですが
それだとエラーが出やすいor極端に処理が遅くなる等あるのでしょうか?
389デフォルトの名無しさん:2011/06/21(火) 15:08:40.92
とりあえず全部privateにして必要になったらpublicにすればいい
390デフォルトの名無しさん:2011/06/21(火) 16:50:26.82
外部からアクセスする必要のあるものは public
アクセスされたら困るのは private でいいよ。
391デフォルトの名無しさん:2011/06/21(火) 17:18:14.71
外部からアクセスする必要もない
外部からアクセスされても困らない

という両方の条件に見合った場合は?
392デフォルトの名無しさん:2011/06/21(火) 17:24:48.17
privateで
393デフォルトの名無しさん:2011/06/21(火) 17:25:23.84
必要なけりゃprivate
394デフォルトの名無しさん:2011/06/21(火) 19:07:05.03
それよりスレ違いに気がつけ
395デフォルトの名無しさん:2011/06/21(火) 19:42:16.52
while(1){

printf("スレ違い\n");

}
396デフォルトの名無しさん:2011/06/22(水) 00:32:31.49
class meibo{
private:

public:
struct hito{
int rank;
int age;
void data_input();
void data_output();
};

void data_input()
{
meibo::hito A_kumi[20]
meibo::hito B_kumi[20]

A_kumi[0].rank =1;
A_kumi[0].age =13;
B_kumi[0].rank =2;
B_kumi[0].age =14;
}

void data_output()
{
出力処理
}


data_output()でA_kumi[],B_kumi[] の中身のデータを利用(参照)したいのですが
どうすればいいのでしょうか?
397デフォルトの名無しさん:2011/06/22(水) 00:38:45.20
グローバル変数にすればいいよ
398デフォルトの名無しさん:2011/06/22(水) 18:20:34.90
プリコンパイル済みヘッダを使用する場合に、たとえばpch.h, pch.cを使ってCソースコードを使ってプリコンパイルを命令して、
他のapp.cppなどC++のソースファイルにpch.hをインクルードしても、ちゃんと利用できるんでしょうか。

それとも、プリコンパイルされた情報とは別に、もう一度pch.hを解析することになるんでしょうか。
399デフォルトの名無しさん:2011/06/22(水) 19:21:28.73
>>398
makeとか使った事無いのか?
バイナリがあって、ソースの方も変更無ければ心配ない
統合環境って言っても、ビルドはその辺がボタンに割り当てられてるだけ

心配なら、色々いじって実験すれば良い
400デフォルトの名無しさん:2011/06/22(水) 19:43:59.54
398じゃないけど

ビルド&コンパイルをよく理解してないでC++を弄っている俺ガイル
ヘッダーファイル 関数の集合体を書き込むファイル
ソースファイル  沢山のヘッダーファイルから関数を効率よく呼び出すメインファイル

ソースファイルが複数?ソースファイルは1つだろw複数あるとどういう動作すんの?
コンパイルって要は変換だろ?そんなファイルが2つ3つあったらどう動作するんだ?

というレベル
401デフォルトの名無しさん:2011/06/22(水) 20:36:43.25
C#からやってきたんですが、メンバ関数を書くときクラスの外側でクラス名::メンバ名と書けますが
最近、クラスの真下に書けることを最近気づきました。クラスの真下に書いてもいいんですか?
402デフォルトの名無しさん:2011/06/22(水) 20:52:18.19
外側と真下が対比すんのか
403デフォルトの名無しさん:2011/06/22(水) 21:01:08.56
原因不明のエラーの時にリビルドすると直る時がある。
環境いじった時はリビルドが無難
404>>398:2011/06/22(水) 22:01:00.71
>>399
なるほど。わかりました。
ありがとうございます。
405デフォルトの名無しさん:2011/06/22(水) 22:04:46.48
>>401
言葉だけよりもコードを貼ったほうが、
疑問は早く解決できると思う
406デフォルトの名無しさん:2011/06/22(水) 22:09:13.62
>>400
コンパイルとリンクを昔は分けてた
今はビルドでコンパイルとリンクを一緒にやるようになったから、ごちゃ混ぜに考えちゃうんだな

コンパイルでアドレス部分だけ未完成なバイナリに変換して、リンカで不完全なバイナリを結合して完全な実行ファイルを完成させる

makeファイル作っとけば、変更があったソースだけコンパイルして、リンクする

ビルドは、その辺を自動化してるだけ
リビルドは、ソースに何も変更なくても全部コンパイルとリンクをやり直す
407401:2011/06/22(水) 22:34:33.62
>>405
こういうことなんです・・・

class testclass
{
 void testmethod();
}

void testclass::testmethod()
{
 // 処理内容 
}

これでも定義できるので、C#から来たので下のほうが直感的に分かりやすいんです
class testclass
{
 void testmethod()
 {
  //処理内容
 }
}

やはり上記のほうがいいんでしょうか?
408デフォルトの名無しさん:2011/06/22(水) 23:29:01.49
inline付ければどっちでも同じじゃね?
後は見やすさの問題。
409デフォルトの名無しさん:2011/06/23(木) 11:30:16.73
ヘッダに書くとちょっと修正するたびにリビルドになる可能性があるからお勧めはしない。
速度のためにインラインを期待するならありだけど、そうでなければヘッダには書かない。
他の言語から来たから「こう書きたい」ってのはかなり危険。
410デフォルトの名無しさん:2011/06/23(木) 18:16:28.42
>>409
わかりました。ヘッダに書かないようにします

質問です。以下の文だとデストラクタが一度しか呼ばれなくて困ってます
デストラクタがこれしか実行されません「デストラクタが呼ばれました。要素数は 40 でした。」
intarray.cpp
http://ideone.com/FMEYe
intarray.h
http://ideone.com/ElAsN
dstruct1.cpp
http://ideone.com/lXiYR

以下のページを参考にしたのですが・・・、C++ではローカル変数以外はプログラム終了時に破棄されるんですか?
いまいちどういう挙動しているのかわからないです

http://www7b.biglobe.ne.jp/robe/cpphtml/html02/cpp02006.html
411デフォルトの名無しさん:2011/06/23(木) 18:53:45.02
vc++ 6.0 で作ったのですが、プログラムを配布するには、どうするんですか?
Installerがないような
412デフォルトの名無しさん:2011/06/23(木) 19:10:36.45
ん?あるだろ。エディションは?無けりゃ作れ
413デフォルトの名無しさん:2011/06/23(木) 20:18:00.82
>>410
ソースは見てないけど変数の寿命を勉強すべし。

大雑把だけど
・グローバル変数や静的変数はプロセスの終了で寿命が尽きる。
・オート変数はスコープを抜けると寿命が尽きる。
414デフォルトの名無しさん:2011/06/23(木) 20:59:10.81
C++勉強中ならC++スレへ行った方がいい
415デフォルトの名無しさん:2011/06/23(木) 21:20:45.15
コード生成で、ランタイムライブラリ をマルチスレッド/mt
にすると
msvcr100.dllを添付しないですみますが、これは何故なの・
416デフォルトの名無しさん:2011/06/23(木) 23:02:22.89
スタティックリンクしてるから
417410:2011/06/24(金) 00:27:33.63
誘導ありがとうございます。C++スレに行って来ます
418デフォルトの名無しさん:2011/06/25(土) 20:45:23.53
>>407
cppに書く他の理由としては
クラスの関係性によって、
お互いをインクルードしたくなる時のためとか、
ヘッダはいわばクラスの顔とも言えるし、宣言のみでスッキリさせたい、
というのもある。
419デフォルトの名無しさん:2011/06/30(木) 21:27:37.28
C#2008やっててのことだけど、VC++2008でも同じだと思うので、ここのスレに書き込み。
Windowsフォームアプリケーションのプログラムで、Form1からダイアログを表示させる。
既にあるコモンダイアログボックスでなく、自作の、いわゆるカスタムダイアログボックスを作ろうと考えた。
Form2で作ってForm1から表示させようとすると、タスクバーに、Form1とは別のForm2が出てきてしまう。
コモンダイアログボックスみたいに、タスクバーに出ないようにしたい。
そこで、ユーザーコントロールとか、WPFとか、色々やってみたけど、それら自体挫折して、うまくいかない。
そうこうしているうちに、あるとき、Form1か2のプロパティを見てみたら、ShowInTaskbarというのがあった。
もしやと思いやってみると、Form1からForm2を表示させてもタスクバーにForm2が出てこなかった。
・・・という、質問のようで答えまで書き、いわゆる経験談みたいになったけど、同じ悩みの人がいるかもと思い、こうして書いてみたわけですが。
420デフォルトの名無しさん:2011/06/30(木) 21:36:46.39
>>419
残念だが、ここは.netとは関係のないスレだから、
質問にしろスレチといわれてしまうだろう。
ttp://dobon.net/vb/dotnet/form/showintaskbar.html
つまりこういうことだろうか。まあ、解決して良かったな
421デフォルトの名無しさん:2011/07/01(金) 01:49:58.97
Windows7 からできるようになった JPGなんかのタグ分類
これってどうにかして取得できないでしょうか。
.net でも Win32 でも何でもいいのでAPIが無いでしょうか
422天使 ◆uL5esZLBSE :2011/07/01(金) 19:05:48.77
> コード生成で、ランタイムライブラリ をマルチスレッド/mt
ハア??????????
今日何ゴミの日だっけ?
423デフォルトの名無しさん:2011/07/01(金) 23:06:56.38
環境vc10 express
//hoge.h
#pragma once

namespace foo
{
class hoge{};
}

こういうクラスを、
//hogehoge.h
#include "hoge.h"
class hogehoge : public hoge
{
};
こんな感じで、継承すると、error C2504: 'hoge' : 定義されていない基本クラスが宣言されています。
助けてください。
424デフォルトの名無しさん:2011/07/01(金) 23:13:15.15
public foo::hogeだろ
425デフォルトの名無しさん:2011/07/01(金) 23:43:37.46
>>424
thx
426デフォルトの名無しさん:2011/07/02(土) 01:12:08.21
俺もいまだにnamespaceが何をガードしてくれてるんだかわからん
これまったく無意味だと思うんだけど・・・
427デフォルトの名無しさん:2011/07/02(土) 01:13:31.71
CopyRectっていう関数が二つあったら困るだろ?
そういうことだ
428デフォルトの名無しさん:2011/07/02(土) 01:28:36.95
>>427
なんでクラスの中にあんのにそんなのできんだよ
429デフォルトの名無しさん:2011/07/02(土) 01:44:02.22
他のライブラリとか使ってるとクラスの名前とか関数の名前とかかぶるだろ?
今までかぶったことないなら別に気にしなくてもいいよ
430デフォルトの名無しさん:2011/07/02(土) 07:37:50.29
なんだよ
極限に設計ミスってるときの話かよ

底辺な底辺の話なのな
431デフォルトの名無しさん:2011/07/02(土) 09:48:28.99
設計関係ないでしょ
名前がかぶらないようにってだけの話で
432デフォルトの名無しさん:2011/07/02(土) 10:42:19.89
これは酷い
433天使 ◆uL5esZLBSE :2011/07/02(土) 11:01:18.18
>>425
気持ち悪い
434デフォルトの名無しさん:2011/07/02(土) 11:51:42.53
そいつはてえへんだ
435デフォルトの名無しさん:2011/07/02(土) 13:10:43.35
>>431
絶対そういうの表面に出てくるよ
名前のバッティングがおきるようなソースは絶対に仕組みや設計もやばい
分かってるのに分かってないふりはよくねーぞ
436デフォルトの名無しさん:2011/07/02(土) 13:12:25.53
こんな化石頭のキチガイが生き残ってたとは。
437デフォルトの名無しさん:2011/07/02(土) 13:19:24.30
>>436
おめー、頭悪ぃからこういうものの関連がわかってねぇんだよ
つーか、最近になって導入される言語の機能は基本馬鹿御用達の意味不明仕様ばっかだから
お前にぴったりなのかもな(笑)
438デフォルトの名無しさん:2011/07/02(土) 13:26:34.53
仮に名前がバッティングしてたとしてnamespaceあるから安心だとかいって
バッティングしたままクラス作るとか正気ではないとは思うな

本当にバッティング回避の機能かっていうと疑問があるけどな
439デフォルトの名無しさん:2011/07/02(土) 13:32:07.08
>>438
実際回避されるのになにを言ってるんだ…
440デフォルトの名無しさん:2011/07/02(土) 13:33:41.26
実際回避用に使用許可出す会社とかびっくりだよね
ま、プログラマーはシグルイだからな
キャッチャーがセンターまでボールをとりにいくようなコードでも俺はおどろかねーよ
441デフォルトの名無しさん:2011/07/02(土) 23:37:28.13
右クリックやツールバーのメニューを動的に増やしたいのだけれどできない?
プラグインみたくロードしたDLL分のON/OFFなどを動的に作りたいのですが
442デフォルトの名無しさん:2011/07/02(土) 23:45:36.51
google「メニューを動的に追加する」ってやって出てきたので
普通のメニューができっからこれと似たような感じでできんじゃねーのかな?
443デフォルトの名無しさん:2011/07/03(日) 00:00:49.71
VC++2008でフォームアプリケーションで、単純にListViewに項目を
追加したいのですが実行時エラーが帰ってきてなかなか上手くいきません。

ソースにはフォームのロードイベントに
ListView1->Items->Add("xxxxx");
しか書いていません。

エラー↓
C2039,C2065,C3350.C2039,C2065,C3350

本当に初歩的なことなのですが教えて頂けないでしょうか。
よろしくお願いします。
444デフォルトの名無しさん:2011/07/03(日) 00:15:20.84
>>443
その処理は本当にC++/CLIでやらなければならない?
とりあえずVBかC#でやってみてはどうだろう
445デフォルトの名無しさん:2011/07/03(日) 00:33:13.97
たぶんこの辺りが原因じゃね? グーグルで一番上に出てきたよ?
ttp://msdn.microsoft.com/ja-jp/library/ewcf0002(v=vs.80).aspx
446443:2011/07/03(日) 00:45:24.22
>>444
VBは勉強済みなのですが、C++は使い方が異なりヘルプも難解なので戸惑ってます・・・・。
VBから入ったので同じことをそのままC++で出来れば良いのですが

>>445
C++のヘルプは読み解くのに時間が掛かりそう、というか何の説明なのかよく分かってません。
ちょっと時間をかけて取り組みたいと思います。
447デフォルトの名無しさん:2011/07/03(日) 00:56:43.79
.netはC#でやるのが一番いいよ
448443:2011/07/03(日) 01:24:25.31
リストビューのADDメソッドを使うときもSTD名前空間を用意しないと使えないんでしょうか
ていうか入出力処理に該当ものなのですか? それならiostreamもインクルードしないといけないのですが・・・
449デフォルトの名無しさん:2011/07/03(日) 10:50:32.21
>>445 の例示では 標準出力を扱ってるけど、>>443 でも違うクラスで同じ現象が生じてるってこと。(たぶん)
ListView のヘルプを開いて、それの所属する名前空間を確認してごらん。
>>445 の例示ではどうやってエラーを回避してる?

これは C# でも VB でも同じようになると思う。念のため。
450デフォルトの名無しさん:2011/07/03(日) 10:53:02.19
と。書き忘れ。

それを理解した上で、VS が自動生成したコードの一番上の方を見てごらん。
451443:2011/07/03(日) 13:52:47.51
一度プロジェクトを新規に作り直して前述のコードを書いたら名前空間を指定しなくても通りましたw

ほんとにお騒がせしました。
ありがとうございます。
452デフォルトの名無しさん:2011/07/03(日) 14:26:33.79
今回の件はちゃんと理解しておいた方がいいよ?
453デフォルトの名無しさん:2011/07/05(火) 19:49:29.34
コンソール画面で入力待ち、何もしないで1分経過すると次の処理をしたいのですが、
さっぱりわからない・・・・
454デフォルトの名無しさん:2011/07/05(火) 19:59:47.11
PeekConsoleInputとSleepでポーリングしとけ
455デフォルトの名無しさん:2011/07/06(水) 01:58:16.06
大きなプロジェクトの作り方について質問というか悩みを聞いてください。
クラスA, B, Cの三つがあり、A→B→Cという風に参照していたとします。
それぞれが結構な大きさであるため、まずCを1つのプロジェクトで作り、動作を確認をしました。
このとき、Cを含むクラスBをどのように作るのがベストでしょうか?
今までは、B用にプロジェクトを作って、そこにCのコードをコピーして使ってました。
何か効率が悪いというか頭が悪くて不安になってきます。
調べてみるとソリューションに複数プロジェクトを追加して.dllを生成して云々〜とあるのですがそのほうが良いのでしょうか?
みなさんの方法を教えてくださいm(__)m
456デフォルトの名無しさん:2011/07/06(水) 02:09:39.34
普通Aを作ってBを作ってCを作るんじゃないのか
457デフォルトの名無しさん:2011/07/06(水) 02:19:22.67
えっ・・・そうなんですか。
いつも動作が確認しやすいので下から作ってましたorz
458デフォルトの名無しさん:2011/07/06(水) 12:57:59.27
下から作ることに問題はないと思うが。
下から作ると動作確認がしやすいのなら下から作ればいい。

C用のプロジェクトを作って…
B用のプロジェクトを作って…
は、最終的なプロジェクトの中で作ればいいんじゃないの?
dllにするかどうかは別の問題だし。

テストドライバが必ず必要になり残しておく必要があるならlibやdllに
することも考えた方がいいかもね。
dllにするメリットは無いかもしれないけど。
459デフォルトの名無しさん:2011/07/06(水) 21:19:05.32
stdafx.h
の名前の意味ってなんでしょうか?
機能ではなく、なぜ名前が"stdafx"なのか、何かの略称の気がしますが、よろしくお願いします。
460デフォルトの名無しさん:2011/07/06(水) 21:24:44.36
461デフォルトの名無しさん:2011/07/06(水) 22:04:04.73
Application Framework eXtensions
でしたか、ありがとうございます
462デフォルトの名無しさん:2011/07/07(木) 00:06:02.15
main関数にメソッドを作るよりかクラスファイルに新しく書いたメソッドの方が
実行速度が速いようなのですがどうしてでしょうか?
ちなみにソースコードはクラスファイルの方が3〜4倍あります。


463デフォルトの名無しさん:2011/07/07(木) 00:56:02.90
意味不明。
464デフォルトの名無しさん:2011/07/07(木) 17:31:56.52
inlineの話?
465デフォルトの名無しさん:2011/07/07(木) 20:49:29.75
C++の使い方の勉強中なのですがメンバ関数について分からないので教えてください。
ただ単純にクラスの関数SUMの戻り値をプロンプトに打ち出すだけのものを考えているのですが、
インスタンス化の所が間違っているのか、インテリセンスが呼び出されずnumクラスを使えません。
どのように書くのが良いのでしょうか。

using namespace std;
#include <iostream>

public class num()
{
int sum(s);
};

int main(){

int s;
s = 0;

num Math;

s = Math.sum(s);
std::cout << s << std::endl ;
getchar();

};

int sum(s){
x = 10000;
return x;
};
466デフォルトの名無しさん:2011/07/07(木) 20:58:40.41
インテリセンスは入力を補助するだけで
それ以外はまったくあてにならない。
467デフォルトの名無しさん:2011/07/07(木) 21:06:27.57
>>465

public class num() --> class num

int sum(s); --> public int sum(int);

int sum(s){ --> int num::sum(int) {
468デフォルトの名無しさん:2011/07/07(木) 21:17:26.19
返信ありがとうございます。
>>466
超初心者なので補助をあてにした(ry

>>467
1,2行目はご指摘ごもっともだとおもいましたw
3行目はどういう意味でしょうか?
普通の関数宣言でやるのとは違うみたいですが・・・
469デフォルトの名無しさん:2011/07/07(木) 21:27:43.89
>>465
sumは合計って意味だから、適当に作った関数にはhoge,fuga,foo,barなどを使え

エスパー回答と言うか、別の人間だが、2行目はsum(int n)、3行目はnum::sum(int n)に変えなさい

そしてsumをhoge,fuga,foo,barのどれかに変えなさい
470デフォルトの名無しさん:2011/07/07(木) 21:31:38.61
>>469
あ、2行目3行目は>>467のレスを読みかえろって意味ね
471デフォルトの名無しさん:2011/07/07(木) 21:35:24.68
>>469
sum(int)は、変数が省略されているということですか

ごめんなさい次からはメタ変数を使うようにしますね。
472デフォルトの名無しさん:2011/07/07(木) 21:38:47.44
>>471
別に宣言部の引数は変数名省略しても良いんだけどね
実装部(num::sum(int n){...)は変数名省略したらエラーになる
473デフォルトの名無しさん:2011/07/07(木) 21:44:36.81
と言うか、引数使って無いのね。。。
何の勉強してるのか分からんコードだな
474デフォルトの名無しさん:2011/07/07(木) 22:02:05.91
>>465のソースコードを修正したら
やっとエラーが残り1つになったのですが、
こんどは 指定された名前空間は存在しません となります。

ネットで調べた通りのはずなのですが、これはどう対処すべきなのでしょうか
475デフォルトの名無しさん:2011/07/07(木) 22:10:29.94
>>474
読み直したらMathってなんだとか、色々ツッコミどころが。。。
Mathのsum関数使いたいのか、自作のsum関数(実体は引数使ってない)使いたいのか分からん

そりゃ、コンパイラも混乱するだろうよ
476デフォルトの名無しさん:2011/07/07(木) 22:11:15.29
・修正が間違ってる
・理解が間違ってる
・ネットが間違ってる
お好きなのをどうぞ
477デフォルトの名無しさん:2011/07/07(木) 22:16:30.74
初心者が樹海送りになるまで悪口を言うスレでも立てようか?
478デフォルトの名無しさん:2011/07/07(木) 22:20:44.89
マ板にでも立てろ
479デフォルトの名無しさん:2011/07/07(木) 22:31:43.63
>>476
有る意味自分の修正の指示も間違ってたかもwww
メンバ関数以前に普通の関数&ライブラリの関数も理解して無さそうだもんよ。。。

cからやり直せとは言わんが、入門サイト読み直したら?
つーか、そこまでグダグダな入門サイトなのか?
URL晒せ
見てみて、サイトがバカか、お前がバカか見てやる
480デフォルトの名無しさん:2011/07/07(木) 22:34:01.88
本当に初心者が来ると荒れるスレでござる
481デフォルトの名無しさん:2011/07/07(木) 22:42:34.88
>>480
初心者にしても酷すぎるから
482デフォルトの名無しさん:2011/07/07(木) 22:55:21.75
>>465

#include <iostream>
using namespace std;

class beginners_math
{
public:
int my_first_sum(int, int);
};

int main() {

beginners_math bmath;

int v1 = 10;
int v2 = 20;
int result;

result = bmath.my_first_sum(v1, v2);
cout << result << endl;

return 0;
}

int beginners_math::my_first_sum(int value_1, int value_2) {
return value_1 + value_2;
}
483デフォルトの名無しさん:2011/07/08(金) 00:25:08.00
確かに初心者向けのサイトだと int num::sum() とかの記述は全く無いね
まあデバッグは通るんだろうけど・・・
484デフォルトの名無しさん:2011/07/08(金) 00:28:26.38
>>483
入門書以下なのか。。。
485デフォルトの名無しさん:2011/07/08(金) 11:39:14.92
cでoop的にやってた流れ知らないとc++は何だかスッキリできないのかもね。
486デフォルトの名無しさん:2011/07/08(金) 11:43:06.60
>cでoop的にやってた流れ
これってどういう流れ?
487デフォルトの名無しさん:2011/07/11(月) 13:58:16.38
VC2010EEで、ソリューションエクスプローラの背景色とフォントを
変えたいのですが、どこに設定があるのでしょうか?
テキストエディタの設定は変更できています
488デフォルトの名無しさん:2011/07/11(月) 14:11:37.48
いきなりですが、Visual C++2008でボタンをクリックしたら指定した動画を再生させる
やり方を教えてください。お願いします。
489デフォルトの名無しさん:2011/07/11(月) 14:22:24.89
>>488
C++/CLIなら.netで調べたほうがいい
Windows Media Player コンポーネントでもどうぞ

だがそれは本当にC++/CLIでやらなければならない?
VBやC#でいいんじゃないか?
490デフォルトの名無しさん:2011/07/11(月) 15:24:45.05
むしろAIRがいいんじゃないか?
491デフォルトの名無しさん:2011/07/11(月) 17:28:08.70
エスパー?
492デフォルトの名無しさん:2011/07/11(月) 20:51:57.10
std::cerrの出力先をVCのデバッグ出力画面に設定する方法はありますか?
493デフォルトの名無しさん:2011/07/11(月) 20:59:12.81
クラスにstaticなstd::mapを作ったのですが、初期化が上手くできません
どうすればよいのでしょうか
mapじゃなくても簡単に探索できればなんでもいいのですが、
他に何か良い方法があれば教えてください
494デフォルトの名無しさん:2011/07/11(月) 21:09:11.28
staticなinitメンバ関数でも作ればいいよ
495デフォルトの名無しさん:2011/07/11(月) 21:12:14.00
>>493
<boost/assign.hpp>
boost::map_list_of
便利よ
496デフォルトの名無しさん:2011/07/13(水) 17:42:08.78
すみません、質問させて下さい。
cppファイルにグローバル変数を宣言して使用した場合、
変数に対するメモリ確保はクラスインスタンスの寿命と一致するのでしょうか?
このように確保されたメモリはプログラム内で領域破棄は出来ないのでしょうか?
また、クラス内のstaticメンバ変数にクラス名::static変数といった形で
インスタンスを作らずにアクセスした場合どのようにメモリ確保されているのでしょうか?
(あまり関係ないかもしれませんがVisualStudio2005+MFC環境下です.)
497デフォルトの名無しさん:2011/07/13(水) 18:11:20.23
グローバル変数とクラスインスタンスって何か関係有るか?
どうやってなんて気にしなくていいよホント
498デフォルトの名無しさん:2011/07/13(水) 19:58:52.62
>>497
有難うございます。
cppで宣言するグローバル変数って単なるファイルスコープの変数で
インスタンス毎に違う領域が確保されるのかと勘違いしてました;
staticメンバと似た感じの記憶域になるんですね・・
なんかヘッダにメンバ変数がどんどん増えていくのが見づらくて
ついついcppにグローバル宣言してました・・注意します・・
499デフォルトの名無しさん:2011/07/13(水) 20:31:08.22
Cの古いキャストを撲滅したいのですが、VC++でこのキャストを使ったらエラーか警告になる設定ってありますか?
500デフォルトの名無しさん:2011/07/14(木) 08:15:33.65
あればコンパイラのマニュアルに書いてあるはず
501デフォルトの名無しさん:2011/07/14(木) 15:21:34.51
VC++2010ExpessでSJISのソースファイルから「C言語」でコンソール・プログラムを作ってますが、
コンパイル通って実行すると、

Debug assertion failed
_CrtlsValidHeapPointer(pUserData)
dbgreap.c Line:1322

とポップが出て終了してしまいます。
_tprintf()で全角カタカナを表示する直前で止まってしまうのですが、エラーのヒントをお願いします。
502デフォルトの名無しさん:2011/07/14(木) 15:29:02.98
_tprintf(_T("%s\n")
     _T("Usage:\n")
     _T(" %s <subcmd> <-h|...>\n")
     _T("\n")
     _T("\t--subcmd:データ表示--\n")
     _T("\tcal : 予定表・ニュースを表示.\n")
     .......);

の「データ表示」直前でエラーとなります。
503デフォルトの名無しさん:2011/07/14(木) 15:34:37.97
setlocaleしろ
504デフォルトの名無しさん:2011/07/14(木) 16:05:26.95
解決しました。ありがとうございます。
505デフォルトの名無しさん:2011/07/14(木) 17:39:00.48
…ところが、このアプリに引数1つ'abc'などの英文字を付けて実行して、argv[1]を表示してみると、

[?q???????????????????????????????????????????]

などの意味不明の文字が表示されるのはなぜでしょうか?
お願いします。
506デフォルトの名無しさん:2011/07/14(木) 18:41:11.23
int main(int argc, char **argv)
に対して
_tprintf(_T("%s\n"), argv[1]);
ってやってるだろ?
%sは_tprintfがどちらに展開されるかで要求するデータ型違うからな(可変長引数なので型チェックはされない)
http://msdn.microsoft.com/ja-jp/library/hf4y5e3w
どっちに展開されようとchar*を表示するなら%hs
http://msdn.microsoft.com/ja-jp/library/tcxf1dw6
そもそも引数が変われと言うなら
int _tmain(int argc, _TCHAR **argv)
を使え
507デフォルトの名無しさん:2011/07/14(木) 19:02:49.64
_tprintf使ってるのに_tmainを使わない馬鹿はいないだろ
508デフォルトの名無しさん:2011/07/14(木) 19:26:50.49
なるほど、まさに、ごもっともです。
509デフォルトの名無しさん:2011/07/14(木) 19:32:36.80
(´・ω・`)
int _tmain(int argc,_TCHAR *argv[])
としましたが、
「問題が発生したため、終了します。ご不便をおかけして申し訳ありません。」
と言われました。
510デフォルトの名無しさん:2011/07/14(木) 19:41:19.58
一度T系使わないで決めうちで書いてみては?
511デフォルトの名無しさん:2011/07/15(金) 02:16:57.99
どこでウィルス認定されるかよくわからんよね
512デフォルトの名無しさん:2011/07/15(金) 07:38:09.42
チェックしてないものをprintfで使ったら
引数にわざと変なもの突っ込んでハッキングされるだろ
513デフォルトの名無しさん:2011/07/16(土) 08:47:22.43
コンソール・プログラムをデバッグするとき、コマンドラインはどうやって渡すのでしょうか?
514デフォルトの名無しさん:2011/07/16(土) 08:55:01.81
[プロジェクト]→[***のプロパティ]→[構成プロパティ]→[デバッグ]→[コマンド引数]
515デフォルトの名無しさん:2011/07/16(土) 09:03:41.01
おお、ありがたや (・人・)
ってか、小さ! 開けたのに見落としたわw
516デフォルトの名無しさん:2011/07/16(土) 20:52:12.66
__FILE__ マクロを使うと意味不明な文字列が表示されるのはなぜでしょうか???
*.c でpjc作ってます。
コンパイルは通るのですが、右クリックで「定義へ移動」すると、
「シンボルの定義は見つかりませんでした」
となりますが???
517デフォルトの名無しさん:2011/07/16(土) 22:00:53.32
Unicode文字セット + printfで嵌まってるのかも?
printfの第2引数以降は何でも受け取るからコンパイルエラーは出ないよ

#include <tchar.h>
#include <stdio.h>
#include <locale.h>
int _tmain() {
setlocale(LC_ALL,"JPN");
_tprintf( _T("%s\n"), __FILE__); // NG
_tprintf( _T("%s\n"), _T(__FILE__)); // OK
return 0;
}
518デフォルトの名無しさん:2011/07/17(日) 00:40:16.23
Windows7/64bit/Visual C++ 2008 Express Editionを使用しています。
Adobe After EffectsのSDK_Noiseをビルドしようとすると↓のようなエラーが出るのですが・・・
どなたか何が原因か分かる方いたら教えてください。。。

1>------ ビルド開始: プロジェクト: SDK_Noise, 構成: Debug Win32 ------
1>Compiling the PiPL
1>Microsoft (R) C/C++ Optimizing Compiler Version 16.00.30319.01 for x64
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>SDK_NoisePiPL.r
1>c:\Users\test\Desktop\Adobe After Effects CS4 SDK\Examples\Effect\SDK_Noise\Win\..\..\..\Headers\AEConfig.h(71) : fatal error C1189: #error : "unrecognized AE processor"
1>Microsoft (R) C/C++ Optimizing Compiler Version 16.00.30319.01 for x64
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>SDK_NoisePiPL.rrc
1>ブラウザ情報ファイルを作成しています...
1>プロジェクト : error PRJ0003 : 'bscmake.exe' の起動中にエラーが発生しました
519デフォルトの名無しさん:2011/07/17(日) 00:41:35.52
ブラウザ情報の生成をやめる
520デフォルトの名無しさん:2011/07/17(日) 00:48:36.92
>>519
それってどうすればいいんですかね?
521デフォルトの名無しさん:2011/07/17(日) 00:50:02.99
プロジェクトのプロパティのどっかにあるよ
522デフォルトの名無しさん:2011/07/17(日) 00:59:29.16
>>521
ありがとうございます。
プロパティ→構成プロパティ→C++→ブラウザ情報を生成する→なし
に設定しなおしてみたのですが
全く同じエラーが出るみたいです。
申し訳ありませんが誰かわかりそうでしたらよろしくお願いします

1>------ ビルド開始: プロジェクト: SDK_Noise, 構成: Debug Win32 ------
1>Compiling the PiPL
1>Microsoft (R) C/C++ Optimizing Compiler Version 16.00.30319.01 for x64
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>SDK_NoisePiPL.r
1>c:\Users\test\Desktop\Adobe After Effects CS4 SDK\Examples\Effect\SDK_Noise\Win\..\..\..\Headers\AEConfig.h(71) : fatal error C1189: #error : "unrecognized AE processor"
1>Microsoft (R) C/C++ Optimizing Compiler Version 16.00.30319.01 for x64
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>SDK_NoisePiPL.rrc
1>ブラウザ情報ファイルを作成しています...
1>プロジェクト : error PRJ0003 : 'bscmake.exe' の起動中にエラーが発生しました。
523デフォルトの名無しさん:2011/07/17(日) 01:01:13.80
そもそもExpress Editionでは64bitマシンの開発を行えないとか
噂でちょろっと聞いたことがあるんですが本当ですかね?
524デフォルトの名無しさん:2011/07/17(日) 04:19:13.33
「visual c++ 2010 express 64bit」でググルとトップに良いサイトが見つかるよ。
実際にやった事あるけど可能でした。
525デフォルトの名無しさん:2011/07/17(日) 09:39:25.05
>>524
一応できることは出来るんですね・・・
しかし何でこんなに面倒くさいのか・・・もっと簡単にやる方法はないんですか。。ないんでしょうね。。
526デフォルトの名無しさん:2011/07/17(日) 09:53:23.56
SDK入れてちょっと弄るだけじゃん
すごい簡単な方だと思うけど
527デフォルトの名無しさん:2011/07/17(日) 10:16:35.71
教えてもらった通りにやったらこの前のエラーはなくなったけど
また違うエラーが出てきました。。

1> Compiling the PiPL
1> Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
1> Copyright (C) Microsoft Corporation. All rights reserved.
1>
1> SDK_NoisePiPL.r
1> Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
1> Copyright (C) Microsoft Corporation. All rights reserved.
1>
1> SDK_NoisePiPL.rrc
1> AEGP_SuiteHandler.cpp
1> SDK_Noise.cpp
1>c:\program files\microsoft platform sdk\include\windows.h(157): fatal error C1083: include ファイルを開けません。'excpt.h': No such file or directory
528デフォルトの名無しさん:2011/07/17(日) 10:55:34.18
>>527
なおすのは簡単だけど、またリンクが見つからないとか
毎回効いてくることになると思うから、インストールから
やり直してみては?
SDKをインストールして、それからVC++いれてみ
529デフォルトの名無しさん:2011/07/17(日) 13:31:27.86
APIを使って画面作成や画像の読み込みなどをして
画像を表示するまではできたんですが、
どうやったらキー入力を読み取って画像を移動することができるかわかりません。

キー入力を受け取らせる方法にタイマイベントを使って
WndProcのWM_TIMERを呼び出せば・・・
という方法があったのですけど、処理の負荷やタイマに依存する事を
考えるといい方法とは思えず、どうすれば良いか悩んでいます。

キー操作を受け取って、画像(BMP)を移動するという処理を
作るのに何か良い方法は無いでしょうか?
530デフォルトの名無しさん:2011/07/17(日) 13:38:19.85
WM_KEYDOWNメッセージ来るでしょ
531デフォルトの名無しさん:2011/07/17(日) 13:41:47.09
キー押したらイベント発生すると思ったけど
なぜそこでタイマーイベント使おうとしてるのかまったく理解不能
532デフォルトの名無しさん:2011/07/17(日) 13:42:44.60
>>529
GetAsyncKeyState()

要するにゲームみたいなことやりたいってことか
winapiだけでゲームループは出来るが、
SDLなり、
俺は嫌いだけどDXLibでもつかったほうが百倍楽
533デフォルトの名無しさん:2011/07/17(日) 14:01:33.92
存在しないファイルを開こうとしたときのエラー処理で、

functionA(const TCHAR *pfname)
{

     err = _tfopen_s(&f_opn,p_opn,mode);
     if(err&&msg){
          _tperror(NULL);        (a)
          _tperror(pfname);     (b)

          …
     }
     …
}
で、
(a)では「No such file or directory」と表示され成功するのに、
(b)では「Not enough space」という別のエラーが発生してしまいます。

簡単なプロジェクトで(b)を再現するとうまくゆくのですが、原因のヒントだけでも
お願いします。
534デフォルトの名無しさん:2011/07/17(日) 14:56:45.60
>>533
ttp://msdn.microsoft.com/ja-jp/library/9t0e6085.aspx

>正確な結果を得るには、ライブラリ ルーチンがエラーを起こした直後に perror を呼び出します。
>直後に呼び出しておかないと、後続の呼び出しによって errno の値が上書きされることがあるためです。
535デフォルトの名無しさん:2011/07/17(日) 15:03:51.79
分かりにくくてすいませんが、(a)と(b) はそれぞれ単独で実行したもので、

(b)の後に、もう一度_tperror(NULL)を実行すると、
「Not enough space」という別のエラーが発生
しているという意味です。
536デフォルトの名無しさん:2011/07/17(日) 15:37:17.78
デバッグ・ビルドをステップ実行して最後まで終了するのに、
同じ条件でVC++外から、直接実行すると「申し訳ありません」エラーになるというのは、よくあることでしょうか?
537デフォルトの名無しさん:2011/07/17(日) 15:39:32.02
日本語でおk
538デフォルトの名無しさん:2011/07/17(日) 15:49:42.37
>>536
ままあるな。
DLLとかの検索順や位置がデバッグ時とかわるしな
539デフォルトの名無しさん:2011/07/17(日) 15:56:10.98
>>535
再現するソース貼ってもらわないと多分わからん
540デフォルトの名無しさん:2011/07/17(日) 17:50:16.17
>>529
タイマー使うなw
>>530の言うように、キーイベント使え
その中で、表示した画像のx、y座標を押されたキーに合わせて変えりゃいい
541デフォルトの名無しさん:2011/07/17(日) 18:03:24.30
>>528
ありがとうございます、SDKを先に入れたら上のエラー直るんですかね
やってみます。
542デフォルトの名無しさん:2011/07/17(日) 18:16:46.99
BorlandC++ で作られれたコンソールC言語ソースを VC++ に移植しようとして苦戦しているものです。
基本的な確認をお願いしたいのですが、

const wchar_t *pfname
wprintf(L"p_opn: [%s]\n",pfname);

で「初回の例外が発生しました」と表示されますが、wprintf() の使い方は上記で
正しいでしょうか?
543デフォルトの名無しさん:2011/07/17(日) 18:18:37.99
const wchar_t *pfname = L"test";ってやれば落ちないよ
544デフォルトの名無しさん:2011/07/17(日) 18:44:46.12
>>542
むしろbccくれ
Webから消えると思ってなくて、雑誌付録のcd捨てちまったんだ
545デフォルトの名無しさん:2011/07/17(日) 18:52:01.60
>>528
SDK→VC++の順で入れなおしてみたけど治らなかったです。。
ちなみに>>527と同じエラー文が出ました。。
546デフォルトの名無しさん:2011/07/17(日) 18:56:54.29
>>545
[プロジェクト]→[***のプロパティ]→[構成プロパティ]→[全般]→[プラットフォームツールセット] を
SDKに変更した?
547デフォルトの名無しさん:2011/07/17(日) 18:56:55.52
プラットフォームSDKって古くないか
548デフォルトの名無しさん:2011/07/17(日) 19:00:19.21
コンパイラの立場になって、どこの定義みて動作決めてるか考えてみるといい。
549デフォルトの名無しさん:2011/07/17(日) 19:19:16.97
>>546
変更した結果が>>527です。
550デフォルトの名無しさん:2011/07/17(日) 19:22:11.70
解決するか分かりませんが一応VisualStudioのご意見ご要望のとこに質問おくってみました。
551デフォルトの名無しさん:2011/07/18(月) 12:03:36.96
>>550
例えば、SDKのincludeの場所は
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include
とか
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A
とかになってない?
552デフォルトの名無しさん:2011/07/18(月) 12:17:09.50
>>551
includeの場所というのは
プロジェクト→プロパティ→VC++ディレクトリのインクルードディレクトリということですか?

そうだとしたら
C:\Program Files\Microsoft Platform SDK\Include
に指定されているようです。間違ってたらすみません。。
553デフォルトの名無しさん:2011/07/18(月) 12:41:13.80
もともとSDK入れなおせって言った理由は
Microsoft Platform SDK
になってたからなんだよね。
いつのSDK使ってんの?
554デフォルトの名無しさん:2011/07/18(月) 20:57:45.53
>>553
Microsoft Windows SDK v7.1を使っています。
Visual C++のバージョンは、先ほど入れなおして2010になりました。
555デフォルトの名無しさん:2011/07/18(月) 21:30:02.22
fgetc, fgetwcなどCランタイム系の関数が使えるのは、XPまでですか?まさか?
556デフォルトの名無しさん:2011/07/19(火) 10:38:47.54
557デフォルトの名無しさん:2011/07/20(水) 02:28:53.14
>>556
>>546>>549>>527

>>553
正しい場合はどのようなリンクになるのですか?
558デフォルトの名無しさん:2011/07/20(水) 10:18:09.50
C:\Program Files\Microsoft SDKs\Windows\v7.1\Include
じゃないの?
559デフォルトの名無しさん:2011/07/20(水) 10:23:28.20
で、今はどういうエラーがでてるの?
excpt.hは
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include
にあるだろ?
560デフォルトの名無しさん:2011/07/20(水) 13:25:20.25
秘密の呪文を知らないと動かないものでもないし、
セキュリティでプロテクトされてるわけでもないし、
コンパイラの動作考えたら常識でわかりそうなもんだと思うけど
561デフォルトの名無しさん:2011/07/21(木) 02:15:17.74
RECTっていう構造体変数みたいなのをメンバ全体から参照できるようにして、
中身をある関数から呼び出すにはどういう風に記述したら良いのですか?
562デフォルトの名無しさん:2011/07/21(木) 09:05:46.46
C++からやり直してください。
563デフォルトの名無しさん:2011/07/21(木) 12:01:22.39
初心者に教えるスレなのにそんな事誰が教えるかみたいな発言する奴は死ねばいいんだよ
564デフォルトの名無しさん:2011/07/21(木) 12:27:58.97
ここはC++初心者スレではないよ
565デフォルトの名無しさん:2011/07/21(木) 14:45:35.99
*.cファイルをCでコンパイルしたいのに、

#ifdef __cplusplus
    #define ...... //ここが半透明色にならずに有効になっています。
#endif

オプションはどうすればよいのですか? ちなみに「コマンドライン」は、

/ZI /nologo /W3 /WX- /Od /Oy- /D "WIN32" /D "_DEBUG"
/D "_UNICODE" /D "UNICODE" /Gm /EHsc /RTC1 /GS /fp:precise
/Zc:wchar_t /Zc:forScope /Fp"Debug\qtvc.pch" /Fa"Debug\" /Fo"Debug\"
/Fd"Debug\vc100.pdb" /Gd /analyze- /errorReport:queue

です。
566デフォルトの名無しさん:2011/07/21(木) 14:52:46.82
>>565
ソリューソンエクスプローラーの
*.cファイルのプロパティ -> C/C++ ->詳細設定
コンパイル言語の選択でCコードとしてコンパイルを選ぶ
567デフォルトの名無しさん:2011/07/21(木) 15:16:29.52
thx
568デフォルトの名無しさん:2011/07/21(木) 20:59:12.29
システムdll(?)しか使わない、300kくらいのスダンドアローンのツールで、
calloc() を実行すると、「Not enough space」でエラーになるんですが、
なにか原因は考えられませんか?
569デフォルトの名無しさん:2011/07/22(金) 05:53:42.23
570デフォルトの名無しさん:2011/07/22(金) 05:54:35.24
ウイルス
571デフォルトの名無しさん:2011/07/22(金) 15:27:19.25
568です。
メニューの[プロジェクト]-[プロパティ]-[構成プロパティ]-[c/c++]の[コード生成]で、

***エラーとなる「Not enough space」***
マルチスレッドデバッグ(/MTd)
マルチスレッドデバッグDLL(/MDd)

***エラーとならない***
マルチスレッド(/MT)
マルチスレッドDLL(/MD)

の結果となりました。このツールでは自作のDLLは使ってませんが、一部、DLL化できる
ようにプリプロセスしてますが、そこで書き間違いがあるのでしょうか?可能性として???
572デフォルトの名無しさん:2011/07/22(金) 16:04:56.10
何が言いたいのかよく分からんけどcallocの呼び出しソースを晒すとか
どのくらいのメモリを確保しようとしてるのかくらい書いたらどうですか。
573デフォルトの名無しさん:2011/07/22(金) 16:20:13.31
すいません。呼び出しですが、双方向リストの最初の1個目の
構造体作成でエラーになります。

typedef struct _SEG {
   struct _SEG *nxt;
   struct _SEG *prv;
   TCHAR *data;
   size_t count;
} SEG;

if((seg=(SEG *)calloc(1,sizeof(SEG)))==NULL){
   _tperror(_T("calloc()"));
   return NULL;
}
574デフォルトの名無しさん:2011/07/22(金) 16:24:12.43
それでもって、>>571の「コード生成」オプションで、
「デバッグ」と入っているのを選ぶとエラーになるんです。
575デフォルトの名無しさん:2011/07/22(金) 16:29:38.19
ついでにコマンドラインです。

/ZI /nologo /W3 /WX- /Od /Oy- /D "WIN32" /D "_DEBUG"
/D "MAKE_QT" /D "_UNICODE" /D "UNICODE" /Gm /EHsc /RTC1
/MD /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fp"Debug\qtvc.pch"
/Fa"Debug\" /Fo"Debug\" /Fd"Debug\vc100.pdb" /Gd /analyze-
/errorReport:queue
576デフォルトの名無しさん:2011/07/22(金) 16:54:16.18
リリースのプラットフォームツールセットはSDKだけど
デバッグの方はSDK未使用(v100)になってるんじゃね? (vc100.pdbが気になる)
577デフォルトの名無しさん:2011/07/22(金) 17:03:51.88
アンダースコアから始まる名前は予約されてることが多いので
付けないほうが良いよ
578デフォルトの名無しさん:2011/07/22(金) 17:11:50.83
アンダースコア + 小文字なら大丈夫よ
579デフォルトの名無しさん:2011/07/22(金) 17:22:18.81
原因不明のエラーの時は
余分なの削ってエラーが再現する最小限のソースにする
580デフォルトの名無しさん:2011/07/22(金) 17:31:36.43
>>576 おおっ。

メニューの[プロジェクト]-[プロパティ]-[構成プロパティ]-[全般]の[プラットフォームツールセット]が、
[v100]
になってます。ドロップリストには、ほかに [v90] というのがありすが、、

「C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(293,5): error MSB8010:
指定したプラットフォーム ツールセット (v90) には Visual Studio 2008 が必要です。
コンピューターに Visual Studio 2008 がインストールされていることを確認してください。」
と言われちゃいました。

自分は VisualC++Express2010 を使ってますが、どうなんでしょう?
581デフォルトの名無しさん:2011/07/22(金) 17:52:13.81
コンソールアプリで試してみたけど別に問題は無かったよ。
579さんが言ってるように最小限のソースで確認すべきでは?
582デフォルトの名無しさん:2011/07/22(金) 18:24:39.28
ありがとうございました。

メニューの[プロジェクト]-[プロパティ]-[構成プロパティ]-[c/c++]の[コード生成]で、

「デバッグ」 が付いた項目だけでエラーになるのは、境界チェックコードが含まれてるからでしょうか?
質問の calloc() は呼び出した関数の先頭部分で、ほかに示すべきものがありません。
calloc 呼び出し前に壊しているからエラーが出てるんでしょうか?
583デフォルトの名無しさん:2011/07/22(金) 19:44:10.57
だから最小限のソースで確認してみなよ。
該当部分だけを実行するEXEを作れば確認出来るでしょ。

他のライブラリとか使っていて悪さをしてるかもしれないし…
今の状況では誰も分からんよ。
584デフォルトの名無しさん:2011/07/23(土) 11:16:54.88
VS2008のC++でpropertyという名前の変数を書くと
青く表示されてしまうのですが、なんかの予約語なのでしょうか?
コンパイルは問題無く通り、ちゃんと変数として使えるのですが。
585デフォルトの名無しさん:2011/07/23(土) 13:31:55.91
Visual C++ 2008 Express Editionや2010 Express Editonは、
インストール後30日を過ぎても登録なしでも、コマンドプロンプト
のコンパイルは使えますか。
586デフォルトの名無しさん:2011/07/24(日) 14:28:35.18
>>585
つかえるよ。
587デフォルトの名無しさん:2011/07/26(火) 06:09:31.63
VC++2005の設定で、「浮動小数点モデル」をデフォルトの「Precise」から「Fast」にしたら
かなり高速に処理するようになりました。

これはなぜなんでしょうか??
x87FPUではなくSIMDのほうのFPUを使うからとかでしょうか??

でも「拡張命令セットを有効にする」をいずれにしても速度は変わらないので、違うのでしょうか・・・
588デフォルトの名無しさん:2011/07/26(火) 10:07:49.49
基本的な質問ですが、

SOMESTRUCT **buff[samesize];

_tprintf(_T("[%d][alm=%10d][%d]\n"),buff[i], buff[i]->date, int);

という書式を出力しようとすると、int の値が常に 0 ゼロになってしまいます???
int の部分だけを切り取って、

_tprintf(_T("[%d]\n"),j);

のよに2列の _tprintf() で処理すると int の値が正常に
表示されるんですが、いったいどういうことなのでしょうか??

_tprintf(_T("<%d><%d><%d><%d><%d>\n"),10,20,30,40,50);

などは正常に表示さるます。
589デフォルトの名無しさん:2011/07/26(火) 10:18:17.70
>>588
intなのかjなのか
変数の型と変数名をごっちゃにしてんのか?
590デフォルトの名無しさん:2011/07/26(火) 10:23:52.79
32bit環境?64bit?
591デフォルトの名無しさん:2011/07/26(火) 10:25:39.64
>>588
そもそもなにを表示させているつもり?
592デフォルトの名無しさん:2011/07/26(火) 10:29:02.14
ごっちゃですいません。int j; のことで、実行時では j としてます。
32ビット XPpro の VC++2010Express です。buff[]->date は time_t 型です。
593デフォルトの名無しさん:2011/07/26(火) 10:31:11.81
デバッグのために挿入したコードで、値を確認するための文です。
594デフォルトの名無しさん:2011/07/26(火) 10:36:08.18
>>592
>実行時では j としてます。
jになってないから言ってるんだが

_tprintf(_T("[%d][alm=%10d][%d]\n"),buff[i], buff[i]->date, int);
                                  ^^^
595デフォルトの名無しさん:2011/07/26(火) 10:37:53.98
VC++をインストールしたころ、プロジェクトを削除しようとしてたらフリーズしたので、
再起動させたら、「VC++(?)が壊れたかもしれません」のようなウィンドウが表示された
記憶があるのですが、それが原因でしょうか? 再インストールが必要なのでしょうか。

どうもVC++はこのような訳のわからないエラーが多いような気がするのですが、
前部のバグでこんなエラーがよくでますか、VC++では?
596デフォルトの名無しさん:2011/07/26(火) 10:58:27.96
>>595
誰だよお前
597デフォルトの名無しさん:2011/07/26(火) 22:07:34.52
>>587
演算精度が要求以上に高いことが良いとは限らないということを念頭に
http://homepage1.nifty.com/herumi/prog/prog90.html
http://www.shudo.net/publications/swopp0107/shudo-swopp200107-strictfp.pdf
598デフォルトの名無しさん:2011/07/26(火) 22:32:09.95
OnCloseが落ちてこないんですけど何が考えられるでしょうか?
599587:2011/07/26(火) 22:45:47.66
>>597
まさかメモリにいちいち書き出していたとは・・・
ありがとうございました!
600デフォルトの名無しさん:2011/07/27(水) 03:31:01.57
親戚の引越しを手伝った際にVisual Studio 6.0を貰ったので
C++の再勉強とWindows XPプログラミングにチャレンジしようと思っています。
6.0はANSI C++に準拠してないようですが、
具体的にどのような違いと留意点があるのかお教え頂けないでしょうか?

もしくは本やWebサイトで、
これらの違いを吸収できるような情報源をお教えください。

よろしくお願いします。
601デフォルトの名無しさん:2011/07/27(水) 03:37:05.24
せめてvs2008使え
タダだから
602デフォルトの名無しさん:2011/07/27(水) 04:35:29.86
>>601
お答え頂きありがとうございます。

実は・・・VS6.0貰った際に、
VC6.0に関する高額な良本もいっぱい貰ってきたのです。
ですのでANSI C++との差異を吸収できれば幸いと思っています。

高校の時にANSI C++(多分98)は齧っているので、
差異の情報源さえあれば何とかなると感じています。
現在、以下の差異はWikipediaで確認しました。

 ・テンプレート
 ・例外処理
 ・名前空間
 ・新形キャスト
 ・ブール型

その他、差異や留意点がありましたら宜しくお願いします。
603sage:2011/07/27(水) 06:31:35.65
プロパティで
追加の依存ファイル dinput8.lib;dxguid.lib;%(AdditionalDependencies)
追加のライブラリディレクトリ $(DXSDK_DIR)\Lib\x86;%(AdditionalLibraryDirectories)

と設定してコンパイルするんですが
1>LINK : fatal error LNK1181: 入力ファイル 'Input.lib' を開けません。というエラーが発生します

どうやったら解決できますか
604デフォルトの名無しさん:2011/07/27(水) 09:35:20.80
はいはい、マルチポストマルチポスト
605デフォルトの名無しさん:2011/07/27(水) 11:57:48.52
>>602
事情は理解するけど、いまから勉強するなら、規格から外れた変な癖がつくからVC6はおすすめできない。

606デフォルトの名無しさん:2011/07/27(水) 13:08:40.28
>602
たしかVC6に付属するドキュメントに全部書いてある
607デフォルトの名無しさん:2011/07/27(水) 13:11:41.20
C++の勉強がしたい人はC++スレへどうぞ
608デフォルトの名無しさん:2011/07/27(水) 18:22:20.40
>>602
全部捨てろ
609デフォルトの名無しさん:2011/07/27(水) 22:24:43.72
>>602
フリーソフトのgccとかの方が規格に準拠してるから、mfc使ってms独自の文化に慣れようとかじゃ無い限りはvcは薦められん
vcはvcって言う別の言語と思っても良いんじゃないかと思う
(と言うか、脳内変換してる)
610デフォルトの名無しさん:2011/07/28(木) 00:10:27.15
VC6はね
今はそうでもないでしょ
611デフォルトの名無しさん:2011/07/28(木) 00:32:08.53
初心者がWindowsでgccなんか使おうとすると別の所で引っかかるだろう
612デフォルトの名無しさん:2011/07/28(木) 10:22:34.03
プロジェクトを立ち上げる時の
- Visual C++
  ATL
  CLR
  全般
  MFC
  スマート デバイス
  Win32

↑これらが何を意味するかわかりません。
本当にしょっぱなのしょっぱなですが、大雑把にでよいので、何したいときにATL使え、CLRは何したいとき!など
教えていただけないでしょうか。

よろしくおねがいします。
613デフォルトの名無しさん:2011/07/28(木) 10:50:26.99
わからないうちはWin32一択で
どうせ他のを使うことはそうあるまい
614デフォルトの名無しさん:2011/07/28(木) 10:57:03.05
一応説明すると、、、
ATL COM作るとき
CLR .NET Frameworkで動くもの(C++/CLI)これで1から書くならC#でいい
MFC MFC(クラスライブラリ)を使うとき、、Win32の上に乗ってるのでWin32の代わりにこれ選ぶことはあるか
スマート デバイス いわゆるCEとかWindowsMobileのソフト書くとき2010から削られてるから、2008Proあたり?
Win32 普通のC/C++のコード書くとき
615612:2011/07/28(木) 11:01:04.40
どうもありがとうございます!
MFCとWin32しか使ったことがなく、特に上2つが会社で聞いてもよくわからんと言われてたのでとても勉強になりました。

環境書き忘れていてすいません。2005Proでした。
616デフォルトの名無しさん:2011/07/29(金) 19:29:42.06
大丈夫かその会社
617デフォルトの名無しさん:2011/07/29(金) 21:21:00.53
全部の機能使うやつはいないだろ
618デフォルトの名無しさん:2011/08/01(月) 07:35:05.61
すいません。

int _tmain(int argc,TCHAR *argv[])
{
time_t tim=0;
TCHAR tbuf[1024]={_T('\0')};

   if(argc==2){
      tim = (time_t)_tstoi(argv[1]);
      if(_tctime_s(tbuf,sizeof(tbuf)/sizeof(TCHAR),&tim)){
         _tperror(_T("_tctime_s()"));
         usage();
         exit(1);
      }
      _tprintf_s(_T("time_t:[%u]=[%s]\n"),tim,tbuf);
   }
   return 0;
}

として、

sample.exe 1309471800

などと実行すると、

time_t:[1309471800]=[(null)]

と表示されるんですが、何が間違ってるんでしょうか?困ってます。お願いいたします。
VC++2010Express、Windows XPpro です。
619デフォルトの名無しさん:2011/08/01(月) 07:44:52.61
P.S. 前にもお尋ねしましたが、
 _tprintf_s(_T("time_t:[%u]=[%s]\n"),tim,tbuf);
の部分を、
 _tprintf_s(_T("time_t:[%u]"),tim);
 _tprintf_s(_T("=[%s]\n"),tbuf);
のように分割すると、意図する結果になるのですがVCの設定が間違ってるのでしょうか?
620デフォルトの名無しさん:2011/08/01(月) 08:19:13.52
sizeof(tim)が8なのに%u使ってるからじゃないかな
621デフォルトの名無しさん:2011/08/01(月) 10:22:28.28
time_tが__int64なら、%llu だな
622デフォルトの名無しさん:2011/08/01(月) 11:18:21.33
>>621 おおおおおお!!!! 神光臨!!!
できました!
感謝、感謝です。
623デフォルトの名無しさん:2011/08/01(月) 12:22:11.73
えーと、Visual Studio Express 2010 は、最大(?)「90日」という日数制限
があるようですが、「2008」の方にはないのでしょうか?
624デフォルトの名無しさん:2011/08/01(月) 12:30:56.63
>>623
ユーザー登録すれば2010の日数制限なくなるよ
Studioじゃ無くてそれぞれの言語に別れてるけど

体験版の話だったら、2008も2010も日数制限外せない
625デフォルトの名無しさん:2011/08/01(月) 12:34:20.93
Express と言ってるからユーザー登録の方だろうか。
2010はどうか知らんが、2008は英語版か、ISO版なら
ユーザー登録無くても使えた。

別に金かかるわけでもなし、登録すりゃいいと思うがな。
626デフォルトの名無しさん:2011/08/01(月) 19:25:19.71
登録って、会社側は何が得なんだろうか??
627デフォルトの名無しさん:2011/08/01(月) 19:37:14.36
>>626
規約違反見つけ易いとか、ダイレクトメールで新製品の宣伝とかじゃないかな
628デフォルトの名無しさん:2011/08/01(月) 23:51:54.11
x64ではインラインアセンブラが廃止されました。
今後64bitアプリが主流になると考えると、組み込み関数記述による最適化を覚えると良さそうでしょうか?
その場合でも、ハードの動きは意識できたほうが良いので、
今のうちにアセンブリ言語で練習しておこうとは思っています。
629623:2011/08/02(火) 07:43:49.21
>>624-625
無料版の話です。

Express 2010の無料版でも、登録すれば日数制限はなくなりますか?

>体験版の話だったら、2008も2010も日数制限外せない

もしかして、「体験版」と「無料版」の二種類があるのでしょうか?
630デフォルトの名無しさん:2011/08/02(火) 07:48:39.40
>>629
expressは無料版
それとは別にproとかenterpriseの体験版がある
631デフォルトの名無しさん:2011/08/02(火) 15:14:47.04
おとなしく登録しろ
632デフォルトの名無しさん:2011/08/02(火) 16:56:24.65
VC2008も安くなったのでわ?
633デフォルトの名無しさん:2011/08/02(火) 17:16:00.72
2008って、64bitでも使えるの?
634デフォルトの名無しさん:2011/08/02(火) 17:19:12.10
どういう意味で聞いてるのかわからんけど
普通に使えてるよ。
635デフォルトの名無しさん:2011/08/02(火) 18:15:39.99
普段はVBがメインなのですがCUDA動かすのにC++使い始めた初心者です。

ファイルの出力でofstreamを使ってるんですが、
えらく遅い(VBで.NetのStreamWriter使用した場合の倍ぐらい)

stringstreamにため込んで一気に書き出すというような書き方をしてるんですが、
  fout << ss.cstr() << endl; (こんな感じ)
とにかく速く出力したければどうすべきでしょうか。

使い方が悪いのか、そもそも別の方法使った方がいいのか・・・
.NetFrameworkは使わない前提です。
636デフォルトの名無しさん:2011/08/02(火) 18:25:00.70
>>634
64bitならば、intとかdoubleも倍長が増えるのかな?
637デフォルトの名無しさん:2011/08/02(火) 18:29:47.75
倍長が増える、の意味がよくわからんが
64bit環境のOSで動く、という意味だったが
64bitのコードのことならLLP64なのでポインタ以外は変わらない
638デフォルトの名無しさん:2011/08/02(火) 18:51:52.02
>>635
デバッグ設定で計測してるとかないだろうな?
てかofstreamにそのまま<<するのはだめなの?
std::string のコピーでパフォーマンス食ってる気がする
639デフォルトの名無しさん:2011/08/03(水) 03:26:01.61
スレ違いだったらすいません
CLRでの開発です


ARGBの順で各4ビット使用するピクセルフォーマットのファイルを読み込んで

gcnew Bitmap (width, height, stride, Imaging::Format16bppArgb4444 , buf);

みたいな感じでBitmapにしたいんですが、Format16bppArgb4444が存在しないみたいなんであきらめるしかないんでしょうか
この他にも別の形式のファイルも扱わなきゃいけない状況なんですが、他はFormat16bppArgb1555 とか全部フォーマットが対応してるんで、出来たらこの方法で統一したいです
640デフォルトの名無しさん:2011/08/03(水) 06:24:55.64
Visual Studio Express 2008を、WinXP(32BIT)上で動かして、
WinSDKを入れて、レジストリも修正し、x64用プログラムも作れる
様になった。しかし、ReleaseのWin32でビルドすると、「x64」用に
ビルドしている様な表示になり、Releaseのx64でビルドすると、
「Win32」用にビルドしている様な表示になる。つまり、Win32とx64
の出力ペーンでの表示が逆さま。

DebugのWin32とx64では、正しく表示される。

これはどうしてでしょう?
641デフォルトの名無しさん:2011/08/03(水) 12:11:03.63
作りなおしてみては?
642デフォルトの名無しさん:2011/08/03(水) 17:49:15.45
>>638
書き出すタイミングに気を付ければ言われたようにofstreamに
直接書き出した方がいくらか早い結果になりました。ありがとうございます。

とはいえやはり遅い・・・

CUDAで計算部分が40秒→0.5秒になったのに
出力を含めた全体となると295秒が350秒に・・・
643デフォルトの名無しさん:2011/08/03(水) 18:06:37.83
デバッグ出力させてない?
644デフォルトの名無しさん:2011/08/03(水) 18:15:55.54
>>642
stdioとの同期を切っても遅い?
645デフォルトの名無しさん:2011/08/03(水) 18:47:16.51
>>642
日経ソフトウェア2011年8月号読む限りじゃ、500くらい並列実行しないとcpuで並列実行した方が速いんじゃないか?と言う結果だが。。。。
(CUDAの記事は何故かCPUでの並列実行した結果が無かったので、AMD APP SDKの記事に載ってた256CPU並列から推測)
646デフォルトの名無しさん:2011/08/03(水) 18:50:54.93
ごめん
なんか勘違いしてた
データ数と分割数の両方考慮しないとダメだわ
どっちが速いか想像で断定出来ん
647デフォルトの名無しさん:2011/08/04(木) 21:03:50.07
質問しておいて遅レスで申し訳ない。

ひとまずofstreamやめて古典的なfopenとfprintfで出力してみた所、
速くなりました。350秒が190秒ぐらいに・・・

>>643
特にデバッグ用に何かを出力しているということはないです。
コンパイルもリリースモードで実施しています。

>>644
stdioとの同期がとられる仕様があることを知りませんでした。
↓これをプログラムの先頭に書けばOKでしょうか。
std::ios::sync_with_stdio(false);
プログラム先頭で指定しましたが、速度は特に変化なしでした。

>>645
CUDAの部分は早くなっているので問題なさそうです。(数千万スレッドの計算です)
CPUで前処理

CUDAで計算

CPUでファイル出力 ←これが遅い
648デフォルトの名無しさん:2011/08/04(木) 23:17:24.12
endl はフラッシュするから \n に変えてみるとか
649デフォルトの名無しさん:2011/08/05(金) 10:28:22.24
>>648
書出しのループ中は\nで改行し、最後の行(クローズ直前)のみ
endlとしています。

今回は速く書き出せればよく特にストリームに拘る必要はないので、
ひとまずCスタイルで対応することにします。
650デフォルトの名無しさん:2011/08/05(金) 12:46:21.80
登録キーを取得するとき、メールアドレス必要ですか?
私は、パソコンのメールアドレスを持ってないのですが、
携帯のアドレスでも大丈夫ですかね?
651デフォルトの名無しさん:2011/08/05(金) 15:41:18.51
HTMLメールで届くしコピペしないと辛いだろフリーメール取得しろ
652デフォルトの名無しさん:2011/08/06(土) 22:25:03.23
ありがとうございます。
gmail始めました
653デフォルトの名無しさん:2011/08/08(月) 05:00:43.95
ウィンドウズプログラミングをしています
画像処理なんですがうまく画像が表示されません
画像はプログラムファイルと同じディレクトリに保存しています
ソースはこれです
http://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/img/161.txt
解決方法を教えてください
654デフォルトの名無しさん:2011/08/08(月) 05:31:34.48
ヒント:BitBltの引数
655デフォルトの名無しさん:2011/08/08(月) 05:58:45.04
引数の位置情報を(0, 0)にしても表示されませんでした
656デフォルトの名無しさん:2011/08/08(月) 06:01:46.28
LoadImageの引数にも問題あり
ファイルから読むなら LR_LOADFROMFILE が必要
657デフォルトの名無しさん:2011/08/08(月) 06:04:00.74
表示できました
ありがとうございました
658デフォルトの名無しさん:2011/08/08(月) 23:29:15.47
DXライブラリで入力した文字をcsvに追加するプログラムを組んでいるのですが、
「fopen」でファイルを開くときにオープンモードを「a」とすることで
文字を元の文字の後に追加は出来たのですが、
文字の前に追加することが出来ません。

こちらすいませんが、解決方法を教えていただけますと助かります。

また、可能でしたら、
文字を入力するセルの指定の仕方も知っておりましたら、
教えていただければと思います。
659デフォルトの名無しさん:2011/08/08(月) 23:49:48.96
文字列を前方に追加するモードなんてないので
自前でやる必要がある
660デフォルトの名無しさん:2011/08/09(火) 20:33:53.74
VC++2005 Academic Edition で作成したプロジェクトを
別のPCの VC++2008 Express Edition で開き、プロジェクトをコンバートした後、
Release設定でコンパイルして動作させると、VC++2005上の倍の処理時間がかかってしまいます。

VC++2005でコンパイルしたexeを、VC++2008を使うPCで動作させると、
ほぼ同等の処理時間で済みます。
CPUがCore2Duo E8600とE8500でほぼ同じということもあり、
この結果は納得なのですが、
VC++2008でコンパイルしたものは異常に遅いです。

特に時間がかかる関数は、大量のデータアクセスとループがあるので、
それが苦しいかとは思いますが、だとしたらVC++2005でコンパイルしたexeも同様になるでしょうし、
そうすると、VC++2005AEとVC++2008EEとではコンパイラの最適化性能が異なるということになりそうですが、
ここまでの差が出るものなのでしょうか?
他に考えられそうな原因はあるでしょうか??

OSは両方ともWindowsXPです。
661デフォルトの名無しさん:2011/08/09(火) 21:04:57.85
Expressは最適化に制限がかかってる
662660:2011/08/09(火) 21:17:23.94
>>661
そうだったんですか!

Microsoft Visual C++
ttp://ja.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B

>同じバージョンでもいくつかのエディションが存在し、
>以前は上位エディションしか最適化をサポートしていなかったが、
>Visual C++ 2005から基本的な最適化は全てのエディションにおいて行えるようになった。
>(2005で導入されたプロファイリングに基づく最適化 (PGO) は上位エディションのみでサポートされている)

この記述を見て、PGO以外はほとんど同じと思い込んでいました・・・

ありがとうございました!
663デフォルトの名無しさん:2011/08/09(火) 22:31:34.71
2005のプロジェクトを2008にコンバートするとReleaseビルドでも最適化がOFFにされたような気が
コンパイルオプション確認した?
664660:2011/08/09(火) 22:48:32.56
>>663
「実行速度(/O2)」になっていましたし、「Fast(/fp:fast)」も引き継がれていたので大丈夫かな、と思っていました。
2005->2008へのコンバートに関係している可能性があるとのことなので、
2008の新規プロジェクトとして、ソースコードだけ放り込んでコンパイルしてみようと思います。
2008のPCは会社なので、明日試してみます。
665デフォルトの名無しさん:2011/08/10(水) 01:18:21.56
この頃触り始めたような者なので簡単な練習用の.cpp打ったんですけど、
//hello.cpp
#include <iostream>
using namespace std;

int main()
{
cout << "hello" << endl;
}
これで何故かビルドエラーが出ます。何が悪いんでしょうか?↑は間違ってないから、設定だと思うんですが…

ちなみにMicrosoft Visual C++ 2010 Expressです。
設定は初期状態で、最初はできていました。(ソースファイル内のプロジェクトが1つの時)
しかし、ソースファイル内に2つ目のプロジェクトを作るとビルドエラーがでて、
何回やっても同じなので、インストールし直したら、今度はプロジェクトが1つの時でもビルドエラーばかり出るようになりました。
どうすればいいんでしょうか?
666デフォルトの名無しさん:2011/08/10(水) 01:29:13.83
エラーメッセージも書かずに質問とな?
667665:2011/08/10(水) 01:48:51.09
>>666さん、すみません。
エラー1 error LNK2005: _main は既に hello.obj で定義されています。
エラー2 error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。
エラー見る限り、僕の打ち方がまずかったみたいですね。
ソースファイルの中に同じ定義を入れてはいけない、という事ですか?
//hello3.cpp
#include <iostream>
#include <string>
using namespace std;

int main()
{
string name; //名前(文字列)の「いれもの」
int tosi; //年齢(整数)の「いれもの」

cout << "こんにちは。私はコンピュータです。" << endl;
cout << "あなたの名前を入力してください。" << endl;
cin >> name; //名前(文字列)の入力

cout << name << "さん。よろしく。" << endl;
}
これが2つ目のプロジェクトです。どこを直せば干渉せずに実行できるのでしょうか?
668デフォルトの名無しさん:2011/08/10(水) 05:57:05.88
>>667
同じプロジェクトにmain関数が2つ以上あるからじゃね?
hello.cppとかいうのもいっしょに入ってるからダメって感じ
669デフォルトの名無しさん:2011/08/10(水) 07:37:58.00
>>665
int返すって指定してるならreturn 0書かんとエラーになるぞい
670デフォルトの名無しさん:2011/08/10(水) 07:41:17.17
>>669
C++はmainでreturnを書かなかったら勝手にreturn 0;したことになるよ
671665:2011/08/10(水) 08:23:06.31
つまり、main関数を同じプロジェクト内に2つ以上作ると、
「どっちを実行すればいいか、分からない」という事になるんですね。

今は練習で打ってるので、一つのcppファイルだけを実行とか
そんな機能は無いんでしょうか?
672デフォルトの名無しさん:2011/08/10(水) 08:25:20.55
cppファイルを右クリック プロパティで
コンパイルから除外的なオプションがあったはず
673665:2011/08/10(水) 09:27:07.00
>>672
できました。ありがとうございました。
674デフォルトの名無しさん:2011/08/10(水) 10:19:38.49
>>670
書き忘れたこと無かったから知らんかった。。。
コード読む側からすればややこしそうな挙動やね
675デフォルトの名無しさん:2011/08/10(水) 15:25:07.47
mainだけの特例がコードレビューに影響有るか?
676660:2011/08/10(水) 18:42:48.66
>>663
本日、VC++2008で新規プロジェクトを作成し、
ソースコード(と一部ライブラリ)をVC++2005環境から持ってきてコンパイルした結果、
ちゃんと以前と同様の最適化された速度で動きました。
ご推測の通り、2005->2008へのプロジェクトコンバートが原因だったようです。
良い経験になりました。
ありがとうございました。
677デフォルトの名無しさん:2011/08/11(木) 06:23:55.00
基底クラスと派生クラス同士のデフォルトコピーコンストラクタを使ってメンバ変数を代入したいのですが
これって可能ですか?
678デフォルトの名無しさん:2011/08/11(木) 07:16:06.37
日本語でおkな文になってるぞ
679デフォルトの名無しさん:2011/08/11(木) 20:52:42.75
継承してもデフォルトコピーコンストラクタの互換性は保てますか?
680デフォルトの名無しさん:2011/08/11(木) 21:03:48.58
C++スレじゃなくて、わざわざここで質問してるのは
何かVC特有の問題でもあるんだろうか?
681デフォルトの名無しさん:2011/08/12(金) 00:41:11.46
>>677>>679です
なぜC++で探さなかったのか…
スレ汚しどーもサーセンした
682デフォルトの名無しさん:2011/08/13(土) 16:45:28.84
VC++拡張の明示的オーバーライドなんだけど、VC2005だと
下みたいなインライン形式だとコンパイルできるけど、
メンバー関数の外だし形式がコンパイルできん。
どのバージョンからだと確実にできる?
struct Type:IFA,IFB
{
      void IFA::Function(){}
      void IFB::Function(){}
}
683デフォルトの名無しさん:2011/08/17(水) 12:46:08.07
あるBluetoohsレシーバ(デバイス)に、
マウスなど何かの機器が接続(通信がコネクト状態)されているかどうかって、
c++で判断することできますか?

win7で動けば良いと考えています。
VS2010を使用しています。
684683:2011/08/17(水) 15:27:17.65
すみません。
Win32APIスレがあることに気がつきませんでした。
そちらで再質問いたしますので、
上の質問は撤回いたします。
685デフォルトの名無しさん:2011/08/17(水) 17:16:34.04
vs2010にて、ソースコード自身のエンコードを、
まとめてUnicodeにしたいのですが、一つ一つ変換していくしかないでしょうか?
686デフォルトの名無しさん:2011/08/17(水) 19:22:33.80
C++の標準例外は、文字列を取得するメンバー関数ありますか。
.Net Frame work は確かSystem::Exceptionクラスやその派生クラス
はToString()のメンバー関数で文字列を取れたけど、std::bad_alloc
とか、std::out_of_rangeとかの標準例外クラスのメンバー関数は
ありますか。
687デフォルトの名無しさん:2011/08/17(水) 19:45:22.52
>>686
what()
688デフォルトの名無しさん:2011/08/17(水) 22:49:01.29
外部依存関係とはいったいなんですか
689デフォルトの名無しさん:2011/08/18(木) 11:32:55.81
フォームアプリケーションでフォームを呼び出した際に
テキストエリアにイベントターゲット(?)をされるようにするにはどうすればいいのでしょうか?
今は呼び出したらボタンに最初に位置しているのですが…。
690デフォルトの名無しさん:2011/08/18(木) 12:03:09.33
C++でフォームはやめとけ、、、って話はおいといて
フォーカスを別のとこにしたいってこと?
タブオーダーで順番替えるか、そのコントロールのFocus()を呼ぶ
691デフォルトの名無しさん:2011/08/18(木) 12:04:43.16
あとフォームのActiveControlプロパティにそのコントロール
入れてやる手もあるか?
692デフォルトの名無しさん:2011/08/18(木) 20:44:47.73
プログラムと言うか?プログラムのコンパイルの仕方を教えて下さい。

以下のサイトのプログラムをコンパイルしたいです。
http://oasis.halfmoon.jp/other/pic-ic/675-temp-sensor.html

プログラム (Windows側) PIC_Meter.exe です

「アプリケーション PIC_Meter.h
PIC_Meter.cpp
メイン・ダイアログ PIC_MeterDlg.h
PIC_MeterDlg.cpp
シリアル受信スレッド rs232c_func.h
rs232c_func.cpp
その他 DlgSetup.h
DlgSetup.cpp
PIC_Meter.rc
PIC_Meter.rc2
Resource.h
PIC_Meter.ico
StdAfx.h
StdAfx.cpp
著作権表示、再配布条件 ReadMe.txt
コンパイル結果 (実行ファイル) PIC_Meter.exe 」

のプログラムをコンパイルしたいのですがエラーが出ます。
どうしたら良いでしょう?
環境 VC2005 で win32 空のプロジェクトを指定 でファイルを追加しました。
コンパイルすると以下のエラーが出ます。
http://feb.2chan.net/img/9/src/1313667352004.jpg
対処方法を教えて下さい。(スレチなら誘導お願いします)
693デフォルトの名無しさん:2011/08/18(木) 20:55:32.44
プロジェクトの設定で共有DLLでMFCを使うみたいな項目なかったか?
694デフォルトの名無しさん:2011/08/18(木) 21:33:16.97
>>693
本当に有り難う御座います。
以下の様に選択しました。
http://apr.2chan.net/img/9/src/1313670407885.jpg
WIN32→WIN32プロジェクト
http://apr.2chan.net/img/9/src/1313670456127.jpg
次に
http://sep.2chan.net/img/9/src/1313670497778.jpg
空のプロジェクトです。

何を選択して良いのか?分かりません宜しくお願いします。
695デフォルトの名無しさん:2011/08/18(木) 22:02:04.76
そっちじゃなくてプロジェクトのプロパティ
全般の「MFCの使用」を「共有DLLでMFCを使う」、文字セットを「マルチバイト〜」
*.icoと*.rc2をresフォルダに置けばそれっぽいバイナリができあがる
696デフォルトの名無しさん:2011/08/18(木) 22:34:20.83
>>695
有り難う御座います。ww
無事コンパイル出来ました。感謝です

俺から見たら何故?そんな事が分かるの?
と言う位です。有り難う御座います。
697デフォルトの名無しさん:2011/08/18(木) 22:59:01.12
横からだけど、そう言うのは理解しておこうよ。
698デフォルトの名無しさん:2011/08/18(木) 23:18:15.22
言うほど簡単じゃないと思うぞ
699デフォルトの名無しさん:2011/08/18(木) 23:22:47.71
何回もひっかかって「あー、たしかデジャビュー・・・」系だろ?これ
たかが、「ない」だけなのにやたらとエラーメッセージが難解なところとか早くくたばれって感じがする
700デフォルトの名無しさん:2011/08/19(金) 12:38:24.96
エラーメッセージも読めないアホ
701デフォルトの名無しさん:2011/08/19(金) 16:28:45.18
DataGridViewのヘッダーの境界線の色を変えるにはどうしたらいいでしょうか?
702デフォルトの名無しさん:2011/08/21(日) 02:17:57.78
VBで作ったDLLをC++で使いたいのですが可能でしょうか?
環境はVisualStdio2005です。

現状は、GetProcAddressの関数指定で関数がみつからないというエラーが出ています。
DLL側での関数宣言がクラスの下でしかできず、階層が出来ているのが原因だと思って
いるのですが、解決策が見つからずに困っています。
703デフォルトの名無しさん:2011/08/21(日) 14:56:35.64
DLLを作るときはDependency Walkerを手元においておけ
704702:2011/08/21(日) 20:49:25.72
>>703
レスありがとうございます。
Dependency Walkerを探してダウンロードし、作ったDLLを読み込みましたが関数が表示されません。
この場合、DLLの作成に失敗しているということでしょうか?
(ちなみに、VBからは参照設定して関数を使うことができました。)
705デフォルトの名無しさん:2011/08/22(月) 01:46:32.92
>>702
VBってVB6?
だったらActiveX DLLだから
全然別ものだぞ
706702:2011/08/22(月) 13:06:45.19
>>705
VBもC++もVisualStdio2005です。
VBが6.0とそれより後で別物っていうのは調べてわかったのですが、
DLLを作るときにどう違うのかまでは理解できませんでした。

差し支えなければ説明をいただけないでしょうか。
707デフォルトの名無しさん:2011/08/22(月) 14:14:27.83
>>705
VS2005っていってるんだから.Netの奴だろ
708デフォルトの名無しさん:2011/08/22(月) 14:16:40.50
本人が来てたか

>>706
ネイティブからマネージドDLLの呼び方を調べてみれ
709デフォルトの名無しさん:2011/08/24(水) 00:30:02.44
SendMessage( SystemTimer.SerchedHWND[_Num], WM_MBUTTONDOWN, MK_LBUTTON, NULL );
SendMessage( SystemTimer.SerchedHWND[_Num], WM_MBUTTONUP, MK_LBUTTON, NULL );




INPUT _input[2] =
{
{ INPUT_MOUSE, 0, 0, 0, MOUSEEVENTF_LEFTDOWN, 0, 0, },
{ INPUT_MOUSE, 0, 0, 0, MOUSEEVENTF_LEFTUP, 0, 0, },
};
if( SendInput(2, input, sizeof(INPUT)) == 0 )




mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, NULL);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, NULL);
710デフォルトの名無しさん:2011/08/24(水) 00:33:22.39
途中投稿すまん。

指定したアクティブなウィンドウをクリックさせたいのだけれど
以下の方法を試しても反応しないのだけれどなにか問題アルのでしょうか?
ウィンドウはいくつかのウィンドウをつかったりしているのでウィンドウ側の問題ではないとおもいます。
(座標はあらかじめSetMousePosで移動しておきます。)

直接メッセージを送る方法
SendMessage( HWND, WM_MBUTTONDOWN, MK_LBUTTON, NULL );
SendMessage( HWND, WM_MBUTTONUP, MK_LBUTTON, NULL );

SendInputを使った方法
INPUT _input[2] =
{
{ INPUT_MOUSE, 0, 0, 0, MOUSEEVENTF_LEFTDOWN, 0, 0, },
{ INPUT_MOUSE, 0, 0, 0, MOUSEEVENTF_LEFTUP, 0, 0, },
};
SendInput(2, input, sizeof(INPUT);

マウスイベントでの方法
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, NULL);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, NULL);

ウィンドウメッセージで動かないのはわかるのですが、SendInputで動かない理由が分からず相談させていただきました。
よろしければ教えていただけないでしょうか?
711デフォルトの名無しさん:2011/08/24(水) 09:09:34.54
SendInputを試してみた。
動いた。
終わり。
(コンパイルできないコードを貼るな)
712デフォルトの名無しさん:2011/08/25(木) 04:25:38.22
これはとっても初心者なスレですね
713デフォルトの名無しさん:2011/08/26(金) 14:22:44.08
復帰
714デフォルトの名無しさん:2011/08/27(土) 13:06:08.15
プロジェクトを開いてもずっとスタートページみたいなのしか表示されない状態のままなんですが
プログラムの文字の羅列の部分を観るにはどうしたらいいのですか
http://up3.viploader.net/ippan/src/vlippan230863.jpg
715デフォルトの名無しさん:2011/08/27(土) 13:19:09.54
初々しくて涙が出た
716デフォルトの名無しさん:2011/08/27(土) 13:35:48.56
>>714
つかなんで2008?
717デフォルトの名無しさん:2011/08/27(土) 13:38:00.57
エクスプローラー消しちまったのか
718デフォルトの名無しさん:2011/08/27(土) 14:15:24.39
ああ、ソースコードを見たいってこと? なら。

1. ソリューションエクスプローラを表示する
 -> メニューの 表示 - ソリューションエクスプローラ を選択する
2. 適当なプロジェクトを開く
 -> その画面の左上の「最近使ったプロジェクト」から選ぶか、メニューのファイルから新しいのを作る
3. 「ソリューションエクスプローラ」で適当なファイルを選択する

で、いいんじゃね。
719デフォルトの名無しさん:2011/08/28(日) 02:24:18.41
>>716
サイトとか見ながら使い方勉強してるんですが
2010だと色々解説されてなかったりして使いづらいので・・・
>>718
ありがとうございます!
出来たのですが、こんな風にエクスプローラが分離されてしまっているのって直せますでしょうか。
VC++の画面左側に表示しておきたいのですが。。。
http://up3.viploader.net/ippan/src/vlippan231021.jpg
720デフォルトの名無しさん:2011/08/28(日) 02:41:43.32
適当にドラッグすりゃ引っ付くだろ
721デフォルトの名無しさん:2011/08/28(日) 02:44:13.64
>>720
それがなかなかひっつかないんですねこれが
722デフォルトの名無しさん:2011/08/28(日) 02:55:03.35
タイトルバーを右クリックしてフローティングなんちゃらのチェックを外す
723デフォルトの名無しさん:2011/08/28(日) 11:18:25.89
1. まず >>722 を確認する
2. 画面上の特定位置に置きたいウィンドウ(この場合ソリューションエクスプローラ)をドラッグする
3. 画面の中央と四辺の中央に半透明のアイコンのようなものが表示される
4. 1 のウィンドウを置きたい位置の 2 のアイコンにドロップする
724デフォルトの名無しさん:2011/08/28(日) 12:17:03.25
DLL(MFC拡張DLLです) について教えてください
クラス全体を__declspec(dllexport) で修飾する方法と個別に関数を修飾する方法がありますが、
違いがよくわかりません、解説おねがいできませんか。
// クラスに対して__declspec(dllexport) する場合
class __declspec(dllexport) CHoge
{
public:
CHoge();
virtual ~CHoge();
};

// 関数に対して__declspec(dllexport) する場合
class CHoge
{
public:
__declspec(dllexport) CHoge();
__declspec(dllexport) virtual ~CHoge();
};
725デフォルトの名無しさん:2011/08/29(月) 00:52:04.16
>>724 ですが
教えてもらえませんでしょうか?
それからDLLの種類ですが、 MFC regular Dll の間違いでした。
726デフォルトの名無しさん:2011/08/29(月) 13:33:33.98
質問の趣旨がわからん。
727デフォルトの名無しさん:2011/08/29(月) 18:56:47.62
>>726
>>724 です
C++でDLLを作成するときに
クラスをエキスポートするのか、関数をエキスポートするのかが知りたいのですが
728デフォルトの名無しさん:2011/08/29(月) 20:24:55.70
だからそれでなにをしたいの?
どっちも出来るなら好きな方を選べばいいじゃん。
729デフォルトの名無しさん:2011/08/30(火) 04:33:02.23
相も変わらず初心者に優しい板だな
解らないなら黙ってろよ
730デフォルトの名無しさん:2011/08/31(水) 01:07:13.78
VC++ 2005 EEです。
windowフォームアプリケーションを作成しています。
ComboBoxで表示されている値を取得して
それを整数に変換したいのですがうまくいきません。
どうすれば可能でしょうか?
731デフォルトの名無しさん:2011/08/31(水) 03:46:45.68
>>730
SelectedIndexプロパティということかな?

一応確認しておくが、
その処理は本当にC#やVBではなくC++/CLIでやらなければならない?
732デフォルトの名無しさん:2011/08/31(水) 14:10:35.59
初心者がC++/CLIの門を敲いてしまう
MSのやり方失敗じゃね?
ATLも付けないならEEはVC++なくていいんじゃね?
733デフォルトの名無しさん:2011/08/31(水) 15:24:34.10
>>732
自分もマジでそう思う
VCEEだけは、プログラマ育てるどころか、諦めさせる為に在るとしか思えん
734デフォルトの名無しさん:2011/08/31(水) 19:44:54.67
C++/CLIはどうも好かん
735730:2011/08/31(水) 22:49:55.11
>>731
コンボボックスのリストが
100
200
300
という内容で200が選択されていた場合、
200という値を整数型として利用したいということです。
SelectedItemがそれに近い機能を持っているようですが、
うまく整数に変換する方法がわかりません。

C#やVBについては使ったことがないので、よく分からないです。
736デフォルトの名無しさん:2011/08/31(水) 23:10:10.60
そんなのも自分で解決できないならC#やったほうがいいよ。
C#なら初心者にも優しいし
737デフォルトの名無しさん:2011/09/01(木) 06:41:42.71
Visual studio 2005でコンパイルしています。
2008のプログラムをコンパイルしたいのですが、どうしたら良いのでしょう?
変換が出来ません。
738デフォルトの名無しさん:2011/09/01(木) 06:51:10.12
新しいプロジェクト作ってファイル移せばいいよ
739デフォルトの名無しさん:2011/09/01(木) 13:13:20.81
>>738
有り難う御座います。今プログラム作れるPCの前にいないので
先ずお礼を言います。

試してみて出来なかった場合、後程方法等を教えて下さい。
740デフォルトの名無しさん:2011/09/01(木) 13:48:19.85
VC6からだったら、とりあえずプロジェクトを開いてみたら
自動的に変換された
741デフォルトの名無しさん:2011/09/01(木) 17:03:58.44
>>739
エディタで.slnと.vcprojを直せばいけるかも
これで駄目なら738

変更前
.sln
Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008

.vcproj
Version="9.00"

変更後
.sln
Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005

.vcproj
Version="8.00"
742デフォルトの名無しさん:2011/09/01(木) 18:12:37.71
その程度で対処できるなら自動変換に失敗するわけがない
743デフォルトの名無しさん:2011/09/01(木) 18:23:44.77
>>742
その程度って…
基本的に新しいバージョンのプロジェクトファイルは変換してくれないんだが…
2008で2005のプロジェクトは変換出来るが
2005で2008のプロジェクトは変換出来ない。(してくれない)
分かった?
744デフォルトの名無しさん:2011/09/01(木) 20:04:31.76
質問なのですが…
一つのソリューションにプロジェクトが二つ以上ある状態でソースをデバックすると、
はじめに作成した方のプロジェクトのソースがデバックされてしまい
新しく作成したプロジェクトの方のデバックができません。
例えて言えば、AをデバックしたいからAを表示、開いてデバックをする→
しかしデバックされるのはBである といった状態です
vsの無料版使用しております。
分かりずらいと主いますがよかったら教えて頂けませんか;;
745デフォルトの名無しさん:2011/09/01(木) 20:06:04.12
プロジェクトを右クリックしてスタートアッププロジェクトに設定
746デフォルトの名無しさん:2011/09/01(木) 20:10:20.25
>>745 ありがとう御座います!助かりました!
747デフォルトの名無しさん:2011/09/02(金) 00:18:54.47
>>744-745
それ自分も昔ハマったw
748デフォルトの名無しさん:2011/09/03(土) 12:16:57.26
>>722>>723
かなり返事が遅くなってすみません
出来ました!
ありがとうございます!!
749デフォルトの名無しさん:2011/09/04(日) 18:41:39.03
VC++ 2008 Express で Windowフォームアプリケーションです。
Form が作られるときに設定の読み込みをさせる動作をしたいのですが
フォームフリエイトの動作はロードの

private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
}
の中に書くのでいいの?
750デフォルトの名無しさん:2011/09/04(日) 19:25:05.63
>>749
それでいいかどうか実行してみれば1発

一応確認しておくが、
その処理は本当にC#やVBではなくC++/CLIでやらなければならない?
751749:2011/09/04(日) 21:10:42.57
>>750
文字を変えるので試してみます。
....が、ぶっちゃけ まだ手を付け始めたところで書式がわからない。
適当にググって文字表示させてみますが、
Form Create が VC++ では何にあたるのかがさっぱり?
VC++ にするのは、他のツール作者さんがVC++ 2008使い(そっちも初心者なので判らない)で合わす為です。
書こうとしているのは、他言語で作った自作ツールを VC++ から繋げる参照用基本部分を作る。

受け取り部分:SetWindowLongPtr() http://msdn.microsoft.com/ja-jp/library/cc411203.aspx
テキスト受け取りエディタ欄 VC++ は listBox1 ? や button1 に固定ID番号振る。

送り部分は:SendMessage()
ちなみにこのスレに書くのは 749 が初めてです。
752デフォルトの名無しさん:2011/09/09(金) 08:21:17.01
やっぱりWindowsフォームアプリケーション作るんだったらC++/CLIよりもC#使ったほうがためになると思うんだ。

MFCとかWin32APIを叩いてウィンドウ作るなら良いけど。
753デフォルトの名無しさん:2011/09/09(金) 09:12:31.69
C++/CLIを使う奴は頭が固いよな。
適材適所で言語を切り替えられるやわらかい頭にならないと。
754デフォルトの名無しさん:2011/09/09(金) 11:18:33.70
SetWindowLongPtr(),SendMessage()を呼び出したいなら
Windows フォーム アプリケーション(CLR)じゃなくて、
MFC アプリケーションか、Win32 プロジェクトで始めのプロジェクト作らないと。
VC++って言ってるのが何のプロジェクトを指しているのか、もう一度まわりに聞いたほうがいいんじゃない?
755デフォルトの名無しさん:2011/09/09(金) 16:09:24.85
>>753
やわらかすぎるプロジェクトにあたった
mfcも.netもc#もc++も全部使ってある
dll呼び出しまくりんぐ
過去の資産の変更に怯える毎日
756デフォルトの名無しさん:2011/09/09(金) 16:10:20.09
現在C++でメダルゲームを作成しています。
ゲーム内のデータ(メダル獲得枚数やメダルの増減、個人個人のIDやPW)をPHPを使って
データベース内にデータを保存したいと思っています。

そこで問題になったのが、ゲームからデータベースへのデータの受け渡しと
データベースからゲームのデータ受け取りかたがわかりません。
検索しましたがいまいちぱっとする検索結果もなく・・・
どなたかご教授ください。
757デフォルトの名無しさん:2011/09/09(金) 16:16:49.69
>>756
REST
758デフォルトの名無しさん:2011/09/13(火) 02:01:52.38
VC2010Express です
std::copy() 使ったら
xutility(2227): warning C4996: 'std::_Copy_impl': Function call with parameters that may be unsafe
とか言われたけど何なの
759デフォルトの名無しさん:2011/09/13(火) 02:52:02.94
再現する簡単なコードです

#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>

void Insert(char *dest, const char *ins)
{
size_t pos = 4, destlen = strlen(dest), srclen = strlen(ins);
if(pos > destlen)
{ pos = destlen; }
else
{ std::copy_backward(&dest[pos], &dest[destlen], &dest[destlen + srclen]); }
std::copy(ins, ins + srclen, &dest[pos]);
}

int main(void)
{
char buf[256] = "1234567";
char *key = "ABC";
Insert(buf, key);
std::cout << buf << std::endl;
std::cin.get();
return 0;
}

char 配列に文字列を挿入するコードですが、実行結果は問題ありません
気づいたけど std::copy_backward() も同じ警告出る・・・
760デフォルトの名無しさん:2011/09/13(火) 02:54:08.57
Debug モードでのみ出る警告です
Release モードではスルーされます
761デフォルトの名無しさん:2011/09/13(火) 12:48:03.26
>>758
その警告は続けて
this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'
って出てないか?
ちゃんと読めば対処方法は分かるはず
762デフォルトの名無しさん:2011/09/13(火) 15:00:31.00
>>761
すまん出てた
あんまり長い警告だからよく読んでなかった
普段 VC6 使ってて VC2010 は最近試し始めたばかりだから、Safe Libraries とかよくわかってなかった
gcc や VC6 にソース流用したいから stdext とか checked_array_iterator とか使いたくないんだけど
/D_SCL_SECURE_NO_WARNINGS オプションで警告握りつぶす以外にやり方無いかなあ
763デフォルトの名無しさん:2011/09/13(火) 18:49:09.48
使わない方向で
764デフォルトの名無しさん:2011/09/13(火) 19:59:07.32
boostの何かの機能を使っててその警告が出たのを思い出した
765デフォルトの名無しさん:2011/09/15(木) 00:56:01.43
キーボードのFキーを10回Jキーを15回という操作を
メモ帳に送るということをしたいのですがどの関数を
使えばいいのでしょうか?

766デフォルトの名無しさん:2011/09/15(木) 00:57:45.32
sendInput
767デフォルトの名無しさん:2011/09/19(月) 00:54:39.99
VisualC++でデバッグモードでビルドすると作ってるソフトが強制終了せず(普通に動く)
リリースモードでビルドすると強制終了します。

リリースモードってデバッグの情報とかを入れずにビルドするらしいので
どのコードの場所で強制終了したのか、調べられません。

こういう時のデバッグってどうすればいいですか?
768デフォルトの名無しさん:2011/09/19(月) 01:26:32.96
リリース時でもデバッグ情報は作成できます
MiniDumpWriteDumpでググレ
769デフォルトの名無しさん:2011/09/19(月) 01:42:36.30
APIによるメモリリークって検出する方法ないかな?
例えば GetDC使う → ReleaseDCしない
こういう事したら「メモリリークしてんぞコラ」って教えてくれるような機能
770デフォルトの名無しさん:2011/09/19(月) 02:01:12.57
Cランタイムのメモリリークに限ればある
_CrtSetDbgFlag とかで検索するとよい

それ以上の機能(APIのリークなど)の場合、有償の製品ならある
Bounds Checker とか
フリーのものは知らない
771デフォルトの名無しさん:2011/09/19(月) 02:28:20.26
>>767
リリースモードでもデバッグ情報は作成可能
VC++がインストールされてない Windows でリリースビルドのアプリがこけた場合でも、OSの機能でクラッシュダンプ(こけた時点のメモリイメージのダンプ)は採取可能
ビルド時のデバッグ情報とアプリがこけたときのクラッシュダンプと低レベルデバッガ(WinDbg)があれば
こけたときの状況を再現してデバッグすることができる

くわしくはググれ
772デフォルトの名無しさん:2011/09/19(月) 08:35:37.87
>>769
Application Verifier
773デフォルトの名無しさん:2011/09/22(木) 13:41:21.34
visualC++2008EEでOpenCV2.2ライブラリをコンパイルしようとしたら
C:\Program Files\OpenCV2.2\modules\core\src\mathfuncs.cpp(875) : error C3861: '_mm_castsi128_ps': 識別子が見つかりませんでした
といわれます。
#include <emmintrin.h>
を追加してもその中に_mm_castsi128_psがないようで修正できません。

extern __m128 _mm_castpd_ps(__m128d);
extern __m128i _mm_castpd_si128(__m128d);
extern __m128d _mm_castps_pd(__m128);
extern __m128i _mm_castps_si128(__m128);
extern __m128 _mm_castsi128_ps(__m128i);
extern __m128d _mm_castsi128_pd(__m128i);

vc++2010EEのemmintrin.hから上の6行をemmintrin.hにコピペしたらいけました。もしかして俺削除してた?
774デフォルトの名無しさん:2011/09/22(木) 16:45:34.10
普通にあるな。
775デフォルトの名無しさん:2011/09/22(木) 22:57:32.72
SP無しの状態でも392行目に存在してるな
776デフォルトの名無しさん:2011/09/23(金) 17:01:05.16
開発環境
VC++2008で作成されたプロジェクトをVC++2010でビルドしています
Vista
Win32アプリケーション

このエラーは何を示していますか?
よろしくお願いします

エラー内容
error C2061: 構文エラー : 識別子 'Dialog' Dialog.h

部分ソース
#ifndef __dialog_h__
#define __dialog_h__

#ifdef _WIN32

#include <windows.h>

class Dialog //エラー行
{
public:
HWND hDialog; //ダイアログハンドルを格納
Dialog(); // hDialog = NULL
~Dialog(); // delete hDialog;
HWND *getHandle(void); //別のライブラリ.libからハンドルを参照 return &hDialogするだけ
};
//以下略

別のライブラリソースではDialog.hをインクルードしています
777デフォルトの名無しさん:2011/09/23(金) 17:03:46.00
for( x = 0 ; x <= 8 ; x++ ){
    printf("%d\n",rand());
}

上にかいたようなrand()関数を8回出力するものをVC++2008で
・デバッグ無しで開始
・debugフォルダにあるexeファイル起動
両方を数回行ったのですが出力される数値が変わりません
rand()関数は完全にランダムという訳では無いのですか?
778777:2011/09/23(金) 17:04:48.84
自己解決しましたすみません
779デフォルトの名無しさん:2011/09/23(金) 18:10:21.64
ググってココに来た人が(´・ω・`)しないように
オレがアンサー。

コンピュータで生成する乱数は、ランダムに見える
数列を順番に再生するようになっているだけ。
これを毎回違うパターンで再生したい場合には
時刻やプロセスIDなど、毎回違う数字をごにょごにょ
して初期値を変えるようにする。
780デフォルトの名無しさん:2011/09/26(月) 00:42:08.00
3つ教えてください。

--------- --------- --------- --------- --------- ---------
『Intellisense』について教えてください。
機能が効くときと効かないときとがあって、原因を探しています。
(教えてg○○で質問したのですが、解決できなかったので、現状マルチになります。)

Visual C++ 2010 Express
ツール>オプション>テキストエディター>C++>入力候補>自動メンバー表示
は、@・A共にONになっています。

@
VC起動>ファイル>新規作成>Win32>Win32コンソールアプリケーション>次へ>完了
(オプションの変更なし。プロジェクト名は適当。)
で、新しいプロジェクトを作り、ソースファイル>さっき入力したプロジェクト名.cpp
ここで、空白行に対して、『#include <』と入力すると、『Intellisense』の機能で、複数のヘッダのリストが表示されて選ぶことが出来ます。

A
http://www.winpcap.org/install/bin/WpdPack_4_1_2.zip
で、WinPcapの『Download WinPcap 4.1.2 Developer's Pack』をDLして、
同じように、『include <』をしても、『Intelisense』の機能が働きません。

■質問
単刀直入に、「何が問題なのでしょうか?」
「『Intelisense』つかわなければいいじゃない?」と言われれば話はそれまでなのですが…。

プロジェクト>プロパティ
ツール>オプション
の内容を見ても何がなんだか…。
googleしてもよくわからず時間だけが過ぎていきます。

よろしくお願いします。
781デフォルトの名無しさん:2011/09/26(月) 00:43:03.32
Ctrl+Space
782780:2011/09/26(月) 00:57:23.41
↑で、直リンク失礼しました。
ページへのリンクやttpとか書くべきなのですよね。忘れていました。
あと、age失礼しました。

sln(ソリューション)、
vcproj(プロジェクト)について教えてください。

--------- --------- --------- --------- --------- ---------
またしても、『Download WinPcap 4.1.2 Developer's Pack』関連です。

slnの中に複数のプロジェクトがあります。
ここで、それぞれのプロジェクトは、動作として完全に独立しています。
一つの、プロジェクトだけ(例えば、pktdump_ex)をビルドできればいいのですが、
特定のプロジェクトのフォルダに移動して、vcprojからVCを起動すると、
複数(slnに含まれる全て)のプロジェクトが開かれます。

■質問
単刀直入に、「どうしてなのでしょう?」
「そういうつくりなんだよ。」と言われれば話はそれまでなのですが。

例えば、ヘッダファイルなど共通のファイルを変更した際に影響がわかる
(影響がわからずに、混乱することを防ぐ)ためなのでしょうか?

何をしたか憶えていないのですが、何かをしたら、ひとつのプロジェクト(pktdump_ex)だけ開かれました。
今までビルドできなかったものが、いつの間にか解決していました。
その際には、プロジェクト配下に、『外部依存関係』というフォルダ(?)があって、includeしているらしいヘッダが並んでいます。
そういえば、新規にプロジェクトを作った場合も同じです。
783780:2011/09/26(月) 01:15:49.21
--------- --------- --------- --------- --------- ---------
またしても、『Download WinPcap 4.1.2 Developer's Pack』関連です。

ビルドする際の
『fatal error C1083: include ファイルを開けません。'winsock2.h': No such file or directory』
がなくならず、ビルドできません。

『プロジェクト>プロパティ>構成プロパティ>C++>全般』には、デフォルトで、WinPcapのincludeフォルダが指定されています。
『プロジェクト>プロパティ>構成プロパティ>入力>』の追加の依存ファイルの依存ファイルには、wpcap.libを追加しました。他にwsock32.libが始めからありました。
と言うか、『ttp://dog.tele.jp/winpcap/html/group__wpcapsamps.html』に記載の内容は試したつもりです。

あと、どこかのサイトに書いていたので、『C:\Program Files\Microsoft SDKs\Windows\v7.0A\』に対して、Includeフォルダ、Libフォルダを丸ごとコピーしました。

一度ビルドが出来た際には、
ソリューション全体ではなく、
プロジェクトのpktdump_exだけが開かれていました。何故なのか全くわかりません。いつのまにかでした。
また、プロジェクト配下に、『外部依存関係』というフォルダ(?)がありました。

■質問
失礼な質問になるかも知れません。

単刀直入に、『Download WinPcap 4.1.2 Developer's Pack』のビルドに必要な手順を全て教えてください。
もう10時間くらい調べているのですが、力つきそうです。
(弱音吐いて申し訳ないです。)

--------- --------- --------- --------- --------- ---------
あと、プロジェクトを実行する際には、『pkt_dump_ex』が一番ラクです。
実行する際に、引数を設定する必要が無いからです。
784デフォルトの名無しさん:2011/09/26(月) 13:34:04.48
インテリセンスさんとコンパイラさんは別の人だから
文法的に正しいとかコンパイル通るとかそういうのはインテリセンスさんにはどうでもいいこと
インテリセンスさんに気に入られるようにガチガチのMS仕様でソースかかなきゃダメ
785デフォルトの名無しさん:2011/09/27(火) 02:02:43.49
.ncbファイルを消してみる
786デフォルトの名無しさん:2011/09/27(火) 14:34:17.37
ヘッダーファイルはフルパスでも書けるのよ〜
#include "C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\include\\iostream"

今これでコンパイルが通りましたよ〜
787780:2011/09/28(水) 00:55:32.00
レスどうもです。

>784
ソリューション内のプロジェクトを一つに変更(他削除)して、
プロジェクト内のソースを一つに変更しました。
ソースを簡単なものに変更しました。
ソースは以下のとおり。

----------------------------------------------------------------------------------------------------
#include <stdio.h>

int main()
{
printf("hello world");
}
----------------------------------------------------------------------------------------------------

このソースでも、『#include <』でインテリセンスさんが働いてくれませんでした。
プロジェクトのプロパティなどの設定がNGということでしょうか?
788780:2011/09/28(水) 00:55:45.12
因みに、リビルドで以下のエラーを吐いていました。

----------------------------------------------------------------------------------------------------
1>------ すべてのリビルド開始: プロジェクト: iflist, 構成: Debug Win32 ------
1>プロジェクト 'iflist'、構成 'Debug|Win32' の中間出力ファイルを削除しています。
1>コンパイルしています...
1>iflist.c
1>マニフェストをリソースにコンパイルしています...
1>リンクしています...
1>LINK : fatal error LNK1104: ファイル 'ws2_32.lib' を開くことができません。
1>ビルドログは "file://C:\vc\WpdPack05\Examples-pcap\Debug\x86\BuildLog.htm" に保存されました。
1>iflist - エラー 1、警告 0
========== すべてリビルド: 0 正常終了、1 失敗、0 スキップ ==========
----------------------------------------------------------------------------------------------------

リンクで失敗しているようなのですが、
そもそもリンクする必要が無いような気がするのです。
何がまずいのでしょうか?
これが原因で、インテリセンスさんが働いてくれないということでしょうか?
…、そもそも、stdio.hなどの標準何某へパスが設定されていない?
789780:2011/09/28(水) 01:01:35.31
>785
レスありがとです。

.ncb は、インテリセンスのデータベースファイルと、どこかの辞書に書いてありますね。
始めは無くて、ソリューションを開いたときに作成されているみたいです。
とりあえず、ソリューションを閉じて、削除してみたのですが、何も変わりませんでした。
泣きそう…。
790780:2011/09/28(水) 01:04:52.94
ところで、リビルド時に作成されるらしい、.idb ファイルが削除できない、などというエラーが出いています。

「iflist : error PRJ0008 : ファイル 'c:\vc\WpdPack06\Examples-pcap\Debug\x86\vc80.idb' を削除できませんでした。」
(こんなのがプロジェクト数分出る。)

VCを終了して、削除しようとしても削除できません。
PCの再起動をすれば削除できます。
このエラーは何なのでしょうか?
(因みに、ビルドに失敗したあとです。)
791780:2011/09/28(水) 01:23:09.80
>786
私向けのレスでしょうか?

>今これでコンパイルが通りましたよ〜
!!!?
コンパイルに必要なものって何だと思います?

>#include "C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\include\\iostream"
とりあえず、同じように、Visual Studio 2008 を入れてみます。9.0って2008ですよね。
(余っているHDDにOSごと入れ直すべきなのかな…。)
(2005とか2010とかバージョンごとに違う挙動なのかな…。)
792780:2011/09/28(水) 03:15:15.41
…。

780です…。

本当にお騒がせしました。
スレ汚し失礼しました。

Vitual PC → WindowsXP → VC2008 をインストールしたところ、
何の設定もなく、普通にビルドできました。

あれー?
こんなものなのですか?
わけがわからない…。
793デフォルトの名無しさん:2011/09/28(水) 03:53:29.36
VC++2010を使っています。
#include "---" に関しての質問があります。

ソースファイルを作る時に「新しい項目を追加」を選んだ場合,ソースファイルはプロジェクトのディレクトリに作られます(いじらなければ)
このとき #include "sub..h" でインクルードできます

最近ソースファイルが増えてきたので直下に新しくフォルダを作りそこに移しました
ところが #include "src\sub.h" だと読み込めず,パスを変えて
#include "..\src\sub.h" とすれば動きました。

「..\」が必要ということは,Debugフォルダ内のexeファイル視点でファイルを探しているのだろうと思ったのですがinclude "sub.h"の説明ができません。
この""はどこを参照しているのでしょうか

また,管理上楽にしたいので #include "src\sub.h" を可能にする方法があれば教えてください
794デフォルトの名無しさん:2011/09/28(水) 05:34:04.26
早漏でした
フォルダに移しても#include "sub.h" が通用するんですネ
795デフォルトの名無しさん:2011/09/28(水) 09:49:29.27
つーか \\ じゃないとエスケープシーケンス扱いされるだろ
普通はパスの区切りは / を使うけど
796デフォルトの名無しさん:2011/09/28(水) 11:01:01.16
>>795
されない
797デフォルトの名無しさん:2011/09/28(水) 11:09:35.06
>>793
sub.hをインクルードしているソースがsrcの中にあるのでは?
798デフォルトの名無しさん:2011/09/28(水) 11:14:57.62
上の補足、**.c **.cpp の有るフォルダーがデフォのinclide だぜ。
799デフォルトの名無しさん:2011/09/28(水) 13:44:27.48
Release のフォルダにsub.hぶっこんでね?
800デフォルトの名無しさん:2011/09/28(水) 20:06:36.12
>>797,>>798で気づきました
冷静に考えたら簡単でした
includeするヘッダーへのパスは各.cppから見たパスなんですね。納得。

includeがVC++に依存していると思い込んでいて泥沼にはまっていました
801デフォルトの名無しさん:2011/09/28(水) 23:30:03.99
次のWin8って、タッチパネル方式だそうだけど、
今までのVC関連の知識でプログラム作ることはできるのだろうか。
ちょっと心配ですね。
802デフォルトの名無しさん:2011/09/29(木) 02:35:35.71
WinRTという新しいAPI群が追加される。C++から使えるCOMライブラリなのでそれを覚えればおけ
803デフォルトの名無しさん:2011/09/29(木) 07:45:55.26
WindowsDeveloperPreviewの
VC11のデフォルトコードが奇怪だったのは覚えてる。
804デフォルトの名無しさん:2011/09/30(金) 13:06:33.58
64bit版ですが。

レジスタが強化されたのって記述あるんですが、
引数の数増やしてもスタックが積み上げられないので
高速だとかしかわからないですが。

作る際の注意点ってなんですか?
805デフォルトの名無しさん:2011/09/30(金) 14:37:56.06
デバッガを使う時に気にすれば良い。
でもソースレベルでしかデバッグしないなら気にしなくて良い。
806デフォルトの名無しさん:2011/09/30(金) 15:02:14.72
>>804
これさえ注意すれば特に気にする事はない
http://msdn.microsoft.com/ja-jp/library/aa384214%28v=VS.85%29.aspx
807デフォルトの名無しさん:2011/09/30(金) 23:07:32.79
VS2010で
ヘッダーファイルでクラスのメソッドの宣言を書いて
void method(bool arg = false);

void Class::method(bool arg)
{

ソースファイルで実装を書く時、楽に出来る方法はないでしょうか
Ctrl + Spaceで補完しようとしたら、
808デフォルトの名無しさん:2011/09/30(金) 23:18:04.70
途中で書いてしまいました、すみません
今まではヘッダーファイルからソースファイルへ宣言をコピペして、
デフォルト引数を消したりクラス名をつけていましたが、
原始的で効率が良くないので、自動的に打つ方法を探しています
809デフォルトの名無しさん:2011/09/30(金) 23:24:29.48
MFCクラスウィザード
810デフォルトの名無しさん:2011/09/30(金) 23:44:40.27
デフォルト引数設定できない・・・しかもすでにあるソースファイルじゃなくて違うところに
ソースファイルが作られました。
811デフォルトの名無しさん:2011/09/30(金) 23:46:54.83
プロトタイプ宣言書く必要のない言語やれば
812デフォルトの名無しさん:2011/10/01(土) 11:25:33.05
全部ツールの仕様にまかせるのが楽だと思うけど、
何か気に入らない部分があって手で直すのが原始的で効率が良くない
と思うなら自作のスクリプトかプログラムで自動化すればいいだけ
813デフォルトの名無しさん:2011/10/01(土) 13:46:00.84
/D "_SECURE_SCL=0"
814デフォルトの名無しさん:2011/10/01(土) 14:36:31.46
すれ違いかもしれませんが質問させてください。

■質問
UI無し常駐アプリの動作が軽いものは、c++, C#(Form, WPF)の中でしたらどれでしょうか?
動作とは、起動時間は考えない、常駐した後の話です。

■やりたいこと
キーボードにテンキーが付いているのですが、
私はテンキーを使わないので
ハードキーによるランチャーを作りたい。

常駐→キーロガー を考えました。

■質問2
キーコードで判断しようとした場合、
テンキーでの数値入力なのか、
qwerty上部での数値入力か判定できませんでした。
方法はありますでしょうか?

よろしくお願いします。
815デフォルトの名無しさん:2011/10/01(土) 14:55:11.07
C++
816デフォルトの名無しさん:2011/10/01(土) 15:19:51.72
>814
違うキーコードが割り当てられてるはずだけど
もしかすると文字で判定してるんじゃないかな?
817814:2011/10/01(土) 18:50:27.75
>>815
ありがとうございます。

>>816
文字コードでなくキーコードですか。
今、出先ですので帰ったら調べてみます。
ありがとうございます。
818デフォルトの名無しさん:2011/10/01(土) 21:22:39.17
スキャンコードじゃね
819デフォルトの名無しさん:2011/10/02(日) 09:42:43.49
>>814
この間RawInputとグローバルキーボードフック使ってごちゃごちゃやったが、そんな感じで何とかなりそうだな
820デフォルトの名無しさん:2011/10/02(日) 20:06:38.79
プログラム初心者です。
質問させてください。
VC++で複数のピクチャーコントロールに同じ描画をしたい場合、
for文と配列を使用して繰り返し処理を行うことにより、
デバイスコンテキストの取得から描画処理まで、
一度きりの記述で終わらせることは可能でしょうか?
821デフォルトの名無しさん:2011/10/02(日) 20:10:01.40
可能です
822デフォルトの名無しさん:2011/10/02(日) 21:00:33.99
>>820です。

ありがとうございます。
すみませんが、追加質問させて頂いてよろしいでしょうか?

良く分からない点があります。
通常、デバイスコンテキストクラスのオブジェクトのポインタをpDC、
ピクチャーコントロールのメンバ変数をm_pictとするなら

CDC* pDC=m_pict.GetWindowDC();

という記述になるかと思われます。
ここにどのように配列を埋め込めば良いのか分からないのです。
pDC[10]、m_pict[10]のようにすれば良いのでしょうか?
よろしくお願いいたします。
823デフォルトの名無しさん:2011/10/03(月) 03:34:39.33
質問よろしいでしょうか?

x64のアプリケーションを開発しているのですが
_WIN64が未定義のままになっていて少し困っております。

コンパイラのソリューションプラットフォームの設定はx64になっております。
これ以外にx64の環境にするのに必要なことはあるのでしょうか?
824デフォルトの名無しさん:2011/10/03(月) 03:56:51.06
>>823
未定義なのをどうやって調べたんだ?
まさかIDEで表示が灰色になってるからとか言わないよな
あんなのあてにならんぞ
825デフォルトの名無しさん:2011/10/03(月) 04:04:49.16
というより右クリックで定義先探してみたが無いっていわれた
826デフォルトの名無しさん:2011/10/03(月) 04:06:34.37
ってごめんなさい
寝ぼけてたくさい
定義先ないの当たり前だよね

#pragma message("メッセージ")ってやったらちゃんとコンパイルされていた
827デフォルトの名無しさん:2011/10/03(月) 15:01:16.19
>>826
どうして「当たり前」なのか俺に教えてくれ
828デフォルトの名無しさん:2011/10/03(月) 16:40:23.75
普通コンパイルオプションの/Dで与えるものでソースコード上にはないから
829デフォルトの名無しさん:2011/10/03(月) 17:48:33.78
普通はx64コンパイラが強制的に定義するんだが・・・
830デフォルトの名無しさん:2011/10/04(火) 17:24:35.67
VS2005のVC++で他人のプログラムをデバッグなしで実行したところ
コンピュータにoctave.dllがみつかりません。
と、出ます
octave自体はダウンロードしてあるのですが、VSに何か設定する必要があるのですか?
831デフォルトの名無しさん:2011/10/04(火) 17:37:56.92
exeのあるフォルダかsystem32に入れろ
832デフォルトの名無しさん:2011/10/04(火) 21:26:46.57
単にプログラムが実行できませんという話か
VC全然関係ないだろ
833デフォルトの名無しさん:2011/10/05(水) 21:43:40.26
はじめまして
これからC++を学ぼうと思っている者です
C++を学ぶ為に必要だということで、TD.exe(だったかな)というソフトをダウンロードしたのですが
使い方がよく分かりません
開くと右上にWAITという字が出たまま進みません
Fileという項目をクリックしてみると応答なしと出ます
私が使っているPCはWin7で、確か32bitだったと思います
となたか対処法を教えていただけませんか
また、C++を学ぶ上でオススメの書籍やサイト等ありましたら教えていただきたいです
長々と失礼しました
回答お待ちしております
834デフォルトの名無しさん:2011/10/05(水) 21:48:11.14
VC++ではTD.exeは使わないから、スレ違い。
835デフォルトの名無しさん:2011/10/05(水) 21:49:54.37
学ばないといけないようではダメだ
836デフォルトの名無しさん:2011/10/05(水) 22:23:17.69
>>834
スレ違いでしたか、申し訳ありません
よろしければ、TD.exeについて質問するならばどのスレが適当か教えて頂けませんか?

>>835
そうですか・・・
私は少し前に吉里吉里2というソフトを扱ったことがあるのですが、これはまたC++とは全く違うものなのでしょうか?
837デフォルトの名無しさん:2011/10/05(水) 22:24:08.18
C++触るには10年くらい早いんじゃないか・・・
838デフォルトの名無しさん:2011/10/05(水) 22:28:17.33
>>836
TD.exeは忘れて、CかC++から勉強しよう。
だいたい何処で聞いたんだそれ?
839デフォルトの名無しさん:2011/10/05(水) 22:33:01.40
所で、TD.exeはどこから落としたんだ? 俺が違うのを連想した可能性もある。
落とした先出してくれ
840デフォルトの名無しさん:2011/10/05(水) 22:33:39.15
>>838
もう一度C言語について調べなおしてみます
プログラマーになるには と検索して一覧に出たサイトを覗いてみたらTD.exeがオススメされていたので
ダウンロードしたのです
しかし皆様のレスからすると、このソフトは適当ではないようですね
C言語に、特にC++について学ぶために必要なソフトやアプリ、学ぶ上でオススメの書籍などありましたら
教えて頂けませんか?
841デフォルトの名無しさん:2011/10/05(水) 22:36:35.01
すみません、C++ 入門 で検索して一覧に出たサイトでした
ttp://www.asahi-net.or.jp/~yf8k-kbys/newcpph1.html
このページで、Borland C++というソフトが紹介されていて、Borland C++で検索して一覧に出たサイトで
ソフトをダウンロードしてみたところ、TD.exeが出てきたのです
842デフォルトの名無しさん:2011/10/05(水) 22:42:19.87
古すぎねーか
ttp://9cguide.appspot.com/
こっちのほうがいい
843デフォルトの名無しさん:2011/10/05(水) 22:46:51.40
もし、TD.exeが俺の連想したターボデバッガだったら。
古い情報だ。 いまだに、古いのはある。
Web見るときは、その情報の作成日を確認しろ、何処かにあるから。
何処にも作成日付がないページは忘れろ。
本屋に行って、立ち読みして良さそうな本が一番。
VC系がネットでは情報量は多い。

ああーーBC… BCはもう古い…
でも、未だに使ってる人はいるね、BCだと何処のスレだ?
ここか、スレできたのが6年前…、過疎ですね。

http://hibari.2ch.net/test/read.cgi/tech/1155549904/l50

BCならこちらに書き込もう。><
844デフォルトの名無しさん:2011/10/05(水) 22:47:14.72
>>842
ありがとうございます
是非参考にさせていただきます

スレ違いだというのにご丁寧にどうもありがとうございました
845デフォルトの名無しさん:2011/10/05(水) 22:51:07.77
Visual Studio 2010をダウンロードしろ
846デフォルトの名無しさん:2011/10/05(水) 22:52:16.23
>>843
ありがとうございます
今後、ページを見るときは作成日を確認してからにします
確かに古い情報を頭に入れても意味がありませんよね
教本は、近いうちに書店で探してみます

そうですか、このソフトは古いのですね
スレを覗いてみましたが、質問があったとしても回答を貰うのは難しそうですね
ご丁寧にありがとうございました
847デフォルトの名無しさん:2011/10/05(水) 22:59:29.20
>>845
ありがとうございます
Visual Studio 2010で検索してみたところ、
Microsoft Visual Basic 2010 Expressが初心者に最適だと書いてありましたので、インストールしました
848デフォルトの名無しさん:2011/10/05(水) 23:01:49.25
べ、べ、ベーシックかよ><、超お勧めしない。が、好きにしていい。
849デフォルトの名無しさん:2011/10/05(水) 23:03:23.81
>>848
オススメできないのですか
好きにしていいとのことですが、勧めるならどれなのでしょう?
850デフォルトの名無しさん:2011/10/05(水) 23:04:29.03
C++やるんじゃなかったのかよ?
なんでもいいならC#のほうがいいぞ
851デフォルトの名無しさん:2011/10/05(水) 23:06:16.63
Microsoft Visual C#

Microsoft Visual C++
がいいと思うが、比較的、簡単なのはC#
C++はネット情報が多い、が難しい。
ベーシックは止めた方がいい。
852デフォルトの名無しさん:2011/10/05(水) 23:09:34.40
>>850>>851
ありがとうございます
私はC++を学びたいので、Microsoft Visual C++ をインストールしてみます
ご丁寧にありがとうございました
853デフォルトの名無しさん:2011/10/06(木) 08:56:50.85
foo::bar

はnamespaceだけど

foo:bar

なんて文法ないですよね
こんな名前の関数や変数作っても問題ない?
854デフォルトの名無しさん:2011/10/06(木) 21:58:47.51
>>853
とりあえず作ってみてからコンパイルしてみればおk
855デフォルトの名無しさん:2011/10/06(木) 22:55:01.14
VC++の初心者です。質問させて頂きます。
http://dobon.net/vb/dotnet/datagridview/textboxevent.html」で書かれた
コード(VB、C#)をVC++.net2008に書き換えたいです。
しかし、KeyDownのイベントを手動で登録する方法がわかりません。
KeyDownのイベントを手動で登録するにはどうすれば良いのでしょうか?
856デフォルトの名無しさん:2011/10/06(木) 23:22:36.14
>>855
フォームにテキストボックスを貼り付けて、プロパティーの
稲妻のアイコンをクリックして、KeyDown をダブルクリックして
ソースを保存した後、保存前のソースとの違いを見比べてみて
857855:2011/10/07(金) 00:25:44.04
855です。
856さんご回答ありがとうございます。
質問の説明が悪かったです。

実現したい動作はDataGridViewに配置したComboBox(手動入力可能)を編集中
にEnterキーを押下したときのイベントを取得することです。

方法としてはDataGridViewのEditingControlShowingイベント関数内で
DataGridViewComboBoxEditingControlのPreviewKeyDownイベントに
PreviewKeyDownEventHandlerを使用して登録します。
http://dobon.net/vb/dotnet/datagridview/textboxevent.html」のコードを
参考にしてVBで検証したところ実現が可能でしたが、
VC++ではDataGridViewComboBoxEditingControlのPreviewKeyDownイベントの登録
がうまくいきません。
858デフォルトの名無しさん:2011/10/08(土) 20:37:08.74
>>855
private: System::Void dataGridView1_EditingControlShowing(System::Object^ sender, System::Windows::Forms::DataGridViewEditingControlShowingEventArgs^ e) {
if ( e->Control == dataGridView1->EditingControl )
{
DataGridView^ dgv = safe_cast<DataGridView^>(sender);
DataGridViewTextBoxEditingControl ^tb = safe_cast<DataGridViewTextBoxEditingControl^>(e->Control);
tb->KeyPress -= gcnew KeyPressEventHandler(this,&test::Form1::dataGridViewTextBox_KeyPress);
if ( dgv->CurrentCell->OwningColumn->Name == "Column1" )
{
tb->KeyPress += gcnew KeyPressEventHandler(this, &test::Form1::dataGridViewTextBox_KeyPress);
}
}
}
private: void dataGridViewTextBox_KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e)
{
if ( e->KeyChar < '0' || e->KeyChar > '9' )
{
e->Handled = true;
}
}
859デフォルトの名無しさん:2011/10/09(日) 13:51:09.59
お知恵をお貸しください。

<やりたいこと>
・UIなしの常駐プログラムでキーボードのロギングをする。

<環境>
・VC++2010

<できたこと>
・テスト用としてWin32アプリとしてプロジェクトを作り、
Windowにフォーカスが当たっているときのキーボードロギングはできました。
 <方法>
 iwindow procesudre の中で、wParamの値と
仮想キーコード(VK_SPACEなど)と比較する。

<わからないこと>
UIなしで行う場合、上記にてWindowにフォーカスが当たっていない場合にも
 キーロギングできる必要がありますが、方法が分かりません。

<調べたこと>
 GetAsyncKeyState(vkValue) 関数とか調べましたが、
仮想キーコードとの比較ができるだけでしたので、
Windowにフォーカスが必要でした。

宜しくお願いします。
860デフォルトの名無しさん:2011/10/09(日) 13:54:53.35
ぐぐればわかるだろそんなこと
861デフォルトの名無しさん:2011/10/09(日) 14:36:05.32
イマイチ使ったこと無いが
SetWindowsHookEx
あたり?
862デフォルトの名無しさん:2011/10/09(日) 15:06:50.82
キーログ等は不正アプリになりやすいので、こんな所で情報出すなよ。
863デフォルトの名無しさん:2011/10/09(日) 15:58:33.11
publicメンバ変数mをもつ基底クラスSと、
Sを継承したクラスAがあるとします。

S*型の要素をもつ配列をつくって、その要素cに対して
c->mを行うと基底クラスSのmが呼ばれますが、
別途にメンバ関数を追加せずにc->mで派生クラスのmを呼ぶ方法は
ないのでしょうか?


864デフォルトの名無しさん:2011/10/09(日) 16:12:38.50
派生クラスのmっていうのはどこで宣言されるの?
865デフォルトの名無しさん:2011/10/09(日) 16:38:14.25
>> 864

Sを継承しているので派生クラスAもmをもっているという意味ですが、
なんか情報が足りなかったですか???

クラスSでmが0に初期化されているとして、

A a1() ;
A a2() ;
a1.m = 1
a2.m = 2
S* array[ 2 ] ;
array[ 0 ] = &a1 ;
array[ 1 ] = &a2 ;

ここで、例えば array[ 0 ]->m を行った時のことを意味しました。
866デフォルトの名無しさん:2011/10/09(日) 16:42:34.46
>>865
普通に派生のmにアクセスしてると思うが何が問題なんだ?
867デフォルトの名無しさん:2011/10/09(日) 17:10:58.38
基底クラスのポインタにアップキャスト?しているので
->mで呼ばれるmは基底のmになってしまいます。
868デフォルトの名無しさん:2011/10/09(日) 17:53:35.16
m が S と A の両方で宣言されてて A のメンバにアクセスしたいってことなら
dynamic_cast<A*>(array[0])->m;
でいいと思うよ
869デフォルトの名無しさん:2011/10/09(日) 18:10:02.25
>>868
ありがとうございます!
S* array[ N ] にSを継承したクラスA,B,…が混在する場合は
どうなるのでしょうか?
870デフォルトの名無しさん:2011/10/09(日) 18:26:29.69
>>869
ポインタでのdynamic_castはキャストに失敗すると0を返す
それで判断するのが1つの方法
ただダウンキャストを多用しなければならない状況は、
設計がおかしい場合が多い
871デフォルトの名無しさん:2011/10/09(日) 18:37:31.85
>>870
なるほど、確かにダウンキャストは予期せぬバグの
もとになると書籍に書いてありました。

結局、863については、
a1.m = 1 と同時に a1.S::m = 1 と書くようにすれば
とりあえず上手くいきました。
872デフォルトの名無しさん:2011/10/09(日) 18:42:16.16
S* になった時点でAやBの内容は見えないと認識するべき
Sの仮想関数を使うか、いちいちdynamic_cast等で型をチェックしてキャストするほかない
873デフォルトの名無しさん:2011/10/10(月) 07:11:26.38
VC6 です。
テキストをソートするプログラムを書こうと思い、

for(int i = 0; i < 200000; ++i)
  fprintf(oFP, "%d%d%d\n", rand(), rand(), rand());

で生成した、乱数が 200000 行並んだテキストファイルを作りました。
このファイルをメインプログラムで丸ごと読み込み、改行を '\0' に換え
て、各行頭へのポインタの配列を作りました。

このポインタの配列を並べ替えようとしたのですが、std::sort() では問
題なく処理されるのに、そこを std::stable_sort() に変えるとクラッシュす
るようになります。
再現するのは Release モードでコンパイルした時のみで、Debug モード
ではクラッシュせずにソートできます。
なお、VC2008 で試してみると、Debug / Release モードとも異常ありま
せん。

std::stable_sort() に渡す配列の範囲が間違っていない事、第 3 引数に
指定した比較関数が悪さをしていない事は何度も確認しました (現に、
まったく同じ引数の std::sort() は動作しています)。

これは VC6 のバグなのでしょうか。
そうなのであれば VC2008 でプログラムを作っていこうと思うのですが、
自分のバグなのか VC6 のバグなのかはっきりしないと不安です。
874デフォルトの名無しさん:2011/10/10(月) 08:28:46.94
バグかどうかは知らないけど、そもそもstable_sort使う必要があるの?

>丸ごと読み込み、改行を '\0' に換えて、各行頭へのポインタの配列を作りました。
連続領域(vectorとか)に丸ごと読み込んでから各行へのポインタの配列を作ったなら
ば、ポインタ値の比較だけでソート前の前後関係が分かるでしょ。
875デフォルトの名無しさん:2011/10/10(月) 12:27:53.82
VC6 SP4で試してみたがReleaseビルドでもクラッシュしなかった
876デフォルトの名無しさん:2011/10/10(月) 12:47:09.77
>>873 に検証用のコードを晒して欲しい
877855:2011/10/10(月) 15:35:29.76
858さん。サンプルコードのご提供ありがとうございました。
878デフォルトの名無しさん:2011/10/10(月) 18:01:36.93
よろしくお願いします。

開発環境
VC++2010

やりたいこと
ペイントアプリ

現状
描画した線が、次の線を描画すると消えてしまう。

private: System::Void pictureBox1_MouseMove(System::Object^ sender,
System::Windows::Forms::MouseEventArgs^ e) {

 Bitmap^ bmpPicBox = gcnew Bitmap(pictureBox1->Width, pictureBox1->Height);
 pictureBox1->Image = bmpPicBox;
 Graphics^ g = Graphics::FromImage(pictureBox1->Image);

 Xpos = e->X;
 Ypos = e->Y;
  g->DrawLine(Pens::Black,X0,Y0,Xpos,Ypos);

 X0 = Xpos;
 Y0 = Ypos;
}

ビットマップに描画すればいいらしいということは分かったのですが、
具体的にどうすればいいのかわかりません。
よろしくお願いします。
879デフォルトの名無しさん:2011/10/10(月) 20:15:53.05
[スタート]->[全てのプログラム]->[アクセサリ]->[ペイント]

でいけるんじゃね
880デフォルトの名無しさん:2011/10/10(月) 20:50:09.99
そりゃ、マウスイベントが発生するたびに描画先(Bitmap)を作ってりゃ、
最後に作ったビットマップに描いた線以外は消えるだろうよ。

gcnew Bitmap() を別の場所、たとえばコンストラクタとかに移動してみ。
881デフォルトの名無しさん:2011/10/10(月) 22:57:22.42
ということが分からないってのが凄いな。
プログラムどうこうの問題ではない気がする。
882デフォルトの名無しさん:2011/10/10(月) 23:04:57.43
いや、最初はそんなもんだよ。
コピペで書いてるうちは、この場合で言う bmpPicBox が描画情報を保管する実体であるってわからんだろうし。
883873:2011/10/11(火) 02:35:34.47
いろいろソートに関係ない部分をいじっていたらクラッシュしなくなりました。
でも std::stable_sort() ではなく>>874の方向でプログラム作る事にしました。
みなさん済みません、お騒がせしました。
884878:2011/10/11(火) 08:59:45.85
アドバイスありがとうございます。
早速試してみます。
885デフォルトの名無しさん:2011/10/12(水) 13:34:31.25
VC++でマイドキュメントに保存していたプロジェクトとCドライブ直下に移動させたところfopenの書込みモードによるファイル生成がされなくなったのですが原因わかりますでしょうか?
886デフォルトの名無しさん:2011/10/12(水) 15:09:20.34
意味がよくわからんが、、、OSは?
ルートとかProgram Filesに書き込み権限無いんじゃ?
887デフォルトの名無しさん:2011/10/12(水) 17:24:30.03
単に、パス名間違えてるだけとちゃうんか?
888デフォルトの名無しさん:2011/10/12(水) 18:55:09.19
VC++.net初心者です。
.NET FrameWorkが出力するメッセージ(Exceptionクラスのエラーメッセージやファイルダイアログの"開く"ボタン等)
を日本語ではなく英語に表示させたいです。

下記のコードを検証したのですが、どうしてもファイルダイアログのボタン等が日本語で
表示されます。

System::Threading::Thread::CurrentThread->CurrentCulture = System::Globalization::CultureInfo::CreateSpecificCulture(L"en-US");
System::Threading::Thread::CurrentThread->CurrentUICulture = System::Threading::Thread::CurrentThread->CurrentCulture;

.NET FrameWorkが出力するメッセージを英文にするにはどうすれば良いでしょうか。
889デフォルトの名無しさん:2011/10/15(土) 23:58:17.26
Windows XP、Visual Studio 2008 です。

エクスプローラのコンテキストメニュー型のシェルエクステンション DLL
を書いたのですが、DLL から表示するウィンドウやメッセージボックス
のコントロールが XP のビジュアルスタイル (Luna) が適用されず、クラ
シックスタイルで表示されます。
XP ビジュアルスタイルを適用する方法、問題になる点などわかりますで
しょうか。

http://www.koutou-software.co.jp/junk/apply-winxp-visualstyle.html
このページによると、\WINDOWS\WinSxS\ 配下の comctl32.dll がロード
されていないといけないようですが、当方の環境では
  C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.6028_x-ww_61e65202\comctl32.dll
  C:\WINDOWS\system32\comctl32.dll
の順番でロードされているみたいです。
DLL から呼び出した
  wchar_t buf[MAX_NTPATH] = L"(default)";
  GetModuleFileNameW(GetModuleHandleW(L"comctl32.dll"), buf, sizeof(buf) / sizeof(wchar_t));
  MessageBoxW(NULL, buf, L"Test", MB_OK | MB_ICONINFORMATION);
このコードの結果は "C:\WINDOWS\system32\comctl32.dll" です。
ちなみに、この MessageBoxW() の窓もクラシックスタイルで表示されます。

マニフェストファイルを書いて、DLL と同じフォルダにおいてみたり DLL の
リソースに埋め込んだりいろいろ試してみましたが効果ありません。

なお、Windows 7 ではクラシックスタイルではなく Aero スタイルで表示され
ます。

よろしくお願いします。
890デフォルトの名無しさん:2011/10/17(月) 15:47:25.11
>>889
#define ISOLATION_AWARE_ENABLED 1
1は要らないかも知れない。
891デフォルトの名無しさん:2011/10/17(月) 20:38:59.47
>>890
情報助かりました、うまくいきました。

その #define を windows.h のインクルード手前で定義したら、XP ビジュアル
スタイルが適用されるようになりました。
Visual Studio 2008 では 「1」 は必要みたいで、無いと winnt.h あたりでコン
パイルエラーになります。
ISOLATION_AWARE_ENABLED でググってみましたが、この情報少ないで
すね。
シェルエクステンションでばかりググってたから全然見つからなかった・・・。

ありがとうございました。
892デフォルトの名無しさん:2011/10/18(火) 01:20:56.51
VC++2008 Expressでwindowsフォームアプリを作っています。
フォーム内の画面遷移をPanelを使って作っていて、
遷移自体はHideメソッドやShowメソッドを使っています。

デザイン画面を使うと勝手にパネル間に親子関係ができてしまい(勝手にAddされる)、困っています。
何か良い解決手段は無いでしょうか、それとも作り方が間違っているのでしょうか。

どなたか助言をお願いします。
893デフォルトの名無しさん:2011/10/18(火) 08:16:12.12
解決策は3つ有る
1.デザイン画面を使わない
2.デザイン画面の制約内でしか設計しない。(デザイン画面の仕様にしたがう)
3.デザイン画面でデザインした後書き換える。
好きなのにしろ。
894デフォルトの名無しさん:2011/10/18(火) 22:35:32.58


                  /ヽ /ヽ  
                  ':' ゙''"  `':,    / ̄ ̄ ̄ ̄ ̄ ̄ ̄
                 ;ミ.   ・ω・ ;,  <  ぬるぽ
                 ξっ      ,つ \_______
                 `:;      ;,;' モコッ
                  `( /'"`∪
895デフォルトの名無しさん:2011/10/18(火) 22:36:29.24
ありがとうございます。
3番の方法でなんとかできそうです。
896デフォルトの名無しさん:2011/10/18(火) 22:37:23.23
  Λ_Λ  \\
  ( ・∀・)   | | がっ!
 と    )    | |
   Y /ノ    人
    / )    <  >_Λ∩
  _/し' //. V`Д´)/
 (_フ彡        / 
897デフォルトの名無しさん:2011/10/20(木) 14:35:29.78
こちらは、あくまで言語としてのVC++に対する質問しかできないでしょうか。
WMIのAPIの使い方はこちらではだめですか?
898デフォルトの名無しさん:2011/10/20(木) 17:16:27.00
>>897
質問ならageといたほうがいいのでは?
899デフォルトの名無しさん:2011/10/20(木) 17:44:08.53
まあ的確な答えを素早く返すようなひとが見てる可能性が
高いところに質問投げたほうがいいだろうね。
ここが一番そう思えるのならここでもいいんじゃない?
900デフォルトの名無しさん:2011/10/20(木) 18:43:28.97
ここは初心者スレだよ
901デフォルトの名無しさん:2011/10/20(木) 18:57:41.10
>>900
いや、初心者に教えるスレだろ
902デフォルトの名無しさん:2011/10/20(木) 19:01:09.35
基礎ができてない初心者に教えられる内容は限られる
903デフォルトの名無しさん:2011/10/20(木) 23:18:11.14
うん
904デフォルトの名無しさん:2011/10/20(木) 23:30:51.87
いやここ初心者相手にどや顔するスレだろ
そんなやつしかいないだろここ
905デフォルトの名無しさん:2011/10/21(金) 07:14:41.28
>>904
以前俺はここで助けてもらったが、
どや顔されようが何だろうが、どうでもいい
感謝してる
906デフォルトの名無しさん:2011/10/21(金) 07:58:38.17
>>904
俺もこのスレに育ててもらった
だからできるかぎり還元したい
907デフォルトの名無しさん:2011/10/21(金) 12:19:44.36
見慣れないものが有ります
これって何ですか?

Application::Run(gcnew Form1());
908デフォルトの名無しさん:2011/10/21(金) 12:21:24.57
C++/CLI
909デフォルトの名無しさん:2011/10/22(土) 22:18:58.15
>>907
>>908の言うとおり、C++/CLIでフォーム作ってるアプリケーションクラスに渡してる所

簡単に言えば、.netのGUIにおけるエントリポイント
またはdelphiの名残り


910デフォルトの名無しさん:2011/10/27(木) 20:48:59.44
小学校5年には早すぎますか?
911デフォルトの名無しさん:2011/10/27(木) 21:02:11.60
小5でCか
912デフォルトの名無しさん:2011/10/27(木) 22:09:08.01
>>910
算数をしっかりやってたほうが後で伸びると思う
913デフォルトの名無しさん:2011/10/27(木) 22:24:55.12
>>910
その年にして中卒程度の数学や英語や完璧ってんなら出来るかも
914デフォルトの名無しさん:2011/10/27(木) 22:41:31.02
ファイル>新規作成>プロジェクト>Win32コンソールアプリケーション>プロジェクト名HelloWorld
>OK>OK>HelloWorld.cppに以下のコードかく

int _tmain(int argc, _TCHAR* argv[])
{
printf("hello world");
return 0;
}

>プロジェクト右クリ>デバッグ>何も表示されない

hello world表示したいんだけどどうしたらいいの?
915デフォルトの名無しさん:2011/10/27(木) 22:43:22.92
>>914
ビルドは?
916914:2011/10/27(木) 22:47:00.37
system("PAUSE");いれたらできた
917デフォルトの名無しさん:2011/10/29(土) 20:36:48.85
インラインアセンブラのmov al,byte ptr[eax+2]てとこでアクセス違反がでるんだけど原因がわからん。
内容はデバッガ検知。

int i;
__asm {
mov i, 0
mov eax,fs:[30]
mov al,byte ptr[eax+2]
cmp al,0
je notdetect
mov i, 1
notdetect:
}
918デフォルトの名無しさん:2011/10/29(土) 20:42:50.86
>>917
eaxの内容がおかしいんだろう。
mov eax,fs:[30]が、なにやってるのか、わからん。
919デフォルトの名無しさん:2011/10/29(土) 20:50:05.89
レスサンクス
http://en.wikibooks.org/wiki/X86_Disassembly/Debugger_Detectors#PEB_Debugger_Check
これそのまま参考にやってみたんだけど
920デフォルトの名無しさん:2011/10/29(土) 20:54:25.79
eaxおかしくなってた
dクス
921917:2011/10/29(土) 20:58:28.91
mov eax,fs:[0x18]
mov eax,[eax+0x30]
cmp al,byte ptr[eax+0x02]
jne notdetect
でできました
感謝
922デフォルトの名無しさん:2011/10/29(土) 21:30:17.74
int i;
__asm {
call IsDebuggerPresent
mov j,eax
}
if(i)MessageBox(NULL, L"detect", NULL, NULL);

たびたびすみません、これコンパイルとおらないんだけどなんで
923デフォルトの名無しさん:2011/10/29(土) 21:35:20.93
mainがない
MessageBoxが未定義
jが未定義
不定値iを参照
924デフォルトの名無しさん:2011/10/29(土) 21:40:43.55
iとjまちがえてたww

#include <windows.h>
int main(){
int i=0;
__asm {
call IsDebuggerPresent
mov i,eax
}
if(i)MessageBox(NULL, L"detect", NULL, NULL);
return 0;
}

これでお願いします
925デフォルトの名無しさん:2011/10/29(土) 22:03:21.37
__asm{
push 0
push 0
push 0
push 0
call MessageBoxW
add esp,12
}
これさえとおらない
どうすればいいんだorz
926デフォルトの名無しさん:2011/10/29(土) 22:07:57.29
__asm{
push 0
push 0
push 0
push 0
call dword ptr[MessageBox]

}
英語でぐぐったら大量に情報でてきたw
すれ汚しスマソ
927デフォルトの名無しさん:2011/10/29(土) 22:20:41.19
callする前に存在するか確認して置くんだぞ

#pragma comment(lib, "Kernel32.lib")

#include <windows.h>

int main(){
    typedef UINT (CALLBACK* LPFNDLLFUNC)(void);
    HINSTANCE hDLL;
    BOOL i = FALSE;

    hDLL = LoadLibrary("Kernel32.dll");
    if (hDLL != NULL)
    {
        LPFNDLLFUNC lpfnDllFunc = (LPFNDLLFUNC)GetProcAddress(hDLL, "IsDebuggerPresent");
        if (!lpfnDllFunc)
        {
            FreeLibrary(hDLL);
            return 1;
        }
        __asm
        {
            call dword ptr[lpfnDllFunc]
            mov i,eax
        }
        if (i)
        {
                MessageBoxW(NULL, L"detect", NULL, NULL);
        }
    }
    return 0;
}
928デフォルトの名無しさん:2011/10/29(土) 22:25:47.71
>>927
独学だからこういう具体例はほんとありがたい
d
929デフォルトの名無しさん:2011/10/29(土) 23:06:20.65
なんでわざわざインラインアセンブリを使ってんだ
930デフォルトの名無しさん:2011/10/29(土) 23:13:04.14
IsDebuggerPresentを確認なんて95で動かす気かよ
931デフォルトの名無しさん:2011/10/29(土) 23:21:06.71
>>929
IsDebuggerPresent自体は単に関数呼び出しの例として使っただけじゃね?
932デフォルトの名無しさん:2011/10/30(日) 13:11:18.00
「VC++ 2010 Express」つかっています。
コーディングエディタのデフォルトのフォントが大きいので、小さくしたいのですが、フォントサイズの設定箇所をみつけられません。
どこで設定するか教えてくださいませ。

googleしても、作成したアプリケーションのフォントについてしか見つけられていません。
現状は、起動するたびに表示を83%に落として利用しているのですが、終了→起動で100%に初期化されてしまうので不便です。

よろしくお願いします。
933デフォルトの名無しさん:2011/10/30(日) 15:44:37.04
有料版VC++購入しようかと考えているんですが
フリー版のExpressとどんな点が違うんですか
前、PDFとかでそういうのまとめたの見た気がするんですが違いがありすぎて
全部確認するの面倒でした。。大きな違いだけ教えて貰えると嬉しいです。
934デフォルトの名無しさん:2011/10/30(日) 15:52:07.78
atl/mfc、リソースエディタがついてる
アドインが使える
935デフォルトの名無しさん:2011/10/30(日) 15:53:12.51
>>933
ここに主な機能の違いの一覧がある
http://msdn.microsoft.com/ja-jp/library/hs24szh9.aspx
936デフォルトの名無しさん:2011/10/30(日) 16:21:00.09
Visual C++の有料版=Visual Studioってことで良いの?
じゃあ、何でVisual Stuido Expressなんてのもあるんだ、わけがわからないよ・・・。
937デフォルトの名無しさん:2011/10/30(日) 16:25:59.29
>>936
初心者は C++ も C# も VB も初めから色々あると何すればいいのか混乱するだろ

大抵の初心者は C++ やりたい、C# やりたいというように、
やりたい言語は決めている
じゃあその言語だけをシンプルな提供した方が勉強し易いでしょ
938デフォルトの名無しさん:2011/10/30(日) 16:31:18.07
>>937
うーん…そうですか
Express版で64bitコンパイル出来ない時点で混乱してしまうような気が…
ってかVisual Studio Professionalって正規で買うと10万もするのか、やべーな
939デフォルトの名無しさん:2011/10/30(日) 16:33:30.24
>>936
Visual Studio 2010 Express なんていう名前のソフトウェアは無いからな
各言語用の Express を枠組み的にまとめたシリーズ名みたいなモンだ
(Visual Studio 2010 Express for Windows Phone ってのはあるが)

紛らわしい名前を付けるな、と言うのなら分かる
940デフォルトの名無しさん:2011/10/30(日) 16:37:20.67
>>938
しょうが無いよ

VS 2010 が開発されてリリースされた当時は、
「はじめての〜」とかの入門書を頼りに勉強してみようとする初心者が持つマシンは、
まだ32bitな人がほとんどだったんだから

俺はそれよりも MFC がないことの方が当時驚いた
C++ でも .NET に移行しろというメッセージだったんだろうなぁ
941デフォルトの名無しさん:2011/10/30(日) 16:41:07.12
>>938
64bitコンパイラはないが64bitで動くバイナリは吐けるだろ
942デフォルトの名無しさん:2011/10/30(日) 16:43:37.07
>>941
じゃあ32bitマシンで64bit環境のプログラムを開発すれば良いってこと?
安い32bitのノートPCでも買ってきてVC++インスコすれば良いのかな
943デフォルトの名無しさん:2011/10/30(日) 16:46:44.03
>>939
あーなるほど
シリーズ名だったのか…わかりづらい…
944デフォルトの名無しさん:2011/10/30(日) 16:51:17.20
>>942
>>941を超訳すると、

32bitアプリでも64bitで問題無く動くだろ

と、言いたいんじゃ無いかと

945デフォルトの名無しさん:2011/10/30(日) 16:57:28.19
>>944
違う
32bitOSでは動かないバイナリといえばよかったかな
946デフォルトの名無しさん:2011/10/30(日) 16:57:46.81
え、動くの?
じゃあ64bitコンパイラとか必要ないんじゃ…
947デフォルトの名無しさん:2011/10/30(日) 17:00:46.48
>>946
16GBのハイビジョン動画データをオンメモリで編集したい、なんて人なら喜ぶ。
948デフォルトの名無しさん:2011/10/30(日) 17:05:00.89
アプリじゃなくてプラグインを作ろうと思ってるんだけど
その場合も32bitマシンでコンパイルしたものがそのまま64bitでも使えるの??
949デフォルトの名無しさん:2011/10/30(日) 17:06:04.49
>>269
VCEEにも64bitコンパイラついてた気がするけど、自信が無い。。。
(削除しちまった)
950デフォルトの名無しさん:2011/10/30(日) 17:23:15.55
>>935 の一覧にある64ビットコンパイラというのは、次のどっちのこと?

1. 64ビットマシン上でコンパイラが動く
2. 64ビットマシン上で動く実行ファイルを吐く
951デフォルトの名無しさん:2011/10/30(日) 17:26:41.58
両方だな

上位エディションには64bitコードを出力する32bitコンパイラと
64bitコードを出力する64bitコンパイラが付属してる
952デフォルトの名無しさん:2011/10/30(日) 17:36:21.39
ってことはExpressEditionではどっちも出来ないってことか
結局64bitコンパイルしようと思ったら10万近く払って上位エディションを購入するか
64bitコンパイルの出来るExpressEditionのバージョンが出るのを待つしかないのか・・・
どっちにしてもキツいな
953デフォルトの名無しさん:2011/10/30(日) 17:50:58.03
無償のPlatform SDKに64ビットコンパイラって付いてないか?
954デフォルトの名無しさん:2011/10/30(日) 17:52:33.86
955デフォルトの名無しさん:2011/10/30(日) 17:54:18.30
956デフォルトの名無しさん:2011/10/30(日) 18:10:04.48
つーか少しぐらい調べろよ
957デフォルトの名無しさん:2011/10/30(日) 18:18:11.22
>>955
めんどくせーな
64bitコンパイルするだけに何でこんな手間かけにゃならんのだ
10万ぽいと出せる男になりてえ…
958デフォルトの名無しさん:2011/10/30(日) 18:19:03.09
手間賃
959デフォルトの名無しさん:2011/10/30(日) 19:21:20.82
これくらいで面倒がってる生き物は、
10万払ってもたぶん VS2010 Professional は金額分も活用できん
使い方を学ぶのも面倒だからね

それなら SDK 入れて設定する方がマシ

なんなら一度無料の体験版をインストールして1ヶ月使ってみるといいよ
960デフォルトの名無しさん:2011/10/30(日) 19:27:13.31
てか VS2010Pro なら制度を利用すれば 60k くらいで買えなかったっけか。
961デフォルトの名無しさん:2011/10/30(日) 19:27:14.70
10万円分とか活用できるわけねーわー
らってプログラミングのしごとしてるわけじゃないんらもん…
無料の体験版もあるのかあ、つかってみますありがとう
962デフォルトの名無しさん:2011/10/30(日) 21:01:51.96
有料版だとエディタが使いやすかったりする?
Expressと同じ?
WinAPI使いたいからVC++使うけど、Eclipseの使いやすさを知ってるからイライラする。
963デフォルトの名無しさん:2011/10/30(日) 21:44:36.25
変わらないだろ。
964デフォルトの名無しさん:2011/10/30(日) 21:47:54.09
10万は建前。実際にはExpressからアップグレードできるので誰でも6万で買える
趣味でも社会人ならそれぐらい出せるだろ
学生ならアカデミック版が1万で買えるし
965デフォルトの名無しさん:2011/10/30(日) 23:17:44.94
10万が6万になっても、その6万分の価値を引き出せなければ勿体ないことに変わりはない
実際、自分に全く関わりの無い機能や、他の無料ソフトで代用できそうな機能もあるからね

まずは無料体験版を使い倒すのがいい
966デフォルトの名無しさん:2011/10/31(月) 02:59:21.94
>>962
拡張機能が使える
967デフォルトの名無しさん:2011/10/31(月) 08:06:47.18
>>964
そもそも学生ならDreamSpark使うよ
968デフォルトの名無しさん:2011/10/31(月) 16:39:15.26
以前VC++2008 EEで作ったソフトを、VC++2010 EEに移植して
コードを吐かせたら、exeファイルのサイズが以前よりも半分近く小さくなりました
650kb(VC++2008 EEで製作)→370kb(VC++2010 EEで製作)
どちらもリリースモードかつランタイムライブラリはマルチスレッド/MTです
MFCも使っていません
こんなにexeファイルのサイズが変わるものなのでしょうか?
969デフォルトの名無しさん:2011/10/31(月) 21:59:30.84
>>968
特に2008は、でかくなるので有名です。
970デフォルトの名無しさん:2011/11/01(火) 00:40:41.62
>>969
なるほど
あまりにも差があるので、VC++2010EEで何らかの設定ミスを
犯したのかと思ってました
ありがとうございます
971デフォルトの名無しさん:2011/11/01(火) 15:35:03.34
設定で同水準にはできるよ、デフォルトの違いだな
972デフォルトの名無しさん:2011/11/01(火) 18:05:46.25
Win8のタッチパネル方式のプログラムも
VCで作成することってできるものなのかな?
973デフォルトの名無しさん:2011/11/01(火) 18:30:27.42
すいません、関数の頭に「::」が付くのは、どのような処理を行っているのでしょうか?
::QueryPerformanceCounter(LARGE_INTEGER *)&hoge);
等です。
974デフォルトの名無しさん:2011/11/01(火) 18:40:55.96
C++の入門書読み返してください
975デフォルトの名無しさん:2011/11/01(火) 18:55:06.97
すいません、手元にあるVisualC++の入門書を読み返してみましたが、載っていませんでした。
976デフォルトの名無しさん:2011/11/01(火) 19:00:58.67
>>975
それは本当にC++の入門書ですか?
977デフォルトの名無しさん:2011/11/01(火) 19:12:15.74
本当に載ってないなら窓から投げ捨てるべきだな
978デフォルトの名無しさん:2011/11/01(火) 19:33:45.85
ここに質問してくるヤツが、
ノーヒントで C++ と VC++ の違いなんて分かるわけが無い

現に、C++の入門書読めって言ってんのに、
VisualC++の入門書読んだけど、の切り返しだし

だれか分かりやすくヒント出してやれよ
ちなみに俺には無理
979デフォルトの名無しさん:2011/11/01(火) 20:14:20.45
>>973
"c++ スコープ演算子"でぐぐれ
(「::」=スコープ[解決]演算子)
980デフォルトの名無しさん:2011/11/01(火) 20:41:36.91
大阪府島本町の小学校や中学校は、暴力イジメ学校や。
島本町の学校で暴力やいじめを受け続けて、心も身体も
壊されて廃人同様になってしもうた僕が言うんやから、
まちがいないで。
教師も校長も、暴力やいじめがあっても見て見ぬフリ。
そればかりか、イジメに加担する教師もおった。
 誰かがイジメを苦にして自殺しても、「本校にイジメは
なかった」と言うて逃げるんやろうなあ。
 僕をイジメた生徒や教師の名前をここで書きたいけど、
そんなことしたら殺されて、天王山に埋められるかもしれ
へん。それで誰にも発見されへんかったら、永久に行方不明のままや。

981デフォルトの名無しさん:2011/11/01(火) 21:02:47.08
次スレよろ
982デフォルトの名無しさん:2011/11/01(火) 21:09:25.20
>>975
つまりこういうこと
ttp://codepad.org/VPltaCnP
質問スレなんだからみんな答えてやれよ・・・
983デフォルトの名無しさん:2011/11/01(火) 22:37:21.03
int WINAPI WinMain( HINSTANCE hInst, HINSTANCE hPrevInst,
LPSTR lpCmdLine, int intShowCmd)
{
return 0;
}
このコードを最小の実行ファイルサイズで出力されるようにビルドさせるにはどうすればいい?
自分は#pragma comment(linker, "/entry:\"WinMain\"")で4kbまで減らせたけどそれが限界
984983:2011/11/01(火) 22:38:08.66
追記VisualC++2010です
985デフォルトの名無しさん:2011/11/01(火) 22:54:15.04
最近やさしいC++第三版で学習し始めたが基本を抑えるのってやっぱ1ヶ月くらいかかりますか?
あと勉強方法はひたすら書いておぼえるしかないですか?
986デフォルトの名無しさん:2011/11/01(火) 22:59:50.24
>>985
基本とは何か?というのは曖昧で難しい問題だな 期間は考えるだけ無駄な気がする
とはいえ結局トライ&エラーしかないと思う

ある程度最低限基本を覚えた後、
何か作りたいものがあればモチベーションがあがって成長は早いかも
987デフォルトの名無しさん:2011/11/02(水) 00:03:57.66
>>986
実際にものをつくれるようになるまではどれくらいかかるんでしょうか
988デフォルトの名無しさん:2011/11/02(水) 00:11:26.96
>>987
知識0からとして誰でもがんばれば
色々アプローチにもよるけど、
インベーダーゲームくらいなら1ヶ月でいけるんじゃないか?
989デフォルトの名無しさん:2011/11/02(水) 00:12:32.71
20年くらい
990デフォルトの名無しさん:2011/11/02(水) 01:23:54.37
>>988
中々わかりやすい例を挙げてくれますね!
頑張ります
991デフォルトの名無しさん:2011/11/02(水) 06:20:07.00
>>983のコード借ります。
Visual C++のヘッダファイルとか覗いていると、
よく、LPSTR、みたいな LP で始まる型があるのですけど、何の略なのですか?
Pはポインタのことみたいですが。
よろしくお願いします。
992デフォルトの名無しさん:2011/11/02(水) 06:21:42.14
昔はロングポインタ、ニアポインタというものがあってだな…
ようするにポインタのことだよ
993991:2011/11/02(水) 07:06:51.75
>>992
ありがとうございます!
そういった歴史を教えていただけると理解が深まります。調べることもできますし。
994973:2011/11/02(水) 10:46:16.99
>>979>>982
using namespaceで前を省略していただけだったのですね
ありがとうございました
995デフォルトの名無しさん:2011/11/02(水) 11:05:20.11
>>994
えっ?
996デフォルトの名無しさん:2011/11/02(水) 11:16:37.98
>>994
なんか激しく勘違いしていないか?
落ち着いて出力を見直すんだ
997973:2011/11/02(水) 11:33:15.75
>>995-996
ありゃ、勘違いでしたか
>>982のコードで、main()の中の
「::func();」を「func();」にしても結果は同じなのですが、「::」の有無で何が変わるのでしょうか?
オーバーロードとも違いますよね?
998デフォルトの名無しさん:2011/11/02(水) 12:02:27.02
>>997
using してるとコンパイルエラーになるだろ?
ttp://ideone.com/aAAMV
てか今codepadすげぇ重たいな
999デフォルトの名無しさん:2011/11/02(水) 12:11:56.81
例が悪い
1000デフォルトの名無しさん:2011/11/02(水) 12:13:24.40
>>999
そりゃわるーございました 埋め
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。