08/05/07 23:33:53
Visual C++入門者・初心者からの質問を、
お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。
■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう。
・できるだけ具体的に。
質問の仕方については次のページが大変参考になります。
URLリンク(www.hyuki.com)
URLリンク(myu.daa.jp)
■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
(MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。
過去スレ、関連スレなどは>>2-5辺り。
2:デフォルトの名無しさん
08/05/07 23:34:50
Part29 スレリンク(tech板)
Part28 スレリンク(tech板)
Part27 スレリンク(tech板)
Part26 スレリンク(tech板)
Part25 スレリンク(tech板)
Part24 スレリンク(tech板)
Part23 スレリンク(tech板)
Part22 スレリンク(tech板)
Part21 スレリンク(tech板)
Part20 スレリンク(tech板)
Part19 スレリンク(tech板)
Part18 スレリンク(tech板)
Part17 スレリンク(tech板)
Part16 スレリンク(tech板)
Part15 スレリンク(tech板)
Part14 スレリンク(tech板)
Part13 スレリンク(tech板)
Part12 スレリンク(tech板)
3:デフォルトの名無しさん
08/05/07 23:35:24
Part11 スレリンク(tech板)
Part10 スレリンク(tech板) ※
Part09 スレリンク(tech板) ※
Part08 URLリンク(pc5.2ch.net)
Part07 URLリンク(pc5.2ch.net)
Part06 URLリンク(pc5.2ch.net)
Part05 URLリンク(pc5.2ch.net)
Part04 URLリンク(pc5.2ch.net)
Part03 URLリンク(pc5.2ch.net)
Part02 URLリンク(pc3.2ch.net)
Part01 URLリンク(pc3.2ch.net)
4:デフォルトの名無しさん
08/05/07 23:36:02
【関連スレ】
■MFC相談室 mfc18d.dll■
スレリンク(tech板)l50
Win32API質問箱 Build57
スレリンク(tech板)l50
【C++】 DirectX初心者質問スレ Part14 【C】
スレリンク(tech板)l50
【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 131
スレリンク(tech板)l50
C++相談室 part56
スレリンク(tech板)l50
C/C++の宿題を片付けます 95代目
スレリンク(tech板)l50
【初心者歓迎】C/C++室 Ver.42【環境依存OK】
スレリンク(tech板)l50
【関連サイト】
猫でもわかるプログラミング
URLリンク(www.kumei.ne.jp)
MSDN ライブラリ ※変更された
URLリンク(msdn.microsoft.com)
URLリンク(msdn2.microsoft.com) (2005のことはこっち)
Platform SDK Update ※変更された
URLリンク(www.microsoft.com)
URLリンク(www.google.co.jp)
5:デフォルトの名無しさん
08/05/07 23:36:54
【このスレの前身 VisualC++相談室 過去スレ】
part 1 URLリンク(piza.2ch.net)
part 2 URLリンク(piza.2ch.net)
part 3 URLリンク(piza2.2ch.net)
part 4 URLリンク(pc.2ch.net)
part 5 URLリンク(pc.2ch.net)
part 6 URLリンク(pc.2ch.net)
part 7 URLリンク(pc.2ch.net)
part 8 URLリンク(pc.2ch.net)
part 9 URLリンク(pc5.2ch.net)
6:デフォルトの名無しさん
08/05/07 23:38:00
Platform SDKの中で一番新しいのはこっち
Microsoft Windows Server 2003 R2 Platform SDK Web Install
URLリンク(www.microsoft.com)
(ISO版などあり)
これ以降、Platform SDK + .NET Framework SDKとして
Windows SDKが公開されていて、その中で一番新しいのはこれ。
Windows SDK for Windows Server 2008 and .NET Framework 3.5
URLリンク(www.microsoft.com)
少し前のバージョン(Vista + .NET 3.0の初期版)には日本語版もあったけど、
日本語化されているのは専ら.NET Framework部分だけ。
VC6対応の、最後のPSDKはここ。
URLリンク(www.microsoft.com)
テンプレ終わり。
7:デフォルトの名無しさん
08/05/07 23:39:53
前スレ>>6-7をテンプレに入れてみた。
8:前スレ971
08/05/07 23:40:00
自己解決しました...orz
2つの環境でうまくいかないのでおかしいなあと思っていたのですが、
1つ目の環境では32bit環境であるにもかかわらず64bitのライブラリをリンクしようとしていたミス
2つ目の環境ではmulti processorのライブラリを指定しているにもかかわらずsingle processorのライブラリディレクトリを指定していたミス
という非常にアホなミスで単にライブラリのリンクが失敗しているだけでした...
ご丁寧に呼び出し規約のことを考えていただいたみなさま、どうもありがとうございました。
dumpbinででてくるものが_付きでないものだから、呼び出し規約のせいじゃないかと思考が凝り固まってしまったのが敗因でした…
蛇足ですが前スレ>>990-992は自分じゃないですorz
みなさまどうもありがとうございました。
9:C++ コンパイラ
08/05/08 02:04:45
Microsoft Visual C++ Toolkit 2003
fURLリンク(195.252.112.9)
VCToolkitSetup.exe
size 32952488
sha1sum 956c81c3106b97042c4126b23c81885c4b5211f4
edonkey checksum
ed2k://|file|VCToolkitSetup.exe|32952488|c534888fa7605403dcb183d2d15282d1|/
10:C++
08/05/08 02:05:16
Visual Studio 2005 Express Edition CD イメージからのインストール方法
URLリンク(www.microsoft.com)
Visual C++ 2005 Express Edition 日本語版 サイズ 611,540 KB CRC 0xB3AD1A2F
URLリンク(download.microsoft.com)
Visual Studio 2008 Express Edition の DVD イメージからのインストール
URLリンク(www.microsoft.com)
URLリンク(download.microsoft.com)
11:デフォルトの名無しさん
08/05/09 00:33:05
if(i<-1)
{
return;
}
だとコンパイル通るのに
#define test (-1)
if(i<test)
{
return;
}
だと
if(i<test)
でエラーが出るんだが何がいけないんでしょうか?
12:デフォルトの名無しさん
08/05/09 00:50:48
>11
どんなエラーですか?
見た感じエラーにはならないですけど。
13:デフォルトの名無しさん
08/05/09 00:57:22
VC++で開発しようと考えていて、開発環境で悩んでいます。
VC2003 Standardは持っていて、慣れていていい感じなんですが
プロジェクトをシェアしようとすると、無償で入手可能なVC2005 Expressか
VC2008 Expressがいいように思えます。
・VC2005 Expressはりソースエディタがないらしいけど
どうやってリソースを作成しているんでしょ?
・VC2008 Expressはマルチスレッドプログラムの
デバッグができないらしいけど、あきらめるしかない?
作ろうとしているプログラムは、リソースも使うしマルチスレッドでもある。
おとなしく買えってことなのかな?
自分でStanadrdなりProfessionalなりを買うのはいいんだけど
自分しかメンテできないという環境はいやだなぁ、と思って相談しました。
14:デフォルトの名無しさん
08/05/09 01:26:44
デバッグは判らんが、リソースのコンパイルは出来るはずだけど。
仮にできなくても、リソースコンパイラはWindowsSDKに入ってた気がする。
RCファイルは自力で書かないといけないけど。
15:デフォルトの名無しさん
08/05/09 01:42:58
>>12
error C2143: 構文エラー : ')' が ';' の前にありません。
)つけてるのに出ます
わけがわかりません
16:デフォルトの名無しさん
08/05/09 01:46:15
>14
リソースに関しては、一回作れば済む話なので、あまり心配はしてません。
マルチスレッドデバッグは、これがないと厳しいな。
VC2003でマルチスレッドプログラムをデバッグしたときは、
ブレークポイントでちゃんと他のスレッドも止まってくれるのよね。
17:デフォルトの名無しさん
08/05/09 01:49:00
>15
testって定義が重複してたりしないかな?
重複しなそうな別の名前(testtesttestとか)に変えるとどう?
18:デフォルトの名無しさん
08/05/09 16:35:47
VC++のいい解説サイトありませんか?
色々検索してるんですがいいところがみつからなくて・・・
C言語のコンパイルの仕方がわかればいいです
19:デフォルトの名無しさん
08/05/09 16:59:16
コンパイルの仕方って・・・
解説サイト以前の問題じゃないのか?
20:デフォルトの名無しさん
08/05/09 17:13:40
mingwはインストール段階で挫折して
VC++ではどこで挫折するのかと思ったら
コンパイルの仕方を質問してるってどんだけ~
21:デフォルトの名無しさん
08/05/09 19:10:18
>>17
いろんな名前にかえましたが
やっぱり同じエラーです
プロジェクト作り直したりしてみましたが
だめでつた
Const int とかにすることにしました
ありがとうございやした
22:デフォルトの名無しさん
08/05/09 20:48:46
マクロ使うとエラーがわかりにくいといういい例だね。
23:デフォルトの名無しさん
08/05/09 20:53:10
初めまして。
なにを書けば意図が伝わるのか、要点がよくわからないのですが
その辺りは指摘をお願いします。
では、質問させていただきます。
ダイアログにおいて[Microsoft Web Browser]という[ActiveXコントロールの挿入]を行いました。
すると、ダイアログにブラウザが表示されるのですがスクロールバーの消し方がわかりません。(縦横両方)
スクロールバーの設定はいじれるのでしょうか?
色々検索し、スクロールバーを消す命令を見つけたのですが
記述してもなにも起こらず仕舞いです。
晒します。
BOOL CBROWSER::OnInitDialog()
{
CDialog::OnInitDialog();
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
SetIcon(m_hIcon, TRUE);
RECT Rect;
GetWindowRect( &Rect );
ModifyStyle(WS_CAPTION|WS_SYSMENU|WS_BORDER|WS_DLGFRAME|WS_CLIPSIBLINGS,WS_MAXIMIZE,0);
SetWindowPos( &wndTop, -1,-1, Rect.right-Rect.left, Rect.bottom-Rect.top, SWP_FRAMECHANGED );
ScreenToClient(&Rect);
m_Web.SetWindowPos( &wndTop, Rect.left, Rect.top, Rect.right-Rect.left+1, Rect.bottom-Rect.top+1, SWP_FRAMECHANGED );
m_Web.EnableScrollBar(SB_BOTH,0); //これがそれらしいのですが・・・
return TRUE;
}
どなたかご存知であればご返答よろしくお願いします。
24:デフォルトの名無しさん
08/05/09 21:01:56
IE専用のコマンドじゃなかったかな?
25:デフォルトの名無しさん
08/05/09 21:08:36
0
26:デフォルトの名無しさん
08/05/10 01:14:18
>>25
1にしろということだと思って
m_Web.EnableScrollBar(SB_BOTH,1);
に変更しましたが変化なしでしたorz
27:デフォルトの名無しさん
08/05/10 04:36:36
バリバリの初心者ですが、データをtxtファイルから入力するときにそのtxtファイルをどのフォルダに入れればいいかわからなくて困ってます。
どなたかご教授を・・。
28:デフォルトの名無しさん
08/05/10 06:19:58
どこでもいい
29:デフォルトの名無しさん
08/05/10 08:13:51
>23
それ使えるのウィンドウのスタイルとしてスクロールバーを持っている場合だろうな
30:デフォルトの名無しさん
08/05/10 09:50:38
>>28
どどどどこでもいいんすか。
じゃあエラーが出るのは違う要因のようです・・・。
ありがとうござんす。
31:デフォルトの名無しさん
08/05/10 11:28:11
ファイル位置を絶対パスで指定しろ
32:デフォルトの名無しさん
08/05/10 11:45:20
Form1のボタン1を押す
Form2のボタン2のEnableがtrueになる
Form1のボタン1のEnableがfalseになる
Form2のボタン2を押す
Form1のボタン1のEnableがtrueになる
Form2のボタン2のEnableがfalseになる
これだけのことなんですが、動くソースがどうしても書けません。
33:デフォルトの名無しさん
08/05/10 12:06:56
>>29
そうなんですか・・・
ありがとうございます。
他の方法をあたってみます。
34:デフォルトの名無しさん
08/05/10 14:01:27
ソース載せたら回答つきやすいかも。
35:デフォルトの名無しさん
08/05/10 15:46:18
/EHsはどこで定義されていますか?
36:デフォルトの名無しさん
08/05/10 16:34:30
自クラスのプロパティを、外部クラスから取得、設定するために
Setter、Getter のメソッドを用意しているのですが
Setter、Getter 以外のメソッドで
自クラスから自クラスのプロパティにアクセスする場合も
Setter、Getter を経由すべきなのでしょうか
また、経由しないことでデメリット等はあるのでしょうか
よろしくお願い致します
37:デフォルトの名無しさん
08/05/10 16:54:34
値の管理(上限・下限とか)を厳格にやりたいんなら、
経由すればいいし、パフォーマンス優先なら経由しなければいい。
38:デフォルトの名無しさん
08/05/10 17:08:13
>>36
【肥大化】C++ を見捨てたヤシ【複雑化】
スレリンク(tech板)
39:デフォルトの名無しさん
08/05/10 17:13:10
>>37
なるほど、ありがとうございます
>>38
いま覗いてみましたが、
後半のほうでその手の話題になってますね、ちょいと読んでみます
ありがとうございます
40:デフォルトの名無しさん
08/05/10 18:35:42
>>36
自クラス内だから直接触ってもいと思う。
でも、特殊な操作が無くて、Setter、Getter使って困ることが無ければ使ったほうがいいんじゃないかな?Setter、Getterつかっておけば後からの仕様変更が楽ではある。
41:デフォルトの名無しさん
08/05/10 21:48:11
サンプルのソースとかをビルドする時に新しくプロジェクトを作りますが、
サンプルのソースがフォルダで管理されている時にVCでも同じフォルダ構成で管理したいのですが、
いっぺんに同じフォルダ構成にする方法ってありますか?
42:デフォルトの名無しさん
08/05/11 01:15:09
サンプルのディレクトリとファイル構成をそのまま
sample.vcprojのFilterタグとFileタグに出力するスクリプトを書けばいいんじゃないかな
43:デフォルトの名無しさん
08/05/11 04:36:10
●6月にマネージャパン、月刊アスキー、週刊アスキーの3誌が賞金総額2000万円の「シストレFXグランプリ」を開催
URLリンク(system-trading.jp)
[シストレFXグランプリとは]
クリック証券が提供するFXのデモ取引環境を利用して、システムトレードにチャレンジできるFX取引のグランプリです。
お客様ご自身で作成したシステムトレードの機能を評価する「シストレソフト部門」とトレード収益を競う「トレード部門」の2部門構成となっております。
●5月22日より登録受付開始、6月2日よりグランプリ開始の予定。賞金総額2000万円。
デモトレードの優勝者には賞金三百万円がプレゼントされます。
▼トレード部門
初期資産500万円で、デモ取引のトレード収益を競っていただきます。
●URLリンク(www.fx-gp.com)
▼賞金総額
■社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円
44:デフォルトの名無しさん
08/05/11 09:24:16
>>42
ファイルを追加するようにフォルダを追加することは出来ないのですね。
具体的にはどうしたらいいんでしょう?
45:デフォルトの名無しさん
08/05/11 09:36:10
スクリプト書けないなら手でやった方が早い
46:デフォルトの名無しさん
08/05/11 09:46:00
スクリプトじゃなくても好きな言語でプログラム書けばいい
47:デフォルトの名無しさん
08/05/11 11:55:54
そうですか。。
とても量が多いのですが手でやってみます。
48:デフォルトの名無しさん
08/05/11 13:31:12
逆引きゲームプログラミングという本のサンプルプログラム↓
URLリンク(www.shuwasystem.co.jp)
をBCC5.5ではなくVisualStudio2005でコンパイルしたいのですが、
~番目の引数を 'const char [~]' から 'LPCWSTR' に変換できません。
というエラーが数百と、
~番目の引数を 'unsigned char [~]' から 'char *' に変換できません。
~番目の引数を 'const char [~]' から 'unsigned char *' に変換できません。
というエラーが42箇所出てしまいコンパイルできません。
数百出たエラーはプロパティで マルチバイト文字セットを使用する にしてコンパイルしたら全て消えたのですが、
他の42のエラーもコンパイルの設定で回避できるようでしたらその方法を教えてください。
42箇所だけですので書き換える方法でもいいです。
error C2664: 'FontPrint' : 3 番目の引数を 'const char [15]' から 'unsigned char *' に変換できません。
FontPrint( 208, 160,"NOW GAME SCENE");
error C2664: 'ReadWaveFile' : 3 番目の引数を 'unsigned char []' から 'char *' に変換できません。
wave_size = ReadWaveFile( "..\\..\\data\\bgm00.wav", &g_WaveControllBGM->WaveFormat, g_WaveControllBGM->WaveData);
こういった箇所です。よろしくお願いします。
49:デフォルトの名無しさん
08/05/11 14:41:47
>>48
コンパイラの設定で回避できるか知らんが
できたとしても設定で回避するようなエラーではない。
手作業で修正するべき。
50:デフォルトの名無しさん
08/05/11 15:24:49
printf()で出力したファイルをテキストファイルに書き出すことってできますか?
51:デフォルトの名無しさん
08/05/11 15:31:58
できるけどスレ違い
52:デフォルトの名無しさん
08/05/11 15:32:53
>>50
コマンドプロンプトでリダイレクトして実行って話?
53:デフォルトの名無しさん
08/05/11 15:37:25
VS2005を使っています。
あるプロジェクトをデバッグしようとしたところ、そのアプリは
起動時に必要なディレクトリの存在チェックをしているみたいで
プロジェクト内にはそのディレクトリが存在しないため、エラーに
なって起動出来ませんでした。
そのディレクトリを作ってあげれば良いと思うのですが、プロジェクト配下に
作りたくないので、別の場所にアプリが必要とするディレクトリを作りたいと考えています。
この場合、アプリを起動させる時に、作成した別の場所のディレクトリをスタートアップ時の
ディレクトリとして認識させる方法ってあるのでしょうか?
分かり難い説明で申し訳ありません・・・。
54:デフォルトの名無しさん
08/05/11 15:48:59
>>53
プロジェクトのプロパティのデバッグに作業ディレクトリって項目ないか?
それで起動時のカレントディレクトリは指定できるけど
55:デフォルトの名無しさん
08/05/11 15:55:20
>>53
デバッグの作業ディレクトリを指定すりゃいいんじゃないの?
56:デフォルトの名無しさん
08/05/11 16:24:00
>>54 >>55
おおっ!まさにこれです!
無事に起動する事が出来ました!
ありがとうございました!
57:デフォルトの名無しさん
08/05/12 01:57:50
Visual C++ 2008 Express Editionで、C言語の勉強をしたいのですが、
前スレで教えてもらったこの方法
---------------
[ファイル]->[新規作成]->[プロジェクト]->[Win32]->[Win32コンソールアプリケーション]
プロジェクトを作る場所、プロジェクト名を決定し、[OK]
[次へ]を選択し、[追加のオプション]で[空プロジェクト]を選択し[完了]
デフォルトでは左に表示される[ソリューションエクスプローラ]のツリー内の[ソースファイル]を右クリック
[追加]->[新しい項目]->[C++ファイル(.cpp)]
追加したいファイル名を入力して[OK]、拡張子まで書けば*.cにもできる。
で、ファイル内に以下のコードを記述する
#include<stdio.h>
int main( void ) {
puts( "ググレカス" );
return 0;
}
[Ctrl + F7]でコンパイルする。エラーがなければ[F5]で実行。
すぐにコマンドプロントが消えるのは仕様。出力結果を残したいならば[Ctrl + F5]で実行すればいい。
[F7]でビルドする。
-----------------------
では、C++言語になってしまうようです。
C言語をやるにはどうしたらよいでしょうか。
58:デフォルトの名無しさん
08/05/12 01:59:29
VCでやれ
59:デフォルトの名無しさん
08/05/12 02:02:33
>>58
言われてみればそのとおりでした。
さっそくそっちをダウンロード&インストールしてきます。
60:長いので二つに分割します(1/2)
08/05/12 04:19:58
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
struct test
{
test(): a( rand() % 10 ) { }
int a;
};
int main()
{
// コンストラクタの rand() が機能しない
vector< test > t1(10);
for ( vector< test >::size_type i = 0; i != t1.size(); ++i )
{
cout << t1[i].a << " ";
}
cout << endl;
// コンストラクタの rand() がちゃんと機能する
vector< test > t2;
for ( vector< test >::size_type i = 0; i != 10; ++ i)
{
test t;
t2.push_back( t );
cout << t2[ i ].a << " ";
}
cout << endl;
return 0;
}
61:長いので二つに分割します(2/2)
08/05/12 04:22:05
Visual C++ 2008 Express Edition ( Windows XP ) で上のプログラムを実行すると
t1[ 0 ] から t1[ 9 ] まではすべて同じ値に
t2[ 0 ] から t2[ 9 ] まではばらばらの値に
なります。いったいが何がそうさせているんでしょう?
どうも何度か試したところでは t1[ 1 ] 以降は 一つ前の要素の値をそのままコピーしているらしく
たとえば
test(): a( 0 ) { if ( 何がしかの条件 ) { a = 1; } }
のようなコンストラクタを書いたとき
本来 0 にならなければならない要素にもかかわらず
直前の要素が 1 の時に 0 にならないケースが発生します。
test() { if ( 何がしかの条件 ) { a = 1; } else { a = 0; } }
って書くしかないんでしょうか?
62:デフォルトの名無しさん
08/05/12 06:10:31
それVCというか普通のC++の範囲内だろ
63:デフォルトの名無しさん
08/05/12 07:50:19
>>61
再現する最低限のソースを作って張るんだ。
貼られた部分だけを見ると、引き数つきのコンストラクタがないからエラーが出そうなんだが。
64:デフォルトの名無しさん
08/05/12 08:19:26
ぱっと見、問題ないけどなあ
うーん
65:デフォルトの名無しさん
08/05/12 10:09:02
コンストラクタでrandとか・・・
66:デフォルトの名無しさん
08/05/12 10:15:44
>>63
大丈夫、10はtestではなくvectorの引き数だ。
>>61
ディフォルトコンストラクタは最初の一回だけ呼ばれて、後はコピーコンストラクタしか呼ばれない。
つーか、実験目的ならrand()なんか使わずにclock()でも使っておけよ。
67:デフォルトの名無しさん
08/05/12 10:27:59
>>66
clock()だと間に合わないみたいねw
--
[foo@Corvus tmp]$ ./a.out
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
--
ってことで、こんな風にしてみた。
--
static int staticCounterForDefault;
static int staticCounterForCopy;
struct test
{
int a;
test() : a(++staticCounterForDefault) {}
test(const test & foo) : a(++staticCounterForCopy) {}
};
--
では問題、実行せずに出力結果を予測しなさい。
# って、厳密には実装依存なのかな。
68:デフォルトの名無しさん
08/05/12 10:30:17
正直スレ違い
69:67
08/05/12 10:38:27
しまった、すっかりC/C++スレかと。正直すまんかった。
>>61
ってことで、納得できなければ続きはC/C++スレ辺りで。
70:デフォルトの名無しさん
08/05/12 10:40:00
スレリンク(tech板)
71:デフォルトの名無しさん
08/05/12 12:58:44
BEGIN_MESSAGE_MAPマクロですべてのイベントを同じ関数に飛ばして、その中で処理を分けたいのです。
それで次のようにOnProcが処理関数だとすると、ID_CMD_1,.....,ID_CMD_100に対応するID番号を
OnProcに知らせてやれば出来ると思うのですが、どのようにIDを取得するのかわかりません。
よろしくお願いいたします。
BEGIN_MESSAGE_MAP(CXXXX, XXXXX)
//{{AFX_MSG_MAP(CXXXX)
ON_COMMAND(ID_CMD_1, OnProc)
ON_COMMAND(ID_CMD_2, OnProc)
ON_COMMAND(ID_CMD_100, OnProc)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
72:デフォルトの名無しさん
08/05/12 13:14:26
ON_COMMAND_EX
73:デフォルトの名無しさん
08/05/12 17:39:21
出来ました。ありがとうございました
74:デフォルトの名無しさん
08/05/12 20:59:17
あるフォームから別のフォームを開いて
その別のフォームにある変数を渡したいのですがどうすればいいでしょうか
75:デフォルトの名無しさん
08/05/12 21:08:36
C++/CLIの話?
76:74
08/05/12 21:09:47
VC++の話です。
77:デフォルトの名無しさん
08/05/12 21:19:20
1. 別のフォームの開き方は分かるけど、変数の渡し方が分からない。
2. 変数の開き方はわかるけど、別のフォームの開き方が分からない。
3. どっちも分からない。
4. その他のことが分からない。
さあどれだ?……と、聞き返さなくて済むよう初めから詳しく書け。
78:74
08/05/12 21:27:50
大変申し訳ないです
別のフォームを開いてそのフォームの中で元のフォーム内の変数を使いたいのですが、
元のフォームから別のフォームを開く際に別のファイルのヘッダをインクルードしているので、
別のフォーム上で元のフォームのヘッダをインクルードできなくて、
そのような状態でどのように変数を渡してやればよいのかがわかりません。
79:デフォルトの名無しさん
08/05/12 21:34:22
その、1個か2個なら単純に渡すための関数作って引数で渡せばいいんじゃないの?
80:74
08/05/12 21:56:29
すみません 渡すための関数が思い浮かびません。
引数で渡せるのであれば、その引数をどうやって渡すかが思い浮かびません。
81:デフォルトの名無しさん
08/05/12 21:57:07
>>76
一応言っておくけど、VC++ってのは言語名じゃなくて
MSの開発ソフトの名前だぞ。
82:デフォルトの名無しさん
08/05/12 22:15:06
>>80
自分でそういう関数を作ればいいだけのこと。
83:74
08/05/12 22:30:33
引数で渡す関数を作れ
⇒その関数の引数はどこから持ってくるの?
⇒そういう関数を作れ
(・д・)
84:74
08/05/12 22:35:08
メインのcppでint passをローカル定義して
メインのcpp内で
void set_pass(int j){i=j;}
int get_pass(void){return i;}として
最初のフォームでset_pass(渡したい変数)実行して、
次のフォームで 受け取る変数 = get_pass()
でOK?
85:デフォルトの名無しさん
08/05/12 22:54:02
テキトーなインターフェースクラスでも作成して、継承してしまえば?
86:デフォルトの名無しさん
08/05/13 01:04:46
>>59ですが、
ここに
URLリンク(www.microsoft.com)
VC2008というのが見あたらないのですが…
Visual C++2008でC言語のコンパイルなどをするにはどうしたらよいでしょうか?
87:デフォルトの名無しさん
08/05/13 01:22:21
拡張子がcppだとc++ cだとcでは
88:デフォルトの名無しさん
08/05/13 01:23:27
つか、C言語をC++でコンパイルしてもほとんど出来る。mainのvoidとかがちょっと違う
89:デフォルトの名無しさん
08/05/13 01:23:49
>>87
>>59ですが、
>>57の方法だと
>[追加]->[新しい項目]->[C++ファイル(.cpp)]
のC++をCに変えればいいのか…と思ったらCファイルが選択できないようなのです。
90:デフォルトの名無しさん
08/05/13 01:29:39
C言語はC++コンパイラでコンパイル出来ますよ CPPでC言語出来ます
91:デフォルトの名無しさん
08/05/13 01:33:45
>>90
そうなのですか?
猫でもわかるプログラミングで、
URLリンク(www.kumei.ne.jp)
これ↓をコンパイルするとエラーが出るのですが…
#include <stdio.h>
main()
{
printf("This is a test!");
}
92:デフォルトの名無しさん
08/05/13 01:40:02
拡張子を、.cppから.cにするんだよ。
93:デフォルトの名無しさん
08/05/13 01:49:31
>>92
手動で変更するということでしょうか?
してみましたが、
コンパイルやビルドしようとするとエラーが出ます…
94:デフォルトの名無しさん
08/05/13 01:51:01
エラーが出るならエラー内容を張る!
ってかさ、>>57にも書いたんだけど、「拡張子まで書けば*.cにもできる。」ってあるじゃん?
ついでに・・・
猫に書いてあるプログラムが規格に完全に準拠しているなんて思わない!
すべてのコンパイラが規格通りの挙動を正しく行うなんて思わない!
猫に書いてあるプログラムが全てのコンパイラで通ると思わない!
95:デフォルトの名無しさん
08/05/13 01:52:07
あ、解決しました
一つのソースファイルに複数のCファイルやC++ファイルをいれていたためエラーが起こっていたようです。
ご迷惑をおかけしました。
96:デフォルトの名無しさん
08/05/13 01:53:22
>>94
>エラーが出るならエラー内容を張る!
次回からはそうします…
すいませんでした
>ってかさ、>>57にも書いたんだけど、「拡張子まで書けば*.cにもできる。」ってあるじゃん?
あああああ
完全に見落としてました…
すいません
>ついでに・・・~
ややこしいのですねぇ…
ありがとうございました
97:デフォルトの名無しさん
08/05/13 01:55:15
>>83
だって自分のプログラムなんだから渡したいデータは自分で用意できるはずだろ。
98:デフォルトの名無しさん
08/05/13 06:25:39
>>97
近くに郵便局が無くて荷物を郵送できない人に
なら郵便局まで荷物を郵送すればいいじゃない
99:デフォルトの名無しさん
08/05/13 14:16:47
>>91
int main()
100:デフォルトの名無しさん
08/05/15 18:21:44
最近VC6をさわり始めました。
いま、ダイアログベースでピクチャボックスの画像を[印刷]ボタンを作って印刷しようと思っているのですが、どうにも仕方がわかりません。画像は表示できています。
印刷できるようにするにはどのようなプログラムを組めばいいのでしょうか?
よろしくお願いします。
101:デフォルトの名無しさん
08/05/15 19:48:15
sdiだったらデフォルトで印刷機能が組み込まれてたと思うから
それを参考にしてダイアログベースに実装する
102:デフォルトの名無しさん
08/05/16 22:21:39
ブレークポイントを設定するとそこで止まるわけだけど、
beginthreadexで作ったスレッド内でブレークポイント設定すると
停止したと同時にOSも固まるのはどうにかなりませんか?
103:デフォルトの名無しさん
08/05/16 22:37:16
別にフリーズせんけど
別のバグでIMEとかインテリセンスがらみでフリーズはあるけどそれじゃね?
104:デフォルトの名無しさん
08/05/16 22:44:21
コンソールアプリとして開発したソフトを
気が変わって(ウィンドウを使いたくなったので)通常のアプリにしたくなったんですが
最低限どこを書き換えるといいでしょうか?
単純にmainをWinMainに書き換えるだけだと不十分でした。
105:デフォルトの名無しさん
08/05/16 22:47:37
かなり買えないと無理
106:デフォルトの名無しさん
08/05/16 22:48:08
Windows-PCを買ったけどMacにしたくなったのでロゴだけを張り替えましたが不十分でした。
107:デフォルトの名無しさん
08/05/16 22:54:35
>>104
プロジェクトのプロパティの変更
108:デフォルトの名無しさん
08/05/16 23:00:01
たぶん1から作り直した方が早い
109:デフォルトの名無しさん
08/05/16 23:18:13
>>105、108
ダイアログ程度のウィンドウを表示したいだけなら,
"windows.h"をインクルードして,CreateDialog()でも
呼び出してダイアログを作ればよいだけ。
もっと本格的に作りたいなら,プログラムの構造から見直す必要が
あると思うので、105,108の言うように最初から作った方が
良いと思うよ。
110:105
08/05/16 23:34:08
ありがとうございます。
結局1から作り直し(といっても90%コピペ)しました。
111:デフォルトの名無しさん
08/05/16 23:34:21
>>100
御参考。
URLリンク(msdn.microsoft.com)(VS.85).aspx
112:デフォルトの名無しさん
08/05/17 00:10:22
すみません。家にVisualC++6.0というのがインストールしてあって
兄貴の猫でもわかるWindowsプログラミングという本をやりました。
で、大体どのようなものかわかったのですが、
今日本屋でその続編で猫でもわかるネットワークプログラミングという
本をみつけましたが、第2版とかかれていまして、VisualC++.NET対応と書いてありました。
これは、VisualC++6.0では無理でしょうか?中身はWindows32APIを使うものでして、MFCは無しみたいです。
どうか、よろしくお願いします。
113:デフォルトの名無しさん
08/05/17 00:12:29
Managed C++とかC++/CLIとか.NET Frameworkとかいうキーワードが書いてあったらできないかもしれない
でもWinSockとかを使うだけだったらVC6.0でもいけるよ
114:デフォルトの名無しさん
08/05/17 00:14:28
>>112
いまはVisualC++2008(バージョン9.0)が無料配布されている。これ入れればよい。
115:デフォルトの名無しさん
08/05/17 00:16:01
ここへいけば無料インストールできるよ
URLリンク(www.microsoft.com)
116:デフォルトの名無しさん
08/05/17 00:25:15
Expressをインストールして勉強しています。
クリップボードを監視したくて情報を探していたのですが、
・SetClipboardViewerという関数でクリップボード監視を開始する。
・SetClipboardViewerという関数はStanderdEditionを買わないと入らない
MFCまたはATLが無いと使えない。
と解釈しました。
質問ですが、
上記解釈は正しいでしょうか。
何か別にMFCですとかATLをわざわざ経由しなくても
上記関数と同様のことをしている関数があったりしますでしょうか。
VC++だけのためにVisual Studio買いたくない(´・ω・`)
117:デフォルトの名無しさん
08/05/17 00:25:49
>>113 そうですか。ありがとうございます。とりあえず、買ってきます。
本当にありがとうございます。
>>114-115 同一人物の方ですか?わざわざリンクまで張っていただき
感謝です。一応、それもダウンロードしてみます。
ありがとうございました。明日、本屋いってきます。
118:デフォルトの名無しさん
08/05/17 00:26:26
ちなみに、Visual C++ .NETには2002と2003とあって、それぞれ7.0と7.1に相当する。
この頃のMS製品はなんでも.NETとつけるのが流行だった。
119:デフォルトの名無しさん
08/05/17 00:26:30
ウエ・ミロ(2003~)
120:デフォルトの名無しさん
08/05/17 00:28:06
>>116
SetClipboardViewerはATLもMFCも関係ない、ただのWindowsの関数。
2005ならWindows SDK入れてVCと統合しろ。
2008なら使えないのはなんか設定がおかしいだけ。
121:デフォルトの名無しさん
08/05/17 00:31:23
>>120
取り急ぎ、感謝申し上げます。
2008です。いろいろと設定を見てみます。
122:112
08/05/17 00:36:16
>>118
どうもありがとうございます。色々あるんですね。
今のVer.2008が9.0っていうのもわかりました。ぐぐったら色々でてきました。
>>119
ねこでもわかるのホームページがかいてありますね。。すごいソースですね。。
徐々にやっていきます。ありがとうございました。
123:デフォルトの名無しさん
08/05/17 00:41:21
visual studio 2008のWindowsフォームアプリケーションで作成中です。
ドラッグ&ドロップでファイルのパスをtextBoxに表示しようとしてるのですが,上手く行きません。
検索して見つけたのがlistBoxだったので,↓のように変えてみたのですが・・
private: System::Void textBox_DragEnter(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e)
{
if(e->Data->GetDataPresent(DataFormats::FileDrop))
e->Effect = DragDropEffects::All;
else
e->Effect = DragDropEffects::None;
}
private: System::Void textBox_DragDrop(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e)
{
String^ s = (String^)e->Data->GetData( ::System::Windows::Forms::DataFormats::FileDrop, false);
textBox->Text=Path::GetFileName(s);
}
これでファイル名が表示されると思ったのですが,なにも表示されません。
どこがいけないのがご教授願います。
124:デフォルトの名無しさん
08/05/17 00:42:18
2005Express+PlatformSDKでクリップボードをアレコレできるよ。
俺作ったことあるし。
125:デフォルトの名無しさん
08/05/17 01:01:02
>>120
ありがとうございました。
Windowsの関数とおっしゃられたので
Includeディレクトリgrepしてみたら
WinUser.h内に宣言らしきものがあったので
それをIncludeしてるWindows.hをForm1.hに
Includeしてみたら関数を認識するようになりました。
(.cppにIncludeしても認識しないんですね。。。)
ちょっと引数と戻り値の型合わせがうまくいきませんで
コンパイルは通りませんが、関数が使えることがわかって
大きく前進しました。
本当にありがとうございました。
126:デフォルトの名無しさん
08/05/17 01:13:38
>>125
Form1.hとか言ってるし、もしかして.NETかぁ?
あと、Windowsの「関数」じゃなくてAPIな。
127:デフォルトの名無しさん
08/05/17 01:48:40
>>126
Help見たら「Microsoft Visual Studio 2008」って書いてあるので
.NETではないと思います。
「2008だけど、.NET」っていう状況があるんでしょうか。すみません。無知で。
状況がわかりやすいようにデフォルトのForm1って名前に置き換えて
わざわざ書いてしまいました。
自分の解釈がおかしいことがしばしばあるもので。。。
ああ、すいません。xxに関する便利な公開された関数をまとめて
xxAPIっていうものだと思ってました。
勉強することが多すぎますね。
今日は本当にありがとうございました。
128:デフォルトの名無しさん
08/05/17 07:59:29
>>127
Windowsフォームアプリケーションは、
.NET Frameworkを使うアプリケーション。
参照設定しているライブラリ(C#/VB.NETなら
プロジェクトのプロパティの設定)の種類によって、
実行には.NET Framework 2.0/3.0/3.5のいずれかが必要。
Visual Studio 2008に.NETがつかないのは、単にMSの戦略の問題。
129:デフォルトの名無しさん
08/05/17 12:45:33
APIって関数がまとまったものの名称だから
Windowsの関数と言っても問題なし。
130:デフォルトの名無しさん
08/05/17 13:58:26
インターフェースと関数は違うだろ
131:デフォルトの名無しさん
08/05/17 23:08:16
正式な言い方はWin32APIだろうな。
またWin32APIには関数だけじゃなくて型の定義なども含まれると認識している。
132:デフォルトの名無しさん
08/05/18 08:38:29
>>128
.netだと売れないってこと?
133:デフォルトの名無しさん
08/05/18 08:54:50
.netで作られたアプリを実行するには
ユーザが.net Frameworkを用意しなくちゃ行けない
でも、そういうのを用意できるユーザってどのくらいいるのよと
134:デフォルトの名無しさん
08/05/18 09:32:16
商品名に.netがつかなくなっただけで中味は今まで通り.net対応
MSとしては.netを一押ししたいから無償配布のExpressなんかは
デフォルトだと.netのプログラムを作るようになっている
135:デフォルトの名無しさん
08/05/18 13:20:03
>>133
Windowsユーザーのほとんどだろうね。
136:デフォルトの名無しさん
08/05/18 13:26:43
論理的には導入できるけど
.net?なにそれ?ってインストールもできない初心者がいて困る
ってことを言いたいのかと思われ
インストールできるけどヘンなランタイムとか要らないから却下
とかいう自称玄人もいるから困るといいたいのかと思われ
Vistaなら標準で3.5入ってるってから期待してたんだけど
あの体たらくだしなぁ
137:デフォルトの名無しさん
08/05/18 16:37:13
updateで自動的に.NET入らないんだっけ?
138:デフォルトの名無しさん
08/05/18 17:22:29
>>137
商用アプリの顧客は必ずしも、自動updateに任せっ切りじゃないからなあ。
仮想化とか、ローカルストレージ無しの方向に行ってるんで、今後の大規模.NET
アプリはサービス提供の方向と踏んでる。
139:デフォルトの名無しさん
08/05/19 10:59:41
VBも最初はruntimeの絡みで滅茶苦茶な評価だったことを思い出せば、OSの
世代交代さえ順調に進めば.NET FRAMEWORKの配布は問題じゃなくなるんだろう。
ただね、肝心のOSの世代交代がね。どうもね。
MSがVISTAへの交代より.NET FRAMEWORKへの移行を重要と位置づけて、SPで
.NET FRAMEWORKとSuper Fetchを配っちまえば話は早いのにと思わないでもない。
140:デフォルトの名無しさん
08/05/19 13:58:44
その辺コミコミのVistaだろ
ま、失敗してるが
141:デフォルトの名無しさん
08/05/19 14:40:09
>>138
一般ユーザのことだと思うぞ
142:デフォルトの名無しさん
08/05/20 18:52:41
すみません。VisualC++6.0でコンボボックスを使用しているのですが、
リソースエディタでコンボボックスを右クリックしてプロパティで
項目の入力っていう欄があるんです。そこに項目を並べたいんですが、
どのようにならべればいいんですか?
並べたいデータは、
北海道、本州、四国、九州、その他 の5つです。
よろしく><;
143:デフォルトの名無しさん
08/05/20 20:18:55
コード書かなあかんよ
144:デフォルトの名無しさん
08/05/20 20:31:06
沖ノ鳥島を忘れないであげてください
145:デフォルトの名無しさん
08/05/20 21:28:44
ちゃんと竹島(日本領)も入れとけよ。
146:デフォルトの名無しさん
08/05/20 21:37:11
つ 南樺太&千島列島
147:デフォルトの名無しさん
08/05/20 21:51:37
質問です
VC++2008で、親フォームから呼び出した子フォームを非アクティブにする方法で
ShowWithoutActivation
を使うと良いと言うのは分かったのですが、プロテクトプロパティなので、簡単に
変更が出来ません。
変更の仕方or別の方法、を教えてください
148:デフォルトの名無しさん
08/05/20 22:36:03
子フォームを実装しているクラスでパブリックに実装するとか。
とりあえずリフレクションとか。
というか、C++/CLIだよな?
149:デフォルトの名無しさん
08/05/20 22:53:51
ええと、なにぶん知識が浅いので
^ と * ←を使い分けや gcnew をつかってるのでC++/CLIのはずです
150:デフォルトの名無しさん
08/05/20 23:29:33
○青春のスポーツテスト準備編
場面は中学2年時。僕は運動音痴だ。
明日はスポーツテストだ。僕はみなに押し付けられて、学校の授業後に
ライン引きをやっていた。僕のほかには女子のヤンキーぽい生徒が2人だ。
なぜ、こんな連中が仕事をしているかと思えば、退屈だし面白そうだから
という話だ。
50m走のラインを引き終えると、ヤンキー女子の2人が走ってみようと言い出し2人は走っていた。「あ~、つかれた~」といいながら座っている。でも満足げだ。
しばらくすると、「おい、おまえも走れよ!」といいだし、ぎゃあぎゃあ騒いでいる。
僕は運動音痴なので走り方もおかしいからひどく嫌だったが、後がこわいので走ることにした。
よ~いどんで思い切り走ってみる。しかし、女子2人は大声で笑い転げている。
僕は必死で走ろうと思えば思うほど、フォームが乱れるのがよくわかる。
どうしようもなく恥ずかしい。。しかし、次の瞬間転んでしまった。
女子2人は寄ってきて僕をからかう。そのとき、思春期にありがちな突如の勃起が襲ってきた。
どうしようもなく半ズボンがテントを張っている。
「キャー、こいつ何?興奮してるの?言葉攻め?」
僕はもうどうしようもなく恥ずかしかった。しかし、女子はすでになんらかの経験済みらしく、
慣れている様子で「おい、どうしたんだよ?」とかいいながら僕のナニをけったりしてくる。
僕はとまどいながらも恥ずかしさをぐっとこらえていた。
その後も「運動は音痴だけど、こっちはすげえじゃん」とかいってぎゃーぎゃー騒いでいる。
その後、10分くらいたって、あきたのか笑いつかれて2人は帰っていった。
僕は恥ずかしさと何がなんだかわからないままドキドキしてしょうがなかった。もう何もかんがえるどころではなく、ただうろたえるだけの時間だった。
2人が帰った後、ようやく帰ったかと自分を取り戻す事ができた。しかし
その直後、ドクドクしたものが出てきた。僕の初射精だ。その後もあわてたことはいうまでもない。
151:デフォルトの名無しさん
08/05/20 23:33:41
fatal error C1083: include ファイルを開けません。'iostream.h': No such file or directory
このエラーが出てコンパイルできません。どうすればいいか教えてください。
バージョンはVC++ 2008 EEです。
後、一応参考になりそうなサイトで調べてVC++のディレクトリに下記のパスを追加している状態です
C:\Program Files\Microsoft Visual Studio 9.0\MSDN Express Library
コンパイルしようとしているソース
#include <iostream.h>
void main()
{
char ss[80];
cout << "何か入力してください";
cin >> ss;
cout << "入力は[" << ss << "]です\n";
}
152:デフォルトの名無しさん
08/05/20 23:36:21
すみません。今日も質問させてください。
visual c++ 2008 Expressでwindowsフォームアプリケーションを作成しています。
ビルドしたexeを他の人のマシンで起動しようとすると、
>このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした。
と出て起動できませんでした。
色々調べた結果、以下のとおり解釈しました。
①visual studioがインストールされていない環境で動かすには
静的リンクでコンパイルする必要がある。
②windowsフォームアプリケーション(でデザイナからレイアウトしているような場合)
では静的リンクは不可能
③windowsフォームアプリケーションでしかデザイナは使えない
④デザイナが使えない場合、手打ちで「上からxピクセル。。。」と
コーディングしていくしかない
質問ですが、上記解釈は正しいでしょうか。
ほんのちょっと上のレスでそれらしいやりとりが見受けられましたが、
自分の思っているソレの話のことなのか、いまいち自信がないので、
ご回答のほどよろしくお願いします。
153:デフォルトの名無しさん
08/05/20 23:44:15
>>151
そのサイトは残念ながら参考にならない。
そのソースは古くて、現代C++では通用しない。
#include <iostream>
int main()
{
char ss[80];
std::cout << "何か入力してください";
std::cin >> ss;
std::cout << "入力は[" << ss << "]です" << std::endl;
}
154:デフォルトの名無しさん
08/05/20 23:48:36
>>152
フォームアプリケーションなら相手のPCに.NET Frameworkを入れればいけるはず。
VS 2008だから.NET Framework 3.5だ。
たとえデザイナを使わなかったとしても、
.NET Frameworkを使うC++/CLIアプリケーションである限り
静的リンクはできない。
それにVSが無い環境で使えないなんて使い物にならない機能が
わざわざ用意されているはずがない。正規の手順でランタイムを用意すれば、
VSがない環境でもVC++プログラムは実行できる。
155:デフォルトの名無しさん
08/05/20 23:52:26
VC++初心者です。
GUIの部分は、.NET Framework を使って書いて、
内部的な(例えば)通信の部分は、Win32API で書くってできます?
できたとしたら、それは邪道ですか?
156:デフォルトの名無しさん
08/05/20 23:57:42
全然問題ない。
むしろそういうことができるのがVC++の強み。
157:デフォルトの名無しさん
08/05/21 00:06:11
>>156
ありがとうございます。
そうですか、楽できるとこは楽したかったんです。
MFCも少し勉強し始めてたんですが、中断して C++/CLI の方をやります。
158:デフォルトの名無しさん
08/05/21 00:08:45
>>154
レスありがとうございます。
>フォームアプリケーションなら相手のPCに.NET Frameworkを入れればいけるはず。
>VS 2008だから.NET Framework 3.5だ。
>>133-138の流れを見るに、
相手のPCに.NET Frameworkが入っていることを期待するのを
期待してはいけない、という流れに繋がるという、と理解して正しいでしょうか。。。
>正規の手順でランタイムを用意すれば、
URLリンク(www.microsoft.com)
こちらですね。ご親切にありがとうございます。
まだ詳しく見ていませんが、
これを私がインストールするわけではなく、
相手のPCにインストールしてもらう、という認識でよろしいでしょうか
(煩わしい質問であれば、明日にでも詳しく調べますので返信は不要です)
だとすると、.NET Frameworkの軽いVer、というイメージですかね。。。
数年前に「使用するにはVBxxランタイムが必要です」といった
アプリを見た記憶があります。
それくらいなら、普通に導入してもらえそうですね。
本当に、ありがとうございました。
159:デフォルトの名無しさん
08/05/21 00:21:51
>>153 ありがとうございます!コンパイルできました!
本が古すぎたんですね・・・たしかに今見たら98年出版の本でした
後せっかくなので参考にお聞きしたいんですが、追加記述された std:: と std::endl;っていうのは
なんなのでしょうか?最初は変数の前に付けるものといった、約束事みたいな感じで覚えておけばいいのでしょうか?
160:デフォルトの名無しさん
08/05/21 00:34:40
98年と言えばISOでC++標準が最初に出た年。
endlは結構古くからあったと思うけど、
'\n'の出力に加えバッファのフラッシュを行うもの。
だから時と場合によって\nを直接使うこともある。
どっちにするかはケースバイケース。
std::は名前空間という機能によるもの。
詳しく知りたければ、ググってもいいし、最近の本なら書いているだろうし。
161:デフォルトの名無しさん
08/05/21 00:40:01
なるほど、とりあえず最近の本買ってみます
親切にありがとうございました!
162:デフォルトの名無しさん
08/05/21 00:46:13
>>161
その程度ならググれ。
良い本を探すのは難しい。
163:デフォルトの名無しさん
08/05/21 12:01:42
visual studio 2005のWindowsフォームアプリケーションで作成中です。
文字列の分割がうまくいきません。
String^ data0 = "a/b/c";
wchar_t separator = '/';
array<String^>^ data1 = data0->Split(separator, StringSplitOptions::None);
結果的には配列data1にdata0の要素を格納したいのですが、このやり方ではうまくいきません。
どなたかご教示願いませんでしょうか?
164:デフォルトの名無しさん
08/05/21 12:55:49
>>163
URLリンク(msdn.microsoft.com)
最初の引数は文字じゃなくて、文字の配列だぜ。
165:デフォルトの名無しさん
08/05/21 13:12:24
>>164
ご指摘ありがとうございます。
無事解決しました。
166:デフォルトの名無しさん
08/05/21 21:18:51
>158
それをC++のランタイムなので、それで解決できるなら、静的リンクもできるという話。
C++/CLI、Form使ってるというなら、
URLリンク(www.microsoft.com)
こっちを再配布しないとイケナイ。
167:デフォルトの名無しさん
08/05/21 22:07:04
VC2003 を使っています。
STLのvectorを参考に、自前のクラスにイテレーターっぽい機能を付けてみようとして、
行き詰まっています。
以下のようなコードを書いているのですが、begin() がインライン展開されません。
vectorのbegin() はインライン展開されているみたいで、何が違うのか分からないです。
class B
{
public:
A* aa;
class iterator : public std::iterator<std::random_access_iterator_tag, double, ptrdiff_t, double*, double>
{
A* a;
public:
iterator( A* _a ) : a( _a )
{
};
~iterator( void )
{
};
};
B( void ) : aa( NULL ) {};
~B( void ){};
iterator begin()
{
return( iterator( aa ) );
};
};
168:デフォルトの名無しさん
08/05/21 23:35:23
【初心者歓迎】C/C++室 Ver.54【環境依存OK】
スレリンク(tech板)
169:デフォルトの名無しさん
08/05/21 23:40:38
>>167
まさか何の最適化オプションも指定していないなんてことはないよな。
170:デフォルトの名無しさん
08/05/22 10:59:46
VC++2008EEでツールチップを表示するにはどうしたら良いのでしょうか。
ググってもMFCのCToolTipCtrlしかヒットしません。
例えばステータスバーに収まり切らない文字列を表示したいのです。
.NETで例えるなら statusStrip1.ShowItemToolTips = true; に相当する処理です。
171:デフォルトの名無しさん
08/05/22 11:09:18
>>170
URLリンク(msdn.microsoft.com)
172:デフォルトの名無しさん
08/05/22 15:30:07
>>171
ありがとうございます、取敢えずツールチップを表示する事は出来ました。
MFCの解説もエミュレートしているものは参考になりました。
まだステータスバーの位置のみで表示出来ませんが、もう少し頑張ってみます。
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
static HWND hTooltip;
static TOOLINFO ti;
switch (msg)
{
case WM_CREATE:
InitCommonControls();
hTooltip = CreateWindowEx(0, TOOLTIPS_CLASS, NULL, TTS_BALLOON, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hWnd, NULL, g_hInst, NULL);
GetClientRect(hWnd, &ti.rect);
ti.cbSize = sizeof(TOOLINFO);
ti.uFlags = TTF_SUBCLASS;
ti.hwnd = hWnd;
ti.lpszText = L"ツールチップのテスト";
SendMessage(hTooltip, TTM_ADDTOOL, 0, (LPARAM)&ti);
SendMessage(hTooltip, TTM_SETTITLE, TTI_INFO, (LPARAM)L"タイトル");
SendMessage(hTooltip, TTM_SETTIPBKCOLOR, (WPARAM)RGB(221, 238, 255), 0);
(後略)
173:デフォルトの名無しさん
08/05/22 17:05:34
visual studio 2005のWindowsフォームアプリケーションで作成中です。
textBoxに入力制限をさせたいのですが、やり方がわかりません。
パスワードを入力するときみたいに、入力された文字が強制的に半角英数字になるように
設定させるにはどうしたら良いのでしょうか?
どなたかお願いします。
174:デフォルトの名無しさん
08/05/22 17:35:48
変化があったタイミングで読んで変換する
175:デフォルトの名無しさん
08/05/22 17:47:34
>>173
プロパティのPasswordCharの項目に*
176:175
08/05/22 17:48:21
ああ、半角英数字か・・・
ゴメンゴメン。忘れて
177:デフォルトの名無しさん
08/05/22 18:46:22
IMEをOFFにするか自分でキー入力読む
178:デフォルトの名無しさん
08/05/22 19:46:30
作りたいプログラムがあり、何か言語を習得しようかと考えています
過去にまともなものをプログラムした経験はほとんどなく
HSPでぷよぷよの模写を遊びで作ったことがある程度です
言語としてはCOBOLやC++をかじった程度ポインタなどは概念を踏まえて
あるていど辞書を引きながら書くことはできます。
プログラムに関する技量などは自分で調べたりしながら向上させていこうと思っているのですが
何を本格的に勉強しようか悩みTurbo DelphiかVC++で行こうと考えて
とりあえずVC++2008無償を入れてみたのですが
初めて扱う上に初めての開発環境でソフトの機能や基本的な使い方を習得するだけで挫けそうです
VC++の勉強サイトなどをみても2008の環境で説明されている所が見つけられず
新規ファイルを作る段階でさえCLTとWin32の詳細な意味を調べてテンプレート形式もそれぞれ調べて…
書こうと思ってもサイトで提示されている項目が無いたびに色々調べたり
プログラムを書く時間よりもやりたいことをする手順なんかで悩んでる時間のほうが長いです
開発環境2008で勉強できるところは無いでしょうか_| ̄|○ il||li
179:デフォルトの名無しさん
08/05/22 20:29:33
何を作りたいの?
HSPでぷよぷよ作れたなら結構スキルはあるんじゃない?
180:デフォルトの名無しさん
08/05/22 20:54:02
おとなしくVC++2005とかBC++にしておけば?
今なら腐るほど解説ページあるぞ
181:デフォルトの名無しさん
08/05/22 21:00:43
対象ウィンドウ内の詳細なデータを調べて
仮想でウィンドウの模写的なもの(できるだけの機能を残して)を作ることは出来ないかなと
ただ深く追求していくとプロセスメモリへのアクセスなどクラックの分野になってくるのかな?と思って…
CでもC++でもDelphiでもjavaなんでも他に使いやすい初心者向きのテキストエディタあるやろって話なんですが
覚えたころにはもう使われてませんでしたでは話にならないのでVc++にしようかなぁ…と…
ごめんなさい取り説よめでFAでしたね_| ̄|○ il||li
182:178
08/05/22 21:12:22
↑178です
>>180
レス感謝 win32API使うならCやC++がよさそうなので他のバージョンなりなんなり探してきます
そしておとなしくします!
さようなら2008 ( ´・ω・`)ノ~
183:デフォルトの名無しさん
08/05/22 21:34:20
物凄く不適切な回答を見た。
184:デフォルトの名無しさん
08/05/22 23:17:07
VC++2008EEとVC++2005EEってそんなに違うものなの?
185:デフォルトの名無しさん
08/05/22 23:35:40
両方使ったけど、ほとんど何も変わってない。
186:デフォルトの名無しさん
08/05/22 23:40:54
すみません。今Win32API勉強してるんですが、
WM_INITMENUが呼ばれるタイミングっていうのはどういうタイミングで呼ばれるのですか?
たとえばWM_PAINTは、Windowが隠れたりして再描画が必要なときに呼ばれるみたいですが
WM_INITMENUの呼ばれるタイミングがわかりません。
よろしくお願いします。
187:デフォルトの名無しさん
08/05/22 23:50:39
いえいえこちらこそよろしくお願いします。
188:デフォルトの名無しさん
08/05/22 23:52:24
>>169
Releaseビルドでやってるっす。最適化オプションはO2ですね。
vectorのヘッダーを丸ごとコピーして適当に名前を変えてクラスにしたら、
ちゃんとインライン展開されてるようで。どこがキーなのか分かりません。
189:186
08/05/23 00:07:38
すません。ぐぐったら出てきました。
自己解決です。スレ汚しすません。
190:173
08/05/23 00:35:01
>>177
IMEをDisableにしたら狙った通りに動いてくれました。
ご指摘ありがとうございました。
191:デフォルトの名無しさん
08/05/23 02:29:00
>>186
トレースでもしりゃわかるよ
192:デフォルトの名無しさん
08/05/23 02:41:05
>>188
templateでかけば普通インライン展開されるんじゃなかったけ
193:デフォルトの名無しさん
08/05/23 08:24:12
VC++2003EEとVC++2005EE は結構違うよね
194:デフォルトの名無しさん
08/05/23 09:04:21
エンタープライズだろ
195:デフォルトの名無しさん
08/05/23 09:10:18
なんだ2005よりインストール楽になってるじゃないか
これで挫折するんじゃ救いようがないな
URLリンク(ja.wikipedia.org)
Visual C++ 2008 Express Edition
Visual C++ 2005 Express Editionに続き2007年12月18日から公開されている。
ATLやMFCが付属しない点はVisual C++ 2005 Express Editionと同じであるが、
Windows Platform SDKが標準で同梱されるようになり、
Win32アプリケーションの開発に必要なWindows SDKを別途用意する必要がなくなった。
196:デフォルトの名無しさん
08/05/23 09:14:23
・言語の仕様
・Windowsの仕様
・IDEの使い方
結局これらがわからないとダメなんじゃない?
197:デフォルトの名無しさん
08/05/23 09:17:37
2005と2008だと、細かなところで2008の方が使いやすいな。
俺はInteliSenceで隠れたところがCtrlキーを押すと半透明になるのが一番
便利だな。
198:デフォルトの名無しさん
08/05/23 10:58:15
>>197
知らんかった
199:デフォルトの名無しさん
08/05/23 13:18:18
VC++2005AE購入・インストール済みで、2008EEを入れたんですが、
VC++2008版のATL・MFCは、2005の時のものと大きな差がありますか?
2008EEから2005のMFC・ATL使うと何か弊害が考えられるでしょうか?
200:デフォルトの名無しさん
08/05/23 14:59:45
ライセンス的にどうなのよ
201:デフォルトの名無しさん
08/05/23 16:25:09
VC++2008EEでウィンドウを作成した際にタイトルバーのアイコンが正常に表示されず困っています。
例えばIDI_ICON1と言うアイコンをWNDCLASSEX構造体で
WNDCLASSEX wc;
(中略)
wc.hIconSm = LoadIcon(NULL, MAKEINTRESOURCE(IDI_ICON1));
などと指定しても、実際に表示されるのは吹き出しの中に"?"が書かれたアイコン(TTI_INFOと同じ)になってしまいます。
色深度に制限があるのかと思い24bitカラーのアイコンを使ったり実行ファイル用のアイコンをそのまま指定したりもしましたが症状は改善されません。
何が原因でしょうか。
202:デフォルトの名無しさん
08/05/23 16:38:42
>>201
LoadIcon の仕様を確認するんだ。
1つめの引数NULLはWindows標準のアイコンだぞ。
203:デフォルトの名無しさん
08/05/23 17:13:43
>>202
確かめてみたら追加のアイコンはインスタンスハンドルを指定するんですね…見落としていました。
4bit透過色使用アイコンは作成するソフトによっては色抜けしなくなるようです。
GIMP2で漸く色抜けするアイコンが作成出来ました。
本当にありがとうございました。
204:デフォルトの名無しさん
08/05/23 18:02:03
Windows XP、 visual studio .NET(ver2003)でCを勉強し始めたものですが
コマンドライン引数を指定するようなプログラムのソースを書いて実行しても
ファイル名の指定がありません
Press any ker to continue
と出て、うまく行きません。
どうしたらいいですか?
205:デフォルトの名無しさん
08/05/23 18:08:27
プロジェクトのプロパティのデバッグにコマンドライン引数の指定できるとこないか?
206:デフォルトの名無しさん
08/05/23 18:09:13
>>204
デバッガの使い方の話だよね?
プロジェクトのプロパティの「デバッグ」→「動作」→「コマンド引数」が、
デバッガが動かすプログラムに与えられるコマンドライン引数。
デバッガで動かしてるんじゃないなら、コマンドライン引数を与えてあげてください。
207:デフォルトの名無しさん
08/05/23 18:11:07
>>204
それはなあ、おまえのパソコンがハング恩してるんだよ
208:デフォルトの名無しさん
08/05/23 18:28:18
>>205
>>206
コマンドライン引数を指定する場所は見つかりました。
当のプログラムが、コマンドライン引数で指定したテキストファイルの内容を表示するプログラム
何ですが、引数はテキストファイルの絶対パスでいいんですか?
209:デフォルトの名無しさん
08/05/23 18:29:57
いや、、、それを決めるのは君のプログラムでしょ
210:204
08/05/23 18:36:28
こういうプログラムです。
#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);
}
if((fp = fopen(argv[1], "r"))==NULL) {
printf("ファイルを開くことが出来ません\n");
exit(1);
}
while((ch==fgetc(fp)) != EOF) putchar(ch);
fclose(fp);
return 0;
}
211:デフォルトの名無しさん
08/05/23 18:41:11
絶対パスでも相対パスでもいいよ。
カレントディレクトリがどこかわからないなら、とりあえず絶対パス入れとけば。
212:204
08/05/23 19:09:13
>>211
絶対パスでやっても
ファイル名の指定がありません
となるんですが
213:デフォルトの名無しさん
08/05/23 19:20:55
>>212
ひょっとして hoge c:\(途中略)Program Files\xxx の様になってないか?
上記例だと、"Program" と "Files\xxx" の間の空白がパラメータ区切りとみなされて
argc=3になってしまう。
214:デフォルトの名無しさん
08/05/23 19:21:58
まず argc の値を出してみろよ。
っつーか、VC++使ってんならそのままブレークポイント置いてargvの中身見てみろよ。
215:デフォルトの名無しさん
08/05/23 19:23:28
うまくいかない→質問
じゃあ進歩しないぜ
216:デフォルトの名無しさん
08/05/23 22:29:09
>>204
あれだ!そのプロジェクトと同じフォルダにテキストファイル置いてるか?なら、相対パスでOkだ。
それか、C:\に適当にテキストファイル作ってたとえば、C:\test.txtだったとすると
それで、hoge C:\text.txtってやってみな。それで表示がおかしかったら、if(argc!=2) ←これがおかしい。
argc!=1じゃないのか?なんでargc!=2にしてあるのかよく知らんけど。そこは、コマンドライン引数の個数をかくんだから
1個しか実行プログラムに引数を与えないなら、argc!=1ってしなきゃならん。
まあ、初心者のうちはそうやって七転八倒しながら覚えるって紋だ!!!!!!!!!
がんばりな。俺も、最初はコピー&ペーストすらしらないような人間がプログラムをやろうとしてたんだ。
いまじゃ、7年目で色々できるようになった。まあ、あれだ。がんがれ。
217:デフォルトの名無しさん
08/05/24 01:21:53
>argc!=1じゃないのか?なんでargc!=2にしてあるのかよく知らんけど。そこは、コマンドライン引数の個数をかくんだから
>1個しか実行プログラムに引数を与えないなら、argc!=1ってしなきゃならん。
いやいやいやいやいやいやいや
218:デフォルトの名無しさん
08/05/24 01:31:40
Express Edition には、リソースエディタがないようですが、
これってなくて大丈夫なんでしょうか?
219:デフォルトの名無しさん
08/05/24 02:01:49
リソースファイルを全部手書きしないといけないってだけで、プログラム事態には支障はない。
可能か不可能かってのなら可能。リソースコンパイラはWindowsSDKにも入ってるから。
220:218
08/05/24 02:54:55
>>219
なるほど、そういうことですか。
じゃあ、書き方さえ分かってればいいわけですね。
ありがとうございました。
221:デフォルトの名無しさん
08/05/24 10:13:58
Windowsアプリ作るにはWTLがないと氏ねるそうですが、VC++2008EEでWTL8.0を使おうにもアプリウィザードに組み込めません。
アプリウィザードを使わなくてもWTLは使えますか?
またWikipediaの解説を見るとATLがないとWTLは使えないようですが、これはWindows SDK for Windows Server 2008 and .NET Framework 3.5に含まれていますか?
選択画面を見る限りなさそうですが…。
因みに当然今は全てWin32APIでゴリゴリ書いています。
>>220
ResEditおすすめ。
IDEに関連付ければソリューションエクスプローラからダブクリで呼び出せるよ。
Unicode版もあるし。
URLリンク(www.resedit.net)
222:デフォルトの名無しさん
08/05/24 10:37:36
>>221
そんなオサレ気なものなくたって、Win32APIがあればまだ5年は戦えるね。
223:デフォルトの名無しさん
08/05/24 13:27:50
ATL7.1がWDKの方に入ってるよ。
224:デフォルトの名無しさん
08/05/24 13:41:13
ちなみに、setup80x.js内の8.0を全部9.0に置き換えて実行すれば、
2008EEでも、WTLのウィザード使えるよ。
225:デフォルトの名無しさん
08/05/24 14:06:23
URLリンク(support.microsoft.com)
226:221
08/05/24 16:50:33
>>222-225
ありがとうございます。
取敢えずヘッダーとx86ライブラリをインスコしてからJScriptのファイルを書き換えて実行し、ウィザードが正常に動作する事を確認しました。
しかしその生成されたコードをそのまま実行してみたら、
fatal error C1083: include ファイルを開けません。'atlbase.h': No such file or directory
となってしまいました。
WTLとWindows SDKのインスコ先を見てもatlbase.hはありません。
WinSDKでまだ何か足りないものがあるのでしょうか。
227:デフォルトの名無しさん
08/05/24 17:06:31
だからWDKに入ってるつーの。
228:デフォルトの名無しさん
08/05/24 18:31:23
すみません。Win32APIっていうのを勉強してるんですが、文字列変数というか
char型の配列名にszなんたらかんたらっていう変数名が多いです。たとえば
szClassName[] とかszText[]とか。。szってなんですかね??
あと、int型の整数を宣言するだけで、初期値を代入せずにいきなり使ってるんですが、
こういうのってありなんですか?なんか、大昔C言語を勉強したときはint i=0;と初期化してからじゃないと
コンパイルエラーが出た覚えがあるんですが。。
すみませんが、おしえてちょんまげ。
229:デフォルトの名無しさん
08/05/24 18:34:13
>>226
Windows Driver Kit
URLリンク(www.microsoft.com)
サインインはいるが、Microsoft Connect Web サイトから無料で、isoイメージをダウンロードできる。
インクルードファイルパスに、"(DDKフォルダ)\inc\crt\atl71"
ライブラリファイルパスに、"(DDKフォルダ)\lib\atl\i386"を追加。
ExpressでのWTLウィザードは、そのままだとATL3.0用になるので、
stdafx.hの中の
#define _WTL_SUPPORT_SDK_ATL3
をコメントアウト。
なぜかATL7.1は、atlthunk.libがライブラリ指定されてないので、
リンクでエラーが出るなら、
リンカの追加の依存ファイルに、atlthunk.libを付ける。
いちいち、書き換えるのが面倒だったら、
WTLテンプレートファイルの方のstdafx.hを書き換えるか、
default.jsの
// Use ATL3 from SDK for VS2005 Express
の項をコメントアウトするといい。
// Linker settingsのところに、
LinkTool.AdditionalDependencies="atlthunk.lib";
で、atlthunk.libをリンク指定できる。
中途半端でほったらかしなWTLなんか使うより、
ATLだけでゴリゴリやった方がいいと思うけどね・・
230:デフォルトの名無しさん
08/05/24 18:41:28
>>228
szはsが文字列、zがナル文字終端を表す。
いわゆるシステムハンガリアンというやつ。詳しくはググれ。
初期値を書かない変数は、あとで使うときに代入しているはず。
うっかりその代入を忘れたときには、
下手に0などで初期化しておくよりも、未初期化のままのほうが検出しやすいとされる。
そのため、(Win32プログラムに限らず)Cでは、
むやみに0初期化するべきでないというのが最近の傾向のはず。
もちろん、適切な値で初期化できるときはするべき。
未初期化変数はバグの温床だから、できればないほうがいい。
231:228
08/05/24 18:44:44
>>230
どうもありがとうございます。よくわかりました。sが文字列でzがナル文字なるほろ。。
初期化についてもよくわかりました。
本当にどうもありがとうございました。
232:デフォルトの名無しさん
08/05/24 19:23:22
> 個人用に設定されたコンテンツやベータ プログラムへの参加の機会をご提供するために、Microsoft Connect 上での皆様の活動がモニターされ、個人情報にアクセスされる場合があることについても同意するものとします。
この文章の示す個人情報とは何なのでしょうか。
URLリンク(privacy.microsoft.com)
を読んでも特定出来ず、不安で登録出来ません。
233:デフォルトの名無しさん
08/05/24 20:02:29
こんなところで聞かなくても
電話かメールで問い合わせできるはず
234:デフォルトの名無しさん
08/05/24 21:35:42
すみません質問なんですが、VC++で、
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e){
double A,B,C;
A = double::Parse(textBox1->Text);
B = double::Parse(textBox2->Text);
C = A + B;
textBox3->Text = "答えは" + Convert::ToString(C) + "です";
}
こんなプログラムを作ったのですが、textbox1と2に何も入れないでボタンをクリックすると
エラーが出てしまいます。textbox1と2に0をあらかじめ代入する方法も試したのですが、見栄えが悪いので、
何も数字が入力されていないとき、「入力してください」などのダイアログを表示する方法を教えてください。
235:デフォルトの名無しさん
08/05/24 22:27:35
>>234
textBox1->Textが""ならdouble::Parseしないで、
入力を求めるMessageBoxでも表示すればいい。
236:デフォルトの名無しさん
08/05/24 22:28:43
>>232
実際に何かやろうとすれば、
メールアドレスとか住所氏名を入力する欄が現れる。
237:234
08/05/24 23:21:55
>>235
素早い回答ありがとうございます。
if(textBox1->Text == ""){MessageBox::Show("数字を入力してください");}
else{A = double::Parse(textBox1->Text);}
if(textBox2->Text == ""){MessageBox::Show("数字を入力してください");}
else{B = double::Parse(textBox2->Text);}
こんな感じで出来ましたが、結局Cを計算しようとしてしまいます。
Aが入力されていない時点で、プログラムを停止させることは出来るのでしょうか?
238:デフォルトの名無しさん
08/05/24 23:38:55
>>237
全然内容読んでないけどAが入力されていなければexitすれば良いんじゃないかな?
239:デフォルトの名無しさん
08/05/24 23:56:19
>>237
return
240:デフォルトの名無しさん
08/05/24 23:59:21
>>239
return 0; でやってましたw
大変参考になりました。また機会があればご指導お願いします。
241:デフォルトの名無しさん
08/05/25 04:19:54
すみません、とあるライブラリを使用してプログラムを組んでいるのですが、
_ASSERTを使おうと思ったら
LNK2019: 未解決の外部シンボル _CrtDbgReport が関数 "void __cdecl ほにゃらら"(ちょめちょめ)で参照されました。
というようなリンクエラーが出てしまいました。
crtdbg.hはインクルードしてます。
ためしに新規で作成してみたプロジェクトでは_ASSERTが使えました。
何が原因なのでしょう?
エラーの詳細内容を読んでも理解できませんでした。
ライブラリを使用する際にリンクの追加など、
プロパティを何箇所か変更しています。
環境は Microsoft Visual Stdio. NET 2003 です。
242:デフォルトの名無しさん
08/05/25 08:25:43
原因は分からないけど、リンクの問題っぽいから
リンクの設定をうまくいったのと同じにしたら?
243:デフォルトの名無しさん
08/05/25 08:28:18
>>241
ランタイムライブラリがデバッグ版になってないんじゃないの?
C/C++→コード生成
244:241
08/05/25 14:57:31
>>242-243
レスサンクスです。
>243
>ランタイムライブラリがデバッグ版になってないんじゃないの?
まさしくこれでした。
プロパティをいじっている時に構成を「すべての構成」にしていたので、
ランタイムライブラリをマルチスレッドに変えた時にも
リリース版のマルチスレッド設定にしてしまってました。
ありがとうございました。
245:デフォルトの名無しさん
08/05/25 16:54:36
eMbedded Windows CE Visual C++を入れたら
「Virtual PC/Windows CE エミュレータ」で、 Windows が不安定になるのが発生します。
ってメッセージが起動のたびに出るようになって、修復する方法を書いてあるページを見つけたんですが、
URLリンク(support.microsoft.com)
日本語の意味が分かりません。ここの解決方法をどなたか翻訳してください。
246:デフォルトの名無しさん
08/05/25 19:31:08
boot.iniに/executeオプション足せ、って書いてある。
247:デフォルトの名無しさん
08/05/25 19:52:03
C++を最近始めたんですが、何度プログラムを組んでも言葉の意味がなかなか分からなくてこのままで大丈夫かなぁと思っています。
最終的にはゲームを作ることを目標にしてるんですが、このままで大丈夫でしょうか…不安で仕方がないです。
248:デフォルトの名無しさん
08/05/25 22:43:50
>>247
振り向いたら負け
249:デフォルトの名無しさん
08/05/26 00:36:56
ある画像A.bmpと、その背景にあたるB.bmpが別々にあって、
A.bmpを上に、B.bmpを下にして1枚の絵に表示させる
といった内容のモノを作りたいのですが(画像処理?)何か参考になるソース、もしくはHPがあったら教えていただけませんか?
250:デフォルトの名無しさん
08/05/26 03:52:45
単純にB,Aの順番で描画すればいいんじゃない?
251:デフォルトの名無しさん
08/05/26 07:40:58
すみません、質問は「リストのインデックスが範囲を超えています(0)」というエラー
が出るのですが。この(*)の*の数字の詳細が知りたいのですが。(-1とか6とかいろいろある)
よろしくお願いします。
252:デフォルトの名無しさん
08/05/26 07:52:02
だから板違いだっつーの。
253:デフォルトの名無しさん
08/05/26 08:17:17
なんだ 同じかww
254:デフォルトの名無しさん
08/05/28 16:01:46
引数のところで書かれてる__outの目的がよくわかりません。
OUTというマクロはプリプロセッサで無かったことにされてるみたいですが・・・
検索してみても、日本語で解説してあるページを見つけられませんでした。
どなたかお願いします。
255:デフォルトの名無しさん
08/05/28 17:02:58
日本語で質問お願いします。
256:デフォルトの名無しさん
08/05/28 18:08:23
エスパーすると、その引数のところに結果を返しますよ
ということをプログラマに知らせるだけの記号。
257:デフォルトの名無しさん
08/05/28 18:24:22
>>254
__outは/analyzeオプション用
258:デフォルトの名無しさん
08/05/29 00:35:26
すみません、教えてください。
win32環境で作ったVC++プロジェクトをマネージ環境に移行するためにはどうすればいいのでしょうか。
.NET用プロジェクトを作ってソースを1つずつ移していくしかないのでしょうか?
259:デフォルトの名無しさん
08/05/29 08:43:43
ctrl+a
260:デフォルトの名無しさん
08/05/29 23:15:29
質問です
2008VC++で、GetWindowTextWで取得したCStringをdoubleに変換したいのですが、うまくいきません
コードの書き方を教えてください
261:デフォルトの名無しさん
08/05/29 23:41:08
どう書いて、どううまくいかなかったのか書け。
262:デフォルトの名無しさん
08/05/29 23:46:42
GetWindowTextW→CString→doubleのどの段階でうまくいかないのだ?
CStringよりもstd::stringにしとけ
263:デフォルトの名無しさん
08/05/29 23:50:39
double AA,BB,CC;
CString str,AAA,BBB,CCC;
GetDlgItemText(IDC_EDIT1,AAA);
GetDlgItemText(IDC_EDIT2,BBB);
AA = atof( (const char*)AAA.GetBuffer(0));
BB = atof( (const char*)BBB.GetBuffer(0));
CC = AA + BB;
CCC.Format(_T("%f"),CC);
str = CCC +_T("が表示されます。");
SetDlgItemText(IDC_EDIT3, str);
こんな風にしたんですが、EDIT1に11.11、EDIT2に22.22を入力すると
"3.000000が表示されます。"と表示されてしまいます
264:デフォルトの名無しさん
08/05/29 23:56:48
うにコードで(const char*)がマズイ
265:デフォルトの名無しさん
08/05/30 00:07:49
すみません。何度も申し訳ありません。質問させてください。
自作のdllを遅延読み込みしたいのですが、
「LNK2001: 外部シンボル xxxx は未解決です。」となってしまいます。
具体的な手順が理解できなくて、
以下の手順でやってるんですが、何か勘違い、抜けなどありますでしょうか。
①dllはexeが作成されるディレクトリに先に作成されます。
②dllの関数のプロトタイプを列挙しているヘッダファイルを、
exe側でプロパティでパスを追加した上でincludeする。
③リンカの「遅延読み込み」に自作のdll名を入れる
④exe側で「LoadLibrary(dll名)」を行う
⑤exe側でdll内の関数を呼び出す。
よろしくお願いします。
266:デフォルトの名無しさん
08/05/30 00:13:57
遅延読み込みはスタティックリンク
LoadLibraryはダイナミックリンク
267:デフォルトの名無しさん
08/05/30 00:35:27
>>264
ありがとうございます。解決しました
268:デフォルトの名無しさん
08/05/30 00:53:42
>>266
ありがとうございます。
ヒントを頂き、ちょっと調べてみました。
①LoadLibraryを消す
②「追加の依存ファイル」に xxx.lib を追加
③呼び出し側「#pragma comment」とかする必要がありそう
⇒"遅延読み込み"モードだからいらない???
④肝心の.libが見つからない
⇒それくらいはどうにか自分で解決します。。。
早めに間違い・勘違い指摘いただけましたら
すごく助かります。。。
269:デフォルトの名無しさん
08/05/30 01:26:44
6月にマネージャパン、月刊アスキー、週刊アスキーの3誌が賞金総額2000万円の「シストレFXグランプリ」を開催
URLリンク(system-trading.jp)
5月22日より登録受付開始、6月2日よりグランプリ開始の予定。
URLリンク(www.fx-gp.com)
●社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円
URLリンク(www.click-sec.com)
270:デフォルトの名無しさん
08/05/30 10:47:51
VC++ 2005 を利用しています。OS は XP Pro SP2 です。
次のコードを書くと、Debug ビルドでは問題なく動きますが Release ビルドでは
アプリケーションが強制終了することがあります。なぜでしょうか?
// ゼロでクリアされた構造体を用意する関数
template < typename T >
T zeroStruct() { T t; memset( & t, 0, sizeof( T ) ); return t; }
void main() {
A a = zeroStruct< A >(); // A は構造体の型
}
271:デフォルトの名無しさん
08/05/30 12:17:48
>>268
dllをスタティックにリンクするにはdllimportを使う。externだけじゃ呼べないよ。といってみる。
自作dllを作ったならdllexportを使ってると思うからその逆の使い方だ。
272:デフォルトの名無しさん
08/05/30 12:18:40
またmemset()厨か。
273:デフォルトの名無しさん
08/05/30 13:20:30
>>270
それだけの用途なら、そんな滓みたいなテンプレート関数作る必要なんてさらさらないじゃん。
A a = {0}で充分。
274:270
08/05/30 13:52:27
>>273
A a = {0} なんて書き方があったんですか。ありがとうございます。
わざわざ関数呼ばずとも、こちらを使った方が断然良いですね。
275:デフォルトの名無しさん
08/05/30 14:09:04
CHAR chStr[128];
wsprintf(chStr , "インスタンスハンドル : %d" , hInstance);
MessageBox(NULL , chStr , TEXT("Kitty on your lap") , MB_OK);
URLリンク(wisdom.sakura.ne.jp)
これやると
'MessageBoxW' : 2 番目の引数を 'CHAR [128]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
っていわれるんだけど・・。なんか昔やってたソースを2008でやろうとしても同様にエラーがでる・・。
関数にcharのlong pointerの引数があったらそこに単純に"abc"ってやってもpointerわたしてるんだよね?
276:デフォルトの名無しさん
08/05/30 14:27:35
作者じゃないから TCHAR じゃなくて CHAR を使う意図がわからない
下の方ではTCHAR 使ってるし
277:デフォルトの名無しさん
08/05/30 14:31:29
だからそんな間違いや過去の遺物だらけのサイトで勉強しちゃダメだって。
278:デフォルトの名無しさん
08/05/30 15:57:13
初心者には良いか悪いか分からないし(´・ω・)
279:デフォルトの名無しさん
08/05/30 17:43:44
VC++ 2008で、windowsフォームアプリケーションのスケルトンを作成したところ、
LRESULT CALLBACK WndProc(HWND, UINT , WPARAM, LPARAM){
}
みたいなメインループ部分が見当たりません。
メインループさせたい場合、どのように書けばよいですか?
280:デフォルトの名無しさん
08/05/30 17:46:47
とりあえず、.NET Frameworkについて勉強しようか。
281:デフォルトの名無しさん
08/05/30 17:59:23
>>279
Win32アプリケーションのプロジェクトを作ればいいと思うよ。
282:デフォルトの名無しさん
08/05/30 19:07:50
charとかLPSTRとかstrcmpとかstrcatとか_atoi_sとか
C#から入ってきたので文字列周りの処理が死ぬほどムズイ
文字列処理に特化して説明してるHPとかありませんか
283:デフォルトの名無しさん
08/05/30 19:12:31
ソース読んでデバッガでトレースすれば理解できるよ
284:デフォルトの名無しさん
08/05/30 22:41:49
lexical_castで。
285:デフォルトの名無しさん
08/05/31 00:34:25
VBAの処理時間短縮のためVC++でDLLを作って処理させようと思ってます。
VC++はいじったことないのでお勧めの書籍あるいはURL等ありましたら
教えて貰えませんか。
286:デフォルトの名無しさん
08/05/31 00:42:18
>>285
とりあえず本屋で適当に選んできなよ
287:デフォルトの名無しさん
08/05/31 07:57:34
>>282
std::stringを使えばいい
288:デフォルトの名無しさん
08/05/31 11:49:37
>>279
CLR使わなきゃいい
289:デフォルトの名無しさん
08/05/31 12:33:09
リソースキットツールってのは必要なの?
290:デフォルトの名無しさん
08/06/01 01:31:59
gccの拡張機能のweakシンボルと同等のことを
VCでするにはどうすればよいでしょうか?
291:デフォルトの名無しさん
08/06/01 19:13:16
2008なんですがコマンドラインからの引数を受け取って
動作をデバッグするにはどうしたらいいんでしょう?
具体的には
int main( int argc, char** argv ){
の引数をいろいろ変えながらデバッグしたいんですが・・・。
292:デフォルトの名無しさん
08/06/01 19:16:26
と、思ったんですが、すごい勢いで解決しました。
すごいよMSDNむすどんむすどん。
293:デフォルトの名無しさん
08/06/01 20:01:16
Thumb.dbのフォーマットを解説してるサイトとかって存在しますか?
294:デフォルトの名無しさん
08/06/01 23:59:57
VC++ 2005 でsprintfを使うと警告が出るのですが。
sprintf(msg1,"%d:%s",no,str);
警告 1 warning C4996: 'sprintf' が古い形式として宣言されました。 c:\_将棋\fj-sai\fai001\fai001\メッセージ送信1.cpp 33
この警告を出さなくする方法ありませんか?
295:デフォルトの名無しさん
08/06/02 00:07:29
日本語ファイル名かよw
296:デフォルトの名無しさん
08/06/02 00:14:43
>>294
#pragmaで抑制できたはず。
詳しくはググれ。
297:デフォルトの名無しさん
08/06/02 00:15:09
>>294
sprintfを使わずに、boost::formatを使う。
298:デフォルトの名無しさん
08/06/02 00:21:24
>>296
出来ました.ありがとうございます。
>>297
調べてみます。ありがとうございました。
299:デフォルトの名無しさん
08/06/02 00:42:52
>>291
300:デフォルトの名無しさん
08/06/02 00:47:04
>>291
メニュー[プロジェクト] -> プロパティ -> デバッグ -> コマンド引数
を変更すればおkなはず。
面倒なときはイリーガルだけど、
#ifdef DEBUG
char* argv_[2] = { "application", "" };
argc = 2;
argv = argv_;
#endif
みたいにでばっぐしてみればどう?
301:デフォルトの名無しさん
08/06/02 06:42:55
>>292
302:デフォルトの名無しさん
08/06/02 07:12:08
>>299
できるよ。
以上。
はい、次。
303:MFC始めて2日目
08/06/02 10:42:54
ファイルの読み込みをやろうとして
void CDeepPurpleDoc::Serialize(CArchive& ar)
{
CString ss;
// CEditView は、すべてのシリアル化を処理するエディット コントロールを含んでいます。
reinterpret_cast<CEditView*>(m_viewList.GetHead())->SerializeRaw(ar);
if(ar.IsStoring())
{
ar << ss;
}
else
{
ar >> ss;
}
}
既存のテキストファイルを開こうとしたら
予期しないファイル形式
というエラーが出た。
シリアライズってなんだ?
304:デフォルトの名無しさん
08/06/02 11:12:43
URLリンク(www.vipper.org)
VC++2008で、BとCの下のスピンボタンの値を足し算して、Aの下の部分に表示したいんですが
どのように記述すれば値を取得して計算・表示できるのでしょうか?
305:デフォルトの名無しさん
08/06/02 12:21:03
スピンボタンの値を取得するサンプルならそこらじゅうにあるだろ
306:デフォルトの名無しさん
08/06/02 15:37:34
>>304
Bの下、Cの下、それぞれのスピンボタンの値を取得し、それらを加算してから文字列に変換し、
Aの下に直接書き込むか或いはAの下に配置したスタティックテキストを書き換えれば宜しい。
307:デフォルトの名無しさん
08/06/02 20:37:05
シリアライズってのは、「専用形式」で「なるべく簡単に」
オブジェクトを保存・読み込みする、みたいなコンセプト。
そこいらにあるファイルをデシリアライズするのは大変。
308:デフォルトの名無しさん
08/06/02 23:28:04
>>271
遅くなりましたが、今、無事できました!
コンパイルもリンクもうまくいき、
ちゃんとdll内の関数も呼び出せました!
本当に、ありがとうございました。
309:デフォルトの名無しさん
08/06/03 21:41:31
CStringってすごいな。これを使えば2バイト文字の扱いが楽だな。
これはMFCなのか、ATLなのか。
310:デフォルトの名無しさん
08/06/04 00:57:20
今は共用になってる
311:MFC始めて3日目
08/06/04 14:32:28
void CDeepPurpleDoc::Serialize(CArchive& ar)
{
reinterpret_cast<CEditView*>(m_viewList.GetHead())->SerializeRaw(ar);
BYTE* pByteBuff;
CEditView* pEditView = ((CEditView*)m_viewList.GetHead());
if(ar.IsStoring())
{
CFile* pFile = ar.GetFile();
UINT size = (pEditView->GetEditCtrl()).GetWindowTextLengthA();
pByteBuff = new BYTE[size + 1];
UINT len = (pEditView->GetEditCtrl()).GetWindowTextA((LPTSTR)pByteBuff,size + 1);
pByteBuff[len] = 0;
pFile->Write(pByteBuff,len);
}
else
{
}
delete pByteBuff;
}
とやってファイルに書き込むと2回書き込まれる。
MFCがなにかやってるのか。
312:デフォルトの名無しさん
08/06/04 14:42:10
SerializeRaw したあと同じものを自分でも書いてんの?
313:MFC始めて3日目
08/06/04 15:07:56
SerializeRawの1行を削除したらエラーになった。
(ソースコードの else の行に矢印がついてプログラムがストップ)
314:MFC始めて3日目
08/06/04 15:16:44
うまくいった。
(313 はデバッグの機能が働いただけだった)
>>307
>>312
ありがとう。
315:デフォルトの名無しさん
08/06/04 19:30:51
VC++使い始めて間もないのですが、質問させてください
現在MSVC++2005ProのMFCを用いてソフトを作ろうと考えております
一次元での温度分布をグラフィック表示するものを作ろうと考えていて
物体の二点の温度を入力した際に、その間を一次関数的に温度が増減すると仮定した上で
その温度分布をモノクロの色の濃さで表現するようなものを作りたいと思っています
このようなグラデーション表示を描画するためにはどのようにすればよいのでしょうか?
よろしくお願いいたします。
316:デフォルトの名無しさん
08/06/04 19:58:18
static void CALLBACK TimerProc(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2){}
の中で、同クラス内のフィールドを参照したい場合どうすればいいの?
ふつーに参照しようとすると、
関数呼び出しには引数リストがありません。
って言われるんだけど・・・
317:デフォルトの名無しさん
08/06/04 20:57:54
非staticメンバにアクセスしたいなら、クラスのインスタンスをどうにかして得る。
318:デフォルトの名無しさん
08/06/04 21:17:41
そのためのDWORD dw1とDWORD dw2
319:デフォルトの名無しさん
08/06/04 22:01:21
使用環境VC++2008 Expressで、win32コンソールアプリケーションのプロジェクトです
下記のコードをビルドして実行すると点数の表示が-184563みたいに変な数字になってしまいます
どうすればちゃんとしたのを作れるでしょうか?
Visual Studio 2008 コマンドプロンプトからコンパイルすれば思ったとおりの結果になります
#include<stdio.h>
int main(void)
{
int score;
printf("点数を入力してください:");
scanf_s("%d",&score);
if (score > 100) score = 100;
printf("あなたの点数は %d 点です。");
return 0;
}
320:デフォルトの名無しさん
08/06/04 22:18:11
printf("あなたの点数は %d 点です。",score);
321:デフォルトの名無しさん
08/06/04 22:58:10
>>320
できました
ありがとうございます
322:デフォルトの名無しさん
08/06/04 23:10:32
C言語なら俺に聞け(入門篇) Part 29
スレリンク(tech板)
323:デフォルトの名無しさん
08/06/05 11:29:24
>>317 どうやるの?
324:デフォルトの名無しさん
08/06/05 20:28:29
CStringってATLでも使えるようになったんだ
MFCじゃなくてもOkになってたとは
325:デフォルトの名無しさん
08/06/05 21:41:55
>>323
CALLBACK関数には、クッキーと呼ばれる自由に使っていいパラメータが用意されている場合が多い。そこにインスタンスのポインタを乗せて渡したりする。
326:デフォルトの名無しさん
08/06/05 22:13:37
textBoxに内部処理で得たchar型の2次元配列を表示させるにはどうしたらよいのでしょうか?
textbox->text = 配列変数名
だと型がcharをstringにできないとコンパイルエラーが出てしまいます。
環境は.Net2008です。
よろしくお願いします。
327:デフォルトの名無しさん
08/06/05 22:19:44
>>326
どんな風に出したいのか詳細に決めたら、一気にプログラムを書く
328:326
08/06/05 22:42:30
今思いついたんですけど、
ループで1文字ずつstring型変数に入れて文字列にしてからtextBoxに
入れるしかないんですかね?
329:デフォルトの名無しさん
08/06/05 23:56:16
整形しなくてよければまとめて出せるだろ
文字列だって配列なんだし
330:デフォルトの名無しさん
08/06/06 00:58:38
そもそもなんで二次元配列なんだよ
331:326
08/06/06 01:07:32
読み込むデータが最大64個で
4ビット区切りの16進数が12個並んでるからです。
EE000FF00002みたいな。
それをテキストボックスに1行ごとに表示させたいんです。
332:デフォルトの名無しさん
08/06/06 02:02:58
VC++っていうよりも、C/C++の話なのかもですが。
自作のクラスを.cpp/.hで作って、
それらのファイルをプロジェクトには追加せずに、
.hをインクルードするだけで使うことはできませんか?
イメージは、stdio.hをインクルードしてprintfを使う、みたいな感じで。
ツール→オプション→VC++ディレクトリ、でパスは通してあります。
宜しくお願いします。
333:デフォルトの名無しさん
08/06/06 02:09:07
ライブラリにする