5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 : ◆Manna2uCLg :2005/04/15(金) 13:33:14
Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

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

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

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

【前スレ】
★初心者にVisual C++を教えるスレ★ Part17
http://pc8.2ch.net/test/read.cgi/tech/1107926989/

過去スレ、関連スレなどは>>2-5ぐらい。

2 : ◆Manna2uCLg :2005/04/15(金) 13:34:37
【過去スレ】
Part17 ttp://pc8.2ch.net/test/read.cgi/tech/1107926989/
Part16 ttp://pc8.2ch.net/test/read.cgi/tech/1101022051/
Part15 ttp://pc5.2ch.net/test/read.cgi/tech/1097880265/
Part14 ttp://pc5.2ch.net/test/read.cgi/tech/1093672937/
Part13 ttp://pc5.2ch.net/test/read.cgi/tech/1089011118/
Part12 ttp://pc5.2ch.net/test/read.cgi/tech/1083585833/
Part11 ttp://pc5.2ch.net/test/read.cgi/tech/1077965179/
Part10 ttp://pc5.2ch.net/test/read.cgi/tech/1074933908/ ※
Part09 ttp://pc5.2ch.net/test/read.cgi/tech/1068983609/ ※
Part08 ttp://pc5.2ch.net/tech/kako/1063/10630/1063029371.html
Part07 ttp://pc5.2ch.net/tech/kako/1056/10562/1056280510.html
Part06 ttp://pc5.2ch.net/tech/kako/1052/10529/1052931903.html
Part05 ttp://pc5.2ch.net/tech/kako/1048/10486/1048698321.html
Part04 ttp://pc5.2ch.net/tech/kako/1044/10441/1044196393.html
Part03 ttp://pc5.2ch.net/tech/kako/1038/10381/1038160750.html
Part02 ttp://pc3.2ch.net/tech/kako/1030/10309/1030985362.html
Part01 ttp://pc3.2ch.net/tech/kako/1023/10235/1023530449.html

3 :デフォルトの名無しさん:2005/04/15(金) 13:34:57
【関連スレ】
■ MFC相談室 MFC12.dll■
http://pc5.2ch.net/test/read.cgi/tech/1096848771/l50

Win32API質問箱 Build27
http://pc5.2ch.net/test/read.cgi/tech/1106103119/

鬱だ氏のう DirectX (Part 15)
http://pc5.2ch.net/test/read.cgi/tech/1096649788/l50

C言語なら俺に聞け! Part 101
http://pc5.2ch.net/test/read.cgi/tech/1107128274/

C++相談室 part39
http://pc5.2ch.net/test/read.cgi/tech/1106527792/

C/C++の宿題を片付けます 40代目
http://pc5.2ch.net/test/read.cgi/tech/1107625122/

【初心者歓迎】C/C++室 Ver.13【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1104843249/

4 : ◆Manna2uCLg :2005/04/15(金) 13:35:38
【関連サイト】
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/

MSDN ライブラリ
http://www.microsoft.com/japan/msdn/library/

Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/

Google
http://www.google.co.jp/

【このスレの前身 VisualC++相談室 過去スレ】
part 1 http://piza.2ch.net/tech/kako/970/970607517.html
part 2 http://piza.2ch.net/tech/kako/981/981630730.html
part 3 http://piza2.2ch.net/tech/kako/993/993186053.html
part 4 http://pc.2ch.net/tech/kako/1002/10021/1002165477.html
part 5 http://pc.2ch.net/tech/kako/1006/10068/1006834463.html
part 6 http://pc.2ch.net/tech/kako/1011/10116/1011615035.html
part 7 http://pc.2ch.net/tech/kako/1017/10178/1017843192.html
part 8 http://pc.2ch.net/tech/kako/1022/10224/1022499000.html
part 9 http://pc5.2ch.net/tech/kako/1036/10368/1036897197.html

5 : ◆Manna2uCLg :2005/04/15(金) 13:37:04
過去スレの書き込み時に 「httpが多すぎ」 と警告されちまったので、
h 削ってあります。

6 :デフォルトの名無しさん:2005/04/15(金) 13:51:07
>>1


7 :デフォルトの名無しさん:2005/04/15(金) 14:03:04
>>1
もつ

8 :デフォルトの名無しさん:2005/04/15(金) 17:58:55
質問
class A : public CObject{
virtual void Serialize( CArchive& ar ) ;
}
class B : public CObject{
virtual void Serialize( CArchive& ar ) ;
}

template< typename DATA > class CM : public CObject
{
private:
CMap< int, int ,DATA, DATA > m_map;
public:
virtual void Serialize( CArchive& ar ) ;
}
CM< A > CM_A;
CM< B > CM_B;

template < typename DATA > class CN : public CObject
{
private:
CArray < DATA, DATA > m_array;
public:
virtual void Serialize( CArchive& ar ) ;
}

CN < CM_A > CN_A;
CN < CM_B > CN_B;

9 :デフォルトの名無しさん:2005/04/15(金) 18:02:00
このような構成でシリアル化を行いたいのですが
うまくできません。
どのように行えばよいか教えてください。

10 :デフォルトの名無しさん:2005/04/15(金) 18:02:28
うまくいかない、を説明するところから始めようか。

11 :デフォルトの名無しさん:2005/04/15(金) 18:16:22
各クラスに
DECLARE_SERIAL( A )
IMPLEMENT_SERIAL( A, CObject, 1 )
と記述すればよいと思っていたのですが
DECLARE_SERIAL( CN )
IMPLEMENT_SERIAL( CN, CObject, 1 )
と記入してもコンパイルエラーとなりますよね?
「クラスのテンプレート名で仮引数リストの指定がありません。」といわれます。
どのように記述すればいいのかが分かりません。

初歩的ですみません。。。


12 :デフォルトの名無しさん:2005/04/15(金) 18:34:25
全然初歩的じゃない。
これ実現しようとすると果てしなく面倒なことになりそう。
つか不可能かもしれん。

13 :デフォルトの名無しさん:2005/04/15(金) 18:56:55
そうなんですか。。。
地道に複数作ったほうが楽かもしれないですね。。。
CMapのArrayをもったクラスをつくりたかったのですが
蚤の脳ではできません。。。

14 :デフォルトの名無しさん:2005/04/15(金) 23:15:46
質問なんだけど、.NETにはClassWizardはないのかな?

15 :デフォルトの名無しさん:2005/04/16(土) 03:05:04
前スレにぬるぽ貼ったの誰だ

16 :デフォルトの名無しさん:2005/04/16(土) 11:15:48
struct A
{ void func(int) {} };

struct B : public A
{
B() { func(0); } // (a)
void func() {}
};

A a;
a.func(0); // (b)

(a)のところで「C2660: 'func' : 関数が不正な 1 個の実引数をともなって呼び出されました」となります。
引数からA::funcが呼ばれることはわかると思うのですが、A::func(0)としてやらなければなりませんでした。
ところが(b)の方はそのまま通ります。
どういう意図でこういうことになっているのでしょうか?

17 :デフォルトの名無しさん:2005/04/16(土) 11:43:09
>>16
B::funcがA::funcを隠している。
Bの中にusing A::func;を書いてみろ

18 :16:2005/04/16(土) 11:51:00
>>17
using A::func;を書いたらB::func()の方がC2660で呼べなくなりました。
つかクラス内からはA::funcが隠蔽されて、外からは両方見えるというのはどうしてなのでしょうか?

19 :16:2005/04/16(土) 11:57:18
勘違いでした。
B b;
と書いたつもりが
A a;
となってました。
BのインスタンスからはA::funcは隠蔽されてますね。
失礼しました。

20 :デフォルトの名無しさん:2005/04/16(土) 13:15:00
ダイアログベースでランチャーを作っているのですが、どうにも分からないことがあります。
ドラッグされたファイルを受け取って、そのファイルのアイコンをボタンに描画したいと思っているのですが、
アイコンの取得の仕方、描画の仕方はどのようにすれば良いのでしょうか?

HICON hIcon = ExtractIcon(AfxGetInstanceHandle(),path,0); // pathはファイルのフルパス

tipsサイトをうろついていたらこれでアイコンの取得ができるという説明を見かけたのですが、
あっていますでしょうか?
ボタンへの描画についてはオーナードローという方法でやればいいようなのですが、
どうにも要領がつかめませんorz
こうすればいい、というやり方がありましたらよろしくお願いします。

21 :デフォルトの名無しさん:2005/04/16(土) 14:11:24
すごく基本的な質問なのでしょうが
VC++でも
.NETであったりMFCであったり空のプロジェクト生成であったりする違いは
ただ単にそれぞれがカバーしているライブラリの範囲の違いという認識であってますでしょうか。
具体的には、MFC使ったら、.NETに収録されてるクラス群は利用できない。
空のプロジェクトを生成した場合、MFC、.NETで使えるクラス群は利用できない。
こういう認識であってますか。

ここ勘違いしてるとかあったら指摘していただけるとうれしいです。

22 :デフォルトの名無しさん:2005/04/16(土) 14:18:37
IDEの話でなら雛形ソースの作成の違いだよ。
空プロジェクト作成後にMFC用に自分で全部書いてもいいし

23 :21:2005/04/16(土) 14:22:52
>>22
アドバイスありがとうございます。

>IDEの話でなら
そうです。Visual C++ the Spoke 使ってます。
プロジェクトを生成したら作成されるソースの違いなだけというわけですね。

>空プロジェクト作成後にMFC用に自分で全部書いてもいいし
こうすれば、空プロジェクトを生成してもMFCの提供するクラス群を使うことができると。

24 :デフォルトの名無しさん:2005/04/16(土) 17:34:50
リリースモードでコンパイルして実行すると(要はF5キーを押すと、ってことです)、
以下のようなメッセージが出てアプリが実行できません。

シンボル情報なし 
"hoge.exe"にはデバッグ情報が含まれていません(シンボルが読み込まれていません。)
デバッグを実行するにはOKを押してください。

指示通りにOKを押しても、何も反応がなく、アプリも実行されません。
プロジェクトの設定のどこかが変わってしまったためだと思うのですが、これって
どうやれば直るんでしょうか・・・


25 :デフォルトの名無しさん:2005/04/16(土) 17:41:45
それはデバッグ実行してるから

26 :デフォルトの名無しさん:2005/04/16(土) 20:28:12
統合開発環境で、.NETを選択してプロジェクトを生成したらフォームが作成されて
フォームデザイナを使ってWindowsのインターフェース部分を作りながら、コード書いていく
という便利な作り方ができますが

MFCや、空でプロジェクトを生成した場合、基本的なコードだけが生成されてフォームは
どこにも見当たりません。

フォームデザイナって.NETを選択して生成した場合にのみ使用できるものなのでしょうか。
それとも、MFCや空でもどこかいじればフォームデザイナ使えるのでしょうか。

27 :デフォルトの名無しさん:2005/04/16(土) 20:36:22
はぁ?

28 :デフォルトの名無しさん:2005/04/16(土) 20:38:04
ひぃ!

29 :デフォルトの名無しさん:2005/04/16(土) 20:42:07
MFCで一度もFORM見たこと無い(´・ω・`)

30 :26:2005/04/16(土) 21:52:44
はぁ?とかひぃ!とか >>29 とか言われるということはMFCについて根本的に何か勘違いしてるようですね。
.NETしかいじったことなかったのですが、一通り参考書やり終わったので自分でアイデアを出して
簡単なアプリを作ろうと思ったのよ。

で、そのアプリに、jpeg画像を表示する機能をつけようとしていたところ、CImageというクラスを発見。
ところがCImageは、MFCが提供するクラスらしい。
いつものように.NETを選択してプロジェクトを生成して作り始めたから

C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxv_w32.h(18):
fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>
こんなエラーが1つ表示されて先にすすめない。
「windows.hは、既にインクルードされてて、MFCアプリには必ずしもwindows.hは必要ない」

windows.h忘れてるよ。なら、つけたせばいいんだろうけど。
必要ないっていっても、ソースコードには#include "windows.h"なんて記述はどこにもないから
削りようもないし、しょうがないから、MFC選択してプロジェクト生成させて1から作り直したら
いいんじゃないかと考え付いたのよ。

ところがいざMFC選択して生成してみたところ、基本的なコードだけが生成されて、フォーム
らしきものは見当たらない。
なので、MFCはフォームデザイナ使えないのか。と思ったわけです。
MFC選択してプロジェクト生成させればCImageクラスがあっさり使えるんじゃないかと思ったのですが。
こういう場合、.NETで使える。別の画像表示クラスを探したほうが早いでしょうか。
CImageは使い方簡単そうだったから採用したんですが。

31 :デフォルトの名無しさん:2005/04/16(土) 21:58:24
>>30
他探せw

32 :デフォルトの名無しさん:2005/04/16(土) 22:13:26
>>30
おまえが言うフォームに近いものは
ダイアログベースのアプリかもしれない

33 :26:2005/04/16(土) 22:13:25
CImageクラスは
#include "atlimage.h"
#include "afxwin.h"
をインクルードして

CImage img;
img.Load("sample.jpg");
CDC *pDC = CDC::FromHandle( img.GetDC() );
cdc.BitBlt( 0, 0, img.GetWidth(), img.GetHeight(), pDC, 0, 0, SRCCOPY );
img.ReleaseDC();
書いて、上のレスに記述したエラーが発生。

しょうがないから、他を探すということで
http://wisdom.sakura.ne.jp/system/msnet/msnet_win13.html
を参考に

Graphics g = e.Graphics;
Image img = new Bitmap("sample.jpg");
g.DrawImage(img , 0 , 0);

に書き換えたけど、なんとこれも上のレスに記述した同じエラーが発生した。

public static void Main(string[] args) {
Application.Run(new WinMain());
この部分の記述がいるのか。
Graphics g = g.Graphics;の部分はFormメソッドの外に書かれてる。
メニューの開くを押したら表示されるようにしたいのに(T T)
クラス発見しても全然使いこなせない。基本的なことがどうも消化しきれてないっぽい。
悔しい。

34 :デフォルトの名無しさん:2005/04/16(土) 22:20:38
というか中途半端に手を出さずに
基本から勉強した方がいいんじゃないだろうか

35 :26:2005/04/16(土) 22:33:20
皆さんどうもアドバイスありがとう。
>>32
他の件でググって読んだページにたまたまMFCに関する記述が書いてあることがあって
そういえばMFCの記述があるところにダイアログベースがどうのとか書いてあった記憶がある。

MFCでプロジェクト生成するとダイアログベースのアプリしか作れないということなのかな。
単に画像表示させるだけのアプリだから、ダイアログで十分だなとは思うけど。
もうわけがわからなくなってきた。
開発環境の操作方法を勉強しながらアプリも1本作るという内容の参考書を一通りやって
さあ、自分で作ってみるぞと思ったものの。
用意されてるクラスを使うだけでもこの有様だから。
C++は、.NETとかMFCとかややこしい。
ここらへんもっとつっこんで勉強したほうがいいかもと思った。
ググって見つけたサンプルコードそのままコピペしても必ずといっていいほどエラーがでる。

http://wisdom.sakura.ne.jp/system/msnet/index.html
の解説も.NETだけど。よくみたらフォームとか部品を自分で記述してるし。
.NETって書いてるから、これ参考にしたら解決するだろうと思ったのに(T T)
フォームデザイナで部品を自分でフォームにドラッグしていってちょちょいと作ってって方法で
やったから。他の手法で作ったものを参考にしても自分のアプリに応用できない。

>>34 さんがいうように、自分で考えたアプリを作ってみるという段階じゃないのかも。
統合開発環境の操作覚えて、MSDNやgoogleで欲しい機能を実現できるクラスを探して、使い方見て
自分のアプリのコードに貼り付ければいけると思ったのに(T T)

36 :デフォルトの名無しさん:2005/04/16(土) 23:14:40
まずは.NETとWin32との関係について勉強しよう

37 :26:2005/04/16(土) 23:27:33
>>36
どこらへんを勉強すればいいのか親切に教えてくれてありがとう。
実は、とはいってもどこらへんから優先的に学習すればいいの?という疑問がわいてたので

38 :デフォルトの名無しさん:2005/04/16(土) 23:30:57
RADできるのは、リソースで管理できる範囲だけ。
したがって、ダイアログはドラッグアンドドロップで作れるが、
それ以外のwindowアプリケーションは、コード書くしかない。
そういう仕様。

39 :デフォルトの名無しさん:2005/04/16(土) 23:39:05
26は、C# .NET のほうが向いている。絶対。

40 :26:2005/04/17(日) 00:11:49
皆さんどうもアドバイスありがとう。

>>38
MFCや空だと、どこ探してもフォームデザイナ使えないと思ったら仕様なんですね。
そもそも、GUI部品をゴリゴリコード書くのが面倒くさいから、統合開発環境買ったという
いきさつがあるので。どうしてもGUI部品を楽に作りたいと思ったら.NET使うしかないということか。

>>39
今回の件でC++って、.NET MFC とかいろいろあって覚えるまでがちょっと大変とわかった。
C#って.NETだから、一度どれかの参考書なりサイトでマスターしてしまえば
クラス調べるときに、C++のように、これはMFCの提供するクラスだから…、とか
これは空で作ったものっぽいから…。とかいちいち考える必要ないだろうなとは思う。
自分の考えたアプリが完成すればいいわけだから、完成は早いにこしたことはないし
作りやすいにこしたことないし、調べやすいにこしたことはないと思う。
C#がそれを満たしてくれる言語なのかは、やってみなければわからない部分はあると思うけど。
>>39 さんの。向いている。「絶対」と。指摘してくれてるわけだから
使用言語をC#に変えてみようかと思います。C#の方が作る過程もスマートなんじゃないかと
思えてきた。

41 :デフォルトの名無しさん:2005/04/17(日) 01:13:59
>GUI部品をゴリゴリコード書くのが面倒くさい
ならC#かVBがいいかと

42 :26:2005/04/17(日) 12:56:27
>>41
アドバイスありがとう。
VBも.NETになってからそこのところがどうなったかはわかりませんが
VBはかゆいところに手が届かなそうといったイメージがあるのでC#にします。

43 :デフォルトの名無しさん:2005/04/17(日) 18:02:02
>>42
つ[ Delphi ]

44 :デフォルトの名無しさん:2005/04/17(日) 18:20:37
プログラム童貞ですが、まず何からしたらいいでしょうか?

45 :デフォルトの名無しさん:2005/04/17(日) 20:24:04
>>44
剥けているかいないか、それが問題だ。

46 :デフォルトの名無しさん:2005/04/17(日) 21:52:55
あるメニューボタンを押したら、そのウィンドウを常に前面に
表示させるようにするプログラムを作りたいのですが、
どのように作ればよいのか、アドバイスお願いできませぬでしょうか・・・

47 :デフォルトの名無しさん:2005/04/17(日) 22:45:52
対象のウィンドウにSetWindowPosでいけるんじゃないかい?
MDIの場合はダメかもわからんです。

48 :デフォルトの名無しさん:2005/04/17(日) 22:57:01
>>47さんのお陰でいいサンプルも見つかりました。
ありがとうございました m(_ _)m

49 :デフォルトの名無しさん:2005/04/18(月) 02:00:58
2色しか使っていないビットマップをインポートしても
ビットマップは正しくインポートされましたが、ビットマップは256色以上含んでいるためビットマップエディタへ読み込めません
と出るのですが、どういうことでしょうか?表示はできるみたいなんですが・・・
また、リソースビットマップの透過はどうやるのでしょうか?

50 :デフォルトの名無しさん:2005/04/18(月) 07:02:46
DLLにある関数をしょっちゅう使いたい場合でも
やっぱり使う直前に::LoadLibrary()して、使い終わったら即::FreeLibrary()しなきゃ
なりませんか?
自前のアプリの初期化関数(OnInitDialog()とか)でLoadLibrary()してから
メンバ変数に関数ポインタせっとしてメソッドで使いまくり、終了するときに
OnDestroy()で解放できたらオーバーヘッド軽くなりそうな気がするんですが。

51 :デフォルトの名無しさん:2005/04/18(月) 08:24:15
>>50
使う直前にLoadLibraryして、使い終わったら即FreeLibraryなんて、誰に教わったの?

プロセス内で最初に1回LoadLibraryしたら、それっきりでいい。
FreeLibraryはしなくてもいい。
それで問題があるようなら、そのDLLの作りのほうがマズイよ。


52 :51:2005/04/18(月) 08:24:40
というか、面倒くさいから、インポートライブラリ使えばいいと思う。

53 :デフォルトの名無しさん:2005/04/18(月) 09:44:51
>>49
保存されてるパレットが256色以上になってるんじゃない?
そのビットマップのプロパティを見ると分かるんじゃなかったかな。

54 :デフォルトの名無しさん:2005/04/18(月) 13:12:10
メニューアイテムのenable、disableを切り替えるにはどうすればいいですか?

55 :デフォルトの名無しさん:2005/04/18(月) 15:18:06
VC++.NET使ってるんですが
VC++6とまったくインターフェースに互換性がなくて困ってます(なんですかソルーションて)
デフォルトのコンパイル/リンクオプションはどこで設定すればいいんでしょうか
また、プロジェクト専用のオプションはどこで設定すればいいんでしょう

教えてください


56 :デフォルトの名無しさん:2005/04/18(月) 16:08:47
>>55
とりあえず1時間くらい、いじりまわせ。

57 :デフォルトの名無しさん:2005/04/18(月) 16:15:35
もう一週間以上いじってます
なんかIE触ってるみたいで気持ち悪いです…
汎用性ばかり重視して操作性を削るってなに考えてるんだMSは…



58 :デフォルトの名無しさん:2005/04/18(月) 16:32:11
一週間もいじってて未だにリンクオプションすら
見っけられないってちょっとおかしいぞ。

ホントにVC++6使ってのか?
俺も最初は戸惑ったけど、すぐに分かったぞ。

59 :デフォルトの名無しさん:2005/04/18(月) 16:38:33
慣れれば、.NETのほうが使いやすい

60 :デフォルトの名無しさん:2005/04/18(月) 17:02:41
プロジェクトごとのオプションは見つけたんですけど
チェックボックスとかじゃなくて手打ちなんですがそれで正解ですか
プロジェクト作るたびにわざわざ/I とか /MTとか打ちたくないんです
インクルードパスなんて決まってるしマルチスレッドアプリしか作らないし


61 :デフォルトの名無しさん:2005/04/18(月) 17:07:32
本当にVC使っているのか甚だ疑問に思えてきた・・・

62 :デフォルトの名無しさん:2005/04/18(月) 17:33:07
>>55
たぶんそれパチモノ。

63 :デフォルトの名無しさん:2005/04/18(月) 17:36:07
まじで!?
学校に入ってるやつですよ

64 :デフォルトの名無しさん:2005/04/18(月) 19:00:30
促されるようにVC++.NETを導入したんですが、ちょっと教えてください。
Cの勉強で最初に作るようなごくごく簡単な(Hello,worldの表示)プログラムをCで組みたいのですが
プログラムに間違いは無いにも拘らずエラーが出てビルドできません。

実行するビルド コマンド ラインがありません。
メイクファイル プロジェクト動作を実行しています。
[プロジェクト名] : error PRJ0003 : ' の起動中にエラーが発生しました。

実行するビルドコマンドラインがありません。
↑ここが問題なのは分かっているのですが、どう対処して良いのか分かりません。
どなたか教えていただけないでしょうか。

65 :デフォルトの名無しさん:2005/04/18(月) 19:10:31
ビルドコマンドラインを設定しろ

66 :デフォルトの名無しさん:2005/04/18(月) 19:33:02
ボタンコントロールにドラッグアンドドロップしたいのですが、どうしたらいいか分からないです。
新規に『CButton』を継承したクラス『CMButton』を作成、そこにWM_DROPFILESをインプリメント(?)して、
ダイアログクラスにCMbutton型のオブジェクト『m_Button』を宣言。
そしてダイアログクラス内の『OnInitDialog()』で『m_Button.SubclassDlgItem(IDC_MBUTTON,this)』
を実行して、サブクラス化してみたのですが、
起動直後に『wincore.cpp』内の『ASSERT(FromHandlePermanent(hWndNew) == NULL);』の所でエラーが出ます。
なので『WindowProc』をオーバーライドして、『WM_CREATE』が送られたときにサブクラス化してみると、
エラーは出なくなったものの、ドラッグしても『CMButton』の『OnDropFiles』が機能しません。
お助けください…orz

●ヘッダファイル
class CMButton :public CButton
{
public:
CMButton(void);
~CMButton(void);
protected:
//{{AFX_MSG(CMButton)
afx_msg void OnDropFiles(HDROP hDropInfo);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
●cppファイル
BEGIN_MESSAGE_MAP(CMButton, CButton)
//{{AFX_MSG_MAP(CMButton)
ON_WM_DROPFILES()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

void CMButton::OnDropFiles(HDROP hDropInfo)
{


67 :デフォルトの名無しさん:2005/04/18(月) 20:51:49
DragAcceptFiles

68 :66:2005/04/18(月) 21:11:35
>>67
レスありがとうございます。
書いていませんでしたが、 DragAcceptFiles() はダイアログクラス内の OnInitDialog() で宣言しています。
ボタンコントロールのプロパティの Accept Files も試してみましたが、どちらも機能しませんでした。
というかドラッグの受付自体は機能しているんですが、受け付けた後の
void CMButton::OnDropFiles(HDROP hDropInfo)
の処理が機能していないのです。


69 :デフォルトの名無しさん:2005/04/18(月) 21:11:57
MessageBox()でメッセージを出したいのですが、
親クラスを指定しない場合はNullにするとあったので
MessageBox(Null,"失敗しました","error",MB_ICONERROR | MB_OK);
としたのですが、4つの引数を持つことはできませんと言われてコンパイルエラーとなります。
Nullは定義されていないのかと疑って
MessageBox(,"失敗しました","error",MB_ICONERROR | MB_OK);
MessageBox(\0,"失敗しました","error",MB_ICONERROR | MB_OK);
MessageBox(0,"失敗しました","error",MB_ICONERROR | MB_OK);
と試しましたがいずれもダメでした。
調べたところ引数は4つのハズなのですがどこがどう間違っているのでしょうか?


70 :デフォルトの名無しさん:2005/04/18(月) 21:14:22
>>69
::MessageBox(NULL, TEXT("失敗しました"), TEXT("error"), MB_ICONERROR | MB_OK);

71 :デフォルトの名無しさん:2005/04/18(月) 21:46:31
>>69
MSDNライブラリでキーワード「MessageBox」を見れば、すぐわかるものを・・・。

72 :デフォルトの名無しさん:2005/04/18(月) 21:52:28
> MessageBox(0,"失敗しました","error",MB_ICONERROR | MB_OK);

これ通るだろ

73 :デフォルトの名無しさん:2005/04/18(月) 22:33:45
>>72
CWnd::MessageBoxってオチだろ。

74 :デフォルトの名無しさん:2005/04/18(月) 22:57:03
一応MSDNで調べてみて上記のような状態になってしまったので
質問させて頂きました。
MessageBox(0,"失敗しました","error",MB_ICONERROR | MB_OK);
ではやはり引数が4つでエラーとなります

解決策としては第一引数を完全に省くことで何故かできました。

CWnd::MessageBox
CWndに定義されているmessageBOxとそうでないものがあるようですね
調べてみます
どうもです

75 :デフォルトの名無しさん:2005/04/18(月) 23:16:22
Microsoft も紛らわしいモノを作ってくれたもんだ

76 :デフォルトの名無しさん:2005/04/19(火) 00:35:17
>>74
なんでMSDNで調べたのにわからないの?

MessageBoxを見ようとすると、候補がずらずらと出てくるじゃないか。
Win32API、MFCのCWnd、MFCのCWindow、WFC、などなど。

自分が呼んでいるMessageBoxが、いったい何なのかくらい、把握しとけって。
つーか、C++わかってないだろ。VC++以前の問題だよ。

普通は、>>70さんの書き込みで理解できるぞ。

77 :デフォルトの名無しさん:2005/04/19(火) 01:21:18
>>76
一応ここは初心者スレだぞ

78 :デフォルトの名無しさん:2005/04/19(火) 01:39:20
いや いいんです
Win32API、MFCのCWnd、MFCのCWindow、WFC、などなど
があることがわかっただけでも収穫でした

Javaで簡単なiアプリを作ってただけだったのでcとwindowsAPIを
平行してやっているのですが、なかなか厳しいのが現状です

79 :デフォルトの名無しさん:2005/04/19(火) 02:58:06
初心者にVisual C++を教えるのであって、C++を教えるのではない。



80 :デフォルトの名無しさん:2005/04/19(火) 02:59:16
MFCがWin32APIと同じ名前のメソッドを持ってるのはVisual C++の話だろ。

とはいえ、::の意味を知らない質問者にも困るが・・・。

81 :デフォルトの名無しさん:2005/04/19(火) 03:47:20
どうでもいいけど::←見えにくいな
::CreateWindow←だからって初心者スレらしく全角でもいいが
コピペして動かないとか言われても困るか…

82 :デフォルトの名無しさん:2005/04/19(火) 11:01:09
LoadLibraryしてGetProcAddressして得たC++関数を呼ぶ(実行する)には
どうしたらいいですか?
例えば ?OpenSoftkeyPallete@@YAPAUHWND__@@PAU1@@Z の場合。

83 :デフォルトの名無しさん:2005/04/19(火) 11:08:19
関数のアドレスが取得出来たって事は
その関数の呼び出し方法に則って呼び出せば良いだけじゃない?

84 :デフォルトの名無しさん:2005/04/19(火) 16:09:27
本来 return msg.wParam を返すとかなってますが、
エラーが起こったときは、return 1 じゃなくて、return 0 で良いのでしょうか?

85 :デフォルトの名無しさん:2005/04/19(火) 19:39:41
>>84
何の話だ?

86 :デフォルトの名無しさん:2005/04/19(火) 21:06:27
VisualStudio.NETtheSpokePremiumを買って、初めてVisual C++.NETを使おう
と思うのですが、何から始めていいのかわけがわかりません・・・
C++の入門書とVisualC++.NETの入門書一体どっちを買えばいいのですか?


87 :デフォルトの名無しさん:2005/04/19(火) 21:22:12
NETの入門書でも買ってまずはHelloWorldから始めましょう。

88 :デフォルトの名無しさん:2005/04/19(火) 21:28:08
>>87
でも、.NETの本ってC++がある程度わかった人向けのような気がする
のですが、気のせい?

89 :デフォルトの名無しさん:2005/04/19(火) 21:36:56
そう思うなら実際本屋さんへ行って確かめてみた方がいいかも。

90 :デフォルトの名無しさん:2005/04/19(火) 21:41:40
>>89
C++の本ではなく.NETの本じゃないとなにか困るんですか?

91 :デフォルトの名無しさん:2005/04/19(火) 21:45:58
いやそういう意味じゃなく両方の本を比べてみたらって事。
NETの入門書の最初の方をみて書いてある内容自体何がなんだか
サッパリならC++の入門書を買ったほうが良いだろうし。

92 :デフォルトの名無しさん:2005/04/19(火) 21:55:13
.NET本のほうはIDEの使い方も一緒に載ってるんじゃない?
俺はvcvars32.batを利用してコマンドラインから使ってる。

ところで、どこかにVCのデバッガの解説サイトって無いですか?

93 :デフォルトの名無しさん:2005/04/19(火) 21:59:46
>>92
解説の必要があるのかどうか・・・

94 :デフォルトの名無しさん:2005/04/19(火) 23:03:46
>>93
詳しく

95 :デフォルトの名無しさん:2005/04/19(火) 23:06:45
ヘルプで十分という事じゃないかと

96 :デフォルトの名無しさん:2005/04/19(火) 23:25:20
プログラムを覚えたいんですが、なにから始めたらいいでしょうか・・・


97 :デフォルトの名無しさん:2005/04/19(火) 23:28:17
とりあえず、そんな質問をしないようになればいいと思う

98 :デフォルトの名無しさん:2005/04/20(水) 00:24:15
>>96
なんで?

99 :デフォルトの名無しさん:2005/04/20(水) 01:04:53
>>86
C++の初心者ならC++の入門書
VC++.NETの初心者ならVC++.NETの入門書
どちらも初心者なら、両方の入門書をそれぞれ。

C++はプログラム言語
VC++.NETは処理系

この違いを区別せず、一度にやりましょう、という本もあるけどね。

100 :デフォルトの名無しさん:2005/04/20(水) 16:02:23
質問です。環境は XP、VC++ 6.0 です。

MFC を使って組んでいます。
実行中に 「半角/全角」を押すと、辞書がONになり、
キーを押したときの処理を奪われてしまいます。
(生成したウィンドウの左上に打った文字が出てくる)
これを回避するにはどうすればいいでしょうか。
「半角/全角」を押しても辞書がONにならないように……。

よろしくお願いします。

101 :デフォルトの名無しさん:2005/04/20(水) 16:24:53
キーボードの設定を変える

102 :デフォルトの名無しさん:2005/04/20(水) 16:29:18
>辞書がONになり

?辞書?


103 :デフォルトの名無しさん:2005/04/20(水) 16:36:21
>>100
「プリプロセッサの定義」に「WINVER=0x040A」を追加

#include <imm.h>
#pragma comment(lib,"Imm32.lib")

ImmDisableIME(0);



104 :デフォルトの名無しさん:2005/04/20(水) 17:09:26
>>101-103

IME をキーに調べればよかったんですね。
正常に動きました、ありがとうございました。

105 :デフォルトの名無しさん:2005/04/20(水) 17:13:41
VC++.netでコンパイルする際にアセンブラコードを生成させたいのですが、どうやったらよいのか分かりません。
どなたか知ってる方居ましたら教えていただけないでしょうか。

106 :デフォルトの名無しさん:2005/04/20(水) 17:19:42
>>105
プロジェクトのプロパティなどで、出力だかなんだかのタブにあるコンボボックスで
「アセンブラのみ」などを選択すればいい。

107 :デフォルトの名無しさん:2005/04/20(水) 17:26:58
>>106
見つけることが出来ました。ありがとうございます。

追加なのですが、コマンドラインから実行する際にもオプションで出来るのでしょうか?

108 :デフォルトの名無しさん:2005/04/20(水) 17:38:49
ついさっきインストールしたんだがソース窓に行がデフォルトで表示されて無いのな
小一時間探してるんだがみつからねorz
たしけてorz

109 :108:2005/04/20(水) 17:42:45
書き忘れ .NETです

110 :デフォルトの名無しさん:2005/04/20(水) 17:45:20
>>108
ツール->オプション->テキストエディタ

111 :110:2005/04/20(水) 17:47:57
->(Cなら)C/C++ ->全般

112 :108:2005/04/20(水) 17:49:42
即レスThx
これがないとなんだか気持ち悪い…

113 :デフォルトの名無しさん:2005/04/20(水) 18:45:06
うげ、あると気持ち悪いんだが。
もしかして、ROM-BASICでauto使う気分なんだろか。

>>107
設定画面をよく見よう。設定の脇に(/FA)とか書いてないか?

114 :105:2005/04/20(水) 19:35:23
>>113
/FAありました。とても助かりましたありがとうございました。

115 :デフォルトの名無しさん:2005/04/20(水) 19:42:10
VC++.net 2003で使えるクラスで、DelphiのTBitmapのScanlineのように、
ビットマップダンプイメージをポインタでそのまま操作できる画像表示クラスはありますか?


116 :デフォルトの名無しさん:2005/04/20(水) 20:01:56
Delphiスレで聞けば?

117 :デフォルトの名無しさん:2005/04/20(水) 20:31:58
それはどうなんだろうか

118 :デフォルトの名無しさん:2005/04/20(水) 20:45:18
>>115
無い。
DirectdrawのBltFastメソッド使え。

119 :デフォルトの名無しさん:2005/04/21(木) 13:41:26
VC++.NET2003でビルドしたものをデバッグ実行したら、

>HEAP[○○.exe]: HEAP: Free Heap block 3e61d0 modified at 3e61f8 after it was freed

このようなエラーが出ました。解放済みメモリにアクセスしたのが悪いのは
わかりましたが、それがソースプログラムのどの部分が原因で起こっているのかを
どうやって探せばいいのでしょうか?
VS上の呼び出し履歴では ntdll.dll!7c989d18() のようなものばかり並んでいるので、
どのクラス・関数でこのエラーが起きたのかもわかりません。
ソースは300ファイルぐらいありますので、「怪しいところをよく眺めて見る」という
対処法ではとても苦しいです。
合理的な検出が出来るようなツールの使い方もしくは検出テクニックを
教えていただけたらありがたいです。

なお、STLport4.6.2,boost1.32を使用しています。

120 :デフォルトの名無しさん:2005/04/21(木) 13:54:58
ここは「初心者に〜教えるスレ」ですよ

121 :デフォルトの名無しさん:2005/04/21(木) 14:42:48
>>119
free()を検索して、引き数をその直後でNULLにしておく。
Ex.
free(foo);→free(foo);foo = NULL;
まともなエディタを使えば一気に全部置換できるからそんなに手間でもなかろう。
#VisualStudioしか使えない? がんばってね。

122 :デフォルトの名無しさん:2005/04/21(木) 15:45:43
c++にもtryブロックがあると聞いたのですが。
tryが認識されません。
設定の例外処理もちゃんと有効にしているのですが。
もしかして、なにかincludeしないといけないのでしょうか?
ちなみに私はVCコンソールアプリケーションでやっています。

123 :デフォルトの名無しさん:2005/04/21(木) 15:49:15
>>122
>tryが認識されません。
具体的に。エラーメッセージが出たのならコピペ。

124 :デフォルトの名無しさん:2005/04/21(木) 15:49:25
MSDN、C++入門書などを読んで、構文を先ず理解してください。

#ただ「tryが認識されません」と書かれても、あなたがどんなコードを書いたのか誰にもわかりませんから。

125 :デフォルトの名無しさん:2005/04/21(木) 15:52:11
>>123
error C2065: 'try' : 定義されていない識別子です。
上記のエラーが出ました

126 :デフォルトの名無しさん:2005/04/21(木) 16:02:25
>>125
まずは該当部分を貼り付けろ。

127 :デフォルトの名無しさん:2005/04/21(木) 16:05:03
>>126
コードがかなり長いので一部のみ
printf("\t文字を入力してください(zで終了):");
try{
gets(str12);/*値を取得してstr12に格納*/
}catch(...){
printf("エラー");
}

128 :デフォルトの名無しさん:2005/04/21(木) 16:24:07
連レスすみません。
上記のコードでは一部過ぎてわからないと思うので全部の関数を丸ごと載せます。
長いので2回に分けて記述します
void mo12(void){
char str12[5]={0};/*結果を入れてもらう変数*/
int strbl;/*strlenghtの結果を入れる為の変数*/
putchar('\n');
for(;1;){
printf("\t文字を入力してください(zで終了):");
try{
gets(str12);/*値を取得してstr12に格納*/
}catch(...){
printf("エラー");
break;
}


129 :デフォルトの名無しさん:2005/04/21(木) 16:25:13
連レスすみません。
上記のコードでは一部過ぎてわからないと思うので全部の関数を丸ごと載せます。
長いので2回に分けて記述します
//str12[0]='z';
strbl=strlen(str12);//文字の最大数を測定
//元の値の表示
if(strbl>5){er=-3;error1(&er);break;}
putchar('\t');
for(i=0;i<strbl;i++){printf("%X ",str12[i]);}
printf("が入力されました\n\t");
for(count=0;count<strbl;count++){
er=mondai12(str12,count);/*文字をHEXコードに変換し、上位ビットと下位ビットを入れ替える関数*/
if(er<0){/*エラー処理*/error1(&er);}else{
//結果の表示
if(count==0){/*最初のみ表示*/printf("上位ビットと下位ビットを入れ替えると");}
printf("%X ",er);
}
}
printf("\n\n");
for(count=0;count<strbl;count++){/*大文字か小文字のzを検索該当する値があれば-5をerに代入*/
if(str12[count]==0x7a||str12[count]==0x5a){
er=-5;}
}
if(er==-5){break;}
}
}

130 :デフォルトの名無しさん:2005/04/21(木) 16:27:18
Cとしてコンパイルしている悪寒。

131 :デフォルトの名無しさん:2005/04/21(木) 16:28:28
ここC++のスレじゃないから
C++の質問はC++のスレへどうぞ


132 :デフォルトの名無しさん:2005/04/21(木) 16:31:22
>>131
このスレではないのなら別のスレで聞いてきます。
ありがとうございました

133 :デフォルトの名無しさん:2005/04/21(木) 16:39:21
>>132
移動するならこっちとか。
C++相談室 part40
http://pc8.2ch.net/test/read.cgi/tech/1113408957/


ソースの拡張子が*.cになってたりしないか?

134 :デフォルトの名無しさん:2005/04/21(木) 16:48:45
>>133ソースの拡張子は.cになってます(汗

135 :デフォルトの名無しさん:2005/04/21(木) 16:50:51
>>134
それじゃc++の機能が使える分けないじゃん。
*.cppに変えてもう一回試してみ。

136 :デフォルトの名無しさん:2005/04/21(木) 16:55:55
>>135
.cppに変えたら機能しました。
教えていただきありがとうございました。

137 :デフォルトの名無しさん:2005/04/21(木) 18:04:00
なんでこんな初心者が涌いてくるんだ?

138 :デフォルトの名無しさん:2005/04/21(木) 18:04:45
初心者スレだった・・・


139 :デフォルトの名無しさん:2005/04/21(木) 18:45:19
>>119
VC++に関係ない一般的なC言語での話は>>121さんがしてくれてるので、
私はVC++に特化した、より便利な方法を紹介します。

VC++にはデバッグ ヒープというものがあります。
そのようなエラーメッセージが出るのは、
問題を発見するためのデバッグ ヒープのメカニズムがうまく働いたからです。

まずは、MSDNライブラリで、
_CrtSetDbgFlag関数や、それに関連したところをあちこち読んでください。

具体的なやり方ですが・・・

そのエラーメッセージは、無効なヒープに書き込みの形跡があるかチェックした時に出ます。
チェックを行うのは、通常は、プログラムの終了時です。
(なので、その時のコールスタックを見ても、問題箇所はわかりません。)

そこで、
_CrtSetDbgFlag関数で_CRTDBG_CHECK_ALWAYS_DFを指定するか、
_CrtCheckMemoryをあちこちに挿入するなどして、
プログラム実行中に、ヒープのチェックをさせます。

そうすることで、どこまではチェックでエラーが出ず、
どこまで行くとチェックでエラーがでるかで、問題の範囲を絞りこむことができます。

便利のために、すべての関数の入り口と出口に、
FUNC_IN(funcname)、FUNC_OUT(retvalue)、といったマクロを仕込んでおくと、
いざという時に、チェックルーチン呼び出しを容易に仕掛けることができますよ。

ちなみに、毎回同じアドレスになるなら、デバッガでブレークポイントを張れば、
すぐに、そのアドレスに書き込んでいる箇所を発見できるかもしれません。

140 :121:2005/04/21(木) 18:47:43
>>139
( `・ω・´)参考になった♪

