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

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

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう。
・できるだけ具体的に。

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

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

過去スレ、関連スレなどは>>2-5辺り。
2デフォルトの名無しさん:2008/05/07(水) 23:34:50
3デフォルトの名無しさん:2008/05/07(水) 23:35:24
4デフォルトの名無しさん:2008/05/07(水) 23:36:02
【関連スレ】
■MFC相談室 mfc18d.dll■
http://pc11.2ch.net/test/read.cgi/tech/1185917008/l50
Win32API質問箱 Build57
http://pc11.2ch.net/test/read.cgi/tech/1189255282/l50
【C++】 DirectX初心者質問スレ Part14 【C】
http://pc11.2ch.net/test/read.cgi/tech/1182351826/l50
【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 131
http://pc11.2ch.net/test/read.cgi/tech/1170338926/l50
C++相談室 part56
http://pc11.2ch.net/test/read.cgi/tech/1185377587/l50
C/C++の宿題を片付けます 95代目
http://pc11.2ch.net/test/read.cgi/tech/1187944110/l50
【初心者歓迎】C/C++室 Ver.42【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1188748806/l50

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

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

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



テンプレ終わり。
7デフォルトの名無しさん:2008/05/07(水) 23:39:53
前スレ>>6-7をテンプレに入れてみた。
8前スレ971:2008/05/07(水) 23:40:00
自己解決しました...orz
2つの環境でうまくいかないのでおかしいなあと思っていたのですが、
1つ目の環境では32bit環境であるにもかかわらず64bitのライブラリをリンクしようとしていたミス
2つ目の環境ではmulti processorのライブラリを指定しているにもかかわらずsingle processorのライブラリディレクトリを指定していたミス
という非常にアホなミスで単にライブラリのリンクが失敗しているだけでした...
ご丁寧に呼び出し規約のことを考えていただいたみなさま、どうもありがとうございました。
dumpbinででてくるものが_付きでないものだから、呼び出し規約のせいじゃないかと思考が凝り固まってしまったのが敗因でした…

蛇足ですが前スレ>>990-992は自分じゃないですorz
みなさまどうもありがとうございました。
9C++ コンパイラ:2008/05/08(木) 02:04:45

Microsoft Visual C++ Toolkit 2003
ftp://195.252.112.9/programiranje/programski-jezici/VCToolkitSetup.exe

VCToolkitSetup.exe

size 32952488
sha1sum 956c81c3106b97042c4126b23c81885c4b5211f4

edonkey checksum
ed2k://|file|VCToolkitSetup.exe|32952488|c534888fa7605403dcb183d2d15282d1|/

10C++ :2008/05/08(木) 02:05:16

Visual Studio 2005 Express Edition CD イメージからのインストール方法
http://www.microsoft.com/japan/msdn/vstudio/express/maninstall/

Visual C++ 2005 Express Edition 日本語版 サイズ 611,540 KB CRC 0xB3AD1A2F
http://download.microsoft.com/download/8/E/8/8E85D539-2255-4CFD-AA97-440AE6C6F44A/vc.iso




Visual Studio 2008 Express Edition の DVD イメージからのインストール
http://www.microsoft.com/japan/msdn/vstudio/express/maninstall/2008/default.aspx
http://download.microsoft.com/download/F/A/6/FA693F60-97D1-44EB-AC7F-6A44AC42B10E/VS2008ExpressJPNX1428694.iso

11デフォルトの名無しさん:2008/05/09(金) 00:33:05
if(i<-1)
{
return;
}

だとコンパイル通るのに

#define test (-1)

if(i<test)
{
return;
}

だと
if(i<test)
でエラーが出るんだが何がいけないんでしょうか?
12デフォルトの名無しさん:2008/05/09(金) 00:50:48
>11
どんなエラーですか?
見た感じエラーにはならないですけど。
13デフォルトの名無しさん:2008/05/09(金) 00:57:22
VC++で開発しようと考えていて、開発環境で悩んでいます。

VC2003 Standardは持っていて、慣れていていい感じなんですが
プロジェクトをシェアしようとすると、無償で入手可能なVC2005 Expressか
VC2008 Expressがいいように思えます。

・VC2005 Expressはりソースエディタがないらしいけど
 どうやってリソースを作成しているんでしょ?

・VC2008 Expressはマルチスレッドプログラムの
 デバッグができないらしいけど、あきらめるしかない?

作ろうとしているプログラムは、リソースも使うしマルチスレッドでもある。
おとなしく買えってことなのかな?

自分でStanadrdなりProfessionalなりを買うのはいいんだけど
自分しかメンテできないという環境はいやだなぁ、と思って相談しました。
14デフォルトの名無しさん:2008/05/09(金) 01:26:44
デバッグは判らんが、リソースのコンパイルは出来るはずだけど。
仮にできなくても、リソースコンパイラはWindowsSDKに入ってた気がする。
RCファイルは自力で書かないといけないけど。
15デフォルトの名無しさん:2008/05/09(金) 01:42:58
>>12
error C2143: 構文エラー : ')' が ';' の前にありません。

)つけてるのに出ます
わけがわかりません
16デフォルトの名無しさん:2008/05/09(金) 01:46:15
>14
リソースに関しては、一回作れば済む話なので、あまり心配はしてません。

マルチスレッドデバッグは、これがないと厳しいな。

VC2003でマルチスレッドプログラムをデバッグしたときは、
ブレークポイントでちゃんと他のスレッドも止まってくれるのよね。
17デフォルトの名無しさん:2008/05/09(金) 01:49:00
>15
testって定義が重複してたりしないかな?

重複しなそうな別の名前(testtesttestとか)に変えるとどう?
18デフォルトの名無しさん:2008/05/09(金) 16:35:47
VC++のいい解説サイトありませんか?
色々検索してるんですがいいところがみつからなくて・・・
C言語のコンパイルの仕方がわかればいいです
19デフォルトの名無しさん:2008/05/09(金) 16:59:16
コンパイルの仕方って・・・
解説サイト以前の問題じゃないのか?
20デフォルトの名無しさん:2008/05/09(金) 17:13:40
mingwはインストール段階で挫折して
VC++ではどこで挫折するのかと思ったら
コンパイルの仕方を質問してるってどんだけ〜
21デフォルトの名無しさん:2008/05/09(金) 19:10:18
>>17
いろんな名前にかえましたが
やっぱり同じエラーです
プロジェクト作り直したりしてみましたが
だめでつた

Const int とかにすることにしました
ありがとうございやした
22デフォルトの名無しさん:2008/05/09(金) 20:48:46
マクロ使うとエラーがわかりにくいといういい例だね。
23デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/05/09(金) 21:01:56
IE専用のコマンドじゃなかったかな?
25デフォルトの名無しさん:2008/05/09(金) 21:08:36
0
26デフォルトの名無しさん:2008/05/10(土) 01:14:18
>>25
1にしろということだと思って
m_Web.EnableScrollBar(SB_BOTH,1);
に変更しましたが変化なしでしたorz


27デフォルトの名無しさん:2008/05/10(土) 04:36:36
バリバリの初心者ですが、データをtxtファイルから入力するときにそのtxtファイルをどのフォルダに入れればいいかわからなくて困ってます。
どなたかご教授を・・。
28デフォルトの名無しさん:2008/05/10(土) 06:19:58
どこでもいい
29デフォルトの名無しさん:2008/05/10(土) 08:13:51
>23
それ使えるのウィンドウのスタイルとしてスクロールバーを持っている場合だろうな
30デフォルトの名無しさん:2008/05/10(土) 09:50:38
>>28
どどどどこでもいいんすか。
じゃあエラーが出るのは違う要因のようです・・・。
ありがとうござんす。
31デフォルトの名無しさん:2008/05/10(土) 11:28:11
ファイル位置を絶対パスで指定しろ
32デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/05/10(土) 12:06:56
>>29
そうなんですか・・・
ありがとうございます。
他の方法をあたってみます。
34デフォルトの名無しさん:2008/05/10(土) 14:01:27
ソース載せたら回答つきやすいかも。
35デフォルトの名無しさん:2008/05/10(土) 15:46:18
/EHsはどこで定義されていますか?
36デフォルトの名無しさん:2008/05/10(土) 16:34:30
自クラスのプロパティを、外部クラスから取得、設定するために
Setter、Getter のメソッドを用意しているのですが

Setter、Getter 以外のメソッドで
自クラスから自クラスのプロパティにアクセスする場合も
Setter、Getter を経由すべきなのでしょうか
また、経由しないことでデメリット等はあるのでしょうか
よろしくお願い致します
37デフォルトの名無しさん:2008/05/10(土) 16:54:34
値の管理(上限・下限とか)を厳格にやりたいんなら、
経由すればいいし、パフォーマンス優先なら経由しなければいい。
38デフォルトの名無しさん:2008/05/10(土) 17:08:13
>>36
【肥大化】C++ を見捨てたヤシ【複雑化】
http://pc11.2ch.net/test/read.cgi/tech/1201567967/
39デフォルトの名無しさん:2008/05/10(土) 17:13:10
>>37
なるほど、ありがとうございます

>>38
いま覗いてみましたが、
後半のほうでその手の話題になってますね、ちょいと読んでみます
ありがとうございます
40デフォルトの名無しさん:2008/05/10(土) 18:35:42
>>36
自クラス内だから直接触ってもいと思う。
でも、特殊な操作が無くて、Setter、Getter使って困ることが無ければ使ったほうがいいんじゃないかな?Setter、Getterつかっておけば後からの仕様変更が楽ではある。
41デフォルトの名無しさん:2008/05/10(土) 21:48:11
サンプルのソースとかをビルドする時に新しくプロジェクトを作りますが、
サンプルのソースがフォルダで管理されている時にVCでも同じフォルダ構成で管理したいのですが、
いっぺんに同じフォルダ構成にする方法ってありますか?
42デフォルトの名無しさん:2008/05/11(日) 01:15:09
サンプルのディレクトリとファイル構成をそのまま
sample.vcprojのFilterタグとFileタグに出力するスクリプトを書けばいいんじゃないかな
43デフォルトの名無しさん :2008/05/11(日) 04:36:10

●6月にマネージャパン、月刊アスキー、週刊アスキーの3誌が賞金総額2000万円の「シストレFXグランプリ」を開催
http://system-trading.jp/news/index.php?cID=3
[シストレFXグランプリとは]
クリック証券が提供するFXのデモ取引環境を利用して、システムトレードにチャレンジできるFX取引のグランプリです。
お客様ご自身で作成したシステムトレードの機能を評価する「シストレソフト部門」とトレード収益を競う「トレード部門」の2部門構成となっております。

●5月22日より登録受付開始、6月2日よりグランプリ開始の予定。賞金総額2000万円。
  デモトレードの優勝者には賞金三百万円がプレゼントされます。

▼トレード部門
初期資産500万円で、デモ取引のトレード収益を競っていただきます。
http://www.fx-gp.com/about/

▼賞金総額
■社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円
44デフォルトの名無しさん:2008/05/11(日) 09:24:16
>>42
ファイルを追加するようにフォルダを追加することは出来ないのですね。
具体的にはどうしたらいいんでしょう?
45デフォルトの名無しさん:2008/05/11(日) 09:36:10
スクリプト書けないなら手でやった方が早い
46デフォルトの名無しさん:2008/05/11(日) 09:46:00
スクリプトじゃなくても好きな言語でプログラム書けばいい
47デフォルトの名無しさん:2008/05/11(日) 11:55:54
そうですか。。
とても量が多いのですが手でやってみます。
48デフォルトの名無しさん:2008/05/11(日) 13:31:12
逆引きゲームプログラミングという本のサンプルプログラム↓
ttp://www.shuwasystem.co.jp/books/7980/1169-X/1169-X.html
を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デフォルトの名無しさん:2008/05/11(日) 14:41:47
>>48
コンパイラの設定で回避できるか知らんが
できたとしても設定で回避するようなエラーではない。
手作業で修正するべき。
50デフォルトの名無しさん:2008/05/11(日) 15:24:49
printf()で出力したファイルをテキストファイルに書き出すことってできますか?
51デフォルトの名無しさん:2008/05/11(日) 15:31:58
できるけどスレ違い
52デフォルトの名無しさん:2008/05/11(日) 15:32:53
>>50
コマンドプロンプトでリダイレクトして実行って話?
53デフォルトの名無しさん:2008/05/11(日) 15:37:25
VS2005を使っています。
あるプロジェクトをデバッグしようとしたところ、そのアプリは
起動時に必要なディレクトリの存在チェックをしているみたいで
プロジェクト内にはそのディレクトリが存在しないため、エラーに
なって起動出来ませんでした。

そのディレクトリを作ってあげれば良いと思うのですが、プロジェクト配下に
作りたくないので、別の場所にアプリが必要とするディレクトリを作りたいと考えています。
この場合、アプリを起動させる時に、作成した別の場所のディレクトリをスタートアップ時の
ディレクトリとして認識させる方法ってあるのでしょうか?

分かり難い説明で申し訳ありません・・・。
54デフォルトの名無しさん:2008/05/11(日) 15:48:59
>>53
プロジェクトのプロパティのデバッグに作業ディレクトリって項目ないか?
それで起動時のカレントディレクトリは指定できるけど
55デフォルトの名無しさん:2008/05/11(日) 15:55:20
>>53
デバッグの作業ディレクトリを指定すりゃいいんじゃないの?
56デフォルトの名無しさん:2008/05/11(日) 16:24:00
>>54 >>55
おおっ!まさにこれです!
無事に起動する事が出来ました!
ありがとうございました!
57デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/05/12(月) 01:59:29
VCでやれ
59デフォルトの名無しさん:2008/05/12(月) 02:02:33
>>58
言われてみればそのとおりでした。
さっそくそっちをダウンロード&インストールしてきます。
60長いので二つに分割します(1/2):2008/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):2008/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デフォルトの名無しさん:2008/05/12(月) 06:10:31
それVCというか普通のC++の範囲内だろ
63デフォルトの名無しさん:2008/05/12(月) 07:50:19
>>61
再現する最低限のソースを作って張るんだ。
貼られた部分だけを見ると、引き数つきのコンストラクタがないからエラーが出そうなんだが。
64デフォルトの名無しさん:2008/05/12(月) 08:19:26
ぱっと見、問題ないけどなあ
うーん
65デフォルトの名無しさん:2008/05/12(月) 10:09:02
コンストラクタでrandとか・・・
66デフォルトの名無しさん:2008/05/12(月) 10:15:44
>>63
大丈夫、10はtestではなくvectorの引き数だ。

>>61
ディフォルトコンストラクタは最初の一回だけ呼ばれて、後はコピーコンストラクタしか呼ばれない。
つーか、実験目的ならrand()なんか使わずにclock()でも使っておけよ。
67デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/05/12(月) 10:30:17
正直スレ違い
6967:2008/05/12(月) 10:38:27
しまった、すっかりC/C++スレかと。正直すまんかった。

>>61
ってことで、納得できなければ続きはC/C++スレ辺りで。
70デフォルトの名無しさん:2008/05/12(月) 10:40:00
71デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/05/12(月) 13:14:26
ON_COMMAND_EX
73デフォルトの名無しさん:2008/05/12(月) 17:39:21
出来ました。ありがとうございました
74デフォルトの名無しさん:2008/05/12(月) 20:59:17
あるフォームから別のフォームを開いて
その別のフォームにある変数を渡したいのですがどうすればいいでしょうか
75デフォルトの名無しさん:2008/05/12(月) 21:08:36
C++/CLIの話?
7674:2008/05/12(月) 21:09:47
VC++の話です。
77デフォルトの名無しさん:2008/05/12(月) 21:19:20
1. 別のフォームの開き方は分かるけど、変数の渡し方が分からない。
2. 変数の開き方はわかるけど、別のフォームの開き方が分からない。
3. どっちも分からない。
4. その他のことが分からない。

さあどれだ?……と、聞き返さなくて済むよう初めから詳しく書け。
7874:2008/05/12(月) 21:27:50
大変申し訳ないです

別のフォームを開いてそのフォームの中で元のフォーム内の変数を使いたいのですが、
元のフォームから別のフォームを開く際に別のファイルのヘッダをインクルードしているので、
別のフォーム上で元のフォームのヘッダをインクルードできなくて、
そのような状態でどのように変数を渡してやればよいのかがわかりません。


79デフォルトの名無しさん:2008/05/12(月) 21:34:22
その、1個か2個なら単純に渡すための関数作って引数で渡せばいいんじゃないの?
8074:2008/05/12(月) 21:56:29
すみません 渡すための関数が思い浮かびません。
引数で渡せるのであれば、その引数をどうやって渡すかが思い浮かびません。
81デフォルトの名無しさん:2008/05/12(月) 21:57:07
>>76
一応言っておくけど、VC++ってのは言語名じゃなくて
MSの開発ソフトの名前だぞ。
82デフォルトの名無しさん:2008/05/12(月) 22:15:06
>>80
自分でそういう関数を作ればいいだけのこと。
8374:2008/05/12(月) 22:30:33
引数で渡す関数を作れ
⇒その関数の引数はどこから持ってくるの?
⇒そういう関数を作れ

(・д・)
8474:2008/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デフォルトの名無しさん:2008/05/12(月) 22:54:02
テキトーなインターフェースクラスでも作成して、継承してしまえば?
86デフォルトの名無しさん:2008/05/13(火) 01:04:46
>>59ですが、
ここに
http://www.microsoft.com/japan/msdn/vstudio/express/default.aspx
VC2008というのが見あたらないのですが…

Visual C++2008でC言語のコンパイルなどをするにはどうしたらよいでしょうか?
87デフォルトの名無しさん:2008/05/13(火) 01:22:21
拡張子がcppだとc++ cだとcでは
88デフォルトの名無しさん:2008/05/13(火) 01:23:27
つか、C言語をC++でコンパイルしてもほとんど出来る。mainのvoidとかがちょっと違う
89デフォルトの名無しさん:2008/05/13(火) 01:23:49
>>87
>>59ですが、
>>57の方法だと
>[追加]->[新しい項目]->[C++ファイル(.cpp)]
のC++をCに変えればいいのか…と思ったらCファイルが選択できないようなのです。
90デフォルトの名無しさん:2008/05/13(火) 01:29:39
C言語はC++コンパイラでコンパイル出来ますよ CPPでC言語出来ます
91デフォルトの名無しさん:2008/05/13(火) 01:33:45
>>90
そうなのですか?
猫でもわかるプログラミングで、
http://www.kumei.ne.jp/c_lang/intro/no_01.htm
これ↓をコンパイルするとエラーが出るのですが…

#include <stdio.h>
main()
{
printf("This is a test!");
}
92デフォルトの名無しさん:2008/05/13(火) 01:40:02
拡張子を、.cppから.cにするんだよ。
93デフォルトの名無しさん:2008/05/13(火) 01:49:31
>>92
手動で変更するということでしょうか?
してみましたが、
コンパイルやビルドしようとするとエラーが出ます…
94デフォルトの名無しさん:2008/05/13(火) 01:51:01
エラーが出るならエラー内容を張る!
ってかさ、>>57にも書いたんだけど、「拡張子まで書けば*.cにもできる。」ってあるじゃん?

ついでに・・・
猫に書いてあるプログラムが規格に完全に準拠しているなんて思わない!
すべてのコンパイラが規格通りの挙動を正しく行うなんて思わない!
猫に書いてあるプログラムが全てのコンパイラで通ると思わない!
95デフォルトの名無しさん:2008/05/13(火) 01:52:07
あ、解決しました
一つのソースファイルに複数のCファイルやC++ファイルをいれていたためエラーが起こっていたようです。
ご迷惑をおかけしました。
96デフォルトの名無しさん:2008/05/13(火) 01:53:22
>>94
>エラーが出るならエラー内容を張る!
次回からはそうします…
すいませんでした

>ってかさ、>>57にも書いたんだけど、「拡張子まで書けば*.cにもできる。」ってあるじゃん?
あああああ
完全に見落としてました…
すいません

>ついでに・・・〜
ややこしいのですねぇ…
ありがとうございました
97デフォルトの名無しさん:2008/05/13(火) 01:55:15
>>83
だって自分のプログラムなんだから渡したいデータは自分で用意できるはずだろ。
98デフォルトの名無しさん:2008/05/13(火) 06:25:39
>>97
近くに郵便局が無くて荷物を郵送できない人に
なら郵便局まで荷物を郵送すればいいじゃない
99デフォルトの名無しさん:2008/05/13(火) 14:16:47
>>91
int main()
100デフォルトの名無しさん:2008/05/15(木) 18:21:44
最近VC6をさわり始めました。
いま、ダイアログベースでピクチャボックスの画像を[印刷]ボタンを作って印刷しようと思っているのですが、どうにも仕方がわかりません。画像は表示できています。
印刷できるようにするにはどのようなプログラムを組めばいいのでしょうか?
よろしくお願いします。
101デフォルトの名無しさん:2008/05/15(木) 19:48:15
sdiだったらデフォルトで印刷機能が組み込まれてたと思うから
それを参考にしてダイアログベースに実装する
102デフォルトの名無しさん:2008/05/16(金) 22:21:39
ブレークポイントを設定するとそこで止まるわけだけど、
beginthreadexで作ったスレッド内でブレークポイント設定すると
停止したと同時にOSも固まるのはどうにかなりませんか?
103デフォルトの名無しさん:2008/05/16(金) 22:37:16
別にフリーズせんけど
別のバグでIMEとかインテリセンスがらみでフリーズはあるけどそれじゃね?
104デフォルトの名無しさん:2008/05/16(金) 22:44:21
コンソールアプリとして開発したソフトを
気が変わって(ウィンドウを使いたくなったので)通常のアプリにしたくなったんですが
最低限どこを書き換えるといいでしょうか?
単純にmainをWinMainに書き換えるだけだと不十分でした。

105デフォルトの名無しさん:2008/05/16(金) 22:47:37
かなり買えないと無理
106デフォルトの名無しさん:2008/05/16(金) 22:48:08
Windows-PCを買ったけどMacにしたくなったのでロゴだけを張り替えましたが不十分でした。
107デフォルトの名無しさん:2008/05/16(金) 22:54:35
>>104
プロジェクトのプロパティの変更
108デフォルトの名無しさん:2008/05/16(金) 23:00:01
たぶん1から作り直した方が早い
109デフォルトの名無しさん:2008/05/16(金) 23:18:13
>>105、108
ダイアログ程度のウィンドウを表示したいだけなら,
"windows.h"をインクルードして,CreateDialog()でも
呼び出してダイアログを作ればよいだけ。
もっと本格的に作りたいなら,プログラムの構造から見直す必要が
あると思うので、105,108の言うように最初から作った方が
良いと思うよ。
110105:2008/05/16(金) 23:34:08
ありがとうございます。
結局1から作り直し(といっても90%コピペ)しました。
111デフォルトの名無しさん:2008/05/16(金) 23:34:21
112デフォルトの名無しさん:2008/05/17(土) 00:10:22
すみません。家にVisualC++6.0というのがインストールしてあって
兄貴の猫でもわかるWindowsプログラミングという本をやりました。
で、大体どのようなものかわかったのですが、

今日本屋でその続編で猫でもわかるネットワークプログラミングという
本をみつけましたが、第2版とかかれていまして、VisualC++.NET対応と書いてありました。

これは、VisualC++6.0では無理でしょうか?中身はWindows32APIを使うものでして、MFCは無しみたいです。

どうか、よろしくお願いします。
113デフォルトの名無しさん:2008/05/17(土) 00:12:29
Managed C++とかC++/CLIとか.NET Frameworkとかいうキーワードが書いてあったらできないかもしれない
でもWinSockとかを使うだけだったらVC6.0でもいけるよ
114デフォルトの名無しさん:2008/05/17(土) 00:14:28
>>112
いまはVisualC++2008(バージョン9.0)が無料配布されている。これ入れればよい。
115デフォルトの名無しさん:2008/05/17(土) 00:16:01
ここへいけば無料インストールできるよ

http://www.microsoft.com/japan/msdn/vstudio/express/
116デフォルトの名無しさん:2008/05/17(土) 00:25:15
Expressをインストールして勉強しています。
クリップボードを監視したくて情報を探していたのですが、
 ・SetClipboardViewerという関数でクリップボード監視を開始する。
 ・SetClipboardViewerという関数はStanderdEditionを買わないと入らない
  MFCまたはATLが無いと使えない。
と解釈しました。

質問ですが、
上記解釈は正しいでしょうか。
何か別にMFCですとかATLをわざわざ経由しなくても
上記関数と同様のことをしている関数があったりしますでしょうか。