141 :139:2005/04/21(木) 18:49:20
補足

VC++自体に、メモリリークやヒープエラーの検出機能があるわけだけど、
それを使うのが面倒ならば、
CompuwareのBoundsChecker
のようなツールを使うと、ソースコードに手を入れずに、
同じような検出をしてくれます。

BoundsCheckerは単体売りもあるけど、他のツールとセットになったもののほうがお買い得。
無償バージョンアップの年間保守料金もあるけど、そんなにバージョンアップしないので、
毎回買うのと同じか、かえって高くつくので、予算計画が立てやすい以外にはメリットないかも。

142 :139:2005/04/21(木) 19:07:37
補足

もちろん、freeしたポインタをNULLにしておくのは、ぜひやるべきです。
さっくりNULLポインタ例外で問題箇所を発見できる可能性が高いですから。

問題は、ポインタをコピーして覚え続けている人がいる、ということです。
そういう場合に、デバッグ ヒープが必要になるんです。

143 :デフォルトの名無しさん:2005/04/21(木) 19:08:13
ぬるぽおぉ

144 :デフォルトの名無しさん:2005/04/21(木) 19:20:40
■━⊂( ・∀・) 彡 ガッ☆`Д´)ノ

145 :デフォルトの名無しさん:2005/04/21(木) 21:43:01
#define free(p) (free(p), (p) = 0)

146 :デフォルトの名無しさん:2005/04/21(木) 22:32:39
>>138 (´゚c_,゚` ) プッ

147 :デフォルトの名無しさん:2005/04/22(金) 00:00:46
ifstreamのgetline()を使ってファイルを一行ずつ読み取りたいんですが、
一度に読み込むバッファ長を越えた行を読み込むと、eof()がきちんと認識されないみたいなんです。
例えば・・・

const int BUFLEN = 10;
char buf[BUFLEN];

ifstream file("hoge.txt");

while ( file.eof() == false )
{
  file.getline(buf, BUFLEN);
  cout << buf << endl;
}

↑では、10文字を越える文字数を読み込むと、その後は無限ループになってしまいます。
BUFLENを1000などの大きめの数字にしとけば問題ないですが・・・
これってgetline()の仕様なんでしょうか?


148 :デフォルトの名無しさん:2005/04/22(金) 01:01:55
無料でダウンロードできるVisual C++ Toolkitと
市販のVisual C++はどう違うんでしょうか?

149 :デフォルトの名無しさん:2005/04/22(金) 01:32:12
IDEが付くか付かないか

150 :デフォルトの名無しさん:2005/04/22(金) 01:35:54
ATLとかMFCとかも

151 :デフォルトの名無しさん:2005/04/22(金) 09:37:20
>>147
C++スレで教えてもらえば?

152 :デフォルトの名無しさん:2005/04/22(金) 11:18:40
オーバーロードをしたいのですがうまくいきません、なぜでしょうか?
エラーは、'func' : 2 のオーバーロードは 1 番目の引数を 'char' から要求の型に変換できません。(新しい機能 ; ヘルプを参照)
と出ています
コードが長い為一部省略します
#include<stdio.h>
#define RESULT_OK 0
int main(void){
 char str3_1=61;
 char str3_2=62;
 func(str3_1,str3_2);
}
char func( char *buffp ){
char cnt=0;
cnt++;
return cnt;
}
char func( char *destp, char* srcp ){
char rtn = RESULT_OK;

return rtn;
}


153 :デフォルトの名無しさん:2005/04/22(金) 11:36:52
>>152
うまくいってないのはオーバーロードじゃない。
char* 型の引数に char を指定して一体何をやりたいのかと。

154 :デフォルトの名無しさん:2005/04/22(金) 11:38:58
>>153
すみません、一部訂正します。
func(str3_1,str3_2);

func(&str3_1,&str3_2);

155 :デフォルトの名無しさん:2005/04/22(金) 11:53:06
>>152 154
C++スレで教えてもらえば?


156 :デフォルトの名無しさん:2005/04/22(金) 11:57:23
>>155 ここではだめですか?
ある意味初心者的な質問だと思うのですが。

157 :デフォルトの名無しさん:2005/04/22(金) 12:03:22
>>156
ここでもいいけど、先ずはそのアホさ加減を何とかしてくれ。

>152のエラーメッセージでは、引き数がcharだと言っている。
実際コードもfunc(str3_1,...でcharを渡している。
ところが>154ではfunc(&str3_1,...だと言う。
それならば、>152のようなエラーメッセージになるはずがない。

158 :デフォルトの名無しさん:2005/04/22(金) 12:05:48
>>154
>>152のエラーはこれで出なくなるはずだが。

159 :デフォルトの名無しさん:2005/04/22(金) 12:24:11
>>158
すみません、実行してみたら、エラーが出なくなってました。
よく確認、しなくてすみませんでした。
お答えいただきありがとうございました。

160 :デフォルトの名無しさん:2005/04/22(金) 12:28:22
スレ汚し!
二度と来るな!!

161 :デフォルトの名無しさん:2005/04/22(金) 12:28:29
おいおい、>157には挨拶なしかい。
しかし、どうでもいいけど全貌を見たくなくなるような小汚いソースだな。

162 :デフォルトの名無しさん:2005/04/22(金) 12:41:41
>>157
>>161
すみません、忘れてました。


163 :デフォルトの名無しさん:2005/04/22(金) 19:08:29
初心者って付けば、どんなスレでも構わない、なんて思わないでくれよ。

言語と標準ライブラリと処理系、この3つの区別くらいしてくれ。
というか、区別をしてない解説書を読むのはやめてくれ。

164 :163:2005/04/22(金) 19:09:30
もとい
×標準ライブラリ
○ライブラリ

標準ライブラリでも、サードパーティでもいいが、
このスレで扱うライブラリは、MFCやATLなど、Visual C++特有のものだろ。

165 :デフォルトの名無しさん:2005/04/22(金) 22:39:48
そういう区別がつかない初心者を隔離する
スレだとばかり思っていた2005春

166 :デフォルトの名無しさん:2005/04/23(土) 08:40:29
昔プログラマをしていた者です。
ゲームが作りたくて、久しぶりにプログラムを組んだのですが、
いきなりLoadImage関数で詰まってしまっています。(SDKです)

case WM_CREATE
hbmp = (HBITMAP)LoadImage( hInstance, "gazou.bmp",
IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE );
// hInstanceはWinMainにて保存しています。NULLではありませんでした。

FormatMessageで調べると"パラメータが正しくありません"と返ってきてしまいます。
ヘルプを見てもどこが悪いか分かりません。
LoadImageのDesired引数等を変えたりして1、2時間この1行で悩んでいます。。
おまぬけな質問ですが、どなたか教えてくださいませ。

167 :デフォルトの名無しさん:2005/04/23(土) 08:58:10
たった1、2時間か。もっと悩もうよ。

168 :デフォルトの名無しさん:2005/04/23(土) 09:07:32
>>166
インスタンスハンドルはリソース用だからNULLでいいんじゃないか?

169 :デフォルトの名無しさん:2005/04/23(土) 09:11:05
WM_CREATE内ではreinterpret_cast<CREATESTRUCT *>(lParam)->hInstanceで
CreateWindowExを呼んだときに指定したインスタンスハンドルを入手できる。

170 :デフォルトの名無しさん:2005/04/23(土) 09:29:19
Visual Studio で使える、↓みたいなのありませんか?
http://www.gnu.org/software/ddd/


171 :デフォルトの名無しさん:2005/04/23(土) 09:49:35
LoadImageでファイルから画像を読み込む場合、HINSTANCEは「NULLでなければならない」

172 :166:2005/04/23(土) 10:58:31
>>167
昔散々やったことなので、時間が勿体無くて。。
他の人に聞くと一瞬で解決することが時々あるので質問させてもらいました。

>>168
リソースからロードする時はNULLで良い様な気がします。

>>169
WM_CREATEのlParamがCREATESTRUCT構造体へのポインタになってるんですね。
そういえばそんな記憶が。。

>>171
NULLでは駄目でした。

多くのレスありがとうございました。
もう少し悩んでみます。

P.S もしかして環境が悪いのでしょうか?
   WindowsME&VC++6.0です。

173 :デフォルトの名無しさん:2005/04/23(土) 11:00:42
>>170
詳しく

174 :171:2005/04/23(土) 12:07:04
>>172
ハァ?(゚д゚)
LR_LOADFROMFILE指定してんのに、何リソースからロードする時とかNULLではダメでしたとか言ってんの?(゚д゚)

MSDN見たりとか、GetLastError→FormatMessageしてエラー見たりとかしたのか?
時間が勿体無くてとか、他の人に聞くと一瞬で解決したとか
甘えすぎなんだよ

175 :デフォルトの名無しさん:2005/04/23(土) 12:12:04
昔さんざんやったとか言う割にはお粗末だな


176 :デフォルトの名無しさん:2005/04/23(土) 12:13:20
コボラーでな。

177 :デフォルトの名無しさん:2005/04/23(土) 12:13:47
>>174
モチツケ
FormatMesageは既に明かしている。(>>166)

178 :170:2005/04/23(土) 12:23:34
>>173
Visual Studio のデバッガだとリストとかのデータ構造を使ってるときに、
今実際にどういう値が入ってるのか把握するのが大変なので、

ttp://www.gnu.org/software/ddd/all.png

こんな感じに表示してくれるのがあったらいいなぁと思って書いてみました。


179 :デフォルトの名無しさん:2005/04/23(土) 12:30:34
VisualStudio以外のツールを求めてるなら完全なスレ違い。
よそへ行ってくれ

180 :デフォルトの名無しさん:2005/04/23(土) 12:47:19
visual studio .net2003の質問はいいのかな。。
インテリセンスの事だけど。

CreateWindow( xxx, xxx...と書いている時にはパラメータヒントが出てるんだが
他の行等にフォーカスし、その後また続きを書き始めようとすると
最初の括弧を書かないと、今は表示されません。

これを引数の","(コンマ)を入力するとヒントが出てくるようにはなりませんかね?
VBいぢっていた時は、これでヒントが出てきたので少し便利ですた。

181 :デフォルトの名無しさん:2005/04/23(土) 12:54:13
>>180
編集 → 一番下

182 :デフォルトの名無しさん:2005/04/23(土) 13:02:17
>>177
すまん、ついカッとなってしまったorz

>>172
まぁなんていうか、MSDN熟読しろ

183 :デフォルトの名無しさん:2005/04/23(土) 13:10:20
>>181
そういやショートカットがあったな。。
さんくす。コンマじゃぁ無理っぽいけど、まぁ慣れるようにします。

184 :デフォルトの名無しさん:2005/04/23(土) 17:00:17
1つのソリューションに複数のプロジェクトがある場合で、その中のプロジェクトのひとつを
別のソリューションに移動またはコピーしたいんですが、どうやればできますか?

185 :デフォルトの名無しさん:2005/04/23(土) 17:23:27
>>184
コピー元ソリューションの対象プロジェクトファイル(*.vcproj)をコピー先ソリューションのディレクトリにコピー。
コピー先ソリューションで既存項目の追加で対象プロジェクト(勿論コピーしたもの)を追加。
#但し、プロジェクト内の各ファイルについては適宜コピーするかプロジェクトファイルをテキストエディタで編集して相対パスにする。
##プロジェクトファイルを直接複数のソリューションに追加するのはやめた方がいい(若しくはできない)が、ソースファイルは共有可能。

186 :デフォルトの名無しさん:2005/04/23(土) 21:02:51
>>185
ありがとうございます。
IDE上からは出来ないんですね。

187 :デフォルトの名無しさん:2005/04/23(土) 21:26:47
visual c++ 2003.net なんですが
XPでプログラムを作ってw2000にファイルを
持って行きそこで実行するとエラーが出てしまいます。
「CLRエラー」ですとか「ほにゃららのハンドルされていない
例外が不明なモジュールです」などと表示されます。
原因はなんなのでしょうか?中学生ですけど教えてください。

188 :デフォルトの名無しさん:2005/04/23(土) 21:53:42
猫でもわかる を参照にして、
LRESULT CALLBACK DlgProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {
switch (msg) {
   case WM_INITDIALOG: SetTimer(hWnd, ID_MYTIME, 1000, NULL);
   return TRUE;(略
のようなプログラムを作っていてたら、
ダイアログプロシージャの戻り値ってBOOLじゃなかったっけ?
っていうような指摘を受けました。確かに戻り値は TRUE か FALSE ですけど、
どっちが正しいのですか?

189 :デフォルトの名無しさん:2005/04/23(土) 22:28:52
コピペなり、入力支援で作ってください。
頭で覚えるとバグの元です。

190 :デフォルトの名無しさん:2005/04/23(土) 22:41:07
>>187
Win2kに.Net Freamworkをインストールするか、あるいはVC側でマネージ拡張を使わないようにすればいいんじゃないのか?

191 :デフォルトの名無しさん:2005/04/23(土) 22:48:10
>>188
昔 BOOL
今 INT_PTR

192 :デフォルトの名無しさん:2005/04/23(土) 22:56:45
>>188
ついでを言えば実際の値はBOOLでもLRESULTでも大差ない
BOOLはintのtypedefだしLRESULTはlongのtypedef
どちらも現時点で主流のWindowでは同じサイズ

193 :デフォルトの名無しさん:2005/04/23(土) 23:02:53
>>191-192
WINDEF.h というのを見つけてんで、さっそく確認して見ますた。
そうだったんですね、BOOL っていうからてっきり1ビットかと思っていました。
大変勉強になりました。ありがとうございます。

194 :デフォルトの名無しさん:2005/04/23(土) 23:04:55
>>193
そもそも1bitのデータ型なんか存在しないわけだが

195 :デフォルトの名無しさん:2005/04/24(日) 01:41:39
>>194
bool bool bool bool bool bool bool

196 :デフォルトの名無しさん:2005/04/24(日) 01:56:08
>>195
バーカ。
bool は Visual C++ 4.2 では 4 バイト、Visual C++ 5.0 以降では 1 バイト。

In Visual C++4.2, the Standard C++ header files contained a typedef that equated bool
with int. In Visual C++ 5.0 and later, bool is implemented as a built-in type with a
size of 1 byte. That means that for Visual C++ 4.2, a call of sizeof(bool) yields 4,
while in Visual C++ 5.0 and later, the same call yields 1.

197 :デフォルトの名無しさん:2005/04/24(日) 05:12:37
データ型とはちょっと違うが、ビットフィールド、ってのがあるよ。

で、多くのものが実際には32ビット幅なんだけど、
だからといって型を気にしなくていい、というわけじゃない。

198 :デフォルトの名無しさん:2005/04/24(日) 05:15:12
結構検索してみたんだけど・・無かったので質問させて下さい
vs.net2003でF1キーを押した時にヘルプが英語で表示されてしまいます。
日本語を優先的に表示させたいのですが、どこで設定すればいいのでしょうか・・?

フィルタ・言語設定等を日本語に設定してみても、
F1キーでは英語ヘルプが表示されてしまいます。
検索すれば日本語ヘルプは出てくるんだけど・・はぁ。。

199 :デフォルトの名無しさん:2005/04/24(日) 09:51:42
>>174
( ´,_ゝ`)プッ

200 :デフォルトの名無しさん:2005/04/24(日) 10:03:00
人に教えるレベルでもないのに
自惚れている馬鹿はどこにでもいる

201 :デフォルトの名無しさん:2005/04/24(日) 11:23:51
おいおい、今更煽りかよ

202 :デフォルトの名無しさん:2005/04/24(日) 11:57:04
187なのですが、同じXP上で動いていたプログラムが
今日になってエラーが出てしまうのは何が原因なのでしょうか?
w2kでも最初に実行した時はうまく動きましたが、
次からエラーになってしまいます。

>>190さんのおっしゃる通り、このパソコンには
.net freamworkが入ってますし、マネージ拡張を「はい」
にしないとビルドの段階でエラーになってしまいます。
お小遣いを出して解説書を買ったのですがのってないみたいです。

203 :デフォルトの名無しさん:2005/04/24(日) 12:42:43
>>196
実装は1バイトや4バイトでも
言語仕様としては1ビットなわけだが。

intが32ビットというのと同じくらい痛い発言。

204 :デフォルトの名無しさん:2005/04/24(日) 13:28:04
お小遣いというのが何ともかわいらしい

205 :デフォルトの名無しさん:2005/04/24(日) 13:31:42
だが大の大人のサラリーマンでもお小遣いな罠

206 :デフォルトの名無しさん:2005/04/24(日) 14:40:41
>>198
.NET IDE の
オプション -> 環境 -> 国際対応

Document Explorer の
オプション -> 国際対応

207 :デフォルトの名無しさん:2005/04/24(日) 16:07:52
結構調べてみたんですけど、よく分からなかったので教えてください。
visual studio.net使ってアプリケーション作れって課題出されたんです。
テンプレートでよく使われているのはMFCかwin32かのどちらかみたいなんですけど、
両者がどのように違うのかが良く分かりません。
出来れば、特徴とか記述方法の違いとか分かりやすく教えていただけると
うれしいです。

208 :デフォルトの名無しさん:2005/04/24(日) 16:17:50
多分、違い教えても君のレベルでは両方とも使えない

209 :デフォルトの名無しさん:2005/04/24(日) 16:36:04
その高慢な回答は全く無意味かと

210 :デフォルトの名無しさん:2005/04/24(日) 16:44:18
Win32=いわゆるWin32API。Windowsの機能に低レベルでアクセスできる。
MFC=クラスライブラリ。Windowsの機能にクラスを通じてアクセス可能
C++の知識が必要

でも>>208

211 :デフォルトの名無しさん:2005/04/24(日) 16:56:15
なんか簡単すぎる説明だな

Win32
  Win32APIやC/C++標準ライブラリなどを直接使ってWin32アプリを作る
  C/C++どちらでも作れる
  作ったアプリはWindowsが入っていて、使用APIとOSバージョンが合致してれば使える

MFC
  Win32APIやライブラリを分野ごとにクラスにまとめで使いやすくした(MS談)
  Microsoft Fundation Classというクラス群を使ってWin32アプリを作る
  クラスなので当然C++じゃないとダメ
  作ったアプリはMFCのDLLをインストールしてあるPCでないと動かない
  Windowsインストールしただけじゃだめ



212 :デフォルトの名無しさん:2005/04/24(日) 16:58:57
>>211
>なんか簡単すぎる説明だな

説明する方も良く分かってないみたいだからね

213 :デフォルトの名無しさん:2005/04/24(日) 17:00:35
ヘタレな俺の経験からいわせてもらうといきなりMFCより
Win32APIでシコシコ作った方が勉強になる

214 :デフォルトの名無しさん:2005/04/24(日) 17:10:11
つうかWinインストールしてあればMFCxx.DLLってインストールされなかったっけ
まぁバージョンの問題があるだろうけど

215 :デフォルトの名無しさん:2005/04/24(日) 17:15:16
スタティックリンクしたらMFCのDLLは要らない。

  作ったアプリはMFCのDLLをインストールしてあるPCでないと動かない
  Windowsインストールしただけじゃだめ


216 :デフォルトの名無しさん:2005/04/24(日) 17:17:26
>>214
御意。
例えば、Win2K以前にはMFC7.1以降のDLLはない。

>>207
どんなアプリケーションを作りたいのかを示さないと、斯くの如く混乱を招く。
作る課題はどんなものなのかね。

217 :デフォルトの名無しさん:2005/04/24(日) 17:18:31
漏れの持ってた98にはDLLそのものが無かったんだが

218 :デフォルトの名無しさん:2005/04/24(日) 17:18:54
>>215
誰があんなでかいもんスタティックリンクすんだよw

219 :198:2005/04/24(日) 17:58:44
>>206
答えてくれてありがと。
だた・・まだ変更されないです。。

とりあえず、↓の目に付いた設定は日本語にしています。
ツール -> オプション -> 国際対応の設定 -> 言語 = 日本語
ツール -> オプション -> ヘルプ -> 言語の選択 = 日本語

Document Explorerの
オプション -> 国際対応の設定 -> 言語 = 日本語

"ShowWindow" 、"RegisterClassEx"など日本語訳があるのに
F1押してみると、何故か英語が表示されてしまうです・・

220 :デフォルトの名無しさん:2005/04/24(日) 18:50:05
>>203
>言語仕様としては1ビットなわけだが。
言語仕様のどこに1ビットって書いてあるか教えてくれ。

221 :デフォルトの名無しさん:2005/04/24(日) 18:53:30
バイト単位でデータを扱うものにビット仕様があるわけがない

222 :デフォルトの名無しさん:2005/04/24(日) 19:27:01
>>207
マニュアル読め
じゃいかんのかね 最近は・・・

たいてい書いてあるんだがね

223 :デフォルトの名無しさん:2005/04/24(日) 19:32:04
というかインターネッツでしらべれば一発なんだけど

224 :207:2005/04/24(日) 19:55:37
>>216
エクセルファイルを開かないでデータのみを読み込んで、設定を入力
すると、計算して値の内容が合ってるかチェックできるような
アプリケーションなんですけど・・。
>>222
マニュアルは手元に無いので(回してインストールしたので)、
参照したいんですが出来ないのです。
>>223
どこかおすすめのサイトってありませんか?

225 :デフォルトの名無しさん:2005/04/24(日) 20:04:54
落としてきたんでしょw

226 :デフォルトの名無しさん:2005/04/24(日) 20:51:19
> マニュアルは手元に無いので(回してインストールしたので)、
> 参照したいんですが出来ないのです。

著作権法違反発見!!!!!

227 :デフォルトの名無しさん:2005/04/24(日) 21:11:06
アカデミックライセンスとかじゃないの?

228 :デフォルトの名無しさん:2005/04/24(日) 21:13:19
(CDをドライブ内で)回してインストール

229 :デフォルトの名無しさん:2005/04/24(日) 21:16:35
アカデミックライセンスでも回してインストールは駄目だろ。

230 :デフォルトの名無しさん:2005/04/24(日) 21:17:21
スゲー誤魔化し方だなw

231 :デフォルトの名無しさん:2005/04/24(日) 21:20:20
>>224
犯罪という意識がないんだろうな

232 :デフォルトの名無しさん:2005/04/24(日) 21:28:16
>>218
最近のPCはHDDの容量が多いので、スタティックリンクしたときの
メリットの方が多いですね。

233 :デフォルトの名無しさん:2005/04/24(日) 21:34:48
>>232
HDDの容量なんてどうでもいい罠

234 :デフォルトの名無しさん:2005/04/24(日) 22:00:50
どうせDLLヘル対策で実行ファイルと同じフォルダにDLL配置したりするから大差ないかも

235 :デフォルトの名無しさん:2005/04/24(日) 22:35:23
スクール アグリーメントとかじゃねぇの?

236 :デフォルトの名無しさん:2005/04/24(日) 23:15:01
そっちもさることながら、 「エクセルファイルを開かないでデータのみを読み込んで」の部分を誰か解説してくれ。

237 :デフォルトの名無しさん:2005/04/24(日) 23:17:20
俺のESPによると
「エクセルファイルを開く」とはxlsファイルをダブルクリックする事だと推測
つまりプログラムから読み込むのは「エクセルファイルを開く」にあたらない

238 :デフォルトの名無しさん:2005/04/24(日) 23:18:48
>>233
じゃ、なんでダイナミックリンクするの?

239 :デフォルトの名無しさん:2005/04/24(日) 23:52:02
猫のソケットプログラミングの
saddr.sin_addr = *((LPIN_ADDR)*lpHost->h_addr_list);
の一文の右の式の意味ってどういうこと?
lpHostこうぞうたいのh_addr_listの値をロングポインタ型のINADDRにキャストした
やつのポインタの中身を左辺に代入するってこと?

そもそもwsprintfのwとかLPIN_ADDRのLPとかなんのことなんでしょうか?


240 :デフォルトの名無しさん:2005/04/25(月) 00:10:58
w : winapi
l : long
p : pointer

241 :デフォルトの名無しさん:2005/04/25(月) 00:11:47
wの説明はネタだと信じたい

242 :デフォルトの名無しさん:2005/04/25(月) 00:15:47
w : wide -> wideってなんですか?(以下略

243 :デフォルトの名無しさん:2005/04/25(月) 00:15:49
ということは、lphostのh_Addr_listの中身をロング型のポインタに変換
したやつの中身(つまりアドレス?)がはいるということでしょうか。



244 :デフォルトの名無しさん:2005/04/25(月) 00:34:48
ていうか239でだいたい合ってると思うがどうか。
HOSTENT構造体のポインタlpHostのメンバのh_addr_listをLPIN_ADDRにキャストして参照してる。
h_addr_list自体はポインタのポインタ。要はネットワークアドレスの配列。

LPは普通のポインタだと思っとけばいいと思う。

245 :デフォルトの名無しさん:2005/04/25(月) 00:44:22
saddr.sin_addr = *((IN_ADDR*)*lpHost->h_addr_list);

246 :デフォルトの名無しさん:2005/04/25(月) 06:30:30
>>238
無い頭で考えろ

247 :デフォルトの名無しさん:2005/04/25(月) 06:53:29
なんとなくですがだいたいわかりました
ありがd

248 :デフォルトの名無しさん:2005/04/25(月) 10:08:25
CreateThreadでスレッドを作るだけで、複数のcpuを持つコンピュータで
実行させた場合それだけで複数のcpuに処理を分散させることになるのですか?

249 :デフォルトの名無しさん:2005/04/25(月) 10:54:49
>>246
結局、説明出来ないのですね

250 :デフォルトの名無しさん:2005/04/25(月) 11:02:47
>>248
むしろスレッドをどのcpuで実行させるかは指定できない。
OSが管理するので。


251 :デフォルトの名無しさん:2005/04/25(月) 14:17:39
楕円の画像処理をする場合、
1画素1画素処理していく以外に何か方法とかありますか?

252 :デフォルトの名無しさん:2005/04/25(月) 14:18:25
>>251
LineTo

253 :デフォルトの名無しさん:2005/04/25(月) 16:49:59
>>249
自分がわからんからって人のせいにするなよ

254 :デフォルトの名無しさん:2005/04/25(月) 17:04:37
質問です。
pgm形式の画像ファイルを読み込むので、一番簡単な方法ってなんでしょうか?

255 :デフォルトの名無しさん:2005/04/25(月) 17:12:11
pgm形式って何?

256 :デフォルトの名無しさん:2005/04/25(月) 17:15:41
スレッドについて質問があります。
マニュアル等では、各スレッドの処理がタイムスライスに従って
移行しているようですが、一時的にプリエンプションを禁止して、
その後解除するような事はできるのでしょうか?

257 :デフォルトの名無しさん:2005/04/25(月) 17:18:23
あんまりマイナーな話題は、他の初心者の役に立つと思えないな。

258 :デフォルトの名無しさん:2005/04/25(月) 17:28:41
>>254
Unix系のライブラリを使うのがいちばん簡単。
まぁ、自分で書いても大したことないけどね。
詳しくはVCスレではないC/C++初心者スレか画像スレにでも。

>>255
鸚鵡返しに質問しないで少しは自分で調べたら?

259 :デフォルトの名無しさん:2005/04/25(月) 18:00:00
>>254
pgmだけ読み込むなら自前で処理したほうがいいね。
ライブラリを使うという手もあるけど、
ライブラリの使い方を調べてる時間があったら充分自分で実装できる。
もし使うならSusie Plug-inあたりがお勧めだね。
単純な形式だから、UNIX系のライブラリがお勧めできないのはわかるよね?

>>255
はるか昔の画像形式。
おじさんが若い頃はpgm使ってたんだよ。
リソースの代わりにソースに画像を埋め込んだりするときに使える。
その代わりものすごく効率悪い。
今ネイティブ形式として使ってたら池沼だね。

260 :デフォルトの名無しさん:2005/04/25(月) 18:08:46
マルチメディアタイマーと普通のタイマーの違いは何ですか?

261 :デフォルトの名無しさん:2005/04/25(月) 18:22:06
>>260
あなたにとっての普通のタイマーとは?

262 :デフォルトの名無しさん:2005/04/25(月) 18:27:24
普通のタイマーの誤差はおよそ0.06秒(厳密にはOSに依存)

263 :デフォルトの名無しさん:2005/04/25(月) 18:33:05
>>259
もしや、xpmと勘違いしていませんか?
つーか、pgmをソースに埋め込んだら只の阿呆ですな。
今でも2次元のべたデータにpgmのヘッダだけ付け足してxvで表示するエンジニアは目の前にごろごろしているんだけど、
unixも使えないロートルには荷が重い話かな?

264 :デフォルトの名無しさん:2005/04/25(月) 18:39:45
スレ違い

265 :デフォルトの名無しさん:2005/04/25(月) 18:55:22
>>262
ありがざいました

266 :デフォルトの名無しさん:2005/04/25(月) 20:40:49
>250
つSetThreadAffinityMask

>256
スレッドのプライオリティを最大まで上げれば、他に対抗するスレッドが
現れない限り、似たような効果は得られるとおもう。CPUが複数あるなら
意味なしだけど。

267 :198:2005/04/25(月) 20:47:43
>>198
>>219
どなたか教えて貰えませんか?
>>219の設定にしたら通常は
日本語ヘルプが優先的に表示されるのでしょうか?

268 :デフォルトの名無しさん:2005/04/25(月) 21:18:17
>>267
再インストール
ここってパソコン初心者板だっけ?

269 :デフォルトの名無しさん:2005/04/26(火) 00:42:50
>>253
ここは初心者スレだぞ。
勿体ぶらずに説明しろよ。

270 :デフォルトの名無しさん:2005/04/26(火) 02:04:14
C++の基礎を勉強してからウィンドウズプログラミングをやろうと思っているのですが、
いきなりMFCから入っても大丈夫でしょうか?
MFCの方がWin32 APIだけよりも本格的っぽいので、いきなりこちらからやろうと思っているのです。

271 :デフォルトの名無しさん:2005/04/26(火) 02:42:37
とりあえずやってみろよ。


272 :デフォルトの名無しさん:2005/04/26(火) 03:15:32
SDKで++のライブラリを使いたいのですが(CFontなど)
インクルードファイルやリンクライブラリは何を指定すればいいのでしょうか?
その他注意点があったら教えて草代。

273 :デフォルトの名無しさん:2005/04/26(火) 05:30:37
MSDNのCFont見れば書いてあるんだがよ・・・

274 :デフォルトの名無しさん:2005/04/26(火) 10:39:47
基本クラスから継承してるから
それだけあってもダメかもしれんな

275 :デフォルトの名無しさん:2005/04/26(火) 11:56:15
MFC自体の初期化も必要かもしれんな。

276 :デフォルトの名無しさん:2005/04/26(火) 12:14:29
VS2003でクラスライブラリを作成して、「hello」というプロジェクトを作りました。

hello.cppのソースに

#include <ATLComTime.h>
を書き加えるとリンクエラーになるのですがどうしたらいいですか?
heloo.cppのソースは

// これは メイン DLL ファイルです。
#include "stdafx.h"
#include "hello.h"
#include <ATLComTime.h>

だけです。
初心者ですいませんがどなたか教えていただけないでしょうか?

277 :デフォルトの名無しさん:2005/04/26(火) 12:41:53
ATL使うならライブラリがいるんじゃないか?
ATLは初心者向けじゃないと思うから
それ以上はコメントしません。

278 :デフォルトの名無しさん:2005/04/26(火) 12:53:15
そうなんですか・・・。
サンプルソースがWindowアプリだったので内部処理の部分をDLL化してみたかったんです。
どうもありがとうございます。

279 :デフォルトの名無しさん:2005/04/26(火) 13:49:57
>>270
僕も君と同じような道を歩んだよ。C++を勉強して、MFCに入っていった。
Windowsプログラミングを習得するための入り口としては適してるかもしれない。
(というよりこれぐらいしかない?ATLはさすがに初心者は難しいだろうし)
ただ、int main(){}で始まるプログラミングしか知らない人は戸惑うと思う。
なんせ根幹となるループ構造が隠蔽されてるからね。フレームワークという概念を習得しよう。
MFCをある程度理解しWindowsMESSAGEとかも理解できてきたら、WIndowsがどのように成り立っているかが
ほんのすこし垣間見えるかも。

最終的には、MFCのダメさ加減を認識し始めたら一人前だ。

280 :デフォルトの名無しさん:2005/04/26(火) 13:58:53
>>218
static linkの場合は必要なものだけ選別してリンクするから
あの馬鹿でかいDLLの容量だけ増えるわけじゃないよ。

とはいえ、MFCはどういうわけかちょこっとstatic linkするだけでも、意外に容量的コストが
発生するという話だ。

281 :デフォルトの名無しさん:2005/04/26(火) 17:09:42
VC.NETで完全自作のエディタを作ろうと思ってます。
そこで、文字の色や文字数やデータ構造などを自由に決めるために、
CEditViewを使わずCViewで作ろうと思ってるのですが、
CViewにて日本語入力を受け付ける方法がわかりません。
今ひとつメッセージに関してわかっていない自分ですが、
どのように入力を受け付ければいいのか、
どなたか教えていただけませんでしょうか。
よろしくお願いいたします。

282 :デフォルトの名無しさん:2005/04/26(火) 17:13:22
>>281
ttp://home.h07.itscom.net/buruturi/VCTIPS_008.html
ちなみに(3)-(F)の直後でreturn 0;すれば(4)を書く必要はなくなる。

283 :デフォルトの名無しさん:2005/04/26(火) 17:48:39
> CViewで作ろうと思ってるのですが

完全自作じゃないじゃん

284 :281:2005/04/26(火) 17:53:18
>282
ありがとうございます。
ただ、早速試してみたのですが、どうもうまく行きません。
自分がメッセージ処理に疎いからだと思うのですが…。

-- CMyView.hの中身の一部 --
class CMyView : public CWnd {
protected:
 afx_msg void OnPaint();
 DECLARE_MESSAGE_MAP()
public:
 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
 afx_msg void OnDestroy();
 afx_msg void OnSize(UINT nType, int cx, int cy);
 afx_msg BOOL OnEraseBkgnd(CDC* pDC);
 afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
 /* (イ)ここに何を書けばいいのか */
}
(続く)


285 :続き:2005/04/26(火) 17:53:43
-- CMyView.cppの中身の一部 --
BEGIN_MESSAGE_MAP(CSuperLView, CWnd)
 ON_WM_PAINT()
 ON_WM_CREATE()
 ON_WM_DESTROY()
 ON_WM_SIZE()
 ON_WM_ERASEBKGND()
 ON_WM_KEYDOWN()
 /* (ロ)ここに何を書けばいいのか */
END_MESSAGE_MAP()

以上、(イ)と(ロ)の位置に何を書けばいいのかわかりません。それぞれに
(イ)afx_msg LRESULT OnIMEStartComposition(WPARAM wParam, LPARAM lParam);
(ロ)ON_WM_IME_STARTCOMPOSITION
を書いても「ON_WM_IME_STARTCOMPOSITIONが定義されてない」みたいな
エラーが出てきます。他に何をすればいいのでしょうか?

よろしくお願いします。

286 :281:2005/04/26(火) 17:56:20
>283
そうですね。すいません。
自分が使いやすいエディタを作りたいだけです^^

287 :281:2005/04/26(火) 18:00:37
>上×2
2行目、CSuperLViewではなくCMyViewです。すいません。
実際はCSuperLViewという名前にしてるだけです。

288 :デフォルトの名無しさん:2005/04/26(火) 18:02:30
なんつーか、免許取っていきなりレースに出るようなもんだな。

289 :デフォルトの名無しさん:2005/04/26(火) 19:52:29
// inside the class declaration
afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);

BEGIN_MESSAGE_MAP(CMyWnd, CMyParentWndClass)
ON_MESSAGE(WM_MYMESSAGE, OnMyMessage)
END_MESSAGE_MAP()

これを真似すればできる

290 :281:2005/04/26(火) 21:44:35
>289
できました! 感激です!
どうもありがとうございました!
頑張って免許取りたてでレース出てみます!

291 :デフォルトの名無しさん:2005/04/26(火) 23:01:14
>>232
メモリが無駄になる。
DLLが同じアドレスにロードされれば、同じ物理メモリを共有するが、
スタティックリンクしてしまうと、そういうことができない。

>>248
スレッドにうまく処理を分けるのはプログラマの仕事。
どのスレッドをどのCPUでいつ走らせるかはOSの仕事。

>>250
嘘いうなよ。
Win32 APIのSetThreadAffinityMaskで指定できる。

>>256
普通のユーザモードで走るプロセスは、
プリエンプションを禁止して走ることはできない。
いついかなるタイミングでプリエンプションが発生しても良いようにコーディングしてね。


292 :デフォルトの名無しさん:2005/04/26(火) 23:57:07
>>291
最近のPCはメモリの容量が多いので、スタティックリンクしたときの
メリットの方が多いですね。

293 :デフォルトの名無しさん:2005/04/26(火) 23:58:44
いやメリットは特にないだろ

294 :デフォルトの名無しさん:2005/04/27(水) 00:12:55
ロード時間の短縮と言ってみるテスト

295 :デフォルトの名無しさん:2005/04/27(水) 00:44:40
DLL hellを避けられるのは大きなメリット

296 :デフォルトの名無しさん:2005/04/27(水) 00:53:34
・自作DLLのほとんどがPreferredBASE=1000:0000で
配布されて居る件について。
・MicrosoftはSxsを推奨している件について。

297 :デフォルトの名無しさん:2005/04/27(水) 03:18:45
>普通のユーザモードで走るプロセスは、
>プリエンプションを禁止して走ることはできない。
>いついかなるタイミングでプリエンプションが発生しても良いようにコーディングしてね。

これってasmで割り込み禁止にしても?

298 :デフォルトの名無しさん:2005/04/27(水) 03:24:42
普通、ユーザープログラムが割り込みフラグ操作したら例外起きるよ(´・ω・`)

299 :デフォルトの名無しさん:2005/04/27(水) 04:37:32
DOS時代のまま時間が止まっているプログラマは、
ちょっとはマルチタスクOSについて勉強してよ。

そういうプログラマが書いたプログラムって悲惨なんだよね。
空ループして何かを待ったりして、メッセージポンプ止めてるのに、
イベント来ないとか文句言ったりさ。

>>296
MFCのDLLの話とは関係ないじゃん。

自作DLLをたくさんのプロセスで共有することってあるかな。
MSVCRTとかMFCとかならともかくさ。

するとしても、そいつらはみな同じ0x10000000にロードされるだろうから、共有できるでしょ。

300 :デフォルトの名無しさん:2005/04/27(水) 04:39:12
もちろん、DLLのロードアドレスがバッティングしたら、そりゃズレるけど、
そういう自作DLLを多数使うアプリってあるのかな。

もしDLLとEXEを同じところで作っていれば、
デバッグ時にVC++が、
バッティングしたからズラしたぞゴルァ
って言ってくるから、気がつくでしょ。


301 :デフォルトの名無しさん:2005/04/27(水) 08:46:03
ヲタ話は他所でやってくれよ

302 :デフォルトの名無しさん:2005/04/27(水) 08:50:59
#if !defined(___XXXXX)
#define ___XXXXX

#endif

の代わりに

#if _MSC_VER > 1000
#pragma once
#endif

を使う利点、欠点を教えてください

303 :デフォルトの名無しさん:2005/04/27(水) 09:01:38
それは初心者にとって非常に重要な問題なんだろうか?
普通の人にとってはどうでもいい問題にしか思えんな

304 :デフォルトの名無しさん:2005/04/27(水) 09:10:30
>>302
既出。
・利点
ソースを全部評価しないで済む。
・欠点
(当然だが)他のコンパイラでは使えない。

305 :デフォルトの名無しさん:2005/04/27(水) 12:31:25
>(当然だが)他のコンパイラでは使えない。

主要なコンパイラはサポートしてるらしいよ。

306 :デフォルトの名無しさん:2005/04/27(水) 13:41:20
>>305
主要なコンパイラでは_MSC_VERが定義されているの?
それは不便だ……

307 :デフォルトの名無しさん:2005/04/27(水) 14:52:42
Xp+VC7.1(.NET2003)です。
XP風のビジュアルスタイルにしたくて調べているのですが
「ButtonコントロールのFlatStyleプロパティをSystemに設定して・・・」
とあります。
ところが、プロパティ設定の画面には"Flat"はあるのですが"FlasStyle"はありません。
何か根本的に間違っているのでしょうか?
よろしくお願いします。


308 :デフォルトの名無しさん:2005/04/27(水) 14:55:30
XPスタイルにしたいなら民主党のマニュフェストを参考にしろ

309 :デフォルトの名無しさん:2005/04/27(水) 15:18:01
>>308
綴りが違う

310 :デフォルトの名無しさん:2005/04/27(水) 16:04:10
XP風のビジュアルスタイルにしたいんだろうか?
ボタンをフラットにしたいんだろうか?
たまたま見つけたサイトに書いてあることが真実か知りたいんだろうか?
まずそこをはっきりしろ

311 :デフォルトの名無しさん:2005/04/27(水) 16:14:25
質問です。環境は XP、VC++ 6.0 です。

MFC で作ったアプリで、アイコンの設定で躓いています。
サイズ 32×32、24 bit の bmp の拡張子を ico に変えたものを用意し、
リソース IDB_ICON32 として取り込みました。

C○○App クラスの InitInstance において、
 HICON icon = LoadIcon( IDB_ICON32 ); // A
 m_pMainWnd->SetIcon(icon, true);     // B
として実行すると、起動中に B の行でアプリが強制終了されました。

24bit の bmp をリソースとして取り込むことはできないのでしょうか?
またその場合、リソースではなく外部からアイコンを取り込むにはどうすればいいのでしょうか?

よろしくお願いします。


312 :307:2005/04/27(水) 16:21:58
現在、フラットな画面をXP風のビジュアルスタイルにしたいんです。
プロジェクトはダイアログベースで作成しています。

313 :デフォルトの名無しさん:2005/04/27(水) 16:23:32
おま、そりゃアイコンじゃなくてビットマップだろうが
ビットマップをLoadIconしてどうすんだよ・・・

そのビットマップデータをペイントか他の適当なペイントツールで開いて全体をCtrl+Cでコピーして、
VCの新規リソースでICON作ってそこにペーストしる

314 :デフォルトの名無しさん:2005/04/27(水) 17:33:25
うーん……
8bit のビットマップをペイントで開いてコピー、
リソース作ってペーストして ico ファイルを作ったのですが、
どうしても再度読み込むと、パレット情報がばらばらになってしまいます。
(色がめちゃくちゃになる)

24->8 bit への減色は、ペイントで行なっています。
原因の見当がつきません。よろしくお願いします。

315 :311=314:2005/04/27(水) 17:33:59
名前を入れ忘れました、申し訳ないです。

316 :デフォルトの名無しさん:2005/04/27(水) 17:47:53
・普通、IDB_はビットマップに付ける名前。アイコンならIDI_。

・ペイントの原色の性能はまったくのポンコツ。
JPEGとかをGIFで保存してみたら一目瞭然。

317 :311=314:2005/04/27(水) 18:04:36
>>316
Photoshop で減色する際、使用中の入りを全て割り当てる、
Windows(システム)などが色々な種類がありますので、
アイコンなどに使われるパレットはもしかして固定なのかと思い、
もしそうなら Windows 付属のペイントならシステムにあった減色を
してくれるのでは?と思い、あえてこの方法をとりました。
間違った判断だったようですが……。

>>313 でお教えいただいた方法で IDI_*** として取り込むことはできました。
ところが、生成された ico ファイルは、パレットがむちゃくちゃでした。

むむー

318 :デフォルトの名無しさん:2005/04/27(水) 18:08:19
>>317
元々8bitで書いてないうえに、ペイントで原色してるんじゃそれはしょうがない
もっとちゃんとしたエディター使うべき

319 :311=314:2005/04/27(水) 18:09:10
>>318
なるほど、アイコン作成用のフリーソフトを探してみます。
ありがとうございました。

320 :デフォルトの名無しさん:2005/04/27(水) 18:21:33
あぁ、字が違う
原色→減色

321 :デフォルトの名無しさん:2005/04/27(水) 19:17:59
指定したフォルダの中に入っているファイル・フォルダの情報(ファイル名やサイズなど)を全て取得するにはどうすればよいのでしょうか?

322 :デフォルトの名無しさん:2005/04/27(水) 19:31:19
>>301
けっこう大切な話なんだけどな。

初心者にありがちなのが、
肝心なことをスルーしてしまうこと。

トレースに何か出ていても無視したりするんだよね。

323 :デフォルトの名無しさん:2005/04/27(水) 19:32:16
FindFirstFile
FindNextFile
FindClose



324 :デフォルトの名無しさん:2005/04/27(水) 20:00:12
Winコンソールで
int main(int argc,char** argv)の引数を入力して
デバッグはどうやってやるんですか

325 :デフォルトの名無しさん:2005/04/27(水) 20:53:02
gdb hoge a1 a2 a3

326 :デフォルトの名無しさん:2005/04/27(水) 21:53:05
>>324
VCでデバッグすればいいじゃない

327 :デフォルトの名無しさん:2005/04/28(木) 16:45:17
デバッガで、あるポインタから順にいくつかの中身を
表示するには、ウォッチでどう入力すればよいのでせうか??

328 :デフォルトの名無しさん:2005/04/28(木) 16:58:57
ポインタ[0]
ポインタ[1]
...

329 :327:2005/04/28(木) 17:53:06
まとめて表示するには?
カウンタ変数みたいにできない?

330 :デフォルトの名無しさん:2005/04/28(木) 18:00:16
質問です。環境は XP、VC++ 6.0 です。
MFC を利用してプログラムを行なってます。

ALT キーの入力の監視方法でつまづいています。

>error C2065: 'VK_ALT' : 定義されていない識別子です。
ALT キーの入力を見たいのですが、VK_ALT が定義されていないと言われました。
VK_RETURN や VK_ESC などは定義されています。
VK_A、VK_B、…も同様にエラーが出ますが、'A'、'B'、…で代用しています。

ご助言をお願いします。

331 :デフォルトの名無しさん:2005/04/28(木) 18:03:56
ms-help://MS.MSDNQTR.2003FEB.1041/winui/winui/windowsuserinterface/userinput/VirtualKeyCodes.htm
VK_MENU (12)
ALT key

332 :330:2005/04/28(木) 18:16:23
>>331
申し訳ございません、そのアドレスの意味が分かりませんでした……。
ヘルプは持っています。(MSDN ライブラリ MicrosoftR Visual StudioTM6.0 リリース)


333 :デフォルトの名無しさん:2005/04/28(木) 18:16:25
VC++6.0使ってます。
.NET2002持ってますが、将来的にはそっちに乗り換えたほうがいいでしょうか。
かなり使い勝手が違うようにも思えますが、
何か決定的に違うところってありますか?

334 :デフォルトの名無しさん:2005/04/28(木) 18:29:14
>>332
アドレスの下に書いてある2行がお前は読めんのか

335 :デフォルトの名無しさん:2005/04/28(木) 18:32:04
>>333
プロジェクトを新規作成するとき、
プロジェクト名と同じ名前のフォルダしか作れない。
例えば、プロジェクト名を毎回同じ(Hogeとか)にして、
フォルダ名に日付を入れる(Hoge20050428)ような使い方がしにくい。

336 :デフォルトの名無しさん:2005/04/28(木) 19:11:31
すいません
演算でパイを使いたいのですが、
どうやって指定するんですか?
paiとかでいいんでしたっけ?

くだらない質問かもしれませんが、緊急なのでお願いします。

337 :デフォルトの名無しさん:2005/04/28(木) 19:13:04
自分で定数定義すれ

338 :デフォルトの名無しさん:2005/04/28(木) 19:13:05
>>336
スレ違い

339 :デフォルトの名無しさん:2005/04/28(木) 19:16:01
すれ違いですかね?
まあ自己解決しました。
どうもです。

340 :デフォルトの名無しさん:2005/04/28(木) 19:26:54
#define _USE_MATH_DEFINES
#include <math.h>

M_PI

341 :デフォルトの名無しさん:2005/04/28(木) 19:29:32
もっぱい

342 :デフォルトの名無しさん:2005/04/28(木) 19:39:10
#define PI 3

343 :デフォルトの名無しさん:2005/04/28(木) 19:42:17
ネットで検索もしましたがいまいち分かりませんでした…
C言語の勉強をしたいのですが、visual C++以外に良いソフトはないのでしょうか?
また、現在その6.0が最新のようですが4.0がとても安かったので買おうか悩んでいます。
6.0に比べて機能に致命的な点はあるのでしょうか?OSはXP SP2です。

344 :デフォルトの名無しさん:2005/04/28(木) 19:48:16
C言語の勉強なら入門書の付録についてる無料コンパイラでいいかも

345 :343:2005/04/28(木) 19:57:41
あ、説明不足ですみません^^;
一応大学の情報工学部に入ったので、
将来的には割と難しいことができるようになりたいという前提です。
でも6.0を買うまでの金銭的余裕がないもので…よろしくお願いします。

346 :デフォルトの名無しさん:2005/04/28(木) 20:00:28
学生なら安く買えるだろ

347 :デフォルトの名無しさん:2005/04/28(木) 20:02:47
激安で買えるVisual Stdio.NET theSpoke Disc.9
http://pc8.2ch.net/test/read.cgi/tech/1103381010/

学生認証が必要だけど、5000円以下で買えるtheSpokeがいいと思う。

348 :デフォルトの名無しさん:2005/04/28(木) 20:03:50
情報工学部なら学校で聞けよ
アホか

349 :デフォルトの名無しさん:2005/04/28(木) 20:42:06
>>329
表示のために構造体でも定義してキャストしたらどうだろう。

>>343
情報工学の学生さんなら、とりあえずLinux入れてgccでいんじゃない?

350 :327,329:2005/04/28(木) 20:48:03
スレ違いじゃない質問ですが、答えてもらえない

351 :デフォルトの名無しさん:2005/04/28(木) 20:52:19
配列のデータなんて、アドレス取ってメモリビューアで見てるからウォッチの式は知らんなぁ

352 :デフォルトの名無しさん:2005/04/28(木) 20:53:18
>>350
>>349が答えてくれてるじゃないか

ていうかアドレス指定してメモリヲッチしろよ

353 :デフォルトの名無しさん:2005/04/28(木) 20:56:54
すいません、VC++スタンダード版とVSプロフェッショナル版は、C++を使う上でどのような違いがあるのですか?
スタンダード版で開発したアプリケーションはシェアウェア公開する事が可能ですか?
当方、学生ではないので、どちらを買おうか迷っています。(pro版はあまりにも高いためスタンダードで妥協しようかと)

354 :デフォルトの名無しさん:2005/04/28(木) 21:20:32
>>353
高いやつは大規模なアプリの開発に向いてる。(複数人で開発するとか)
個人で小さいプログラム作るなら無料版でじゅうぶん
シェアウェア公開も可

355 :デフォルトの名無しさん:2005/04/28(木) 21:33:33
c++より誘導されて来ました。

new演算子を使い終了時にリークしていた時、
_CrtSetDbgFlagで正しく行番号をアウトプットに吐かせるには
どうしたら良いでしょうか
マクロで対応させれたと思うのですが、忘れてしまいまして、、。
宜しくお願いします
(´・ω・`)

356 :デフォルトの名無しさん:2005/04/28(木) 21:39:06
ここ初心者スレなんだけど

357 :353:2005/04/28(木) 21:55:35
>>354
無料版って事はVisual Studio 2005 Expressですか?
どうせなら製品版を使いたいんですが、スタンダードとプロフェッショナルとExpressの違いを教えてください。

358 :デフォルトの名無しさん:2005/04/28(木) 21:56:52
>>357
MSのサイト行け

359 :デフォルトの名無しさん:2005/04/28(木) 22:00:18
すみませんプログラムとは違うんですけど
バラバラにかかれているプログラムをショートカットで直す
のってどうやります?
たしかコントロール+オールで全部指定して
なにかするとおもったのですが

360 :デフォルトの名無しさん:2005/04/28(木) 22:05:50
なぜWindows板で聞かないのかと思った春

361 :デフォルトの名無しさん:2005/04/28(木) 22:10:12
>>359
質問が分かりません。

362 :355:2005/04/28(木) 22:11:07
二度目のスレ違いをしてしまったようです
吊ってきます
(つД`)

363 :デフォルトの名無しさん:2005/04/28(木) 22:35:03
>>355
Cランタイムなら_malloc_dbg
MFCならDEBUG_NEW
あたりだと思うけど。

ただ、_DEBUGが定義されてると、mallocは_malloc_dbgになるらしいぞ。





364 :デフォルトの名無しさん:2005/04/28(木) 22:57:51
>>358
載ってません。
実際の使用感を教えてください。

365 :デフォルトの名無しさん:2005/04/28(木) 23:01:26
>>353
スタンダード版は最適化ができないようになっている。

366 :デフォルトの名無しさん:2005/04/28(木) 23:12:07
勉強してるうちにどんどんバージョンアップが進むからな
使えるようになったころには使えない製品になってる。

367 :デフォルトの名無しさん:2005/04/28(木) 23:23:44
VC Toolkit + PSDK で勉強して、ある程度できるようになってからIDE買えばいいじゃないか



漏れは途中でtheSpokeに釣られたけどな...orz

368 :デフォルトの名無しさん:2005/04/29(金) 00:27:08
コンパイルしたりするのにIDEはなくてもいいが、
デバッグするのには欲しいな。

369 :353:2005/04/29(金) 01:11:32
>>365
ありがとうございます。
toolkitってやつで無料で最適化できますよね?
他には違いはありますか?

370 :353:2005/04/29(金) 01:14:02
>>367
BCC+BCCDevで勉強してます。
ある程度出来るようになってから何を買えばいいのかと思いまして。

371 :デフォルトの名無しさん:2005/04/29(金) 01:21:25
ベクターのフリーで作られたゲームなんかを見ていると
VBやツクールでつくられてるものが、ほとんどだけど
やはり、VC++でゲームをつくるには、時間と労力がかかりますか??

VC++でつくるのが王道って勝手に認識してるのですが。。

372 :デフォルトの名無しさん:2005/04/29(金) 01:26:19
作りたいものと自分のスキルで選べばよろし。

373 :デフォルトの名無しさん:2005/04/29(金) 01:26:44
vc++で開発したものと、VBで作ったものでは、
どういう違いがあるんですか?

374 :デフォルトの名無しさん:2005/04/29(金) 01:30:19
ここまでひどい質問は・・・

375 :デフォルトの名無しさん:2005/04/29(金) 01:30:25
VBはランタイムが必要だったよな


376 :デフォルトの名無しさん:2005/04/29(金) 01:30:38
>>372
難しそうですが、vc++でやってみようと思います。
ありがとうございました。

377 :デフォルトの名無しさん:2005/04/29(金) 01:33:46
>>374
きめ細かく組めるってことは知ってたんですが、、。

378 :デフォルトの名無しさん:2005/04/29(金) 02:25:38
なぜか誰も書いてないけど
変数名,要素数
で表示できるよ

379 :378:2005/04/29(金) 02:27:18
>>327へ向けて書いたものですorn

380 :デフォルトの名無しさん:2005/04/29(金) 05:03:08
createwindow()の引数HANDLE hInstanceとはなんのインスタンスの
ハンドルなんですか?

createwndowの戻り値と同じもの???


381 :デフォルトの名無しさん:2005/04/29(金) 11:13:44
所属モジュールのインスタンスハンドル
WinMainの引数をそのまま渡せばよい
CreateWindowの戻り値はウィンドウハンドルだろーガッ

382 :デフォルトの名無しさん:2005/04/29(金) 12:20:48
HANDLE hInstance と HWND が同じモノに見えるのカ

383 :デフォルトの名無しさん:2005/04/29(金) 15:40:16
コンパイラ:VC++ 6.0
_WIN32_WINDOWS や _WIN32_WINNT に定義する値は、
「このバージョンからなら動くよ」という値を入れておけば良いのですか?

384 :デフォルトの名無しさん:2005/04/29(金) 16:09:10
そんなの気にしたことないな

385 :デフォルトの名無しさん:2005/04/29(金) 16:15:43
>>383
例えばWindows2000以降にしかない関数を使うとき、
APIによっては_WIN32_WINDOWSの値を大きくしないとプロトタイプ宣言が見えないことがある。

VC++6は1998年ごろのやつだから、Platform SDKを入れないとWindows2000以降の機能は使いにくいが。

386 :383:2005/04/29(金) 18:04:38
なるほど、分りました。
Platform SDKというのも調べてみます。

387 :デフォルトの名無しさん:2005/04/29(金) 18:07:47
何か論点がずれてるような?

388 :デフォルトの名無しさん:2005/04/29(金) 20:00:55
>>383
「このバージョン以降で動かすことを前提とする」という値。

マクロ定義が変わるだけで、呼べるAPIが変わる or コンパイル時にエラー出してくれるだけなので、
OSのバージョンによって実装されてないAPIを呼ぶようなプログラムでは、
それらのAPIを呼ぶ前に、自前でバージョンをチェックしてね。

いちおうEXEやDLLに、NT専用とかの設定はあるけど、
それでOSにハネさせるのは、一般のユーザには馴染みがないから、不親切です。

389 :デフォルトの名無しさん:2005/04/29(金) 22:12:28
> OSのバージョンによって実装されてないAPIを呼ぶようなプログラムでは、
> それらのAPIを呼ぶ前に、自前でバージョンをチェックしてね。

チェックする前に起動時にコケるわけだが

390 :デフォルトの名無しさん:2005/04/29(金) 22:52:02
実装されていない、って言葉によるな。
DLLにシンボルさえないAPIもあれば、
ERROR_CALL_NOT_IMPLEMENTEDが帰るAPIもある

391 :デフォルトの名無しさん:2005/04/29(金) 23:11:55
かなり曖昧だけど、、似たような条件下で書いたコードは
VC#やVBやjavaよりもVC++のほうが動作が速いですか?
.net frameworkを交えたら一緒になっちゃったりするわけですか?

392 :デフォルトの名無しさん:2005/04/29(金) 23:39:36
>>391
まあC++のほうが遅くなることはまずないと思うけどね。
速度にどれだけの差が出るかは場合にもよるのでちゃんとやりたきゃしっかりテストしましょう。

393 :デフォルトの名無しさん:2005/04/30(土) 00:11:29
ネイティブコンパイルしたVBはかなり速い
ただしオブジェクト変数さわったとたん遅くなるけど

394 :デフォルトの名無しさん:2005/04/30(土) 00:22:38
>>391
C#はCLR(共通言語ランタイム)で動くアプリを作れて、VC++はネイティブアプリを作れる、VBはしらんがな、6まではネイティブ作れた

[C#アプリ1]〜[C#アプリN]
  |  
 [CLR]   [VCアプリ]
    [Windows]

CLR上のプロセスはWinからは1つのプロセス空間(CLR)にしかみえないのだろうか
ネイティブプロセスの仮想メモリ空間を効率的に使うとか本でちっと読んだが、実行時に中間言語コンパイル噛むとかで遅いらしい

395 :デフォルトの名無しさん:2005/04/30(土) 02:32:41
>>389
そういうAPIはインポートライブラリを使わずに、
LoadLibraryやGetProcAddressとか使いましょうよ。

>>391
ものによるなぁ。
C++は速いと信じきっていたけど、Javaを使って考え変わったよ。

C++は自由度が高すぎてコンパイラが大胆に最適化できないし、
けっこう無駄なコードを書いたりするから。

396 :デフォルトの名無しさん:2005/04/30(土) 04:38:50
>けっこう無駄なコードを書いたりするから。

そりゃ、書く人のスキル

397 :デフォルトの名無しさん:2005/04/30(土) 04:40:03
> C++は自由度が高すぎてコンパイラが大胆に最適化できないし、

ソースレベルで最適化。

398 :デフォルトの名無しさん:2005/04/30(土) 08:45:36
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
OS を再インストールしたので PSDK を Update しようとしたら This page has moved. になっちゃってました。
いまだに VC++ 6.0 で Windows 98 向けアプリを作ってるんですが 2003 年頃の PSDK は何処で手に入れればいいのですか?

399 :デフォルトの名無しさん:2005/04/30(土) 08:50:19
だいたいのC++コンパイラは、コードに基づいた静的な最適化しかしないけど、
JavaのJITとかはプロフィールベースの最適化だから、Javaの方が
速くなりうる、と言う話もあるよね。

400 :デフォルトの名無しさん:2005/04/30(土) 10:06:47
>>399
馬鹿ですか?
自動車とオリンピック選手がマラソンで競争したら
オリンピック選手の方が速いとかいいそうだな

401 :デフォルトの名無しさん:2005/04/30(土) 10:12:09
m9(^д^)

402 :デフォルトの名無しさん:2005/04/30(土) 10:38:59
>>400
もう少し勉強してから書き込んでくれ。

403 :デフォルトの名無しさん:2005/04/30(土) 10:48:02
http://homepage2.nifty.com/Fujimaki/download/Comparison/
最新バージョンのVB, VC, CB,Delphi, JavaおよびC#で作成された
同一アルゴリズムの簡単な数値計算プログラムの実行速度を比較してみた。

実行速度はおおよそ
VisualC++≒C# > Delphi ≒ C++Builder>VisualBasic≒Javaの順で,
以前の試験と比較すると,VBの速度が若干向上し,
初登場のC#がVC並みの速度を有することがわかった。
JavaはVCの1/4〜1倍程度の速度を有しており,
数値計算に不向きと言えるほどの低速ではなかった。

404 :391:2005/04/30(土) 16:03:06
漠然とした質問に答えてもらって、ありがとです。皆さん。
>>403
C#って意外と速いんですな。
VC++よりもえらく簡単そうなのに。。

405 :デフォルトの名無しさん:2005/04/30(土) 17:52:55
こんばんわ
質問があるのですが

Dialogをリソースエディタで
http://www.geocities.jp/devil_man_kekeke/pict1.JPG
に作ったんですが、

実際にアプリを実行させて、モーダルでShowさせたら
http://www.geocities.jp/devil_man_kekeke/pict2.JPG
な感じになり、
余計なボタンが2つとスタティックテキストが表示されてしまいます。(OK、Cancel、TO DO)

これはどうしてこうなるのでしょうか?
初歩的な質問になりますが、よろしくお願い致します。

406 :405:2005/04/30(土) 17:54:20
ちなみに、コーディングに関しては、

void CMainFrame::OnTestEx6()
{
// TODO : ここにコマンド ハンドラ コードを追加します。
CEx06Dialog ex06dlg;
ex06dlg.DoModal();
}

としています。
.NET2003です。

407 :デフォルトの名無しさん:2005/04/30(土) 18:37:29
>>405
一度VisualStudioを終了して、再度ソリューションを開いたらリビルドして味噌。
それでもダメならリソースハンドリングかどこかで何かミスをしている。

408 :デフォルトの名無しさん:2005/04/30(土) 18:49:33
ダイアログとHTMLダイアログが重なっているように見える。

409 :405:2005/04/30(土) 19:19:12
>>408
なるほど
HTMLダイアログというものもあるんですね

IDH = IDR_HTML_EX06DIALOG
CDHtmlDialog(CEx06Dialog::IDD, CEx06Dialog::IDH, pParent)

これを無効にしたいんですが、どのようにすればいいのでしょうか。
通常のDialogだけ表示できればいいです。

410 :405:2005/04/30(土) 19:21:48
>>407
ご返答助かります。
HTMLダイアログの問題みたいです。


とりあえず、htmlの内容を全て消去して解決しました。
知識不足ですいません。
現在、VisualBasic6.0の分厚い本を参照して勉強しているので、HTMLダイアログの存在がわかりませんでした。

411 :395:2005/04/30(土) 22:29:08
>>396
>>397
俺も昔はそう思ってたよ。

412 :デフォルトの名無しさん:2005/05/01(日) 00:49:35
>>166のように本音を言うと叩かれる法則。


413 :デフォルトの名無しさん:2005/05/01(日) 01:03:11
>>351
浮動小数点の場合はどうしてますか?

414 :デフォルトの名無しさん:2005/05/01(日) 01:04:17
VS.NET2003を使ってるのですが、コンソール用アプリを
プロジェクトを作らずにコマンドラインでコンパイルすることは
できないでしょうか?

415 :デフォルトの名無しさん:2005/05/01(日) 01:21:18
>>414
Microsoft Visual Studio .NET 2003\Vc7\bin\vcvars32.bat

416 :デフォルトの名無しさん:2005/05/01(日) 05:46:00
ウィルスってなんであんなに小さいのですか?


417 :デフォルトの名無しさん:2005/05/01(日) 06:28:06
小さくないよ。


418 :デフォルトの名無しさん:2005/05/01(日) 13:33:25
>>412
そら心の狭いてぃんかすやろうだけ

419 :デフォルトの名無しさん:2005/05/01(日) 13:41:39
>昔プログラマをしていた者です。

>>412
こういうやつ一番嫌い。
まず使い物にならん

420 :デフォルトの名無しさん:2005/05/01(日) 13:45:03
>172 名前:166[] 投稿日:2005/04/23(土) 10:58:31
>>167
>昔散々やったことなので、時間が勿体無くて。。
>他の人に聞くと一瞬で解決することが時々あるので質問させてもらいました。

嫌なもの見ちまった

421 :414:2005/05/01(日) 14:31:34
>>415
すいません、vs32vars.batでどうすればいいんでしょうか?
やりたいことは
c:\>cc hello.c
のような方法でコンパイルをしたいのですが。

422 :デフォルトの名無しさん:2005/05/01(日) 14:35:51
>>421
コマンドプロンプトで
>vs32vars.bat
を実行すれば
>cl hello.c
でコンパイル出来るようになる。


423 :デフォルトの名無しさん:2005/05/01(日) 14:48:48
419 :デフォルトの名無しさん :2005/05/01(日) 13:41:39
>昔プログラマをしていた者です。

>>412
こういうやつ一番嫌い。
まず使い物にならん

こいつも使い物にならんな

424 :デフォルトの名無しさん:2005/05/01(日) 14:52:01
プログラマーなんて一般人から見ればまともじゃないし
偏見のようだがこのスレ見てると遠からずだな

425 :デフォルトの名無しさん:2005/05/01(日) 14:58:41
>>423-424
政界

426 :デフォルトの名無しさん:2005/05/01(日) 15:02:01
否定できないものがあるな

427 :デフォルトの名無しさん:2005/05/01(日) 15:03:50
>>424
だから鎮火すは一部の奴だっつーの。

428 :デフォルトの名無しさん:2005/05/01(日) 15:10:25
>昔プログラマをしていた者です。
>昔散々やったことなので

入試に失敗した時のいいわけに使えそう。

429 :デフォルトの名無しさん:2005/05/01(日) 15:33:13
>>428
厨房ですか?

430 :デフォルトの名無しさん:2005/05/01(日) 15:35:55
自称玄人が教えるスレなの

431 :デフォルトの名無しさん:2005/05/01(日) 16:00:58
質問です。
VS2003のVC++使ってるんですけど、Win32しかプラットフォームをIDE上からは選べませんよね?
で、インクルード関連の設定をWin32/Win64で切り替えるときにいちいち手動で書き変えるのはあまり現実的ではないとおもうんで
自分でプラットフォームの設定項目を加えたいんですが・・・
どうすれば出来ますか?
Release64は自分で追加出来るのに・・・・・

432 :デフォルトの名無しさん:2005/05/01(日) 16:05:39
>>431
Win32のウィザードを参考にしながら、Win64のウィザードを作ったらいい。

433 :デフォルトの名無しさん:2005/05/01(日) 17:27:50
初心者がWin64使うのは想定外なんだろ

434 :デフォルトの名無しさん:2005/05/02(月) 09:08:34
VC++6で、リリースコンパイル時のみ、
>LIBCMTD.lib(dbgheap.obj) : error LNK2005: _malloc はすでに libcmt.lib(malloc.obj) で定義されています
みたいなエラーがでます。
回避策教えて下さいでつ。

435 :デフォルトの名無しさん:2005/05/02(月) 09:20:09
LIBCMTD.lib(dbgheap.obj) デバッグ用
libcmt.lib(malloc.obj) リリース用

どっちか1つに

436 :デフォルトの名無しさん:2005/05/02(月) 11:35:18
>>434
静的リンクするライブラリも、必要ならデバッグビルド用とリリースビルド用を用意汁。

437 :デフォルトの名無しさん:2005/05/02(月) 12:39:32
どうもクラス、特に派生クラスの使い方が分かりません。
一つのクラスにまとめてしまうと何がまずいんでしょうか。

438 :デフォルトの名無しさん:2005/05/02(月) 13:44:38
>>437
「一つのクラスにまとめる」という理由で派生クラスにしてしまうのは、あまりよろしくないと思う。
それだったら素直に基本クラスをメンバにした方がいいんじゃまいか…。

派生が威力を発揮するのは、ポリモーフィズム使うときとか。


439 :デフォルトの名無しさん:2005/05/02(月) 14:21:30
>>437
クラスのメソッド内部がフラグの嵐で読めなくなるから。

複数のパターンを派生で分けとけば、
新しいパターンが増えても派生クラスだけ注意してテストすれば良いが、
フラグ分岐の場合、全ソース注意してテストする必要があるから。

440 :デフォルトの名無しさん:2005/05/02(月) 14:24:03
なぜよろしくないのだ?

441 :デフォルトの名無しさん:2005/05/02(月) 15:01:14
昨日から使い始めたド初心者です。
ソリュージョンエクスプローラの枠とスタートページの枠が逆に入れ替わってしまったのですが
どうやったら元に戻りますか?

教えてください、お願いします。

442 :デフォルトの名無しさん:2005/05/02(月) 15:24:32
>>441
ドラッグ&ドロップ

配置がうまくいかずに滅茶苦茶になってしまったときは
[ツール][オプション][環境][全般] [ウィンドウ レイアウトのリセット]で

443 :441:2005/05/02(月) 15:36:54
>>442
[ツール][オプション][環境][全般] [ウィンドウ レイアウトのリセット]
これでうまくいきました。 ありがとうございます。

質問してみてよかったです。



444 :デフォルトの名無しさん:2005/05/02(月) 17:45:19
マルチスレッドのライブラリと
シングルスレッドのライブラリでは、
具体的には何が違うんですか?

445 :デフォルトの名無しさん:2005/05/02(月) 18:05:01
共有資源がない

446 :デフォルトの名無しさん:2005/05/02(月) 20:15:58
再入可能かどうか

447 :デフォルトの名無しさん:2005/05/02(月) 21:39:35
再入不可能だとどうなるの?

448 :デフォルトの名無しさん:2005/05/02(月) 21:49:42
挙動が予期しないものになる
strtokをマルチスレッド環境で走らせてみればわかる

449 :デフォルトの名無しさん:2005/05/02(月) 21:49:46
>>447
複数のスレッドが同時に同じ関数を使おうとしたときにまずいことになる。
strtok()の使い方を考えてみるのがわかりやすいかな。

450 :デフォルトの名無しさん:2005/05/03(火) 05:40:48
たとえば静的変数を使っているような関数は
マルチスレッド用にはできない。
関数に複数のアクセスがあったときに
静的変数の値が予期できないものになってしまう。
そんな単純な理由だったような

451 :デフォルトの名無しさん:2005/05/03(火) 10:07:14
ファイルのデッドロックが発生している個所を特定するための
手法を教えてください。

452 :デフォルトの名無しさん:2005/05/03(火) 10:10:50
ここは初心者スレ

453 :デフォルトの名無しさん:2005/05/03(火) 10:42:09
ケチ

454 :デフォルトの名無しさん:2005/05/03(火) 11:27:34
ファイルのデッドロックって何?

455 :452:2005/05/03(火) 12:08:44
>>454
それはオレにも分からん

456 :デフォルトの名無しさん:2005/05/03(火) 14:26:20
#ifdef TESTDLL_EXPORTS
#define TESTDLL_API __declspec(dllexport)
#else
#define TESTDLL_API __declspec(dllimport)
#endif

#include <atlbase.h>
#include <vector>

class TESTDLL_API Test {
private:
CComBSTR bstr;
std::vector<A> vec;
};

こんな感じでヘッダー作ると
CComBSTR とstd::vectorは_exportキーワードを使え
とワーニングが出るんですが
どうすれば回避できるのでしょう?

457 :デフォルトの名無しさん:2005/05/03(火) 16:49:45
それは初心者スレの範囲にはいるのかな?

458 :デフォルトの名無しさん:2005/05/03(火) 21:33:57
>>456
マジレスすると・・・

クラスをexport/importするなゴルァ

459 :908:2005/05/03(火) 22:16:05
質問です。
void sarch(char *in, char *filepath)
という関数を作成して
int main(void)
{
sarch(配列,"ファイル名");
return(0);
}
といった風に関数呼び出しを行うのですが、
sarchの中でfopenをし、fgetsを使うとエラーが出ます。
原因がわからないのですが
どの辺がおかしいですか?

460 :デフォルトの名無しさん:2005/05/03(火) 22:22:10
関数名のスペル

461 :デフォルトの名無しさん:2005/05/03(火) 22:31:23
この板で質問していいのか分からんのですが
VisualC++6.0 だと
テンプレート引数としてテンプレートを指定すると
コンパイルが通りません。

template<class T, template<class> class C> class A{
 C<T> a;
};

VisualC++6.0のテンプレート機能が弱いから、と聞いたのですが、
.NET (というかVisualC++6.0以降ではこれしか知らない)とかなら
コンパイル通りますか?

462 :デフォルトの名無しさん:2005/05/03(火) 22:33:09
>>461
template<class T, class C> class A {
 typename C<T> a;
};
VC6だとtypename外した方がうまくいくかも。

463 :デフォルトの名無しさん:2005/05/03(火) 22:51:33
>>462

「error C2059: 構文エラー : '<'」となりますです。
「class C」だけでは C をテンプレートとして扱えないようです。
「template C<T> a;」(templateキーワードの明示的な指定)としても
駄目ぽでした。

>>462 さんのコードは >>462 さんの環境でコンパイルできましたか?

ちなみに >>461 のコードは Bjarne Stroustrup の
「プログラミング言語C++」からの抜粋です。


464 :461:2005/05/03(火) 22:53:07
463=461です。
上に書いた templateキーワードの明示的な指定は、
正しいかどうか分かりません。いろいろ試行錯誤してみましたが
やりたいことが実現できんとです…。

465 :デフォルトの名無しさん:2005/05/03(火) 23:17:25
試行錯誤するんなら、コンパイラ変えてみればいいんじゃないか?
それとも手段が目的なんだろうか?

466 :デフォルトの名無しさん:2005/05/03(火) 23:35:04
コンパイラ替えろって非現実的な話になってきたな

467 :デフォルトの名無しさん:2005/05/03(火) 23:35:25
すいません。エラーが出たのですが、何処がおかしいのでしょうか?
<html><head><META HTTP-EQUIV="Content-Type" content="text/html; charset=shift_jis">
</head><body><pre><table width=100% bgcolor=#CFCFE5><tr> <td> <font face=arial size=+3>
ビルド ログ
</font></table><table width=* cellspacing=0 cellpadding=0><tr><td width=0 bgcolor=#EDEDF5> 
</td><td width=0 bgcolor=#FFFFFF> </td><td width=*><pre>
<h3>------- ビルド開始 : プロジェクト : sample、構成 : Debug|Win32 -------
</h3></pre></table><table width=100% bgcolor=#DFDFE5><tr><td><font face=arial size=+2>
コマンド ライン</font></table><table width=* cellspacing=0 cellpadding=0><tr><td width=0 bgcolor=#EDEDF5> </td><td width=0
bgcolor=#FFFFFF> </td><td width=*><pre>一時ファイル "c:\Documents and Settings\ouner\My Documents\Visual Studio Projects\sample\Debug\RSP000002.rsp" を作成しています。内容 :
[/Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /Gm /EHsc /RTC1 /MLd /Fo"Debug/" /Fd"Debug/vc70.pdb" /W3 /c /Wp64 /ZI /TP
".\sample.cpp"]
コマンド ライン "cl.exe @"c:\Documents and Settings\ouner\My Documents\Visual Studio Projects\sample\Debug\RSP000002.rsp" /nologo" を作成しています。
</pre></table><table width=100% bgcolor=#DFDFE5><tr><td><font face=arial size=+2>
出力ウィンドウ</font></table><table width=* cellspacing=0 cellpadding=0><tr><td width=0 bgcolor=#EDEDF5> </td><td width=0 bgcolor=#FFFFFF> </td><td width=*><pre>コンパイルしています...
sample : error PRJ0003 : cl.exe' の起動中にエラーが発生しました。


468 :デフォルトの名無しさん:2005/05/03(火) 23:36:29
</pre></table><table width=100% bgcolor=#DFDFE5><tr><td><font face=arial size=+2>
結果
</font></table><table width=* cellspacing=0 cellpadding=0><tr><td width=0 bgcolor=#EDEDF5> </td><td width=0 bgcolor=#FFFFFF> </td><td width=*><pre>
ビルドログは "file://c:\Documents and Settings\owner\My Documents\Visual Studio Projects\sample\Debug\BuildLog.htm" に保存されました。
sample - エラー 1、警告 0</pre></table><table width=100% height=20 bgcolor=#CFCFE5><tr><td><font face=arial size=+2>
</font></table></body></html>

エラーが1つだけあるらしいのですが、見付けられません。
警告はなかったです

469 :デフォルトの名無しさん:2005/05/03(火) 23:38:56
ouner...

470 :デフォルトの名無しさん:2005/05/03(火) 23:42:01
あっ、その部分は私の名前だったので
書き込むときに変えましたです

471 :デフォルトの名無しさん:2005/05/03(火) 23:42:41
関係ないが u -> w

472 :デフォルトの名無しさん:2005/05/03(火) 23:44:08
訂正:owner^^;

473 :デフォルトの名無しさん:2005/05/03(火) 23:47:28
VBAのような、構文エラーを見付けるデバッグをしたいのですが
すいませんが、手順を教えて下さい
2時間程エラーを探してるんですが、もう目が痛いです

474 :デフォルトの名無しさん:2005/05/04(水) 00:05:50
>>458
シンボルの付け方に互換性があれば
クラスをエクスポートするのは別に大丈夫でしょ?
MFCとかもあるし。
メンバーにテンプレートのクラスがあるのが問題点で解決方が不明。

475 :デフォルトの名無しさん:2005/05/04(水) 00:06:32
たびたびすいません
同じソースで秀丸でGUIコンパイルしたら、
無問題だったのですが、どうすれば良い結果が生まれるのでしょうか?

476 :デフォルトの名無しさん:2005/05/04(水) 00:10:04
とりあえずクマさんの人形に向かって状況を説明してみろ

477 :461:2005/05/04(水) 00:43:23
>>465-466
VisualC++6.0のままでコンパイル通せる方法があれば儲け物、として
考えてるくらいで、コンパイラを変えることは検討しています。
ただ、変えてみて同じだったらお金の無駄になってしまうので
.NET で >>461 のコードが通るかどうかが知りたいです。

478 :デフォルトの名無しさん:2005/05/04(水) 01:16:11
>>476
今から、再インストールおっぱじめたいと思いますです

479 :デフォルトの名無しさん:2005/05/04(水) 01:25:19
VC++のエディタ(というかIDE)で、右上のポップアップに
関数名が表示されるけど、
今開いているソースファイルのみの関数名の表示は、どうやるんですか

480 :デフォルトの名無しさん:2005/05/04(水) 01:37:35
>>479
this->で書き始めれば、候補をメンバ関数に絞れる。

481 :479:2005/05/04(水) 02:54:58
??
ソースファイル中の関数名なんですけど。
他の開発環境では、ソース内の関数が表示されたんですが。
コードの量が増えてきて、
全部まるごと表示されたら、探すの大変だと思うんですが。

482 :475:2005/05/04(水) 02:56:45
無事ビルド完了しました。
これでようやく寝れます。「イント・ウィン・エーピーアイ・ウィンメイン」とお経のように唱えながら寝ます

483 :458:2005/05/04(水) 04:02:03
>>459
すべてのソースを晒しなさい。
ここに書くと読むのもあれなんで、自分のWebページで。

>>473
何を意図しているのかよくわからないので、
まずは落ち付いて、わかる文章で書き直してください。

>>474
シンボルの名前の問題だけではないのですよ。

ちょっと考えただけでも、
・C++以外の言語から使うのが難しい
・privateメンバですら追加不可能で、回避手段を予め仕込んでおく必要がある
・virtualどうすんのよ
っていう問題があるのですよ。

後々のことを考えたら、DLLで公開する部分は、
第一引数にオブジェクトのハンドルを渡すようなWin32 APIスタイルにしておき、
それをC++クラスでラップするラッパーのソースを提供したほうがいいと思います。



484 :デフォルトの名無しさん:2005/05/04(水) 08:34:19
あるいはCOMとしてインターフェイスを公開するようにするとか。

485 :デフォルトの名無しさん:2005/05/04(水) 08:44:58
>>463
> ちなみに >>461 のコードは Bjarne Stroustrup の
>「プログラミング言語C++」からの抜粋です。

それはVCの本じゃないからスレ違いだろ
VCを使いたければVCにあったコードを書け
単にそのコードを使いたいだけなら、それにあったコンパイラを使え

>1.1.3 処理系についてのコメント
>C++言語の一部としてつい最近採用されたばかりの
>機能を使っているサンプルは、一部の処理系ではコンパイルできなかった。

486 :デフォルトの名無しさん:2005/05/04(水) 10:41:15
>>479
VisualStudioのバージョンは?
つーか、開いているソースファイル内のクラスが左に列挙されていてそのメンバ関数が右に列挙されていると思うのだけど。

>>480
インテリセンスの話じゃないらしいよ。

487 :479:2005/05/04(水) 10:48:55
ファイル内関数の方が単純で分かりやすいと思うんだけど。
>>486 >>480
ありがとう

488 :デフォルトの名無しさん:2005/05/04(水) 10:52:02
>>487
なにがありがとうだよ。訳わからねぇことぬかして質問にも答えねぇで一人で勝手に納得してんじゃねぇよ。
こちとら消化不良だぜぃ。

489 :デフォルトの名無しさん:2005/05/04(水) 11:41:16
うるせえチンカス

490 :461:2005/05/04(水) 12:15:19
>>485
そのコードが使えるVCのバージョンを探している、ということです。


491 :デフォルトの名無しさん:2005/05/04(水) 12:24:02
>>490
スレ違い
その本はVCの本じゃない&初心者用の本じゃない
スレ違い&スレ違い

492 :461:2005/05/04(水) 12:43:00
他で質問します

493 :デフォルトの名無しさん:2005/05/04(水) 13:50:07
>>483
VCプログラムでVC以外からの利用を考慮するのか
さすがだな

494 :デフォルトの名無しさん:2005/05/04(水) 14:07:09
グダグダなスレだな

495 :デフォルトの名無しさん:2005/05/04(水) 14:14:00
だって住人が

496 :デフォルトの名無しさん:2005/05/04(水) 14:32:31
からあげを

497 :デフォルトの名無しさん:2005/05/04(水) 14:34:17
>>493
クライアントプログラムがVCとはかぎらんだろ
VBからかもしれないしCかもしれないしDelphiかもしれない

498 :デフォルトの名無しさん:2005/05/04(水) 15:05:56
VC++でクラスをエクスポートするDLLをVBやCから使うバカが居るんですか?

499 :デフォルトの名無しさん:2005/05/04(水) 15:14:25
それはいないだろ

500 :デフォルトの名無しさん:2005/05/04(水) 15:17:00
え?managedなら使えるんちゃうの?
インターフェース用意したりすればunmanagedでも使えなかった?

501 :383:2005/05/04(水) 17:44:30
>>498
DLL作成者=DLL利用者とは限らないじゃないか。

502 :デフォルトの名無しさん:2005/05/04(水) 17:55:54
>>488
ソースファイル内の関数のみを表示させたいのです。
できないんだったらしょうがないんじゃないですか。
何故怒ってらっしゃる

503 :デフォルトの名無しさん:2005/05/04(水) 19:22:57
>>501
DLL利用者はVBやCからC++のクラスを使うのか?


504 :デフォルトの名無しさん:2005/05/04(水) 20:07:33
>>502
>488ならずとも怒りたくもなる罠。

505 :479:2005/05/04(水) 20:26:29
スイマセン。
バージョン聞かれてるの気づかなかった。
.Net 2003( ver 7 )です。
説明下手で重ねてごめん。

506 :デフォルトの名無しさん:2005/05/04(水) 23:41:26
>>498
だからクラスをexportすんなゴルァ

後で泣いても知らんぞ。

507 :デフォルトの名無しさん:2005/05/04(水) 23:55:18
だからなぜ(ry
以下ループ

508 :デフォルトの名無しさん:2005/05/05(木) 01:52:58
>>506
そんなヲタ用語使われてもよく分かりません

509 :デフォルトの名無しさん:2005/05/05(木) 02:04:55
>>505
.NET 2003なのかVer.7なのかはっきりさせろ。

510 :デフォルトの名無しさん:2005/05/05(木) 02:05:24
どっちでもいいじゃん


511 :デフォルトの名無しさん:2005/05/05(木) 09:23:03
2003 て ver.7 じゃ?


512 :デフォルトの名無しさん:2005/05/05(木) 09:37:08
.Net 2003はver.7.1相当。
ver.7は.Net 2002にあたる。

513 :デフォルトの名無しさん:2005/05/05(木) 15:14:10
こちらの先生方は、COM/ActiveXを使ったクライアント作りたい時にはどうされますでしょうか?
(1) 使い慣れたMFC
(2) なんとなくATL
(3) フレームワーク使わない
(4) その他の言語
 a: 文法は嫌いだが手軽さに負けてVB6
 b: .NETは嫌いだが時代を考えてC#
 c: ruby, pythonも面白いかも

VCからCOM/ActiveXを使おうと思って最近勉強を始めたのですが、
(RADじゃないのは承知ですが)シキタリがとても面倒で正直うんざりし、気持が(4)a. に傾きつつあります。
そこで、他の人はどのように感じてるんだろうと思い、カキコした次第です。
お兄ちゃんの体験談を聞かせて下さい

514 :デフォルトの名無しさん:2005/05/05(木) 15:17:31
ケースバイケース

515 :デフォルトの名無しさん:2005/05/05(木) 15:20:55
>>514
大人は汚いと思います。

516 :383:2005/05/05(木) 15:34:34
DLLはMFC
OCXは面倒なのでVB6

517 :デフォルトの名無しさん:2005/05/05(木) 17:34:01
今からVB6はヤバスじゃないか?

518 :デフォルトの名無しさん:2005/05/05(木) 19:57:49
>>513
好きなのをどうぞ。

(1) 細かいこと気にしなければ楽だよ。
(2) これは細かいところまで手が届くけど、慣れるまでシンドイ。多少の罠がある。
(3) さすがにこれはシンドカッタ。インタフェースやCOMのメモリのリークのバグ取りが大変だったよ。
(4)
a VB6は楽なようで楽じゃない。MFCのほうがマシだと思う。
b これが一番楽で、細いかい所までOK。オススメです。
c これだけは使ったことない。ごめん。


519 :479:2005/05/05(木) 20:29:02
.NET 2003です

520 :513:2005/05/06(金) 00:23:47
先生方、御指導ありがとうございました!
>>514
ごもっともです・・・でもその適材適所ぶりを伺いたいなあと
>>516
なるほど、そういった使い分けなのですか。勉強になります。
>>518
御丁寧にありがとうございます。
そうっすか、MFCを越え得るのはC#ですか。「やりやすそうだなー」と思いつつ、
関連スレのアンチ厨に押され遠慮していました。オススメとのことで、頑張ってこちらもトライしてみます。

若干のスレ違い、失礼致しました・・・

521 :デフォルトの名無しさん:2005/05/06(金) 15:40:48
Visual C++ .NET 2003 を使ってるんですが
VCのツールバーの位置を変えて、終了した後、
VCを起動し直すと、ツールバーの位置が元に戻ってしまうか、
別の位置になってしまいます。

カスタマイズしたツールバーの位置を保持しておくには
どうすればいいですか?


522 :デフォルトの名無しさん:2005/05/06(金) 15:51:55
ノリでつけとけ

523 :デフォルトの名無しさん:2005/05/06(金) 16:02:15
ホッチキスという選択肢も

524 :デフォルトの名無しさん:2005/05/06(金) 16:14:57
BOOL型とbool型の違いって何でしたっけ?
構造体のメンバにbool型使いたいんですが、
関数の引数ではBOOL型を使用している事が多いみたいなんで・・・
TRUE = true , FALSE = false
は保証されてますか?

525 :デフォルトの名無しさん:2005/05/06(金) 16:16:09
http://n219078172160.netvigator.com/
うぇwwwっうぇ

wwwうはっwwwっ
おkwww
うはっwwwwwwwwwwwwwwwっうぇうぇwww
っwおkwwwうはっwwwおkwww
おkwww

526 :デフォルトの名無しさん:2005/05/06(金) 16:51:35
>>524
BOOL型はintの別名。
数値的にはTRUE == trueだが、代入においては警告が出るので注意。
尚、BOOL型はFALSE(=0)、TRUE(=1)以外に-1を取ることもあるので要注意。

527 :524:2005/05/06(金) 16:54:31
>>526
どうもです

528 :デフォルトの名無しさん:2005/05/06(金) 16:58:52
>>524
私ならboolにしておいて、MFCとのI/Fにのみ気を遣うようにするね。
BOOLなんて使ったら、一々値の範囲に気を遣わなければならなくなる。
∵>526故。

529 :デフォルトの名無しさん:2005/05/06(金) 17:00:51
>>528
?
まさかTRUE/FALSEと==で比較するなんてバカなことしてるのか?

530 :デフォルトの名無しさん:2005/05/06(金) 17:05:39
>>529
例えば
void func(bool foo, BOOL bar);
とする。
fooはtrue/falseしか取らないが、barはTRUE/FALSE以外の値もとりうる。
#まぁ、一人で書いているなら余り心配しないが。

531 :デフォルトの名無しさん:2005/05/06(金) 17:08:50
>>530
0が偽で0以外が真と扱ってれば、TRUE/FALSE以外の値でも問題ないだろ。
実際WinAPIが返すBOOLの説明もzeroかnonzeroって書いてあるんだから。

532 :デフォルトの名無しさん:2005/05/06(金) 17:09:11
最終的に判定文が通ればいいわけで。
if (bar == TRUE) なんてやるとまずいわけで。

533 :デフォルトの名無しさん:2005/05/06(金) 17:13:19
M$がBOOLなんてもんを作るのが悪い!

534 :デフォルトの名無しさん:2005/05/06(金) 17:14:07
>>531
関数を書くほうはそれでもいいが、呼ぶ方もそう思ってくれる保証はない。
BOOLを返り値とするAPIが-1を返すわけだが、その値を使われる可能性もある罠。
で、判定文を通すかどうかと言うより、そういう余計な心配したくないと言う話。

535 :デフォルトの名無しさん:2005/05/06(金) 17:15:37
心配っつーか、、、コンパイラが検出できないからな
しかしboolが無い時代のほうが長かったのだよ

536 :デフォルトの名無しさん:2005/05/06(金) 17:55:25
真偽を格納するための型としてboolが存在するからboolを使う。
BOOLなんて代用品は使いたくない。

537 :デフォルトの名無しさん:2005/05/06(金) 17:57:05
そもそも真偽値は元からzero or nonzeroじゃねぇか
それを別の使い方するヤツが居るからいけねぇんだよ

538 :デフォルトの名無しさん:2005/05/06(金) 17:57:45
while(GetMessage(&msg, hWnd, 0, 0))

539 :デフォルトの名無しさん:2005/05/06(金) 18:09:19
俺はwhile (GetMessage(&msg, 0, 0, 0) > 0)としているけどみんなどうしている?

540 :デフォルトの名無しさん:2005/05/06(金) 18:14:03
while(GetMessage(&msg, hWnd, 0, 0))

541 :デフォルトの名無しさん:2005/05/06(金) 18:14:56
while(GetMessage(&msg, NULL, 0, 0))

542 :デフォルトの名無しさん:2005/05/06(金) 18:17:00
while(GetMessage(&msg, hWnd, 0, 0))
って、WM_QUITが飛んでこないから、無限ループすっぞ。

543 :デフォルトの名無しさん:2005/05/06(金) 18:29:18
>>539みたいなバカが居るから・・・

544 :デフォルトの名無しさん:2005/05/06(金) 18:32:01
言ってるそばから、ってやつですな

545 :デフォルトの名無しさん:2005/05/06(金) 19:00:42
Visual Studio 2005の説明とか見てると、今後はVC++でも
マネージ形式の開発が主流になるのでしょうか?

546 :デフォルトの名無しさん:2005/05/06(金) 19:28:32
今後の主流はC#

547 :デフォルトの名無しさん:2005/05/06(金) 19:49:18
やっぱりマネージ形式が主流で、マネージ形式ならC#が強いという
流れですか・・・。やっぱりネイティブ形式にしかC++の真価は
見出せないってことか。

548 :デフォルトの名無しさん:2005/05/06(金) 22:19:17
>>533 バカジャネーノ

549 :デフォルトの名無しさん:2005/05/06(金) 22:23:00
>>536
BOOLの方が先に登場したので
代用品ではありません。

550 :デフォルトの名無しさん:2005/05/06(金) 22:32:54
>>549
boolのような型が存在しなかったからtypedef intのBOOLが生まれた。intで代用したと言わずしてなんと言えばいい。
もし大昔からboolがあればBOOLだってきっとboolのtypedefになっていただろう。

551 :デフォルトの名無しさん:2005/05/06(金) 22:35:51
>>536はboolの代用だと言ってんだろ。だから間違い。

552 :デフォルトの名無しさん:2005/05/06(金) 22:38:02
boolってどのコンパイラでもサイズが同一なの?
同一じゃなかったらAPIに使えないよね。

553 :デフォルトの名無しさん:2005/05/06(金) 22:38:24
intでboolの代用をさせる。と無理やりくっつけてみる。

554 :デフォルトの名無しさん:2005/05/06(金) 22:43:03
wchar_t型みたいなものだな。
昔はWCHARしかなかった。

555 :デフォルトの名無しさん:2005/05/06(金) 22:56:12
>>552
まず、VCのバージョンによって、サイズが違うという事実がある。

556 :デフォルトの名無しさん:2005/05/06(金) 23:02:11
>>552
データ型のサイズはコンパイラで変わるんじゃなくマシン環境で変わるんだが?

557 :デフォルトの名無しさん:2005/05/06(金) 23:25:42
すごい逸材が出た。

558 :デフォルトの名無しさん:2005/05/06(金) 23:29:42
危ないから目を合わせちゃいけません

559 :デフォルトの名無しさん:2005/05/06(金) 23:30:36
( ゚д゚) …

560 :デフォルトの名無しさん:2005/05/06(金) 23:35:40
初心者スレだからそういうレスはいかがなものかと思うぜ。

561 :デフォルトの名無しさん:2005/05/07(土) 00:03:21
同環境のコンパイラで変わるなんてありえねぇw

562 :デフォルトの名無しさん:2005/05/07(土) 00:54:09
>>526
嘘を教えるな

FALSE == false
FALSE != TRUE
false != true
なだけであって、
true == TRUE
true != TRUE
が成り立つかどうかは決まってない。

563 :デフォルトの名無しさん:2005/05/07(土) 00:55:40
>>556
コンパイラやtypedefによって変わるよ。

564 :デフォルトの名無しさん:2005/05/07(土) 00:55:54
結局のところ、どっち使ってるのよ?

565 :デフォルトの名無しさん:2005/05/07(土) 00:58:44
つーかさ、typedefを何だと思ってるんだ。

int に BOOLを代入してよいなら、
typedefなんてせず#defineでいいだろ。
#defineではなくtypedefするということは、一緒だと思うな、ということだよ。

サイズはいくつかなんて意識するなよsizeof使え。

そして、APIやファイルなど、サイズを意識しないといけないところだけ、
BYTE/WORD/DWORD
を使いなさい。

566 :デフォルトの名無しさん:2005/05/07(土) 01:03:45
>>562
このスレで何語ってんの?
そこまで言うなら、FALSE == falseもFALSE != TRUEも決まってないね。

567 :デフォルトの名無しさん:2005/05/07(土) 01:43:37
FALSE != TRUEも決まってないね。
FALSE != TRUEも決まってないね。
FALSE != TRUEも決まってないね。
FALSE != TRUEも決まってないね。
FALSE != TRUEも決まってないね。


568 :デフォルトの名無しさん:2005/05/07(土) 02:32:54
まぁ確かに、WinDef.hに書かれている
typedef int BOOL;
#define FALSE 0
#define TRUE 1
を無視して>562とするなら、>566だな。
このスレ的には、WinDef.hをインクルードするという前提でもいいと思うが。

569 :デフォルトの名無しさん:2005/05/07(土) 04:18:09
>562とするなら、>566だな。
>562とするなら、>566だな。
>562とするなら、>566だな。
>562とするなら、>566だな。
>562とするなら、>566だな。

570 :デフォルトの名無しさん:2005/05/07(土) 08:07:38
つまらない質問には盛り上がりを見せるんですね

571 :デフォルトの名無しさん:2005/05/07(土) 08:29:47
ヲタ専用スレ作って隔離してほしい。

572 :デフォルトの名無しさん:2005/05/07(土) 11:31:16
yaccやlexのファイル(拡張子.yや.l)をVisual C++に認識させるにはどうしたらよいでしょうか
単なるテキストファイルとして認識しているようで予約語も全て単色で表示されてしまいます

環境は
Windows2000 SP4
Visual C++ 6.0 Pro SP6
です。

よろしくお願いします

573 :デフォルトの名無しさん:2005/05/07(土) 11:32:33
拡張子を.cか.cppに変えれば?

574 :デフォルトの名無しさん:2005/05/07(土) 11:59:20
このスレにはヲタを引き寄せる何かがある。

575 :デフォルトの名無しさん:2005/05/07(土) 12:19:23
ねぇよ

576 :572:2005/05/07(土) 12:22:31
>>573
なるほど。
秀丸レベルの拡張を期待していたのですがVCでは無理のようですね。
ありがとうございました!

577 :デフォルトの名無しさん:2005/05/07(土) 12:58:01
秀丸なんか使うな!ぼけ!

578 :デフォルトの名無しさん:2005/05/07(土) 13:05:20
>>576
そもそも、VCはC/C++だけを使った開発環境であり、
yaccは「一部C構文を使用している」だけの、別言語だろうが

579 :デフォルトの名無しさん:2005/05/07(土) 13:31:38
typedef char*LPSTR;

int _tmain(int argc, _TCHAR* argv[])
{
char* a = LPSTR(100); // OK
char* b = (char*)100; // OK
char* c = char*(100); // コンパイルエラー error C2062: 型 'char' は不要です。

return 0;
}

VC++.NET2003なんですが、
上記のエラーが出るのは何ででしょう?
そもそもこんな書き方C++では許してないんですか?

580 :デフォルトの名無しさん:2005/05/07(土) 13:36:43
(char*)(100)

581 :デフォルトの名無しさん:2005/05/07(土) 13:37:00
その前の行と見比べればわかりそうなもんだがな・・・
あとおまえ、ポインタ型に適当な数値代入すんなよ・・・

582 :デフォルトの名無しさん:2005/05/07(土) 13:40:53
>>579
許しませんよ

583 :デフォルトの名無しさん:2005/05/07(土) 13:50:03
char * (100)
式にいきなりcharが出てきたらコンパイラも驚くだろう

584 :579:2005/05/07(土) 13:53:39
すいませんわかりません・・
なぜ
int a = int(1.0f); は良いのに
char* a = char*(100); は駄目なんですか?

585 :デフォルトの名無しさん:2005/05/07(土) 13:56:30
逆に聞くけど*100って何?

586 :デフォルトの名無しさん:2005/05/07(土) 14:00:30
>>585

class char*
{
public :
char*( int);
};

char* a = char*(100);

自分の認識としてはこんな感じなんですが・・
なんで駄目なのか納得いかない感じです。

587 :383:2005/05/07(土) 14:03:40
コンパイラから見たら
char*(100);
では、
(char)*(100);
といいう意味の型宣言なのか(これもおかしいが)
(char*)(100);
といいう意味の型宣言なのか
char * (100);
といいう意味の四則演算なのか区別できない。

588 :デフォルトの名無しさん:2005/05/07(土) 14:03:49
C++のスレが山ほどあるのに
何でわざわざここでC++の質問するかな

589 :デフォルトの名無しさん:2005/05/07(土) 14:04:12
データ型とポインタの勉強してこい

590 :579:2005/05/07(土) 14:04:35
解決しました!
これでうまくいきました。
char* a = reinterpret_cast< char* >(100);

あんまり納得いってないですけど・・

591 :デフォルトの名無しさん:2005/05/07(土) 14:07:24
( ゚д゚)ポカーン

592 :デフォルトの名無しさん:2005/05/07(土) 14:08:28
( ゚д゚)カポーン

593 :デフォルトの名無しさん:2005/05/07(土) 14:09:15
( ゚д゚)ポカーン

594 :579:2005/05/07(土) 14:09:59
>>587
>(char)*(100);
>といいう意味の型宣言なのか(これもおかしいが)
これはありえません。

>(char*)(100);
>といいう意味の型宣言なのか
char*というのはひとつの型なんですから
char*(100); と (char*)(100); は同じ意味と
解釈して間違いないと思います。

>char * (100);
>といいう意味の四則演算なのか区別できない。
これはありえません。

>>588
VC++のコンパイラのバグかなと思ったので。

595 :デフォルトの名無しさん:2005/05/07(土) 14:11:12
( ´,_ゝ`)プッ つ char* a = LPSTR(100);

596 :デフォルトの名無しさん:2005/05/07(土) 14:11:36
turi

597 :デフォルトの名無しさん:2005/05/07(土) 14:13:17
>>594
なら、他の環境で試してみるべきだろう。

598 :デフォルトの名無しさん:2005/05/07(土) 14:14:36
(・∀・)ニヤニヤ

599 :デフォルトの名無しさん:2005/05/07(土) 14:16:12
ここはVC初心者が初心者の質問に答えるスレです

600 :579:2005/05/07(土) 14:16:36
釣りじゃないです!
C++からは、コンストラクタふうの型キャストが出来るようになってます。

だから、 int a = int(1.0f); こういう記述が出来るのは納得いきます。
なのにもかかわらず char* a = char*(100); これは駄目というのは納得できないんです。

構文解析の問題という意見もありましたが、これはあいまいな表現ではないのは明白です。

601 :デフォルトの名無しさん:2005/05/07(土) 14:20:36
シラケタ

602 :デフォルトの名無しさん:2005/05/07(土) 14:20:40
a=100

603 :デフォルトの名無しさん:2005/05/07(土) 14:21:03
>>579
> >(char)*(100);
> >といいう意味の型宣言なのか(これもおかしいが)
> これはありえません。
と言いますが、
char* c = char*(100);
をコンパイラは
char* c = (char*)(char)*((char*)100);
と捉える事も可能なのですよ?

604 :デフォルトの名無しさん:2005/05/07(土) 14:36:07
逝け

605 :デフォルトの名無しさん:2005/05/07(土) 14:40:54
>>603
100は数値リテラルなので「*100」という解釈は普通されないのでは?

606 :デフォルトの名無しさん:2005/05/07(土) 14:55:23
肝心の質問には誰も答えないのに
関係ない質問になると書き込みが増える不思議

VC初心者でもC/C++の質問なら答えられるということか

607 :デフォルトの名無しさん:2005/05/07(土) 14:59:12
昔虐められたのか? おおヨチヨチ m9(^Д^)プギャー

608 :デフォルトの名無しさん:2005/05/07(土) 14:59:39
次スレから「★Visual C++初心者がC/C++を教えるスレ★」で

609 :デフォルトの名無しさん:2005/05/07(土) 15:10:12
もう579は放置しとけばいいだろ

610 :デフォルトの名無しさん:2005/05/07(土) 16:01:41
>>579
たぶん、char* はオブジェクトのタイプじゃないからだと思う。
char( 100 ) は、charタイプのインスタンス化&コンストラクタ呼び出しのようなもので、
100で初期化したcharの一時オブジェクトを生成する(実際のコードでは、c = 100 されるだけ)。
ところが、char* のコンストラクタ(論理的に「のようなもの」)が存在しないので、インスタンス化しようがない。
と、思うんだけどしかし、これで通ってしまうのでどういう理屈かはわからん。
typedef char* charPo;
char* c = charPo( 100 );

デバイスドライバのI/Oなど,理由があってポインタに即値を代入したいのなら普通に,
char* c = reinterpret_cast< char* >( 100 );


611 :デフォルトの名無しさん:2005/05/07(土) 16:08:17
彼氏んちから勝手に書き込み
お気に入りに入ってるんだけど、みなさんはどういう人ですか?

612 :デフォルトの名無しさん:2005/05/07(土) 16:10:25
>>611
秋葉系デブです。


613 :デフォルトの名無しさん:2005/05/07(土) 16:11:47
>>611
ピザ食ってます。

614 :デフォルトの名無しさん:2005/05/07(土) 16:13:18
>>610
組み込み型もポインタ型もクラスと同様にコンストラクタ呼び出しや一時オブジェクト生成の書き方ができるけど
ポインタ型だけは構文的に書けないのでtypedefしないといけない
ということではなかろか?

615 :610:2005/05/07(土) 16:16:24
>>614
typedefってプリプロセッサで展開されないんだろうか?

616 :デフォルトの名無しさん:2005/05/07(土) 16:17:21
#おまえマジかよw

617 :デフォルトの名無しさん:2005/05/07(土) 16:23:54
初心者が、であってたのか・・・

618 :デフォルトの名無しさん:2005/05/07(土) 16:26:32
>>611
仕事中

619 :デフォルトの名無しさん:2005/05/07(土) 16:30:25
単なるコンパイラのバグなのか
言語の仕様なのか
どっちだと思います?


620 :デフォルトの名無しさん:2005/05/07(土) 16:31:38
Cのコンパイラは式を右から左に展開するから
char* c = char*(100);
だとまず、*100という演算式になるのでは。
でもcharは変数にはなれないし、型としてみてもキャストにすらなってないのでエラー。

char* a = LPSTR(100);では、typedef は#defineのような単純な文字列展開ではないので
(char*)(100)みたいにキャストしたのと同じ効果が期待できるんじゃないかと。




適当でスマソ

621 :デフォルトの名無しさん:2005/05/07(土) 16:33:37
いつまで続ける気だろう?

622 :デフォルトの名無しさん:2005/05/07(土) 16:34:06
また会う日まで

623 :デフォルトの名無しさん:2005/05/07(土) 16:36:55
>>619
もうすこし、高度な餌をクレ

624 :デフォルトの名無しさん:2005/05/07(土) 16:37:16
>>614
>ポインタ型だけは構文的に書けない
char*(100)
では*の意味が曖昧だから
(char*)(100)
こうかかなきゃいけないってことですか?
typedefするとcharと*が明示的にくっつけられる為
その必要はないと。
これって言語仕様の不備ですよね。
納得しました。
これで去ります。ありがとうございました。

625 :デフォルトの名無しさん:2005/05/07(土) 16:38:57
>>620
了解しました。
よくわかりました。

626 :デフォルトの名無しさん:2005/05/07(土) 16:41:30
#(´・ω・`)オイオイ

627 :デフォルトの名無しさん:2005/05/07(土) 16:42:04
( ゚д゚) …

628 :デフォルトの名無しさん:2005/05/07(土) 16:43:02
優先順位で + より * のほうが優先なのも言語仕様の不備とか言いそうだな

629 :デフォルトの名無しさん:2005/05/07(土) 16:43:29
コイツには、コンパイラ作らせると良いかもな

630 :デフォルトの名無しさん:2005/05/07(土) 16:48:35
>>628
自分は、
char*(100);
をchar*型オブジェクトのコンストラクタ呼び出しを意図して書いているんです。
それが
char * 100;
として解釈される。これは言語上の不備以外何ものでもないと思います。
具体的にはポインタ型には「*」をつける、これが駄目だと思います。
もっと別なやり方ならこんな問題は起こらないはずです。


631 :610:2005/05/07(土) 16:50:59
>>616-617
そしたら、typedef で宣言された型が使われているプロトタイプとか
どういう機序でパースされるのか教えてほしい。


632 :デフォルトの名無しさん:2005/05/07(土) 16:51:31
無知ってのは

633 :デフォルトの名無しさん:2005/05/07(土) 16:52:59
>>531
プリプロセッサがどの段階で動くか考えてみろよ

634 :デフォルトの名無しさん:2005/05/07(土) 16:53:15
>>630
もう、良いよ、とりあえずブロック定義のEBNFでも読め

635 :デフォルトの名無しさん:2005/05/07(土) 16:56:51
>>634
EBNFの定義だとそう解釈されちゃうから
仕様がねーだろ、そういうことですか?
頭固いですよ。

636 :デフォルトの名無しさん:2005/05/07(土) 16:58:27
>>630
お前さんの意図に反してたら不備扱いか。

637 :デフォルトの名無しさん:2005/05/07(土) 17:00:54
はー、困ったね、それじゃC++ではないことになる。
FORTRANもEBNFで定義できるし・・・

638 :デフォルトの名無しさん:2005/05/07(土) 17:01:39
まあ確かに乗算の*とポインタが共有されてるのは微妙だよな…
メンバでなくとも"->"で統一するとかもっと別の演算紙くらいあっただろうに。

639 :デフォルトの名無しさん:2005/05/07(土) 17:02:58
ヲタはああだこうだうるさいくせにスレ違いには寛容

640 :610:2005/05/07(土) 17:15:02
>>633
いやだからプリプロセッサでなくてもいいから、typedefで宣言した
タイプがどういう機序で例えば関数プロトタイプ使われるのか教えてください。
じゃあ、VC++ は所謂pre-processorとoptimizerを除いて何パスですか?
変数表はいつ作成されますか?typedefで宣言したタイプはどのように
変数表にレジストされますか?そして型チェックはどのタイミングで行われますか?


641 :デフォルトの名無しさん:2005/05/07(土) 17:16:34
typedefってプリプロセッサで展開されないんだろうか?
typedefってプリプロセッサで展開されないんだろうか?
typedefってプリプロセッサで展開されないんだろうか?
typedefってプリプロセッサで展開されないんだろうか?
typedefってプリプロセッサで展開されないんだろうか?
typedefってプリプロセッサで展開されないんだろうか?


642 :ついでにTRUE/FALSE:2005/05/07(土) 17:17:41
32bitの時
FALSE = 0x00000000
TRUE = !FALSE (x86アーキテクチャでは全ビット反転=0xFFFFFFFF)

で定義されてますが、こうしておくとコンパイルの時に
x86命令のJZ/JNZに直接渡せるので、ゼロと非ゼロという定義方法が採用されてマッスル。

643 :デフォルトの名無しさん:2005/05/07(土) 17:18:58
>>640
はいはい、分かりました、
俺はAlgolが最高のプログラム言語だと思ってる

644 :デフォルトの名無しさん:2005/05/07(土) 17:19:42
typedefってプリプロセッサで展開されないんだろうか?
typedefってプリプロセッサで展開されないんだろうか?
typedefってプリプロセッサで展開されないんだろうか?
typedefってプリプロセッサで展開されないんだろうか?
typedefってプリプロセッサで展開されないんだろうか?
typedefってプリプロセッサで展開されないんだろうか?

645 :デフォルトの名無しさん:2005/05/07(土) 17:20:02
ビット反転は ~

646 :610:2005/05/07(土) 17:20:17
説明できないってことは誰もわかってないってことね?
"pre-process" の意味わかりますか?
"pass"の意味わかりますか?
pass のパスとプリプロセスの違いは何ですか?


647 :デフォルトの名無しさん:2005/05/07(土) 17:20:43
>>644
プリプロセッサもコンパイラの拡張だが?

648 :デフォルトの名無しさん:2005/05/07(土) 17:20:56
教えてくださいオネガイシマス
教えてくださいオネガイシマス
教えてくださいオネガイシマス
教えてくださいオネガイシマス
教えてくださいオネガイシマス
教えてくださいオネガイシマス

649 :デフォルトの名無しさん:2005/05/07(土) 17:26:20
ヲタは自分さえよければヲタ話を延々続ける。
風呂入らなくて回りに嫌がられても平気だし。


650 :デフォルトの名無しさん:2005/05/07(土) 17:28:19
分析結果:ヒッキーの基地ガイ

651 :デフォルトの名無しさん:2005/05/07(土) 17:39:44
基本は上から下へ構文解析じゃないの?
#から始まる文が出てきたらプリプロセッサに処理を渡す。
予約語以外の識別子が出てきたら、それ以前に定義されていないかを調べる。
見つからない場合はコンパイルエラー。みたいな。

もし、変数表やら関数プロトタイプを一度にデータベース化してるなら
関数プロトタイプを書かずにmain()以降に関数を置いても、エラーにする必要はないし。

652 :デフォルトの名無しさん:2005/05/07(土) 18:02:30
>>651
下のコードは型チェックでエラーなわけだが、つまり、typedef int ii;
で定義されているii型はちゃんと「本当の」構文解析(process)【前(pre)】に"int"型に【展開】されているわけですよ。
int* _test( int* p ) { return p; }
int main(...) {
 typedef int ii;
 ii i = 0;
 _test( i );
}
で、なんでこういう話になったかというと、
char* c = char*( 100 ); ⇒ ×で、
typedef char* charPo; char* c = charPo( 100 ); ⇒ ○
だからです。単純に*(100)の優先順位の問題のようですが。



653 :デフォルトの名無しさん:2005/05/07(土) 18:09:18
( ゚д゚) …

654 :デフォルトの名無しさん:2005/05/07(土) 18:14:03
おいおい、五月病は他所でやれよ

655 :デフォルトの名無しさん:2005/05/07(土) 18:26:33
>>611
デートしませんか??

656 :デフォルトの名無しさん:2005/05/07(土) 19:22:55
もともと「プリプロセッサ」と「コンパイラ」は別々のプログラムだったんです。
今はメモリが豊富なので統合されてますが。

「プリプロセッサ」が処理するのは#include,#define,#ifdef,#ifなどの#〜のキーワードだけです。

で、typedefですが、これは「プリプロセッサ」のキーワードではなく「C言語コンパイラ」のキーワードです。
つまり「プリプロセッサ」の後に処理されます。
また、typedefは型を置き換えるのではなくて、型を「拡張」するために存在します。
>>652の例では、"ii"は"int"に展開されるのではなくて、intと同じ"32bit符号付整数型"として扱われます。
classやstruct、unionをtypedefした時も同じで、"32bitの(内部処理的な)ポインタ型"になります。
もし"展開"していたら、同じclassを多重定義することになってしまいます。

typedef class tag_tcls { int x; int y } T_CLS;
T_CLS a;
T_CLS b;

↓展開すると

class tag_tcls { int x; int y } a;
class tag_tcls { int x; int y } b;

657 :デフォルトの名無しさん:2005/05/07(土) 19:24:07
また、変なのが湧いた!

658 :デフォルトの名無しさん:2005/05/07(土) 19:27:49
だから,
ポストプロセスだろうにw

659 :デフォルトの名無しさん:2005/05/07(土) 19:31:27
いや、
>>「本当の」構文解析(process)【前(pre)】に"int"型に【展開】されているわけですよ
ここの部分が違うと思いまして…

660 :デフォルトの名無しさん:2005/05/07(土) 19:38:02
>>656
パーサ、コードジェネレータ、最適化、アッセンブラーだろう

661 :デフォルトの名無しさん:2005/05/07(土) 19:39:10
ここは中途半端な知識をひけらかしたいヒッキーの為のスレです

662 :デフォルトの名無しさん:2005/05/07(土) 19:40:54
それ以前にスレ違いだから評価されない
書く場所も重要

663 :デフォルトの名無しさん:2005/05/07(土) 19:41:23
>>6565
今時そんな回りくどい処理なんかしてないぞ

664 :デフォルトの名無しさん:2005/05/07(土) 19:46:30
超未来レスキター

665 :デフォルトの名無しさん:2005/05/07(土) 20:15:07
http://pc8.2ch.net/test/read.cgi/tech/1030878794/246

666 :ダミアソ:2005/05/07(土) 21:09:32
 

667 :デフォルトの名無しさん:2005/05/07(土) 22:11:17
>>611
Shall we dance ?

668 :デフォルトの名無しさん:2005/05/08(日) 00:27:24
急にレベル落ちたな

669 :デフォルトの名無しさん:2005/05/08(日) 01:45:52
if分の条件式が2行以上にわたるとの閉じる中括弧のインデントがifの位置と対応しなくなってしまいます
対処法みたいなのはありますでしょうか?

670 :デフォルトの名無しさん:2005/05/08(日) 01:52:04
他のエディタを使う

671 :デフォルトの名無しさん:2005/05/08(日) 01:52:31
対処法
C言語をゼロから勉強し直す。

672 :デフォルトの名無しさん:2005/05/08(日) 02:17:41
C言語勉強しなおしてもIDEの問題が解決するわけないだろ

673 :デフォルトの名無しさん:2005/05/08(日) 02:28:59
馬鹿ばっかだな。

if (条件1)
  A;
B;
C;

674 :デフォルトの名無しさん:2005/05/08(日) 02:52:39
if (){
}
↓このスタイルに変えれば解決するよ。
if ()
{
}


675 :デフォルトの名無しさん:2005/05/08(日) 03:15:56
VC6です.メインウィンドウクラスの宣言部をハイライトさせてプロパティを
選ぶとメッセージを追加出来るとあるが,それって.netの話?どうやって追
加するんですか?

676 :デフォルトの名無しさん:2005/05/08(日) 03:19:07
6はできなかった気が
つか6から移ったら激しくやり方変わってて最初戸惑った

677 :デフォルトの名無しさん:2005/05/08(日) 03:24:53
VC6ならClassWizardやね。

678 :675:2005/05/08(日) 03:33:49
返信ありがとうございます。
クラスウィザード?それってどこです?右クリックで出てくるポップアップのは
ハイライトされてなくて選べない・・・

679 :デフォルトの名無しさん:2005/05/08(日) 03:36:01
編集メニュー→ClassWizard
Ctrl+W
ダイアログに貼ってあるコントロールを右クリックしてClassWizard

680 :675:2005/05/08(日) 03:47:10
編集メニューにClassWizardが無い・・・_| ̄|○


681 :675:2005/05/08(日) 03:49:56
なるほど,まだwindow1枚だから何も出来ないわけですね・・・
ガリっと書くしかないの?

682 :デフォルトの名無しさん:2005/05/08(日) 03:53:43
表示メニューの誤り。
http://homepage3.nifty.com/ishidate/vcpp6_4/vcpp6_4.htm
少しは検索したりしてはどうだい?

683 :675:2005/05/08(日) 04:01:10
僕がやりたいのはON_WM_PAINT等のハンドラの追加ですよ。

684 :デフォルトの名無しさん:2005/05/08(日) 04:06:12
ClassWizardを出せたのか出せてないのかさえ分からん。

CWnd派生のクラスなのにClassWizardのクラス一覧に出てないのなら小細工が必要。
http://homepage3.nifty.com/ishidate/vcpp6_4/C60601_5.jpg

685 :デフォルトの名無しさん:2005/05/08(日) 04:10:02
どうやって作ったプロジェクトかとか、
どうやって作ったウィンドウかとか、
MFCか否かとか説明不足。

686 :デフォルトの名無しさん:2005/05/08(日) 07:27:53
自分でハンドラ作れ

687 :デフォルトの名無しさん:2005/05/08(日) 09:23:03
visualstudio 2003の入門書見ながら、VS2005ExでC++の勉強してます。
この中で、例題を入れたらコンパイルエラーになってしまい、
エラーがどうしても取れません。もし原因わかったら教えていただけますでしょうか。

[環境]
WindowsXP 64bitEdition + Visual C++ 2005 Express Edition Beta 2

[内容]
(ReportList.h)
public:
void ReprtItem();
void ReprtItem( DateTime date, String ^name, String ^kind, int money );
~ReportItem();

(ReportList.cpp)
void ReportItem::ReprtItem()
{
// フィールドを初期化する
   ・・・ 省略 ・・・
}

// 引数付のコンストラクタ

ReportItem::ReportItem( DateTime date, String ^name, String ^kind, int money )
{                   //★ここで C2511エラー発生
   ・・・ 省略 ・・・
}

688 :デフォルトの名無しさん:2005/05/08(日) 09:23:37
[状況]
上記クラスを追加して、ビルドすると
「error C2511: 'HomeBank::ReportItem::ReportItem(System::DateTime,System::String ^,System::String ^,int)' : オーバーロードされたメンバ関数が 'HomeBank::ReportItem' にありません。」
となる。
型宣言のvoidを、付与/削除すると
「C2533: 'HomeBank::ReportItem::{ctor}' : コンストラクタの宣言に戻り値の型が含まれています。」
となるため、voidの付け方はこれでよさそうな気がする。

---
丸一日悪戦苦闘したのですが、例題通りいれても、void付加しても C2511エラーだけは消せません。
どなたかご教授いただけると助かります。

689 :デフォルトの名無しさん:2005/05/08(日) 09:36:44
>>688
>void ReprtItem();
>void ReprtItem( DateTime date, String ^name, String ^kind, int money );
voidは要らない。「^」はなに? 「&」か「*」のTypo?

690 :デフォルトの名無しさん:2005/05/08(日) 09:45:13
>>688
その例題はC#だと思うが。

691 :デフォルトの名無しさん:2005/05/08(日) 09:52:56
>>689
早速のありがとうございます。

>>void ReprtItem();
>>void ReprtItem( DateTime date, String ^name, String ^kind, int money );
>voidは要らない。
voidはずすと
「error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません」
になってしまいます。
どうも、VS2005から型宣言に厳しくなったみたいです。??

>「^」はなに? 「&」か「*」のTypo?
VS2003の例題では「*」でした。未定義エラーが出たので
VS2005のStringのHELPみて、 「^」にしてます。
・・ということは、「^」なんてコーディングは本来無い??(64bitポインタ指定かと勝手に思ってました)

692 :デフォルトの名無しさん:2005/05/08(日) 09:56:24
>>690
え?・・と思って入門書みたら、 「Visual C++ .NET 2003」でした。
あと、例題から直したの忘れてましたが、 「*」→「^」にしてます。

書きもれすみません

693 :デフォルトの名無しさん:2005/05/08(日) 10:04:44
例題から直したの忘れてましたが、 「*」→「^」にしてます。
例題から直したの忘れてましたが、 「*」→「^」にしてます。
例題から直したの忘れてましたが、 「*」→「^」にしてます。
例題から直したの忘れてましたが、 「*」→「^」にしてます。
例題から直したの忘れてましたが、 「*」→「^」にしてます。

694 :デフォルトの名無しさん:2005/05/08(日) 10:08:04
http://acykhm035074.adsl.ppp.infoweb.ne.jp/

っwwwwwwwwwwwwっうぇwwwwww
うはっwww

おkwwwwwwwwwwwwっうぇっうぇ
wwwwwwおkwwwっうぇおkwwwうはっwww

695 :デフォルトの名無しさん:2005/05/08(日) 10:12:20
>>693
HELPの例文あちこち見たんですが、ポインタ指定が 「*」→「^」になってるように見えます。
HELP解説、英語なので全部そうなのか、「*」の表記方法もあるのかはよくわかりません。ごめんなさい。

696 :デフォルトの名無しさん:2005/05/08(日) 10:19:11
>>695
欧文には *が上に小さく書かれるフォントがある。拡大してみなさい。
この話はスレ違い。
http://lists.w3.org/Archives/Public/www-style/2001Oct/att-0195/kcharselect-Verdana.png

697 :デフォルトの名無しさん:2005/05/08(日) 10:27:25
^って Managed C++ か、C++/CLIの演算子じゃないか?
ガベージコレクトオブジェクトへの参照とかそんな感じだったような気がする。


698 :デフォルトの名無しさん:2005/05/08(日) 10:45:18
>>696
アドバイスありがとうございます。
参考にしたHELP画面は以下のページにありました。
http://msdn2.microsoft.com/library/w4ctbshy(en-us,vs.80).aspx

サンプルをcopy&pasteでメモ帳に貼り付けて、眺めて見ましたが「^」で大丈夫そうです。

699 :デフォルトの名無しさん:2005/05/08(日) 11:08:20
>>697
ありがとうございます。ぐぐって見たところ、そのもずばりの解説ページは見つかりませんでしたが
検索で引っかかるサイトの例文には、 「String ^」となってました。

あと、>>687で質問させていただいた件ですが、
HELPが以下のURLにありました
http://msdn2.microsoft.com/library/20fs9x81(en-us,vs.80).aspx

もう一回読んで見たんですがやっぱりエラー原因がよくわかりません。

700 :デフォルトの名無しさん:2005/05/08(日) 11:09:25
property System::String ^
property System::String ^
property System::String ^
property System::String ^


701 :デフォルトの名無しさん:2005/05/08(日) 11:10:57
ヘッダでの宣言でvoid宣言してるのに
実態定義でvoid宣言してねぇじゃねぇか

702 :デフォルトの名無しさん:2005/05/08(日) 11:24:01
>void ReprtItem();
>ReportItem::ReprtItem()

単にコンストラクタの宣言が間違ってるってだけやん。

703 :デフォルトの名無しさん:2005/05/08(日) 11:39:13
>>701
>>702
これって、頭にvoid付けて
void ReportItem::ReportItem( DateTime date, String ^name, String ^kind, int money )
にしろってことですよね?

「error C2533: 'HomeBank::ReportItem::{ctor}' : コンストラクタの宣言に戻り値の型が含まれています。」
http://msdn2.microsoft.com/library/tcz112eb(en-us,vs.80).aspx

になってしまいます orz

704 :デフォルトの名無しさん:2005/05/08(日) 11:48:11
逆だボケ
宣言、実装ともに型宣言なしにしろ

705 :デフォルトの名無しさん:2005/05/08(日) 11:56:22
>>704
「error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません」
http://msdn2.microsoft.com/library/ms173696(en-us,vs.80).aspx

・・・orz
void全部消したんですが、ヘッダのところでエラーになってしまいました。

706 :デフォルトの名無しさん:2005/05/08(日) 12:12:55
コンストラクタに返却型の定義は無い(voidすらない)
これが大前提
宣言部、実装部両方とも取ってエラーが出るんなら別のとこだろ

707 :デフォルトの名無しさん:2005/05/08(日) 12:23:56
>>706
オーバーロード部分が無しなら、>>687 の記述でOK(void有り)なんですが・・
もう少し調べてみます。

いろいろ教えて頂きありがとうございました。

708 :デフォルトの名無しさん:2005/05/08(日) 14:39:07
コンストラクタの名前は、クラス名と同じである必要がある。
それを前提に、もういちど687とか702をよ〜くみてみるんだな。

709 :デフォルトの名無しさん:2005/05/08(日) 14:50:04
>>708
げげげ!わかっちゃいました・・・・ 
 ×ReprtItem → ○ReportItem

いま修正したら、きれいにコンパイル通りました。
>>706さんの言ったとおりvoidも必要なかったです。・・・orz

丸2日ずっと見ててもわからなかったのに〜〜〜すげーショック!です。

でも、皆さんのおかげで、すげーC++の基礎が理解できました。
ありがとう・・本当にありがとうございます。 m(__)m

710 :デフォルトの名無しさん:2005/05/08(日) 14:57:40
とりあえず、返り値の型指定とか引数リストとか間違ってないのに
それでもオーバートードされたメンバ関数がありませんって出る時は
十中八九関数名の部分が宣言部と実装部で違ってる

711 :デフォルトの名無しさん:2005/05/08(日) 14:58:05
オーバートード ×
オーバーロード ○

712 :デフォルトの名無しさん:2005/05/08(日) 15:27:09
ケロケロ

713 :デフォルトの名無しさん:2005/05/08(日) 15:29:38
話かわるけど蛙多杉

714 :デフォルトの名無しさん:2005/05/08(日) 17:12:18
IDEついてないやつか?
違ってたらわかりそうなもんだけど
最近の入門書ならサンプルコードそのまんまビルドするだけじゃね?

715 :デフォルトの名無しさん:2005/05/08(日) 21:41:34
蛙マジウルセー!集中できねえよカス!!!

716 :デフォルトの名無しさん:2005/05/08(日) 22:33:33
蛙うんこ氏ね

717 :デフォルトの名無しさん:2005/05/08(日) 23:50:38
VC.net2003で_vscprintfを使ったライブラリを作ったんですが
このライブラリをVC6.0でコンパイルすると
hoge.lib(hoge.obj) : error LNK2001: 外部シンボル "__vscprintf" は未解決です
とエラーがでます。
_vscprintfは6.0の頃には存在しなかった関数みたいですが
エラーがでないようにするにはどうしたらいいですか?

718 :デフォルトの名無しさん:2005/05/09(月) 01:27:14
さっき伊豆スカイラインを走ってきたけど、すげーな、かえるの大合唱w

719 :デフォルトの名無しさん:2005/05/09(月) 02:01:56
あ〜〜〜〜〜何時間鳴いてんだよ!!!!!!
唐揚げにして食っちまうぞヴォケ!!!!!!

720 :デフォルトの名無しさん:2005/05/09(月) 03:31:31
俺スゲー賢い蛙見たぞ!自販機に張り付いてんの。
光に寄ってくる虫を食ってるようだ。
ただの雨蛙のくせに激しく肥満だったがなw

721 :デフォルトの名無しさん:2005/05/09(月) 05:10:34
か・え・る♥

722 :デフォルトの名無しさん:2005/05/09(月) 06:31:32
ぬるぽは叩かれるけど蛙は叩かれないよね

723 :デフォルトの名無しさん:2005/05/09(月) 08:38:58
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__∧∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>722

724 :デフォルトの名無しさん:2005/05/09(月) 09:03:56
>>717
自分でライブラリ作る前に標準ライブラリのソース読め

725 :デフォルトの名無しさん:2005/05/09(月) 14:31:22
722 は果たしてぬるぽで叩かれたのか蛙で叩かれたのか。

726 :デフォルトの名無しさん:2005/05/09(月) 15:08:42
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__∧∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>725

727 :デフォルトの名無しさん:2005/05/09(月) 16:18:05
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__∧∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>1-4294967295


728 :デフォルトの名無しさん:2005/05/09(月) 18:45:12
>>726
だから、ぬるぽなのか蛙なのかわかんねぇって!!

729 :デフォルトの名無しさん:2005/05/09(月) 18:46:42
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__∧∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>728

730 :デフォルトの名無しさん:2005/05/09(月) 18:48:45
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__∧∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>1-1000

731 :デフォルトの名無しさん:2005/05/09(月) 18:49:05
ガッされるのは蛙が原因なのかそうでないのか、それが問題だ。

732 :デフォルトの名無しさん:2005/05/09(月) 18:52:00
これからは64bitですがなにか。

  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__∧∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>1-18446744073709551615

733 :デフォルトの名無しさん:2005/05/09(月) 18:52:34
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__∧∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>0-65535

734 :デフォルトの名無しさん:2005/05/09(月) 18:52:37
めるぽ

735 :デフォルトの名無しさん:2005/05/09(月) 18:54:11
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__∧∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>722-734

736 :デフォルトの名無しさん:2005/05/09(月) 19:05:18
急速にスレの質が低下してまいりました

737 :デフォルトの名無しさん:2005/05/09(月) 20:30:00
オレ、〆切間際の切羽詰まった状態にならないと本領発揮できないんだけど、変なのかな?

738 :デフォルトの名無しさん:2005/05/09(月) 20:35:55
,,_________,,___________,,_____
| (3)  15版        朝   日   新   聞
| ──────────────────────────
| | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
| |                  |        ┌‐──── ┐
| |  ( ・∀・)   | | ガッ   |  | | | |    .| _「l__「「」|
| | と    )    | |      |  | | | | .相 | 'ーi r─i|  | 
| |   Y /ノ    人       |  ── 次.  |   ノノ . ノノ. .|
| |    / )    <  >_∧∩   |  | | | | .ぐ. |  ~  ^´   |
| |  _/し' //. V`Д´)/   |  | | | | ぬ   !        |
| | (_フ彡        /    |  ──  ○  |.          |
|. └───────────┘ | | | | ぽ  !        |
| ガッされる>>734容疑者─9日 . | | | |  に  |  「「」 /7  |
| ──────────────── .怒 .|   ノ '    |



739 :デフォルトの名無しさん:2005/05/09(月) 20:44:27
カッとなってやった、今は反省している

740 :デフォルトの名無しさん:2005/05/09(月) 22:30:19
>>737
俺も夏休みの宿題は小学校高学年から中学卒業まで8月31日に徹夜で1日で仕上げてたぜw
高校の時はデスマーチしても追いつかず期限漏れしまくってたが・・・orz

741 :デフォルトの名無しさん:2005/05/09(月) 22:34:30
>>740
俺は一切提出しなかったな。
なのに成績はいつも上位だった。

742 :デフォルトの名無しさん:2005/05/10(火) 10:06:26
>>717
> _vscprintfは6.0の頃には存在しなかった関数みたいですが
> エラーがでないようにするにはどうしたらいいですか?

自分で答え書いてるじゃん。

存在しないからエラー
エラーが出るのは存在しないから
エラーが出ないようにするには存在させてやればいい

もしくは存在しないものを使わなければいい。

743 :デフォルトの名無しさん:2005/05/10(火) 11:06:42
MFCのSDIで、ドキュメントクラスから、ビュークラスのポインタは
どうやって取得しますか?

744 :743:2005/05/10(火) 11:08:48
自己解決しますた

CMyView* pView = (CMyView*)AfxGetMainWnd()->GetActiveView();


745 :デフォルトの名無しさん:2005/05/10(火) 11:14:00
http://ZM157084.ppp.dion.ne.jp/
wwwwwwwwwwwwうぇwwwwおkwwwwwwwwwwwwwww
うはっwwwおkwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwww

746 :サンプルエディットボックスの幅:2005/05/10(火) 11:22:46
現状では正常に動いているのですが、サンプルエディットボックス
の幅をドラッグで変更するとコンボボックスの数行の選択用の
メニュー表記(国名数行)が空白になってしまいます。

レイアウト的には下記の感じです。

YEAR     □ (サンプルエディットボックス)

COUNTRY    □▼(コンボボックス(ドロップダウンリスト)

どなたか国名数行が空白になる原因をご教授いただけないでしょうか。



747 :デフォルトの名無しさん:2005/05/10(火) 11:26:57
http://p29ee40.kyotac00.ap.so-net.ne.jp/
うぇwwwっwwwっっうぇおkwwwwwっっうぇw
おkwww
っwwwwwwwwwwwwwwwwwwwww


っwwwwwwwwwwwwおkwww


748 :デフォルトの名無しさん:2005/05/10(火) 11:32:21
>>746
マルチすんな

749 :デフォルトの名無しさん:2005/05/10(火) 12:08:19
>>746
だんだん詳しく書いているようだが、
いまだにどんな症状なのかさっぱりわからない

750 :サンプルエディットボックスの幅:2005/05/10(火) 14:34:13
>>749

YEAR     □        @ <-->伸ばします。(VC++.net)

COUNTRY    □     ▼
       日本      A保存して立ち上げて国を選ぼうとすると
       アメリカ     日本、アメリカ、イギリスの表記が
       イギリス     空白で消えます。

年の幅だけ伸ばして国名を消えないようにしたいのです。
       
      

751 :デフォルトの名無しさん:2005/05/10(火) 14:50:26
>>750
Yearを伸ばすことと、国名が出なくなることに直接の関係があるの?

752 :サンプルエディットボックスの幅:2005/05/10(火) 14:55:38
->751
無いと思うのですが、、
例えば Year の 2005 の表示領域が狭いので
200とかなるので、幅を増やしたいだけなのです。
そこはうまくいくのですが、
なぜか直接関係無いはずの国名が消えます。

753 :デフォルトの名無しさん:2005/05/10(火) 14:58:36
エディトとかコンボの仕業じゃなく、他にバグがあるんだろうw

754 :デフォルトの名無しさん:2005/05/10(火) 15:28:54
>>747
マルチすんな

755 :デフォルトの名無しさん:2005/05/10(火) 15:42:02
ttp://81tt78.omn.ne.jp/
おkwwwwwwwwwwwwwwwwwwwっっwwwwww
っうぇっうぇwうぇおkうはっwうぇwww
うはっwwwwwwwwwwwwっうはっwうはっうはっ
wwwwwwwうはっwwwうぇwwwwwwwwwwww

756 :デフォルトの名無しさん:2005/05/10(火) 15:56:48
748 755
マルチすんな

757 :デフォルトの名無しさん:2005/05/10(火) 16:02:04
急に病気な人が増えた件について

758 :デフォルトの名無しさん:2005/05/10(火) 16:07:07
>>754>>756
マルチすんな

759 :デフォルトの名無しさん:2005/05/10(火) 16:11:12
ttp://95.89.111.219.dy.bbexcite.jp/
wwwwwwwwwwwwうはっうぇwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwっっ
wwwwwwwwwwうはっうぇうぇwwwうはっwwwwww
wwwっwおkうぇwwwwwwwwwwww


760 :デフォルトの名無しさん:2005/05/10(火) 16:14:16
一瞬こっち↓かと思ったぜ・・・

最高に頭悪そうな発言してください in ム板 (V)
http://pc8.2ch.net/test/read.cgi/tech/1115386557/

761 :デフォルトの名無しさん:2005/05/10(火) 18:01:10
>>717
これくらい自分で作ろうとも思わないのか。
int _vscprintf(const char *format, va_list argptr) {
    FILE *fp = fopen("NUL", "w");
    if (!fp)
        return 0;
    int ret = fprintf(fp, format, argptr);
    fclose(fp);
    return ret;
}

int _scprintf(const char *format, ...) {
    va_list va;
    va_start(va, format);
    int ret = _vscprintf(format, va);
    va_end(va);
    return ret;
}


762 :デフォルトの名無しさん:2005/05/10(火) 18:47:11
自分で作る馬鹿はあんまりいない。
CRTからソースもらってくるだけ

763 :デフォルトの名無しさん:2005/05/10(火) 21:10:09
プログラム関係のスレッドにしか病気な人が出現しない件について
(というか特定のスレッド)

764 :デフォルトの名無しさん:2005/05/10(火) 21:23:46
>>745>>747>>755>>759
山田ウイルス

765 :デフォルトの名無しさん:2005/05/10(火) 22:35:50
ウイルスにしちゃスレが片寄ってるな
上がってるスレが狙われたのかと思ったけどそうでもないし、
ウイルスを真似たコピペかも

766 :デフォルトの名無しさん:2005/05/10(火) 22:42:17
書き込むとき、どんな気持ちなのでしょう。
ほくそえんでたりするのでしょうか。

767 :デフォルトの名無しさん:2005/05/10(火) 23:53:20
Platform SDK をアップデートしてから、デバッグ・ビルドをすると

shell32.lib(shguid.obj) : fatal error LNK1103: デバッグ情報が壊れています; モジュールを再コンパイルしてください
link.exe の実行エラー

が出てビルドに失敗するようになってしまいました。
再インストールと再アップデートもしてみましたが結果は変わりませんでした。
どう対処すれば良いのか分かりません。
どなたか教えていただけないでしょうか。
環境は VC++ 6.0 です。


768 :デフォルトの名無しさん:2005/05/11(水) 01:12:31
運営見てきたけど、特定のスレだけにしか書かれないらしい>山田
15くらいあってしっかりム板が入ってますた
さっき対策入ったから減るかモナー

769 :デフォルトの名無しさん:2005/05/11(水) 06:28:32
>>767
プロジェクトのフォルダの中に、壊れたshell32.libが入っていて
それを参照してしまっているのではあるまいか、とか。

770 :デフォルトの名無しさん:2005/05/11(水) 09:58:09
>>768
オレの行くとこのほとんどで見かけるからもっと多いかと思ったら
そんなもんなのか・・・

スレそのものは上のほうが狙われます

771 :サンプルエディットボックスの幅 :2005/05/11(水) 10:45:57
解決しました。
visualC++ 6.0 で最初に制作されたものを
.netで修正したためにうまくいかなかったようです。

772 :デフォルトの名無しさん:2005/05/11(水) 10:49:45
Visual C++ 6.0 で作ったものを Visual C++ .NET でいじっても何の問題もない。

773 :デフォルトの名無しさん:2005/05/11(水) 11:04:46
環境変ったら中間ファイル消せよ

774 :デフォルトの名無しさん:2005/05/11(水) 12:19:26
VCがさっぱりわかりません。CでのDOSプログラムの経験はあるのですが・・・。
どのように学べばよいのか教えてください。また良書があればそれも教えてください。

775 :デフォルトの名無しさん:2005/05/11(水) 12:24:44
さっぱり・・・

776 :デフォルトの名無しさん:2005/05/11(水) 12:42:45
>>774
「やってトライ!VisualC++.NETプログラミング」
http://www.amazon.co.jp/exec/obidos/ASIN/479731768X/qid=1115782837/sr=8-4/ref=sr_8_xs_ap_i4_xgl65/250-4479511-9618609

俺が読んだVC関連の書籍で、一番簡単だった
これ読んでもさっぱプーなら、無理

777 :デフォルトの名無しさん:2005/05/11(水) 13:17:49
>>776
URL の "qid=" 以降は削れよ。長くてウザイ。

778 :デフォルトの名無しさん:2005/05/11(水) 13:29:09
>>777
というと?

779 :デフォルトの名無しさん:2005/05/11(水) 13:29:59
DOSの方がわからん

780 :デフォルトの名無しさん:2005/05/11(水) 13:33:01
http://books-support.softbank.co.jp/try/try_vcpp.html
ここからサンプル落とせるな
トンカチたたきゲームやったけどぜんぜん点がはいんない。

基本的にMFCでAppとWndのみだから
シルトの「標準講座MFC」みたいなシンプルなソース

781 :デフォルトの名無しさん:2005/05/11(水) 13:33:05
>>778
http://www.amazon.co.jp/exec/obidos/ASIN/479731768X/

782 :デフォルトの名無しさん:2005/05/11(水) 13:35:36
>>781
なんも表示されないんだが・・・

783 :デフォルトの名無しさん:2005/05/11(水) 13:36:02
Windowsプログラムなら
「猫でもわかるプログラミング」で検索すればOK
VCの開発環境なら
プロジェクトにソースファイル(.cファイル。.hは入れても入れなくてもよい)を
追加してから、
[F7]でコンパイル、[Ctrl+F5]でコンパイルしてプログラム実行。
とりあえず、これだけで作れる。


784 :デフォルトの名無しさん:2005/05/11(水) 14:37:33
>>782
あなたのブラウザがおかしい。

785 :デフォルトの名無しさん:2005/05/11(水) 14:44:23
桜田本はやめようよ。
VC++6.0のStandard版にこの人の本が付いていたけど
はっきり言って良くない。


786 :デフォルトの名無しさん:2005/05/11(水) 14:56:59
>>785
その本持ってるけど、どこがよくない?
わりとまともな方だと思うが

787 :デフォルトの名無しさん:2005/05/11(水) 19:03:33
まともだと思っているならそれでいい。
それが桜田クオリティ


788 :767:2005/05/11(水) 19:17:52
>>769
>プロジェクトのフォルダの中に、壊れたshell32.libが入っていて
>>773
>環境変ったら中間ファイル消せよ

ありがとうございます。
プロジェクトや中間ファイル等は全て消してソースコードだけからビルドしていますがリンクエラーが出ます。
また、複数のプロジェクトを扱っているのですが、全てのプロジェクトでリンクエラーが起きています。
プロジェクト個別の問題ではなさそうです。

789 :デフォルトの名無しさん:2005/05/11(水) 22:11:18
htmlソースからタグを除去し、
ブラウザに表示される文字列のみを抽出したいのですが、
そういった用途のAPIは存在するのでしょうか。

地道にタグを除去するコードを書く必要があるのでしょうか?

790 :デフォルトの名無しさん:2005/05/11(水) 22:20:19
何もかも分かりません。
cout:定義されていない識別子です
とでてきます。
iostreamはちゃんとインクルードしています。

791 :デフォルトの名無しさん:2005/05/11(水) 22:20:56
そんなAPIはない。

792 :デフォルトの名無しさん:2005/05/11(水) 22:28:48
>>790
std::cout

793 :デフォルトの名無しさん:2005/05/11(水) 22:55:54
Visual C++ 6.0 で、 F5 + Ctrl 押したら、デバッグ実行になりますよね?
その場合、picture.bmp とか言うのがリソースとして必要だとします。
しかし、picture.bmp は Debug フォルダの中にあります。
そのため、 F5 + Ctrl で実行したら、うまく動作してくれません。
どうにかして、うまく picture.bmp を検出してくれるよう、設定を変える方法
などは存在しますか?

794 :デフォルトの名無しさん:2005/05/11(水) 22:57:48
パスを起動当初から、Debug に移すって意味です。
なんか意味わかりにくいですが、どうにか理解できる方、よろしく
お願いします。

795 :デフォルトの名無しさん:2005/05/11(水) 23:02:21
>>794
作業用のディレクトリを好きなところに設定したまえ。
プロジェクトの設定は君が思っているよりたくさんの便利な設定が有るぞ。

796 :790:2005/05/11(水) 23:03:56
何故かわからないんですが、できるようになりました。
ありがとうございました。

797 :デフォルトの名無しさん:2005/05/11(水) 23:05:20
1・とりあえずFileViewからpicture.bmpのエントリを削除してVC++を終了
2・VC++を再起動し、FileViewのResourceで右クリック
3・そのメニューからファイルをフォルダへ追加を選択
4・Debugディレクトリにあるpicture.bmpを選択して追加

これでプロジェクトに追加されたpicture.bmpはデフォルトのパスが
Debugディレクトリを指すようになる

798 :デフォルトの名無しさん:2005/05/11(水) 23:14:51
超FAQだと思うんで、似たような質問探してみた


普通にexeファイルをダブルクリックで実行すると正しくディレクトリ名を
取得できるのですが、他ファイルをドラッグ&ドロップなどで放り込んだり
アプリケーションの関連付けを行って開こうとすると
カレントディレクトリがなぜか C:\ になってしまいます。
exeファイルのあるフォルダをカレントディレクトリにするには
どうしたらよいでしょうか?


GetModuleFileName( )で実行ファイルのフルパスが獲得できます。
ファイル名だけ削除すればパスが得られます。
SetCurrentDirectory( ) でカレントディレクトリを設定できます。

799 :デフォルトの名無しさん:2005/05/11(水) 23:33:35
>>797 さんので、四苦八苦しながら何とか出来ました、ありがとうございます。
>>798 さん、すみません、まだVCを始めたばかりで、その辺のことはよくわかりません;;
>>795 さんも、レスありがとうございました。色々設定があるんですね。難しそうです。

皆様、初歩的な質問だったのかもしれませんが、重ね重ね、ありがとうございました。

800 :デフォルトの名無しさん:2005/05/12(木) 02:09:23
誰かエロイ人MSNメッセか何かで適当に教えてくれね?
謝礼は毎日メッセサインインしてるヒキの労力でorz

801 :デフォルトの名無しさん:2005/05/12(木) 05:43:21
ごめん、君に教えられるほどエロくない。

802 :デフォルトの名無しさん:2005/05/12(木) 06:45:23
Visual C++ 6.0を最近インストールして、
Service Pack 6を当てたんですが、確認の為ヘルプからバージョン調べても
Service Pack 6当てる前と同じでSP6とか書いてないんです。
こういうもんなんですかね。何回Service Pack 6を入れなおしても変わらないので…

803 :デフォルトの名無しさん:2005/05/12(木) 07:17:52
>>802
そういうものです。
インストールされてるDLLのバージョンを見て判断するしかない。
判断するアプリを開発してみたらいい。

あとは、うちでは動かないけどこれを使うとか。
http://61.195.253.97/cgi-bin/main.cgi?fileopen,madonomoto_01_00,madonomoto\WIN\vc6sp

804 :802:2005/05/12(木) 07:43:29
>>803
ありがとうございます。
Visual C++自体の再インストールが必要かと考えてましたので助かりました。

805 :803:2005/05/12(木) 07:48:16
>>804
VBなんかは起動画面(スプラッシュ)にSPのバージョンも出るのに、
VCは負けてますよね。

806 :デフォルトの名無しさん:2005/05/12(木) 09:39:53
はい、VCの完敗です。
VBにはとてもかないませんわ。

807 :デフォルトの名無しさん:2005/05/12(木) 09:44:59
VBもVCも同じなんだけど、、、
ってこれはIDEだからか

808 :デフォルトの名無しさん:2005/05/12(木) 10:04:48
>>781
もっと削れるよ
詳しくはGoogle Hackを買おう(笑)

809 :デフォルトの名無しさん:2005/05/12(木) 10:06:08
ごめ、書名間違えた
要するにoだけで十分なんだ

810 :デフォルトの名無しさん:2005/05/12(木) 13:57:47
「ぎれ」で変換したら「ピカチュウ」って出たんだけど。。。


811 :デフォルトの名無しさん:2005/05/12(木) 14:09:00
>>810
それは有名

812 :デフォルトの名無しさん:2005/05/12(木) 18:21:02
っていうか、なぜ?

813 :デフォルトの名無しさん:2005/05/12(木) 18:24:28
関数ポインタへの代入がうまくいきません・・・
クラスを返す関数だと、無理なのでしょうか?

error C2440: '=' : 'CString (__thiscall CGIEView::* )(int)' から 'CString (__cdecl *)(int)' に変換できません。

Cxxx::CString unko(int hoge){
}

CString (*p)(int);
p = unko;       ←ここでエラー




814 :デフォルトの名無しさん:2005/05/12(木) 18:25:13
>>812
コピーされたときのチェック用じゃね?

815 :デフォルトの名無しさん:2005/05/12(木) 18:34:41
メソッドへのポインタは、関数へのポインタとは型が違う。

コンパイラが言うように、
'CString (*p)(int)'から
'CString (CGIEView::*p )(int)'
に変更しとけ。

816 :813:2005/05/12(木) 18:42:22
>>815
おお!出来ました!
まじサンクス!

817 :デフォルトの名無しさん:2005/05/12(木) 19:04:12
次は p(1); がエラーになります、と来ると予想。

818 :デフォルトの名無しさん:2005/05/12(木) 19:12:56
質問です。

VC++のVER6.0で、WIN32アプリケーションを
作成しております。(XP−PRO sp2です)

日時指定のコントロールを使用しているのですが、XPでは動くのに
2000やMEではコントロールを置いているダイアログが開かず、
困っております。どなたか、ヒントをお願い致します。


819 :デフォルトの名無しさん:2005/05/12(木) 19:15:04
リリースビルドじゃなくて
デバッグビルドでやってごらん
きっとエラーメッセージを出すよ


820 :818:2005/05/12(木) 19:29:40
>>819

デバッグでやっても、エラーは何も出ませんでした。XPならダイアログが
開くのに、2000・MEでは何もおきません。



821 :デフォルトの名無しさん:2005/05/12(木) 19:41:21
じゃあ、XPでしかサポートしていないAPIとかActiveXを
使っているとか。必要なdllがインストールされてないとか。


822 :デフォルトの名無しさん:2005/05/12(木) 19:44:57
二次元配列を使おうと思いまして
コンストラクタ内で
vector<vector<int> > Array(100, vector<int>(100));
Array[10][10] = 100;
とすれば普通に使えるのですが
クラスのメンバ変数として

class Hoge {
 vector<vector<int> > Array(100, vector<int>(100));
};

とすると
error C2059: 構文エラー : '定数'
error C2143: 構文エラー : ')' が ';' の前にありません。
error C2059: 構文エラー : ')'
とエラーが出てしまいます。
いったい何がいけないのでしょうか・・・?
VC.net Standard です。

823 :デフォルトの名無しさん:2005/05/12(木) 20:22:46
すいません、質問です

あるプロジェクトで作ったアプリがあります。win32です。
その中身を、DirectX用に作ったプロジェクトの中に組み込みたいのですが、
どうやればいいんでしょうか?

とりあえず全部既存項目の追加でいれてみたんですけど…

824 :デフォルトの名無しさん:2005/05/12(木) 20:35:22
>>823
なんかすげーなw
まるでカレーでもつくっているかのようだ。


825 :デフォルトの名無しさん:2005/05/12(木) 20:40:24
やっぱり無理なんですかね
1から書き直さないとダメなんでしょうか。

826 :デフォルトの名無しさん:2005/05/12(木) 20:43:56
>>822

class Hoge {
Hoge() : Array(100, vector<int>(100))
{}
vector<vector<int> > Array;
};


827 :デフォルトの名無しさん:2005/05/12(木) 20:55:33
VC++じゃなくてC++の話してる馬鹿がいるな

828 :デフォルトの名無しさん:2005/05/12(木) 20:55:52
すいません
floatからdoubleにキャストするには何を使えばいいんですか?
逆はどうですか?

829 :デフォルトの名無しさん:2005/05/12(木) 21:05:57
Visual C++以外のネタは要りません。

830 :813:2005/05/12(木) 21:32:52
>>817

p(1); エラーになります・・・orz
どうやって関数呼び出せば・・・

× *p(1);
× (*p)(1);
× Cxxx::*p(1);

おたすけてくださいまし・・・


831 :813:2005/05/12(木) 21:46:44
すみません・・・
出来ました

(this->*p)(1);

C++の勉強不足でした。出直してきますm(_ _)m

832 :デフォルトの名無しさん:2005/05/12(木) 22:02:28
>>828
static_castね。
float→doubleはキャスト演算子を使わなくても変換してくれると思うけど。

Visual C++以外でも通用するC++の話はC++スレで。

833 :822:2005/05/13(金) 00:27:46
>>826
なるほどそのように書くわけですか。
どうもありがとうございました。
次からC++の話題は該当スレでします。
>>822はgccでも蹴られたし・・・。

834 :デフォルトの名無しさん:2005/05/13(金) 00:28:27
Visual C++ 2003 (Pro) Ver.7.1.3091

なんかDebugビルドでrealloc(NULL, …); やると
たまに他の領域壊すんですけど、なにこれ?!

Debugビルドで症状再現率 10%
Releaseビルドだと、症状再現率 0%
malloc(); に書き換えたら、ピタっと治まった

あたいの時間を返せー!!!!


835 :デフォルトの名無しさん:2005/05/13(金) 00:50:24
>>834
99.99999999%君のプログラムが悪い。
Releaseではたまたま症状がでないだけで、どっかでバッファオーバーランでもしてるんだろ。

836 :デフォルトの名無しさん:2005/05/13(金) 01:43:26
正直初心者には、Visual C++とC++の区別なんざついてないと思われ
スレ違いとか言われてキレるのが目に浮かぶ

837 :デフォルトの名無しさん:2005/05/13(金) 01:48:15
やはり、プログラムの不具合見つけるには、
最初はDebugビルドがいいですか?
Debugビルドでデバッグして問題なければ、
Releaseビルドに切り替えたとき、
方向としては更に安定すると思っていいのですか?

838 :デフォルトの名無しさん:2005/05/13(金) 01:48:55
>>837
いいえ。

839 :デフォルトの名無しさん:2005/05/13(金) 01:50:51
最初どころかずーとDebug
よそにもってってテストするときにRelease
直すときはまたDebug
最後は当然Release
でもその後で修正が入ってDebug

840 :デフォルトの名無しさん:2005/05/13(金) 01:52:14
>>837
つーかステップ実行でおっかけたりメモリやメンバの中を覗いたりしないのかよ

841 :デフォルトの名無しさん:2005/05/13(金) 02:37:21
ステップ実行でおっかけたりメモリやメンバの中を覗いたりする奴は
ストーカーで手鏡をして逮捕される田代覗き魔の負け組み


842 :デフォルトの名無しさん:2005/05/13(金) 02:44:46
>>841はデバッガを使いこなせない低脳

843 :デフォルトの名無しさん:2005/05/13(金) 05:21:20
異常終了したときに、通ってきた関数のトレースはみれないのでしょうか?

Java みたいに出てくれると楽なのですが。。。

844 :デフォルトの名無しさん:2005/05/13(金) 05:56:11
通ってきた関数はコールスタック見ればわかる。

845 :デフォルトの名無しさん:2005/05/13(金) 08:25:44
USHORTで動的確保するとタマにおかしくなる。
それでDWORDにすると、上手くいく。
いつもこれ。わからん

846 :デフォルトの名無しさん:2005/05/13(金) 08:47:59
ぶっちゃけVisual C++ってどうなの?

847 :デフォルトの名無しさん:2005/05/13(金) 09:01:14
プログラミング初心者にはお勧めしない
最低でもC/C++で実用プログラム作れるぐらいじゃないと

848 :デフォルトの名無しさん:2005/05/13(金) 09:21:16
というのは嘘

849 :デフォルトの名無しさん:2005/05/13(金) 10:12:12
win32で作ってまして・・。
ダイアログボックスに、エディットボックスを作って、その入力内容に
よって、switch文かif文で処理を変えようとしたのですが、うまくいきません。
文字を読み込んでいるかの確認のため、メッセージボックスで表示させてみたのですが、
これは成功してます。
おそらく、switch文、もしくはif文の後が悪いと思うのですが、何度やってもうまくいきません。
教えてください。

850 :デフォルトの名無しさん:2005/05/13(金) 10:14:41
>>849
まずは、どういうコードを書いたのか想像しろと?

851 :デフォルトの名無しさん:2005/05/13(金) 10:15:15
超能力者の降臨を待つスレ

852 :デフォルトの名無しさん:2005/05/13(金) 10:23:45
デバッガでswitch文、もしくはif文の前で止めて調べる。
デバッガ使えないなら通りそうな所でメッセージボックスだしてみる。

853 :849:2005/05/13(金) 10:38:48
エディットのIDがIDC_EDIT1だと思ってください。
GetDlgItemText(hDlg,IDC_EDIT1,text,100);といった感じで、文字を読み込んで、
そのあと確認のためMessageBox(hWnd,text,"確認",MB_OK);で出力させてます。
その時はちゃんとエディットボックスの入力と同じ表示なのですが・・。
それから、条件判断させようとしても、きちんと指定された処理へいきません。

説明が下手なので申し訳ないのですが、理解してもらえますか?



854 :デフォルトの名無しさん:2005/05/13(金) 10:44:53
>>853
CStringは使ってないんだな?
使ったほうがいいと思うが、

char* の内容を比較しようと思ったら
単に swich case や、 == 使うだけじゃ駄目だぞ

855 :デフォルトの名無しさん:2005/05/13(金) 10:47:16
とりあえずその文字列の取得からswitch文、if文に至るまでのソースを
ここにコピーしなさいよ。文章だけで説明されてもわけわからんし。
それか実際の例を出さずにこういったものを用意してこういった事を
実現したいってのを文章にして書くか。

856 :849:2005/05/13(金) 11:01:55
GetDlgItemText(hDlg,IDC_EDIT1,text,100);
Ret = MessageBox(hWnd,text,"警告",MB_OK);
if(text == "aaa"){
Ret = MessageBox(hWnd,"同じ","警告",MB_OK);
}else{
Ret = MessageBox(hWnd,"保存","確認",MB_OK);
}

理想としては、エディットボックスを二つにして、両方の入力を比較したいのです。
>>854
 CStringは知りませんでした。調べてみます。


857 :デフォルトの名無しさん:2005/05/13(金) 11:10:23
>if(text == "aaa"){
これは、textのアドレスと"aaa"の格納されているアドレスを比較している
違うのはあたりまえ。
if (strcmp(text, "aaa") == 0){
こうすればいい。CStringなら == が使える

858 :デフォルトの名無しさん:2005/05/13(金) 11:13:04
VC初心者でも回答できるレベルの問題でした。
パチパチ

859 :デフォルトの名無しさん:2005/05/13(金) 11:16:38
この程度なら回答できたのにと思っている>>858に萌え

860 :デフォルトの名無しさん:2005/05/13(金) 11:18:02
VC初心者がC/C++を教えるスレ

861 :デフォルトの名無しさん:2005/05/13(金) 11:20:40
VCで、テキストをアルファブレンドの効果を持たせて出力したいのですが・・・

862 :849:2005/05/13(金) 11:25:26
>>857
ありがとうございます。動きました。
出来れば、CStringを使った場合の記述を教えてもらいたいです。
それと、もうひとつIDC_EDIT2というIDのエディットボックスと比較したい
場合はどうすれば良いでしょうか?


863 :デフォルトの名無しさん:2005/05/13(金) 11:26:24
>>861
ですが、何よ

864 :デフォルトの名無しさん:2005/05/13(金) 11:30:13
>>862
フレームワーク使ってるかどうかでだいぶ変わるが、、、
一番単純なのは CString の変数に = でchar* を代入して
==で比較。

2つめのコントロールも同じように取得すればいいのでは

865 :デフォルトの名無しさん:2005/05/13(金) 12:07:31
ダイアログに項目追加していくとき、例えばエディットコントロールなら、
そのIDは、IDC_EDIT1,IDC_EDIT2,IDC_EDIT3,...ってしたいのですが、
IDの定義値によっては、IDC_EDIT3が他のIDと重なって定義できなかったりして、
なんかむずむずするときがあります。
こんなとき、うまく順番にID割り振る方法ってあるのでしょうか。

866 :デフォルトの名無しさん:2005/05/13(金) 12:14:01
DWORD id[4] = {IDC_EDIT1,IDC_EDIT2,IDC_EDIT3,IDC_EDIT4};

for(DWORD i=0; i<3; i++)
{
DrawEditControl_tekitou( id[i] );
}
みたいな

867 :デフォルトの名無しさん:2005/05/13(金) 12:17:28
static const char SS[ ] = "ABC";
static void F( char* S)
{
}
int main( )
{
F(SS);
}
ってやると、
error C2664: 'F' : 1 番目の引数を 'const char [4]' から 'char *' に変換できません。
とエラーメッセージが出ます。型チェックが厳しいのはわかりますが、
致命的エラーになるんですよね。
こういう場合は、その都度いちいちキャストしないといけないのでしょうか。
文字列をconstで使う場面って多いと思うのですが。

868 :デフォルトの名無しさん:2005/05/13(金) 12:18:20
>>865
つΨ 孫の手

869 :デフォルトの名無しさん:2005/05/13(金) 12:22:05
おれ、あんまりかゆくなるとresouce.h直に編集してしまうw


870 :デフォルトの名無しさん:2005/05/13(金) 12:22:52
>>867
F()の引数をconstにすべきでは

871 :デフォルトの名無しさん:2005/05/13(金) 12:28:57
>>844

ブレークポイントでコールスタックを見るとちゃんと関数名が見れるのですが;
異常終了したときには関数名がでないんです。。そっちの方がみたいのに。。


872 :デフォルトの名無しさん:2005/05/13(金) 12:32:31
>>871
異常終了ってダイアログでない?
そのとき、[再試行]選べば見られるよ

873 :デフォルトの名無しさん:2005/05/13(金) 12:34:51
>>842は自分がデバッガを使いこなせないから
他の奴もデバッガを使いこなせないと信じている低脳厨

874 :デフォルトの名無しさん:2005/05/13(金) 12:47:00
>>873
と、いうことにしたいのですね : - P

875 :デフォルトの名無しさん:2005/05/13(金) 12:57:28
つーか、実際そうだろ。


876 :デフォルトの名無しさん:2005/05/13(金) 13:32:34
>>872

コールスタックに アドレスが表示されて、関数名が表示されないんです。

877 :デフォルトの名無しさん:2005/05/13(金) 13:56:05
>>876
Debugビルドで?

ReleaseビルドのEXEやDLLはシンボル無ければ表示できないよ

878 :デフォルトの名無しさん:2005/05/13(金) 14:05:48
アタッチ

879 :デフォルトの名無しさん:2005/05/13(金) 14:06:39
VCで、テキストをアルファブレンドの効果を持たせて出力したいのです


880 :デフォルトの名無しさん:2005/05/13(金) 14:16:20
>>879
がんばれ

881 :ソース”管理”プロバイダ:2005/05/13(金) 14:16:33
VC++6で制作した.dswをVC++.NETで開くと
プロジェクト MPList.vcproj はソース管理下に存在しているようですが、
ソース管理プロバイダが、このコンピュータにインストールされていません。
このプロジェクトのソース管理の統合は無効になります。

とでてビルドしてもエラーになりますが、どのような対処が
必要なのでしょうか?


882 :デフォルトの名無しさん:2005/05/13(金) 14:17:50
ソース管理の警告とビルドエラーは関係ないのでは?

883 :デフォルトの名無しさん:2005/05/13(金) 14:28:02
お世話になります。
VC++でコンパイルをしたところ、以下のようなメッセーが出てきて、リビルドできませんでした。
d:\documents and settings\endo\my documents\どきゅめんと\vcpp_dev\klib\KLib.h(17) : fatal error C1083: include ファイルを開けません。'KLibIncludes.h': No such file or directory
d:\documents and settings\endo\my documents\どきゅめんと\vcpp_dev\source\prsearch\stdafx.h(8) : fatal error C1083: include ファイルを開けません。'klib.h': No such file or directory
「klib.h」も「KLibIncludes.h」もプロジェクトの中になります。なぜ、ファイルを開けないのでしょうか?
ご教授願います。
よろしくお願いします。


884 :デフォルトの名無しさん:2005/05/13(金) 14:30:12
>>877
Debug Build です。
ブレークポイントを設定した時にはちゃんとでるのですが。。。
異常終了したときには、アドレスだけなんです。。。
一般的には異常終了でも関数のトレースがでるんでしょうか?
(VS6.0 Sp5)

885 :デフォルトの名無しさん:2005/05/13(金) 14:43:52
SDIで組んでるのですが
CFormViewを使ったときに
ダイアログベースでOnInitDialogで初期化するように
初期化する処理はどこで行えばよいのですか?

886 :デフォルトの名無しさん:2005/05/13(金) 14:47:22
>>885
ウィンドウが必要ならOnCreate()

887 :デフォルトの名無しさん:2005/05/13(金) 15:00:43
>>884
DLLなら.pdbファイルも同じとこに置けばいいし
そうでないなら、、、実行はF5でやってる?

888 :デフォルトの名無しさん:2005/05/13(金) 15:05:51
>>885
CFormViewか、、ドキュメントによるなら
OnInitialUpdate()がいいのかな

889 :デフォルトの名無しさん:2005/05/13(金) 15:11:14
>>843
もしデバッガを入れてない環境なら、Dr.ワトソンを使うべし。

シンボルを入れてなくても、mapファイルとリスティングファイルからソースの該当箇所を割り出し可能。
デフォルトでは、リリースビルドでそれらは生成されないので、必ず設定変更し、バージョン毎に保存・管理すべし。

試しに意図的にNULLポインタの指す先をアクセスして、
予行演習しておいたほうがいいですよ。

プロセスが異常終了するのではなく、例外がthrowされた時に・・・ということであれば、
PlatformSDKのサンプルのDr.ワトソンのソースを参考に、スタックウォークすればOK。

890 :885:2005/05/13(金) 15:12:17
補足です
起動時にエディットボックスに自動的にパスを入力する処理をするのです
ダイアログベースのときはOnInitDialogでできたのですが
今回の場合は>>886のおっしゃるCMainFrameのOnCreateにするということですか?
それとも>>888のC・・・ViewのOnInitUpdateですか?

891 :デフォルトの名無しさん:2005/05/13(金) 15:17:05
>>862
初心者のうちは大人しく、MFCでDDXを使ったほうがいいですよ。

GetDlgItemTextとか使わなくたって、
自動的にメンバ変数のCStringに転送してくれますから。

892 :デフォルトの名無しさん:2005/05/13(金) 15:20:30
>>884
異常終了するのは、どういうタイミングですか?
また、異常終了した時のコールスタックの内容は?

その時のデバッガの画面のキャプチャを出したほうが、話が早いよ。

893 :デフォルトの名無しさん:2005/05/13(金) 15:27:43
>>890
最初に一回だけならOnCreateでいい
OnInitialUpdateならファイルメニューの
新規作成や開くを選ぶたびに呼ばれる

894 :ソース”管理”プロバイダ:2005/05/13(金) 15:31:05
>882
なぜかくりかえしビルドしてたら
エラーがなくなりました。

895 :893:2005/05/13(金) 15:32:41
ってSDIか。
まあCDocumentが欲しけりゃOnInitalUpdate

896 :885:2005/05/13(金) 15:58:45
>893
OnInitalUpdateに記述して無事できました
ありがとうございます

C・・・Docクラスに何かしら記述しないといけないのかなぁとか考えてましたが
Viewクラスだけで事足りるのですね

897 :884:2005/05/13(金) 16:59:04
>>887 >>892

ありがとうございます。原因がわかりました。
PageSetupDlg 内で飛んでいました。(そのためコールスタックがでていないようです。)
PageSetupDlg で飛ぶ原因はわからないのですが。。とりあえずインク節約のソフトを抜くと動きました(笑)
他のソフトはインク節約のソフトが入っていても動くので私の使い方がマズイのだとは思います。


898 :デフォルトの名無しさん:2005/05/13(金) 17:08:14
地球環境のためにも是非なおしていただきたいw

899 :デフォルトの名無しさん:2005/05/13(金) 18:18:53
resource.hを書き換えたらリビルドしよう。
「サポートされてない操作をしようとした」とかおかしなことになってはまる。

900 :質問してもいいですか:2005/05/13(金) 20:12:24
CString ss = "AあB";
とssに入っている時、ssから「A」「あ」「B」と順番に取り出すには、どうしたらよいですか?
仮にss.Midでやると、途中に2バイト文字があるので、どこに2バイト文字があるのか
把握してないと上手く取り出せません
やりたい事は、CStringのssを関数に渡し、渡された関数内で、1文字単位に分解したいのです
どうか、お知恵をお貸し下さい

901 :デフォルトの名無しさん:2005/05/13(金) 20:36:17
>>900
CStringT<wchar_t>使え。

902 :デフォルトの名無しさん:2005/05/13(金) 20:46:03
別にIsMBCSLeadByteで1文字づつ判定してったらいいとおもうが、

903 :デフォルトの名無しさん:2005/05/13(金) 21:01:20
>>901 >>902
ありがとうございます

904 :デフォルトの名無しさん:2005/05/13(金) 23:16:37
質問です。

Windows XP SP2 の上で VC++ 6.0 で開発しています。
言語は C++ です。

Windows Service から DLL を LoadLibrary して使用しています。

DLL の中にある class の static メンバ変数を使うと、DLL を FreeLibrary すれば
変数領域が解放されてしまいます(という実験結果でした)。

DLL から Serive 側のメモリ管理領域に static な変数領域(FreeLibrary をしても
消えない)を確保するにはどうしたらいいですか?


905 :デフォルトの名無しさん:2005/05/13(金) 23:18:28
ここは初心者スレ

906 :デフォルトの名無しさん:2005/05/13(金) 23:20:32
訂正:ここは初心者が解答するスレ

907 :デフォルトの名無しさん:2005/05/13(金) 23:30:13
FreeLibraryしたあとにそのDLLにあるクラスのインスタンスを参照するのか?
FreeLibraryするのが間違ってるんじゃないのか?

908 :904:2005/05/13(金) 23:41:07
>>907
>FreeLibraryしたあとにそのDLLにあるクラスのインスタンスを参照するのか?

そんなことはしません。
LoadLibrary される度に DLL が参照できる共通領域が欲しいのです。

>>905
自分は数ヶ月しかコード書いてない初心者ですが、これは初心者領域を越える質問なので
すか?

>>906
本当ですか?


909 :デフォルトの名無しさん:2005/05/13(金) 23:41:37
FreeLibraryする前に、その変数値を呼び出し側で保存しておけ。

910 :デフォルトの名無しさん:2005/05/13(金) 23:46:34
FreeLibraryの実験結果を見たら諦めるしかないよね。
それが嫌なら、自分で何か別な方法を考える。
それも嫌なら、やめる。

911 :デフォルトの名無しさん:2005/05/13(金) 23:49:36
>LoadLibrary される度に DLL が参照できる共通領域が欲しいのです。

ファイルに保存して、核DLLから参照したら?

912 :904:2005/05/14(土) 00:03:51
>>909
なるほど! Service 側に static な領域を確保して、そこへ FreeLibrary される前に
DLL が保存したい内容を確保すればいいのですね?
ありがとうございました。

>>910
自分で思いつかないから質問しました。

>>911
ありがとうございます。
いや保存したいないようがクラスなので。クラスもファイルに保存できるのですか?



913 :デフォルトの名無しさん:2005/05/14(土) 00:08:48
マジレスすると、サービスの実装なんて初心者はやらないだろうし、VC6++使ってるなら
LoadLibraryなんて使わずにインポートライブラリ使うだろう?
そもそもなんでFreeLibraryする必要があるの?そういう情報を出して質問しないと答え
様がないな。
どういうサービスなのか、どうして毎回Loadする必要があるのか、とかを書いて質問すると
もうちょっとましな回答ができると思うよ。
釣りだったらはずいなw


914 :デフォルトの名無しさん:2005/05/14(土) 01:39:51
グループボックスの中に
アイコンを描画したいと考えています。

グループボックスのハンドルをもとに
デバイスコンテキストを取得して、アイコンを描画しました。
アイコンの描画はできたのですが、なぜかグループボックスの枠が消えてしまいました。
原因はなんなのでしょうか?

hdc= BeginPaint (hGroupboxWnd, &ps);
DrawIcon(hdc, 0, 0, hicon);
EndPaint(hWnd, &ps);

SDKで組んでます。

915 :デフォルトの名無しさん:2005/05/14(土) 01:41:15
コードまちがえました…
正しくは以下です。

hdc= BeginPaint (hGroupboxWnd, &ps);
DrawIcon(hdc, 0, 0, hicon);
EndPaint((hGroupboxWnd, , &ps);

916 :デフォルトの名無しさん:2005/05/14(土) 02:10:20
グループボックスの中に
ピクチャーコントロールを配置して
そこに描画じゃアカンの?

917 :デフォルトの名無しさん:2005/05/14(土) 02:58:22
なんか釣られている気がするのは折れだけか。。。

918 :914:2005/05/14(土) 03:04:01
>>916
もちろん、それでもOKなんですが。
直接描画でいければ、それはそれでいいのかな、と思いまして。



919 :デフォルトの名無しさん:2005/05/14(土) 08:39:53
なんで最初から 0, 0 にするかな
かぶるかもとか知恵が回らないのだろうか?

920 :デフォルトの名無しさん:2005/05/14(土) 08:41:13
グループボックスの枠はグループボックスの内側に描かれている悪寒。

921 :904:2005/05/14(土) 09:50:21
>>913
初心者なんですが、会社に入ってずっと先輩たちのソースコード(本人行方不明)を
メンテナンスさせられてるんです。NT Service については彼らの遺産があるので
必死で Win32 や C++ を勉強しながらここまで入社 2ヶ月、必死なんです。

サービスは HTTP? のサーバーで、有名な apache とかじゃないです。オリジナル。
ドキュメントを読むと、HTTP でつながったら CGI の DLL をロードして処理して
フリーする感じです。各 DLL で行なったことの後始末を HTTP が切れたときに
全部について行ないかったんで、共有領域に書いておいて一気に処理したかったの
でした。
>>909 さんの説明でなんとかなりそうです。ありがとうございました。

では、今日も出勤です。

922 :デフォルトの名無しさん:2005/05/14(土) 11:25:00
あのね
給料もらってやってる仕事を無料奉仕で教えてやる馬鹿がいるか?

923 :デフォルトの名無しさん:2005/05/14(土) 11:29:49
>>921
他のとこに転職しとけ。で、新しい職場でももがき苦しめ。

924 :デフォルトの名無しさん:2005/05/14(土) 11:30:05
かわいそうに、これで>904は「できるやつ」ということでますます面倒なソースを押し付けられる羽目に……

925 :デフォルトの名無しさん:2005/05/14(土) 11:47:24
キーボードから入力される100個の整数のうち、
2桁の数がいくつあるかを数えて、その個数を表示する。

こんな問題があったのですが、さっぱり分かりません。
どなたか実際にプログラムを書いて教えてもらえませんか?

926 :デフォルトの名無しさん:2005/05/14(土) 11:48:35
>>925
スレ違い。宿題スレへ。

927 :925:2005/05/14(土) 11:53:22
あ、すみませんでした

928 :デフォルトの名無しさん:2005/05/14(土) 12:07:50
つーか宿題の答えを人に聞くんじゃねぇ

929 :デフォルトの名無しさん:2005/05/14(土) 12:25:57
まぁそうやって思考能力0人間になるのは自業自得なんだから
他人の俺らには関係ないじゃん。

930 :デフォルトの名無しさん:2005/05/14(土) 12:47:46
JR西日本は思考能力0人間の集団

931 :デフォルトの名無しさん:2005/05/14(土) 13:10:11
for(int i=0; i<100; i++)

932 :デフォルトの名無しさん:2005/05/14(土) 13:47:14
std::cout << "ぬるぽ" << std::endl;

933 :デフォルトの名無しさん:2005/05/14(土) 14:48:07
std::cout << "ガッ" << std::endl;

934 :デフォルトの名無しさん:2005/05/14(土) 14:50:45
残り99回のガッは?

935 :デフォルトの名無しさん:2005/05/14(土) 14:53:52
基本的なことだと思うんですが質問させてください。
MSDNのヘルプの記事にはWindows CEと書かれたものが多く含まれています。
時に、CEの記事しかないこともありますが、これはWinXPのような普通のOSでも
同じと考えていいのでしょうか。

なぜCEばかりあるのか不思議に思ってます。

936 :デフォルトの名無しさん:2005/05/14(土) 14:54:27
一回のガッで100人を殴る

937 :デフォルトの名無しさん:2005/05/14(土) 15:07:18
VC7.1のWin32コンソールアプリで、例えば
int main()
{
  printf("hello world\n");
}
たったこれだけの事をやりたくても
プリコンパイルヘッダを使わないと行けないんだけど
プリコンパイルヘッダを使わなくても済む方法あります?

そのコードをそのまま別の環境(たとえばLinux)に持ってってもコンパイルできるようにしたい
(ただのコマンドラインプログラムなので環境に依存しないものを作りたい)

938 :デフォルトの名無しさん:2005/05/14(土) 15:12:11
>>937
コンソールでコンパイルすれば?

939 :デフォルトの名無しさん:2005/05/14(土) 15:13:18
7.1は知らんが6.0ではプロジェクトの設定でできた。

940 :937:2005/05/14(土) 15:14:11
>>938
それしかないんかなぁ…
クラスビューとか使えると便利なんだけど

941 :デフォルトの名無しさん:2005/05/14(土) 15:33:19
>>939
同じ設定が7.1にもありました。

新規プロジェクトを作る時にはデフォルトでプリコンパイルヘッダを使用する
になっちゃってるけど、これを使用しないに変更して
StdAfx.hと.cppを削除してコンパイル通りました。

942 :デフォルトの名無しさん:2005/05/14(土) 15:41:18
「空のプロジェクト」で作成してファイルを追加すればいいじゃないか。

943 :デフォルトの名無しさん:2005/05/14(土) 16:31:41
練習問題とかでいちいちプロジェクト作ってると
レジストリにプロジェクト単位でキーができてて
あとから見るとものすごいことになってる。

944 :デフォルトの名無しさん:2005/05/14(土) 16:58:07
プロジェクトを一個作って、問題ごとにファイルを入れ替えて使うという考えが無いとは・・・

945 :デフォルトの名無しさん:2005/05/14(土) 17:08:55
vcvars32.bat使えよ...

946 :デフォルトの名無しさん:2005/05/14(土) 17:17:43
7.1で作ったプロジェクトを前のバージョンで読み込みたいのですが、
バージョンダウンしてプロジェクトの保存とかはできないのですか?
最初から前のバージョンのプロジェクトを作成してもいいのですが。


947 :デフォルトの名無しさん:2005/05/14(土) 17:59:02
>>946
.sln/.vcproj を .dsw/.dsp に変換するツールがあるよ。
http://www.google.co.jp/search?q=sln+dsw+converter
http://www.arstdesign.com/articles/prjconverter.html


948 :デフォルトの名無しさん:2005/05/14(土) 19:39:03
C++で行列の乗算を作るプログラムを作ってるんですが
なぜかうまくいきません
C=AXB を計算するとき
引数としてA、Bそれぞれの配列のポインタを渡して
Cの配列のポインタをreturnするというものにしてみたんですが
はじめの配列は4*4だったのに返ってくるものはなぜか
16*1のサイズになってしまいます。下に書いたプログラムは乗算の
計算の部分を省いて書いてみたやつなんですがやはり同じ結果に
なってしまいます。どこがまずいですか?また、どうすればいいですか?

float *jouzan(float a[4][4],float b[4][4]){
float c[4][4];
return c;
}
void main(void){
float a[4][4],b[4][4],c[4][4];
c=jouzan(a,b);
}

949 :948:2005/05/14(土) 19:40:54
ちなみに文章中のA、B、Cというのはそれぞれ行列のことです。
Xは行列の乗算の時につかうクロスです。
わかりにくくてすいません。

950 :デフォルトの名無しさん:2005/05/14(土) 19:58:33
>>948
それコンパイル通らないだろ。

951 :デフォルトの名無しさん:2005/05/14(土) 20:08:50
これじゃ駄目?

#include <stdio.h>

void jouzan(float a[4][4], float b[4][4], float c[4][4])
{
// 行列演算の結果をcへ代入
}

void main(void)
{
float a[4][4], b[4][4], c[4][4];
jouzan(a, b, c);
}

952 :948:2005/05/14(土) 21:30:07
>>951
関数の中で計算結果を引数に代入ってどういう風にすればいいんですか?
たとえば普通にc[1][1]=2;とかやってもだめですよね?

953 :デフォルトの名無しさん:2005/05/14(土) 21:33:39
行列の前にCの基礎から勉強し直した方がいいと思うよ。

954 :948:2005/05/14(土) 21:42:59
できますね^^;
ありがとうございました

955 :デフォルトの名無しさん:2005/05/14(土) 22:45:03
>>935
CEにしかないAPIはWin32では使えないよ。

956 :948:2005/05/15(日) 00:15:39
たびたびすいません
配列の中身を全部
同じ型の別の変数に代入するにはどうするにはどうしたらいいですか?
for文使っても出来ますけどそれだとながくなっちゃうんで
もっと短く書きたいんですけどぉ。

957 :デフォルトの名無しさん:2005/05/15(日) 00:20:30
memcpyとか、std::copyとか。
構造体でくるんで直接代入とか。

958 :デフォルトの名無しさん:2005/05/15(日) 00:22:12
>>956
自分で関数を作るとあら不思議。
一行ですむぞ。

959 :デフォルトの名無しさん:2005/05/15(日) 00:43:06
template使えばもっと楽になるぞ。

960 :デフォルトの名無しさん:2005/05/15(日) 02:02:16
D3DX使えばもっともっと楽に。

961 :デフォルトの名無しさん:2005/05/15(日) 10:03:01
すいません。コードの隣に行数を表示させたいんですけど。
教えて下さい

962 :デフォルトの名無しさん:2005/05/15(日) 10:08:33
>>961
>>108以降を読め

963 :デフォルトの名無しさん:2005/05/15(日) 10:42:02
throwした時にアウトプットに出る、
「例外処理 (初回) は〜〜」ってのを表示しなくすることは出来ますか?
出来れば特定の例外だけ、とか…

ループの中で使ったら凄いことに。

964 :デフォルトの名無しさん:2005/05/15(日) 14:29:48
クラスウィザードで追加すると、private, public, 関数, 変数関係なく、
追加された順にヘッダーにもプロトタイプ宣言されて行くのなんとかなりませんか?
ぐちゃぐちゃしてきて、気持ち悪くなりました。
せめて、関数、変数の区分で整理して貰いたいんですけど・・・

965 :デフォルトの名無しさん:2005/05/15(日) 14:39:55
>>964
自分で整理する。あ、VC6だと認識できなくなるかな? その場合はVC7に移行しよう。

966 :デフォルトの名無しさん:2005/05/15(日) 14:59:49
>>964
つ[ケロリン]

967 :デフォルトの名無しさん:2005/05/15(日) 15:42:46
やっぱひなびた温泉の桶はケロリンだよなー

968 :デフォルトの名無しさん:2005/05/15(日) 15:49:13
授業で初めてプログラムを体験し、とても楽しかったので家でも勉強しようと、
C言語のソフトを買いにいきました。店員さんに尋ねたところVisualC++.netを薦められました。
C言語とC++言語の違いを簡単に説明していただき、このソフトはどちらの言語も使えると言われたので
C言語の参考書と一緒に購入しました。
使い始めたのですが、プロジェクトの種類など、最初に選択する項目が沢山あってよくわからなかったので
付属のマニュアルどおりに

win32プロジェクト>アプリケーションの設定>コンソールアプリケーションにチェック
>空のプロジェクトにチェック>新しい項目を追加>C++ファイル

で画面にHell,Worldと表示するプログラムを作りました。
これを参考書の通りにC言語の形式で書き直したのですが、問題なく実行できました。
次に、int a に数字を代入してPrintfで画面に表示するプログラムを作成したのですが
表示されるaの値が何を代入しても12477・・・ととても大きな値になってしまいます。
内容は以下の通りです。
#include <stdio.h>
int main()
{
int a;
a=10;
printf("aの値は%dです。\n",&a);
return 0;

}
どなたか助言おねがいします。



969 :デフォルトの名無しさん:2005/05/15(日) 15:52:32
printf("aの値は%dです。\n",a);

970 :デフォルトの名無しさん:2005/05/15(日) 15:54:36
&はどこで覚えたんだ。scanfあたりか

971 :デフォルトの名無しさん:2005/05/15(日) 15:56:08
>>968
それはたぶんC言語だから
Cのスレへどうぞ

972 :デフォルトの名無しさん:2005/05/15(日) 15:59:10
C言語なら俺に聞け! Part 106
http://pc8.2ch.net/test/read.cgi/tech/1113102515/
【初心者歓迎】C/C++室 Ver.17【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1115958601/
C言語ならママに聞け
http://pc8.2ch.net/test/read.cgi/tech/1087648569/
C言語のポインタってなんですか?
http://pc8.2ch.net/test/read.cgi/tech/1056082808/
C/C++の宿題を片付けます 43代目
http://pc8.2ch.net/test/read.cgi/tech/1115794784/

973 :デフォルトの名無しさん:2005/05/15(日) 16:05:03
C++相談室 part40
http://pc8.2ch.net/test/read.cgi/tech/1113408957/
C統合・質問スレッド
http://pc8.2ch.net/test/read.cgi/tech/1068359871/
C言語の第一歩
http://pc8.2ch.net/test/read.cgi/tech/1031374980/
C言語教室
http://pc8.2ch.net/test/read.cgi/tech/1099552998/
C++は難しすぎ 難易度:2
http://pc8.2ch.net/test/read.cgi/tech/1071697977/
C言語のすばらしい入門書
http://pc8.2ch.net/test/read.cgi/tech/1114004586/
【独習C】本を読んで質問【独習C】
http://pc8.2ch.net/test/read.cgi/tech/1112760409/
Cだけど何か質問ある?
http://pc8.2ch.net/test/read.cgi/tech/1103977418/

974 :デフォルトの名無しさん:2005/05/15(日) 16:28:53
>>972-973
無言の圧力

975 :デフォルトの名無しさん:2005/05/15(日) 16:54:52
>>968

丁寧な前置きになんかワロス

976 :デフォルトの名無しさん:2005/05/15(日) 19:06:56
インモーダルで作ったダイアログボックスに描画したいのですが、どのメッセージに引っ掛ければいいのか分かりません。
OnCreateやOnShowWindowが妥当だと思ったのですが、これらでは描画されません。
OnSizeで描画されるので描画部分がおかしいということはないとおもうのですが、どうしたらいいのでしょう

977 :デフォルトの名無しさん:2005/05/15(日) 19:22:10
オーナードローってことなら↓WM_DRAWITEM
DrawItem(LPDRAWITEMSTRUCT lpdis);


978 :デフォルトの名無しさん:2005/05/15(日) 20:24:01
>968
一応釣られると。&a→aに直すだけで良いよ。
&aにすると10を格納した変数aのアドレスが表示されるから。

979 :976:2005/05/15(日) 20:48:04
レスありがとうございます。
ダイアログボックス内のピクチャビューに描画するのですが、これはオーナードローになるのでしょうか?
(コントロール自体はリソースエディタで貼り付けているのでオーナードローではないような気もするのですが・・・)

980 :デフォルトの名無しさん:2005/05/15(日) 20:52:23
ギコナビのようにウィンドウがいくつかの小窓に分かれていて、
互いのサイズを変えられるようにするにはどうしたらいいのですか?

981 :デフォルトの名無しさん:2005/05/15(日) 21:14:36
>>980
CSplitterWnd を使う

982 :デフォルトの名無しさん:2005/05/15(日) 21:17:06
>>979
ピクチャービューってSTATICコントロールのやつ?
タイプをオーナードローにすれば親から描くことになるよ
サブクラス化して自分で描かせてもいいけど

983 :976:2005/05/15(日) 21:54:21
>>982
そう、それです。
タイプでオーナードローはチェックしていません。
コードディングでグラデーションをつけているのですが、これがOnShowWindowなどでは動作しないのです。

984 :デフォルトの名無しさん:2005/05/15(日) 22:08:21
こんばんは。質問です。

キーボードをhookしてます。
hhook= SetWindowsHookEx (WH_KEYBOARD, (HOOKPROC) cck_hook, hinst, 0);

例えば、キーが押されたときに
240のキーだったら、17のキーにする、といったことが
やりたいのですが、このプログラムだと
(1)で行った変更が反映されません。
どのようにすればよいでしょうか?

LRESULT CALLBACK cck_hook (int msg, WPARAM wp, LPARAM lp)
{
if (wp == 240)
{
wp = 17;// (1)
}
return CallNextHookEx (hhook, msg, wp, lp);
}

985 :デフォルトの名無しさん:2005/05/15(日) 22:18:10
次スレ次スレ
そろそろ次スレ↓

986 :デフォルトの名無しさん:2005/05/15(日) 22:24:06
CSplitterWndを使ってますが出だしでつまづいてます。
CMainFrame::OnCreateClientで2*2の分割ウィンドウを作っていますが(ウィザードが自動生成)、
CMainFrame::OnShowWindowでサイズを変更しようとしても受付けてもらえません。
(↓のコードで設定をしてそれを読み出していますが、最小値しか反映されません)
このコードで問題ないとおもうのですが何がいけないのでしょうか?

void CMainFrame::OnShowWindow(BOOL bShow, UINT nStatus) 
{
    CFrameWnd::OnShowWindow(bShow, nStatus);
    
    CRect wndRect;
    int a, b;

    GetClientRect( &wndRect);
    m_wndSplitter.SetRowInfo( 0, 100, 100);
    m_wndSplitter.SetRowInfo( 1, 100, 25);
    m_wndSplitter.SetColumnInfo( 0, 100, 100);
    m_wndSplitter.SetColumnInfo( 1, 100, 100);
    m_wndSplitter.GetRowInfo( 0, a, b);
    m_wndSplitter.GetRowInfo( 1, a, b);
    m_wndSplitter.GetColumnInfo( 0, a, b);
    m_wndSplitter.GetColumnInfo( 1, a, b);
    m_wndSplitter.RecalcLayout();
    
}


987 :デフォルトの名無しさん:2005/05/15(日) 22:32:41
ウィザードで作ったやつでサイズを確認
任意のサイズに修正
余計な所をいじる必用はない

988 :デフォルトの名無しさん:2005/05/15(日) 23:25:26
>>984
NTならWH_KEYBOARD_LLでうまくいった気がする
DirectXには効かないが

989 :デフォルトの名無しさん:2005/05/16(月) 01:30:29
>>988
レス、ありがとうございました。
やってみます。

990 :デフォルトの名無しさん:2005/05/16(月) 01:35:08
VC++を学びたいのですが、どこから手を突けたらよろしいでしょうか?
体系的に学べて良質なWebサイトがありましたら誘ってください

991 :デフォルトの名無しさん:2005/05/16(月) 02:20:31
MSDNとかかなぁ

992 :デフォルトの名無しさん:2005/05/16(月) 05:34:27
>>983
コードディング

   コードディング

993 :デフォルトの名無しさん:2005/05/16(月) 05:49:23
>>983
サブクラス化したってこと?
それならWM_PAINTでいいよ

994 :デフォルトの名無しさん:2005/05/16(月) 10:46:21
行番号を表示しようと思ってログを見たのだが
VC++6.0じゃ表示できないのですか?
.NETでないとだめ?

995 :デフォルトの名無しさん:2005/05/16(月) 11:09:55
次スレはどこでしょうか?

996 :デフォルトの名無しさん:2005/05/16(月) 11:22:04
>>995
立てました
http://pc8.2ch.net/test/read.cgi/tech/1116209988/l50

997 :デフォルトの名無しさん:2005/05/16(月) 11:27:31
>>994
ステータス バーに何行何列と表示される。
errorやwarningが出たら、F4キーを押してエラー箇所に移動できる。
普通の人ならこれで十分だ。

998 :デフォルトの名無しさん:2005/05/16(月) 11:30:49
ダブルクリックで移動

999 :デフォルトの名無しさん:2005/05/16(月) 11:31:42
初心者がVisual C++を教えるスレ

1000 :デフォルトの名無しさん:2005/05/16(月) 11:32:24
ぬるぽ

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

240 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)