VC++だけのためにVisual Studio買いたくない(´・ω・`)
117デフォルトの名無しさん:2008/05/17(土) 00:25:49
>>113 そうですか。ありがとうございます。とりあえず、買ってきます。
本当にありがとうございます。

>>114-115 同一人物の方ですか?わざわざリンクまで張っていただき
感謝です。一応、それもダウンロードしてみます。

ありがとうございました。明日、本屋いってきます。
118デフォルトの名無しさん:2008/05/17(土) 00:26:26
ちなみに、Visual C++ .NETには2002と2003とあって、それぞれ7.0と7.1に相当する。
この頃のMS製品はなんでも.NETとつけるのが流行だった。
119デフォルトの名無しさん:2008/05/17(土) 00:26:30
ウエ・ミロ(2003〜)
120デフォルトの名無しさん:2008/05/17(土) 00:28:06
>>116
SetClipboardViewerはATLもMFCも関係ない、ただのWindowsの関数。

2005ならWindows SDK入れてVCと統合しろ。
2008なら使えないのはなんか設定がおかしいだけ。
121デフォルトの名無しさん:2008/05/17(土) 00:31:23
>>120
取り急ぎ、感謝申し上げます。
2008です。いろいろと設定を見てみます。
122112:2008/05/17(土) 00:36:16
>>118
どうもありがとうございます。色々あるんですね。
今のVer.2008が9.0っていうのもわかりました。ぐぐったら色々でてきました。

>>119
ねこでもわかるのホームページがかいてありますね。。すごいソースですね。。
徐々にやっていきます。ありがとうございました。
123デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/05/17(土) 00:42:18
2005Express+PlatformSDKでクリップボードをアレコレできるよ。
俺作ったことあるし。
125デフォルトの名無しさん:2008/05/17(土) 01:01:02
>>120
ありがとうございました。
Windowsの関数とおっしゃられたので
Includeディレクトリgrepしてみたら
WinUser.h内に宣言らしきものがあったので
それをIncludeしてるWindows.hをForm1.hに
Includeしてみたら関数を認識するようになりました。
(.cppにIncludeしても認識しないんですね。。。)
ちょっと引数と戻り値の型合わせがうまくいきませんで
コンパイルは通りませんが、関数が使えることがわかって
大きく前進しました。
本当にありがとうございました。
126デフォルトの名無しさん:2008/05/17(土) 01:13:38
>>125
Form1.hとか言ってるし、もしかして.NETかぁ?
あと、Windowsの「関数」じゃなくてAPIな。
127デフォルトの名無しさん:2008/05/17(土) 01:48:40
>>126
Help見たら「Microsoft Visual Studio 2008」って書いてあるので
.NETではないと思います。
「2008だけど、.NET」っていう状況があるんでしょうか。すみません。無知で。
状況がわかりやすいようにデフォルトのForm1って名前に置き換えて
わざわざ書いてしまいました。
自分の解釈がおかしいことがしばしばあるもので。。。
ああ、すいません。xxに関する便利な公開された関数をまとめて
xxAPIっていうものだと思ってました。
勉強することが多すぎますね。

今日は本当にありがとうございました。
128デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/05/17(土) 12:45:33
APIって関数がまとまったものの名称だから
Windowsの関数と言っても問題なし。
130デフォルトの名無しさん:2008/05/17(土) 13:58:26
インターフェースと関数は違うだろ
131デフォルトの名無しさん:2008/05/17(土) 23:08:16
正式な言い方はWin32APIだろうな。
またWin32APIには関数だけじゃなくて型の定義なども含まれると認識している。
132デフォルトの名無しさん:2008/05/18(日) 08:38:29
>>128
.netだと売れないってこと?
133デフォルトの名無しさん:2008/05/18(日) 08:54:50
.netで作られたアプリを実行するには
ユーザが.net Frameworkを用意しなくちゃ行けない
でも、そういうのを用意できるユーザってどのくらいいるのよと
134デフォルトの名無しさん:2008/05/18(日) 09:32:16
商品名に.netがつかなくなっただけで中味は今まで通り.net対応
MSとしては.netを一押ししたいから無償配布のExpressなんかは
デフォルトだと.netのプログラムを作るようになっている
135デフォルトの名無しさん:2008/05/18(日) 13:20:03
>>133
Windowsユーザーのほとんどだろうね。
136デフォルトの名無しさん:2008/05/18(日) 13:26:43
論理的には導入できるけど
.net?なにそれ?ってインストールもできない初心者がいて困る
ってことを言いたいのかと思われ
インストールできるけどヘンなランタイムとか要らないから却下
とかいう自称玄人もいるから困るといいたいのかと思われ

Vistaなら標準で3.5入ってるってから期待してたんだけど
あの体たらくだしなぁ
137デフォルトの名無しさん:2008/05/18(日) 16:37:13
updateで自動的に.NET入らないんだっけ?
138デフォルトの名無しさん:2008/05/18(日) 17:22:29
>>137
商用アプリの顧客は必ずしも、自動updateに任せっ切りじゃないからなあ。
仮想化とか、ローカルストレージ無しの方向に行ってるんで、今後の大規模.NET
アプリはサービス提供の方向と踏んでる。
139デフォルトの名無しさん:2008/05/19(月) 10:59:41
VBも最初はruntimeの絡みで滅茶苦茶な評価だったことを思い出せば、OSの
世代交代さえ順調に進めば.NET FRAMEWORKの配布は問題じゃなくなるんだろう。

ただね、肝心のOSの世代交代がね。どうもね。
MSがVISTAへの交代より.NET FRAMEWORKへの移行を重要と位置づけて、SPで
.NET FRAMEWORKとSuper Fetchを配っちまえば話は早いのにと思わないでもない。
140デフォルトの名無しさん:2008/05/19(月) 13:58:44
その辺コミコミのVistaだろ
ま、失敗してるが
141デフォルトの名無しさん:2008/05/19(月) 14:40:09
>>138
一般ユーザのことだと思うぞ
142デフォルトの名無しさん:2008/05/20(火) 18:52:41
すみません。VisualC++6.0でコンボボックスを使用しているのですが、
リソースエディタでコンボボックスを右クリックしてプロパティで
項目の入力っていう欄があるんです。そこに項目を並べたいんですが、
どのようにならべればいいんですか?

並べたいデータは、
北海道、本州、四国、九州、その他 の5つです。

よろしく><;
143デフォルトの名無しさん:2008/05/20(火) 20:18:55
コード書かなあかんよ
144デフォルトの名無しさん:2008/05/20(火) 20:31:06
沖ノ鳥島を忘れないであげてください
145デフォルトの名無しさん:2008/05/20(火) 21:28:44
ちゃんと竹島(日本領)も入れとけよ。
146デフォルトの名無しさん:2008/05/20(火) 21:37:11
つ 南樺太&千島列島
147デフォルトの名無しさん:2008/05/20(火) 21:51:37
質問です

VC++2008で、親フォームから呼び出した子フォームを非アクティブにする方法で
ShowWithoutActivation
を使うと良いと言うのは分かったのですが、プロテクトプロパティなので、簡単に
変更が出来ません。

変更の仕方or別の方法、を教えてください
148デフォルトの名無しさん:2008/05/20(火) 22:36:03
子フォームを実装しているクラスでパブリックに実装するとか。
とりあえずリフレクションとか。
というか、C++/CLIだよな?
149デフォルトの名無しさん:2008/05/20(火) 22:53:51
ええと、なにぶん知識が浅いので

^ と * ←を使い分けや gcnew をつかってるのでC++/CLIのはずです

150デフォルトの名無しさん:2008/05/20(火) 23:29:33
○青春のスポーツテスト準備編

場面は中学2年時。僕は運動音痴だ。

明日はスポーツテストだ。僕はみなに押し付けられて、学校の授業後に
ライン引きをやっていた。僕のほかには女子のヤンキーぽい生徒が2人だ。
なぜ、こんな連中が仕事をしているかと思えば、退屈だし面白そうだから
という話だ。

50m走のラインを引き終えると、ヤンキー女子の2人が走ってみようと言い出し2人は走っていた。「あ〜、つかれた〜」といいながら座っている。でも満足げだ。

しばらくすると、「おい、おまえも走れよ!」といいだし、ぎゃあぎゃあ騒いでいる。
僕は運動音痴なので走り方もおかしいからひどく嫌だったが、後がこわいので走ることにした。

よ〜いどんで思い切り走ってみる。しかし、女子2人は大声で笑い転げている。
僕は必死で走ろうと思えば思うほど、フォームが乱れるのがよくわかる。
どうしようもなく恥ずかしい。。しかし、次の瞬間転んでしまった。
女子2人は寄ってきて僕をからかう。そのとき、思春期にありがちな突如の勃起が襲ってきた。
どうしようもなく半ズボンがテントを張っている。

「キャー、こいつ何?興奮してるの?言葉攻め?」
僕はもうどうしようもなく恥ずかしかった。しかし、女子はすでになんらかの経験済みらしく、
慣れている様子で「おい、どうしたんだよ?」とかいいながら僕のナニをけったりしてくる。
僕はとまどいながらも恥ずかしさをぐっとこらえていた。
その後も「運動は音痴だけど、こっちはすげえじゃん」とかいってぎゃーぎゃー騒いでいる。
その後、10分くらいたって、あきたのか笑いつかれて2人は帰っていった。

僕は恥ずかしさと何がなんだかわからないままドキドキしてしょうがなかった。もう何もかんがえるどころではなく、ただうろたえるだけの時間だった。
2人が帰った後、ようやく帰ったかと自分を取り戻す事ができた。しかし
その直後、ドクドクしたものが出てきた。僕の初射精だ。その後もあわてたことはいうまでもない。
151デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/05/20(火) 23:36:21
すみません。今日も質問させてください。
visual c++ 2008 Expressでwindowsフォームアプリケーションを作成しています。

ビルドしたexeを他の人のマシンで起動しようとすると、
>このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした。
と出て起動できませんでした。

色々調べた結果、以下のとおり解釈しました。
@visual studioがインストールされていない環境で動かすには
 静的リンクでコンパイルする必要がある。
Awindowsフォームアプリケーション(でデザイナからレイアウトしているような場合)
 では静的リンクは不可能
Bwindowsフォームアプリケーションでしかデザイナは使えない
Cデザイナが使えない場合、手打ちで「上からxピクセル。。。」と
 コーディングしていくしかない

質問ですが、上記解釈は正しいでしょうか。
ほんのちょっと上のレスでそれらしいやりとりが見受けられましたが、
自分の思っているソレの話のことなのか、いまいち自信がないので、
ご回答のほどよろしくお願いします。
153デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/05/20(火) 23:48:36
>>152
フォームアプリケーションなら相手のPCに.NET Frameworkを入れればいけるはず。
VS 2008だから.NET Framework 3.5だ。

たとえデザイナを使わなかったとしても、
.NET Frameworkを使うC++/CLIアプリケーションである限り
静的リンクはできない。
それにVSが無い環境で使えないなんて使い物にならない機能が
わざわざ用意されているはずがない。正規の手順でランタイムを用意すれば、
VSがない環境でもVC++プログラムは実行できる。
155デフォルトの名無しさん:2008/05/20(火) 23:52:26
VC++初心者です。
GUIの部分は、.NET Framework を使って書いて、
内部的な(例えば)通信の部分は、Win32API で書くってできます?
できたとしたら、それは邪道ですか?
156デフォルトの名無しさん:2008/05/20(火) 23:57:42
全然問題ない。
むしろそういうことができるのがVC++の強み。
157デフォルトの名無しさん:2008/05/21(水) 00:06:11
>>156
ありがとうございます。
そうですか、楽できるとこは楽したかったんです。
MFCも少し勉強し始めてたんですが、中断して C++/CLI の方をやります。
158デフォルトの名無しさん:2008/05/21(水) 00:08:45
>>154

レスありがとうございます。

>フォームアプリケーションなら相手のPCに.NET Frameworkを入れればいけるはず。
>VS 2008だから.NET Framework 3.5だ。
>>133-138の流れを見るに、
相手のPCに.NET Frameworkが入っていることを期待するのを
期待してはいけない、という流れに繋がるという、と理解して正しいでしょうか。。。

>正規の手順でランタイムを用意すれば、
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf
こちらですね。ご親切にありがとうございます。
まだ詳しく見ていませんが、
これを私がインストールするわけではなく、
相手のPCにインストールしてもらう、という認識でよろしいでしょうか
(煩わしい質問であれば、明日にでも詳しく調べますので返信は不要です)
だとすると、.NET Frameworkの軽いVer、というイメージですかね。。。
数年前に「使用するにはVBxxランタイムが必要です」といった
アプリを見た記憶があります。
それくらいなら、普通に導入してもらえそうですね。
本当に、ありがとうございました。
159デフォルトの名無しさん:2008/05/21(水) 00:21:51
>>153 ありがとうございます!コンパイルできました!
本が古すぎたんですね・・・たしかに今見たら98年出版の本でした
後せっかくなので参考にお聞きしたいんですが、追加記述された std:: と std::endl;っていうのは
なんなのでしょうか?最初は変数の前に付けるものといった、約束事みたいな感じで覚えておけばいいのでしょうか?
    
     
160デフォルトの名無しさん:2008/05/21(水) 00:34:40
98年と言えばISOでC++標準が最初に出た年。

endlは結構古くからあったと思うけど、
'\n'の出力に加えバッファのフラッシュを行うもの。
だから時と場合によって\nを直接使うこともある。
どっちにするかはケースバイケース。

std::は名前空間という機能によるもの。
詳しく知りたければ、ググってもいいし、最近の本なら書いているだろうし。
161デフォルトの名無しさん:2008/05/21(水) 00:40:01
なるほど、とりあえず最近の本買ってみます
親切にありがとうございました!
162デフォルトの名無しさん:2008/05/21(水) 00:46:13
>>161
その程度ならググれ。
良い本を探すのは難しい。
163デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/05/21(水) 12:55:49
>>163
ttp://msdn.microsoft.com/ja-jp/library/ms131448.aspx
最初の引数は文字じゃなくて、文字の配列だぜ。
165デフォルトの名無しさん:2008/05/21(水) 13:12:24
>>164
ご指摘ありがとうございます。
無事解決しました。
166デフォルトの名無しさん:2008/05/21(水) 21:18:51
>158
それをC++のランタイムなので、それで解決できるなら、静的リンクもできるという話。

C++/CLI、Form使ってるというなら、
http://www.microsoft.com/downloads/details.aspx?familyid=333325FD-AE52-4E35-B531-508D977D32A6&displaylang=ja
こっちを再配布しないとイケナイ。
167デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/05/21(水) 23:35:23
【初心者歓迎】C/C++室 Ver.54【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1210694402/
169デフォルトの名無しさん:2008/05/21(水) 23:40:38
>>167
まさか何の最適化オプションも指定していないなんてことはないよな。
170デフォルトの名無しさん:2008/05/22(木) 10:59:46
VC++2008EEでツールチップを表示するにはどうしたら良いのでしょうか。
ググってもMFCのCToolTipCtrlしかヒットしません。

例えばステータスバーに収まり切らない文字列を表示したいのです。
.NETで例えるなら statusStrip1.ShowItemToolTips = true; に相当する処理です。
171デフォルトの名無しさん:2008/05/22(木) 11:09:18
172デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/05/22(木) 17:05:34
visual studio 2005のWindowsフォームアプリケーションで作成中です。

textBoxに入力制限をさせたいのですが、やり方がわかりません。
パスワードを入力するときみたいに、入力された文字が強制的に半角英数字になるように
設定させるにはどうしたら良いのでしょうか?

どなたかお願いします。
174デフォルトの名無しさん:2008/05/22(木) 17:35:48
変化があったタイミングで読んで変換する
175デフォルトの名無しさん:2008/05/22(木) 17:47:34
>>173
プロパティのPasswordCharの項目に*
176175:2008/05/22(木) 17:48:21
ああ、半角英数字か・・・
ゴメンゴメン。忘れて
177デフォルトの名無しさん:2008/05/22(木) 18:46:22
IMEをOFFにするか自分でキー入力読む
178デフォルトの名無しさん:2008/05/22(木) 19:46:30
作りたいプログラムがあり、何か言語を習得しようかと考えています
過去にまともなものをプログラムした経験はほとんどなく
HSPでぷよぷよの模写を遊びで作ったことがある程度です
言語としてはCOBOLやC++をかじった程度ポインタなどは概念を踏まえて
あるていど辞書を引きながら書くことはできます。
プログラムに関する技量などは自分で調べたりしながら向上させていこうと思っているのですが

何を本格的に勉強しようか悩みTurbo DelphiかVC++で行こうと考えて
とりあえずVC++2008無償を入れてみたのですが
初めて扱う上に初めての開発環境でソフトの機能や基本的な使い方を習得するだけで挫けそうです
VC++の勉強サイトなどをみても2008の環境で説明されている所が見つけられず
新規ファイルを作る段階でさえCLTとWin32の詳細な意味を調べてテンプレート形式もそれぞれ調べて…
書こうと思ってもサイトで提示されている項目が無いたびに色々調べたり
プログラムを書く時間よりもやりたいことをする手順なんかで悩んでる時間のほうが長いです

開発環境2008で勉強できるところは無いでしょうか_| ̄|○ il||li

179デフォルトの名無しさん:2008/05/22(木) 20:29:33
何を作りたいの?
HSPでぷよぷよ作れたなら結構スキルはあるんじゃない?
180デフォルトの名無しさん:2008/05/22(木) 20:54:02
おとなしくVC++2005とかBC++にしておけば?
今なら腐るほど解説ページあるぞ
181デフォルトの名無しさん:2008/05/22(木) 21:00:43
対象ウィンドウ内の詳細なデータを調べて
仮想でウィンドウの模写的なもの(できるだけの機能を残して)を作ることは出来ないかなと
ただ深く追求していくとプロセスメモリへのアクセスなどクラックの分野になってくるのかな?と思って…

CでもC++でもDelphiでもjavaなんでも他に使いやすい初心者向きのテキストエディタあるやろって話なんですが
覚えたころにはもう使われてませんでしたでは話にならないのでVc++にしようかなぁ…と…
ごめんなさい取り説よめでFAでしたね_| ̄|○ il||li
182178:2008/05/22(木) 21:12:22
↑178です

>>180
レス感謝 win32API使うならCやC++がよさそうなので他のバージョンなりなんなり探してきます
そしておとなしくします!

さようなら2008 ( ´・ω・`)ノ~
183デフォルトの名無しさん:2008/05/22(木) 21:34:20
物凄く不適切な回答を見た。
184デフォルトの名無しさん:2008/05/22(木) 23:17:07
VC++2008EEとVC++2005EEってそんなに違うものなの?
185デフォルトの名無しさん:2008/05/22(木) 23:35:40
両方使ったけど、ほとんど何も変わってない。
186デフォルトの名無しさん:2008/05/22(木) 23:40:54
すみません。今Win32API勉強してるんですが、
WM_INITMENUが呼ばれるタイミングっていうのはどういうタイミングで呼ばれるのですか?

たとえばWM_PAINTは、Windowが隠れたりして再描画が必要なときに呼ばれるみたいですが
WM_INITMENUの呼ばれるタイミングがわかりません。

よろしくお願いします。
187デフォルトの名無しさん:2008/05/22(木) 23:50:39
いえいえこちらこそよろしくお願いします。
188デフォルトの名無しさん:2008/05/22(木) 23:52:24
>>169

Releaseビルドでやってるっす。最適化オプションはO2ですね。
vectorのヘッダーを丸ごとコピーして適当に名前を変えてクラスにしたら、
ちゃんとインライン展開されてるようで。どこがキーなのか分かりません。
189186:2008/05/23(金) 00:07:38
すません。ぐぐったら出てきました。

自己解決です。スレ汚しすません。
190173:2008/05/23(金) 00:35:01
>>177
IMEをDisableにしたら狙った通りに動いてくれました。
ご指摘ありがとうございました。
191デフォルトの名無しさん:2008/05/23(金) 02:29:00
>>186
トレースでもしりゃわかるよ
192デフォルトの名無しさん:2008/05/23(金) 02:41:05
>>188
templateでかけば普通インライン展開されるんじゃなかったけ
193デフォルトの名無しさん:2008/05/23(金) 08:24:12
VC++2003EEとVC++2005EE は結構違うよね
194デフォルトの名無しさん:2008/05/23(金) 09:04:21
エンタープライズだろ
195デフォルトの名無しさん:2008/05/23(金) 09:10:18
なんだ2005よりインストール楽になってるじゃないか
これで挫折するんじゃ救いようがないな

http://ja.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B
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デフォルトの名無しさん:2008/05/23(金) 09:14:23
・言語の仕様
・Windowsの仕様
・IDEの使い方
結局これらがわからないとダメなんじゃない?
197デフォルトの名無しさん:2008/05/23(金) 09:17:37
2005と2008だと、細かなところで2008の方が使いやすいな。
俺はInteliSenceで隠れたところがCtrlキーを押すと半透明になるのが一番
便利だな。
198デフォルトの名無しさん:2008/05/23(金) 10:58:15
>>197
知らんかった
199デフォルトの名無しさん:2008/05/23(金) 13:18:18
VC++2005AE購入・インストール済みで、2008EEを入れたんですが、
VC++2008版のATL・MFCは、2005の時のものと大きな差がありますか?
2008EEから2005のMFC・ATL使うと何か弊害が考えられるでしょうか?
200デフォルトの名無しさん:2008/05/23(金) 14:59:45
ライセンス的にどうなのよ
201デフォルトの名無しさん:2008/05/23(金) 16:25:09
VC++2008EEでウィンドウを作成した際にタイトルバーのアイコンが正常に表示されず困っています。

例えばIDI_ICON1と言うアイコンをWNDCLASSEX構造体で

WNDCLASSEX wc;
(中略)
wc.hIconSm = LoadIcon(NULL, MAKEINTRESOURCE(IDI_ICON1));

などと指定しても、実際に表示されるのは吹き出しの中に"?"が書かれたアイコン(TTI_INFOと同じ)になってしまいます。
色深度に制限があるのかと思い24bitカラーのアイコンを使ったり実行ファイル用のアイコンをそのまま指定したりもしましたが症状は改善されません。
何が原因でしょうか。
202デフォルトの名無しさん:2008/05/23(金) 16:38:42
>>201
LoadIcon の仕様を確認するんだ。
1つめの引数NULLはWindows標準のアイコンだぞ。
203デフォルトの名無しさん:2008/05/23(金) 17:13:43
>>202
確かめてみたら追加のアイコンはインスタンスハンドルを指定するんですね…見落としていました。

4bit透過色使用アイコンは作成するソフトによっては色抜けしなくなるようです。
GIMP2で漸く色抜けするアイコンが作成出来ました。
本当にありがとうございました。
204デフォルトの名無しさん:2008/05/23(金) 18:02:03
Windows XP、 visual studio .NET(ver2003)でCを勉強し始めたものですが
コマンドライン引数を指定するようなプログラムのソースを書いて実行しても

ファイル名の指定がありません
Press any ker to continue

と出て、うまく行きません。
どうしたらいいですか?
205デフォルトの名無しさん:2008/05/23(金) 18:08:27
プロジェクトのプロパティのデバッグにコマンドライン引数の指定できるとこないか?
206デフォルトの名無しさん:2008/05/23(金) 18:09:13
>>204
デバッガの使い方の話だよね?
プロジェクトのプロパティの「デバッグ」→「動作」→「コマンド引数」が、
デバッガが動かすプログラムに与えられるコマンドライン引数。

デバッガで動かしてるんじゃないなら、コマンドライン引数を与えてあげてください。
207デフォルトの名無しさん:2008/05/23(金) 18:11:07
>>204
それはなあ、おまえのパソコンがハング恩してるんだよ
208デフォルトの名無しさん:2008/05/23(金) 18:28:18
>>205
>>206
コマンドライン引数を指定する場所は見つかりました。
当のプログラムが、コマンドライン引数で指定したテキストファイルの内容を表示するプログラム
何ですが、引数はテキストファイルの絶対パスでいいんですか?
209デフォルトの名無しさん:2008/05/23(金) 18:29:57
いや、、、それを決めるのは君のプログラムでしょ
210204:2008/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デフォルトの名無しさん:2008/05/23(金) 18:41:11
絶対パスでも相対パスでもいいよ。
カレントディレクトリがどこかわからないなら、とりあえず絶対パス入れとけば。
212204:2008/05/23(金) 19:09:13
>>211
絶対パスでやっても

ファイル名の指定がありません

となるんですが
213デフォルトの名無しさん:2008/05/23(金) 19:20:55
>>212
ひょっとして hoge c:\(途中略)Program Files\xxx の様になってないか?
上記例だと、"Program" と "Files\xxx" の間の空白がパラメータ区切りとみなされて
argc=3になってしまう。
214デフォルトの名無しさん:2008/05/23(金) 19:21:58
まず argc の値を出してみろよ。
っつーか、VC++使ってんならそのままブレークポイント置いてargvの中身見てみろよ。
215デフォルトの名無しさん:2008/05/23(金) 19:23:28
うまくいかない→質問
じゃあ進歩しないぜ
216デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/05/24(土) 01:21:53
>argc!=1じゃないのか?なんでargc!=2にしてあるのかよく知らんけど。そこは、コマンドライン引数の個数をかくんだから
>1個しか実行プログラムに引数を与えないなら、argc!=1ってしなきゃならん。

いやいやいやいやいやいやいや
218デフォルトの名無しさん:2008/05/24(土) 01:31:40
Express Edition には、リソースエディタがないようですが、
これってなくて大丈夫なんでしょうか?
219デフォルトの名無しさん:2008/05/24(土) 02:01:49
リソースファイルを全部手書きしないといけないってだけで、プログラム事態には支障はない。
可能か不可能かってのなら可能。リソースコンパイラはWindowsSDKにも入ってるから。
220218:2008/05/24(土) 02:54:55
>>219
なるほど、そういうことですか。
じゃあ、書き方さえ分かってればいいわけですね。
ありがとうございました。
221デフォルトの名無しさん:2008/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版もあるし。
ttp://www.resedit.net/
222デフォルトの名無しさん:2008/05/24(土) 10:37:36
>>221
そんなオサレ気なものなくたって、Win32APIがあればまだ5年は戦えるね。
223デフォルトの名無しさん:2008/05/24(土) 13:27:50
ATL7.1がWDKの方に入ってるよ。
224デフォルトの名無しさん:2008/05/24(土) 13:41:13
ちなみに、setup80x.js内の8.0を全部9.0に置き換えて実行すれば、
2008EEでも、WTLのウィザード使えるよ。
225デフォルトの名無しさん:2008/05/24(土) 14:06:23
226221:2008/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デフォルトの名無しさん:2008/05/24(土) 17:06:31
だからWDKに入ってるつーの。
228デフォルトの名無しさん:2008/05/24(土) 18:31:23
すみません。Win32APIっていうのを勉強してるんですが、文字列変数というか
char型の配列名にszなんたらかんたらっていう変数名が多いです。たとえば
szClassName[] とかszText[]とか。。szってなんですかね??

あと、int型の整数を宣言するだけで、初期値を代入せずにいきなり使ってるんですが、
こういうのってありなんですか?なんか、大昔C言語を勉強したときはint i=0;と初期化してからじゃないと
コンパイルエラーが出た覚えがあるんですが。。

すみませんが、おしえてちょんまげ。
229デフォルトの名無しさん:2008/05/24(土) 18:34:13
>>226
Windows Driver Kit
http://www.microsoft.com/japan/whdc/DevTools/WDK/WDKpkg.mspx
サインインはいるが、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デフォルトの名無しさん:2008/05/24(土) 18:41:28
>>228
szはsが文字列、zがナル文字終端を表す。
いわゆるシステムハンガリアンというやつ。詳しくはググれ。

初期値を書かない変数は、あとで使うときに代入しているはず。
うっかりその代入を忘れたときには、
下手に0などで初期化しておくよりも、未初期化のままのほうが検出しやすいとされる。
そのため、(Win32プログラムに限らず)Cでは、
むやみに0初期化するべきでないというのが最近の傾向のはず。

もちろん、適切な値で初期化できるときはするべき。
未初期化変数はバグの温床だから、できればないほうがいい。
231228:2008/05/24(土) 18:44:44
>>230
どうもありがとうございます。よくわかりました。sが文字列でzがナル文字なるほろ。。

初期化についてもよくわかりました。

本当にどうもありがとうございました。
232デフォルトの名無しさん:2008/05/24(土) 19:23:22
> 個人用に設定されたコンテンツやベータ プログラムへの参加の機会をご提供するために、Microsoft Connect 上での皆様の活動がモニターされ、個人情報にアクセスされる場合があることについても同意するものとします。

この文章の示す個人情報とは何なのでしょうか。
ttp://privacy.microsoft.com/ja-jp/default.aspx
を読んでも特定出来ず、不安で登録出来ません。
233デフォルトの名無しさん:2008/05/24(土) 20:02:29
こんなところで聞かなくても
電話かメールで問い合わせできるはず
234デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/05/24(土) 22:27:35
>>234
textBox1->Textが""ならdouble::Parseしないで、
入力を求めるMessageBoxでも表示すればいい。
236デフォルトの名無しさん:2008/05/24(土) 22:28:43
>>232
実際に何かやろうとすれば、
メールアドレスとか住所氏名を入力する欄が現れる。
237234:2008/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デフォルトの名無しさん:2008/05/24(土) 23:38:55
>>237
全然内容読んでないけどAが入力されていなければexitすれば良いんじゃないかな?
239デフォルトの名無しさん:2008/05/24(土) 23:56:19
>>237
return
240デフォルトの名無しさん:2008/05/24(土) 23:59:21
>>239
return 0; でやってましたw
大変参考になりました。また機会があればご指導お願いします。
241デフォルトの名無しさん:2008/05/25(日) 04:19:54
すみません、とあるライブラリを使用してプログラムを組んでいるのですが、
_ASSERTを使おうと思ったら
LNK2019: 未解決の外部シンボル _CrtDbgReport が関数 "void __cdecl ほにゃらら"(ちょめちょめ)で参照されました。
というようなリンクエラーが出てしまいました。

crtdbg.hはインクルードしてます。
ためしに新規で作成してみたプロジェクトでは_ASSERTが使えました。

何が原因なのでしょう?
エラーの詳細内容を読んでも理解できませんでした。

ライブラリを使用する際にリンクの追加など、
プロパティを何箇所か変更しています。
環境は Microsoft Visual Stdio. NET 2003 です。
242デフォルトの名無しさん:2008/05/25(日) 08:25:43
原因は分からないけど、リンクの問題っぽいから
リンクの設定をうまくいったのと同じにしたら?
243デフォルトの名無しさん:2008/05/25(日) 08:28:18
>>241
ランタイムライブラリがデバッグ版になってないんじゃないの?

C/C++→コード生成
244241:2008/05/25(日) 14:57:31
>>242-243
レスサンクスです。

>243
>ランタイムライブラリがデバッグ版になってないんじゃないの?

まさしくこれでした。
プロパティをいじっている時に構成を「すべての構成」にしていたので、
ランタイムライブラリをマルチスレッドに変えた時にも
リリース版のマルチスレッド設定にしてしまってました。

ありがとうございました。
245デフォルトの名無しさん:2008/05/25(日) 16:54:36
eMbedded Windows CE Visual C++を入れたら
「Virtual PC/Windows CE エミュレータ」で、 Windows が不安定になるのが発生します。
ってメッセージが起動のたびに出るようになって、修復する方法を書いてあるページを見つけたんですが、
ttp://support.microsoft.com/kb/891667/ja
日本語の意味が分かりません。ここの解決方法をどなたか翻訳してください。
246デフォルトの名無しさん:2008/05/25(日) 19:31:08
boot.iniに/executeオプション足せ、って書いてある。
247デフォルトの名無しさん:2008/05/25(日) 19:52:03
C++を最近始めたんですが、何度プログラムを組んでも言葉の意味がなかなか分からなくてこのままで大丈夫かなぁと思っています。
最終的にはゲームを作ることを目標にしてるんですが、このままで大丈夫でしょうか…不安で仕方がないです。

248デフォルトの名無しさん:2008/05/25(日) 22:43:50
>>247
振り向いたら負け
249デフォルトの名無しさん:2008/05/26(月) 00:36:56
ある画像A.bmpと、その背景にあたるB.bmpが別々にあって、
A.bmpを上に、B.bmpを下にして1枚の絵に表示させる

といった内容のモノを作りたいのですが(画像処理?)何か参考になるソース、もしくはHPがあったら教えていただけませんか?
250デフォルトの名無しさん:2008/05/26(月) 03:52:45
単純にB,Aの順番で描画すればいいんじゃない?
251デフォルトの名無しさん:2008/05/26(月) 07:40:58
すみません、質問は「リストのインデックスが範囲を超えています(0)」というエラー
が出るのですが。この(*)の*の数字の詳細が知りたいのですが。(-1とか6とかいろいろある)
よろしくお願いします。
252デフォルトの名無しさん:2008/05/26(月) 07:52:02
だから板違いだっつーの。
253デフォルトの名無しさん:2008/05/26(月) 08:17:17
なんだ 同じかww
254デフォルトの名無しさん:2008/05/28(水) 16:01:46
引数のところで書かれてる__outの目的がよくわかりません。
OUTというマクロはプリプロセッサで無かったことにされてるみたいですが・・・
検索してみても、日本語で解説してあるページを見つけられませんでした。
どなたかお願いします。
255デフォルトの名無しさん:2008/05/28(水) 17:02:58
日本語で質問お願いします。
256デフォルトの名無しさん:2008/05/28(水) 18:08:23
エスパーすると、その引数のところに結果を返しますよ
ということをプログラマに知らせるだけの記号。
257デフォルトの名無しさん:2008/05/28(水) 18:24:22
>>254
__outは/analyzeオプション用
258デフォルトの名無しさん:2008/05/29(木) 00:35:26
すみません、教えてください。

win32環境で作ったVC++プロジェクトをマネージ環境に移行するためにはどうすればいいのでしょうか。

.NET用プロジェクトを作ってソースを1つずつ移していくしかないのでしょうか?
259デフォルトの名無しさん:2008/05/29(木) 08:43:43
ctrl+a
260デフォルトの名無しさん:2008/05/29(木) 23:15:29
質問です
2008VC++で、GetWindowTextWで取得したCStringをdoubleに変換したいのですが、うまくいきません
コードの書き方を教えてください
261デフォルトの名無しさん:2008/05/29(木) 23:41:08
どう書いて、どううまくいかなかったのか書け。
262デフォルトの名無しさん:2008/05/29(木) 23:46:42
GetWindowTextW→CString→doubleのどの段階でうまくいかないのだ?

CStringよりもstd::stringにしとけ
263デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/05/29(木) 23:56:48
うにコードで(const char*)がマズイ
265デフォルトの名無しさん:2008/05/30(金) 00:07:49
すみません。何度も申し訳ありません。質問させてください。

自作のdllを遅延読み込みしたいのですが、
「LNK2001: 外部シンボル xxxx は未解決です。」となってしまいます。
具体的な手順が理解できなくて、
以下の手順でやってるんですが、何か勘違い、抜けなどありますでしょうか。

@dllはexeが作成されるディレクトリに先に作成されます。
Adllの関数のプロトタイプを列挙しているヘッダファイルを、
 exe側でプロパティでパスを追加した上でincludeする。
Bリンカの「遅延読み込み」に自作のdll名を入れる
Cexe側で「LoadLibrary(dll名)」を行う
Dexe側でdll内の関数を呼び出す。

よろしくお願いします。
266デフォルトの名無しさん:2008/05/30(金) 00:13:57
遅延読み込みはスタティックリンク
LoadLibraryはダイナミックリンク
267デフォルトの名無しさん:2008/05/30(金) 00:35:27
>>264
ありがとうございます。解決しました
268デフォルトの名無しさん:2008/05/30(金) 00:53:42
>>266
ありがとうございます。
ヒントを頂き、ちょっと調べてみました。
@LoadLibraryを消す
A「追加の依存ファイル」に xxx.lib を追加
  B呼び出し側「#pragma comment」とかする必要がありそう
    ⇒"遅延読み込み"モードだからいらない???
C肝心の.libが見つからない
  ⇒それくらいはどうにか自分で解決します。。。

早めに間違い・勘違い指摘いただけましたら
すごく助かります。。。
269デフォルトの名無しさん:2008/05/30(金) 01:26:44
6月にマネージャパン、月刊アスキー、週刊アスキーの3誌が賞金総額2000万円の「シストレFXグランプリ」を開催
ttp://system-trading.jp/news/index.php?ID=39
5月22日より登録受付開始、6月2日よりグランプリ開始の予定。


ttp://www.fx-gp.com/
●社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円
https://www.click-sec.com/corp/guide/demo/
270デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/05/30(金) 12:17:48
>>268
dllをスタティックにリンクするにはdllimportを使う。externだけじゃ呼べないよ。といってみる。
自作dllを作ったならdllexportを使ってると思うからその逆の使い方だ。
272デフォルトの名無しさん:2008/05/30(金) 12:18:40
またmemset()厨か。
273デフォルトの名無しさん:2008/05/30(金) 13:20:30
>>270
それだけの用途なら、そんな滓みたいなテンプレート関数作る必要なんてさらさらないじゃん。
A a = {0}で充分。
274270:2008/05/30(金) 13:52:27
>>273
 A a = {0} なんて書き方があったんですか。ありがとうございます。
 わざわざ関数呼ばずとも、こちらを使った方が断然良いですね。
275デフォルトの名無しさん:2008/05/30(金) 14:09:04
CHAR chStr[128];

wsprintf(chStr , "インスタンスハンドル : %d" , hInstance);
MessageBox(NULL , chStr , TEXT("Kitty on your lap") , MB_OK);

http://wisdom.sakura.ne.jp/system/winapi/win32/win5.html
これやると

'MessageBoxW' : 2 番目の引数を 'CHAR [128]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。

っていわれるんだけど・・。なんか昔やってたソースを2008でやろうとしても同様にエラーがでる・・。
関数にcharのlong pointerの引数があったらそこに単純に"abc"ってやってもpointerわたしてるんだよね?
276デフォルトの名無しさん:2008/05/30(金) 14:27:35
作者じゃないから TCHAR じゃなくて CHAR を使う意図がわからない
下の方ではTCHAR 使ってるし
277デフォルトの名無しさん:2008/05/30(金) 14:31:29
だからそんな間違いや過去の遺物だらけのサイトで勉強しちゃダメだって。
278デフォルトの名無しさん:2008/05/30(金) 15:57:13
初心者には良いか悪いか分からないし(´・ω・)
279デフォルトの名無しさん:2008/05/30(金) 17:43:44
VC++ 2008で、windowsフォームアプリケーションのスケルトンを作成したところ、

LRESULT CALLBACK WndProc(HWND, UINT , WPARAM, LPARAM){

みたいなメインループ部分が見当たりません。
メインループさせたい場合、どのように書けばよいですか?
280デフォルトの名無しさん:2008/05/30(金) 17:46:47
とりあえず、.NET Frameworkについて勉強しようか。
281デフォルトの名無しさん:2008/05/30(金) 17:59:23
>>279
Win32アプリケーションのプロジェクトを作ればいいと思うよ。
282デフォルトの名無しさん:2008/05/30(金) 19:07:50
charとかLPSTRとかstrcmpとかstrcatとか_atoi_sとか
C#から入ってきたので文字列周りの処理が死ぬほどムズイ
文字列処理に特化して説明してるHPとかありませんか
283デフォルトの名無しさん:2008/05/30(金) 19:12:31
ソース読んでデバッガでトレースすれば理解できるよ
284デフォルトの名無しさん:2008/05/30(金) 22:41:49
lexical_castで。
285デフォルトの名無しさん:2008/05/31(土) 00:34:25
VBAの処理時間短縮のためVC++でDLLを作って処理させようと思ってます。
VC++はいじったことないのでお勧めの書籍あるいはURL等ありましたら
教えて貰えませんか。
286デフォルトの名無しさん:2008/05/31(土) 00:42:18
>>285
とりあえず本屋で適当に選んできなよ
287デフォルトの名無しさん:2008/05/31(土) 07:57:34
>>282
std::stringを使えばいい
288デフォルトの名無しさん:2008/05/31(土) 11:49:37
>>279
CLR使わなきゃいい
289デフォルトの名無しさん:2008/05/31(土) 12:33:09
リソースキットツールってのは必要なの?
290デフォルトの名無しさん:2008/06/01(日) 01:31:59
gccの拡張機能のweakシンボルと同等のことを
VCでするにはどうすればよいでしょうか?
291デフォルトの名無しさん:2008/06/01(日) 19:13:16
2008なんですがコマンドラインからの引数を受け取って
動作をデバッグするにはどうしたらいいんでしょう?
具体的には

int main( int argc, char** argv ){

の引数をいろいろ変えながらデバッグしたいんですが・・・。
292デフォルトの名無しさん:2008/06/01(日) 19:16:26
と、思ったんですが、すごい勢いで解決しました。
すごいよMSDNむすどんむすどん。
293デフォルトの名無しさん:2008/06/01(日) 20:01:16
Thumb.dbのフォーマットを解説してるサイトとかって存在しますか?
294デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/06/02(月) 00:07:29
日本語ファイル名かよw
296デフォルトの名無しさん:2008/06/02(月) 00:14:43
>>294
#pragmaで抑制できたはず。
詳しくはググれ。
297デフォルトの名無しさん:2008/06/02(月) 00:15:09
>>294
sprintfを使わずに、boost::formatを使う。
298デフォルトの名無しさん:2008/06/02(月) 00:21:24
>>296
出来ました.ありがとうございます。
>>297
調べてみます。ありがとうございました。
299デフォルトの名無しさん:2008/06/02(月) 00:42:52
300デフォルトの名無しさん:2008/06/02(月) 00:47:04
>>291

メニュー[プロジェクト] -> プロパティ -> デバッグ -> コマンド引数

を変更すればおkなはず。

面倒なときはイリーガルだけど、

#ifdef DEBUG
char* argv_[2] = { "application", "" };

argc = 2;
argv = argv_;
#endif

みたいにでばっぐしてみればどう?

301デフォルトの名無しさん:2008/06/02(月) 06:42:55
302デフォルトの名無しさん:2008/06/02(月) 07:12:08
>>299
できるよ。
以上。
はい、次。
303MFC始めて2日目:2008/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デフォルトの名無しさん:2008/06/02(月) 11:12:43
ttp://www.vipper.org/vip833994.jpg
VC++2008で、BとCの下のスピンボタンの値を足し算して、Aの下の部分に表示したいんですが
どのように記述すれば値を取得して計算・表示できるのでしょうか?
305デフォルトの名無しさん:2008/06/02(月) 12:21:03
スピンボタンの値を取得するサンプルならそこらじゅうにあるだろ
306デフォルトの名無しさん:2008/06/02(月) 15:37:34
>>304
Bの下、Cの下、それぞれのスピンボタンの値を取得し、それらを加算してから文字列に変換し、
Aの下に直接書き込むか或いはAの下に配置したスタティックテキストを書き換えれば宜しい。
307デフォルトの名無しさん:2008/06/02(月) 20:37:05
シリアライズってのは、「専用形式」で「なるべく簡単に」
オブジェクトを保存・読み込みする、みたいなコンセプト。
そこいらにあるファイルをデシリアライズするのは大変。
308デフォルトの名無しさん:2008/06/02(月) 23:28:04
>>271
遅くなりましたが、今、無事できました!
コンパイルもリンクもうまくいき、
ちゃんとdll内の関数も呼び出せました!
本当に、ありがとうございました。
309デフォルトの名無しさん:2008/06/03(火) 21:41:31
CStringってすごいな。これを使えば2バイト文字の扱いが楽だな。
これはMFCなのか、ATLなのか。
310デフォルトの名無しさん:2008/06/04(水) 00:57:20
今は共用になってる
311MFC始めて3日目:2008/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デフォルトの名無しさん:2008/06/04(水) 14:42:10
SerializeRaw したあと同じものを自分でも書いてんの?
313MFC始めて3日目:2008/06/04(水) 15:07:56
SerializeRawの1行を削除したらエラーになった。
(ソースコードの else の行に矢印がついてプログラムがストップ)
314MFC始めて3日目:2008/06/04(水) 15:16:44
うまくいった。
(313 はデバッグの機能が働いただけだった)

>>307
>>312
ありがとう。
315デフォルトの名無しさん:2008/06/04(水) 19:30:51
VC++使い始めて間もないのですが、質問させてください

現在MSVC++2005ProのMFCを用いてソフトを作ろうと考えております
一次元での温度分布をグラフィック表示するものを作ろうと考えていて
物体の二点の温度を入力した際に、その間を一次関数的に温度が増減すると仮定した上で
その温度分布をモノクロの色の濃さで表現するようなものを作りたいと思っています

このようなグラデーション表示を描画するためにはどのようにすればよいのでしょうか?
よろしくお願いいたします。
316デフォルトの名無しさん:2008/06/04(水) 19:58:18
static void CALLBACK TimerProc(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2){}
の中で、同クラス内のフィールドを参照したい場合どうすればいいの?
ふつーに参照しようとすると、
関数呼び出しには引数リストがありません。
って言われるんだけど・・・
317デフォルトの名無しさん:2008/06/04(水) 20:57:54
非staticメンバにアクセスしたいなら、クラスのインスタンスをどうにかして得る。
318デフォルトの名無しさん:2008/06/04(水) 21:17:41
そのためのDWORD dw1とDWORD dw2
319デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/06/04(水) 22:18:11
printf("あなたの点数は %d 点です。",score);
321デフォルトの名無しさん:2008/06/04(水) 22:58:10
>>320
できました
ありがとうございます
322デフォルトの名無しさん:2008/06/04(水) 23:10:32
C言語なら俺に聞け(入門篇) Part 29
http://pc11.2ch.net/test/read.cgi/tech/1212329099/
323デフォルトの名無しさん:2008/06/05(木) 11:29:24
>>317 どうやるの?
324デフォルトの名無しさん:2008/06/05(木) 20:28:29
CStringってATLでも使えるようになったんだ
MFCじゃなくてもOkになってたとは
325デフォルトの名無しさん:2008/06/05(木) 21:41:55
>>323
CALLBACK関数には、クッキーと呼ばれる自由に使っていいパラメータが用意されている場合が多い。そこにインスタンスのポインタを乗せて渡したりする。

326デフォルトの名無しさん:2008/06/05(木) 22:13:37
textBoxに内部処理で得たchar型の2次元配列を表示させるにはどうしたらよいのでしょうか?

textbox->text = 配列変数名

だと型がcharをstringにできないとコンパイルエラーが出てしまいます。
環境は.Net2008です。
よろしくお願いします。
327デフォルトの名無しさん:2008/06/05(木) 22:19:44
>>326
どんな風に出したいのか詳細に決めたら、一気にプログラムを書く
328326:2008/06/05(木) 22:42:30
今思いついたんですけど、
ループで1文字ずつstring型変数に入れて文字列にしてからtextBoxに
入れるしかないんですかね?
329デフォルトの名無しさん:2008/06/05(木) 23:56:16
整形しなくてよければまとめて出せるだろ
文字列だって配列なんだし
330デフォルトの名無しさん:2008/06/06(金) 00:58:38
そもそもなんで二次元配列なんだよ
331326:2008/06/06(金) 01:07:32
読み込むデータが最大64個で
4ビット区切りの16進数が12個並んでるからです。
EE000FF00002みたいな。

それをテキストボックスに1行ごとに表示させたいんです。
332デフォルトの名無しさん:2008/06/06(金) 02:02:58
VC++っていうよりも、C/C++の話なのかもですが。

自作のクラスを.cpp/.hで作って、
それらのファイルをプロジェクトには追加せずに、
.hをインクルードするだけで使うことはできませんか?

イメージは、stdio.hをインクルードしてprintfを使う、みたいな感じで。

ツール→オプション→VC++ディレクトリ、でパスは通してあります。

宜しくお願いします。
333デフォルトの名無しさん:2008/06/06(金) 02:09:07
ライブラリにする
334デフォルトの名無しさん:2008/06/06(金) 06:28:07
全部hに書けばいいじゃんw
335デフォルトの名無しさん:2008/06/06(金) 07:39:01
336デフォルトの名無しさん:2008/06/06(金) 09:29:31
>>332
printfと同じようにするなら>>333のいうとおりライブラリにする
ついでに、pragmaいれとけばlibのファイル名指定はいらなくなる
適切な場所にlibをおく必要はあるが。
337デフォルトの名無しさん:2008/06/06(金) 09:38:52
VC++で作ったexeファイルをネットワークドライブに置き、
繋いである他PCから起動するとエラーが発生します。
HDDにコピーせず直接起動させるのにはどうしたら良いでしょうか?
パソコン自体に設定するのではなく、ファイル自体に設定したいので
よろしくお願いします。


エラー内容
問題が発生したため、.exeを終了します。
ご不便をおかけして申し訳ありません。
338デフォルトの名無しさん:2008/06/06(金) 11:12:33
http://deki.psv.org/JoyToKey.htm
みたいなツールを作ろうと思い、keybd_eventでキーイベントを発生させてみたのですが、
MHFでキーイベントを認識してくれません.(JoyToKeyは認識する.)
どうすればよいでしょうか?
339デフォルトの名無しさん:2008/06/06(金) 11:22:08
ここって何でも相談室だっけ?
340デフォルトの名無しさん:2008/06/06(金) 13:54:47
>>333
>>336
ありがとうございます。
やっぱりライブラリにするべきなんですね。

なるべくならライブラリにはしたくなかったんですが、
とりあえずその線で行くことにします。
341デフォルトの名無しさん:2008/06/06(金) 18:35:45
>>339
答えられるものだけ答える側が判断して答えればおkなんじゃないの?
342デフォルトの名無しさん:2008/06/06(金) 19:07:01
遠まわしにスレ違いを指摘してやってるだけだろ
343デフォルトの名無しさん:2008/06/06(金) 19:21:30
MinGWにて作成したDLLをVC++にて呼び出そうと下記のようなソースをコーディングしました。
DLL作成側で生成したポインタのハンドラを呼び出し側に渡そうと
引数にて受け渡ししようとしていますが、
呼び出し側で確認をすると、ハンドラの値は0のままです。
DLL連携をすると引数受け渡しは不可能なのでしょうか?

■DLL作成側(MinGW)
●cpp
extern "C" __declspec(dllexport) int __stdcall GeoOpen(char* chrLicence, char* chrGeoDBDir, char* chrNormalize, long* lngHandler) {
Geo *geo = new Geo();
lngHandler = (long*)geo;
return 1;
}

■DLL呼び出し側(VC++)
●h
typedef int (__stdcall *GEOOPEN)(char*, char*, char*, long*);
●cpp
GEOOPEN geoOpen = (GEOOPEN)GetProcAddress(hGEOCODERDLL, "GeoOpen@16");
long* lngHandler;
if (geoOpen != NULL) {
int intRes = (*geoOpen)(chrLicence, chrGeoDBDir, chrNormalize, lngHandler);
}
344デフォルトの名無しさん:2008/06/06(金) 19:59:22
そもそもDLL側で作成したポインタのハンドラ貰っても
またDLLに渡す頃には消失されてる・・・のかな?
345デフォルトの名無しさん:2008/06/06(金) 20:05:56
>>343
int型の値を引数で返すには、引数をint*やint&にするだろ。
それと同じで、long*型の値を引数で返すには、long**やlong*&にしないといけない。
346デフォルトの名無しさん:2008/06/06(金) 20:41:03
>>340
プロジェクトに属するcppファイル内で使用したいcppをインクルードするという方法を
ときどき使ってる。
347346:2008/06/06(金) 20:42:35
プロジェクトに属するcppファイル内で、
使用したいcppをインクルードするという方法をときどき使ってる。

// CppIncluder.cpp
#include "included.cpp"
348デフォルトの名無しさん:2008/06/07(土) 08:20:23
>340
DOS時代はコンパイルだけしといて
バッチファイル内のリンカのコマンドラインにobjファイル追加してた。

今はVCなのでプロジェクトに追加するだけ。
349デフォルトの名無しさん:2008/06/07(土) 14:02:41
まあそのうちprintfがどこに入ってるかを知ることになるだろう
350デフォルトの名無しさん:2008/06/07(土) 14:36:34
Visual Studio 使ってる場合で、ちょっとした言語仕様とか
確認するために簡単なプログラムを書いて試したい時、
どうしてますか?
351デフォルトの名無しさん:2008/06/07(土) 14:58:15
コマンドラインから cl してるな。俺は。
352デフォルトの名無しさん:2008/06/07(土) 15:06:16
テスト用に使ってるプロジェクトがある
353350:2008/06/07(土) 15:31:37
>>351
>>352
ありがとうございます。

コマンドラインで cl することにしました。
こりゃいいですね。こういうの無いと辛いです。
354デフォルトの名無しさん:2008/06/07(土) 19:15:40
const int size = (int)pow( (double)2, (double)10 );
int ary[size];

上記のようなコードを書いたところ、コンパイルエラー
error C2057: 定数式が必要です。
となりました。
sizeはconst指定なので問題ないように思ったのですが、
何か解決策はありますでしょうか?
355デフォルトの名無しさん:2008/06/07(土) 19:40:36
vector じゃだめ?
356デフォルトの名無しさん:2008/06/07(土) 19:46:54
>>354
pow
357デフォルトの名無しさん:2008/06/07(土) 19:48:44
>>354
#define POW2_10 (1024)
358354:2008/06/07(土) 19:56:24
そうですね。おとなしくvectorを使うことにします。
gccでは通ったのでVCでもと思ったのですが…。
ありがとうございました。
359デフォルトの名無しさん:2008/06/07(土) 20:40:22
int main()
{
CoInitialize(NULL);

// 内部でCOMを使うクラス
COMClass cClass

CoUninitialize();
return 0;
}
ってやった場合先にCoUninitialize();が呼ばれそうですが
cClassのデストラクタでRelease()出来ますか?
360デフォルトの名無しさん:2008/06/07(土) 20:44:41
>>358
一応言っておくが、VCではなぜダメかというと
C99に対応してないので可変長配列が使えないから。
361デフォルトの名無しさん:2008/06/07(土) 20:52:21
>>360
可変長配列が普通の配列と同じように宣言できるの?
それってヤバくね?
362デフォルトの名無しさん:2008/06/07(土) 21:01:18
>>359

int main()
{
  class inner_
  {
  public:
    inner_() { CoInitialize(NULL); }
    ~inner_() { CoUninstialize(); }
  }

  inner_ in;

  COMClass cClass;
  return 0;
}

363デフォルトの名無しさん:2008/06/07(土) 21:03:21
>>362
なるほど!ありがとうございます!
364デフォルトの名無しさん:2008/06/07(土) 21:45:55
>>358
可変長配列の話じゃなくて、constつけてるのになぜ定数にならないかという話だと思う。
365デフォルトの名無しさん:2008/06/07(土) 21:52:15
>>364
関数呼び出しは静的じゃないからな。
constexpr を待ってくれとしか。

まあ、2の累乗ならビットシフトでできるから
そっちでやればいいけどね。
366デフォルトの名無しさん:2008/06/08(日) 03:25:26
strcat(a, b);

ってやると aのサイズが1で
bのサイズが1を超えててもおKみたいなんだけど
勝手にaのサイズをかえてくれるってことでつか?
勝手にサイズ変えてくれるならどんなサイズでも問題ないよね?
って思ってどんどんstrcatしつづけるとそのうち原因不明のエラーが
で、aのサイズを増やすとエラーでなくなる
367デフォルトの名無しさん:2008/06/08(日) 03:28:08

バッファを超える文字列入れると
他の変数の置いてあるメモリを破壊するぜ。
368デフォルトの名無しさん:2008/06/08(日) 08:43:30
>>366
たまたまエラーにならなかっただけでしょう。
369デフォルトの名無しさん:2008/06/08(日) 13:09:28
>>367 368
トンクス やっぱりそれなりのサイズを用意しないとだめですか
そろそろstd::stringかCStringあたりを使うのを検討したいと思います

C#からきたのでString型でたいがいのことが済んでしまう環境に慣れてて
辛いです
370366:2008/06/08(日) 16:16:52
最初はつらいでしょうね。使える環境であればstd::stringの使用を勧めます。
371デフォルトの名無しさん:2008/06/08(日) 16:17:35
370は366でなく368
372デフォルトの名無しさん:2008/06/09(月) 11:01:21
visual studio 2005のWindowsフォームアプリケーションで作成中です。

String^ str = "12345";

この文字列を数値に変換する方法を教えていただけませんか?
373デフォルトの名無しさん:2008/06/09(月) 14:24:24
int num = int::Parse(str) ;
374デフォルトの名無しさん:2008/06/09(月) 16:10:37
ありがとうございます。
無事解決しました。
375デフォルトの名無しさん:2008/06/09(月) 17:20:01
質問させて下さい。
以下のような2つのクラスを作成しました。
目的は clbBクラス を clsAクラス に包含させるためです。
これをコンパイルすると C2061 エラーが発生します。
どなたか問題点とその対応を御教授いただけると幸いです。

//--------------------------------
// clsA.h
//--------------------------------
#include "clsB.h"
class clsA
{
public:
clsA();
virtual ~clsA();
private:
clsB m_b;
}

//--------------------------------
// clsB.h
//--------------------------------
#include "clsA.h"
class clsB
{
public:
clsB();
virtual ~clsB();
private:
clsA m_a;
}
376デフォルトの名無しさん:2008/06/09(月) 17:23:43
>>375
勉強しなおすことをお勧めするよ。(マジデ)
377デフォルトの名無しさん:2008/06/09(月) 17:36:24
無限に巨大なクラスインスタンスを作成しようとしている人がいると、飛んで来ました。
クラスが無限ループしている…ブルブルガクガク…
378デフォルトの名無しさん:2008/06/09(月) 19:00:30
【初心者歓迎】C/C++室 Ver.54【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1210694402/

C++相談室 part62
http://pc11.2ch.net/test/read.cgi/tech/1211900039/
379デフォルトの名無しさん:2008/06/09(月) 19:09:09
恥ずかしながら375です。
これではどうなのでしょうか?だめなら↑に行きます・・・
よろしくお願いします。
//--------------------------------
// clsA.h
//--------------------------------
#include "clsB.h"
class clsA
{
public:
clsA();
virtual ~clsA();
private:
clsB m_b;
}

//--------------------------------
// clsB.h
//--------------------------------
class clsA;
class clsB
{
public:
clsB();
virtual ~clsB();
private:
clsA m_a;
}
380デフォルトの名無しさん:2008/06/09(月) 19:19:14
逝ってこい
381デフォルトの名無しさん:2008/06/09(月) 19:51:18
>>379
スレで聞いて解決というレベルの話ではなく>>376の言うとおりだと思うよ
382デフォルトの名無しさん:2008/06/09(月) 20:38:23
AはBを持っていて、そのBはAを持っていて、そのAはBをもっていて、そのBは(ry
383デフォルトの名無しさん:2008/06/10(火) 01:33:13
関数の中で文字列の長さを取得しようとしているのですが、
どんな文字列を入れても「4」しか返ってきません。
関数は
int func(char*strName, char strValue[])
の様にして、関数内で
int intValue1 = (int)sizeof(strValue1);
としています。
関数の外で(int)sizeof(strValue1)する分には正しい数値が得られます。
どうしたら関数内で正しい文字列の長さを取得できますでしょうか?
384デフォルトの名無しさん:2008/06/10(火) 02:48:04
strValue1って何を指してるんだか
strValueのことだとしても、関数の外(呼び出し元ってことだよね?)だろうが中だろうがsizeofでは文字列長は取れない
文字列の長さなら素直にstrlenでも噛ませばよかろう

つーか、VC++じゃないよね
>>378の方が勉強になるんじゃない?

ついでなので
>関数の外なら正しい数値が得られる
文字列長ではなくて多分配列長(文字列長+終端文字の1バイト)が取得できていると思われる
385デフォルトの名無しさん:2008/06/10(火) 12:55:43
>>384
ありがとうございました。

strlenでうまくいきました。

配列長が関数の引き数からは

うまくとれないのは渡し方の問題

ですかね?初心者スレで検索・質問

してみます。
386デフォルトの名無しさん:2008/06/10(火) 13:33:12
つくづく思うんだが、なぜ先に質問しようとか考えるんかね?
俺だったら自分で調べようと思うが
387デフォルトの名無しさん:2008/06/10(火) 13:58:00
ググったりすると、それに関連した事も書いてあったりして
知りたい情報に関連する知識も得られたりするよね。
388デフォルトの名無しさん:2008/06/10(火) 14:00:00
sizeofはコンパイル時に確定するが、
その関数じゃ実行時にしか長さわからんだろ。
389MFC始めて2週間目:2008/06/10(火) 14:58:06
CEditView で
Rect を指定してテキストを印刷するとき
行間値の調整はどうするの?
390デフォルトの名無しさん:2008/06/10(火) 15:08:20
vs2005 使ってるんですが、デバッガ変数ウィンドウで
配列の全要素を並べて表示することは出来ないのでしょうか?
変数一個一個しか確認できないので配列の全要素の値を追いたいときにすごく面倒なんです
391デフォルトの名無しさん:2008/06/10(火) 15:09:47
配列名だけ書いておいたら勝手にツリー表示されないか?
392デフォルトの名無しさん:2008/06/10(火) 15:17:07
ああ勘違いしてました。
配列じゃなくて、ポインタにnewした複数個のデータの表示法でした。
某CWだとツリー表示することが出来るので、VSでも出来ないのかなと・・・
393デフォルトの名無しさん:2008/06/10(火) 15:20:26
最近答えたんだけど、このスレじゃなかったかな。
ウオッチ式のとこ、ポインタ,要素数 でやってみ。
p,100 とか
394デフォルトの名無しさん:2008/06/10(火) 15:25:48
すみません。何をしろと言ってるのかわかりません
395デフォルトの名無しさん:2008/06/10(火) 15:27:57
自分が何やってるのか書き出してみろよ
396デフォルトの名無しさん:2008/06/10(火) 15:32:08
>>393
言ってることがやっとわかりました。
ポインタ変数の名前の後に ,100 と追加すればいいんですね
いや、ポインタ、要素数でググれってことか勘違いしました
見れました。ありがとうございます。
しかし、これってただvc使ってるだけだと気付かないですよね?
ヘルプも見たんですけど、載ってなかったような・・・
こういう機能ってどこで知ったんですか?
397デフォルトの名無しさん:2008/06/10(火) 15:34:10
オレはヘルプたどってってみつけた。
398デフォルトの名無しさん:2008/06/10(火) 15:39:36
ありがとうございました。
自分の調査能力が足りないみたいです
399デフォルトの名無しさん:2008/06/10(火) 15:45:10
ちょっとわかりにくい位置かもね。
この話出たの2008のスレだった。
そこで出たリンクに↓があるのでみてみて。
ttp://msdn.microsoft.com/ja-jp/library/75w45ekt.aspx
400デフォルトの名無しさん:2008/06/10(火) 15:49:17
書式指定のところかあ
書式指定でどうこう出来るもんだとは全然思わなかったのでスルーしてました
ありがとうございました
401デフォルトの名無しさん:2008/06/10(火) 20:38:31
VisualC++の頂点を極めあらゆる質問に答えて下さる皆さんに質問があります。

VS2003のVC++のGDI+なんですが、
Font font = new Font(dc, &logfont);
とするとフォントをインスタンス化できますけど、logfontのフォント名に
"@MSゴシック" のように横に傾くフォントを指定すると、うまく指定され
ないように思われます。

たとえば

LOGFONT lf1, lf2;
lf1.lfFaceName = "@MS ゴシック"
Font* font = new Font(dc, &lf1);
font->GetLogFontW(&graphics, &lf2);

というように確認してみると、lf1には確かに"@MS ゴシック"がセットされて
いるのに、lf2には"@"が外れて"MS ゴシック"がセットされてしまいます。

私は何を勘違いしてるでしょうか?
402デフォルトの名無しさん:2008/06/10(火) 21:54:05
ぐぐったらサンプルいっぱい見つかるから
動くの使えばいいんじゃないか?
403デフォルトの名無しさん:2008/06/10(火) 22:25:47
@が付くフォントと付かないフォントって何が違うんだっけ?^^;
404デフォルトの名無しさん:2008/06/10(火) 22:28:47
@が付くと90度振られる
405401:2008/06/11(水) 09:30:19
>>402
何というキーワードでググったんですか?
406デフォルトの名無しさん:2008/06/11(水) 09:59:41
名前よりも優先度の高い項目のセット忘れとか?
407デフォルトの名無しさん:2008/06/11(水) 10:08:30
つーか、変な省略しないできちんと検証したときのコード書けよ。
408ごー:2008/06/11(水) 14:49:52
Visual C++ (2003) のデバッグモードで、
プログラム側からコールスタックの情報を取得することってできる?
__FILE__ と __LINE__ だけでは、その場所の情報しか取れないのが不満。
409デフォルトの名無しさん:2008/06/11(水) 15:34:23
できなきゃプログラム動いてない
410デフォルトの名無しさん:2008/06/11(水) 20:33:26
411デフォルトの名無しさん:2008/06/12(木) 22:14:37 BE:280248454-2BP(380)
class test {
public:
test(void){};
~test(void) {};
};


#include <stdio.h>
#include "test.h"

int main() {
test x = new test();
printf("Hello World! \n");
}

1>c:\documents and settings\default\my documents\visual studio 2005\projects\test\test\main.cpp(7) :
error C2679: binary '=' : no operator found which takes a right-hand operand of type 'test *' (or there is no acceptable conversion)
なにこれ?
412デフォルトの名無しさん:2008/06/12(木) 22:16:31
test* x = new test();
にしろといってるんだろ
413デフォルトの名無しさん:2008/06/12(木) 22:35:32 BE:1008893489-2BP(380)
やだ! test x = new test(); にしたいびょん オペレ〜タ定義しないといけないにょ?
414デフォルトの名無しさん:2008/06/12(木) 22:41:21
GerDlgIntの戻りがおかしい

unsigned short ss =
(u_short)GetDlgItemInt(
hDlg,
IDC_TBX,
&FLG,
FALSE
);

と書いてるのにIDC_TBXに入力された値と違う値を返すときがある
数値が10000超えたあたりからおかしい
415デフォルトの名無しさん:2008/06/12(木) 23:26:03 BE:672595968-2BP(380)
こういうのって ありびょん?
test x = *(new test());
416デフォルトの名無しさん:2008/06/12(木) 23:37:06
>>415
だめだぴょん
417デフォルトの名無しさん:2008/06/12(木) 23:58:50
>>414
エスパーさんの出番です
418デフォルトの名無しさん:2008/06/13(金) 01:01:42
つーか、65535を越えるとおかしくなるんだろ。
419デフォルトの名無しさん:2008/06/13(金) 11:41:21
>>415
#define test* Test
420デフォルトの名無しさん:2008/06/13(金) 22:28:16
これならおk。
test &x = *(new test());
421デフォルトの名無しさん:2008/06/13(金) 22:36:17
>>411
test x = new test();

test *x = new test();
422デフォルトの名無しさん:2008/06/13(金) 22:41:25
今ずっとttp://www.kumei.ne.jp/c_lang/intro/no_54.htmこれを読んでます
Visual C++でやってるんですが、ライブラリのファイル?の作り方を教えてください。
423デフォルトの名無しさん:2008/06/13(金) 23:52:05
ライブラリのファイルって?
.libのプロジェクトを作りたいってのなら、
Win32のウィザードでスタティックライブラリを選ぶだけだが。
424デフォルトの名無しさん:2008/06/14(土) 00:20:11
>>423
ごめんなさい。初心者なんで全然わかんないんです。
スタティックライブラリは選びました。プロパティでもスタティックライブラリって
なってるんですが、プロジェクトのファイルの中に.libのついたついたのは
Debugフォルダの中に1つだけあります。それでいいんですか?
.cppのはビルトできたのですが、ライブラリってそれをどこからでも使えるってことですよね?
もしかして新しいプロジェクトではそれをincludeしても使えないんですか?
425デフォルトの名無しさん:2008/06/14(土) 01:03:16
>>424
インクルードするのはlibファイルじゃなくてヘッダ。
ライブラリに入れた関数の、プロトタイプ宣言やらなんやらのヘッダは自分で作らないと駄目。
(あるソースの関数を、別のソースから参照する時と一緒)
libファイルはリンカで結合するものなんで、
VC++のIDEなら、プロジェクトの構成プロパティのリンカ→入力→追加の依存ファイルに
追加しとけばリンクしてくれる。

他にもソース中に、#pragma comment(lib, "hoge.lib") とか書く方法もある (VC++依存)。
426デフォルトの名無しさん:2008/06/14(土) 01:13:34
正直、自分用のプログラムをlib化する意味なんて
ほとんど無いと思うんだが。
427デフォルトの名無しさん:2008/06/14(土) 01:59:09
>>425
すいません。全くできません。上のページの次のページの
#include <time.h>〜 return (day_of_week[mytime->tm_wday]);
}を.cppに、int get_time(int *, int *, int *);とchar *get_date(int *, int *, int *);
を.hに、プロジェクト名は1です。構成の種類はスタティックライブラリ。
そしてprivateという別の(構成の種類は実行)プロジェクトのcppに
#include <stdio.h> #include "1.h"〜 return 0;}を、(hは空です)とやっている
のですが、1.hをincludeできませんNo file みたいなのになるんです。
そもそもどうなるのかさえわかりません。追加の依存ファイルも候補みたいな感じで
出てきませんし、手打ちで入力してもビルドしても同じ結果です。
428デフォルトの名無しさん:2008/06/14(土) 05:55:24
ライブラリの作り方がわからないんじゃなくて
ライブラリの使い方がわからないんじゃないか?
429デフォルトの名無しさん:2008/06/14(土) 09:26:01
質問です。一応、自分でも調べてみたんですが、分からなかったので・・・
長いので2つに分けます。申し訳ない。

/* windowsapp.h */
class CWindowsApp{
  /* 中略 */
public:
  void Initialize(HINSTANCE,INT,char*,int,int);
  bool CreateWindow(); // 53行目
}
/* windowsapp.cpp */
bool CWindowsApp::CreateWindow() // 48行目
{ // 49行目

  /* 中略 。やってる事は、WNDCLASSを作ってCreateWindowEx()を使って
   ウィンドウを表示させるという流れ */
}
/* script.cpp */
bool initialize(){
  /* 中略 */

  // ウィンドウの作成。成功or失敗をそのまま返す
  // g_WindowsAppInstは、既述したCWindowsAppクラスのインスタンス
  return g_WindowsAppInst.CreateWindow(); // 76行目
}
430デフォルトの名無しさん:2008/06/14(土) 09:26:41
/* エラー */
C:\Program Files\Microsoft Visual Studio\MyProjects\addressbook\windowsapp.h(53) : warning C4003: マクロ 'CreateWindowA' に指定された実引数の数が少なすぎます。
C:\Program Files\Microsoft Visual Studio\MyProjects\addressbook\windowsapp.h(53) : error C2059: 構文エラー : 'constant'
C:\Program Files\Microsoft Visual Studio\MyProjects\addressbook\script.cpp(76) : warning C4003: マクロ 'CreateWindowA' に指定された実引数の数が少なすぎます。
C:\Program Files\Microsoft Visual Studio\MyProjects\addressbook\script.cpp(76) : error C2059: 構文エラー : ','
C:\Program Files\Microsoft Visual Studio\MyProjects\addressbook\windowsapp.cpp(48) : warning C4003: マクロ 'CreateWindowA' に指定された実引数の数が少なすぎます。
C:\Program Files\Microsoft Visual Studio\MyProjects\addressbook\windowsapp.cpp(48) : error C2059: 構文エラー : ','
C:\Program Files\Microsoft Visual Studio\MyProjects\addressbook\windowsapp.cpp(49) : error C2143: 構文エラー : ';' が '{' の前に必要です。
C:\Program Files\Microsoft Visual Studio\MyProjects\addressbook\windowsapp.cpp(49) : error C2447: グローバルスコープで中カッコ ({) が見つかりましたが、対応する関数ヘッダーがありません。

関数のオーバーロードは、引数が異なれば可能というのは調査済みだったのでやってみたら、こんなエラーが・・・
しかし、このCreateWindow()関数の名前を、CreateWndとかCreateWindowCという名前に変更したら、すんなりコンパイルしてくれました。
どうしてこのようなエラーが出るのでしょうか。オーバーロードの条件について、何か勘違いをしているのでしょうか・・・
431デフォルトの名無しさん:2008/06/14(土) 09:33:59
>>430
CreateWindowはマクロでCreateWindowA/CreateWindowsWのどちらかになるが、
さらにCreateWindowAとWの両方ともCreateWindowExAとWを呼ぶ関数マクロになっている。

つまり、関数でないCreateWindowに多重定義は無理だから、ほかの名前にするしかない。
たとえばMFCやATLみたいにCreate()とか。
432デフォルトの名無しさん:2008/06/14(土) 09:42:03
なるほど、そもそも関数のオーバーロードとは少し異なる原因だったのですね。
迅速な対応、ありがとうございました!
433デフォルトの名無しさん:2008/06/14(土) 10:18:12
>>427
プログラミング以前にフォルダとかパスとか判ってなさそう・・・
434デフォルトの名無しさん:2008/06/14(土) 10:24:59
>>433
すいません。
ようするにどうやったら違うプロジェクトで
あるプロジェクトで作った関数を使えるようになるかってことなんですけど。
435デフォルトの名無しさん:2008/06/14(土) 10:57:49
ソースファイルをプロジェクトに追加する。
436デフォルトの名無しさん:2008/06/14(土) 11:06:25
>>435
つまり同プロジェクト内で作った関数のソースファイル、それを
一般化?したヘッダファイルの一対がライブラリってことですか?
437デフォルトの名無しさん:2008/06/14(土) 11:13:07
ヘッダは何のためにあって誰がどこで使ってるかわかってる?
438デフォルトの名無しさん:2008/06/14(土) 11:17:20
>>437
いろんなソールファイル内の関数をメインのソースで使うためのまとめ役?橋架け役?
みたいな感じじゃないんですか?
439デフォルトの名無しさん:2008/06/14(土) 11:21:54
ググれ
440デフォルトの名無しさん:2008/06/14(土) 11:22:25
入門書ぐらいは読め
441デフォルトの名無しさん:2008/06/14(土) 11:26:20
スコープとか理解してるのかな?
442デフォルトの名無しさん:2008/06/14(土) 11:29:17
http://www.nitoyon.com/vc/tutorial/project/build_detail.htm
ビルドは何をしている? [VC++の使い方]
443デフォルトの名無しさん:2008/06/14(土) 11:31:50
とりあえず、>>427については、

lib と .h を使うプロジェクトのフォルダにコピーするか、
プロジェクトのプロパティの、
「追加のライブラリディレクトリ」と「追加のインクルードディレクトリ」を設定するか、
#includeと「追加のライブラリファイル」でパスまで指定するか、

好きなの選べ。

最後のは、あんまり推奨しないが・・・
444デフォルトの名無しさん:2008/06/14(土) 12:00:09
>>439めちゃググリましたよ 逆にヘルプでわからなくなった感じです すいません。
>>440入門者のゲームプログラム作る本とか他にも入門書はいくつかやりました。
>>441変数のスコープは知ってますが関数のスコープはわかってないかもしれません。
    ゲームプログラムの本の経験も含めて、1つのプロジェクト内でcppとhを対にしていくつも作る、
    それで各対の関数を引き出す?そしてメインで使うみたいなのはできてるんです。
    要するに疑問というか想像なのは、標準ライブラリみたいにcppとhの対が見えない、タグが無いというか・・
    内部にしまわれてるというか、そうゆう状態で、どのプロジェクトでもhをincludeすれば
    使えるようになる のを作るのがライブラリを作るってことではないのですか?
>>442ありがとうございます!わかりやすかったです。
445デフォルトの名無しさん:2008/06/14(土) 12:10:42
>>443
ありがとうございます。
プロジェクトのプロパティの、「追加のライブラリディレクトリ」に今なにも入ってない状態なんですが、
参照で見ていっても条件に一致するファイルはありません。となります。
そもそもここにどうゆう拡張子のものを追加できるかもわからないので、なぜ、どんな候補が無いかも
全くわからない状態です。
446デフォルトの名無しさん:2008/06/14(土) 12:28:39
なんで候補があるとか思うのか・・・

フォルダの指定だから、ファイルの候補は無くていいんだよ。
447デフォルトの名無しさん:2008/06/14(土) 12:39:48
>>446
今フォルダごと追加のライブラリ ディレクトリに指定しましたが、やっぱり<1.h>をincludeできません。となります。>>427
の状態です。
448デフォルトの名無しさん:2008/06/14(土) 12:52:49
ライブラリとインクルードは別物だし
全然別の場所に置いて使うのが普通
449デフォルトの名無しさん:2008/06/14(土) 12:56:38
釣りじゃないなら、
ライブラリ作成に挑戦するのは、
もうちょっとプログラミングそのものが
判ってからにした方がいいと思うよ。

個人的なライブラリなら、
別にソースファイルのコピーでも十分だし。


ちなみにヘッダをインクルード出来ないのは
ちゃんと.hファイルのあるインクルードディレクトリとファイル名を指定出来て無いだけで、
ライブラリとか関係無いからね。
450デフォルトの名無しさん:2008/06/14(土) 13:04:41
ライブラリとインクルードは全然別の場所に置いてあると考えて下さい。
たまたま同じ場所にあってもいいけど
451デフォルトの名無しさん:2008/06/14(土) 13:20:10
>>448
>>449
>>450
みなさんありがとうございます。ライブラリからincludeしたhの関数を探し出してくる
ぐらいに考えてたのですが、違うようですね。
もうちょっと総合的な本を読んでみたいと思います。
452デフォルトの名無しさん:2008/06/14(土) 13:35:12
いや違わないけど・・
(正確には、includeした関数じゃなくて、
 実際に呼び出しされてる外部関数を探し出す)

君がひっかかってるのは、それ以前の
ヘッダファイルとライブラリファイルの
ディレクトリ指定段階でしょ。

イロハで言えばイ以前だよw
453デフォルトの名無しさん:2008/06/14(土) 14:22:51
>>452
>ヘッダファイルとライブラリファイルのディレクトリ指定段階
こうゆう風に言うんですね。ありがとうございます。
454デフォルトの名無しさん:2008/06/14(土) 15:12:25
#include<1.h>

#include"1.h"
の違い理解してる?
455デフォルトの名無しさん:2008/06/14(土) 15:19:35
高学歴の俺の意見
お前と関わるにおいて高学歴であることが何の意味もなさない(位お前とかどうでもいい)
お前の前で本当の自分(頭がいいこと)でいてもメリットが無い。アホなふりしてるほうがマシ、失敗を笑いにできるから。
お前から吸収できることがないと思われてるってこと。知り合いとしての優先順位の潜在的低さがでてる。
まだ情で関わってもらえるだけ有り難いと思え。
456デフォルトの名無しさん:2008/06/14(土) 15:28:35
コンパイラ・リンカについて勉強するべし。
457デフォルトの名無しさん:2008/06/14(土) 15:32:43
>>454
知りませんでしたが、調べました。自作のhは""で囲むんですね。
ゲーム作りの入門本に似たようなのがあって、
ツール→オプション→ディレクトリを表示するプロジェクトで
ライブラリファイル、インクルードファイルのそれぞれで1のファイルを追加したのですが、
そうすると、未解決のシンボルというエラーに変わりました。
458デフォルトの名無しさん:2008/06/14(土) 15:48:26
>ライブラリファイル、インクルードファイルのそれぞれで1のファイルを追加したのですが、
ディレクトリを指定するところにファイルを追加するというのはどうかと(単なる記述ミス?)。

その関数が記述されてるソースをプロジェクトに追加するのが一番楽。

1.プロジェクト開いてる状態でソースファイルをドロップ。
2.開いたソースウィンド上で右クリック→プロジェクトへファイルの挿入。

これで出来んかな?
459デフォルトの名無しさん:2008/06/14(土) 16:04:55
>>458
ありがとうございます。コマンドプロンプト的なので軽く見た程度
なのでディレクトリ=ファイル=フォルダぐらいな感じの理解しかないんです。

したのやり方ですがもう少し具体的に書いていただけませんでしょうか?
それと既存項目の追加とは違うのでしょうか?
460デフォルトの名無しさん:2008/06/14(土) 16:08:34
いいかげんにしろよ。
461デフォルトの名無しさん:2008/06/14(土) 16:22:57
つーか、ゲームとか作る前にC言語とVCの使い方を習熟するのが先だよチミィ。
そのレベルで教えて君じゃ、ゲーム出来てもバグだらけで遊べんだろうよ。
何のために本やグーグル先生があると思ってるんだね?
味噌汁で顔洗って出直してこい。
462デフォルトの名無しさん:2008/06/14(土) 16:52:50
>>461
わっかりました!みなさんいろいろありがとうございました!
463デフォルトの名無しさん:2008/06/14(土) 16:57:29
習熟までは行かずとも、ある程度使えれば特に問題ないんじゃね
464デフォルトの名無しさん:2008/06/14(土) 17:08:19
>ディレクトリ=ファイル=フォルダ
ダメだこりゃ。

ディレクトリ=フォルダ≠ファイル
465デフォルトの名無しさん:2008/06/14(土) 17:44:33
ディレクトリとフォルダは違う
466デフォルトの名無しさん:2008/06/14(土) 18:04:26
フォルダとは 【folder】 - 意味・解説 : IT用語辞典

省略

WindowsやMac OSではフォルダと呼ぶが、UNIXやMS-DOSでは同様の概念を「ディレクトリ」と呼ぶ。
467デフォルトの名無しさん:2008/06/14(土) 18:05:11
Windows ではシェルから見える物がフォルダ、
シェルを通さず見える物がディレクトリと区別している。
468デフォルトの名無しさん:2008/06/14(土) 18:05:55
してねーよ。
469デフォルトの名無しさん:2008/06/14(土) 18:06:10
してるよ。
470デフォルトの名無しさん:2008/06/14(土) 18:09:29
パスをアイテムIDリストで扱う関数名ではFolderが使われ、
C:\みたいな形で扱う関数名ではDirectoryが使われている。
471デフォルトの名無しさん:2008/06/14(土) 18:10:59
してねーよ。
普通にNTFSフォルダとか言うから。
472デフォルトの名無しさん:2008/06/14(土) 18:11:51
フォルダとディレクトリの違い

一般的な解釈
Windows 95以降 や Mac OS ではフォルダ、 MS-DOS や UNIX ではディレクトリと呼びます。
二つは同義です。

細かく言えば
物理的に存在していて、絶対URI(file:///C:/WINDOWS/ とか)を使って場所を示せるのがディレクトリ。
ディレクトリに、あたかもディレクトリのように見える仮想的なものをあわせたのがフォルダ。
マイコンピュータに入っている「コントロールパネル」などは、フォルダではあるけれど、ディレクトリではありません。


Mac OS: フォルダ、ディレクトリ、パス名について
“フォルダ”とは、ディレクトリを見てわかるように表現したものです。
Finder(図 2 参照)と合わせてフォルダを使うことにより、ファイルシステムを見たり、操作することが理解しやすくなります。
Finder でフォルダからある項目を出したり入れたりすると、基本的なディレクトリが変更されます。
“フォルダ”と“ディレクトリ”という用語は、特に区別する必要がない場合は、同じ意味で使用されることがあります。


面倒だから同じ意味でいいよ。

473デフォルトの名無しさん:2008/06/14(土) 18:13:16
そろそろ>>468=471の弁明が欲しい所だな。
474デフォルトの名無しさん:2008/06/14(土) 18:15:56
>シェルを通さず見える物がディレクトリと区別している。

少なくともこれは間違いだな。
475デフォルトの名無しさん:2008/06/14(土) 18:16:48
この中に意味を理解し、普段から正確に使い分けている人がいるのだろうか…。
476デフォルトの名無しさん:2008/06/14(土) 18:17:32
>>474
シェルって何なのか分かってないんだろうな。
477デフォルトの名無しさん:2008/06/14(土) 18:18:28
>>476>>474がWindowsの言う所のシェルって何なのか分かってないという主張。
478デフォルトの名無しさん:2008/06/14(土) 18:26:40
判ってないのはお前。
ファイルシステムの段階で、フォルダって言ってるんだから、
Windowsシェルは関係無い。
479デフォルトの名無しさん:2008/06/14(土) 19:02:12
こうなると思ったw
480デフォルトの名無しさん:2008/06/14(土) 19:09:52
CreateDirectory
ディレクトリを作成します。ファイルシステムがファイルとディレクトリのセキュリティをサポートしている場合は、
指定されたセキュリティ記述子を新しいディレクトリに適用します。

BOOL CreateDirectory(

LPCTSTR lpPathName, // pointer to a directory path string

LPSECURITY_ATTRIBUTES lpSecurityAttributes

// pointer to a security descriptor

);

481デフォルトの名無しさん:2008/06/14(土) 19:22:22
ディレクトリっていってんじゃん
482デフォルトの名無しさん:2008/06/14(土) 19:23:50
誰もディレクトリとは呼ばないなんて言ってないような。
483デフォルトの名無しさん:2008/06/14(土) 19:33:04
プログラミング環境では慣習や過去からの互換性から、
Directoryを使ってるだけでしょ。
普通は、

>一般的な解釈
>Windows 95以降 や Mac OS ではフォルダ、 MS-DOS や UNIX ではディレクトリと呼びます。
>二つは同義です。

で問題無いよ。
484デフォルトの名無しさん:2008/06/14(土) 19:40:57
マイコンピュータをディレクトリとか言うのはナシだろ
485デフォルトの名無しさん:2008/06/14(土) 19:51:04
みんなオナホのために争わないで!
486デフォルトの名無しさん:2008/06/14(土) 20:34:28
>>484
Macの真似してフォルダにして無かったら、
パネルとか言ってたかもよ。
3.0時代からあった、コントロールのフォルダは
コントロールパネルだし。
487デフォルトの名無しさん:2008/06/14(土) 20:55:49
C++でグラフの描画をしたいんですがなにから手を付けていいのかまったくわかりません
アドバイスまたは参考になるサイトとかあれば教えてください・・・
488デフォルトの名無しさん:2008/06/14(土) 21:04:27
C++にグラフなんてない
489デフォルトの名無しさん:2008/06/14(土) 21:28:11
えーとそれはGUIがどうのこうのって話になってくるのでしょうか?
490デフォルトの名無しさん:2008/06/14(土) 21:32:15
棒グラフ
****************
*******
*************************
************
491デフォルトの名無しさん:2008/06/14(土) 22:24:44
今度 C++ でタイピングゲームを作ることになったのですが、

if,printf,switch,while,int,char

これしかまだ知らないのにできるわけがない。。。


と、いうわけで誰か教えてください(つω・`)
492デフォルトの名無しさん:2008/06/14(土) 22:28:21
>>491
ifとwhileが出来れば大丈夫
プログラムなんてどんなえらそうなこと言っても順次・選択・繰り返ししか出来ないんだから。
それが分かってるんなら後はC++独特の方言を覚えるだけ。

C++の簡単な入門書とかサイトでじっくり勉強してみなよ
493デフォルトの名無しさん:2008/06/14(土) 22:31:29
>>491
あと、キーの読み取り方と、文字の表示方法さえ知ってれば何とかなる。
494デフォルトの名無しさん:2008/06/14(土) 22:41:26
できればサイトのURLお願いします!
495デフォルトの名無しさん:2008/06/14(土) 22:48:48
最初に本を買うことを薦めるぞ。
496デフォルトの名無しさん:2008/06/15(日) 00:34:09
>>484
シェル特殊フォルダ
497デフォルトの名無しさん:2008/06/15(日) 13:54:27
フォルダは概念でディレクトリは実装ってことでいいよ、もう。
498デフォルトの名無しさん:2008/06/15(日) 17:47:18
違うからw
499デフォルトの名無しさん:2008/06/15(日) 18:27:08
マイクロソフトがMacに対するコンプレックスを解消するために、ディリクトリをフォルダーに読み替えたり、拡張子の表示を隠してみたりした。
500デフォルトの名無しさん:2008/06/15(日) 21:13:51
シェルネームスペースではフォルダ
ファイルシステムではディレクトリ
501デフォルトの名無しさん:2008/06/15(日) 22:49:23
ファイルシステムでもフォルダだよ
502デフォルトの名無しさん:2008/06/15(日) 23:02:34
FAT、HPFS、NTFS ファイル システムについて
http://support.microsoft.com/kb/100108/ja

フォルダなんかどこにも出てこないけど?
503デフォルトの名無しさん:2008/06/15(日) 23:16:57
ググればNTFSフォルダと言ってる例がいっぱいひっかかるが。
504デフォルトの名無しさん:2008/06/15(日) 23:22:38
マウントはレジストリ使うんじゃなかったかな?
よくトラぶって起動しなくなるらしい
505デフォルトの名無しさん:2008/06/15(日) 23:33:53
DOSやWindows 3.1やWindowsNT → ディレクトリ
Windows95以降 → フォルダ

NTFSはWindowsNTで作られた物だから、
解説ではディレクトリと言う事も多い。

今では、区別なくフォルダと言っている。
例えば、圧縮フォルダはNTFSの機能だけど、
あんまり圧縮ディレクトリとは言わない。
506デフォルトの名無しさん:2008/06/15(日) 23:40:31
つまりディレクトリとフォルダは違うものなんだ
507デフォルトの名無しさん:2008/06/15(日) 23:48:49
>>491じゃないけど作ってみたyo〜
#include <stdio.h>
#include <conio.h>
int _tmain(int argc, _TCHAR* argv[])
{
TCHAR sKey[] = _T("test") ;
printf("plz enter [ %S ] \n", sKey) ;
unsigned int nCount = 0 ;
for(;;)
{
if(::_getch() == sKey[nCount])
{
printf("hit! [ %C ]\n", sKey[nCount]) ;
if(_tcslen(sKey) <= ++nCount) break ;
}
else printf("miss\n") ;
}
printf("\(^o^)/") ;
return 0;
}

508デフォルトの名無しさん:2008/06/15(日) 23:54:19
あれだろ、
昔からDOSやWindowsでプログラミングやってる老人が、
ディレクトリをフォルダって言う事に抵抗感じるって事でしょ。
509デフォルトの名無しさん:2008/06/16(月) 00:14:24
もうフォルダとかディレクトリとかどうでもいいよおまえら
専用スレでも立ててほかでやれ

と思ってるやつが何人いるんだろう
一人もいないのか?
510デフォルトの名無しさん:2008/06/16(月) 00:24:26
どうでもいいよ
511デフォルトの名無しさん:2008/06/16(月) 00:34:16
他人の間違いに一々噛み付くのはアマチュア。
脳内で的確に修正し、さりげなく指摘できるのがプロ。
間違いを訳のわからん理論で正当化しようとするのは厨ニ病。
512デフォルトの名無しさん:2008/06/16(月) 00:49:51
>>511
で、君はそれのどれ?
513デフォルトの名無しさん:2008/06/16(月) 01:30:08
悪いのはいちいち名前を変えて同じ物をローテーションしてるMSだろ
俺たちゃ振り回される被害者だってばよ!
514デフォルトの名無しさん:2008/06/16(月) 07:29:55
Express Edition 使っているんですけど
ソリューションにソリューションを追加できないものでしょうかね
自分は MFC や ATL を使わないので
この機能のためだけに Standard 買うのもちょっと…
515デフォルトの名無しさん:2008/06/16(月) 09:54:43
Stdにだってそんな機能はありませんよ
異なる言語のプロジェクトをひとつのソリューションで扱えるだけ
なんでそんな要求が出るのかしらないけど
MSBuildあたりを調べればなんか代替案出てくるんじゃない?
516デフォルトの名無しさん:2008/06/16(月) 10:19:18
>>461
>何のために本やグーグル先生があると思ってるんだね?

何のために2chに初心者質問スレがあると思ってるんだね?
という発想。
517デフォルトの名無しさん:2008/06/16(月) 11:06:46
EEには無いがSEには有るというなら多分ソリューションフォルダのことだろう。
518デフォルトの名無しさん:2008/06/16(月) 18:21:37
VS2008 MFC使用です

CStaticオブジェクトに絵を描いています。
OnPaint()でLineTo()等を組み合わせて絵を描いているのですが、
ウィンドウの大きさを変えたとき、OnSize()で描画領域の大きさも変えて、絵も拡大縮小するような処理を行っています。
しかし、絵を拡大したとき、新たに描画されるところは拡大されて表示されるのですが、
既に表示されている部分の再描画が行われません。

これが処理を早くするための工夫(仕様?)であるところまでは調べられたのですが、
実際にどのように対処したらいいかがわかりません。

OnSizeでサイズを変更したときに全体が再描画されるようにするにはどうしたら良いでしょうか。
519デフォルトの名無しさん:2008/06/16(月) 18:25:46
>>518
Invalidateで全体が無効領域だということをシステムに教えてやる
520デフォルトの名無しさん:2008/06/16(月) 18:26:40
けちけちしないで全体を再描画すればいいだけじゃん。
521518:2008/06/16(月) 18:48:09
>>519
Invalidateを初めて知りました。ありがとうございます。
OnSizeでInvalidate(TRUE)
OnExitSizeMoveでInvalidate(FALSE)
とする事で対処しました。
522デフォルトの名無しさん:2008/06/16(月) 20:43:55
ダイアログクラス間での、構造体データのやりとりで悩んでいます。

[ダイアログA]から、作成した登録ボタンを押して[ダイアログB]を開き、
Typdef struct Data
{
int Number;
char Name[10];
}stDATA;
をそれぞれに用意した2つのエディットボックスで入力して登録するもの
なのですが、UpdateData(TRUE);で取得したデータを、[ダイアログA]の保存ボタンを
押したときにファイルに保存するための処理が作れません・・・。
[ダイアログB]でファイルオープンし、そのまま保存することならできる
のですが、ダイアログAの保存ボタンで保存したい場合は、構造体のデータ
をどのようにやりとりすればよろしいでのしょうか?

もしかしたら、MFC以前の問題なのかもしれないのですが、
C言語とC++を初めて1か月半なので、なにとぞよろしくお願いします。
523デフォルトの名無しさん:2008/06/16(月) 21:06:50
失礼しました。ファイルへの保存は、
FILE *fp でファイルを開いて、fprintfで保存します。
524デフォルトの名無しさん:2008/06/16(月) 21:10:10
fwriteでメンバを一個ずつセーブ
freadで一個ずつロード
525デフォルトの名無しさん:2008/06/17(火) 11:33:24
Visual Studio2005のC++を使っています.
複数のフォルダーを取得するにはどうしたらいいでしょうか?

複数のファイル名を取得するにはCFileDialogを使って、Shift+
マウスクリックで複数ファイルを同時に選択できました.
それと同じようなことをフォルダーに対して行いたいのです。
BROWSEINFOを使って一個のフォルダは選択出来ますが、
同時に100以上のフォルダーを選択したいので、Shiftやcntlなどを
使ってさくっとやりたいです。

なお、フォルダー選択後、各フォルダー内にあるデータファイルを
順番に全て処理していきます.
526デフォルトの名無しさん:2008/06/17(火) 11:36:10
>>522
ダイアログBが生きてるなら、Bのパブリック変数なりゲッタなりで。
Bが消えるなら、消える前に上記。あるいは、AのポインタをBに渡しておいて
BからAのパブリック変数に代入なりセッタなりで。
527デフォルトの名無しさん:2008/06/17(火) 16:14:55
VisualC++2005でMFCアプリケーションをダイアログベースで作成しています。

メイン画面からサブ画面を開くのに
 DoModal();
を使って開いているのですが、
このときサブ画面のエディットボックスなどに初期値を入れたいです。

メイン画面ではOnInit関数内でセットできたのですが、
サブ画面ではどこに記述して良いかわかりません。

初歩的な質問で申し訳ありませんがよろしくお願い致します。
528デフォルトの名無しさん:2008/06/17(火) 16:19:44
サブ画面のダイアログのクラスにOnInitDialog()を作れ。
クラスビューからクラス選択してプロパティでオーバーライドをクリックして
OnInitDialogを探せ。
529527:2008/06/17(火) 16:48:10
>>528
おぉ☆★☆
早速のレスありがとうございました!!

早々に解決できました。
ありがとうございましたm(_ _)m
530デフォルトの名無しさん:2008/06/17(火) 19:24:34
>>524
>>526
まだ完成はしていないのですが、無事解決しそうです。
どうもありがとうございました。
531デフォルトの名無しさん:2008/06/17(火) 20:59:57
すいません。すごく今困ってます。
今先生から内緒でCDに焼いてもらったVisual Stadioなんですが、

#include <stdio.h>

void main(void)
{

printf("Hello");
}

これを実行すると

プロジェクト : error PRJ0003 : 'cmd.exe' の起動中にエラーが発生しました。

ってなるんですが、どうしたら良いですか??
お願いします。
532デフォルトの名無しさん:2008/06/17(火) 21:06:54
とりあえずMSにメールしといた
533デフォルトの名無しさん:2008/06/17(火) 21:07:26
環境変数のpathに %SystemRoot%\system32 を追加。
PCを再起動

コピーは良くない。逮捕されるぞ
Visual studio のアカデミック版は安いんだから、買え。
一番基本的なバージョンは無料ダウンロードできるんじゃなかったっけ?
534デフォルトの名無しさん:2008/06/17(火) 21:11:24
>>533

あの・・・すいませんが
環境変数ってどこですか?;
535デフォルトの名無しさん:2008/06/17(火) 21:18:50
流石にこれにはレスしない方向にしたいな
536デフォルトの名無しさん:2008/06/17(火) 21:21:23
無料で使えるExpressEditionがあるのになぜこの程度の
事をするのにコピーしてもらうのかと、そもそも学校の課題とかなら
EEでも十分すぐる
537デフォルトの名無しさん:2008/06/17(火) 21:36:30
ていうか先生に聞けよw
538デフォルトの名無しさん:2008/06/17(火) 23:04:52
ていうか、学校名晒せよ。
539デフォルトの名無しさん:2008/06/17(火) 23:17:23
>>531 これはさすがにまずいな、まして教職者がやる行為ではないね








TV用
540デフォルトの名無しさん:2008/06/17(火) 23:21:19
内緒って書いてあるな、 約束を破っちゃいかんよ
541デフォルトの名無しさん:2008/06/17(火) 23:26:19
これはすごい釣りですね
542デフォルトの名無しさん:2008/06/18(水) 01:35:27
国際学生証作ればMSから正規にタダでダウンロードできるだろう
543デフォルトの名無しさん:2008/06/18(水) 06:36:00
MouseButtons & Windows::Forms::MouseButtons::Right ;
Noneになるクソワロタ
あれ・・・?
544デフォルトの名無しさん:2008/06/18(水) 10:50:59
こんにちは!
ボタン押しでファイル保存をしたいのですが、エクセルやワードを保存するときのように、
フォルダを選べて、名前をつけて保存したいです。
まず、その画面はどうやって表示したら良いでしょうか??

環境はVisualC++2005のMFCです。よろしくお願いします。
545デフォルトの名無しさん:2008/06/18(水) 10:54:23
CFileDialogで検索
546デフォルトの名無しさん:2008/06/18(水) 12:21:17
クラスについての質問です。

class MakeWindow
{
public:
char Name[256];
int Width;
int Height;
int Bit;
int ScreenMode;
}

MakeWindow mWindow = new MakeWindow("A", 640, 480, 32, SELECT_MODE);

このようにしてオブジェクトを作成したのですが、
エラー 2 error C2661: 'MakeWindow::MakeWindow' : 5 個の引数を伴うオーバーロードされた関数はありません。(Line 6)

と表示されます。
受け取り側の変数も5個で設定しているのですが、何が原因なのでしょうか。
547デフォルトの名無しさん:2008/06/18(水) 12:35:09
コンストラクタでググれよ
548デフォルトの名無しさん:2008/06/18(水) 12:50:11
エラーをよく見ろ
'MakeWindow::MakeWindow'という関数はないと言ってる
そのまんま
549デフォルトの名無しさん:2008/06/18(水) 12:54:28
548はアホ
スレ違いだから終了
550デフォルトの名無しさん:2008/06/18(水) 16:01:45
質問させていただきます。

Microsoft Visual C++ .NET
でアプリケーション (.exe)作成しました。

void main()を実行した所
実行画面が立ち上がりません。
出力の表示は
”XX.exe: ネイティブ' はコード 0 (0x0) で終了しました。”
となっています。

実行画面が表示されれば
Sleep(2000)が入っているの目視できるはずです。

ステップインで実行した所次のようになっていました。
・appmodul.cppの_tWinMainが実行
・crtexe.cのif ( !managedapp )でmanagedapp=0
・exit(mainret)が実行

ここで終了しているようです。
何とかmainの中身を実行させたいのですが何が原因なんでしょうか?

当方のスキル:社内プログラマ1年目
申し訳ありませんが何とかお力を御貸し頂きたいと思います。
551MFC始めて3週間目:2008/06/18(水) 16:12:49
CEditView でフォントを設定するのはどうするの。
ちなみに以下ではできない。

int CDeepPurpleView::OnCreate(LPCREATESTRUCT lpcs)
{
if(CEditView::OnCreate(lpcs) == -1)
return -1;

CDC* pDC = this->GetDC();
CFont screenFont;
screenFont.CreatePointFont(600,"MS ゴシック",pDC);
CFont* pOldFont = pDC->SelectObject(&screenFont);

return 0;
}
552デフォルトの名無しさん:2008/06/18(水) 16:33:42
>>550
MFCのプロジェクトを選んでいないか?main関数から始まるプログラムを作りたいなら、
Win32コンソールアプリケーションのプロジェクトを選ばないといけない。

あるいはMFCを使いたくてそうしているのなら、
プログラムの実行開始はmain関数でないというのがMFCの流儀。
553デフォルトの名無しさん:2008/06/18(水) 16:40:41
フォントの寿命がOnCreate終わるまでなんだろ
554550:2008/06/18(水) 17:10:31
>>552
ありがとう御座います。
MFCを使用しないため
Win32コンソールアプリケーションで
プロジェクトを組みなおした所
問題が解決しました。

ありがとう御座います。
555デフォルトの名無しさん:2008/06/18(水) 17:15:45
http://mag.autumn.org/Content.modf?id=20060122170124
SetWindowsHookExのサンプルをvc++2008でコンパイルしてみたんだけど、
フックされる気配がない・・・どこか間違ってるの?
556デフォルトの名無しさん:2008/06/18(水) 17:25:08
>>554
そういえばvoid main()は普通やらない。int main()にしろ。
557デフォルトの名無しさん:2008/06/18(水) 20:44:35
>555
そのあとに、NyaRuRuセンセが「CLR上でフック動かすとか無謀すぎ」
って書いてるのに、何でコンパイルしたの?
558デフォルトの名無しさん:2008/06/19(木) 01:30:55
>>543
MouseEventArgs^ a = (MouseEventArgs^)e;
a->Button == MouseButtons::Right
こうですか!わかりません><
559デフォルトの名無しさん:2008/06/19(木) 04:09:40
MFCで使われるCrectをCLRでも使いたいんですけど代わりのものってありますか?
560デフォルトの名無しさん:2008/06/19(木) 04:41:04
代わりって言うと微妙かもしれないけどRectangleとかかな?
561デフォルトの名無しさん:2008/06/19(木) 10:37:53
>>551
まず、CFontが破棄されないように自動変数はやめてメンバーにでもして、
↓でどうよ。
int CDeepPerpleView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CEditView::OnCreate(lpCreateStruct) == -1)
return -1;
screenFont.CreatePointFont(600, _T("MS ゴシック"));
SetFont(&screenFont);
return 0;
}
562デフォルトの名無しさん:2008/06/19(木) 17:46:53
TimerProc(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)
のdw1とdw2って、ドキュメントには予約って書いてあるけど、実際には使えないの?
563デフォルトの名無しさん:2008/06/19(木) 18:51:27
そこに値設定する方法無いのに、どうやって使うつもりなんだ。
564デフォルトの名無しさん:2008/06/19(木) 21:38:13
予約領域のある関数や構造体なんてイヤというほど有るぞ。
565デフォルトの名無しさん:2008/06/19(木) 23:02:34
みなさんすみません。5日前からC++を始めた初心者です。
>383さんと関連するのかもしれませんが、下記のコードを実行すると、
期待した結果と異なる(結果は同じになると思うんですが)出力されます。
関数の引数を値渡しすると、初期化と同じとテキストに書かれているので、
こういう結果がなぜ起こるか分からないのです。

Visual Studio 2008 Express Edition
Windows Vista


void Print(char str[])
{
cout << "サイズは" << sizeof(str) << endl;
}

int main()
{
char str[] = "Test";
  cout << "サイズは" << sizeof(str) << endl;
cout << "サイズは" << sizeof("Test") << endl;

Print("Test");
Print(str);
}


結果:
サイズは5
サイズは5
サイズは4
サイズは4
566デフォルトの名無しさん:2008/06/19(木) 23:16:26
>>565
"Test"の文字列を長くしたらどうなるか見てごらん。
567デフォルトの名無しさん:2008/06/19(木) 23:17:31
【初心者歓迎】C/C++室 Ver.55【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1213466622/
C++相談室 part62
http://pc11.2ch.net/test/read.cgi/tech/1211900039/
568デフォルトの名無しさん:2008/06/19(木) 23:18:45
はきだめC/C++下級者の質問箱 2
http://pc11.2ch.net/test/read.cgi/tech/1156206091/
569デフォルトの名無しさん:2008/06/20(金) 09:40:00
>>565
Print関数にはポインタを渡してるに過ぎない。
サイズが4なのはポインタのサイズ(32ビット)
570デフォルトの名無しさん:2008/06/20(金) 11:36:05
>>569
>>566
565です。ありがとうございます。そういうことなんですね。
すっきりしました。
571デフォルトの名無しさん:2008/06/20(金) 11:43:06
こんにちは!

現在VisualC++2005のMFCでプログラムを組んでいます。
Cのstr関数を使用しているのですが、下記のような警告が出ます。

warning C4996: 'strcat' が古い形式として宣言されました。

string.hを見ろって言われて見たのですが、
まだまだ未熟な為、よくわかりません。

一応動作は問題なくできるのですが、気になったので教えて頂けませんか?
自分としてはこの警告を、

問題はありませんが、古い形式で宣言されてるので新しい形式にした方が良いよ。

というニュアンスでとらえています。
それでOKでしょうか?また、OKな場合新しい形式とはどういう形式でしょうか?

よろしくお願いします。
572デフォルトの名無しさん:2008/06/20(金) 12:53:54
これを抑えるのは、_CRT_SECURE_NO_DEPRECATE をdefineする。

新しい形式は、strcpy_s を調べてね
573デフォルトの名無しさん:2008/06/20(金) 12:54:41
strcat だったか、こっちに対応するのはもちろん strcat_s ね
574デフォルトの名無しさん:2008/06/20(金) 14:45:50
>>572
ありがとうございます。
確かに _s をつけたら警告がなくなりました。

ANSIではstrcatとかですが、
VisualC++では _s を付加した新しい形式になってるってことでいいんですか?

ちなみに
>これを抑えるのは、_CRT_SECURE_NO_DEPRECATE をdefineする。
やってみたんですが、警告は消えませんでした・・・orz
575デフォルトの名無しさん:2008/06/20(金) 14:53:05
ISOのCライブラリ標準にはなってるから、そのうちANSIにも入るかもしれないが、わからんな。
CRT のセキュリティ強化
ttp://msdn.microsoft.com/ja-jp/library/8ef0s5kh(VS.80).aspx
576デフォルトの名無しさん:2008/06/20(金) 16:33:10
標準入力をファイルへリダイレクトした時のデバッグ
(コマンドから[c:\hoge.exe < c:\hoge.txt]と入力した時のhoge.exeのデバッグ)
をするにはどうしたらいいですか?

プロジェクトのプロパティ→デバッグ→コマンドライン引数 に" < c:\hoge.txt"を足せばいいかと思ってやってみたのですが、上手くいきません。
577デフォルトの名無しさん:2008/06/20(金) 16:38:56
>>576
それでうまくいくはずだけど、どうなるの?
578デフォルトの名無しさん:2008/06/20(金) 17:16:56
>>577
hoge.exeの中身です↓
int _tmain(int argc, _TCHAR* argv[])
{
 std::string line;
 while (std::cin)
 {
  std::getline(std::cin, line);
  std::cout << line << std::endl;
 }
 return 0;
}

hoge.txtの内容が出力されるはずですが、何も出力されないのです。
(コマンドプロンプトから[hoge.exe(のフルパス) < c:\hoge.txt]とした場合は内容が出力されます。)
引数は
argv[0] --- hoge.exe (のフルパス)
argv[1] --- <
argv[2] --- hoge.txt
になっているのですが・・。
579デフォルトの名無しさん:2008/06/20(金) 17:34:17
それがコマンドライン引数で出来たのは
VisualStudio6以前だけ。

リダイレクトはシェルの機能なんで
コマンドライン引数には書けない。
580574:2008/06/20(金) 17:42:07
>>575
ありがとうございます。
参照させていただきました。

ネットだと、_CRT_SECURE_NO_WARNINGS を
ヘルプだと、_CRT_SECURE_NO_DEPRECATE を

定義すれば良いとありますが、どちらを定義しても警告が消えません。
ちなみに

_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES を 1 として定義する

もやってみましたが警告が消えません。
もしかして定義する場所が違っていますか?
str関数を使用しているファイル内で定義してるのですが。。。

581デフォルトの名無しさん:2008/06/20(金) 17:50:22
>>580
多分、<string.h>をインクルードする前に
定義しないと駄目だと思うぞ。
582デフォルトの名無しさん:2008/06/20(金) 17:51:46
>>578
VC++のバージョンは?
こっちでやってみたら、VS2005だとそのまま動作して2008だと無理だな
583579:2008/06/20(金) 18:06:32
あれ、2008のヘルプにも出来るって書いてあるな。
>>579は取り消し。
584デフォルトの名無しさん:2008/06/20(金) 18:07:43
ヘルプには両方できるって書いてあるんだけど、2008はできなかった。
2005だとそのままでできるから設定がいるか、ヘルプが間違ってるか、どっちかかもね
585デフォルトの名無しさん:2008/06/20(金) 18:22:52
なんか、2008でも「デバッグ無しで開始」だとうまくいった。
バグっぽいな。
586デフォルトの名無しさん:2008/06/20(金) 18:29:38
Sleepとダミーの行置いてデバッグ無しで開始してからプロセスにアタッチしたら
なんとか動いたw
587デフォルトの名無しさん:2008/06/20(金) 19:51:09
VC2008で作成したDllをVC2005をインストールしているPC上から呼び出したところ
dlがありませんといわれました。
VC2005で作り直すとちゃんと呼び出せるdllができます。なにが原因でしょうか?

VC2008で作ったdll→VC2008のPCでは動くがVC2005では認識されない。
VC2005で作ったdll→VC2005のPCでもVC2008のPCでも動く
588デフォルトの名無しさん:2008/06/20(金) 20:00:08
他に依存しないなら単体で動く
589デフォルトの名無しさん:2008/06/20(金) 21:22:39
VC入れてないと使えないんじゃ普通の人には使えない
590デフォルトの名無しさん:2008/06/20(金) 22:12:11
featurepackどうですか?
591578:2008/06/20(金) 22:34:52
>>582
バージョンはVS2008です。

皆様の言うとおりデバッグ無しでは動作しました。
バグ?ですかね。あきらめつつ設定でできないか頑張ってみます。
レス下さった皆様ありがとうございました。
592デフォルトの名無しさん:2008/06/21(土) 07:32:27
>>587
dllがないなら、dll入れればいいじゃん
593デフォルトの名無しさん:2008/06/21(土) 13:47:42
DLL自体じゃなくてプロジェクトのことだというオチじゃないだろうな?
2005のプロジェクトは2008でも読めるが、逆はできんぞ。
まあソリューションとプロジェクトのヘッダ書き換えればほぼイケるけど。
594デフォルトの名無しさん:2008/06/21(土) 22:51:53
本当にくだらない質問だとは思うんですけど

Visual C++っていうのはソフトなんだよね?
それはれっきとした売り物でフリーじゃないよね?
そしてプリグラムを勉強したかったら何かしらのプログラミングソフトを購入することが必要?
595デフォルトの名無しさん:2008/06/21(土) 22:54:22
>>594
フリーの開発環境もあるからググレ
596デフォルトの名無しさん:2008/06/21(土) 23:00:08
>>594
マイクロソフトのホムペを隅から隅まで確認しろ
597デフォルトの名無しさん:2008/06/21(土) 23:00:56
>>594
Visual C++ 2005/2008 Express Edition はフリー
598デフォルトの名無しさん:2008/06/21(土) 23:08:12
ありがとうそれを落としていろいろ勉強してみるわ
599デフォルトの名無しさん:2008/06/22(日) 01:36:36
>>597のを落として実際にプログラムをサイトからみたの拝借して打ち込んでるんだけど再現できない

#include <iostream.h>

void main()
{
int i;
i = 5 + 15;
cout << "計算すると";
cout << i;
cout << "になります。" << endl;
}

これなんだけどなぜだろうか?
600デフォルトの名無しさん:2008/06/22(日) 01:56:16
>>599
iostream.hはC++標準の一部ではありません。
現代的なCompilerの多くではサポートされません。
VC7以降も同様です。
601デフォルトの名無しさん:2008/06/22(日) 01:58:20
#include <iostream>
using namespace std;
602デフォルトの名無しさん:2008/06/22(日) 04:56:11
都合上 using namespace std; してるところが多いけど
本当は using namespace は使わない方がいい。
今は気にしなくていいけどな。
603599:2008/06/22(日) 07:52:34
ということは<iostream.h>を<iostream>にかえれば大丈夫になるわけかな?
604デフォルトの名無しさん:2008/06/22(日) 09:28:13
ここはC++を教えるスレじゃないよ
605デフォルトの名無しさん:2008/06/22(日) 11:14:40
std::endl; を書くのがめんどくさいです(><
606デフォルトの名無しさん:2008/06/22(日) 11:21:21
607デフォルトの名無しさん:2008/06/22(日) 11:25:51
【初心者歓迎】C/C++室 Ver.55【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1213466622/

C++相談室 part62
http://pc11.2ch.net/test/read.cgi/tech/1211900039/

はきだめC/C++下級者の質問箱 2
http://pc11.2ch.net/test/read.cgi/tech/1156206091/
608デフォルトの名無しさん:2008/06/22(日) 11:31:19
前から気になってたんだけどC++の話駄目だとこのすれってどんな話題が主なの?
Win32やMFCもNGだよね?
そうすると環境の設定とか?w
609デフォルトの名無しさん:2008/06/22(日) 11:37:13
>>608
よくわかってるではないか。
610デフォルトの名無しさん:2008/06/22(日) 12:00:13
VCの入門書よりC/C++の本を読んだ方がいいやつは、そういうスレヘ行った方がいいだろ
611デフォルトの名無しさん:2008/06/22(日) 12:01:50
そうだな
612デフォルトの名無しさん:2008/06/22(日) 12:28:02
>>606
でも>>602って(><
613デフォルトの名無しさん:2008/06/22(日) 14:02:24
std::e と打った時点でインテリセンス効いてない?
614デフォルトの名無しさん:2008/06/22(日) 14:26:01
>>612
今は気にするな
615デフォルトの名無しさん:2008/06/22(日) 14:53:47
大量に発生するC4146の山
VCは素晴らしいコンパイラ
616デフォルトの名無しさん:2008/06/22(日) 15:36:17
>>612
今は気にしなくていいけどな。
617デフォルトの名無しさん:2008/06/22(日) 19:51:06
今VC++2008勉強してるんだけど、これって標準のC++と全然違う?
string型使おうと思ったらPTSTRに変換できないって何だよそのエラーorz
最終的にはstringのdataメソッド使えば問題無かったけど・・・
Win32APIとか難しすぎるぜ!
618デフォルトの名無しさん:2008/06/22(日) 20:12:20
c_str 使え。
619デフォルトの名無しさん:2008/06/22(日) 20:17:01
PTSTR は Unicode 環境を対象とする設定でコンパイルする場合は
wchar_t* で typedef されるので wstring を使う必要があると思うんだが、
VC++2008 ってデフォルトで Unicode 環境を対象にしてなかったっけ?
今手元に環境が無いから何とも言えないが。
620デフォルトの名無しさん:2008/06/22(日) 20:38:36
>>618->>619
セックス!
今までPerlとかPHPとかスクリプト系のプログラミングしかまともにしたことが無かったから
処理系(コンパイラ?)によって方言があるっていうのがなんとも理解しづらいorz=3

とりあえずなんか小さなアプリをチョコチョコ作ってそこから方言の意味を勉強していくよ。
621デフォルトの名無しさん:2008/06/22(日) 20:41:21
これは方言ってわけではないね。
言語仕様が変わってる訳じゃないから。
622デフォルトの名無しさん:2008/06/23(月) 05:28:16
VC++には何故 C99 標準の vsscanf が無いんですか?
623デフォルトの名無しさん:2008/06/23(月) 17:55:58
visual studio 2008のWindowsフォームアプリケーションでアプリを作成中です
groupboxの中に複数のcheckboxを配置し、
同じgroupboxの中にあるボタンを押すと、全部のチェックボックスがチェックされる、という仕組みを作ろうとしています。

とりあえず、ボタンが押された時にグループボックス内のコントロール分のループを回すところまでは上手くいったのですが、
1.そのコントロールがチェックボックスと判定するにはどうすれば良いのか
2.そのコントロールがチェックボックスだった場合、それにチェックを入れるにはどうすれば良いのか
が判りません。

if(groupbox1->Controls[i]がチェックボックス){
groupbox1->Controls[i]->Checked;
}
…みたいな感じのことがやりたいのですが、どうすれば良いのでしょうか。
624デフォルトの名無しさん:2008/06/23(月) 18:04:48
キャストが成功するかどうかで判定すれば?
625デフォルトの名無しさん:2008/06/23(月) 18:23:31
>>623、 〜->checked=true; でした。
>>624
ControlからCheckBoxへのキャストのやり方がわからないので困っているのです。
626デフォルトの名無しさん:2008/06/23(月) 18:52:11
627デフォルトの名無しさん:2008/06/23(月) 19:21:32
>>626
出来ました!ありがとうございます。
628デフォルトの名無しさん:2008/06/23(月) 20:00:03
C++で作った『ハイ アンド ロー』のゲームで
ハイスコアを記録させたいのですが、
どうやったら記録できるのでしょうか??

本当に初心者なんでよろしくお願いします。
629デフォルトの名無しさん:2008/06/23(月) 20:55:11
>>628

class CScore
{

~~~~
public:
void SetScore(int score)
int GetScore(void)

private:
int m_HiScore = -1;

};

// スコア登録関数
void CScore::SetScore(int score)
{
if (m_HiScore < score) m_HiScore = score;
}

int CScore::GetScore()
{
return m_HiScore;
}
630デフォルトの名無しさん:2008/06/23(月) 20:59:18
VC++ 2008 Express で、どのあたりまで作れるの?
ウィンドウズアプリケーション作れる?
製品版とどのくらいの差があるのかな。
631デフォルトの名無しさん:2008/06/23(月) 21:04:43
632デフォルトの名無しさん:2008/06/23(月) 21:08:22
>>631
ありがd
633デフォルトの名無しさん:2008/06/23(月) 21:40:57
>>629

何が書いてあるのかさっぱりなんですが・・・
634デフォルトの名無しさん:2008/06/24(火) 02:44:07
ワロタ
635デフォルトの名無しさん:2008/06/24(火) 09:16:00
>ハイスコアを記録させたいのですが、
>>628 記録方法で、3点
・ハイスコアの出し方
・画面表示のしかた
・ファイルへの書き方

ファイルへの書き方のような気がする。間違ってたら言って。
636デフォルトの名無しさん:2008/06/24(火) 12:48:20
【初心者歓迎】C/C++室 Ver.55【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1213466622/

C++相談室 part62
http://pc11.2ch.net/test/read.cgi/tech/1211900039/

はきだめC/C++下級者の質問箱 2
http://pc11.2ch.net/test/read.cgi/tech/1156206091/
637デフォルトの名無しさん:2008/06/24(火) 14:05:47
>>636
このコピペ野郎いい加減うざいな
638デフォルトの名無しさん:2008/06/24(火) 17:59:17
>>635
ハイスコアの保存(ファイル)に一票
639デフォルトの名無しさん:2008/06/24(火) 21:22:10
>>635

何が書いてあるのかさっぱりなんですが・・・
640デフォルトの名無しさん:2008/06/24(火) 21:30:39
>>639 の頭の中がかさっぱりなんですが・・・
641デフォルトの名無しさん:2008/06/24(火) 23:32:04
質問です
VC++のMFCで計算したデータを、
作成しているExcelテンプレートの特定の文字列に上書きすることは可能ですか?


MFCのexe → テンプレート起動 → 「kekka」に計算結果を上書き → 別名で保存(テンプレートはそのまま)

こんな感じで
642デフォルトの名無しさん:2008/06/24(火) 23:40:20
poiがいいよ
643デフォルトの名無しさん:2008/06/24(火) 23:59:51
>>642
JAVA?のほうがやり易いんですかね・・
ググってきます
644デフォルトの名無しさん:2008/06/25(水) 00:30:38
DirectXでゲーム作るのが目的でVC++始めた
よくありがちな厨房ですが

Win32APIなプログラムでオセロ作るのに1ヶ月もかかった馬鹿な漏れに
MFCとは一体何なのか勉強すべきなのかを教えてください
645デフォルトの名無しさん:2008/06/25(水) 00:47:08
・ExcelをCOM経由で叩く。ライセンスとプロセスの残りには注意

・Excelを純な「表」として使ってるなら、ODBCドライバ。
 SQLの言う「テーブル」に当たらなければ涙目

・(Excel2007形式)、ドトネト3.0+OpenXMLSDK

・Java+POI

・Lotus123形式が扱いやすいってJoelがいってた
646641:2008/06/25(水) 01:04:25
>>645
Excelのバージョンでも違うみたいですね
ちょっとほかの方法を考えてみます。ありがとうございました
647デフォルトの名無しさん:2008/06/25(水) 02:30:52
>>644
Studioに支援機能があったりして感じ大掛かりだけど、ぶっちゃけ、ただのWin32APIのラッパークラスだよ

だから、ちょっとしたツール作るには便利だけど、覚えたからと言って何か新しい事が出来る訳では無く、
知ってて困る事は無いけれど、知らないからと言って何か作れない訳じゃないって事で判断ヨロ。
648デフォルトの名無しさん:2008/06/25(水) 03:58:27
Visual Studio.NET2003を使っているのですが、リソースを開いたとき
プロパティが灰色で全く何も表示されなくなってしまいました。
戻し方はありますでしょうか?

もしくは、VCの設定を完全に初期状態に戻したいのですが、
どの辺をいじったら良いでしょうか?
649デフォルトの名無しさん:2008/06/25(水) 05:52:15
>>644
MFCはWin32をラップするクラスを集めたライブラリではありません。
Windows上で動作する一般的なアプリケーションソフトは、win32API
だけで完成するものではありません。
簡単に理解できる例をあげると、ワードプロセッサーで範囲を選択し、
これをドラッグアンドドロップする。
ただこれだけの動作が、COMを必要とします。
そこで現在のMFCは、ビジネスソフトウエアにとって必要とされる機能を
含むフレームワークとして構築されています。
フレームワークが想定しているアプリケーションを開発する場合には、
とてもうまく機能すると思われますが、そうでない場合には不満も
あるでしょう。
フレームワークが対象としている開発対象の場合でも、標準の見た目や
コードの古臭さに不満を持つ場合も多いようです。
今後、それらの不満の一部が解消される可能性もあります。
Visual C++ 2008 Feature Pack について調べてみてください。
650デフォルトの名無しさん:2008/06/25(水) 08:01:23
Win32APIだけでもCOMは使えるんじゃなかったっけ?面倒なだけで。
MFCってのは、やろうとおもえば出来るが面倒だ、ってのを
わかりやすく、扱いやすいようにしたものだと思ってただ
651デフォルトの名無しさん:2008/06/25(水) 08:11:34
やればできるといっても現実的にはどうか
アセンブリ言語でWindowsアプリを作るみたいにつらい
652デフォルトの名無しさん:2008/06/25(水) 08:38:53
コメントで、

/*
*
*/

の部分が折りたためるのですが、「宣言」となります。
「宣言」の部分にコメントの概要を表示したいのですが、可能でしょうか?
可能なら記述の仕方を教えて下ください。環境は2008EEです。
653デフォルトの名無しさん:2008/06/25(水) 09:40:38
一度Win32アプリケーション プロジェクトでダイアログベースのアプリを作った後
MFCで同じものを作ると有難味がわかる。
654デフォルトの名無しさん:2008/06/25(水) 10:07:11
MFCはゲーム作るには要らないな
>>644にとって、ただの回り道でしかない
655デフォルトの名無しさん:2008/06/25(水) 10:25:37
ゲームつくるのにMFCほどクソなものはない
656デフォルトの名無しさん:2008/06/25(水) 10:30:03
ゲーム作るならC#がいいな
657デフォルトの名無しさん:2008/06/25(水) 14:19:00
HSPならDirectXも使えて一石二鳥
658デフォルトの名無しさん:2008/06/25(水) 14:42:32
DirectXならどれも使えるじゃないか、二鳥と言えるかどうか
659644:2008/06/25(水) 17:12:21
>>647 649 654
ありがとうございまつ
ちょっと面倒なことをやるときの便利なクラスくらいに認識することにします
今のところDirectXのゲーム作るくらいしか目的ないので後回しでよさそうですね

>>656
C#育ちなのでゲーム作りでC#が楽というのは同意なのですが
ランタイムの配布がめんどくさすぎます
「そのランタイムはなんで必要なの?」とか聞いてくるやつに説明するのもめんどくさすぎです
XNAなんかはランタイム地獄のくせに配布も考慮してくれないクソっぷりでorzです
VC++勉強し始めたのも「DirectX使うゲームの配布が楽そうだったから」という理由だけです
660デフォルトの名無しさん:2008/06/25(水) 17:43:04
ランタイムなんて気にしちゃだめだ。
それを言ったらWindows自体がランタイムだ
661デフォルトの名無しさん:2008/06/25(水) 19:21:52
いや気にしろよ
662デフォルトの名無しさん:2008/06/25(水) 22:16:07
そんなの気にするやつはドM
663デフォルトの名無しさん:2008/06/25(水) 22:16:51
まあソレを言ったらDirectXもランタイムだがw
664デフォルトの名無しさん:2008/06/25(水) 23:00:55
VCつかってもWindowsフォームアプリケーションで作ったら結局ランタイムが必要な罠…
665デフォルトの名無しさん:2008/06/26(木) 00:21:06
VBランタイムだけは入れない。
RPGツクールランタイムも入れない。
666デフォルトの名無しさん:2008/06/26(木) 00:25:15
VBのランタイム、Vistaには最初から入ってるよ
667デフォルトの名無しさん:2008/06/26(木) 06:50:53
http://www.atmarkit.co.jp/fdotnet/special/cppcli/cppcli_01.html
こいつ、windows C++で検索すると3位なんだけど、
ネット妄信馬鹿がこの記事信じると思うとやるせない。
668デフォルトの名無しさん:2008/06/26(木) 06:59:02
>>641
MFC関係なくVC++で可能。どうやるかは、自分でがんばってください。
(OLEを使うだけ。MFCならOLEラッパクラスもあったはず。)

>>659
MFC便利だよ。俺はとりあえず入れてる。
STL代わりにもなるし、ちょっとした時に便利。基本APIのラッパーだから軽いし。
669デフォルトの名無しさん:2008/06/26(木) 14:42:22
>>667
間違っていないと思うが
670デフォルトの名無しさん:2008/06/28(土) 14:43:05
objdump 見たいなコマンドはVCでは何になるのでしょう?
671デフォルトの名無しさん:2008/06/28(土) 15:37:24
IntelliSenseについて質問させてください。

#ifdef TEST
#include <hoge.h>


#endif
上記のような内容のインクルードファイル"master.h"を、
main.cpp内でインクルードし、IntelliSenseでhoge.hで定義
されたメンバを表示させたいんですが、できません。
解決策はないでしょうか?

環境はXPsp3+VC++2008です。

672デフォルトの名無しさん:2008/06/28(土) 15:56:46
>>671
表示させたい直前で1分待つ。その後、ctrl+space
673671:2008/06/28(土) 16:07:04
>>672
待ってもだめでした。ncbファイルを削除してもだめです。

#ifdefと#endifをコメントアウトすればIntelliSenseは問題ないんですが、
先の例のmaster.hは外部ライブラリなので中身をいじるとコンパイルでこけます。

書き忘れましたが、VC++2008はExpress版です。
674デフォルトの名無しさん:2008/06/28(土) 16:57:40
常識的に考えて、
コメントアウトされてるヘッダでインテリセンス出来るわけが無いだろ。
675デフォルトの名無しさん:2008/06/28(土) 17:14:50
#define TEST
676デフォルトの名無しさん:2008/06/28(土) 17:22:15
Win32APIプログラムがメインですが
VC++2005 から VC++2008 に移ったときに
プラットフォームSDKが標準でインスコされる以外のメリットを教えてください
またこれはやばいだろというデメリットもあったら教えてくださいお願いします
677デフォルトの名無しさん:2008/06/28(土) 18:03:51
劇的ってほどではないが2008の方が軽かったりする
678デフォルトの名無しさん:2008/06/28(土) 19:16:36
な、なんだって〜?!
真っ先に2005よりは重いと言われると思ってたのに

軽い・・だと・・?!
679デフォルトの名無しさん:2008/06/28(土) 19:48:01
>>669
世の中のほとんどのフリーソフトは、VC++。
速度が違う。映像処理のソフトなんか作れば、他のVB、C#、JAVAなんか使い物になんない。

>>667
胡散臭いな。OSかプログラムの差じゃね?
timeGetTimeで実測出してよ。
680671:2008/06/29(日) 00:38:48
>>675
それでIntelliSenseは効きますが、コンパイルで定義済みだと怒られます。
外部ライブラリの中身は把握してませんし、中身もいじれないので・・・
681デフォルトの名無しさん:2008/06/29(日) 01:35:30
>>679
ほとんどは言い過ぎ
フリーソフトは大分Delphi、BCB製も含まれてる
もちVBもあるけど
最近は.netもちらほら
682デフォルトの名無しさん:2008/06/29(日) 02:23:20
個人で作る場合は自分の環境に合わせて作るし
企業で作る場合は環境に合わせるか汎用にするかで違うっしょ
683204:2008/06/30(月) 00:16:57
Visual Studio .NET 2003のVisual C++で
コマンドライン引数としてファイル名を指定するにはどうすればいいですか?
684デフォルトの名無しさん:2008/06/30(月) 01:04:11
通信をするプログラムを作ったんですが、環境によりセキュリティソフトがwinsockをラップして通信を遮断してしまいます。
winsockをOSのものから強制的に使わせるにはどうしたらよいでしょうか?
SPIというらしいんですがどうしたらよいのか。
685204:2008/06/30(月) 02:18:00
すみません。
過去に一度聞いたことがありました。
コマンドライン引数をファイル名で指定するとき、ファイル名の半角スペースが
パラメータ区切りと見なされて別々の引数になってしまうとのことでしたが
ファイル名のスペースは何で置き換えればいいのでしょうか?
686デフォルトの名無しさん:2008/06/30(月) 03:05:21
>>685
スペースを置き換えるんじゃなくて、引数をダブルコーテーションで囲んであげればいいよ。
687デフォルトの名無しさん:2008/06/30(月) 06:59:36
>>684
パソコンの所有者がブロックさせてるんだからブロックされるのはしかたがない。
688デフォルトの名無しさん:2008/06/30(月) 07:04:24
どーせAdminで実行してるんだろ、という前提で、
現存するファイヤーウオールソフトを列挙して
自動的に殺すコード書けばええやんw
689デフォルトの名無しさん:2008/06/30(月) 07:35:15
そんなこと簡単にできるの?
690デフォルトの名無しさん:2008/06/30(月) 09:22:49
スパイウエアでも作る気か?
691デフォルトの名無しさん:2008/06/30(月) 13:13:00
>>204
・ソリューション
 +プロジェクト を右クリックしてプロパティのページを表示する。

−構成プロパティ
 +デバッグ でコマンド引数を指定する。
692デフォルトの名無しさん:2008/06/30(月) 13:29:19
現在、「TMPGEnc 4.0 XPress」というソフトを自動で操作しようと思い、
プログラムを作成しているのですが、ファイルのドラッグ&ドロップ処理の所でつまっています。
DLLインジェクトを使い、DLL内からドロップ処理を行うことで、他プロセスへのドロップは可能になり、
「メモ帳」などのアプリでは、うまくいったのですが、「TMPGEnc 4.0 XPress」では、まったく動作しません。
そこで「Spy++」を使い「TMPGEnc 4.0 XPress」を調べてみたところ、
ドラッグ&ドロップしてもWM_DROPFILESメッセージが発生していないことが分りました。
そこで質問なのですが、本当にWM_DROPFILESを使わずにドロップされたファイルを取得することは可能なのでしょうか?
また、この場合の解決策を提示して頂けるとありがたいです。
693デフォルトの名無しさん:2008/06/30(月) 13:35:09
DragAcceptは?
694デフォルトの名無しさん:2008/06/30(月) 14:04:01
>>693
どうもです。
DragAcceptをtrueにし、ドロップ処理を行ったところ、WM_DROPFILESは発生しませんでした。
手動でこのソフトにドラッグ&ドロップを行ってもWM_DROPFILESは発生しません。
しかし、ファイルはちゃんと開かれます。
やはりWM_DROPFILESを使わずに取得していると思われるのです。

695デフォルトの名無しさん:2008/06/30(月) 14:18:46
ここ初心者スレですけど
696デフォルトの名無しさん:2008/06/30(月) 14:29:35
>>694
OLE DragDrop じゃない
697デフォルトの名無しさん:2008/06/30(月) 14:46:59
>>696
どうもです。やはりそうなりますか。
「OLE DragDrop」はこの問題について調べている時に、いくつかサイトを見つけていたのですが、
他プロセスのウィンドウにドロップするという課題は解決していたので、必要ないと思っていました。
「OLE DragDrop」は最終的にSendMessageでWM_DROPFILESを投げるものでは、ないのでしょうかね?
手動でドロップしてもWM_DROPFILESが発生しないのであれば、SendMessageでWM_DROPFILESを送っても、
動作しないのでは、と思いまして。
「OLE DragDrop」について調べてみます。
698デフォルトの名無しさん:2008/06/30(月) 14:50:06
わざわざ解答者が少なそうなスレを選んで質問する変態
699デフォルトの名無しさん:2008/06/30(月) 14:59:14
>>697
ちょっと前にどうしてもWM_DROPFILESが発生しなく困ったことが
あったけどOLEDragDropにしたらあっさり解決したよ。
700デフォルトの名無しさん:2008/06/30(月) 15:12:18
>>699
どうもです。
ttp://hp.vector.co.jp/authors/VA016117/oledragdrop5.html
こちらのサイトに置かれているサンプルを利用し、ドロップしてみたところ、
WM_DROPFILESは発生せずにファイルがちゃんと開かれました。
「OLE DragDrop」を実装できれば解決するとおもいます。
ありがとうございました。
701デフォルトの名無しさん:2008/06/30(月) 23:30:33
自分の環境だとVC++がよく落ちるので、外部エディタを使用したいのですが、
連携が取りやすいフリーのエディタってどんなものがあるのでしょうか?
検索したところ、CodeLiteというものくらいしか引っかからなかったので、
ほかにあれば教えてください。

http://www.forest.impress.co.jp/article/2008/05/19/codelite.html
702デフォルトの名無しさん:2008/07/01(火) 00:02:28
指定したファイル名のファイルが存在するかどうかを調べる
関数ってありますか? 今は以下のものを自分で定義して使っています。

bool exist_file(const string& fname)
{
  _finddata_t data;
  return _findfirst(fname.c_str(), &data) != -1;
}
703デフォルトの名無しさん:2008/07/01(火) 00:02:29
>>701
すいません。勘違いして安定するVer(2005)のほうをいれていたので、外部エディタは必要なくなりました。
せっかくだからこのまま使います。
704デフォルトの名無しさん:2008/07/01(火) 00:22:57
VC++2008でWNDCLASSのhIconの指定にLoadIconを使ってきているのですがMSDNライブラリを見るとLoadImageへ移行しろとあるので置き換えたところ
「: error C2440: '=' : 'HANDLE' から 'HICON' に変換できません。'void*' から非 'void' 型への変換には明示的なキャストが必要です。」と出てしまうのですがどうしたらいいのですか?
705デフォルトの名無しさん:2008/07/01(火) 00:40:44
>>704
エラーメッセージを声を出して読め
706デフォルトの名無しさん:2008/07/01(火) 00:59:57
つーか解説書(サイト)の型についてを再読して来い
707デフォルトの名無しさん:2008/07/01(火) 09:30:32
まずはLoadImageの説明を読むのがいいかな
708デフォルトの名無しさん:2008/07/01(火) 09:43:46
>702
FindFirstFile
709デフォルトの名無しさん:2008/07/01(火) 11:04:05
VC2008のエディタの設定についての質問です。
行間の幅を調整することは不可能なのでしょうか。
710デフォルトの名無しさん:2008/07/02(水) 15:02:13
templateの使い方を教えてください
class parent;
class child : parent;
の2つのクラスがあって、
void hogeFunc(vector<shared_ptr<parent> > & param)
を呼び出したいとき、
vector<shared_ptr<parent> > vp;
は渡せるけど、
vector<shared_ptr<child> > vc;
が渡せないのはなんでかわからないです。
お分かりの方、理由を教えていただけないですか。
ちゃんと、pとcは親子関係にあるので問題ないと思っています。
711デフォルトの名無しさん:2008/07/02(水) 15:07:53
vector<shared_ptr<child> >& から vector<shared_ptr<parent> >& に変換できないから。
712デフォルトの名無しさん:2008/07/02(水) 15:21:12
ここはC++スレじゃなくてVCスレだよ
713デフォルトの名無しさん:2008/07/02(水) 16:03:42
>>711
ありがとうとざいます。
>>712
移動します。すいません。
ありがとうございました。
714デフォルトの名無しさん:2008/07/02(水) 22:46:00
すごく初歩的な質問ですいませんが…
Visual C++ 2008 Express Editionを使っているのですが、
リソースの追加の仕方がわかりません。
ヘルプを見てやろうとしたのですが、「プロジェクト→新しい項目の追加→リソース ファイル (.rc)」が無く、
メモ帳で空のリソース スクリプトをプロジェクトに追加しても「ソリューションエクスプローラでプロジェクトを右クリック→追加→リソース」が選択できない状態になっていて困っています。
どうしたらいいのでしょうか。
715デフォルトの名無しさん:2008/07/02(水) 23:03:32
製品版を買う
716デフォルトの名無しさん:2008/07/02(水) 23:17:40
割る
717デフォルトの名無しさん:2008/07/03(木) 00:07:05
Visual C++ 2005 で下のようなクラスを作ったんですが、Key_input()で i に代入、読み込みの操作を加えようとエラーが出ます。
変数の使い方を間違ってるのでしょうか?C++のクラスの使い方を見ながらやったつもりなのですが……

---------- Button_sousa.cpp ----------
#include "StdAfx.h"
#include "Button_sousa.h"

Button_sousa::Button_sousa(void){}
void Button_sousa::Key_input( KeyEventArgs^ e )
{
// 入力されたキーに対する操作を呼び出す
switch( e->KeyCode ){
case Keys::A:
MessageBox::Show( "push A" );
break;
default:
MessageBox::Show( i.ToString() ); // ここでエラーがでる
break;
}
}

---------- Button_sousa.h ----------
#pragma once
using namespace System::Windows::Forms;
ref class Button_sousa
{
public:
Button_sousa(void);
void Key_input( KeyEventArgs^ kc );
private:
int i;
};
718デフォルトの名無しさん:2008/07/03(木) 00:07:58
半角スペースで書いたからインデント全部消えたorz
719デフォルトの名無しさん:2008/07/03(木) 08:41:11
720デフォルトの名無しさん:2008/07/03(木) 09:18:50
MessageBox::Show( i.ToString() ); // ここでエラーがでる

そもそもこれで何をしたいのか意味が分からん
ToStringメソッドを使うの?int型に?
721デフォルトの名無しさん:2008/07/03(木) 10:00:45
別にいいじゃん、それは。
722デフォルトの名無しさん:2008/07/03(木) 10:26:18
エラー内容ぐらい書けよ。
723デフォルトの名無しさん:2008/07/03(木) 10:58:09
検索するとJAVAの資料ばっかり出てくる…
724デフォルトの名無しさん:2008/07/03(木) 11:25:42
i なんか使ってないんだからコメントアウトしとけ

// MessageBox::Show( i.ToString() ); // ここでエラーがで
725デフォルトの名無しさん:2008/07/03(木) 11:31:35
char buff[256];
wsprintf(buff, "%d", i);
MessageBox::Show(buff);

でおk
726デフォルトの名無しさん:2008/07/03(木) 11:33:25
CLRなんだし、MessageBox::Show( i.ToString() ); 自体は問題なく動く
未初期化のiだっておっけー。
エラーが出る原因は別にあるはずなんだけど。
727デフォルトの名無しさん:2008/07/03(木) 13:51:22
なんで、VC++2008の、strftime _tcsftimeは、
書式に無い文字を渡すと例外終了するのかなあ。
単に無視してくれりゃいいのに。

自前でパースしてから、渡してやるしか無いのかな。
728デフォルトの名無しさん:2008/07/03(木) 14:02:37
そんなくだらないことで文句いうやつも珍しいな
729デフォルトの名無しさん:2008/07/03(木) 14:11:02
ちょっと見てみたけど
_ASSERTE( ( "Invalid format directive" , 0 ) );
だからデバッグ時だけの話じゃん。
730717:2008/07/03(木) 14:34:48
いろいろとすみません。

発生したエラーは、
『追加情報: オブジェクト参照がオブジェクト インスタンスに設定されていません。』
というものです。

iはクラスで変数を使うテスト用に用意したものです。
static int i;
にするとエラーなく使えるんですがこれが正しいのかもわからず今検索中。。。

作りたいのはAを押すとiが増えてBを押すとiが減るみたいな感じです。あくまでもクラス内で完結したい。
731デフォルトの名無しさん:2008/07/03(木) 14:44:25
intはプリミティブな変数じゃないの?Integerにしないと。
732デフォルトの名無しさん:2008/07/03(木) 15:08:50
とにかく>>717の通りに書いて実行しても何も問題出ないんだが?
その追加情報の前に何かメッセージ出てるだろ?
隠さずに全部書けよ
733デフォルトの名無しさん:2008/07/03(木) 15:32:33
プログラムとエラーを書きます。
CLRのWindowsフォームアプリケーションで作りました。

---------- エラー ----------
'System.NullReferenceException' のハンドルされていない例外が test.exe で発生しました。
追加情報: オブジェクト参照がオブジェクト インスタンスに設定されていません。

---------- Button_sousa.h ----------
#pragma once
using namespace System::Windows::Forms;
using namespace System;
ref class Button_sousa
{
public:
  Button_sousa(void);
  void Key_input( KeyEventArgs^ e );
private:
int i;
};

---------- Button_sousa.cpp ----------
#include "StdAfx.h"
#include "Button_sousa.h"
Button_sousa::Button_sousa(void){i = 123;}
void Button_sousa::Key_input( KeyEventArgs^ e )
{
  switch( e->KeyCode ){
    case Keys::Right:  i++;  break;
    case Keys::Left:  i--;  break;
    default:  MessageBox::Show( i.ToString() );  break;
  }
}
734717, 733:2008/07/03(木) 15:36:57
手入力で追加した部分を //########## 追加 ########## と書きました。
---------- Form1.hから抜き出し ----------
#pragma once

//########## 追加 ##########
#include "Button_sousa.h"

---------- 中略 ----------

  private:
    /// <summary>
    /// 必要なデザイナ変数です。
    /// </summary>
    System::ComponentModel::Container ^components;

  //########## 追加 ##########
  private: Button_sousa^ buttonSousa;

#pragma region Windows Form Designer generated code

---------- 中略 ----------

      //########## 追加 ##########
      Button_sousa^ buttonSousa = gcnew Button_sousa();
    }
#pragma endregion
  private: System::Void Form1_KeyDown(System::Object^ sender, System::Windows::Forms::KeyEventArgs^ e) {
        //########## 追加 ##########
         buttonSousa->Key_input( e );
      }
  };
}
735デフォルトの名無しさん:2008/07/03(木) 15:38:13
Button_sousa のインスタンスはどうやって作ってる?
736デフォルトの名無しさん:2008/07/03(木) 15:40:06
>>734
Button_sousa^ buttonSousa = gcnew Button_sousa();

buttonSousa = gcnew Button_sousa();
こうしてみ。
737717:2008/07/03(木) 15:41:52
これ以外は何もいじってません。
この状態でコンパイルするとフォームが表示されます。
予定では、左右キーで数字の増減、そのほかのキーで現在の数字を表示です。
ですが、どのキーを押しても、

---------- エラー ----------
'System.NullReferenceException' のハンドルされていない例外が test.exe で発生しました。
追加情報: オブジェクト参照がオブジェクト インスタンスに設定されていません。

が表示されます。
エラーの場所は

    case Keys::Right:  i++;  break;
    case Keys::Left:  i--;  break;
    default:  MessageBox::Show( i.ToString() );  break;

のいずれかです。
『int i;』を『static int i;』とすると予定通りの動作をしますが、これが文法的に正しいのかはよくわからないので今調べてるのが現状です。
738717:2008/07/03(木) 15:43:59
>>736
なんと!できました!
宣言というか作り方というか、そこら辺が間違ってたんですね。。。
ちょっと勉強しなおしてきます。

ありがとうございました。
739デフォルトの名無しさん:2008/07/03(木) 16:25:30
>>729
リリースビルドでも終了する。
740デフォルトの名無しさん:2008/07/04(金) 02:25:03
VC++2008EEでeventと打ったら青字になりました。
eventなんていう予約語C++にはないと思うのですが、どういうことですか?
741デフォルトの名無しさん:2008/07/04(金) 02:29:13
そのeventにカーソル置いてF1押せばいいじゃない
742デフォルトの名無しさん:2008/07/04(金) 02:40:27
>>741
レスthx
おお・・こんな便利な機能が。
しかし、何もインクルードしてないのに、EventClassとか意味がさっぱり・・。
743デフォルトの名無しさん:2008/07/04(金) 03:16:40
event keyword [C++] のほうで。
CLRじゃなきゃ関係ないけど、色は変わるね
744デフォルトの名無しさん:2008/07/04(金) 18:52:35
VC6 MFC ダイアログベース
ボタン設けてウィンドウをキャプチャしてビットマップ保存するコードない?
745デフォルトの名無しさん:2008/07/06(日) 16:32:44
WinDef.h にて宣言されている
typedef int INT;
って、何のためにこんなことしてるのでしょうか。
将来の型サイズが変わったときの互換のため?

また
#define CONST const;
に至っては何のための宣言か想像すら出来ないです、
これらの宣言は何を意味してるのでしょうか。
よろしくお願い致します。
746デフォルトの名無しさん:2008/07/06(日) 16:55:26
小文字と大文字が入り乱れるとキモイから。

const DWORD hoge

CONST DWORD hoge

大文字が宣言で、小文字が変数冥。
このほうがわかりやすいし、マブいっしょ?
747デフォルトの名無しさん:2008/07/06(日) 17:08:24
>>746
レスありがとうございます。
VC++でソースを見る際に、予約語が青文字になるのに対して、
置換後の INT や CONST だと青くならないので、逆に見にくいと思ってたのですが
そういう思想があったのですね。
.NET ではクラス名称に大文字と小文字が入り乱れてますが、
それはまた違う思想なんでしょうかね。
748デフォルトの名無しさん:2008/07/06(日) 17:21:05
設計者が違う
749デフォルトの名無しさん:2008/07/06(日) 17:24:55
>>746
とりあえず全部半角に揃えろ
750デフォルトの名無しさん:2008/07/06(日) 18:00:07
min,max マクロが非常にウザい
751デフォルトの名無しさん:2008/07/06(日) 18:17:58
#define NOMINMAX
752デフォルトの名無しさん:2008/07/06(日) 18:42:05
>>750
関数テンプレートにする
753デフォルトの名無しさん:2008/07/07(月) 00:07:39
Win32APIでマルチスレッドプログラムを作ってますが、
排他処理をするにはセフォマやミューテクス以外で手段はありますか?
ある変数に複数のスレッドが同時にアクセスするのを防ぐためミューテクスを使ってますが
ミューテクスだと遅いだの、プロセス間で使用しないなら使うべきでないとか聞きます
他に手法がわからないのでとりあえず無名のミューテクスを使っていますが、
もっといい手法があったら教えてください
754デフォルトの名無しさん:2008/07/07(月) 00:11:07
クリティカルセクションかな。あと、セマフォだと思うぞ。
755デフォルトの名無しさん:2008/07/07(月) 01:03:14
簡単なことしか出来ないが、Interlocked〜とか
756デフォルトの名無しさん:2008/07/07(月) 10:57:55
CTest* h = new CTest[100];
h[0] = new CTest();
delete[] h;

上記のコードでVC++6.0でコンパイルすると
二項演算子 '=' : 型 'class CTest *' の右オペランドを扱う演算子は定義されていません。(または変換できません)(新しい動作; ヘルプを参照)

というエラーが発生します。
どこが間違っているのかわからないので教えてくださいませ。
757デフォルトの名無しさん:2008/07/07(月) 11:14:50
h[0] = * new CTest();

としたらいけました。なぜ?
758デフォルトの名無しさん:2008/07/07(月) 11:21:34
>>756
>h[0] = new CTest();
h[0]はCTest型。
っつぅか1行目でCTestを100個作ってるのになんでこれをするんだ。
759デフォルトの名無しさん:2008/07/07(月) 11:26:10
>>756
おお!
CTestの実態を100個作るということなのですか
CTestの入れ物を100個作るのかと思ってました。
760デフォルトの名無しさん:2008/07/07(月) 11:27:13
>>757
h[0]の型はCTest、
new CTest()の型はCTest* のため。
そもそも756の1行目の時点でh[0]にはCTest型のオブジェクトが
入ってるから2行目は不要だし、メモリリークするよ。
Javaから来た人?
761デフォルトの名無しさん:2008/07/07(月) 11:32:29
>>760
なるほどー。なんとなくわかってきました。
てっきりh[0]には &CTestが入るのかと思っていました。

>Javaから来た人?
VBのほうから来ました。
762デフォルトの名無しさん:2008/07/07(月) 11:34:48
あれ?そうすると当初の予定の
CTestのポインタが100個入る配列は
どうやって宣言すればいいのでしょう???アホですみません。
763デフォルトの名無しさん:2008/07/07(月) 11:45:48
CTest* h[100];
764デフォルトの名無しさん:2008/07/07(月) 11:45:55
CTestへのポインタの配列が欲しいなら、CTest * h[100];。
でもこれにnew CTest[100]の1回で詰めるのはできないよ。

ほんとにポインタが100個欲しいの?CTestが100個並んでればいいんじゃないの?
765デフォルトの名無しさん:2008/07/07(月) 11:49:58
>>763
おお!なるほど。

>>764
ありがとうございます!

これでポインタと配列をマスターできた気がします。
766デフォルトの名無しさん:2008/07/07(月) 11:50:39
オレがC/C++からjavaに行って混乱したものの逆パターンだなw
767デフォルトの名無しさん:2008/07/07(月) 11:54:15
そういえばJavaも少々かじりました。
768デフォルトの名無しさん:2008/07/08(火) 04:32:52
配列の限界っていくつですか?
a[9999999999]とかってできるんですか?
769デフォルトの名無しさん:2008/07/08(火) 08:30:01
配列のサイズが1Mバイト超えたらエラーが発生した。
770デフォルトの名無しさん:2008/07/08(火) 09:31:09
それは配列のサイズの限界じゃなくて
設定したスタックサイズの限界。
771デフォルトの名無しさん:2008/07/08(火) 09:32:29
1.5G配列でも問題無くできる、どんなボロイPC使ってるのか? ほんとにVCなのか?
772デフォルトの名無しさん:2008/07/08(火) 09:33:50
自動変数で作ればスタックサイズの影響を受ける。
それ以外なら、連続でとれるメモリの大きさに影響される。
773デフォルトの名無しさん:2008/07/08(火) 09:37:08
スタックか、そんな巨大なデータをスタックに持つ時点で設計が間違っている。
774デフォルトの名無しさん:2008/07/08(火) 10:16:46
32ビットコンパイラなら2Gが限界だろ
775デフォルトの名無しさん:2008/07/08(火) 16:08:26
絵を描くとき、点の座標を配列で記録していくのは設計が間違ってるんですか?
たとえば座標1000ポイントある絵を座標を計算で変化させながら移動させて
1秒間に100コマとか作るのって配列でやる以外にいい方法はありませんか
776デフォルトの名無しさん:2008/07/08(火) 16:16:00
int *a = (int*)malloc(sizeof(int) * 9999999999);
これでヒープ領域に確保される
777デフォルトの名無しさん:2008/07/08(火) 16:33:35
メモリ不足の前にオーバーフローしてそう
778デフォルトの名無しさん:2008/07/08(火) 16:34:58
メモリストリームに書いていくのはどうか
779デフォルトの名無しさん:2008/07/08(火) 16:37:56
1秒間に100コマとかいうレベルだと
適当な思いつきで作っても使い物にならない。
780デフォルトの名無しさん:2008/07/08(火) 16:46:03
関数は抜けてないので消去されない、ヒープ領域の意味がわからないですが、もっと早い段階でメモリは消去されているってことなんですか?
つまり使い終わったらもう消去されてるんですか?
781デフォルトの名無しさん:2008/07/08(火) 16:50:13
描画1000点目近くになると表示している時間が短すぎて線が消えてるんですよね
1点目近くは1000点描画する間描画されてるんで見えるんですが・・・むずかしいですね
782デフォルトの名無しさん:2008/07/08(火) 16:52:55
思いつきで作っても使い物にならない。
783デフォルトの名無しさん:2008/07/08(火) 16:58:49
PC用モニタに倍速液晶でもきたの?
784デフォルトの名無しさん:2008/07/08(火) 19:30:21
DirectXにまかせたほうがいい
785デフォルトの名無しさん:2008/07/08(火) 22:32:17
#includeとか#defineの多重定義を防ぐのは
#pragma onceしかないのでしょうか?

AとBがincludeされていたらCをdefineとかやりたいんですが可能ですか?
786デフォルトの名無しさん:2008/07/08(火) 23:10:03
#ifndef hoge // hoge が define されてなかったら
#define
#endif

----------

#ifdef hoge // hoge が define されていたら
#define
#else // hoge が define されてないとき
#define
#endif

とか
787デフォルトの名無しさん:2008/07/09(水) 00:45:46
>>786
ありがとうございます
#defineについては期待通りの挙動を得ることができました
#includeも同じような処理ってありますか?
788デフォルトの名無しさん:2008/07/09(水) 01:48:01
#defineを違うのに変えてみればいいんじゃないかな
789長くてすみません・・・(1/2):2008/07/09(水) 11:34:15
ここで聞くのが適切かわからないのですが、まずお聞きします。

連想配列を使いたいんですが、使い方がわかりません。
ぐぐってみた感じ、「C++のSTLでmapがある」というのはわかりました。
とりあえず、STL、CLI、MFCとか単語だけはわかったのですが、どういった環境での開発がSTLとかCLI、MFCとかの状態に当てはまるのかわかりません…。
で、とにかくやってみたのですが、コンパイルエラーでした。・゚・(ノд`)・゚・。

[やってみたこと]
とりあえずチェックボックスを2つ配置。
iniView.cpp の上の方に #include <map> と書き、下のほうで
void CiniTestView::OnBnClickedCheck2()
{
  map <CString, CString> m; //ここの行がエラーの対象
}

[結果]
エラー 1 error C2065: 'map' : 定義されていない識別子です。
エラー 2 error C2275: 'CString' : この型は演算子として使用できません
エラー 3 error C2065: 'm' : 定義されていない識別子です。
エラー 4 error C2275: 'CString' : この型は演算子として使用できません
790長くてすみません・・・(2/2):2008/07/09(水) 11:35:59
[作りたいもの]
WindowsMobile6用のiniファイル読み書き機能つきタイマー
→iniファイルの情報の取得に連想配列を使いたいです。
→タイマー機能はとりあえず実現できたので、設定ファイルを作りたいと思いました。

[開発環境]
OS : WindowsXP
ツール : Visual Studio 2005 Pro(90日評価版)

[プロジェクトの設定]
・MFCスマートデバイスアプリケーション
・SDKとして、Windows Mobile 6 Professionalを選択
・シングルドキュメント、ドキュメント ビュー アーキテクチャサポートあり、スタティックライブラリでMFCを使用
・基本クラスにCFormViewを選択


よろしくお願いいたしますm(_)m
791デフォルトの名無しさん:2008/07/09(水) 11:46:08
std::map

エラーメッセージ読めよ
792デフォルトの名無しさん:2008/07/09(水) 11:46:44
std::map <CString, CString> m;
793デフォルトの名無しさん:2008/07/09(水) 13:01:15
>>791-792
ありがとうございますm(_)m

エラーメッセージで「定義されていない」というのはわかったのですけど、
includeしているものがいけないのか、何が足りないのか、はたまたMobileでは使えないのか、判断がつかなかったのです。
名前空間の解決のみの話だったのですね。。。

コンパイル通りました!
どうもありがとうございました。
794デフォルトの名無しさん:2008/07/09(水) 20:08:09
>>787
インクルードガード
795デフォルトの名無しさん:2008/07/10(木) 19:10:46
VC++6でMFC ダイアログアプリと、そこから動的に呼び出されるDLLの作成で困ってます。

開発を楽にしようと上記二つのプロジェクトを1つのワークスペースにまとめたのですが、
コンパイル確認しようとするとき、DLLのソースをアプリのプロジェクトに参加させそうになったり(プロジェクトの構成切り替え忘れ)、
DLLのビルド忘れ防止に依存関係を有効にしたら
アプリのビルド時のリンクでDLLファイルが読み込めないとエラーが出たり。

どうプロジェクトを構築すればいいのでしょうか?
よろしくお願いします。
796デフォルトの名無しさん:2008/07/11(金) 19:27:50
>>795
IDEが対応していないことをしようとしても、無理が出て結局楽にならないでしょう。
2003以降に移行してソリューションを使いましょう。
797デフォルトの名無しさん:2008/07/11(金) 19:54:16
ありがとうございます。
VC++6では無理ですか。

アマゾンでVisual Studio 2008 Standard Editionの値段調べたら28,161円。
・・・うーん・・・。

アカデミックの方買えないかなぁ・・・。
798デフォルトの名無しさん:2008/07/11(金) 20:02:15
プログラマが28161円に躊躇しなくてはいけない現状をなんとかしないとな
もっと給料うpを訴えよう!
799デフォルトの名無しさん:2008/07/11(金) 21:16:55
Expressつかえよ……と思ったらMFCか。
800デフォルトの名無しさん:2008/07/11(金) 21:21:53
MFCがなくともAPIで同じことできるんじゃないの?
801デフォルトの名無しさん:2008/07/11(金) 22:09:50
めんどいじゃん。
802デフォルトの名無しさん:2008/07/11(金) 22:23:31
Upgrade版なら2008stdは19000円くらいになると思たけど
アレならExpressからのUpgradeにしとけばいいし。
803デフォルトの名無しさん:2008/07/11(金) 22:39:51
28161円に躊躇するような奴はプログラマじゃない
例えば本当に切れ味のいい28161円の包丁に躊躇する料理人がいると思うか?
例えば本当に切れ味のいい28161円の村正に躊躇する侍がいると思うか?
例えば本当にゆうこりんみたいな28161円のダッチワイフに躊躇する変態がいると思うか?

つまり、おまえは本当の変態じゃない
804デフォルトの名無しさん:2008/07/11(金) 23:04:48
30000円しか持ってなかったら、28161円のダッチワイフに躊躇する
805デフォルトの名無しさん:2008/07/11(金) 23:15:58
オリエント工業のダッチワイフなんてエンタープライズエディションより高額なんだぜ?
806デフォルトの名無しさん:2008/07/11(金) 23:48:56
俺の息子が元気な内に600kのを買いたいな
807デフォルトの名無しさん:2008/07/12(土) 04:03:12
アカデミック版の2005が安かった。
808デフォルトの名無しさん:2008/07/12(土) 05:01:59
それより虹にいく方法を…
せめて抱き枕+会話可能なAIを…
809デフォルトの名無しさん:2008/07/12(土) 06:48:58
抱き枕の中にスピーカー入れればいいだけだろjk
810デフォルトの名無しさん:2008/07/13(日) 04:38:27
VC6 は for 文で定義した変数のスコープが for 文の外でも有効なのでちょっとびっくり。
あと STL に max がなかったり・・・。
811デフォルトの名無しさん:2008/07/13(日) 04:57:08
for は #define for if(0); else for で解決。
あと、std::max はあったと思う。
812デフォルトの名無しさん:2008/07/14(月) 12:25:53
ないあるよ。標準的なマクロにmaxがあるからだと思う。
813デフォルトの名無しさん:2008/07/14(月) 14:03:41
質問です。

VC++6.0 ダイアログベース MFC
WindowsXP SP3

の環境で作成した、ウィンドウをBMPで保存するプログラムが、

別のPC
VC++6.0 WindowsXP おそらくSPなし

の環境ではBMP画像が「描画できませんでした」となってしまいます。

SPの有無でうまく動作しないのでしょうか?
どうかご教授おねがいします。
814デフォルトの名無しさん:2008/07/14(月) 14:08:32
おそらくって、正確にわからん?
SP2なら、ttp://support.microsoft.com/kb/889412/ja の可能性もあると思うけど。
815デフォルトの名無しさん:2008/07/14(月) 14:37:39
>>814
ありがとうございます。
ただいまソフトが動作しなかったPCが手元にないので、確認してもらっているところです。
そのPCはインターネットに繋がっていないので、おそらくアップデートしていないのではないかと思われます。
また確認できたら報告します。
816デフォルトの名無しさん:2008/07/14(月) 20:44:48
おまんこちゅっちゅしたいお
817デフォルトの名無しさん:2008/07/14(月) 20:53:57
昔のPCでパラレルポート使ってH/L自由に出力するプログラム作ったことがあるのですが、
XPやVistaなどで同じようなことをするにはどうすればよいのですか?
尚、パラレルポートには限らず、ポートなら何でも良いです。
出来ればタダで実現できる方法が良いです。
818デフォルトの名無しさん:2008/07/14(月) 21:18:42
MSにカネ払わないと無理
819デフォルトの名無しさん:2008/07/14(月) 22:04:08
VC++ 2008 Express Edition を使っています.
名前空間中のヘッダファイルの関数宣言と,ソースファイル中の関数定義が,
クラスビューで重複して表示されるのは仕様なんでしょうか?

-------------------------
// Foo.h
namespace Test
{
void Hoge();
}
------------------------
------------------------
// Foo.cpp
namespace Test
{
void Hoge(){;}
}
-----------------------
と書くと,クラスビューで

{}Test .
Hoge()
Hoge()

と表示されます.どっちをクリックしても関数定義に
ジャンプしてくれるので実害は無いのですが..
# static メンバ関数にしようかな.
820デフォルトの名無しさん:2008/07/14(月) 22:33:06
>>818
やっぱそうなんですか。嫌な予感はしてたんですが。
カネか・・・・・・
821デフォルトの名無しさん:2008/07/15(火) 00:02:04
>>817
COM1とかLPT1とかというファイル名でCreateFileすればいい。
それとSetCommStateとかでググればサンプルも見つかると思う。
822デフォルトの名無しさん:2008/07/15(火) 00:43:49
>>818
DDKも今やタダだよ。
823デフォルトの名無しさん:2008/07/15(火) 01:55:10
VC++2005を使用しています。LibraryのImportについてうまくいかないので質問させてください。

QuickTime SDKをいれ、QuickTime SDKのAPIを使用したいのですが、
コンパイルで外部シンボルエラーになってしまいます。
(InitializeQTML(long))というのが
LNK2001: 外部シンボル ""extern "C" short
__cdecl xxxxx" (?xxxxx@@$$J0YAFJ@Z)" は未解決です。

以下のことは行いました。
Windows用のQuickTimeSDKをインストール
プロジェクトのプロパティで該当するlibの入っているフォルダを参照するように
設定(libをバイナリファイルで覗いてみると、使用したいAPIがみつかりました)
使用するAPIを定義したヘッダファイルのインクルード
共通言語ランタイムを://clr:pureから://clrへ

外部ライブラリは上記で大丈夫だと思っていましたが、コンパイルエラーになってしまいます。
何か、さらに必要な点、確認すべき点はありますでしょうか。
824デフォルトの名無しさん:2008/07/15(火) 02:02:30
「追加の依存ファイル」は?
825823:2008/07/15(火) 02:25:14
>>824
さっそくのお返事ありがとうございます。
追加の依存ファイルでlibファイルを指定してみました。特に使用していない関数のシンボルエラーになりました。存在するlibは全て追加してみたのですが・・・


826デフォルトの名無しさん:2008/07/15(火) 02:30:20
基本交換法の関数化ってどうやるんですかね
827デフォルトの名無しさん:2008/07/15(火) 08:08:00
pragma warning(disable)
と同様の効果を、プロジェクトのプロパティで指定する方法はありますか
828デフォルトの名無しさん:2008/07/15(火) 09:39:28
>>823
エラーにextern "C"まで出てるのはおかしい。
その部分、いったいどうやって書いた?
829デフォルトの名無しさん:2008/07/15(火) 12:51:19
>>813です。

確認したところSP2だということがわかりました。
SP3にアップデートすれば解決するのでしょうか?
830デフォルトの名無しさん:2008/07/15(火) 13:49:33
>>829
原因の一つとして考えられるってだけで、なおるかはわかんないよ。
でももしそのプログラムがGDI+を使ってるんだとしたら、HotFixを試してみるのがいいし、
単体HotFixじゃなくても、SP3でその原因は排除できるね。
831デフォルトの名無しさん:2008/07/15(火) 14:22:23
>>830
SP3を入れて、また試したいと思います。ありがとうございました。
832デフォルトの名無しさん:2008/07/15(火) 21:19:19
SP3いれるときは、最悪の場合クリーンインスコする覚悟で。
重要なデータのバックアップを忘れるな。
833デフォルトの名無しさん:2008/07/15(火) 23:26:59
Visual C++ 2005 でCLRのフォームアプリケーションを使用しています。

クラスを作成してそこからあるDLLの関数に関数のポインタを渡したいのですが、
渡したポインタが『__clrcall』だから『__stdcall』には使えないと言われてしまいます。
どうやればstdcallの関数を作ることが出来るのでしょうか?
834デフォルトの名無しさん:2008/07/15(火) 23:38:28
>>833
プロジェクトのプロパティの全般で、共通言語ランタイムサポートが
/clr:safeや/clr:pureになっているならそこを/clrにして、
問題の関数に__stdcallを付ける、void __stdcall hoge()のように。
835デフォルトの名無しさん:2008/07/15(火) 23:39:05
よくわからんが、
#pragma unmanaged
836デフォルトの名無しさん:2008/07/15(火) 23:40:35
>>827
プロジェクトのプロパティ→(構成プロパティ)→C/C++→詳細→指定の警告を無効にする
837デフォルトの名無しさん:2008/07/16(水) 15:28:59
>>834
hoge.hで、

----------
public:
  static void __stdcall mes( void );
----------

とし、hoge.cppで、

----------
void __stdcall hoge::mes( void )
{
  MessageBox::Show( "呼び出すよ!" );
}
----------

としましたが、どちらも以下のワーニングが出てしまいました。

「warning C4441: '__stdcall ' の呼び出し規約が無視されました。代わりに、'__clrcall ' を使用しました」

/clr:pureでも/clrでも出てしまうので、現在試行錯誤中です。。。

>>835はよくわからないので勉強中です。
838デフォルトの名無しさん:2008/07/16(水) 17:51:08
質問です。
Visual C++ 2008 Express Editionをインストールしたのですが、
libc.libやlibcmt.libなどのランタイムが見当たりません。
別途ダウンロードする必要があるのでしょうか?
839デフォルトの名無しさん:2008/07/16(水) 17:51:15
>>837
そのクラスの外に関数を書け。
ref/valueクラス内ではその警告も言っている通り__clrcallしか選べない。
840デフォルトの名無しさん:2008/07/16(水) 17:52:22
>>838
実際にコンパイル・リンクしてみてエラーにならなければ、どこかにインストールされているはず。
841デフォルトの名無しさん:2008/07/16(水) 17:54:36
まあlibc.libは無いけどな。
libcmt.libはあるはず。
842838:2008/07/16(水) 18:13:02
>>840,841 レスありがとうございます。
libc.libはありませんでしたがlibcmt.libはありました。見落としていました。
申し訳ありませんでした。
843デフォルトの名無しさん:2008/07/17(木) 20:50:04
エディタの行間を広くするにはどうすれば良いでしょうか。
844デフォルトの名無しさん:2008/07/17(木) 21:38:30
上下が広いフォントを使う
845デフォルトの名無しさん:2008/07/17(木) 21:56:18
例えばどんなフォントがありますか?
自分が持ってるフォントを色々試したのですが、相応しいのが見つかりませんでした。
846デフォルトの名無しさん:2008/07/17(木) 22:07:03
Ariel Unicode MS なんか広かった気がするが。
フォントは自分で探す方がいいよ。いろいろあって面白いから。
847837:2008/07/17(木) 23:29:33
>>839
たぶん出来たんだと思う…… 曖昧ですみませんが。ありがとうございました。
デバッグするハードがうまく動かないので試せないorz
ワーニング等は出なくなりましたので大丈夫だと思います。
848デフォルトの名無しさん:2008/07/17(木) 23:46:32
今日はじめたばっかの初心者なんですが、.NETとか使わない、バイナリexeプログラムを作りたいんですが、どのプロジェクトを選べばいいんでしょうか??
849デフォルトの名無しさん:2008/07/17(木) 23:57:23
NETは使わない
850デフォルトの名無しさん:2008/07/18(金) 00:06:11
VisualC++の空のプロジェクトからはじめろ
851デフォルトの名無しさん:2008/07/18(金) 00:12:42
【ソースファイル→追加→新しい項目】で出てくるウインドウに、
cppファイル?(ソースコード)の追加が無くなってしまったのですが、
どうしたらでてきますでしょうか?
852デフォルトの名無しさん:2008/07/18(金) 00:51:18
>>851
M$に聞くしかないんじゃないかな
853デフォルトの名無しさん:2008/07/18(金) 00:55:08
原因がわからずじまいで気持ち悪いですが、修復インストールしたら出てきました。

>>852
ありがとうございました。
また、VCのversionなど環境を書かずに質問してしまって申し訳ないです。
854デフォルトの名無しさん:2008/07/18(金) 23:44:32
          ζ
         / ̄ ̄ ̄ ̄\
       /         |
       | ⌒  ⌒   /|
       | (・)  (・)   |||||||
       | ⊂⌒◯-----∂)___   ___
       | ||||||||_     /     ゙Y"     \
         \ヽ_/ \/              \
         \    /                 \
          / ̄ ̄ ̄ ̄)        *      ( ̄ ̄ ̄ ̄)
         |    ─<         |\      >─   (
         |      )     /  (|ミ;\    (      )
         ヽ    ̄ ̄)    /(___人|,iミ'=;\  (  ̄ ̄   )
         /" ̄ ̄ ̄ ̄   /    《v厂リiy\  ̄ ̄ ̄ ̄\
         /        /        ゙|,/'' v:,,、.¨)z,_       \
        /       /         ミ/ .-─ .゙》z、      \
        /      /           〔」″ノ‐ 、u ¨\      )
       (      /             ゙|, ..冫 .rー    ̄\_    |
        |      〔              ミ./′   ..r-ー __,,ア┐  |
        |      |              {. .,,,,   .′  .´′ .¨\|
        |       |              ∨   ノ冖′ =vvvvvv¨\
        |     /               ミ.   ,i'           .゙\_
        |     /                .{.  ノ  ,r¬″       .¨\
855デフォルトの名無しさん:2008/07/21(月) 04:26:20
質問です。
http://www.yoshibaworks.com/ayacy/inasoft/autokeyb/chapter2.html
↑のHPにあるキーボードシミュレータを作りたいんですが、
引数の指定とはどういったプログラムを書けばいいんでしょうか?
856855:2008/07/21(月) 11:36:47
すいません、自己解決しました。
857デフォルトの名無しさん:2008/07/21(月) 15:39:21
>>856
どうやって解決したか書いていただけると
後からこのスレを見た人に役立ちますよ
858デフォルトの名無しさん:2008/07/21(月) 16:23:21
質問の文章すらまともに書けないやつに
読んでためになるようなことが書けるわけがない。
859デフォルトの名無しさん:2008/07/21(月) 17:16:23
>>858
お前には人を育てる能力が無さ過ぎる
860デフォルトの名無しさん:2008/07/21(月) 21:12:26
漏れはVisual C++を10年以上使い続けて来たが、ごく最近になってはじめて
エディタの「Ctrl + Tab」の挙動を理解することができた。今までは理解しておらず、
混乱しながら「Ctrl + Tab」を使っていた。

あまりに自分が情けないので、ダメなのは自分だけではないことを知るために、
クイズを出したいと思う。Visual C++を使ってる人は以下の問題にチャレンジして
間違えて欲しい。

[問題] あなたはVisual C++で6枚の.cppファイルを開いている。ファイル名は
A, B, C, D, E, Fとする(.cppは省略)。Aが一番上に表示されていて、
その下に B, C, D, E, Fと続く。

(1) Ctrlキーを押しながらTabキーを1回押し、両方のキーを離す。この操作を4回
繰り返した。ファイルの順番はどうなったか?

(2) Ctrlキーを押しながらTabキーを4回押した。ファイルの順番はどうなったか?


答えを考えた後、実際やってみて答え合わせをし、間違った人は告白して下さい。
861デフォルトの名無しさん:2008/07/21(月) 21:16:28
Ctrl + Tabなんかwin3.1の時ぐらいしか使ってない
862デフォルトの名無しさん:2008/07/21(月) 21:19:54
Ctrl+Tabでウィンドウ切り替えられることを教えてもらった時に、1分で把握したよ
863860:2008/07/21(月) 21:21:03
>>861
1つ下にあるファイルに切り替えるときどうやってるの?
864デフォルトの名無しさん:2008/07/21(月) 22:13:24
>>860
Alt+Tabと同じ挙動だよな。
865デフォルトの名無しさん:2008/07/22(火) 00:54:15
>>860
す、す・・好きです!
866デフォルトの名無しさん:2008/07/22(火) 07:00:45
告白しちゃった///
867デフォルトの名無しさん:2008/07/24(木) 00:01:03
VC++2008での質問です
変数の宣言時の初期化方法で、正しい方法がわからないので教えてください

○ double goukei = 0.0;
× double x[1000] = 0.0;

x[1000]を初期化するには、forループで回すしかないでしょうか?
何か良い方法があれば教えてください
868デフォルトの名無しさん:2008/07/24(木) 00:10:22
〜 = {0.0};
869デフォルトの名無しさん:2008/07/24(木) 00:11:52
vectorつかえよ
870867:2008/07/24(木) 00:12:35
>>868
無事、コンパイルできました
どうもありがとうございました
871867:2008/07/24(木) 00:37:31
vectorを調べてみました

#include <vector>
using namespace std;

typedef struct{
double x = 0;
} X;
vector<X> x;



ありがとうございます
872デフォルトの名無しさん:2008/07/24(木) 00:39:41
ちがう
873867:2008/07/24(木) 00:49:51
typedef struct{
 double x = 0.0;
} X;
vector<X> x[1000];

こうでした
874デフォルトの名無しさん:2008/07/24(木) 00:50:53
ちがう
875デフォルトの名無しさん:2008/07/24(木) 00:59:31
なにこの流れw
876867:2008/07/24(木) 01:14:24
#include <vector>

struct x1000 {
double x = 0.0;
}
std::vector<x1000> x(1000);

今度は自信があります
877デフォルトの名無しさん:2008/07/24(木) 01:17:19
std::vector<double> x(1000,0);
878867:2008/07/24(木) 01:33:19
>>877
ありがとうがざいます
こちらの方がアクセスが速くなるのですね
勉強になりました

ベクタは、配列と同様に格納された連続要素を保持する。
ベクタ要素へのアクセス、ならびに要素の追加は 定数時間 で完了する。
一方で特定の値を突き止める、ならびにベクタへの要素挿入は 線形時間 を要する。
879デフォルトの名無しさん:2008/07/24(木) 01:55:20
ZeroMemory( x, sizeof( x ) );
880デフォルトの名無しさん:2008/07/24(木) 02:15:53
RtlZeroMemory( x, sizeof( x ) );
881デフォルトの名無しさん:2008/07/24(木) 11:03:44
memset
882デフォルトの名無しさん:2008/07/24(木) 21:15:51
全ビットを0で埋めたからといって値が0.0になることは保証されてなかったと思う。
883デフォルトの名無しさん:2008/07/24(木) 22:10:43
x[0]=0.0;
memcpy(&x[1],&x[0],sizeof(x)-sizeof(x[0]));

ダメ?
884デフォルトの名無しさん:2008/07/24(木) 22:37:41
std::fill(x, x + sizeof x / sizeof x[0], 0.0);
885デフォルトの名無しさん:2008/07/25(金) 00:23:47
>>882
このスレなら大丈夫でしょう。
886デフォルトの名無しさん:2008/07/25(金) 16:48:21
インテリセンスが機能しなくなったのですが、どこか設定をいじってしまったのでしょうか。
該当する項目などがあれば教えてください。
887デフォルトの名無しさん:2008/07/25(金) 16:55:58
>>886
VisualStudioを落として.、ncbを消して、VisualStudio起動して、リビルドしてみて。
888886:2008/07/25(金) 17:09:11
>>887
ありがとうございました。無事、機能させることが出来ました。
889デフォルトの名無しさん:2008/07/25(金) 19:59:29
女子がみただけでおまんこぐちょぐちょになるようなコードの書き方を教えてください。
890デフォルトの名無しさん:2008/07/25(金) 20:58:18
マスでもかいてろ
891デフォルトの名無しさん:2008/07/25(金) 22:04:18
男子がみただけでちんこびんびんになるようなコードの書き方を教えてください。
892デフォルトの名無しさん:2008/07/25(金) 22:29:11
o->i;
893デフォルトの名無しさん:2008/07/26(土) 12:42:50
((i))
894デフォルトの名無しさん:2008/07/27(日) 02:29:33
プログラマの想像力ってやつはすごいな。
895デフォルトの名無しさん:2008/07/27(日) 02:33:23
// とある技術書より
GetSakura()->Insert(GetMyStick());
896デフォルトの名無しさん:2008/07/27(日) 04:27:24
>>895
GetSakuraクラスにInserメソッドがあるのが気に食わん!!
受動態にするべきではないだろうか!?
897デフォルトの名無しさん:2008/07/27(日) 07:02:34
MyJoyStick.InsertTo(Sakura);
898デフォルトの名無しさん:2008/07/28(月) 01:48:01
でも std::vector やコモンコントロールのリストビューとかも、同じ意味で insert 持ってない?
899デフォルトの名無しさん:2008/07/29(火) 01:07:53
…折角のネタの流れをぶった切ってスマンが質問させてください

C++/CLIで、コンソールアプリケーションを操作するアプリを作ろうとしてます。
コンソールアプリは標準入力から情報を受け取って標準出力に吐き出す、というモノ。
でもって、コンソールアプリに情報を送り、返ってきた情報に応じて処理を分岐し、
さらにコンソールアプリに情報を送って…ということをやりたいと思っています。
ところがその第一歩目から躓いてしまいました。

myProcess->StartInfo->UseShellExecute = false;
myProcess->StartInfo->RedirectStandardInput = true;
myProcess->StartInfo->RedirectStandardOutput=true;
myProcess->Start();
StreamReader^ myStreamReader = myProcess->StandardOutput;
StreamWriter^ myStreamWriter = myProcess->StandardInput;
myStreamWriter->WriteLine("list");
textBox1->Text=myStreamReader->ReadLine();
myStreamWriter->WriteLine("exit");
myStreamWriter->Close();
myStreamReader->Close();
myProcess->WaitForExit();
myProcess->Close();

…というコードを書いたら、「list」のコマンドは実行されるのに、「exit」が実行されません。
listの位置にexitを持ってきたら正しく動作します。
何故期待通りに動いてくれないのでしょうか。また、どうしたら正しく動作するようになるのでしょうか。
900デフォルトの名無しさん:2008/07/29(火) 09:36:35
スピンボタンで増減値を浮動小数点型にするにはどうすればいいですか?
901デフォルトの名無しさん:2008/07/29(火) 10:23:12
intだから浮動小数点型は不可
でも小数だろうが増減は整数倍だろ
902デフォルトの名無しさん:2008/07/29(火) 10:37:46
ボタンを押したときに0.1単位で値が増減するようにすることはできるんでしょうか?
903デフォルトの名無しさん:2008/07/29(火) 10:45:56
そりゃできる。
904デフォルトの名無しさん:2008/07/29(火) 10:52:16
教えてくださいお願いします。
いろいろ検索したけど分からないんです><
905デフォルトの名無しさん:2008/07/29(火) 11:06:49
環境は?
spinコントロールの内部では整数で持たせておいて、
エディットには自分で整数を割り算とかして表示させればいいだろう。
で、UDN_DELTAPOS のタイミングでエディットに反映させればいいかと。
906デフォルトの名無しさん:2008/07/29(火) 11:29:14
VC++6.0でOSはXPです。
UDN_DELTAPOS関数の中にどういうコードを書けばいいんでしょうか?
907デフォルトの名無しさん:2008/07/29(火) 11:30:09
うどん出るタポス
908デフォルトの名無しさん:2008/07/29(火) 11:31:29
>>899
先ずは、ReadLine()で"list"の結果が正しく読めているのか確認するところから始めてはどうだろう。
或いは、コンソールアプリケーションの方に起動メッセージを出力するようにして、それをStart()の後にReadLine()して読めるか試すとか。
まさかとは思うが、コンソールアプリケーションの方ではちゃんと改行を出力しているよな?
909デフォルトの名無しさん:2008/07/29(火) 11:32:36
質問です

void Hoge::Foo1()
{
static int a = 0;
}

void Hoge::Foo2()
{
static int a = 0;
}

上記のFoo1とFoo2の関数内のstaticな変数aは共有されているのでしょうか?
910デフォルトの名無しさん:2008/07/29(火) 11:34:31
MFCでも無いの?
って面倒だからググってみたよ。
俺のやり方とちょっと違うみたいだが、メッセージ処理のとこだけありゃ書けるべ。

ttp://www13.plala.or.jp/kymats/study/game_other/UpDownControl/UpDownControl.html
911デフォルトの名無しさん:2008/07/29(火) 11:38:07
>>909
いいえ。仮令static変数であろうとも関数内で定義した変数は関数内でしか見えません。
やってできないことではありませんが、そのケースの場合はHogeがクラスならHoge内に置けばいいでしょう。
或いは、Hogeの非staticメンバ変数にする方がいいかもしれません。
912909:2008/07/29(火) 11:38:10
今VC++の環境がなくて、C++のソースを読んでいて疑問に思ったものですから・・・
913909:2008/07/29(火) 11:39:31
>>911
ありがとう!
914909:2008/07/29(火) 11:42:51
>>911
>やってできないことではありませんが
ん?共有はされてるの?
915デフォルトの名無しさん:2008/07/29(火) 11:45:12
>>914
いいえ。
アクセスすることは、不可能ではありません。
916909:2008/07/29(火) 11:46:11
>>911
宣言しないと見えないのか、スコープの問題で見えないのか、どっち?
917デフォルトの名無しさん:2008/07/29(火) 11:47:43
わかるとは思うが、>>910>>906宛てね。
ググって先を見てる間にこんなにレスがつくとは、、リロードすべきだった。
918デフォルトの名無しさん:2008/07/29(火) 11:49:50
0.1をかける
919909:2008/07/29(火) 11:50:03
>>915
よくわかりました
ありがとうございました氏ね
920909:2008/07/29(火) 12:00:21
>>911
>そのケースの場合はHogeがクラスならHoge内に置けばいいでしょう。
>或いは、Hogeの非staticメンバ変数にする方がいいかもしれません。
知るかよ・・・
そのソース書いた奴に言ってくれ

>>915
曖昧過ぎてわからん
おまえそれで人とコミュニケーション取れてるのかよ
921デフォルトの名無しさん:2008/07/29(火) 12:02:00
>>920
だから、共有はされていないんだよ。アクセスする方法はあるけど。
922909:2008/07/29(火) 12:08:24
>>921
ありがとう!
923デフォルトの名無しさん:2008/07/29(火) 15:09:08
Visual C++ 2008 Express Editionで正規表現を使おうと思い、
http://homepage3.nifty.com/k-takata/mysoft/bregonig.html
の正式版のlibやdllにリンクさせようとしたのですが、
ビルドしようとするとエラーになってしまいます。
ソースは↓のようにしています、どうすれば良いのでしょうか。

#include stdafx.h
#include <windows.h>
#include <tchar.h>
#include bregexp.h
int main(){
TCHAR msg[80];
BREGEXP *rxp = NULL;
TCHAR t1[] = _T( Yokohama 045-222-1111 );
TCHAR patern1[] = _T(s/(\\d\\d)-\\d{4}-\\d{4}/$1-xxxx-xxxx/g);
BSubst(patern1,t1,t1+_tcslen(t1),&rxp,msg);
}
924デフォルトの名無しさん:2008/07/29(火) 15:12:09
直リンしてしまったorz
エラーはこんな感じです。

1>regex.obj : error LNK2028: 未解決のトークン (0A000017)extern C int __cdecl BSubstW(wchar_t *,wchar_t *,wchar_t *,struct bregexp
* *,wchar_t *) (?BSubstW@@$$J0YAHPA_W00PAPAUbregexp@@0@Z) が関数 int __cdecl main(void) (?main@@$$HYAHXZ) で参照されました。

1>regex.obj : error LNK2019: 未解決の外部シンボル extern C int __cdecl BSubstW(wchar_t *,wchar_t *,wchar_t *,struct bregexp * *,wchar_t *)
(?BSubstW@@$$J0YAHPA_W00PAPAUbregexp@@0@Z) が関数 int __cdecl main(void) (?main@@$$HYAHXZ) で参照されました。
925デフォルトの名無しさん:2008/07/29(火) 15:16:04
>>923


BoostPro Binary Installer for Visual C++
ttp://www.boostpro.com/products/free
926デフォルトの名無しさん:2008/07/29(火) 15:17:00
ダブルクオートがことごとく消えてるけど、貼り付けるときに消えたのか?
927デフォルトの名無しさん:2008/07/29(火) 15:29:16
あと 中の lib はリンクするようにしたか?
928デフォルトの名無しさん:2008/07/29(火) 15:33:24
>>925
BREGONIGを使いたいのです。

>>926
携帯に送ってから貼り付けたので、
その時に消えてしまったみたいです。
929デフォルトの名無しさん:2008/07/29(火) 15:34:40
>>928
では自前のラッパー提供するので使うか参考にしてくれ
3つにわける

#include <string>
#include <windows.h>
using namespace std;
#define BRNOJAPANESE 1 // \wが2バイト文字にHitする default
#define BRNOZENGO 2 // ^', '$'が文の前後にHitする default
#define BRDOTENTER 4 // ドットが改行にHitする
#define BRGLOBAL 8 // グローバルな検索 default
#define BRNOEIGO 16 // 大文字と小文字を区別しない default

typedef struct bregexp { const char *outp; const char *outendp; int splitctr; const char **splitp; int rsv1; char *parap; char *paraendp; char *transtblp; char **startp; char **endp; int nparens; } BREGEXP;
typedef int (WINAPI *bregfnc)(char * , char * , char * , BREGEXP ** , char *);
typedef void (WINAPI *bregfnd)(BREGEXP *);
int bregreplace(string &, string, string, int);
int _bregfind(string &, string, int&, int);
930デフォルトの名無しさん:2008/07/29(火) 15:35:40
int bregreplace(string &x, string p, string q){return bregreplace(x, p, q, 27); }
int bregreplace(string &x, string p, string q, int opt){
if(x.size()==0 || p.size()==0)return -1;
string str = "s " + p + " " + q + " ";
if(opt &1)str+="k"; if(opt &2)str+="m";
if(opt &4)str+="s"; if(opt &8)str+="g";
if(opt&16)str+="i";
int n;
for(n=1;;n++) if(str.find(n)==0xFFFFFFFF) break;
str[1]=str[p.size()+2]=str[p.size()+q.size()+3]=n;
HINSTANCE hd = LoadLibrary("bregonig.dll");
if(!hd){cout<<"bregonig.dll load err\n";return -1;}
bregfnc BSubst = (bregfnc)GetProcAddress(hd,"BSubst");
bregfnd BRegfree = (bregfnd)GetProcAddress(hd,"BRegfree");
char msg[80]; BREGEXP *rxp = NULL;
n=BSubst( &str[0], &x[0], &x[x.size()], &rxp, msg);
if(n>0){
int m=(rxp->outendp)-(rxp->outp);
x.resize(m); memcpy(&x[0], rxp->outp, m);}
if(rxp)BRegfree(rxp); return n; }
931デフォルトの名無しさん:2008/07/29(火) 15:36:16
char *bregfind(string &x, string p, int &size, int opt){ int n=_bregfind(x, p, size, opt); if(n==-1)return NULL; return (char*)n; }
char *bregfind(string &x, string p, int &size){ return bregfind(x, p, size, 19);}
int _bregfind(string &x, string p, int &size, int opt){
if(x.size()==0 || p.size()==0)return -1;
string str = "m " + p + " ";
if(opt &1)str+="k"; if(opt &2)str+="m";
if(opt &4)str+="s"; if(opt&16)str+="x";
int n;
for(n=1;;n++) if(str.find(n)==0xFFFFFFFF) break;
str[1]=str[p.size()+2]=n;
HINSTANCE hd = LoadLibrary("bregonig.dll");
if(!hd){cout<<"bregonig.dll load err\n";return -1;}
bregfnc BMatch = (bregfnc)GetProcAddress(hd,"BMatch");
bregfnd BRegfree = (bregfnd)GetProcAddress(hd,"BRegfree");
char msg[80]; BREGEXP *rxp = NULL;
n=-1;
if( BMatch( &str[0], &x[0], &x[x.size()], &rxp, msg) ){
size = (rxp->endp[0])-(rxp->startp[0]);
n=(int)(rxp->startp[0]);}
if(rxp)BRegfree(rxp); return n; }
932デフォルトの名無しさん:2008/07/29(火) 15:46:04
vb.netなんですが、あるフォームから別のフォームを開いて
その別のフォームにある変数を渡したいのですがどうすればいいでしょうか
933デフォルトの名無しさん:2008/07/29(火) 15:52:31
メソッドとかプロパティとか
934デフォルトの名無しさん:2008/07/29(火) 15:55:37
>>923
プロジェクトの設定をマルチバイト文字セットにするか、
Unicode版bregonigを使えば済む話。

>>932
VB.NET質問スレ(Part26)
http://pc11.2ch.net/test/read.cgi/tech/1212570454/l50
935906:2008/07/29(火) 16:45:28
>910
ありがとうございました、
VisualC++初めて1週間なんでちょっとまだよくわかりませんが参考にしてみます。
936p3042-ipad11kagawa.kagawa.ocn.ne.jp:2008/07/29(火) 19:12:34
C言語で何ができんのよ?
937デフォルトの名無しさん:2008/07/29(火) 19:41:34
visual C++ 2008 express editionインストール中(特にその中のNet Flameのインストール中です)にパソコンの電源が落ちてしまい、
その後インストールしようとしてもそこで止まってしまいます
どうにかしてインストールする方法はないでしょうか?
938デフォルトの名無しさん:2008/07/29(火) 21:00:18
>>929
ラッパーありがとうございます。
おかげさまでBREGONIGを使えるようになりました。
かなり利便性が高いライブラリなので助かります。

>>934
マルチバイトやユニコード版は試しましたがダメでした。
939デフォルトの名無しさん:2008/07/30(水) 01:02:53
>>938
駄目ってどう駄目だったの?
君が貼ったコードとリンク先のライブラリで、こっちでエラーが出ないことは確認済みなんだが
940デフォルトの名無しさん:2008/07/30(水) 09:30:58
Acrobatを操作したいのですが下記コードで
Acrobatは起動するのですがファイルを読み込むと
パラメータの数が無効です。というエラーメッセージが表示されます。
どこかおかしいところがありますでしょうか?

CAcroApp *objAcroApp = new CAcroApp();
CAcroAVDoc *objAcroAVDoc = new CAcroAVDoc();

objAcroApp->CreateDispatch("AcroExch.App");
objAcroAVDoc->AttachDispatch(objAcroApp->m_lpDispatch);

objAcroApp->Show();
objAcroAVDoc->Open("D:\\hogehoge\\bin\\hoge.pdf", "");
941デフォルトの名無しさん:2008/07/30(水) 12:33:48
エディットボックスで値を設定して
ボタンを押すと実行されるというようなプログラムをつくりたいんですが。
SetDlgItemText(IDC_EDIT1,ss);
このエディットボックスのテキストssの値を
onbutton1()
の関数の中で使うにはどうすればいいですか?
エディットボックスに入れた値をボタンを押したときに反映させたいんですが。
やってみるとssは定義されていない識別子ですとエラーがでてしまいます。
942デフォルトの名無しさん:2008/07/30(水) 12:43:36
SetDlgItemText(IDC_EDIT1, _T("あほ"));
とりあえずこれでやってみ
943デフォルトの名無しさん:2008/07/30(水) 12:48:38
>>941
onbutton1の中ではGetDlgItemTextで取り出せばいいと思う。
944デフォルトの名無しさん:2008/07/30(水) 12:51:12
キモチ悪いんでこっち見ないでくれますか?
945デフォルトの名無しさん:2008/07/30(水) 13:00:28
>943
ありがとうございます
GetDlgItemText(IDC_EDIT1,ss)
でやってみたけどssは識別されていない識別子です、
ってエラーがでました。
946945:2008/07/30(水) 13:02:45
定義されていない識別子でした。
947デフォルトの名無しさん:2008/07/30(水) 13:06:45
>>945
onbutton1の中ではssという変数は存在しない。
だから別の変数を作ってそいつへGetDlgItemTextで内容を受け取るんだ。
948デフォルトの名無しさん:2008/07/30(水) 13:24:44
ありがとうございます、やってみます。
949デフォルトの名無しさん:2008/07/30(水) 13:29:47
pow識別子が見つかりませんでした。と出て実効できません。
どこを直せばいいのか教えてもらえないでしょうか?
#include<stdio.h>

int f(int x,int y)
{
return pow(2*x,y)+x-3*y+5;
}


int main(void)
{
int x;
int y;

printf("xを入力せよ:");

scanf("%d",&x);

printf("\nyを入力せよ:");

scanf("%d",&y);

printf("\n答え:%d",f(x,y));

return 0;
}
950デフォルトの名無しさん:2008/07/30(水) 13:34:01
>>949
#include <math.h>
951デフォルトの名無しさん:2008/07/30(水) 13:34:35
C初心者はCスレへ行け
952デフォルトの名無しさん:2008/07/30(水) 13:35:41
953デフォルトの名無しさん:2008/07/30(水) 13:55:11
>>950
mathにすると今度はprintfとscanfの識別子が見つからなくなるんですよね…
stdioではできないんでしょうか?
>>951
スレ違いでしたか…すみません
>>952
pow関数はdouble使わないとエラーでるってのは分かりましたが今度はprintfとscanfがエラーにorz
954デフォルトの名無しさん:2008/07/30(水) 13:57:15
>>953
#include <stdio.h>
#include <math.h>
955デフォルトの名無しさん:2008/07/30(水) 13:58:04
つーかほんとにVC++以前の話だな
956デフォルトの名無しさん:2008/07/30(水) 14:01:32
>どこを直せばいいのか教えてもらえないでしょうか?
C言語の認識
957デフォルトの名無しさん:2008/07/30(水) 14:02:48
頭だろ jk
958940:2008/07/30(水) 14:06:27
できました!
959デフォルトの名無しさん:2008/07/30(水) 14:13:36
>>954
それにすると今度は他の部分でエラーが出るように(つд`)

う〜ん、ちょっと初歩的過ぎるみたいなのでスレ移動します。
お目汚しすみませんでしたorz
960デフォルトの名無しさん:2008/07/30(水) 14:21:11
1のexeからボタンを押して1を開いたまま2のexeを起動し、
2のexeのボタンを押したら1に引数を渡したいのですが、
どのように引数を渡したらよいのでしょうか?

環境はWinXP Pro、Visual C++2005、MFC ダイアログベースです。
961デフォルトの名無しさん:2008/07/30(水) 14:32:17
プロセス間通信の実装には以下のようなものがある。
メッセージ - メッセージキュー
ソケット
パイプ、名前付きパイプ
同期(セマフォ、ミューテックス、イベント)
共有メモリ
RPC、ORB
Local Procedure Call
出典: フリー百科事典『ウィキペディア(Wikipedia)』
962デフォルトの名無しさん:2008/07/30(水) 14:46:51
グローバルアトムとか
963デフォルトの名無しさん:2008/07/30(水) 18:04:17
VS2005 なんですが、生成したアプリケーションがランタイムエラーで起動しません。
VC6.0では問題なく動いたのですが・・・・。

なぜなんでしょう?
MSDN等ではマニフェストファイルを作成するようにとのことでしたが、
特に問題は無いと思っています
964デフォルトの名無しさん:2008/07/30(水) 18:07:33
いきなりなんだよ、もっと状況を詳しく。
移行したやつなのか?プロジェクトにマニフェストファイルが混ざってないか?
もしあるなら、右クリックでそれ無効にしてみ。
965デフォルトの名無しさん:2008/07/30(水) 18:43:57
>>963
ビルドしたのと別のPCに持っていって動かないというのであれば、ランタイムをインストールすればいい。
SP1の有無なんかで別物なんで正しいのを選んでちょうだい。
無印 http://www.microsoft.com/downloads/details.aspx?familyid=32bc1bee-a3f9-4c13-9c99-220b62a191ee&displaylang=ja
SP1 http://www.microsoft.com/downloads/details.aspx?familyid=200b2fd9-ae1a-4a14-984d-389c36f85647&displaylang=ja
966デフォルトの名無しさん:2008/07/30(水) 19:40:58
VisualC++2008 ExpressEdition、OS vistaでWindowsAPIが使えません。例えば

#include <windows.h>
void main(void){
    ::Beep(3000, 500);
}

Sample.exe の 0x762042eb で初回の例外が発生しました:
  0x000006BA: RPC サーバーを利用できません。

このようになってしまいます。なにがいけないのでしょうか?
967960:2008/07/31(木) 09:56:49
>>961
ありがとうございます

1のListCtrlから1行取得して、2で編集したものを1に渡して再び1に表示したいのですが
その中ですとどれが一番使いやすいですか?
968デフォルトの名無しさん:2008/07/31(木) 09:58:32
>>967
とりあえずソケットでやっとけば間違いない
969デフォルトの名無しさん:2008/07/31(木) 10:17:32
if(((x-1)^2)+((y-1)^2<)=1)
{
inside++;
gw_color(gw,00,80,00);
gw_point(gw,480+(x*150),160+(y*150));
}

else
{
gw_color(gw,80,80,80);
gw_point(gw,480+(x*150),160+(y*150));
}

上記のようなif文を記述しているのですが、
error C2181: else 文が if と一致しません。
というエラーが出ます。
括弧などは確認したのですが・・・
970デフォルトの名無しさん:2008/07/31(木) 10:19:31
969
ちょう初心者
971デフォルトの名無しさん:2008/07/31(木) 10:21:05
if ( (x-a)*(x-a) + (y-b)*(y-b) <= 1 )
のように書く。
972デフォルトの名無しさん:2008/07/31(木) 10:22:09
言って頂いて気付きました!
演算子が括弧の中に・・・有難う御座います、すみませんでした;
973デフォルトの名無しさん:2008/07/31(木) 10:34:51
あと2乗は^でできないから
974デフォルトの名無しさん:2008/07/31(木) 11:03:34
すいません。
エディットボックスとスピンボタンを使って。エディットボックス上に表示されている値を0.039で割って
int型整数Aにして使うというプログラムでエディットボックスの中身は0.039の倍数である必要があります。

現在はスピンボタンを押すと0.039プラスされる設定になっており、
スピンボタンだけつかって値の設定をする分には問題ありません
しかしエディットボックスに一度0.001など0.039の倍数以外の値を入れてしまうと、
スピンボタンを押すたびに0.039プラスされ
0.040,0,079......のように0.039の倍数でなくなってしまいます。
エディットボックスに5などの値を入れてスピンボタンを押した場合5に一番近い0.039の倍数、
に修正してint型の整数Aにして使いたいんです。
エディットボタンを押したときにプラスされる値は特に0.039にはこだわらなくて大丈夫です。

975デフォルトの名無しさん:2008/07/31(木) 12:07:40
丸めの問題なの?常に文字列で管理しては?
976デフォルトの名無しさん:2008/07/31(木) 12:32:06
え〜と、
引数が16進数で0x00〜0xFFまでの範囲だとしていされていて、
実際に設定する値は0〜10なんです。
0x00~0xFFまでを10進数に直しと
256になるんで1~10までに256個の数字を入れようとすると、
だいたい0,039刻みになるという感じなんですが。
どうやったらいいのか全然わかりません。
977デフォルトの名無しさん:2008/07/31(木) 12:39:00
5が0.039の何倍か求める
たぶんこれは少数で、倍数→整数倍だから、小数点以下を処理する。
これに0.39をかけると「5に一番近い0.039の倍数」の完成。
さらにこれを0.39で割りAを求める。(実質2行目の結果と同じ)
978デフォルトの名無しさん:2008/07/31(木) 12:42:32
1.スピンボタン(UP)が押された
2.エディットボックス上の値を1000倍して取得
3.値を39で割る(小数切り捨て)
4.値を1足して、1000で割る
5.エディットボックスに書き戻し

1.スピンボタン(DOWN)が押された
2.エディットボックス上の値を1000倍して取得
3.値に38を足してから39で割る(小数切り捨て)
4.値を1引いて、1000で割る
5.エディットボックスに書き戻し
979デフォルトの名無しさん:2008/07/31(木) 12:45:09
間違った
4.値を1足して(引いて)39倍してから1000で割る 
980デフォルトの名無しさん:2008/07/31(木) 12:59:31
>977
>978
ありがとうございます試してみます。
981デフォルトの名無しさん:2008/07/31(木) 14:06:36
VC++2008で、フォームアプリケーションを作成してるのですが、
チェックボックスなどのCheckedChangedイベントは画面操作による変更によってのみ呼ばれるのですか?
それとも、コードによってチェック状態を変更した場合にも呼ばれるのですか?
どなたか教えてください。
982デフォルトの名無しさん:2008/07/31(木) 14:18:50
たぶんこうだろうというのは想像つくけど
一応試して確認したほうがいいから自分で試してみればいい
983デフォルトの名無しさん:2008/07/31(木) 14:35:55
>>982
すみません、実は初期化とイベントで同じ処理を書いていて、2回実行されてたのでおかしいと思って聞きました。
初期化でチェックボックスを変更してるのですが、イベントというのは画面での操作によって起こされるものだと思っていたので、ちょっと信じられなかったのです。
984980:2008/07/31(木) 15:05:17
>977
>978
できました!ありがとうございました!
985デフォルトの名無しさん:2008/07/31(木) 16:06:33
スライダを動かすとエディットボックスの値が変化するようにするにはどうすればいいですか?
986デフォルトの名無しさん:2008/07/31(木) 16:09:50
FormなのかMFCなのかWin32なのか。
どれにしても、スライダのメッセージハンドラでエディットの内容書き換えればいいかと。
987デフォルトの名無しさん:2008/07/31(木) 16:11:06
同じ人間なの?
とりあえずトラックバーで検索する
988デフォルトの名無しさん:2008/07/31(木) 17:09:23
本ぐらい買って一通り読んだ方がいいよ
989デフォルトの名無しさん:2008/07/31(木) 17:13:45
次スレのテンプレに入れてほしいな
FormなのかMFCなのかWin32なのか。
990デフォルトの名無しさん:2008/07/31(木) 17:15:35
文字列から指定の文字列で分割したいのですが、
そういった事が出来るsplitっぽい関数は何があるでしょうか。
System::StringのSplitだと文字列だとダメだったので。
991デフォルトの名無しさん:2008/07/31(木) 17:30:29
関数はいくらでも自分で作れる
992デフォルトの名無しさん:2008/07/31(木) 17:37:26
>>991
では何か良い方法を教えて貰えませんでしょうか。
strtokでも文字列で分割が出来ないんですよね。
993デフォルトの名無しさん:2008/07/31(木) 17:40:32
その文字列とやら(char*?)をstringにしてSplitして文字列に戻せばいいじゃな。
つか、スレ終わっちゃうな。
994デフォルトの名無しさん:2008/07/31(木) 17:57:51
>>993
std::stringにSplitってありましたっけ、検索しても出てこない…。
995デフォルトの名無しさん:2008/07/31(木) 18:10:28
次スレ

★初心者にVisual C++を教えるスレ★ Part31
http://pc11.2ch.net/test/read.cgi/tech/1217494948/
996デフォルトの名無しさん:2008/07/31(木) 18:11:53
>>994
自分で
>System::StringのSplit
って言ってるじゃないか。
もっと詳しく環境やら書いてよ。それに単に文字列と書かれてもどれを指してるのかわからん。
997デフォルトの名無しさん:2008/07/31(木) 18:16:03
>>996
すみません、小文字だったのでstdの方かと思いました。
環境はVC++2008で、文字列の型はどんなのでも構いません。
"abcdefg abcdefg"の文字列に対して、
"cd"の文字列で分割するといった事がしたいのです。
998デフォルトの名無しさん:2008/07/31(木) 18:59:18
"cd"検索して"cd"の次から次の"cd"の前までコピーするだけだろ
あと先頭と最後を考慮
999デフォルトの名無しさん:2008/08/01(金) 01:03:29
うめーこ
1000デフォルトの名無しさん:2008/08/01(金) 01:04:35
千の風になって
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。