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

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

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

1 :デフォルトの名無しさん:2006/09/15(金) 14:04:24
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するとか)
・ネタや煽りは軽く流しましょう。

過去スレ、関連スレなどは>>2-5

2 :デフォルトの名無しさん:2006/09/15(金) 14:05:32
【過去スレ】
Part23 ttp://pc8.2ch.net/test/read.cgi/tech/1140711893/
Part22 ttp://pc8.2ch.net/test/read.cgi/tech/1131443284/
Part21 ttp://pc8.2ch.net/test/read.cgi/tech/1124806288/
Part20 ttp://pc8.2ch.net/test/read.cgi/tech/1120222322/
Part19 ttp://pc8.2ch.net/test/read.cgi/tech/1116209988/
Part18 ttp://pc8.2ch.net/test/read.cgi/tech/1113539594/
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 :デフォルトの名無しさん:2006/09/15(金) 14:06:07
【関連スレ】
■MFC相談室 mfc15d.dll■
http://pc8.2ch.net/test/read.cgi/tech/1131958904/
Win32API質問箱 Build40
http://pc8.2ch.net/test/read.cgi/tech/1138893959/
鬱だ氏のう DirectX (Part 16)
http://pc8.2ch.net/test/read.cgi/tech/1133007002/
C言語なら俺に聞け! Part 122
http://pc8.2ch.net/test/read.cgi/tech/1139570025/
C++相談室 part47
http://pc8.2ch.net/test/read.cgi/tech/1139931895/
C/C++の宿題を片付けます 61代目
http://pc8.2ch.net/test/read.cgi/tech/1140039002/
【初心者歓迎】C/C++室 Ver.24【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1135828083/

【関連サイト】
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
MSDN ライブラリ ※変更された
http://msdn.microsoft.com/library/ja/
Platform SDK Update ※変更された
http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
Google
http://www.google.co.jp/


4 :デフォルトの名無しさん:2006/09/15(金) 14:06:43
【このスレの前身 VisualC++相談室 過去スレ】
part 1 ttp://piza.2ch.net/tech/kako/970/970607517.html
part 2 ttp://piza.2ch.net/tech/kako/981/981630730.html
part 3 ttp://piza2.2ch.net/tech/kako/993/993186053.html
part 4 ttp://pc.2ch.net/tech/kako/1002/10021/1002165477.html
part 5 ttp://pc.2ch.net/tech/kako/1006/10068/1006834463.html
part 6 ttp://pc.2ch.net/tech/kako/1011/10116/1011615035.html
part 7 ttp://pc.2ch.net/tech/kako/1017/10178/1017843192.html
part 8 ttp://pc.2ch.net/tech/kako/1022/10224/1022499000.html
part 9 ttp://pc5.2ch.net/tech/kako/1036/10368/1036897197.html


5 :デフォルトの名無しさん:2006/09/15(金) 18:36:06


6 :デフォルトの名無しさん:2006/09/19(火) 10:42:19
>>1


7 :デフォルトの名無しさん:2006/09/23(土) 07:49:01
特定のウィンドウをキャプチャーしてBMPに保存するプログラムを作ろうと
FindWindowExでウィンドウを探し

BITMAP bmp;

HDC hDC = GetDC(hWnd);
HBITMAP hBitmap = (HBITMAP)GetCurrentObject(hDC, OBJ_BITMAP);
iRetFunc = GetObject(hBitmap, sizeof(bmp), &bmp);

のようにしているのですが、GetObjectで0が返ってきてしまいます。
GetLastError()は203を返してきます。


一体何がいけないのでしょうか??

8 :デフォルトの名無しさん:2006/09/23(土) 10:36:11
ディスプレイ デバイスコンテキストに画面のビットマップが結び付けられてるわけではない。
自分で用意したビットマップにBitBltする。
しかし、隠れている部分は描画されないので、前面に持ってくる等多少面倒。
それかWM_PRINT。

9 :デフォルトの名無しさん:2006/09/23(土) 13:53:54
>>8
ありがとうございます。

なんとかBMPに保存することができました。

隠れているウィンドウを前面に持ってくる、ということですが、
例えばFindWindowExで探したウィンドウがツールバーとかステータスバーとか
でもそのようなことは可能なのでしょうか。


SetWindowsPosあたりを使うのでしょうか。

すいませんが、もう少し教えていただけませんか?

10 :デフォルトの名無しさん:2006/09/30(土) 10:58:42
ClistCtrlでSetItemTextを使って更新しようとすると
とてもちらつくんですけど

どうすればいいんでしょうか?

11 :デフォルトの名無しさん:2006/09/30(土) 11:53:57
SetRedraw(FALSE)で表示更新を停止。
アイテム内容を更新後に、
SetRedraw()->Invalidate()で表示を更新させる。

12 :デフォルトの名無しさん:2006/09/30(土) 11:54:10
すみません、自己解決しますた

でもこんなやり方でいいんだろうか…

13 :デフォルトの名無しさん:2006/09/30(土) 12:01:05
>>11
すみません、ありがとうございます

最初そのやり方でやってみたんですけど、どうしてもちらつくんです


結局LVS_EX_DOUBLEBUFFERを設定してみますた
XP以降しか動かないみたいですけど…

14 :デフォルトの名無しさん:2006/10/05(木) 12:17:44
テンプレートクラスのメンバ関数のうち、
特殊化の影響を受けないようなメンバ関数も、
それぞれの特殊化ごとに別々のインスタンスが作られるんですか?
たとえば

template <typename T>
class A{
  T t;
public:
  void test() {
    std::cerr << "test\n";
  }
};

のようなコードでは test() は T に依存しませんが、
それでも別々にインスタンスかされるんでしょうか?

15 :デフォルトの名無しさん:2006/10/05(木) 12:37:43
VS2005で試したところ、別々にインスタンス化された。
元のコード程度ならインライン展開されるから、関係ないだろうけど。

16 :デフォルトの名無しさん:2006/10/05(木) 12:42:11
ひょっとして
自分で試してから質問しろという嫌味だろうか?

17 :デフォルトの名無しさん:2006/10/05(木) 12:56:18
>>15 THX
特殊化の影響を受けない部分だけくくりだして継承すべき?

18 :デフォルトの名無しさん:2006/10/05(木) 14:08:00
実装依存っぽい希ガス。
規格ではどうなってるんだろ。

19 :15:2006/10/05(木) 14:13:38
これ以上の話は、C++相談室の方が良いと思う。
http://pc8.2ch.net/test/read.cgi/tech/1159340181/

>>16 そんな意図はないにょろ。

20 :デフォルトの名無しさん:2006/10/05(木) 14:35:02
俺初心者だから・・・

21 :age:2006/10/14(土) 15:40:13
age

22 :デフォルトの名無しさん:2006/10/14(土) 17:35:26
C++については初心者スレと相談室があるのに
VCは初心者スレしかないのはなんで?

23 :デフォルトの名無しさん:2006/10/14(土) 20:57:17
Visual C++2005ですが
::と->の違いはなんですか?

24 :デフォルトの名無しさん:2006/10/14(土) 21:33:40
>>22
くだすれVisual C++があった。
この前1000までいったが、まだ次スレが立てられていない。
俺も試したがだめだった。もしよければ立てられるか試してみてほしい。

くだすれVisual C++(超初心者用)その3
http://pc8.2ch.net/test/read.cgi/tech/1150105712/l50

25 :デフォルトの名無しさん:2006/10/14(土) 21:35:07
>>23
C++を入門書からやり直せ。

26 :デフォルトの名無しさん:2006/10/14(土) 22:01:57
>>25
お前は人生やり直せ。do up!do up!


27 :デフォルトの名無しさん:2006/10/14(土) 22:10:43
VC++で作ってるプログラムを高速化したいんですけど、
プロファイルってどうやって使うんですか?
Visual Stdio .NET 2003です。

28 :27:2006/10/14(土) 22:12:08
studioの綴り間違えましたが、気にしないでください。

29 :デフォルトの名無しさん:2006/10/16(月) 11:25:01
Visual C++ 6.0で作成したプログラムを他のコンピュータで
実行する際にDLLファイルが必要なんですよね?

当方Visual C++ 6.0は持っているのですがDLLファイルが
見つかりません。どのフォルダに入っているのでしょうか?

30 :デフォルトの名無しさん:2006/10/16(月) 12:11:29
>>29
必要な場合もあるし、必要無い場合もある。
必要な場合、何のDLLが必要か分からないと答えられない。

31 :デフォルトの名無しさん:2006/10/16(月) 15:02:59
VCでESCを押すと終了するダイアログを作ろうとしてるんですが
これって、貼り付けてるエディットボックスやボタンを
サブクラス化しないと無理でしょうか
WM_KEYDOWNでEndDialogではうまくいきませんでした


32 :デフォルトの名無しさん:2006/10/16(月) 15:09:35
つ Dialog Box Programming Considerations@MSDN

33 :デフォルトの名無しさん:2006/10/16(月) 15:34:00
>>32
頑張って英語読んできます、thx!

34 :29:2006/10/16(月) 15:36:02
>>30
説明不足ですね。申し訳ない
MFCAppWizardを使ってアプリケーションを作成した際に「MFCの共有DLLを使用」を選んだ場合の話です
確かMFC42.DLL(MFC42d.DLLだったかも)が必要とメッセージが出るのでそれが場所が知りたかったんです

35 :デフォルトの名無しさん:2006/10/16(月) 15:51:40
>>34
つ[検索]

そうそう、デバッグビルドは公開しちゃダメよ。

36 :31:2006/10/16(月) 17:31:23
解決しました!
IDOKとIDCANCELが特別扱いされてるとは思いませんでした

ボタンにも別の名前を割り振っていたので
ボタンの名前をIODK,IDCANCELに変更したところ
目的の動作になりました

37 :29:2006/10/16(月) 17:58:26
>>35
検索してみても引っ掛からなかったんですよ・・・

いまところ公開するつもりは無いです。ただ好奇心というか勉強というか
ところでデバッグビルドって何でしょうか?

38 :デフォルトの名無しさん:2006/10/16(月) 18:03:31
ttp://www.google.co.jp/search?hl=ja&q=%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E3%83%93%E3%83%AB%E3%83%89&lr=

39 :デフォルトの名無しさん:2006/10/16(月) 18:06:49
>>37
>検索してみても引っ掛からなかったんですよ・・・
試しにVisualStudioをインストールしていない漏れのPCで検索しても、
Program Filesの下からいくつも見つかったしsystem32のディレクトリからも見つかったが。
一体どこを検索したんだ?

>ところでデバッグビルドって何でしょうか?
リリースビルドじゃない方。要はMFC42d.DLLが必要な方。

40 :29:2006/10/16(月) 18:22:16
>>38
デバックビルドとリリースビルドについてはおいおい調べていこうと思います。わざわざありがとうございます

>>39
検索の仕方が悪かったみたいです。いくつか見つかりました
MFC42.DLLがVisualStdioと関係無い所から複数見つかったんですがファイル名が同一ならば
内容は全て同じな気がするのですが、これをコピーしたら使えるのでしょうか?

41 :デフォルトの名無しさん:2006/10/16(月) 19:51:25
MFC42.DLLなら大抵の環境にデフォで入ってそうだけど

42 :デフォルトの名無しさん:2006/10/16(月) 23:06:16
>>40
まあ、バージョンが一番新しいやつ(判らなきゃ作成日でもいい)をくれてやんな

43 :デフォルトの名無しさん:2006/10/17(火) 09:57:40
ねぇねぇ、お兄ちゃん、ちょっと教えて。下のコードなんだけどさぁ、

strcpy( item.pszText, name.c_str() );

の箇所で、ループ変数の j がいきなり 1 から 46 に変わっちゃうんだぁ。
でも、name を std::string から char[128] にして

item.pszText = name;

にすると、問題なくなったんだよ。どうしてなのか教えて!お兄ちゃん!!


for ( int j = 0; j < 3; j++ )
{
  item.iSubItem = j;
  char buf[5];

  switch ( j )
  {
  case 0:  // シーケンシャル番号
    item.pszText = itoa( no, buf, 10 );
    StubTable.InsertItem( &item );
    break;
  case 1:  // 品番
    strcpy( item.pszText, name.c_str() );
    StubTable.SetItem( &item );
    break;
  以下略
  }
}

44 :デフォルトの名無しさん:2006/10/17(火) 10:20:40
>43
今自分でも試したんだけど、name を charポインタ にして

char* name;
・・・
item.pszText = name;

ならOKだけど、strcpy() を使った場合、

char* name;
・・・
strcpy( item.pszText, name );

では、charポインタでも駄目だったよ。(´・ω・`)

45 :29:2006/10/17(火) 10:44:23
>>42
分かりました

みなさん色々とありがとうございました

46 :デフォルトの名無しさん:2006/10/17(火) 11:08:24
>>43
char* p;
strcpy(p, "hoge");

これがダメな理由わかってないでしょ?

47 :デフォルトの名無しさん:2006/10/17(火) 11:14:39
CommDlgExtendedErrorってもう使われてないんでしょうか
WEBのMSDNではcannot be foundとでます

48 :デフォルトの名無しさん:2006/10/17(火) 11:17:53
>>47
見つかるけど。
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/commondialogboxlibrary/commondialogboxreference/commondialogboxfunctions/commdlgextendederror.asp

49 :デフォルトの名無しさん:2006/10/17(火) 11:21:44
ありがとうございます
日本語のほうだけ見てましたorz
次から英語もみよう俺

50 :デフォルトの名無しさん:2006/10/17(火) 11:39:29
STLのvector、mapとMFCのCArray、CList、CMapて
速度的にどちらが早いのでしょうか?

51 :デフォルトの名無しさん:2006/10/17(火) 11:42:39
>46
判ってないですぅ〜(´・ω・`)

52 :デフォルトの名無しさん:2006/10/17(火) 11:45:32
>>51
ポインタの勉強をやり直せ

53 :デフォルトの名無しさん:2006/10/17(火) 11:48:36
>>50
実装によるし、どんな操作をするかによっても変わるだろう。
自分で実験しろ。

54 :デフォルトの名無しさん:2006/10/17(火) 11:57:55
>52
判りましたよ!!こういうことね!!
http://www.cmagazine.jp/src/kinjite/c/variable.html#index16

今頃判るなんて、もう笑うしかないね。( ゚∀゚)アハハ八八ノヽノヽノヽノ \ ・・・・・










・・・・・・・・・・・・・・・・・・・・・・・・・orz

55 :デフォルトの名無しさん:2006/10/17(火) 20:34:42
MSFlexGridを使ったプログラムを作成しようとしているのですが
MSDNやネットを検索してみてもあまり引っかからなくて困っています。
どなたかMSFlexGridを詳しく紹介しているページなどご存知でしたら
教えてください。お願いします。

56 :デフォルトの名無しさん:2006/10/17(火) 23:57:22
>>55
つ[google]

57 :デフォルトの名無しさん:2006/10/18(水) 00:00:20
flexgridで検索した方がヒットするかもね。どうせサブセットだし。

58 :デフォルトの名無しさん:2006/10/18(水) 07:31:14
Visual C++2005ですけど、書籍どおり打っているのにエラーがでます?
なんででしょう??

まず、上に
#pragma once
#include <string>
#include <cstring>
namespace 米 {
      ・・・・・・・
private: System::Void Form1_Load(Sy の中に・・・・・・
char ss1[80];
strcpy(ss1,"aaaa");
cout << ss1 << '\n';

string ss2;
ss2 ="bbbb";
cout << ss2 << '\n'; }
};
}


エラー表示・・・・・・・
エラー3error C2146: 構文エラー : ';' が、識別子 'strcpy' の前に必要です。
エラー6error C2146: 構文エラー : ';' が、識別子 'ss2' の前に必要です。
エラー1error C2146: 構文エラー : ';' が、識別子 ';' の前に必要です。
エラー5error C2065: 'string' : 定義されていない識別子です。
エラー7error C2065: 'ss2' : 定義されていない識別子です。
エラー4error C2065: 'cout' : 定義されていない識別子です。
まったく、同じに書いてるつもりなのに謎です?何ででしょうか?


59 :デフォルトの名無しさん:2006/10/18(水) 07:34:00
/*実装内容をコメントで囲み*/
まずは動くところと動かないところを見つけれ

60 :デフォルトの名無しさん:2006/10/18(水) 07:34:47
2バイト文字と1バイト文字の違いに注意。

61 :デフォルトの名無しさん:2006/10/18(水) 07:35:43
Upしてるソースのとおりならセミコロンに漢字を使っているから

62 :デフォルトの名無しさん:2006/10/18(水) 12:12:39
ダイアログにコンボボックスコントロールを貼り付けています。
このコンボボックスの座標位置の取得と設定を行いたいのですが、
どのようにしたらよいでしょうか?教えてください。

開発環境 VS2005 WinXP SP2 MFC


63 :デフォルトの名無しさん:2006/10/18(水) 12:20:43
コンボボックスもウィンドウ

64 :デフォルトの名無しさん:2006/10/18(水) 13:13:18
>>63
調べたところSetWindowPos()関数で設定できそうです。
ありがとうございました。

65 :62:2006/10/18(水) 13:44:17
すみません、出来たと思っていたのですができませんでした。
SetWindowPos()の第一パラメータにコンボボックスのポインタを
指定したのですが、なぜかダイアログのサイズと表示位置が
変更されてしまいました。
申し訳ありませんが再度ご教授をお願いいたします。

66 :デフォルトの名無しさん:2006/10/18(水) 14:05:44
CWnd::SetWindowPosと::SetWindowPos

67 :62:2006/10/18(水) 14:49:31
できました。
ありがとうございました。

68 :デフォルトの名無しさん:2006/10/18(水) 18:49:14
VC6を使っています。
簡単なストップウォッチみたいなツールを自作したいのですが、使用するコントロールはどれが作りやすいでしょうか?

69 :デフォルトの名無しさん:2006/10/18(水) 19:13:08
スタティックテキスト

70 :デフォルトの名無しさん:2006/10/18(水) 21:21:00
58です。
<iostream>がインクルードしてなかったのが主のな原因みたいです。

71 :デフォルトの名無しさん:2006/10/19(木) 08:27:57
>>55
VCのスレッドでいうことでもないが、
msflexgridの使い方しらべるなら、VBで試してみるのが楽
やっぱりactivexはVBの方が格段に使いやすいからね
ちなみに、msflexgridはvs6のMSDNには載ってる

72 :デフォルトの名無しさん:2006/10/19(木) 11:46:23
VC6.0のころは、エディタで次の関数へカーソルを移動ができたのですが、
VC.Netではどうやったらできますか?

73 :デフォルトの名無しさん:2006/10/19(木) 13:27:41
VC2005EEを使っています。
数ヶ月前からあるソルーションの開発を始めましたが、
最近フォームデザイナが不安定になり、今日ついに

致命的なエラーです。(Exception from HRESULT:0x8000FFFF(E_UNEXPECTED))

というエラーが出て、フォームを表示してくれません。
但し、ビルドは出来ますし、また実行ファイルの実行も問題なく出来ます。
フォームの編集がまったく出来ない状態です。

何をどうすればよいのでしょうか?親切な方、よろしくお願いします。

74 :デフォルトの名無しさん:2006/10/19(木) 13:57:57
VC++2005のStandardを使用しています。
ウインドウを常に最前面に表示させたいです。

[新しいプロジェクト]-[CLR]-[Windowsフォームアプリケーション]
で作成したプロジェクトを使用しています。

ATL の CWindow::BringWindowToTop() を使用してみましたが
ビルド時にエラーが出てしまいます。
(C2065: 'CWindow' : 定義されていない識別子です)

CWindowクラスのヘルプを見て、stdafx.h に
#include "atlwin.h"
を追加しビルドしたところ エラーが出ます。
(C1189: #error : atlwin.h requires atlbase.h to be included first)

stdafx.h に
#include "atlbase.h"
を追加しビルドすると
(C3641: 'InterlockedExchangePointer' : /clr:pure または /clr:safe と共にコンパイルされた関数に対する呼び出し規約 '__stdcall ' が無効です)
のようなエラーが たくさん出てしまいます。

プロジェクトの作成時に[ATL]を選ばなかった場合は、対処方法はないのでしょうか?
#include が足りないのでしょうか?
よろしくお願いします。

75 :デフォルトの名無しさん:2006/10/19(木) 14:09:42
CLRなのにATL?

76 :デフォルトの名無しさん:2006/10/19(木) 15:00:33
すいません、ホントに初心者質問で申し訳ありませんが
VC++.NETで、プログラム実行時に最初に開くフォームを変更するにはどうすればいいのでしょうか
VBであればプロジェクトのプロパティの先頭ページにあったのでわかりやすかったんですが・・・・
プロパティ見てみてもフォームを指定しているらしきところが見つかりません
どうか、お願いしますorz

77 :74:2006/10/19(木) 15:17:30
>>75
どうもです。その反応だと、
最初に ATL 選ばなきゃなんでしょうか (汗
ってことは MFC も後付は ダメ?
SDK(?)を直接呼ぶ(?)感じですか・・
ジブンなりに CLR ATL MFC を見てみます。

78 :デフォルトの名無しさん:2006/10/19(木) 15:39:53
なんでATL使う必要があるんだ?
.NET frameworkでいいじゃん。

79 :デフォルトの名無しさん:2006/10/19(木) 16:04:37
>>74
プロジェクトのプロパティの構想プロパティの全般にある共通言語ランタイムサポートを、
純粋 (/clr:pure)や安全 (/clr:safe)から、ただの(/clr)にすればATLも使える。

もっとも、お前がやりたいことくらい、.NET Frameworkでもできると思う。
俺はろくに使ったことがないけど。

80 :74:2006/10/19(木) 17:45:03
>>78 >>79
どうもです。
.NET Framework でいってみます。(今のところ わかってませんが)
今までフレームワークってのは C++ とか C# とか VB とか
のエディタ&デバッグツールのことだと思ってました。(ぉぃ

さらっとググって 今 気になるのは、
.NET Framework を使用して開発することで
ランタイムが入ってない環境で 動作するのか?
というとこですが この辺りも含めて 理解してみます。

また 来ちゃうかも。ありがd

81 :デフォルトの名無しさん:2006/10/19(木) 18:20:09
CLR == .NET Frameworkのランタイム

82 :デフォルトの名無しさん:2006/10/19(木) 18:23:09
>>80
dotnetfx.exe
vcregist_x86


83 :74:2006/10/19(木) 19:42:00
ついに できました!! 常に最前面表示! ようやく一歩進みました!

this->TopMost = true;

・・・・すんごい まわり道した気が。 orz
.NET Framework を勘違いしていたことと
ウインドウを Form と認識してなくて ヘルプをスルーしてました。

>>81
挫折しそうでしたが助かりました。
=CLRなら ビルド時にランタイム必要ないようにできそうな感じですね。

それでもランタイムが必要そうなら
>>82
で解決しそうですね。
vcregist_x86 はヒットしなかったので 必要になったら再度見てみます。

>>78 >>79 >>81 >>82
サンクスです☆

84 :デフォルトの名無しさん:2006/10/19(木) 20:38:11
残念ながら、CLRプログラムは、.NET Frameworkなしで動くようにはできない。

85 :デフォルトの名無しさん:2006/10/20(金) 16:40:17
どうもフォームデザイナが不安定でかなわん。

そもそも、フォームデザイナは、フォーム用のヘッダファイルと1対1対応になっているのだろうか?
それとも、他に何かファイルを参照しているのだろうか?

また、#pragma region Windows Form Designer generated codeの部分で、
コメント行や、タブの一つ一つまで管理しているのだろうか?
(つまり、コメント行やタブなどを、削除or追加しても、影響が出るのだろうか?)
別にわざわざそんなことをするつもりは無いが、最近頻繁にフォームデザイナの
奇妙な振る舞いやエラーが目立ち始めたため、そのいじってはいけない部分を見てみると、
インデントがずれていたりしているもんで、ちょっと気になった次第。

どなたか意見頂戴。


86 :デフォルトの名無しさん:2006/10/20(金) 17:25:34
今VisualC++6.0 Win32API使用でプログラムを作っており、
自作カーソルを作ろうと思っているところです。
ですが、リソースエディタで使える色は白と黒のみで、
色のついたカーソルが作れません。白と黒ではなく、赤と黒の2色という感じでもかまわないので、
どうにかできないでしょうか?よろしくお願いします。
なお、OSはWindows XP SP2です。

87 :デフォルトの名無しさん:2006/10/20(金) 18:23:50
#pragma once

namespace こちら葛飾区亀有公園前派出所 {

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
void ryoutu(int nakagawa);

......

}
#pragma endregion

private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
ryoutu(5);

}
void ryoutu(int nakagawa){
textBox1->text = Convert::ToString(nakagawa);
}
};
}

これってなにがちがう?初歩的な質問ですみません。

88 :デフォルトの名無しさん:2006/10/20(金) 20:21:40
>>86
VC6は仕事先にしか無いので確認できないが、
メニューの「イメージ」に、他のサイズや色数を追加するコマンドがあったと思う。

>>87
日本語でおk

89 :デフォルトの名無しさん:2006/10/20(金) 21:03:12
>>88
キモイお前。
日本語でしゃべろ。

90 :デフォルトの名無しさん:2006/10/20(金) 22:15:01
>>88さん
早速の返事ありがとうございます。88さんの言うとおり、
メニューの「イメージ」の項目で、16色デバイスに変更することで出来ました(^ ^)。

91 :デフォルトの名無しさん:2006/10/20(金) 22:16:36
>>87
Linuxマシンで実行しようとしてるところ。

92 :デフォルトの名無しさん:2006/10/20(金) 23:14:29
>>91
素人にも分かりやすくお願いします。

93 :デフォルトの名無しさん:2006/10/21(土) 15:41:54
StretchBltを使ってピクチャボックスに画像を貼りたいんですが、
-> StretchBlt ( 0 , 0 , myRECT.Width() , myRECT.Height() , &myDC, 0 , 0 , 200 , 200 , SRCCOPY ) ;
こうですか?わかりません!これだとしっかりサイズに合わせて表示できません。
ちなみにピクチャボックスのサイズは200x200です><

94 :デフォルトの名無しさん:2006/10/21(土) 17:13:53
転送元と転送先が逆。

95 :デフォルトの名無しさん:2006/10/21(土) 17:51:59
>>94
あーこういうことですか?
-> StretchBlt ( 0 , 0 , ピクチャボックス横 , 縦 , &myDC, 0 , 0 , ビットマップ横 , 縦 , SRCCOPY ) ;

ビットマップの横と縦のサイズはどうやって取得するんですか( ;・∀・)?


96 :デフォルトの名無しさん:2006/10/21(土) 18:37:43
Excelで生成したファイルのデータインポートをしたいのですが
参考サイトがみつからない。。
参考サイト等ご存知でしたら教えてください><

97 :デフォルトの名無しさん:2006/10/21(土) 20:29:22
>>95
CBitmap bmp; // 転送元ビットマップ(仮)
BITMAP bm;
bmp.GetBitmap(&bm);

98 :デフォルトの名無しさん:2006/10/23(月) 00:13:44
VC++ 2005でボタンを押すと計算処理を実行しグラフを表示する
プログラムを書いたのですが、処理中にフォーム上でクリックすると
固まってしまいます。
処理中にも使用したいボタンがひとつあるのでthis->Enabled=false;
は使えません。どうすればいいでしょうか?

99 :デフォルトの名無しさん:2006/10/23(月) 00:18:19
つ スレッド

100 :デフォルトの名無しさん:2006/10/23(月) 00:18:34
>>98
> 〜固まってしまいます。
//ここまで第一話

//ここから第二話
> 処理中にも使用したいボタンがひとつあるのでthis->Enabled=false;


101 :デフォルトの名無しさん:2006/10/23(月) 19:50:32
sndPlaySound("TEST.wav",SND_ASYNC);
で音を再生しているのですが、音量の調節が出来ないのですが、どうしたら良いでしょうか?
やはり、WindouwsMediaコントロールというのを使わなければ出来ないでしょうか?
ただ単に、メディアプレーヤーのMAX音量でWAVファイルが再生されればいいだけなのですが・・・

102 :デフォルトの名無しさん:2006/10/23(月) 19:57:20
101>>
知らない

103 :デフォルトの名無しさん:2006/10/23(月) 19:58:04
>>101
知らない

104 :デフォルトの名無しさん:2006/10/23(月) 20:15:59
ベクターを使っての多次元配列を考えているんですが
要素の追加の仕方がよくわかりません。
MFCです。

std::vector< std::vector<CString> > m_list;
std::vector<CString> temp;

こんな感じで定義してm_listにtempのベクターでの配列を追加できるようにしたいのですが
いろいろ試してみても型が違うなどのエラーでうまくいきません。
すいませんがソースが手元にないためあいまいな質問かもしれまんせんがよろしくお願いいたします。

m_list.push_back(temp);
などは試してみましたがだめでした。


105 :デフォルトの名無しさん:2006/10/23(月) 20:26:59
超初心者しつもんさせてください・・・
char型にint型の変数を代入するプログラムを作りたいのですが
コンパイルで通っても機械を動かすときにエラーがでて強制終了
になったり値が入らないのでどうか教えてください
まずsvalue にint型の値が入っていて
strcpy(Signal,(const char*)svalue);

上記でchar型のSignalに値を入れて

strcpy((char*)connection[index].sendData,Signal)

上記でconnection[index].sendDataに値を入れたいのですが
svalueの値がなぜか入らないのです
char型に値を入れる別の方法や
間違ってる箇所がございましたら
ご教授ください・・・おねがいします

106 :デフォルトの名無しさん:2006/10/23(月) 20:31:14
>>105
まず、スレ違い

107 :デフォルトの名無しさん:2006/10/23(月) 20:35:08
VisualC++6.0でメイン画面のフォントサイズを変えたい
のですがどうすればいいですか?説明書読んでもわか
らないし、自分で色々やったんですが困りはてています
少しちっちゃくしたいんですが‥

108 :105:2006/10/23(月) 20:39:08
>>106
すいませんでした

109 :デフォルトの名無しさん:2006/10/23(月) 20:55:21
すごいスレw
C++が使える人来てくれませんか?
http://ex16.2ch.net/test/read.cgi/news4vip/1161592926/

110 :デフォルトの名無しさん:2006/10/23(月) 23:02:17
>>107
ツール→オプション→フォントサイズ→テキストエディタ
あたり。
VC6の詳しいことは忘れた。

111 :デフォルトの名無しさん:2006/10/23(月) 23:45:04
>>104
> m_list.push_back(temp);
これはうまくいくはず。

112 :デフォルトの名無しさん:2006/10/24(火) 00:02:02
>>110
本当に、本当にありがとうございます!
ファイル分割しないといけないくらい大きなプログラム
なのにデフォのフォントがやたら大きすぎて半泣き
でした。ありがとうございました!

113 :デフォルトの名無しさん:2006/10/24(火) 01:36:28
メインのプログラムから外部プログラム(*.exe)を起動した後、
任意の時点でメインのプログラム側から起動した外部プログラムを終了させたいのですが、
こういったことは可能でしょうか?
CreateProcess() や ShellExecute() で外部プログラムを起動することはできるのですが、
起動したプログラムを終了させる方法がわかりません。
どんな方法でも良いのでどなたかわかる方がいればお願いします。

114 :デフォルトの名無しさん:2006/10/24(火) 03:46:36
>>113
殺す手段もあるが、本来死ねと言うのに留めるべき。
#勿論その場合、子プロセスは安全に死ぬ義務があるわけだが。

115 :113:2006/10/24(火) 04:09:26
それは PostMessage() などで WM_CLOSE などの命令を投げるということでしょうか?
色々調べたところそういったやり方が一般的なようなので試してみたのですが、

#include<windows.h>
BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam){
PROCESS_INFORMATION* pi = (PROCESS_INFORMATION*)lParam;
DWORD lpdwProcessId = 0;
::GetWindowThreadProcessId(hWnd, &lpdwProcessId);
if(pi->dwProcessId == lpdwProcessId){
::PostMessage(hWnd, WM_CLOSE, 0, 0);
return FALSE;
}
return TRUE;
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR lpCmdLine,int nCmdShow){
STARTUPINFO si;
PROCESS_INFORMATION pi;
::ZeroMemory(&si, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOWNORMAL;
::CreateProcess(NULL, "notepad.exe", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
MessageBox(0,"メモ帳を終了させます。","Message",0);
EnumWindows(EnumWindowsProc, (LPARAM)&pi);
::CloseHandle(pi.hThread);
::CloseHandle(pi.hProcess);
return 0;
}

この場合は上手くいくのですが、
>MessageBox(0,"メモ帳を終了させます。","Message",0);
この部分をコメントアウトすると上手く動かなくなってしまいます。

116 :デフォルトの名無しさん:2006/10/24(火) 08:39:39
> この部分をコメントアウトすると上手く動かなくなってしまいます。
先ずは問題切り分けてね

たとえば、なんでenumwindows使うの?とか

117 :113:2006/10/24(火) 14:05:41
>>116
自らが起動したアプリケーションを終了させるには、
CreateProcess()で起動させプロセスハンドルを保持し、
TerminateProcess()で終了させることができるが、
これは強制終了なので安全な終了方法ではない、
とWebで調べていて見つけました。

では安全な終了方法とはどんなものなのか、と調べたところ、
ウィンドウハンドルを取得しWM_CLOSEを送るのが一般的だ、
と書かれていたのでその方法を試してみました。

しかし、プロセスハンドルから直接ウィンドウハンドルを取得するAPI等はないようなので、
全てのウィンドウハンドルを取得した上で、GetWindowThreadProcessId()を呼び、
取得したプロセスIDがCreateProcess()で取得したプロセスIDと一致するか調べ、
一致した場合、そのアプリケーションにWM_CLOSEを送る、ということでプログラムの終了をしました。

ここで、全てのウィンドウハンドルを取得する方法としてEnumWindows()を使っています。
この処理には下記のWebページを参照しました。
ttp://akky.cjb.net/mfc/appclose.html

それと、 MessageBox(0,"メモ帳を終了させます。","Message",0);
の部分を Sleep(10000);
としても正常に動きました。
どうやらいくらかの待ちを入れてやると正常に動くようです。

118 :95:2006/10/24(火) 14:39:44
すいません、私>>95なんですが>>97をどう使えばいいかいろいろ試してみましたがわかりません><
こんな感じに今なってるんですが
CImage img;
CBitmap *myBMP;
       img.Load(FileName);
myBMP=CBitmap::FromHandle(img);
myDC.CreateCompatibleDC(pDC);
CBitmap *oldBMP=myDC.SelectObject(myBMP);
pDC->StretchBlt(0,0,200,200,&myDC,0,0, ??? , ??? , SRCCOPY);

やっぱこのハテナのところがわかないんです(´;ω;`)
よろしくお願いします。。。

119 :デフォルトの名無しさん:2006/10/24(火) 14:57:01
>>118
CImage使えるのかよ!
だったらCImage::StretchBlt使え。
転送元矩形指定無しのを使えば全体が描画されるから。
ちなみに >>97 の件は、BITMAP構造体の中身を見れば判る。

120 :95:2006/10/24(火) 15:04:40
>>119
今MFCのダイアログベースでやってるんでゲスよ。
CImage::StretchBltをやってみたらWinアプリケーションみたいな引数を要求されたでげす。
ワケワカメだょ、くまぇりだょ。。。。

121 :デフォルトの名無しさん:2006/10/24(火) 16:39:55
>>120
つ CDC::GetSafeHdc()
つ CDC::operator HDC ()

122 :95:2006/10/24(火) 18:03:28
>>121
先生!>>118をつかってがっつりそのままコピペしたら使えるコードをポンっと教えてくださいまし><

123 :デフォルトの名無しさん:2006/10/24(火) 23:59:02
>>122
CImage img;
img.Load(FileName);
img.StretchBlt(*pDC, 0, 0, 200, 200);

124 :デフォルトの名無しさん:2006/10/25(水) 10:48:29
初歩的な質問ですが・・・
エディットコントロールで文字の中央揃えをしたいのですが
Create時に指定するのではなく動的に変更する場合
どのようにしたらいいでしょうか?

125 :デフォルトの名無しさん:2006/10/25(水) 11:10:38
ウインドウスタイルを変更する

126 :デフォルトの名無しさん:2006/10/25(水) 11:51:03
>>125
申し訳ありません、まだよく分からないので
できたら具体的なコードを記述していただけると
ありがたいです。
よろしくお願いいたします。

127 :デフォルトの名無しさん:2006/10/25(水) 11:53:53
>126
http://wisdom.sakura.ne.jp/system/msnet/msnet_win24.html

128 :デフォルトの名無しさん:2006/10/25(水) 12:12:32
>>127
出来ました。ありがとうございます。

129 :デフォルトの名無しさん:2006/10/25(水) 18:41:26
質問させてください。
#ifdef DLL_EXPORTS
#define TEST_API __declspec(dllexport)
#define CALL_RULE __stdcall
#elif DLL_IMPORTS
#define TEST_API __declspec(dllimport)
#define CALL_RULE __stdcall
#endif
class TestD {
public:
TEST_API CALL_RULE TestD();
TEST_API virtual CALL_RULE ~TestD();
};
というクラスを作ったとします。これをリリース構成でDLLにしたものを、
利用側のコードで利用(newとdelete)するとします。
このとき、デバッグモードで実行するとdeleteの所でヒープエラーが起こります。
デストラクタのvirtual指定をはずすとdeleteでヒープエラーは起きずに正常に破棄できます。
原因はおそらく次のURLにある事だと思うのですが、
ttp://homepage2.nifty.com/tulip-an/soft/scrwrpprblm.html
「デバッグ構成時はデバッグビルドDLL、リリース構成時はリリースビルドDLLとリンクする」
という以外の回避方法はありませんでしょうか。このままだと継承によるポリモーフィズムができません。


130 :デフォルトの名無しさん:2006/10/25(水) 19:16:03
COMっぽくするとか。

131 :デフォルトの名無しさん:2006/10/25(水) 20:43:24
TestDがoperator new/delete類を多重定義したらどうだろう?
もちろんHeapAlloc/Freeでメモリ確保・解放。

132 :デフォルトの名無しさん:2006/10/25(水) 22:03:22
すいませんが初歩的かもしれませんが質問です。
MFCを使っています。

ある読込用のファイルを読み込んでそのファイルの内容を
CString型の変数に格納したいのですがうまくいきません。

ファイルの読み込み方もざっと調べたところ
fopen使ったりifstream使ったりと、どれを中心に調べてよいのかよくわからない状態です。
読み込めたかな?と思っても最終的にCString型じゃなくて型が違う言われエラーになってしまいます。

どうすればスマートに読込→格納ができるでしょうか?


133 :デフォルトの名無しさん:2006/10/25(水) 22:03:51
新VisualC++.NET入門2002/20003対応を買ってきました

最初のプログラム
pDC->TextOut(0,0,"Hello, Visual C++");

がいきなり実行されません!↓こんな感じよ
error C2664: 'BOOL CDC::TextOutW(int,int,const CString &)' : 3 番目の引数を 'const char [6]' から 'const CString &' に変換できません。(新しい機能 ; ヘルプを参照)
理由: 'const char [6]' から 'const CString' へは変換できません。
class 'ATL::CStringT<BaseType,StringTraits>' のコンストラクタが 'explicit' と宣言されています。
この本破いていいですか!winXP Home .NET2005 女Dカップです☆
教えてくれた人先着にメルアド教えるわ♪

134 :132:2006/10/25(水) 22:05:26
補足になりますが
読込用のファイルには1行の文字列がずらっとならんでいます。
1万文字にはなりますが・・・


135 :デフォルトの名無しさん:2006/10/25(水) 22:06:39
とりあえずどう書いたらうまくいかなかったのか書いてくれ。

136 :デフォルトの名無しさん:2006/10/25(水) 22:09:38
TextOutWだからUnicodeにするか
TextOutAにするか

137 :デフォルトの名無しさん:2006/10/25(水) 22:16:11
>>132 CStdioFile

138 :デフォルトの名無しさん:2006/10/25(水) 22:19:07
文字列を_T()マクロで囲んでないような本は破っていい。
意図して使い分けているなら別だが。

139 :デフォルトの名無しさん:2006/10/26(木) 00:06:19
>>131
new/deleteの多重定義ってやったことないのですが、そんなに対処が難しい問題なんでしょうか・・・。

140 :デフォルトの名無しさん:2006/10/26(木) 00:27:32
new/deleteの多重定義だけで済むんだったら、それは対処の難しい問題とは言えない気がする。

141 :デフォルトの名無しさん:2006/10/26(木) 11:27:00
WinnyやShareに使われてる、
検索結果や各種情報を表示しているDataGridのようなコンポー
ネントはなんというんですか?
使いかたも教えてください

142 :デフォルトの名無しさん:2006/10/26(木) 11:40:02
どっちもVCじゃない

143 :デフォルトの名無しさん:2006/10/26(木) 11:50:07
>141
DelphiのVCLだから、VCにはない

144 :デフォルトの名無しさん:2006/10/26(木) 12:01:54
いえ、確かにWinny2とShareはVCではないんですが、
Winny1はVCで作成されたはずです。
Winny1でも同じようなコンポーネントを使用しているのですが
、Winny1配布サイトを忘れたため見本?をお見せできないんで
す。
とりあえずスクリーンショットとバージョン1を用意します。
http://a-draw.com/uploader/src/up2669.jpg.html
http://a-draw.com/uploader/src/up2670.zip.html


145 :デフォルトの名無しさん:2006/10/26(木) 12:27:58
>144
CLitsCtrl じゃないの?

146 :デフォルトの名無しさん:2006/10/26(木) 13:44:41
winny2もソースみたいなの見るとただのリストビューだな。

147 :141:2006/10/26(木) 14:34:53
皆様ありがとうございました!
CListCtrlでした
本当にありがとうございました!

148 :デフォルトの名無しさん:2006/10/26(木) 14:56:51
自分でコンポーネントだって言ってたくせに

149 :デフォルトの名無しさん:2006/10/26(木) 15:06:46
VC++2005のStandardを使用しています。
windowsフォームアプリケーションで
keybd_eventを使用する方法について教えてください。

[新規作成]-[新しいプロジェクト]-[空のプロジェクト]
の後、ソースファイル test.cpp を作成し
  #include <windows.h>
  int main(void) {
   keybd_event('A',0,0,0);
  }
を入力すると正常にビルドされるのですが、

[新規作成]-[新しいプロジェクト]-[windows フォームアプリケーション]
で作成される Form1 にボタンを配置し、そのボタンのスクリプトに
  keybd_event('A',0,0,0);
を入力、
stdafx.h に
  #include <windows.h>
を入力するとビルド時にエラーが発生します。

(error LNK2028: 未解決のトークン (0A00000E) "extern "C" void __stdcall keybd_event(unsigned char,unsigned char,unsigned long,unsigned long)"
 (?keybd_event@@$$J216YGXEEKK@Z) が関数 "private: void __clrcall test37::Form1::button1_Click(class System::Object ^,class System::EventArgs ^)"
 (?button1_Click@Form1@test37@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) で参照されました。)
(error LNK2019: 未解決の外部シンボル "extern "C"・・・)

ヘルプによると リンカツールエラーということらしいのですが
どういうエラーなのかのかと、解決方法を教えてください。(長文スマソ)


150 :デフォルトの名無しさん :2006/10/26(木) 15:20:03
const float max = 10.5; と float const max = 10.5; これはどう違うんですか?

151 :デフォルトの名無しさん:2006/10/26(木) 16:06:28
同じ

152 :デフォルトの名無しさん:2006/10/26(木) 16:18:40
>>149
ライブラリをリンク

153 :149:2006/10/26(木) 16:38:40
>>152 どうもです。おかげで googleの検索絞れました。

#pragma comment(lib, "user32.lib")
を追加したところ ビルドできました。d☆

-[空のプロジェクト]
だとライブラリのリンクが不要で
-[windows フォームアプリケーション]
だとライブラリのリンクが必要になるのは、ちょっと不思議。
逆なら直感的に納得できるのに・・・

154 :デフォルトの名無しさん:2006/10/26(木) 17:01:23
フォームアプリは.netだからapi使わないのがデフォ

155 :竹田箴言:2006/10/26(木) 17:04:41
C++で乱数の初期化の方法が分かりません。
どなたか教えてください。
また、Cで使うrandomizeはC++では
どうなるのでしょうか。

156 :デフォルトの名無しさん:2006/10/26(木) 17:22:00
randomizeというのはどこの馬の骨か知らんが、
まずはCと同じようにやってみたらどうだ?

157 :デフォルトの名無しさん:2006/10/26(木) 17:23:04
>>155
Winと関係ないからCまたはC++のスレへ

158 :デフォルトの名無しさん:2006/10/26(木) 17:49:03
二次元配列のクラスを動的に確保するために3重ポインタを使って
for(int x = 0;x < X;x++)
p[x] = new Class*[Y];
for(int x = 0;x < X;x++)
for(int y = 0;y < Y;y++)
p[x][y] = new SubClass();
としました
これを解放するために
for(int n = 0;n < X;n++)
for(int m = 0;m < Y;m++)
delete p[n][m];
for(int n = 0;n < X;n++)
delete [] p[n];
delete [] p;
としたらエラーが出ました

何が問題なのでしょうか?教えてください

159 :デフォルトの名無しさん:2006/10/26(木) 17:50:33
すいません。ここVCの板でした・・・すいません

160 :デフォルトの名無しさん:2006/10/26(木) 19:43:03
>>157
この板で聞いてるんだから、CryptAPIの事なんだよ。
初期化の必要は無い。
安心して使ってくれ。

161 :デフォルトの名無しさん:2006/10/26(木) 23:07:42
VC2005Express Editionだとnew.hインクルードしても
bad_alloc例外使えないみたいですが
どうすれば使えますか?

162 :デフォルトの名無しさん:2006/10/26(木) 23:46:44
MFCを使ってプログラムを作成しております。
XMLファイルを読み込みそのファイル内容にある行を挿入し
別ファイル名で保存するようにしたいと考えてます。

CStdioFile ofp;
CString buf;
int i;

ofp.Open("c:\\test.xml", CFile::modeCreate | CFile::modeWrite);
ifp.Open("c:\\read.xml", CFile::modeRead);
i=0;
while(TRUE){
if(ifp.ReadString(buf)==NULL){
break;
}
if(i==9){
ofp.WriteString("てすと\n");
}
ofp.WriteString(buf + "\n");
i++;
}
ifp.Close;
ofp.Close;

このような感じでこの場合は10行目に行を挿入するように組んだのですが
XMLファイルはUTF-8のコードのせいか挿入する行に全角があると文字化けがおこり
うまく書き込みができませんでした。
UTF-8と指定して書き込みする方法はないかと探しましたが
ネット上ではうまく情報がみつかりませんでした。
何かしら方法はありますでしょうか?


163 :デフォルトの名無しさん:2006/10/27(金) 00:24:29
>>161
標準C++だと、bad_allocがあるのは<new>。

164 :デフォルトの名無しさん:2006/10/27(金) 01:25:39
>>162
WideCharToMultiByteでUTF-8に変換してから書き込む

165 :デフォルトの名無しさん:2006/10/27(金) 14:40:36
VC初めて2週間の初心者です。
WinXP SP2 VS2005を使用しています。

MDIでメニューから子ウィンドウを新規で表示したいのですが、
どのように作成したらよいか分かりません。
ご教授をお願いいたします。

166 :デフォルトの名無しさん:2006/10/27(金) 14:53:13
>>165
ウィザードでMDIにしたら最初からそうなってると思うけど

167 :デフォルトの名無しさん:2006/10/27(金) 15:12:38
すみません、言葉が足りませんでした。

メニューに新しい項目を追加して、その項目がクリックされた時に
あらかじめ作成したフォームビューを表示したいのです。
どうしたらいいでしょうか?

168 :デフォルトの名無しさん:2006/10/27(金) 17:31:54
メニューの追加から教えないとダメなんだろうか?

169 :デフォルトの名無しさん:2006/10/27(金) 17:37:43
知りたいのはクリックイベント内でのフォームの表示方法です。
分かりにくくてすみませんがよろしくお願いいたします。

170 :デフォルトの名無しさん:2006/10/27(金) 17:48:42
間違えました・・・orz
フォームではなくビューです。

171 :161:2006/10/27(金) 22:53:27
>>163
さんくす!

172 :デフォルトの名無しさん:2006/10/28(土) 23:26:31
このページ(ttp://homepage3.nifty.com/ishidate/vcpp6_g10/vcpp6_g10.htm)
の内容をコピペして動かしたのですが、
「"0x5f477f58"の命令が"0x03ed0183"のメモリを参照しました。
メモリが"written"になることはできませんでした。」
と表示されてエラーになります。
ここ(ttp://grugru.mine.nu/file.cgi?v=guru_guru_4626.zip)に
ソースをうpしておきましたので、直すべき点を指摘していただけませんか?


173 :初心者:2006/10/28(土) 23:36:00
どちら様教えて、VC++プログラミングするときにひとつのボタン押して
他の.exeファイル実行できるようにどうすればいいですか??


174 :デフォルトの名無しさん:2006/10/28(土) 23:40:20
日本語で

175 :デフォルトの名無しさん:2006/10/28(土) 23:50:08
>>173
CString ss = "notepad.exe";
ShellExecute(m_hWnd,"open",ss,args,NULL,SW_SHOWNORMAL);

176 :デフォルトの名無しさん:2006/10/28(土) 23:52:27
>>175の args は引数、なくてもいい
CString args;
そもそも質問の答えになっているのかわからんが

177 :デフォルトの名無しさん:2006/10/28(土) 23:53:20
>>173
マルチは市ね

178 :デフォルトの名無しさん:2006/10/29(日) 02:29:28
>>172
突っ込み所がありすぎたので、大幅に書き換えた。
http://grugru.mine.nu/file.cgi?v=guru_guru_4636.zip
このアーカイブのファイルで上書きしてビルドしる。
差分画像の作成はCMyDoc::OnMenuHyoujiで処理している。
元のソースと比較すれば見当はつくはず。
あと、2バイト文字をファイル名に使うの禁止な。

179 :デフォルトの名無しさん:2006/10/29(日) 09:18:52
VC++2003とVC++2005とVC++6.0では、言語のバージョンが違うと聞きましたが、
どれほど違うのでしょうか?
それぞれの移行なんかは難しいものなのでしょうか?
VC++2005には問題もあり、いまだにVC++6.0を使い続けているという人も
いると聞きますが……いったいどこから入ればいいのやら……。


180 :デフォルトの名無しさん:2006/10/29(日) 09:31:04
旧製品は入手が難しいから特別な理由がないかぎり2005だけど
初心者の場合はVC++じゃなくてC#がお勧め
VCじゃなくてCやC++がやりたいならVC++2005でもいい。

181 :デフォルトの名無しさん:2006/10/29(日) 16:30:26
>>178
わざわざありがとうございました。本当に助かりました。
>あと、2バイト文字をファイル名に使うの禁止な。
今後気をつけます。

182 :デフォルトの名無しさん:2006/10/29(日) 20:47:24
>>180
特にそれほど変わるというわけでもないのですね。
ゲームをつくりたいので、ゲーム制作にC#はあまり向かないと聞いたのですが……。
あと、C#は配布するのが面倒というようにも聞きました。
VC++2005がよいのですね。

183 :デフォルトの名無しさん:2006/10/29(日) 20:57:42
> VC++2005がよいのですね。
無料だし、とりあえず触ってみると良いと思うよ。うん。

184 :デフォルトの名無しさん:2006/10/30(月) 00:38:45
ちょっと質問。
VC++ 2005 で、デフォルトで予約語が青色になりますが、
これに予約語を追加する方法はないでしょうか?
自分で typedef した、よく使う型を青色に変えたいのです。

185 :デフォルトの名無しさん:2006/10/30(月) 02:00:25
ツール→オプション
あとは適当に見てけばある

186 :デフォルトの名無しさん:2006/10/30(月) 08:30:25
>>185
うー、見つからないです・・・

おそらく、単語一覧?を記述したテキストか何かを読み込ませる必要があるため、
ファイルを選択できる、エディットボックス+"▼" の組を特に探したんですが・・・。

187 :デフォルトの名無しさん:2006/10/30(月) 11:38:14
VC++2005で開発しています。
特定のアドレスとポートに対して、ポートが開いているかどうかを
判定するプログラムを考えていますが、どのクラスのメソッドを
使えばいいでしょうか。
TcpClient.Connectだと、レスポンスがとても遅いです。
一瞬で判定できるメソッドなどないでしょうか。

188 :デフォルトの名無しさん:2006/10/30(月) 14:26:05
VC++6.0で開発をしています。
SDIであらかじめ用意されているCWinApp::OnFileOpenを使うときに、
ファイル名を取得するにはどうすればよいのでしょうか?

189 :デフォルトの名無しさん:2006/10/30(月) 14:40:09
メニュー>ファイル>開く

190 :デフォルトの名無しさん:2006/10/30(月) 16:41:02
>>184
usertype.datでググれ。

191 :デフォルトの名無しさん:2006/10/30(月) 17:01:58
質問です。
CMDIFrameWndクラス内のON_COMMANDイベントハンドラ内で
CMDIChildWndクラスのOnCreateClientイベントを呼ぶことって出来ますか?

192 :デフォルトの名無しさん:2006/10/30(月) 18:33:33
>>191
はぁ?
それは呼ばれるものだ

193 :デフォルトの名無しさん:2006/10/30(月) 22:37:50
>>190
いけました、ありがとうございました!

194 :デフォルトの名無しさん:2006/10/31(火) 11:56:26
VC++2005で開発しています。

ダイアログにユーザーIDを入力するエディットと
JSPを起動するボタンがあります。
JSP起動時にユーザーIDを引数として渡すことは
可能でしょうか?

195 :デフォルトの名無しさん:2006/10/31(火) 14:53:19
std::string のメソッド、length() と size() の違いを教えてください。

196 :デフォルトの名無しさん:2006/10/31(火) 15:27:52
The length() function returns the number of elements
in the current string, performing the same role
as the size() function.

らしいので、まったく同じということなんですね。
length() も size() も内部では '\0' をスキャンしているのでしょうか?
あと、resize() と reserve() の違いがわかりません。

197 :デフォルトの名無しさん:2006/10/31(火) 16:34:20
VC++6.0で開発をしています。
二つ以上のMIDI(a.mid,b.mid等)を同時に鳴らしたいのですが、
指定されたMIDIデバイスは既に使用されています。開放されるのを待ち、再実行してください。
とのエラーがでます。

二つ以上のMIDIファイルを同時に再生することは可能なのでしょうか?

198 :デフォルトの名無しさん:2006/10/31(火) 18:32:15
>>196
std::basic_stringが内部で保持する文字列はヌルで終わっている必要はない。
まあどうせc_str()があるし、ヌル終端させておく実装が多いとは思うけど。

reserveは予めメモリを確保しておくだけ。
resizeを呼ぶと、後のsize()の戻り値は、resizeで指定した値になる。
reserveを呼んでも、後のsize()はreserveを呼ぶ前と変わらない。

現在確保しているメモリの量はcapacityを呼ぶとわかる。
reserveを呼ぶとcapacity()の大きさは、reserveの引数に指定した値以上になることが保障される。
勿論reserveを呼んだとき以外でもcapacityは変化する可能性はある。
標準ライブラリのコンテナは何かにつけて多めにメモリを確保する傾向がある。

199 :デフォルトの名無しさん:2006/10/31(火) 20:56:57
Windows では Application Data などのディレクトリのフルパスはどのようにして取得しますか?
UNIX におけるドットファイルに相当するユーザ毎の設定ファイルの置き場を探しています。

200 :デフォルトの名無しさん:2006/10/31(火) 21:09:07
ここでパソコンの使い方質問されてもな

201 :デフォルトの名無しさん:2006/10/31(火) 21:27:42
1×3の分割ウィンドウで、全てフォームビューです。
それぞれにボタンを配置し、クリックすると各ペインの
サイズを拡縮したいのですが、どのようにしたらよいでしょうか?

202 :デフォルトの名無しさん:2006/10/31(火) 21:33:42
分割ウィンドウといってもいろいろあるし

203 :デフォルトの名無しさん:2006/10/31(火) 21:40:16
すみません、情報不足でしたね
CSplitterWndクラスののCreateViewで作成しました。

204 :デフォルトの名無しさん:2006/10/31(火) 21:45:08
>>197
> 二つ以上のMIDIファイルを同時に再生することは可能なのでしょうか?

サウンドカードによるんじゃないか?
ってプログラミングの話か?

205 :デフォルトの名無しさん:2006/10/31(火) 21:50:08
>>203
CSplitterWndのメンバ関数でできなかった?
ビューからやる方法がわからないということ?

206 :デフォルトの名無しさん:2006/10/31(火) 21:53:14
>>204
プログラミングの話です。
新VisualC++6.0のサンプルを見ながら実装してみたのですが、
二つ以上同時再生ができませんでした。
何か方法のでしょうか。

207 :デフォルトの名無しさん:2006/10/31(火) 21:57:42
はい。ビューからCSplitterWndクラスのメンバ関数を使用する
方法が分かりませんでした。

208 :デフォルトの名無しさん:2006/10/31(火) 22:39:27
GetParent

209 :デフォルトの名無しさん:2006/10/31(火) 23:06:55
AfxGetMainWnd

210 :デフォルトの名無しさん:2006/11/01(水) 08:31:35
app
 メインフレーム
  スプリッタ

こんな風になってると仮定して
appのポインタわかれば
app->メインフレーム->スプリッタ

メインフレームのポインタわかれば
メインフレーム->スプリッタ

211 :207:2006/11/01(水) 11:57:39
>>208-210

GetParentFrameで親フレームのポインタを取得することで
CSplitterWndクラスのメンバ変数にアクセスできました。
ありがとうございます。

212 :207:2006/11/01(水) 14:58:59
また新たな問題が発生したので質問させていただきます。

現在アクティブなペインを取得するため、GetActivePane関数
を使用しようとしたのですが、

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

というエラーが出てしまいました。解決方法を教えてください。

213 :207:2006/11/01(水) 15:11:52
自己解決しました。

214 :207:2006/11/01(水) 23:28:02
たびたびすみません、もうひとつ質問です。

分割バーがドラッグされたかどうかを認識するため、
CSplitterWndの派生クラスを作成し、OnLMouseDown、
OnMouseMoveイベントをマップしたのですが、なぜか
関数がよばれません、なにかほかに必要なことがあれば
教えてください。よろしくお願いいたします。

215 :デフォルトの名無しさん:2006/11/02(木) 18:48:27
何がやりたいか知らんけど
分割バーまでいじるんだったら
自分で分割ウインドウ作った方が簡単じゃないか?

216 :207:2006/11/02(木) 20:39:47
解決しました。
派生クラスのメンバ変数を作成していないのが原因でした。
お騒がせいたしました。

217 :デフォルトの名無しさん:2006/11/02(木) 21:26:27
よくそれで動いたな

218 :207:2006/11/02(木) 21:45:22
すみません間違えましたorz
>派生クラスのメンバ変数を作成していないのが原因
ではなく
派生クラスのメンバ変数を使用してスプリッタウィンドウ
を作成していないのが原因
です。

219 :デフォルトの名無しさん:2006/11/03(金) 08:34:32
VC++ プロジェクトで、Debug で指定していて Release で指定していないプリプロセッサが
あります。指定は、プロジェクトのプロパティのプリプロセッサでしています。
構成を Release にしたときに、このマクロで #ifdef している部分が「アクティブな
プリプロセッサブロック」となってしまいます。Release のときは IntelliSense で灰色に
してほしいのですが、どのようにすればよいでしょうか。

220 :219:2006/11/03(金) 08:38:16
>>219
バージョン書き忘れました。すみません。VC++2005です。

221 :デフォルトの名無しさん:2006/11/03(金) 10:41:58
【初心者歓迎】C/C++室 Ver.32【環境依存OK】 より:

引数を調べるプログラムで

int _tmain(int argc, _TCHAR* argv[])
{
int i;
printf("argcは %dです。\n",argc);

for(i=0; i < argc; i++)
printf("argv[%d]=%s\n", i, argv[i]);

printf("おしまいっ!\n");
rewind(stdin);
getchar();
return 0;
}

a.exe abc def
と引数を入れても、
Visual C++ 2005では C a d と、最初の1文字しか出ません。

277 名前: デフォルトの名無しさん [sage] 投稿日: 2006/11/03(金) 10:28:05
>>276
Unicode文字列をascii文字列として出力しようとしているから。
詳しくはVSスレなりどこへでも。

とのことですが、
どうすればいいのでしょうか


222 :デフォルトの名無しさん:2006/11/03(金) 11:01:27
文字コード変換するか、wprintf使うか、%ls。
環境依存になるが、UNICODE/非UNICODEどちらの設定でもコンパイルできるようにしたければ_tprintf。

223 :デフォルトの名無しさん:2006/11/03(金) 11:18:25
>>222
出来ました
ありがとうございます。

224 :デフォルトの名無しさん:2006/11/03(金) 13:52:39
【環境依存OK】 だからそっちでいいんだよ
誘導したやつが間抜け
あとwprintfや_tprintfとかいらんこと教えられて今後の人生が思いやられる

225 :デフォルトの名無しさん:2006/11/03(金) 16:43:53
>>224
アホか

226 :デフォルトの名無しさん:2006/11/03(金) 19:06:30
質問です。
起動する実行ファイル名を取得したいのですが
可能でしょうか?
VS2005 MFCを使用しています。

227 :デフォルトの名無しさん:2006/11/03(金) 19:17:58
エディタの配色について質問です。
STDのvectorや、size_tなどVC++内に組み込まれている関数を、
int や double のように水色で表示させる方法を教えてください。

228 :デフォルトの名無しさん:2006/11/03(金) 19:54:27
>>226
たぶんgetで始まるapiで可能

>>227
水色は知らない

229 :デフォルトの名無しさん:2006/11/03(金) 20:44:45
>>227
ツール→オプション→フォントおよび色
もしくは
usertype.dat

230 :デフォルトの名無しさん:2006/11/03(金) 21:18:50
あんまり使わないから忘れてたけど、こんなのもあった。
m_pszExeName

231 :デフォルトの名無しさん:2006/11/04(土) 01:07:48
C++で、写真の拡大とか縮小って出来ますか??


232 :デフォルトの名無しさん:2006/11/04(土) 01:36:21
現像なら写真屋さんに持って行きましょう

233 :デフォルトの名無しさん:2006/11/04(土) 10:10:03
visual C++ 2005 Express で
デバッグ時に標準ライブラリ関数にステップインする方法を教えて下さい。
ソースをインストールして、マイコードのみステップインを無効にしましたがNGでした。
もちろん、デバッグのときにはステップイン操作を行っています。
お手上げです。


234 :デフォルトの名無しさん:2006/11/04(土) 10:43:00
標準ライブラリのソースをどっかから盗んできてexpressに入れたということ?

235 :デフォルトの名無しさん:2006/11/04(土) 10:57:43
派生クラスのダウンキャストはダメとかよく書いてあるけど、じゃあこういうケースの場合どうすればいいんですか?

class CBase { ... public: virtual int vfunc() = 0; }
class A : public CBase { ... public: int kazuA; int vfunc() { return kazuA; } }
class B : public CBase { ... public: int kazuB; int vfunc() { return kazuB; } }
...
... std::vector<CBase*> objList;
... objList.push_back( static_cast<CBase*>( new A ) );
... objList.push_back( static_cast<CBase*>( new B ) );


236 :デフォルトの名無しさん:2006/11/04(土) 11:08:42
>... objList.push_back( static_cast<CBase*>( new A ) );
>... objList.push_back( static_cast<CBase*>( new B ) );
この場合static_castはイラン。

ダウンキャストは別にダメではない。
dynamic_castがあるし、オブジェクトの本当の型がわかっているのならstatic_castでもいい。

237 :デフォルトの名無しさん:2006/11/04(土) 11:27:42
>>234

>>233です。

>標準ライブラリのソースをどっかから盗んできてexpressに入れたということ?
Platform SDK についていたソースをインストールしました。
たとえば、printf()にステップインしたい場合どうすればよいのでしょうか?

盗人じゃないよ(^^;)

238 :デフォルトの名無しさん:2006/11/04(土) 11:34:19
ソース以外にデバッグバージョンのライブラリとデバッグ情報が必要
ステップインは普通にやれば勝手に中に入っていく

239 :デフォルトの名無しさん:2006/11/04(土) 15:03:23
参考書片手に初めてちょっとしたプログラムを作っている学生です。
メインウインドウの中にいくつかエディットコントロールや
ボタンを配置したいと思っているのですが、
ダイアログボックスを作ってそれをメインウインドウにはめ込む
なんていうことはできるのでしょうか?

何個もCreateWindowを書くやり方しか知らず、
他にやり方はないかなと本を読んだりググったのですが
わかりませんでした。

240 :デフォルトの名無しさん:2006/11/04(土) 15:20:02
ダイアログを作る時に親を指定すればそこに張り付く

241 :239:2006/11/04(土) 15:37:35
>>240
ダイアログを見直して、スタイルをオーバーラップにしたら
はりついてくれました。初歩的すぎてごめんなさい・・・。
ありがとうございました。

242 :デフォルトの名無しさん:2006/11/04(土) 17:56:23
WS_CHILDを指定しないと、所有関係になっちゃわないか?

243 :239:2006/11/05(日) 16:48:40
貼り付けるダイアログボックスはモードレスにしていたんですが
うっかりDialogBoxマクロで組んでしまっていました・・。
これをCreateDialogに修正したらまた見えなくなって。
今はダイアログボックスのプロパティをいじくってます。

親っていうのはメインウインドウのハンドルのことでしょうか?
242さんのWS_CHILDも含めて理解が足りてないので
もうちょっと勉強してきます。失礼しました。

244 :デフォルトの名無しさん:2006/11/05(日) 16:51:16
親って言うのは親分の事だ

245 :235:2006/11/07(火) 03:19:29
>>236
ごめん。問題としている問題を間違えました。ダウンキャストじゃなかった。


246 :デフォルトの名無しさん:2006/11/07(火) 16:10:04
実行結果をノートパッドなどに出力する方法教えてください・・・

247 :C++ 一年生:2006/11/07(火) 17:24:29
SetWindowsHookExについて質問!

キーストロークフックをグローバルフックで取りたくて
VS2005(アカデミック版)、winXP,併用ソフトはATOK、シマンテックアンチウイルス
DLLこさえて 宣言は
class __declspec(dllexport) Hook{
public: static int makeKhook();..........................}
     
定義を
int Hook::makeKhook()
{
hHOOKKEY = (HOOKPROC)KeyboardProc;
   hhk = SetWindowsHookEx(WH_KEYBOARD,// フックタイプはキーストローク
hHOOKKEY,// フック処理プロシジャへのポインタ
NULL,//フックプロシジャは同一ファイルで記述
0);// 対象スレッドはすべて
if (hhk == NULL)
{ MessageBox(hWnd,TEXT("フックかけられないじょ"),TEXT("Error"),MB_OK); return 0;}
return 1 ;}

とすると 毎回フックが設定できない。(必ずhhk == NULL で戻ってくる)

それで、ヘルプのSetWindowsHookExの記述を見ると、
「解説:hMod パラメータで NULL を指定し、dwThreadId パラメータで 0 またはほかのプロセスが作成したスレッドの識別子を指定すると、エラーが発生することがあります。」と書いてある。

これは、グローバルフックをかけたければフック設定とフック処理のDLLを分けろ
と言うことなんでしょうか。EXE側で、ほとんど同じコードでフックをかけようとする
と100%うまく行くのですが、ローカルフックにしかならない。
それとも、なにか別にオタンコな事やっていてセットできないだけ? ご教示下さい。

248 :デフォルトの名無しさん:2006/11/07(火) 17:28:20
>>246
実行結果をノートパッドなどに出力するプログラムを作る

249 :デフォルトの名無しさん:2006/11/07(火) 20:57:16
質問です。

DateTimePickerコントロールのValueを空白で表示することは
可能でしょうか?エディットに置き換える方法もあるのですが
あまりコントロールを増やしたくないので・・・
よろしくお願いします。

250 :デフォルトの名無しさん:2006/11/07(火) 22:17:41
質問です

resource.hの中のリソースIDの中身を変更したら

resource.h
このファイルはMicrosoft Developer Studio以外で修正されています。○○.rcを再ロードしますか?

とでてきてここで「はい」を選んだらダイアログ画面などが開けなくなってしまいました。

どうしたらよいでしょうか?

251 :デフォルトの名無しさん:2006/11/07(火) 22:38:29
>>250
コントロールに振られているリソースIDを間違って削除したんじゃない?

252 :デフォルトの名無しさん:2006/11/08(水) 01:08:23
スタティックライブラリ(*.lib)を作成し、配布したいと考えています。
libができたのでテストアプリにリンクしてビルドしたところ、以下の
warningがでてしまいました。libの利用者が意識することなく、
このwarningを解消したいと思っているのですが、方法をご存知の
方がいましたら教えて頂けませんか。

・warningメッセージ
d:\projects\testlib\src\hoge.h(11) : warning C4142: 型が再定義されていますが、それはコード生成上何の効果もありません。

・上記行数にあるコード
typedef unsigned long U_INT32;

ライブラリをビルドする際に宣言されたtypedefが、アプリを
ビルドするときにも有効のまま残ってしまっているのだと推測
しているのですが、どう解消したらよいのか見つけられていません。

作業環境は以下のとおりです。
Windows XP Home SP2
MS VC++ 2005 Express Edition
MS Platform SDK for Win Svr 2003 SP1

よろしくお願いいたします。

253 :デフォルトの名無しさん:2006/11/08(水) 02:14:09
VC++.NET 2005 Pro(2003theSpokeユーザに配布されたもの)環境にて質問です。

あるソリューションで、DLLと、それを動かすテストアプリケーションを作成しています。
テストアプリケーションをコンパイルする段階で以下のコンパイルエラーが出ます。

エラー1fatal error LNK1104: ファイル 'd:\MyDocument\Visual.obj' を開くことができません。DebugTool

このオブジェクトファイルが何なのか検討尽きません。
依存関係も設定済み・・・Visual...と名付けたファイルなども無しです。
プロジェクトファイルの位置はマイドキュメント直置きにしてるわけでもなく、ディレクトリ
設定を見てもMyDocumentを設定してる項目は無いと思います。

心当たりのあるかた、教えてください。お願いします。

254 :デフォルトの名無しさん:2006/11/08(水) 05:53:51
>>252
hoge.hからその宣言を外し、ライブラリの方のhoge.hをインクルードしている方に移動すればよろしかろ。

255 :デフォルトの名無しさん:2006/11/08(水) 15:30:40
http://support.microsoft.com/kb/315780
のページを参考に、GDI+を用いてグレースケールのGIFを作成するプログラムを作ってみたのですが、
一度ファイルに書き出したのち再度読み込み Bitmapインスタンスからパレットを取得してみると、
ColorPalette構造体のFlagsに設定したはずのPaletteFlagsGrayScaleが得られません。

Bitmap::Save() を用いて保存したんですけど、それでは不十分なんでしょうか

256 :デフォルトの名無しさん:2006/11/09(木) 09:05:23
VC++2005 standard /MFC です。
OnActivateメッセージが発生したときに、
マウスカーソルのあるボタンのクリック動作をさせたいです。

マウスカーソルの下のコントロールを取得する方法を教えてください。


257 :デフォルトの名無しさん:2006/11/09(木) 10:01:31
全然関係ないけどボタンにマウスオーバーしたとき
ビットマップ変えるのどうやるんだっけ?
と思ってCBitmapButton思い出したけど
これマウスオーバーじゃなくてフォーカスだな
ということはhittestでやらないとだめか

258 :デフォルトの名無しさん:2006/11/09(木) 10:09:34
ツールバーはマウスオーバー対応してるね

259 :256:2006/11/09(木) 12:19:28
レスどうもです。
「マウスオーバー」で 少し検索してみたところ、
マウスポインタの座標から割り出す・・・みたいなことが。

メニューにマウス乗せたときや、webのリンクにマウスを乗せたとき、
いろいろと使ってそうなのに・・・。

260 :デフォルトの名無しさん:2006/11/09(木) 12:31:32
>>257
ボタンのウィンドウにWM_MOUSEMOVEが飛んできたら、1回だけマウスオーバーの絵を描画
WM_MOUSELEAVEが飛んできたら絵を戻す

みたいな感じに俺はやってる

261 :デフォルトの名無しさん:2006/11/09(木) 13:10:05
http://www.geocities.jp/supermisosan/kakusanseconddimension.html
VC++proでこの計算をやってみようと思ったのですが
エラーがたくさんでて削除して他の例をしようと思ったのですが
エラーが引き継がれてしまいました。
解決策教えてください・・・。

コンパイルしています...
a001.cpp
c:\program files\microsoft visual studio 8\vc\include\sal.h(10) : error C2065: 'FILE' : 定義されていない識別子です。
c:\program files\microsoft visual studio 8\vc\include\sal.h(10) : error C2065: 'output' : 定義されていない識別子です。
c:\program files\microsoft visual studio 8\vc\include\sal.h(11) : error C3861: 'fopen': 識別子が見つかりませんでした
c:\program files\microsoft visual studio 8\vc\include\sal.h(14) : error C3861: 'printf': 識別子が見つかりませんでした
c:\program files\microsoft visual studio 8\vc\include\sal.h(15) : error C3861: 'scanf': 識別子が見つかりませんでした
c:\program files\microsoft visual studio 8\vc\include\sal.h(59) : error C3861: 'fprintf': 識別子が見つかりませんでした
c:\program files\microsoft visual studio 8\vc\include\sal.h(61) : error C3861: 'fprintf': 識別子が見つかりませんでした
c:\program files\microsoft visual studio 8\vc\include\sal.h(64) : error C3861: 'fclose': 識別子が見つかりませんでした
c:\program files\microsoft visual studio 8\vc\include\stdio.h(69) : error C2378: 'FILE' : 再定義されています。シンボルは typedef でオーバーロードできません
c:\program files\microsoft visual studio 8\vc\include\stdio.h(131) : error C2143: 構文エラー : ';' が '*' の前にありません。


262 :261:2006/11/09(木) 13:57:01
別のプログラムを書いてみたんですが
まったく同じエラーがでます。。。

263 :デフォルトの名無しさん:2006/11/09(木) 14:21:19
>>261
つ[#include <stdio.h>]

264 :デフォルトの名無しさん:2006/11/09(木) 14:34:49
>>263
ありがとうございます。。エラーはかなり激減したんですが
次はこんなエラーが出てしまいました。。。。

//三辺の長さと面積の計算
[#include <stdio.h>]
[#include <math.h>]

int main(){
float a,b = 10.7,c,h,s;
a=20.5;
c=14.5;
h=(a+b+c)/2;
s=sqrt(h*(h-a)*(h-b)*(h-c));
printf("a=%f b=%f c=%f \n",a,b,c,s);
return 0;
}

コンパイルしています...
a001.cpp
c:\program files\microsoft visual studio 8\vc\include\sal.h(10) : error C2065: 'FILE' : 定義されていない識別子です。
c:\program files\microsoft visual studio 8\vc\include\sal.h(10) : error C2065: 'output' : 定義されていない識別子です。
c:\program files\microsoft visual studio 8\vc\include\sal.h(11) : error C3861: 'fopen': 識別子が見つかりませんでした
c:\program files\microsoft visual studio 8\vc\include\sal.h(14) : error C3861: 'printf': 識別子が見つかりませんでした
c:\program files\microsoft visual studio 8\vc\include\sal.h(15) : error C3861: 'scanf': 識別子が見つかりませんでした
c:\program files\microsoft visual studio 8\vc\include\sal.h(59) : error C3861: 'fprintf': 識別子が見つかりませんでした
c:\program files\microsoft visual studio 8\vc\include\sal.h(61) : error C3861: 'fprintf': 識別子が見つかりませんでした
c:\program files\microsoft visual studio 8\vc\include\sal.h(64) : error C3861: 'fclose': 識別子が見つかりませんでした
c:\program files\microsoft visual studio 8\vc\include\stdio.h(69) : error C2378: 'FILE' : 再定義されています。シンボルは typedef でオーバーロードできません
c:\program files\microsoft visual studio 8\vc\include\stdio.h(131) : error C2143: 構文エラー : ';' が '*' の前にありません。

265 :261:2006/11/09(木) 14:35:48
すいませんエラー部分間違えました

計算.cpp
c:\documents and settings\pc-user\デスクトップ\計算\計算.cpp(2) : error C2014: プリプロセッサ ディレクティブのシャープ記号 (#) の前に、空白文字以外の文字があります。
c:\documents and settings\pc-user\デスクトップ\計算\計算.cpp(3) : error C3409: 空の属性ブロックは認められません。
c:\documents and settings\pc-user\デスクトップ\計算\計算.cpp(3) : error C2143: 構文エラー : ']' が '[' の前にありません。
c:\documents and settings\pc-user\デスクトップ\計算\計算.cpp(3) : error C2014: プリプロセッサ ディレクティブのシャープ記号 (#) の前に、空白文字以外の文字があります。
c:\documents and settings\pc-user\デスクトップ\計算\計算.cpp(5) : error C2337: 'int' : 属性が見つかりません。
c:\documents and settings\pc-user\デスクトップ\計算\計算.cpp(5) : error C2146: 構文エラー : ']' が、識別子 'main' の前に必要です。
c:\documents and settings\pc-user\デスクトップ\計算\計算.cpp(5) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
c:\documents and settings\pc-user\デスクトップ\計算\計算.cpp(6) : warning C4305: '初期化中' : 'double' から 'float' へ切り詰めます。
c:\documents and settings\pc-user\デスクトップ\計算\計算.cpp(11) : error C3861: 'sqrt': 識別子が見つかりませんでした
c:\documents and settings\pc-user\デスクトップ\計算\計算.cpp(12) : error C3861: 'printf': 識別子が見つかりませんでした
ビルドログは "file://c:\Documents and Settings\PC-USER\デスクトップ\計算\Debug\BuildLog.htm" に保存されました。
計算 - エラー 9、警告 1
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========

266 :261:2006/11/09(木) 14:49:15
] #include <stdio.h>
] #include <math.h>
int main();
{
float a,b = 10.7,c,h,s;

a=20.5;
c=14.5;
h=(a+b+c)/2;
s=sqrt(h*(h-a)*(h-b)*(h-c));
printf("a=%f b=%f c=%f \n",a,b,c,s);
return 0;
}

------ すべてのリビルド開始: プロジェクト: 計算, 構成: Debug Win32 ------
プロジェクト '計算'、構成 'Debug|Win32' の中間出力ファイルを削除しています。
コンパイルしています...
計算.cpp
c:\documents and settings\pc-user\デスクトップ\計算\計算.cpp(1) : error C2059: 構文エラー : ']'
c:\documents and settings\pc-user\デスクトップ\計算\計算.cpp(1) : error C2014: プリプロセッサ ディレクティブのシャープ記号 (#) の前に、空白文字以外の文字があります。
c:\documents and settings\pc-user\デスクトップ\計算\計算.cpp(2) : error C2014: プリプロセッサ ディレクティブのシャープ記号 (#) の前に、空白文字以外の文字があります。
c:\documents and settings\pc-user\デスクトップ\計算\計算.cpp(4) : error C2447: '{' : 対応する関数ヘッダーがありません (旧形式の仮引数リスト?)
ビルドログは "file://c:\Documents and Settings\PC-USER\デスクトップ\計算\Debug\BuildLog.htm" に保存されました。
計算 - エラー 4、警告 0
========== すべてリビルド: 0 正常終了、1 失敗、0 スキップ ==========

エラーだいぶ減らせたんですがここから
どう改善したらいいでしょうか・・・
長々とコピーすいません

267 :デフォルトの名無しさん:2006/11/09(木) 14:59:11
ひろったソースをわけもわからずビルドしたって何の意味もないよ

268 :261:2006/11/09(木) 15:03:29
>>267
いえ、VisualC++による理工学問題の解法って本で
プログラムの数値計算の例題をしているんですが・・・

269 :デフォルトの名無しさん:2006/11/09(木) 15:06:57
ダメだこりゃ

270 :261:2006/11/09(木) 15:06:59
’]’でヘッダーが使われなくなってしまうんですよね。。。
ググったんですがやはりVC++再インスコしかないんでしょうか

271 :デフォルトの名無しさん:2006/11/09(木) 15:07:03
cppファイルの(1)行目と(2)行目のプリプロセッサ ディレクティブのシャープ記号 (#) の前に、空白文字以外の文字があるのが問題じゃないかな

272 :261:2006/11/09(木) 15:10:48
>>271
削除するとヘッダーの108エラー19警告が出てしまうんですが。。。

------ すべてのリビルド開始: プロジェクト: 計算, 構成: Debug Win32 ------
プロジェクト '計算'、構成 'Debug|Win32' の中間出力ファイルを削除しています。
コンパイルしています...
計算.cpp
c:\program files\microsoft visual studio 8\vc\include\sal.h(10) : error C2065: 'FILE' : 定義されていない識別子です。
c:\program files\microsoft visual studio 8\vc\include\sal.h(10) : error C2065: 'output' : 定義されていない識別子です。
c:\program files\microsoft visual studio 8\vc\include\sal.h(11) : error C3861: 'fopen': 識別子が見つかりませんでした
c:\program files\microsoft visual studio 8\vc\include\sal.h(14) : error C3861: 'printf': 識別子が見つかりませんでした
c:\program files\microsoft visual studio 8\vc\include\sal.h(15) : error C3861: 'scanf': 識別子が見つかりませんでした
c:\program files\microsoft visual studio 8\vc\include\sal.h(59) : error C3861: 'fprintf': 識別子が見つかりませんでした
c:\program files\microsoft visual studio 8\vc\include\sal.h(61) : error C3861: 'fprintf': 識別子が見つかりませんでした
c:\program files\microsoft visual studio 8\vc\include\sal.h(64) : error C3861: 'fclose': 識別子が見つかりませんでした
c:\program files\microsoft visual studio 8\vc\include\stdio.h(69) : error C2378: 'FILE' : 再定義されています。シンボルは typedef でオーバーロードできません
c:\program files\microsoft visual studio 8\vc\include\stdio.h(131) : error C2143: 構文エラー : ';' が '*' の前にありません。
c:\program files\microsoft visual studio 8\vc\include\stdio.h(131) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
c:\program files\microsoft visual studio 8\vc\include\stdio.h(131) : error C2371: 'FILE' : 再定義されています。異なる基本型です。



273 :デフォルトの名無しさん:2006/11/09(木) 15:13:29
まったくの初心者向けの本じゃなくて
Cの基礎は知ってる前提の本じゃないかな?

274 :デフォルトの名無しさん:2006/11/09(木) 15:14:55
それぐらいの簡単なことでつまずくようだったら
もうちょっと短いサンプルで勉強したほうがいいよ。

275 :デフォルトの名無しさん:2006/11/09(木) 15:16:11
C/C++言語自体の勉強が必要。
英語が分からないのに、英語の本で理工学の勉強するようなもんだ。

276 :261:2006/11/09(木) 15:20:17
Cはいちを勉強したんですが、、、
もう少しVC++の入門書読み返して見ます。。。

277 :デフォルトの名無しさん:2006/11/09(木) 15:22:45
http://www.amazon.co.jp/gp/product/4526053597/
Visual C++による理工学問題の解法 (単行本)
佐藤 次男 (著), 佐藤 裕哉 (著)

本の題名は間違い。よく検討して買いましょう, 2004/12/27
レビュアー: カスタマー
この本、Visual C++とついていますが、流体のグラフィクス表示や
大規模数値計算の可視化を可能にする本ではありません。しかも、
VC++の説明もろくになく、簡単なグラフィクス表示、つまり計算結果
のグラフ表示しか書いてありません。題名は全くの検討違い。
プログラムの方もC++なのに全然特性を利用しておらず、後半の
内容はほとんどC言語です。内容も理工学問題とありますが、
明らかに振動を中心とした電気工学で理工問題ではありません。

278 :デフォルトの名無しさん:2006/11/09(木) 16:15:26
>>276
VC++と名の付く本じゃなくて、C/C++言語の本で勉強しなさい。

279 :デフォルトの名無しさん:2006/11/09(木) 19:57:38
>>261
>c:\program files\microsoft visual studio 8\vc\include\sal.h(10) : error C2065: 'FILE' : 定義されていない識別子です。
>c:\program files\microsoft visual studio 8\vc\include\sal.h(10) : error C2065: 'output' : 定義されていない識別子です。

c:\program files\microsoft visual studio 8\vc\include\sal.h を>>261のプログラム例で上書き
なんて馬鹿なマネはしてないよな?

280 :261:2006/11/09(木) 22:15:55
>>279
そうだったみたいです。
sal.h(なんだこれ)とstdio.hがぶっこわれたみたいです。
結局大学図書館いって再インスコしてきました・・・。
お騒がせしました。

281 :252:2006/11/10(金) 00:27:02
>>254さん
レスありがとうございます。

書いて頂いた方法で解決できると思うのですが、
別々に管理するのは大変なので、出来れば
ライブラリをビルドする時のヘッダとユーザに
配るものとを共通にしたいのです。
(質問するときにちゃんと書くべきでした。
すいません・・・)


282 :デフォルトの名無しさん:2006/11/10(金) 00:32:58
>>281
それじゃ、#ifdefマクロで宣言を括ってやって、ビルドするときはそのマクロを定義するってことで。

283 :デフォルトの名無しさん:2006/11/10(金) 01:40:36
環境はVS2003のVC++です
新規でWin32プロジェクトを作成すると自動生成コードのおかげで
起動するとフォームが表示されてしまいます
簡単なファイルチェックだけしたいのでウィンドウは表示したくないのですが
どこをコメントアウトしたらいいのか教えてください?
コンソールプロジェクトでやってもコンソールウィンドウが出てしまって・・・







284 :デフォルトの名無しさん:2006/11/10(金) 03:24:32
ヒント:Visable

285 :デフォルトの名無しさん:2006/11/10(金) 12:38:22
CWnd::SetActiveWindow()

って、どのウィンドウをアクティブにするか引数送れないのだけど
どうやって記述すればいいのですか?

static CWnd* lcwnd=GetActiveWindow( );
: //何かアクティブウインドウが変更される処理
SetActiveWindow(lcwnd); //←元のウインドウをアクティブに戻したい(コンパイルエラー)


286 :デフォルトの名無しさん:2006/11/10(金) 12:50:10
>>285
オブジェクト指向を勉強してください

287 :285:2006/11/10(金) 13:31:04
オブジェクト指向ってことで 見覚えのある記述をしてみました
lcwnd.SetActiveWindow(); //×
lcwnd::SetActiveWindow(); //×
lcwnd->SetActiveWindow(); //○
コンパイルは 通りました(サンキュー☆)が
意図する結果にはなりませんでした

オブジェクト指向ってことは
lcwnd が示すオブジェクトに SetActiveWindow が用意されていない から
意図する結果にならなかった、と考えましたが あってますかね?

とすると 不特定(別アプリ)のウインドウに対しては
CWnd::SetActiveWindow() ではないものを使うべき・・・
ん〜〜

288 :デフォルトの名無しさん:2006/11/10(金) 13:40:45
ttp://support.microsoft.com/kb/97925/ja

289 :285:2006/11/10(金) 14:06:24
>>288
おかげさまでできました! サンキュです
GetActiveWindow() ではなく
GetForegroundWindow() を使うべきだったのですね

290 :デフォルトの名無しさん:2006/11/10(金) 15:24:59
ピクチャボックスを使ってグラフを書こうとしているのですが、
計算した数値結果をそのままグラフに反映させたいと思っています。
左上を(0、0)としていますが、左下を(0、0)と変換できるような関数はないんしょうか?

環境:XPでVC++EEを使っています。

291 :デフォルトの名無しさん:2006/11/10(金) 15:37:58
座標系を

292 :デフォルトの名無しさん:2006/11/10(金) 15:52:24
>>290
ttp://msdn.microsoft.com/library/en-us/gdi/cordspac_0u43.asp

293 :デフォルトの名無しさん:2006/11/10(金) 16:14:36
MM変えるか
MM変えないで原点を移動して(x,-y)とか
ほかにもいろいろ

294 :デフォルトの名無しさん:2006/11/10(金) 16:30:24
>>292-293

ありがとうございました☆
できそうです!!

295 :261:2006/11/10(金) 18:40:04
>>273,274,275,278
おとなしくCの初歩の本を借りて読んでみたらだいぶ理解できました。
ありがとうございました。

296 :デフォルトの名無しさん:2006/11/10(金) 19:20:56
質問なのですが・・・
UNICODE文字(スペース含む)のバイト数がとれません。
なぜでしょうか?わかる方いましたらお教えください

297 :デフォルトの名無しさん:2006/11/10(金) 19:25:02
英数字じゃなくて日本語ならうまくいくかも

298 :296:2006/11/10(金) 19:54:30
>>297
それは私に対しての回答でしょうか?
もしそうでしたらすみません。回答の意図がわからないです。

質問が少々曖昧でしたのでもう一度

CString ss = _T("山田 シスコ");
int nLen = _mbsnccnt( (unsigned char*)(LPCTSTR)ss,ss.GetLength() );

とした場合、nLenにはなぜか4が返ってきます。
半角もしくは全角を含んだバイト数はどのように取得すればよいのでしょうか?


299 :デフォルトの名無しさん:2006/11/10(金) 20:02:09
4であってる

300 :296:2006/11/10(金) 20:05:50
すみません。
>半角もしくは全角を含んだバイト数
ではなく
半角もしくは全角のスペースを含んだ文字列のバイト数
です。

>4であってる
ということは、スペースが入った文字列のバイト数は取れない
ということでしょうか?
それとも他に何か方法があるのでしょうか?

301 :デフォルトの名無しさん:2006/11/10(金) 20:21:47
>300
今やったらsizeofで普通に取れたが

302 :デフォルトの名無しさん:2006/11/10(金) 20:22:43
山田 シスコ
&#x5c71;&#x7530;&#x3000;&#x30B7;&#x30B9;&#x30B3;
山田 シスコ

こういうこと。

303 :デフォルトの名無しさん:2006/11/10(金) 20:23:58
>300
通信バッファか何かとか?


304 :デフォルトの名無しさん:2006/11/10(金) 20:27:48
>300
すまない、詳細読んでなかった。


305 :デフォルトの名無しさん:2006/11/10(金) 20:35:20
ss.GetLength() * sizeof (TCHAR)ではだめか。
それとも俺は何か読み飛ばしているのか。

306 :296:2006/11/10(金) 20:36:09
ひたすら検索したところ

int ret = WideCharToMultiByte(CP_ACP,0,(LPCWSTR)lpStr,-1,NULL,0,NULL,NULL);

の戻り値で取れそうです。
本当にありがとうございました。


307 :デフォルトの名無しさん:2006/11/10(金) 20:42:39
だったらこれはどうよ。MFC 7以降限定だが。
CStringA s(lpStr);
s.GetLength();

308 :296:2006/11/10(金) 20:49:53
>>307
取れました。
情報ありがとうございます。

309 :247:2006/11/10(金) 22:02:11
>>247 は自己解決しました。
 DllMain の前で
 HINSTANCE hInstDLL; を宣言して、
 hInstDLL = hInstance; をDllMain の冒頭に追加して
 SetWindowsHookEx の第3引数を hInstDLL にしたら
 フックはかかったようです。


310 :デフォルトの名無しさん:2006/11/10(金) 22:05:48
VC++2005 で MFC ですが、初心者なのでこちらで

BEGIN_MESSAGE_MAP(CvddocumntDoc, CDocument)
ON_MESSAGE(IDC_DATA_ADD_Request, &CvddocmntDoc::OnMyAddData)
END_MESSAGE_MAP()

と定義しておいて、dllから 
SendMessage(NULL,IDC_DATA_ADD_Request ,wParam,lParam);
で、

LRESULT CvddocmntDoc::OnMyAddData(LPARAM L,WPARAM W)
{......... }
を呼び出そうとすると、コンパイルできなくなりました。
エラーメッセージは

.\vddocmntDoc.cpp(22) : error C2440: 'static_cast' : 'LRESULT (__thiscall CvddocmntDoc::* )(LPARAM,WPARAM)' から 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)' に変換できません。

どなたか初心者にお導きを〜〜〜〜〜〜〜〜〜〜〜〜

311 :デフォルトの名無しさん:2006/11/10(金) 22:12:08
引数の型がおかしいだけじゃないの?
エラーメッセージを読んで

312 :デフォルトの名無しさん:2006/11/10(金) 23:13:59
メッセージはCWndの派生クラスに送れ
CDocumentの派生クラスはWM_COMMANDだけ。

313 :デフォルトの名無しさん:2006/11/10(金) 23:44:39
そういえばunicodeだと全角も半角も2バイトだっけ
だから全角半角混在でも文字数数えるのは非常に楽

314 :デフォルトの名無しさん:2006/11/11(土) 07:17:25
Visual C++ 7.1を使っています。
エスケープシーケンスについてなのですが、
ESC [y; xH のようなのをエスケープシーケンスドライバを組み込まなくても
同じような動作させたいのですが、どのようにしたらいいでしょうか?
コマンドプロンプトで例えば
1:
   現在の数値:○○
2:
   現在の数値:○○
のようにスクロールしないで同じ位置に表示させたいのですが。

315 :デフォルトの名無しさん:2006/11/11(土) 07:56:40
\r

316 :デフォルトの名無しさん:2006/11/11(土) 08:01:00
>>314
それはスクロールしているのじゃないのか?

単に同じ場所で情報を更新したいだけなら、こんなんでどうでしょ。
printf("現在の数値:%d\r", num);

317 :デフォルトの名無しさん:2006/11/11(土) 08:07:47
>>315,316
レスありがとうございます。
1行なら\rだけでいいのですが、複数行を同じ位置に表示にさせたいのです。
例えばこんなかんじです。

時刻
    JST:08:00:00
    UST:23:00:00
時差:1秒以内です。



318 :デフォルトの名無しさん:2006/11/11(土) 08:38:19
>>317
諦めてAPI使え。

319 :デフォルトの名無しさん:2006/11/11(土) 08:45:34
http://www.c3.club.kyutech.ac.jp/~sukiyaki/index.php?%A5%DE%A5%EB%A5%D0%A5%C4%A5%B2%A1%BC%A5%E0
これみたいに
system("cls");
してから毎回書き直す

320 :デフォルトの名無しさん:2006/11/11(土) 08:50:40
>>317
一番下の行でやればいい。

321 :デフォルトの名無しさん:2006/11/11(土) 09:19:19
>>313
WindowsのWCHARはUTF-16なんで全て2バイトではない。
サロゲートペアを使って4バイトで1文字を表す文字もある。

322 :デフォルトの名無しさん:2006/11/11(土) 11:08:59
相談です。


VC++2005EEにてビルドしたらこのようなエラー構文が出ました。
対処方法を教えてください。
※○○はわしの名前

c:\documents and settings\○○\my documents\visual studio 2005\projects\hello\hello\Form1.h(98) : error C3872: '0x3000': この文字を識別子で使用することはできません
c:\documents and settings\○○\my documents\visual studio 2005\projects\hello\hello\Form1.h(98) : error C3872: '0x3000': この文字を識別子で使用することはできません
c:\documents and settings\○○\my documents\visual studio 2005\projects\hello\hello\Form1.h(98) : error C2653: '  MessageBox' : 識別子がクラス名でも名前空間名でもありません。
c:\documents and settings\○○\my documents\visual studio 2005\projects\hello\hello\Form1.h(98) : error C2664: 'void System::Windows::Forms::Form::Show(System::Windows::Forms::IWin32Window ^)' :
1 番目の引数を 'System::String ^' から 'System::Windows::Forms::IWin32Window ^' に変換できません。

323 :デフォルトの名無しさん:2006/11/11(土) 11:20:55
>>322
全角スペースを半角に置換する

324 :デフォルトの名無しさん:2006/11/11(土) 11:22:11
>>322
置換した後に首吊るのを忘れるなよ。

325 :デフォルトの名無しさん:2006/11/11(土) 11:25:34
すいません、なるべく煽らんで下さい

326 :デフォルトの名無しさん:2006/11/11(土) 11:34:42
ていうか本の手順に沿ってやってっただけなんです。
まだ序盤なんです。こんなとこで躓いたら先にいけません

327 :デフォルトの名無しさん:2006/11/11(土) 11:40:57
教えてクン養成マニュアル

明日の「教えてクン」を目指す、若き戦士達に以下の文章を捧げる。
日々精進し、パソコンヲタクどもの親切を蹂躙してやれ。

1. 努力を放棄すること
いやしくも「教えてクン」たるもの、努力をしてはならない。
過去ログを読んだり、検索してはいけない。
「英語は苦手なので、分かりません。」は、高く評価できる。
辞書片手にマニュアルやReadMeを読むなど、決してしてはならない。
他力本願と言われようと、自分で調べたり試行錯誤したりせず、他人の努力の結果を搾取するのが、正しい「教えてクン」である。
また、「もう何が悪いのかサッパリ分かりません。」と言ってふてくされるのも有効である。
「サッパリ」という単語が「やる気の無さ」を効果的に表現している。
「原因を特定するには、何をすべきでしょうか?」と訊いてしまうと自己の積極性が現れてしまうので、「教えてクン」失格である。

2. 情報を開示しないこと
使用OSや、機器構成などの必須の情報を知らせてはならない。
マザーボード名やBIOSのバージョンも同様だ。
具体的なアプリ名やバージョンも隠蔽すべきだ。
「DVD再生ソフト」のように曖昧に表記しておけばよい。
反対に「前から欲しいと思っていた○○」とか「安売りされていた ○○」等の「どうでもいい情報」は、どんどん書いてやれ。
トラブルの場合は、状況を正確に記述してはならない。
「なんだかうまく動きません。」とか「エラーが出ます。」等と具体的なことは何も書かないことが重要である。
また、自分の試してみた事も具体的に書いてはいけない。
考えられる組合せのマトリックスを作成し、状況を整理するなどもってのほかである。
最悪の場合、それだけで問題が解決してしまうこともあるのだ。
「いろいろやってみたけど、動きません。」が理想的だ。



328 :デフォルトの名無しさん:2006/11/11(土) 11:42:16
3. 答える人間のことを考えないこと
「教えてクン」は、孤高の戦士である。
相手のことを考えるようでは教えてクン失格というものだ。
以下のような行動が、望ましい。
初心者であることを高らかに宣言し、初心者向けの丁寧で分かりやすい説明を強要する。
専門用語の使用を禁じておくとさらに効果的である。
簡潔な説明を禁じられたヲタクどもは、同じ内容を説明するのに、何倍もの労力を強いられる。
自分は努力せず、相手には多大な努力をさせることこそが「教えてクン」の真骨頂である。マルチポストも有効である。
そのBBSを信用していないことを明確に示せる。
「どうせ、お前らじゃ分からんだろう。」という意志表示として高く評価できる。
もちろんマルチポストの非礼をあらかじめ詫びてはならない。
それでは、単なる「急いでいる人」になってしまう。
それは、教えてクンではない。質問のタイトルは、「教えてください。」で良い。
タイトルを読んだだけでは「何に関する質問」か全く分からない。
そういう努力は、答える人間にさせれば良いのだ。
とにかく、答える人間が答えやすいように気を使って質問してはならない。
傲慢で不遜な態度が必須である。「聞きたいことがあります。」など、プロの仕事であろう。

最後に、言うまでも無いことだとは思うが、答えてくれた人達に礼の言葉を返すなど言語道断である。
せっかく「教えてクン」を貫いてきたのに、最後にお礼を言っているようでは、画竜点睛を欠いていると言わざるを得ない。
質問だけしておいて、後はシカトが基本である。
上級テクニックとして、「そんなことはもう試しました。」とか、「そこまで初心者じゃありません。」などと言って、回答者の神経を逆なでしておけば完璧である。

以上のことを踏まえて質問すれば、君も立派な「教えてクン」である。
ビバ!教えてクン! 教えてクンに栄光あれ!!


329 :デフォルトの名無しさん:2006/11/11(土) 12:34:56
>>322
http://pc8.2ch.net/test/read.cgi/tech/1162215248/384

330 :デフォルトの名無しさん:2006/11/11(土) 16:08:21
重い処理をするとカーソルアイコンが砂時計になって、ウィンドウ操作が出来ない状態になりますが、
それを防ぐ手立てはありますか。

331 :デフォルトの名無しさん:2006/11/11(土) 16:20:43
その重い処理を別に作ったスレでやれば良い。

332 :330:2006/11/11(土) 16:59:16
マルチスレッドってことですか。
ありがとうございます。

333 :デフォルトの名無しさん:2006/11/13(月) 14:01:26
この質問ここでいいのかな?

VC++(SDK)で、フォーム(でOK?)上の子ウィンドウ(コントロール)の
フォントって全て共通に出来る?

つまりは、
「フォントを与えると全部の子ウィンドウのフォントを一括して変えられるAPIがある」のか
「1つ1つ変えるしかない」のかって言うことなんだけど・・・

誤字、用語間違いあったら許して。

334 :デフォルトの名無しさん:2006/11/13(月) 16:17:21
共通のフォント使えば良いじゃん。

335 :デフォルトの名無しさん:2006/11/13(月) 19:58:46
教えてください
インストールしたのに使えません。
バクっているんでしょうか。
環境はウィンドウズです。

336 :デフォルトの名無しさん:2006/11/13(月) 20:27:40
その通りです。
どうやらバクっているようですね。
で、何を教えれば良いのですかな?

337 :デフォルトの名無しさん:2006/11/13(月) 20:30:55
質問に質問で返すな ぼけ

338 :デフォルトの名無しさん:2006/11/13(月) 22:12:55
相手してくれるのをwktkしていたのが良く判る時間差ですね。

339 :デフォルトの名無しさん:2006/11/14(火) 15:44:33
あるボタンを押したときに、PreTranslateMessageにVK_SPACEが押されたような
メッセージを送りたいのですが、どうやればよいのでしょうか?

340 :デフォルトの名無しさん:2006/11/14(火) 15:53:39
最近、VC6からVC++EEに乗り換えたんですが、参考書がないんですけど、
.NETに似てる感じがするんですけど、
.NETの参考書でも勉強するには十分なんでしょうか?

341 :デフォルトの名無しさん:2006/11/14(火) 16:12:18
言語を勉強するのか、.NET Frameworkを勉強するのか、IDEの操作方法を勉強するのか

342 :デフォルトの名無しさん:2006/11/14(火) 16:21:42
>>341
Frameworkです。

343 :デフォルトの名無しさん:2006/11/14(火) 16:41:14
GetSafeHwnd()で得た値をCStringかchar型の変数に保存したいのですが、
どうすればよいのでしょうか?

344 :デフォルトの名無しさん:2006/11/14(火) 16:53:11
CString::Format、sprintf、、、

345 :デフォルトの名無しさん:2006/11/14(火) 16:59:58
>>342
現状C++で.NETな本はほとんどないから、他の言語を使った.NETの本を使い、
MSDNライブラリやWebでC++/CLIの構文の知識を補完するしかないと思う。

346 :デフォルトの名無しさん:2006/11/14(火) 17:36:11
..345
ありがとうございました☆
そうします

347 :デフォルトの名無しさん:2006/11/14(火) 22:16:19
VC++.netで開発をしています。

CString filename = L"abcdefg";
const char *cast;
cast = (LPCSTR)(LPCTSTR)filename;

とキャストをするとcastには最初の"a"しか入りません。
どうやってキャストをすればよいのでしょうか。

348 :デフォルトの名無しさん:2006/11/14(火) 22:39:38
ポインタだからキャストしても中身は変わらんよ

349 :デフォルトの名無しさん:2006/11/14(火) 22:56:18
>>347
Unicodeビルドだろうからchar*じゃ、まずいんじゃね?

const _TCHAR *cast;
cast = (LPCTSTR)filename;



350 :デフォルトの名無しさん:2006/11/14(火) 23:16:54
どうしても char* が欲しいなら、wcstombc でマルチバイト文字列に変換

351 :デフォルトの名無しさん:2006/11/14(火) 23:21:04
CStringAにキャストもありだな。

352 :デフォルトの名無しさん:2006/11/15(水) 21:17:41
質問です。

ビューの中にあるコントロールの座標をTwips単位で
取得する方法を教えてください。


353 :デフォルトの名無しさん:2006/11/15(水) 21:22:04
ぐぐったら1発でみつかった

354 :デフォルトの名無しさん:2006/11/15(水) 23:10:04
Form1とForm2を作って
Form1_Loadの中に

Form2 *f2p = new Form2();
f2p->Show();
f2p->Activate();

って書いて起動時にForm2を表示してアクティブウィンドウにしたいんだけど、どうしてもForm1がアクティブになってしまうんだ。
Form1にボタン貼り付けて同じ内容コピペするとForm2がアクティブになるんだけど・・
何ででしょうか?
他にもForm1_Loadの中に
this->Hide();や
this->Visible = false;
って書いて非表示になるかどうかやってみたけどならないです。
初回起動時の処理をしたいんだけど上手くいきません何方かご教授をお願いします。

環境:VC++ .NET 2003

355 :354:2006/11/15(水) 23:51:59
ごめんなさい
調べたら原因が分かりました。
順番としてLoadが実行された後にFormが表示されてるんですね。
参ったな・・・

356 :デフォルトの名無しさん:2006/11/16(木) 02:24:27
>>354
C++/CLIのWindows.Formの話をしてるならshownイベントが使える。

357 :デフォルトの名無しさん:2006/11/16(木) 11:49:40
SDKでcreatewindowで作ったウィンドウの上に、
createwindowでチェックボックスを作ったのですが
Tabキーでフォーカスの移動が出来ません。
WS_TABSTOPも入れてあります。

ダイアログならタブオーダーで設定できるみたいですが・・・

もし「これを忘れるとTabキーでフォーカスの移動できんよ」という注意点が在ったら
教えて下さい。

358 :デフォルトの名無しさん:2006/11/16(木) 12:06:13
つ IsDialogMessage

359 :デフォルトの名無しさん:2006/11/16(木) 12:07:00
いい加減メル欄直せ>俺 orz

360 :1/2:2006/11/16(木) 22:51:23
Windows2000、VC++7で開発してます
MFC等使わず、CWindow・CDialogなどWin32APIのラッパクラスを自作してやってるのですが

class CMainWnd : public CWindow・・・・
class CConfigDlg : public CDialog・・・・
という二つのクラスを作りました
このときCMainWndは、メンバとしてCConfigDlgの実体m_confDlgを持ちます
CDialogにはDoModal(仮想関数)という、内部でDialogBoxParamを呼び出してモーダルダイアログを作成するメソッドがあり
CConfigDlgにはDoConfigという、いくつか引数を取り必要なデータを確保した後にDoModalを呼び出すメソッドがあります
CMainWndでは、あるメニューを選択された時にm_confDlg.DoConfig(・・・)を実行します

もう1週間くらいチマチマと開発しているのですが
ずっと問題無く動いていたのですが、昨日から突然DoConfig内のDoModal呼び出し時に例外0xC0000005を吐くようになりました
他の部分はそれなりに書き換えたりしましたが、DoConfig・DoModal近辺は一切手を加えてないのでエラーの心当たりも無く
どうしたものかほとほと困り果ててしまいました


361 :2/2:2006/11/16(木) 22:53:17
どうしたものかほとほと困り果ててしまいました

362 :2/2:2006/11/16(木) 22:57:33
以下がエラーのメッセージです
  test.exe の 0x0043ffe6 でハンドルされていない例外が発生しました
  : 0xC0000005: 場所 0x0000006c を読み込み中にアクセス違反が発生しました。

DoConfigのコードは以下のようになっています
  int CConfigDlg::DoConfig(CWindow* pParent, LPCTSTR tID, CConfigData& kcData) {
    m_TemplateID = tID;
    SetData(kcData);
    m_blConfig = true;
    return DoModal(pParent);
  }

DoConfig内を混合モードで追ってみたところ、以下のようなアセンブラコードで
    return DoModal(pParent);
  0043FFD8 mov esi,esp
  0043FFDA mov eax,dword ptr [pParent]
  0043FFDD push eax 
  0043FFDE mov ecx,dword ptr [this]
  0043FFE1 mov edx,dword ptr [ecx]
  0043FFE3 mov ecx,dword ptr [this]
  0043FFE6 call dword ptr [edx+6Ch]
  0043FFE9 cmp esi,esp
  0043FFEB call ILT+2245(__RTC_CheckEsp) (4368CAh)

0043FFE1のMOVで、edxには0x00000000が代入されて居ましたので、これが直接の原因ではないかと思ってます

関数テーブルが壊れてるとか、そういう問題なのでしょうか?
それとも別のものなのか、良く分かりません

どなたか、心当たりのある方はいらっしゃらないでしょうか

363 :デフォルトの名無しさん:2006/11/16(木) 23:00:34
どこか全然別の関数でCConfigDlgのメンバを壊している悪寒。

364 :デフォルトの名無しさん:2006/11/16(木) 23:03:47
>>363
さっそくのレスありがとうございます

まったく別の場所で破壊ですか
それだと、全体的に洗いなおした方がよさそうですね・・・
少し、コードと格闘して見ます

365 :デフォルトの名無しさん:2006/11/16(木) 23:07:29
エラーが出始めた頃に新たに付け加えた関数とか、内容をいじくった
関数がわかればいいのだが。

そのためにも、完成するまでにセーブした日付入りソースは必須。
つまりエラーが出ないのはどこまでなのかさかのぼって比較して検討
できる。

366 :デフォルトの名無しさん:2006/11/16(木) 23:07:47
変なエラーに悩まされずに済むし
MFC使っててよかったなと思う

367 :デフォルトの名無しさん:2006/11/16(木) 23:10:02
>>365
なるほど、確かにそうですね
今度から要所要所ででもバックアップ作成することにします

368 :デフォルトの名無しさん:2006/11/16(木) 23:12:28
csvが便利だよ

369 :デフォルトの名無しさん:2006/11/16(木) 23:13:22
cvsだったorz
とにかくこれは自分には欠かせない

370 :デフォルトの名無しさん:2006/11/17(金) 02:25:11
エディットボックスが3つあって、
特定の一つの値のみをUpdateData(FALSE)のような形で更新したいのですが、
どのような方法をとればよいのでしょうか。

371 :362:2006/11/17(金) 06:42:57
解決しました

CMainWndのメンバに、それぞれBOOL*32、BYTE*256の配列があり、コンストラクタでZeroMemoryしてたのですが
ヘッダを確認してたら、
BOOL m_bl[256];
BYTE m_cb[32];
と要素数が逆になっていたので、これを直したところエラーも消えました
ここで、CConfigDlgのメンバまでZeroMemoryされてたんですね・・・

皆さん、ご助言ありがとうございました

372 :デフォルトの名無しさん:2006/11/17(金) 07:37:49
無駄にZeroMemory()するなという教訓だな。

373 :デフォルトの名無しさん:2006/11/17(金) 08:35:17


374 :デフォルトの名無しさん:2006/11/17(金) 11:39:04
>>370
・DoDataExchangeに細工をする
・DDXを使わず、直接エディットボックスを更新する

375 :デフォルトの名無しさん:2006/11/17(金) 13:15:09
>>374
ありがとうございます。解決しました。

376 :デフォルトの名無しさん:2006/11/17(金) 13:58:38
ソースをビルドしようとしてもメニューにビルドが表示されていなくてできません。
odbc32.libというファイルをライブラリのフォルダに入れてみましたがそれでも改善されません。
他に何が必要か分かる方いたら教えてください。

377 :デフォルトの名無しさん:2006/11/17(金) 16:31:14
プロジェクトを作っていない悪寒。

378 :デフォルトの名無しさん:2006/11/17(金) 16:39:35
質問です

―――――――――――――――――――――――-|
| | No | 社員名 | 社員コード | 住所 | 電話番号|
|――――――――――――――――――――――― |
| | 01 | あああ | xxxxxxxx | xxxx | xxxx-xxx |
|+ | 02 | あいう | xxxxxxxx | xxxx | xxxx-xxx |
||-| | | | xxxx | xxxx-xxx |
||-| | | | xxxx | xxxx-xxx |
||-| | | | xxxx | xxxx-xxx |
| | 03 | あおう | xxxxxxxx | xxxx | xxxx-xxx |
| | 04 | かかか| xxxxxxxx | xxxx | xxxx-xxx |
| | 05 | ききき | xxxxxxxx | xxxx | xxxx-xxx |
|―――――――――――――――――――――――

ちょっと見づらいかもしれませんが、このような表示形式のグリッド(VSFlexGrid)があります
列のヘッダにてソート(ソート対象はNo、ソートは降順)をかけたときに下記のような表示にソート
されたいのですが、どのようにしたらよろしいでしょうか?ご教授をお願いします。

ソート後
―――――――――――――――――――――――-|
| | No | 社員名 | 社員コード | 住所 | 電話番号|
|――――――――――――――――――――――― |
| | 05 | ききき | xxxxxxxx | xxxx | xxxx-xxx |
| | 04 | かかか| xxxxxxxx | xxxx | xxxx-xxx |
| | 03 | あおう | xxxxxxxx | xxxx | xxxx-xxx |
|+ | 02 | あいう | xxxxxxxx | xxxx | xxxx-xxx |
||-| | | | xxxx | xxxx-xxx |
||-| | | | xxxx | xxxx-xxx |
||-| | | | xxxx | xxxx-xxx |
| | 01 | あああ | xxxxxxxx | xxxx | xxxx-xxx |
|―――――――――――――――――――――――

379 :デフォルトの名無しさん:2006/11/17(金) 16:56:52
それ作って売ってるやつに聞けよ
ここサポートセンターじゃないよ

380 :デフォルトの名無しさん:2006/11/17(金) 18:33:53
質問です。

CString ss = L"あああテスト1いいいテスト1ううう";
で、最初の「テスト1」のみ削除する場合、どのように
すればよいのでしょうか?

381 :デフォルトの名無しさん:2006/11/17(金) 19:17:24
質問になってない

382 :デフォルトの名無しさん:2006/11/17(金) 19:23:02
>>380
最初の「テ」の所にカーソルを移動させて
Deleteキーを4回押下する。


383 :380:2006/11/17(金) 19:35:24
すみません。再度説明いたします。


CString s1 = L"テスト1";
CString s2 = L"あああテスト1いいいテスト1ううう";
//消去処理

結果
s2には"あああいいいテスト1ううう";
となるようにしたい

s2にセットされている文字列から最初に見つかったs1の
文字列を消したいのですがどのようにしたらよいのでしょうか?

384 :デフォルトの名無しさん:2006/11/17(金) 19:49:14
いろいろ方法あるけどCStringのメンバ関数使えばいいんじゃね?

385 :デフォルトの名無しさん:2006/11/17(金) 19:59:26
CString::Remove
これのソースまねたらできそうな気がするが

386 :380:2006/11/17(金) 20:00:44
>>384, 385
レスありがとうございます。
確認してみます。

387 :376:2006/11/17(金) 20:28:20
>>377
ありがとうございます、その通りでした。
borlandのようにソースをそのままコンパイルとはできないのですね。
プロジェクトを作ったら無事にexeファイルを作れました。

388 :デフォルトの名無しさん:2006/11/17(金) 21:06:51
>>387
スタートメニューのVisual C++のコマンドプロンプトを起動して、
そこでコンパイル・リンクする。

389 :デフォルトの名無しさん:2006/11/17(金) 21:11:40
Modern C++ Design のオブジェクト・ファクトリの項を見て、以下のソースを試して見ました。まずヘッダです。

#include <map>

template< class AbstractProduct, typename IdentifierType,
  typename ProductCreator = AbstractProduct* (*)() >
class Factory
{
  typedef std::map<IdentifierType, AbstractProduct> AssocMap;
  AssocMap associations_;
public:
  bool Register( const IdentifierType& Id, ProductCreator creator ) {
    return associations_.insert(
      AssocMap::value_type( id, creator ) ).second;
  }
  bool Unregister( const IdentifierType& id ) {
    return associations_.erase( id ) == 1;
  }
  AbstractProduct* createObject( const IdentifierType& Id ) {
    typename AssocMap::const_Ierator i =
      associations_.find( id );
    if ( i != associations_.end() )
    {
      return ( i->second )();
    }
  }
};

class Shape {};
class Line : public Shape {};
class Circle : public Shape {};
class Porygon : public Shape {};

390 :389:2006/11/17(金) 21:12:56
次にソースです。

#include "Factory.h"

Line* __cdecl createLine()
{
  return new Line;
}

Circle* createCircle()
{
  return new Circle;
}

Porygon* createPorygon()
{
  return new Porygon;
}

void main()
{
    Factory< Shape, const char* > factory;
    factory.Register( "Line", createLine );
    factory.Register( "Circle", createCircle );
    factory.Register( "Porygon", createPorygon );

    //・・・・以下略
}



391 :389:2006/11/17(金) 21:15:21
で、ビルドすると、

error C2664: 'Register' : 2 番目の引数を 'class Line *(void)' から 'class Shape *(__cdecl *)(void)' に変換できません。
スコープ内でこの名前を持つ関数でターゲット型に一致するものはありません。

と、C2664 のエラーがでちゃうんだけどどうして?

392 :389:2006/11/17(金) 21:22:47
書いてて気が付いた。

Line* createLine() { return new Line; }

は当然駄目で、戻り値を上位型の

Shape* createLine() { return new Line; }

にしなきゃ通る訳ないよな・・・・orz

393 :デフォルトの名無しさん:2006/11/17(金) 21:51:47
>>380
よく見たらCString::Removeは1文字削除だった

たぶんこれ使えばできるだろう
CString::Find
CString::Delete

394 :デフォルトの名無しさん:2006/11/17(金) 22:28:41
すいません。もう一度質問です。先ほども書いたように以下のコードをModern C++ Design のオブジェクト・ファクトリを参考に書きました。

#include <map>

template
< class AbstractProduct, typename IdentifierType,
 typename ProductCreator = AbstractProduct* (*)()
>
class Factory {
public:
  bool Register( const IdentifierType& id, ProductCreator creator ) {
    return associations_.insert( AssocMap::value_type( id, creator ) ).second;
  }
  bool Unregister( const IdentifierType& id ) {
    return associations_.erase( id ) == 1;
  }
  AbstractProduct* createObject( const IdentifierType& Id ) {
    typename AssocMap::const_Ierator i = associations_.find( id );
    if ( i != associations_.end() )
      return ( i->second )();
  }
private:
  typedef std::map<IdentifierType, ProductCreator> AssocMap;
  AssocMap associations_;
};

class Shape {};
class Line : public Shape {};

395 :389:2006/11/17(金) 22:33:32
先ほどのはヘッダ、こちらはソースです。

#include "Factory.h"

Shape* createLine()
{
  return new Line;
}

void main()
{
  Factory< Shape, const char* > factory;
  factory.Register( "Line", createLine );
  Shape* line = factory.createObject( "Line" );
  delete line;
}

ビルドすると、訳のわからん警告と、エラーがでまくります。
Loki は VC++ ではビルドできないって話を聞いた覚えがありますが、やっぱり駄目?

396 :デフォルトの名無しさん:2006/11/17(金) 22:40:31
>訳のわからん警告と、エラー

具体的に書けよ
・・・


397 :デフォルトの名無しさん:2006/11/17(金) 22:41:43
エラーをコピペして晒せ。それが出来ないなら去れ。

398 :デフォルトの名無しさん:2006/11/17(金) 22:42:45
つうか長文コピペされると迷惑

399 :デフォルトの名無しさん:2006/11/17(金) 22:44:01
長ったらしいソースを見せたい場合は固めてロダに上げるのが普通

400 :デフォルトの名無しさん:2006/11/17(金) 23:03:31
>397
いいの、かなりうざいよwww
Factory.cpp
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\xtree(149) : warning C4786: '?$reverse_bidirectional_iterator@Viterator
@?$_Tree@PBDU?$pair@QBDP6APAVShape@@XZ@std@@U_Kfn@?$map@PBDP6APAVShape@@XZU?$less@PBD@std@@V?$allocator@P6APAVShape@@XZ@3@@2
@U?$less@PBD@2@V?$allocator@P6APAVShape@@XZ@2@@std@@U?$pair@QBDP6APAVShape@@XZ@3@AAU43@PAU43@H' : 識別子が '255' 文字に切り捨てられました (browser 情報内)。
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\map(46) : コンパイルされたクラスのテンプレートのインスタンス化
'std::_Tree<char const *,struct std::pair<char const * const,class Shape * (__cdecl*)(void)>,struct std::map<char const *,class Shape * (__cde
cl*)(void),struct std::less<char const *>,class std::allocator<class Shape * (__cdecl*)(void)> >::_Kfn,struct std::less<char const *>,class std::allocator
<class Shape * (__cdecl*)(void)> >' の参照を確認してください
D:\TEMP\Factory\Factory.cpp(30) : コンパイルされたクラスのテンプレートのインスタンス化
'std::map<char const *,class Shape * (__cdecl*)(void),struct std::less<char const *>,class std::allocator<class Shape * (__cdecl*)(void)> >' の参照を確認してください
D:\TEMP\Factory\Factory.cpp(43) : コンパイルされたクラスのテンプレートのインスタンス化 'Factory<class Shape,char const *,class Shape * (__cdecl*)(void)>' の参照を確認してください
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\xtree(152) : warning C4786:
'?$reverse_bidirectional_iterator@Vconst_iterator@?$_Tree@PBDU?$pair@QBDP6APAVShape@@XZ@std@@U_Kfn@?$map@PBDP6APAVShape@@XZU?$less@PBD@std@@V?$allocator@P6APAVShape@@X
Z@3@@2@U?$less@PBD@2@V?$allocator@P6APAVShape@@XZ@2@@std@@U?$pa
ir@QBDP6APAVShape@@XZ@3@ABU43@PBU43@H' : 識別子が '255' 文字に切り捨てられました (browser 情報内)。
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\map(46) :

以下、略。

401 :389:2006/11/17(金) 23:05:24
ちなみに以下の1行をコメントアウトすると、警告は大量にでるけど、ビルドはできる。

Shape* line = factory.createObject( "Line" );

そうそういい忘れた。環境はVC++6です。

402 :デフォルトの名無しさん:2006/11/17(金) 23:06:50
#pragma warning (disable: 4786)

403 :デフォルトの名無しさん:2006/11/17(金) 23:11:27
>402 THX

D:\TEMP\Factory\Factory.h(24) : error C2039: 'const_Ierator' : 'map<char const *,class Shape * (__cdecl*)(void),struct std::less<char const *>,class std::allocator<class Shape * (__cdecl*)(void)> >' のメンバではありません。

D:\TEMP\Factory\Factory.h(24) : error C2146: 構文エラー : ';' が、識別子 'i' の前に必要です。

D:\TEMP\Factory\Factory.h(24) : error C2501: 'const_Ierator' : 識別名を宣言するのに、型が指定されていません。

D:\TEMP\Factory\Factory.h(24) : error C2065: 'i' : 定義されていない識別子です。

D:\TEMP\Factory\Factory.h(25) : error C2065: 'id' : 定義されていない識別子です。

D:\TEMP\Factory\Factory.h(26) : error C2677: 二項演算子 '!=' : 型
'class std::_Tree<char const *,struct std::pair<char const * const,class Shape * (__cdecl*)(void)>,struct std::map<char const *,class Shape * (__cdecl*)(void),struct std::less<char
const *>,class std::allocator<class Shape * (__cdecl*)(void)> >::
_Kfn,struct std::less<char const *>,class std::allocator<class Shape * (__cdecl*)(void)> >::iterator' を扱うグローバルな演算子は定義されていません。(または変換できません)(新しい動作; ヘルプ
を参照)

D:\TEMP\Factory\Factory.cpp(27) : error C2227: '->second' : 左側がクラス、構造体、共用体へのポインタではありません。

cl.exe の実行エラー
ブラウザ データベースを作成中...

Factory.exe - エラー 7、警告 0


404 :デフォルトの名無しさん:2006/11/17(金) 23:24:05
VC++ 8で試してみた。
createObjectがおかしい、const_Ierator⇒const_iterator、Id(仮引数宣言)⇒id。
そしてi == associations_.end()のときに、何も値を返さないという警告になるが、一応コンパイル・実行できた。

それでもだめだったら、VC++ 6の問題だから仕方ないと思うよ。
さあVisual C++ 2005 EEだ。

405 :デフォルトの名無しさん:2006/11/17(金) 23:30:03
>404
駄目ですね。やっぱVC++6の仕様みたいです。

#template のネストもVC6では出来ないようだし・・・

406 :デフォルトの名無しさん:2006/11/18(土) 08:47:33
【初心者歓迎】C/C++室 Ver.32【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1160893851/

そういうどうでもいい話はこっち向き

407 :デフォルトの名無しさん:2006/11/18(土) 09:48:01
まとめ

Q
C/C++の本に書いてあるコードでVCでコンパイルが通らないものがあります。
どうしたらいいですか?

A
その本の推奨する環境でコンパイルしてください。

408 :デフォルトの名無しさん:2006/11/19(日) 00:55:38
無料でDLしたvisualc++を使ってるんだがさすが無料と言うべきか
textoutつかって日本語表示させようとすると見事に文字化けする。
マジ使えねぇ

409 :デフォルトの名無しさん:2006/11/19(日) 02:20:26
それが本当だったらとっくに大騒ぎになっているわ。

410 :デフォルトの名無しさん:2006/11/19(日) 02:51:00
>>409 http://pc8.2ch.net/test/read.cgi/tech/1163612924/46

411 :デフォルトの名無しさん:2006/11/19(日) 03:07:08
VC++.NET 2003のWindowsフォームアプリケーションでボタンの上にカーソルが重なったら
http://www2.ranobe.com/test/src/up15798.jpg
見たいにコメントを表示させたいのですがどうすればいいのでしょうか?


412 :デフォルトの名無しさん:2006/11/19(日) 03:13:07
つ System.Windows.Forms.ToolTip

413 :デフォルトの名無しさん:2006/11/19(日) 03:37:11
質問があります
おもに猫でも〜を見てプログラムを勉強してるのですが
datagridviewを使うにはどうすればいいのでしょうか?
CLRというのを選択しないと出てこないのですが
またMFCでもdatagridviewは使えるのでしょうか?

414 :デフォルトの名無しさん:2006/11/19(日) 08:30:42
>>408
どう見てもマルチです、本当に(ry

415 :411:2006/11/19(日) 13:20:17
>>412
ありがとうございます。
ツールチップって言うんですね。
ヒント or ヘルプ and 浮かび上がる
とかで検索しててまったくヒットしなかったので助かりました。
どうも。


416 :デフォルトの名無しさん:2006/11/19(日) 14:24:07
Ellipse(hdc,10,10,100,100);

この一文の事でお聞きしたいのですが、
これをWM_PAINT内に書くとウィンドウ上に円が描かれます。

しかし、WM_PAINTから呼び出した別の関数で
上記の文を実行させると、ウィンドウからはみ出したり
円が描かれなかったりします。

その関数には (HWND hwnd)や(HDC hdc)などを渡したりもしています。
何でだろう?
相当馬鹿なことやってるかもしれないんですけど

417 :デフォルトの名無しさん:2006/11/19(日) 15:01:26
WM_PAINT部とその呼び出す関数を見せてみろ

418 :416:2006/11/19(日) 16:29:28
case WM_PAINT:
hdc=BeginPaint(hWnd,&ps);
Ellipse(hdc,10,10,100,100); //有効
EndPaint(hWnd,&ps);
return 0;
//以下略

switch(LOWORD(wParam)) {
case 1:
hdc=BeginPaint(hWnd,&ps);
Ellipse(hdc,10,10,200,200); //これがおかしい
EndPaint(hWnd,&ps);
break;

質問の趣旨が間違ってました。すまんです。
WM_PAINTの中でのEllipseは有効なのに、ボタン(IDは1)を押しても
円が描かれません。と言う事です。

419 :デフォルトの名無しさん:2006/11/19(日) 16:48:03
>>418ではないが俺も質問させて下さい。
Ellipseを使って円をランダムに表示させたいんだがうまくいきません。

case WM_PAINTの中はこんな感じです。

rx1 = rand() % rc.right;
atm[j][0] = rx1; atm[j][1] = rx1; //x1, y1座標
atm[j][2] = rx1 + 10; atm[j][3] = rx1 + 10; //x2, y2座標
hBrush = CreateSolidBrush(RGB(255, 226, 0));
hOBrush= (HBRUSH)SelectObject(hdc, hBrush);
Ellipse(hdc, atm[j][0], atm[j][1], atm[j][2], atm[j][3]);
SelectObject(hdc, hOBrush);
DeleteObject(hBrush);

配列に値を入れてるのは他のとこでその値を使いたいので成ってます。

WM_CREATEのなかに
srand((unsigned)time(NULL));
を入れて表示させてますが、円が分身しちゃいます。
しないで一定の場所に保つ方法ってありますか?

420 :デフォルトの名無しさん:2006/11/19(日) 16:54:15
>>418
それは正しい動作
おかしいと思うキミが理解できてない
MSDNのBeginPaintの解説を良く読んでみなさい


421 :デフォルトの名無しさん:2006/11/19(日) 16:58:00
>>419
分身?
WM_PAINTの度にランダム生成してんだから同じ場所に出ないのは当然だと思うんだけど?

422 :デフォルトの名無しさん:2006/11/19(日) 17:30:40
>>421
教科書のは大丈夫だったから良いと思ったら
仰るとおり再描画かけてたので分身してるっぽいです。
こんな質問するなんて、ほんと申し訳ないです。。。

423 :デフォルトの名無しさん:2006/11/19(日) 19:42:47
今、地図を描くプログラムをVisual C++6.0 で作ってるんですけど、
データの格納方法は完成したんですが、
データをそのまま使ってピクチャボックスに描くには不可能です。
なので、どうにかして、そのデータを使ってピクチャボックスに描きたいのですが
どうしたらいいでしょうか?

データは(0、0) 〜 (10000、10000)までの大きさです。
それをピクチャボックス(500、500)の大きさに描きたいです。
よろしくお願いします。

424 :デフォルトの名無しさん:2006/11/19(日) 20:12:41
縮小して描きゃえぇじゃん
つか、データの構造も知らさずにいったい何を言えと?

425 :デフォルトの名無しさん:2006/11/19(日) 20:34:19
>>424

1ファイルの中にX,Yの座標点のデータが入ってるんですけど、それを順番に読み込んで地図を描くってやつなんです。


426 :デフォルトの名無しさん:2006/11/19(日) 21:07:49
データも、画面も、サイズは決定してるんだから
・データの座標系を画面の座標系に変換して描画する
・(0,0)〜(10000,10000)サイズのオフスクリーンのキャンバスを用意してそこに一旦描画→StrechBltで縮小して画面に表示

好きな方でどうぞ

427 :デフォルトの名無しさん:2006/11/19(日) 23:12:18
スレ違いだけどドット画は縮小に向いてないね
馬鹿の考えた仕様は根本から作り直した方がいいかも

428 :デフォルトの名無しさん:2006/11/20(月) 02:56:41
馬鹿に馬鹿って言うヤツが馬鹿。

429 :デフォルトの名無しさん:2006/11/20(月) 09:20:34
もうね、みんなバカなんだしそれでええじゃないか('A`;

430 :デフォルトの名無しさん:2006/11/20(月) 20:58:20
vc++2005でz=cos(x+y)+sin(y)などの関数を描画したいんですけどMFCないからやっぱ無理?

431 :デフォルトの名無しさん:2006/11/20(月) 20:59:51
いいえ

432 :デフォルトの名無しさん:2006/11/20(月) 21:05:00
できるの?!
おしえてっ!!

433 :デフォルトの名無しさん:2006/11/20(月) 21:11:36
1. Windows API
2. .NET Framework
3. その他のGUIライブラリ

434 :デフォルトの名無しさん:2006/11/20(月) 21:12:54
これ忘れていた。
4. Academic or Standard以上を買う。

435 :デフォルトの名無しさん:2006/11/20(月) 21:19:40
結局金が要るのか・・・
僕には無理なのか・・・

436 :デフォルトの名無しさん:2006/11/20(月) 21:27:46
> 1. Windows API
無料。
> 2. .NET Framework
付いてるだろ?
> 3. その他のGUIライブラリ
無料のもあるだろ。

437 :デフォルトの名無しさん:2006/11/20(月) 21:38:37
画像ファイルに落として適当なビュアーで見る手もあるし、
Excelがあるなら、csvファイルに出力してもいいね。

438 :デフォルトの名無しさん:2006/11/20(月) 22:09:23
VC6 で言うところの 表示 - デバッグウィンドウ - メモリ は 2003 でもあるですか。
あるならどこにあるのか教えて頂きたいす。



439 :デフォルトの名無しさん:2006/11/20(月) 22:20:12
>>438
デバッグ→ウィンドウ→メモリ

もしかしたら、デバッグ実行してないとメニューに出ないかも。

440 :デフォルトの名無しさん:2006/11/20(月) 22:28:08
>>439
感謝を。明日、試してみるす。


441 :デフォルトの名無しさん:2006/11/21(火) 16:02:26
ビルド後、プログラムを実行すると以下のような例外が表示されます。

xxx.exe の 0x7c958fea で初回の例外が発生しました: 0xC0000005:
場所 0x00000010 に書き込み中にアクセス違反が発生しました。

今のところ特に問題は発生していないのですが、今後何かしらの
障害になりうるものであるならば早急に対処したいので、このエラーに関して
解決法、もしくはなにか情報をお持ちの方いましたらご教授をお願いいたします。

環境:WinXP Pro SP2 VS2005 MFC使用、MDIアプリケーション

442 :デフォルトの名無しさん:2006/11/21(火) 16:21:01
有名なコピペ

443 :デフォルトの名無しさん:2006/11/22(水) 18:27:52
VC++6を使ってるんですけど、ピクチャボックスの原点を左下にしたいんですけど、
どうしたらいいでしょうか?

444 :デフォルトの名無しさん:2006/11/22(水) 18:46:34
自分で計算しなさい

445 :デフォルトの名無しさん:2006/11/22(水) 18:49:14
そこをなんとか!!
座標(100,100)ってやって、左上からの座標じゃなくて、左下からの座標点を取りたいんですけど、
そういう関数ってないですか?

446 :デフォルトの名無しさん:2006/11/22(水) 18:55:14
>445
ヒント:CRectを返すメンバを探すこと

447 :デフォルトの名無しさん:2006/11/22(水) 19:13:25
SetOrigin()

448 :デフォルトの名無しさん:2006/11/22(水) 21:24:02
原点を移動するには左下の座標を求めないといけないからな
原点移動しないで自分で計算した方がapi呼ばない分コーディングが楽

449 :デフォルトの名無しさん:2006/11/22(水) 22:22:32
>>446-448
ありがとうございます!!

450 :デフォルトの名無しさん:2006/11/23(木) 13:09:16
APIでピクチャボックスの初期時の背景を白にしたいんですけど、
どうしたらいいんでしょうか?
MFCだと
CWnd *myP = GetDlgItem(////);
CClientDC myDC(myP);
CRect myCR;
myP->GetClientRect(myCR);
myDC.FillSolidRect(myCR, RGB(255,255,255));

この部分のAPI化です。
APIのスレが書けなくなっていたので、スレ違いだとは思いますが
よろしくお願いします。

451 :デフォルトの名無しさん:2006/11/23(木) 13:21:23
ほとんどそのまんまの名前のapi使うだけ

452 :デフォルトの名無しさん:2006/11/23(木) 13:22:32
>>450
MFCのソース見てみろ。
それだけならAPIを薄くラップしてるだけだ。

453 :デフォルトの名無しさん:2006/11/23(木) 13:38:32
>>451
>>452
あっ ありました!
ありがとうございました

454 :デフォルトの名無しさん:2006/11/23(木) 15:20:39
ウィンドウを表示するMFC拡張DLLを作成しているのですが、
なぜかdeleteのところでエラーが発生してしまいます
やっていることは単純で、グローバルな変数(CWnd*)を
グローバルな関数(外部アクセスの関数)で作成するだけです
その関数内でnewの前に変数がNULL以外の場合はdeleteするようにしています
調べたところ、エラーは必ず発生するのではなく、ウィンドウを×ボタンで閉じて
そのウィンドウへのポインタをdeleteした場合にのみ発生しています
なぜこのようなエラーが発生するのかご存じないでしょうか?
また、このエラーに対処するにはどのようにすれば良いのでしょうか?
参考になるサイトなどがありましたら教えて頂きたいのですが・・・

455 :454:2006/11/23(木) 15:22:20
補足です

グローバス関数は何度も呼ばれることを前提としており、
呼ばれる度に前のウィンドウを破棄して新しく作る仕様です

以上、よろしくお願いします

456 :デフォルトの名無しさん:2006/11/23(木) 15:23:41
> このエラー
> このエラー
> このエラー
> このエラー
> このエラー
> このエラー

457 :デフォルトの名無しさん:2006/11/23(木) 15:30:06
>>456
アクセスがどうとかってエラーです

458 :デフォルトの名無しさん:2006/11/23(木) 15:31:53
エラーメッセージはコピペが基本

459 :デフォルトの名無しさん:2006/11/23(木) 15:45:40
>>454-455
MFC ライブラリ リファレンス
テクニカル ノート 17: ウィンドウ オブジェクトの破棄
http://msdn2.microsoft.com/ja-jp/library/5zba4hah(VS.80).aspx


460 :デフォルトの名無しさん:2006/11/23(木) 15:58:43
>>458
すみません
学校に行かないと環境がないので今は無理です・・・orz

>>459
ありがとうございます
参考にさせて頂きます

461 :デフォルトの名無しさん:2006/11/23(木) 16:05:17
>>460
学校なら先生に訊けよ

462 :デフォルトの名無しさん:2006/11/23(木) 16:34:31
>>461
情報系がメインの学校ではないので分かる人がいません・・・



追加で質問させて下さい

ウィンドウがすでにDestroyされていることを判断する方法ってありませんか?
例えば、下のようにウィンドウのポインタを定義します

CWnd* pTest;

これをnewしたりしてウィンドウを作ったとします
そして×ボタンが押された(DestroyWindowイベントが発生)とします
その時に、pTestからDestroyされたということを判断したいのです
そうすれば現在の問題は解決できるように思っています
どうかよろしくお願いします

463 :デフォルトの名無しさん:2006/11/23(木) 16:38:53
DestroyWindow() ないでポインタにNULLを代入して幸せになれそうです

464 :450:2006/11/23(木) 16:56:21
HDC hDC = m_pict1.GetDC()->GetSafeHdc();
HBRUSH hBrush = CreateSolidBrush(RGB(255,255,255));//ブラシの設定
RECT rect;
::GetClientRect(m_hWnd, &rect);
::FillRect(hDC, &rect, hBrush);

すみません。同じ質問となるんですが、
こうしたら、ピクチャボックスの左上からウィンドウの右下までが白になってしまいました。
ピクチャボックスの全領域だけを白にするにはどうしたらいいでしょうか?

465 :デフォルトの名無しさん:2006/11/23(木) 17:11:27
>>464
myP->GetClientRect(myCR);
::GetClientRect(m_hWnd, &rect);

クライアント矩形を取る対象が違うと思うぞ

466 :デフォルトの名無しさん:2006/11/23(木) 17:17:10
>>465
どう書き直したらいいでしょうか?

467 :デフォルトの名無しさん:2006/11/23(木) 17:45:14
ピクチャボックスの領域を取れ

468 :デフォルトの名無しさん:2006/11/23(木) 17:54:44
>>467
すみません。どうやったら取れるんでしょうか?
すみません。お願いします。

469 :デフォルトの名無しさん:2006/11/23(木) 20:08:23
C#のDataGridViewみたいな表形式のコントロールを使い
VC++では作れませんか?

470 :デフォルトの名無しさん:2006/11/23(木) 20:13:43
>>468
引数の意味をよく読んでくれ。
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/getclientrect.asp
あとここもよく読んどけ。
ttp://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/windows.asp

471 :デフォルトの名無しさん:2006/11/23(木) 21:09:06
>>469
C++/CLIなどを使ってよいのならVC++でもDataGridViewは使える。
単に表形式の表示がほしいだけならMSFlexGridがある。

472 :デフォルトの名無しさん:2006/11/23(木) 21:16:37
>>470
HWND hWnd = m_pict1.GetSafeHwnd();
というふうにして領域を取得できました!
ご迷惑をおかけしました。。

473 :デフォルトの名無しさん:2006/11/23(木) 21:29:38
>>471
レスありがとうございます。
MSFlexGridををViewにどう貼り付けるのですか?

474 :デフォルトの名無しさん:2006/11/23(木) 23:08:59
Ctrl+VでOK

475 :デフォルトの名無しさん:2006/11/23(木) 23:57:34
VC++2005なのですが
#include <string>で宣言して
string taro;
ってうってるだけなのにエラーがでる?
どうしてなの?
エラー内容は・・・・
エラー2error C2146: 構文エラー : ';' が、識別子 'taro' の前に必要です。
エラー3error C2065: 'taro' : 定義されていない識別子です。
エラー1error C2065: 'string' : 定義されていない識別子です。

です。わけわかめ。

476 :デフォルトの名無しさん:2006/11/23(木) 23:58:49
>>475
std:string

もしくは

using namespace std;

でFA?

477 :454, 462:2006/11/23(木) 23:59:29
>>463
よく分からないのですが、自身へのポインタをNULLにするには
どうやったらできるのですか?



処理は全体的にはシンプルなものです
ウィンドウを1つだけMFC-DLLによって表示させたいだけです
再呼び出しされたら以前のを消して新しく再表示させたいだけです


CWnd* pTest;//グローバル変数 同じcppファイル内のグローバル関数からのみ呼ばれる

アプリから呼ばれるグローバル関数
{
    if(pTest != NULL) delete pTest;//←ここを2回目に通った(呼ばれた)時にエラー発生(Windowが閉じられた場合のみ)

    //生成して表示する処理(略)
}


ただ、メモリ関連で大きくつまずいています(これによって進めなくなりました・・・)
ちょっと前までは明示的な処理によるメモリ開放という考え自体が全くありませんでした
(前に使ってた言語ではガベージコレクションで勝手に開放してくれたので・・・)

478 :デフォルトの名無しさん:2006/11/24(金) 00:05:55
>>476さん
ありがとうございました♪
こんなのに何時間もツマヅイテいたのかorz

479 :デフォルトの名無しさん:2006/11/24(金) 00:43:40
エラー1error C2664: 'void System::Windows::Forms::Control::Text::set(System::String ^)' : 1 番目の引数を 'std::string' から 'System::String ^' に変換できません。(新しい機能 ; ヘルプを参照)
こういう表示がでたらどうしたらいいですか?

480 :デフォルトの名無しさん:2006/11/24(金) 00:51:38
>>479
> (新しい機能 ; ヘルプを参照)
> (新しい機能 ; ヘルプを参照)
> (新しい機能 ; ヘルプを参照)
C++/CLIはC++とは別言語なので注意

481 :デフォルトの名無しさん:2006/11/24(金) 00:55:56
>>479
文字通りstd::stringからSystem::Stringへは直接変換できない(暗黙の変換がない)。
std::string s;があったとしてこんな感じで変換できる。std::wstringも同様。
gcnew System::String(s.c_str(), 0, static_cast<int>(s.size()));

482 :デフォルトの名無しさん:2006/11/24(金) 01:00:56
>>481
なんとかデバックできたけど、複雑ですね。
もっと簡単なコードで変換とかできないのですか?
>>481さん
詳しく教えてくださると幸いです。

483 :デフォルトの名無しさん:2006/11/24(金) 01:32:50
>>482
そういうときには俺様ライブラリを作ってその中に放り込んでおくんだ。

inline System::String^ ToSysStr(const std::string& s)
{
    return gcnew System::String(s.c_str(), 0, static_cast<int>(s.size()));
}

484 :デフォルトの名無しさん:2006/11/24(金) 02:10:07
>>483
ありがとうございます!
参考になります!

485 :デフォルトの名無しさん:2006/11/24(金) 02:11:22
ソース貼ると長くなってしまうんで↓です。
ttp://strawberry.web-sv.com/cgi/up/atr/nm2005.txt.html
クロマキー合成させたいのですが、ビルドすると
構文エラー:if とか
構文エラー:return
と表示されてしまうのですがナゼでしょう?
ソース自体、間違っていたら指摘していただければ
幸いです。

486 :デフォルトの名無しさん:2006/11/24(金) 02:23:25
>>485
括弧の数が合わないとかそんなのじゃないのかな?
38-40行目の括弧が怪しい感じだ。

487 :485:2006/11/24(金) 02:45:08
>>486
}多かったっす。。。ありがとうございます( ̄∇ ̄)b
でも、出来た画像が真っ黒で・・。
合成は出来ませんでした。。
何か問題ありそうです。

488 :デフォルトの名無しさん:2006/11/24(金) 02:49:28
for(i=0;i<256;i++){
for(j=0;j<256;j++){
R=body1[i][j][2];//逆
G=body1[i][j][1];//逆
B=body1[i][j][0];//逆
//if ( R < 0x40 && G < 0x40 && B >= 0x80 ) {
if ( R < 80 && G < 64 && B >= 100 ) {
R=body2[i][j][2];
G=body2[i][j][1];
B=body2[i][j][0];
}

//}余分

new_body[i][j][2] = R;//逆
new_body[i][j][1] = G;//逆
new_body[i][j][0] = B;//逆
}
}
if ((fp3 = fopen("photo3.bmp","wb")) == NULL)
printf("ファイルオープンが出来ません\n");
else{
fwrite(head1, sizeof(head1), 1, fp3);
//fwrite(head2, sizeof(head2), 1, fp3); おいおい
fwrite(new_body, sizeof(new_body), 1, fp3);
fclose(fp3);
}

ねる

489 :485:2006/11/24(金) 02:57:19
>>488
出来ました!!超感動です!!
ありがとうございます!!!!

490 :デフォルトの名無しさん:2006/11/24(金) 10:46:52
おまいら構造体のプレフィックスってどうしてる?

クラスなら C
メンバ変数なら m_
ポインタなら P
文字列なら状況により str

って付けてるけど、構造体は S だと文字列みたいだから、
とりあえず全て大文字にしているけど、おもいらどうしてる?



491 :デフォルトの名無しさん:2006/11/24(金) 11:13:12
>>490
激しくスレ違い。

492 :デフォルトの名無しさん:2006/11/24(金) 11:18:57
>491
そうだね。逝ってくる

493 :デフォルトの名無しさん:2006/11/24(金) 14:05:56
VC++ 2005ですが、
デバックのところの
ブレークポイント- フィルタの意味がわかりません。
これはどういうときに使うのでしょうか?

494 :デフォルトの名無しさん:2006/11/24(金) 14:08:18
ちょっと一息入れたいときにコーヒー飲むために使うんだよ。

495 :デフォルトの名無しさん:2006/11/25(土) 02:22:59
キーワード
 ブレークポイント
  フィルタ処理

496 :デフォルトの名無しさん:2006/11/25(土) 17:24:15
スプリッタウィンドウのペインを差し替えることって可能でしょうか?

497 :デフォルトの名無しさん:2006/11/25(土) 18:35:36
馬鹿には不可能

498 :デフォルトの名無しさん:2006/11/25(土) 19:36:38
経験者は語る?

499 :デフォルトの名無しさん:2006/11/25(土) 22:25:47
可能かどうかを訊く奴には不可能な法則

500 :デフォルトの名無しさん:2006/11/26(日) 01:54:53
VC++2005でチャットプラグラムを作り、それを踏まえてネットゲームを作ろうと思ってます。
ネットワークはネットで色々調べて概念だけはなんとかわかるようになったんですが、
実際プログラム作成しようとしても上手くいきません。

2005用に作成されたソースやコードではないためだと思いますが
ttp://stylefree.net/main/nprogramming/windows/windows2.shtml
このへんのサンプルをコピペしてもビルドできません。
("stdafx.h"をインクルードしろって言われて、それをインクルードするとさらにエラーが増える)

2005でも実行できるようなネットワークプログラミング講座みたいな
サイトや書籍で参考になるものがあれば教えてください。
もしくは、その他何か解決できる方法があれば教えてください。
よろしくお願いします。

501 :デフォルトの名無しさん:2006/11/26(日) 02:02:52
今VC++2005でネットゲームを作ろうと思って色々勉強してます。
ネットとか本を参考にサンプルを作ったりしているんですが、うまくビルドできません。
例えば
ttp://stylefree.net/main/nprogramming/windows/windows2.shtml
このサンプルとか。
(コピペしてビルドすると、"stdafx.h"をインクルードしろ、と言われ
それを実行すると100以上のエラーが出てくる)

おそらく、2005ではなく2002や6.0向けに書かれたサンプルで
ケアされてないコードなどが入っているためだとは思いますが、
そういうサンプルだと勉強してもやりたいことに直結しないし、
何よりも2005の機能をうまく使えない気がします。

2005を用いたネットワークプログラミング講座みたいな
参考になる書籍やサイトなどがあれば、教えて欲しいです。
もしくは、その他解決方法があれば教えてください。
お願いしますm(_ _)m

502 :デフォルトの名無しさん:2006/11/26(日) 02:03:38
あぁ、なんか二重投稿になってる・・・すいません

503 :デフォルトの名無しさん:2006/11/26(日) 02:55:47
Visual Stdio .NET 2003でソースコードを自動整列させることってできますか

504 :デフォルトの名無しさん:2006/11/26(日) 05:34:14
>>500
stdafx.hが何なのか理解してないだろ。

>>503
おまえで何の言っているんま?


505 :デフォルトの名無しさん:2006/11/26(日) 06:50:21
チャットプラグラムなんて言ってるしな

506 :デフォルトの名無しさん:2006/11/26(日) 09:23:02
ちゃっとってjavaかperlCGIじゃないの?

507 :デフォルトの名無しさん:2006/11/26(日) 09:23:53
意味もわからず打っても指の運動にしかならないし、
コピペした方が間違えなくていい

> さて今回はネットワークプログラミング入門と言う事で
> ネットワークプログラミングの雰囲気に簡単ですが触れてもらおうと思います。
> 詳しい説明はしないので下にあるコードを実際に打ってみてください
> (コピー&ペーストはしないで実際に打つ)。

508 :500:2006/11/26(日) 09:50:44
レスありがとうございます。

ネットゲームの中でチャットを使いたいんですよ。
本とかを読んでいたらネットワークプログラムを学ぶのに初めはチャットが適しているってあったもので。

検索してみたら同じエラーの対処法などが書いてあり、
cppファイルかプロジェクトのプロパティで「プリコンパイルヘッダを自動的に使用」をチェックするとありました。
しかし、2005にはそんなチェックはなく、「プリコンパイルヘッダを使用しない」をチェックしてもエラーが増えるだけでした。

ソースコードはコピペです。
手打ちでやった後ビルドできなかったのでコピペに切り替えました。

509 :デフォルトの名無しさん:2006/11/26(日) 10:00:27
ビルドすらできない初心者だったら
この辺からやってみろ

int main( int argc, char *argv[])
{
return 0;
}

510 :デフォルトの名無しさん:2006/11/26(日) 10:02:10
こっちのがいいか

int main()
{
return 0;
}

511 :500:2006/11/26(日) 10:08:16
それはプロジェクトを作成した初期画面のままビルドしろってことですか?

新規作成→プロジェクト→Win32 コンソールアプリケーション、ファイル名"buildtest"


//buildtest.cpp

#include "stdafx.h"


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


このままビルドしたら問題なくビルドできました

512 :デフォルトの名無しさん:2006/11/26(日) 10:09:40
>>508
それはどっちもまともな対処法ではない。説明するのも面倒だから、とりあえず
新しいプロジェクトを(プリコンパイル済みヘッダを使わない指定をしないようにして)作り、
そっちのプロジェクトへ全てのソースコードを移せ。

513 :デフォルトの名無しさん:2006/11/26(日) 10:21:18
新規作成→プロジェクト→Win32 コンソールアプリケーション

で、このときプリコンパイル済みヘッダのチェックをはずして作成、
>>500のソースコードを全部コピペしてみましたが、やはりエラーがでました。
stdafx.hをインクルードしたり、stdio.hのインクルードを消したりしてみましたが
やはり結果は一緒でした。

514 :デフォルトの名無しさん:2006/11/26(日) 10:37:47
そういう場合Hello, Worldぐらいで試してみるのが普通

515 :デフォルトの名無しさん:2006/11/26(日) 10:50:01
Hello, Worldってこんな感じでいいんでしょうか?
これなら問題なくビルドできたんですが。


#include "stdafx.h"
#include <iostream>

using namespace std;

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

cout<<"Hello, world";
//出力を眺めるため入力を待つ
int i;
cin>>i;
return 0;
}



いろいろ調べ続けてはいるんですが・・・
VC++ってプリコンパイル済みのヘッダ"stdafx.h"が出てくるまでその行を探し続ける
ってことなんで、stdafx.hをインクルードして100以上もエラーが出るっていうのは
stdafx.hじゃなくて他のところが悪いんでしょうか?

516 :デフォルトの名無しさん:2006/11/26(日) 10:57:50
>>515
心優しい俺様が、懇切丁寧に教えてやろう。

1. Win32コンソールアプリケーションのプロジェクトを作成
アプリケーション設定の空のプロジェクトにチェックを入れておくこと。

2. 新規ソースファイルを一つ追加。main.cppとでもしておけばいい。

3. それにソースをコピペした後、タブ代わりの全角空白を全部削除する
全選択した後、編集-詳細-左右スペースの削除を使え。

5. ws2_32.libをリンクするように設定。
プロジェクトの設定でもできるが面倒なので、
#pragma comment(lib, "ws2_32")
上の行を#includeとmainの間にでも入れておけ。

6. ビルドしてみろ。

以上。 

517 :デフォルトの名無しさん:2006/11/26(日) 10:58:42
心優しいのになぜ、上から目線なのかしらん?

518 :デフォルトの名無しさん:2006/11/26(日) 10:59:40
ツンデレ属性なんだろ

519 :デフォルトの名無しさん:2006/11/26(日) 11:05:15
んじゃ、心優しくないVer.

>>515
エラーメッセージも書かない能無しは死ね。

520 :500:2006/11/26(日) 11:10:09
>>516
ありがとうございます!
うまくビルドできました!
#pragmaを設定していなかったのと、空白を削除していなかったのが原因だと思います。
無意味な空白があるとビルドできなかったりするんですね。

>>519
すいません。
あまりにも量が膨大なので、リンクしようにもアップが面倒だったんです。

521 :500:2006/11/26(日) 11:12:17
それからレスをくださったみなさん、どうもありがとうございました。
やっと先に進むことができます。感謝、感謝です。

522 :デフォルトの名無しさん:2006/11/26(日) 11:29:31
無意味な空白が原因じゃねーよ
空白に使ってる が駄目なんだよ なら問題ない


523 :500:2006/11/26(日) 11:34:12
なるほど、" "(全角スペース)だと読み込んでくれないわけですね。
文字列以外のところで全角は使っちゃいけないってことか。
エラーの時に言ってた読み込めない識別子がありますってこれのことだったんですね。

524 :デフォルトの名無しさん:2006/11/26(日) 12:07:00
>読み込めない識別子があります

このエラーメッセージを最初から書いていれば一発でしたね!


525 :500:2006/11/26(日) 12:21:42
そうですよね!

・・・ごめんなさい(´・ω・`)

526 :デフォルトの名無しさん:2006/11/26(日) 13:07:31
>>515
<iostream>とかライブラリのヘッダのインクルードは全てstdafx.hの中に書け。
そのためのstdafx.hとプリコンパイルドヘッダだ。

527 :500:2006/11/26(日) 13:40:28
>>526
そうだったんですか!
目からうろこです。
じゃあ上のサンプルの<winsock2.h>とか<conio.h>とかも全部まとめちゃうんですね。

マジここの人達優しすぎ (つД`)

528 :デフォルトの名無しさん:2006/11/26(日) 13:45:48
('A`) こうしてどんどんドツボにはまっていくのであった

529 :デフォルトの名無しさん:2006/11/27(月) 05:08:07
いくつもあるファイルを1つのフォルダに収めてifstream in(・・・)でファイルを出したいんですけど、
どういう設定をしたらできるんでしょうか?

530 :デフォルトの名無しさん:2006/11/27(月) 06:00:17
先ずお前の脳を日本語モードに設定しろ。
話はそれからだ。

531 :529:2006/11/27(月) 06:22:14
失礼しました。

フォルダの中に入っているファイルを1つ指定して開きたんですけど、
ifstreamを使う場合、どうやったら指定ファイルを開くことができるんでしょうか?

したいことは「ループして次々にフォルダの中のファイルを開いていく」です。
できたら、指定ファイルを検索して開きたいです。

532 :デフォルトの名無しさん:2006/11/27(月) 07:37:59
>開きたんですけど、
>ループして
だから日本語で書けと。

533 :デフォルトの名無しさん:2006/11/27(月) 07:48:26
質問です!
APIを使ってピクチャボックスに絵を描いているのですが
絵を表示させるのが遅い場合、途中で強制終了することってありますか?

やっぱりどっかがおかしいからそうなるんですかね?

534 :533:2006/11/27(月) 08:05:19
すみません。自分のミスでした。


535 :デフォルトの名無しさん:2006/11/27(月) 11:41:19
質問です。
ビューが生成されているかどうかをしりたいのですが
どうしたらわかるのでしょうか?教えてください

536 :デフォルトの名無しさん:2006/11/27(月) 12:22:57
最近日本語でおkが増えたな

537 :デフォルトの名無しさん:2006/11/27(月) 14:37:30
質問なんですけど

CString ss = "可変長文字列 250件";

のようなデータがあったとして、数値データ(今回だと250)を
取り出す時にどのようにしたらよいのでしょうか?
isdigit()なんかで一文字ずつ比較すればできそうですが
データの長さによってはかなり検索が膨大になりそうなので
なるべく簡易にしたいのです。よろしくお願いします。

538 :デフォルトの名無しさん:2006/11/27(月) 14:46:19
一文字ずつ比較しないと見つけようがない。

539 :デフォルトの名無しさん:2006/11/27(月) 14:48:18
一番最後に見つかったスペースからn桁とればいいんじゃないの?

540 :デフォルトの名無しさん:2006/11/27(月) 14:55:25
// >539の方針だとこんなもんか。
// 空白がないと破綻するから、実際にはもう少し複雑になる。
//
int num;
sscanf(strrchr(ss, ' '), "%d", & num);

541 :537:2006/11/27(月) 14:59:11
>538
>539
レスありがとうございます。
そうそう都合のいいメソッドなどはないようですね(´・ω・`) ショボーン
一文字ずつ比較することにします。

542 :デフォルトの名無しさん:2006/11/27(月) 15:00:56
ひとつのchar型配列に日本語の文章を入れて、
その文章を一文字ずつ表示するようなプログラムを作りたいのですが、
%c を使うと化けてしまうし、%s では文章を全て表示してしまいます。
どうすればいいでしょうか

543 :537:2006/11/27(月) 15:05:29
>540
レスありがとうございます。
入れ違いになってしまったようですね。

空白は場合により増えたりします。ですが
必ず一つはあるので空白を利用する方法も考えてみます。

544 :デフォルトの名無しさん:2006/11/27(月) 15:12:16
>>542
例えばShiftJisで2バイト文字しか扱わないのであれば、単純に%2cで出力する手もある。
或いは、%.2sでもいい。

545 :デフォルトの名無しさん:2006/11/27(月) 15:18:22
都合のいいメソッドがあったとしても
自分の代わりにその中の人がやるだけ

546 :デフォルトの名無しさん:2006/11/27(月) 21:47:06

VC++EEを使ってるんですが、描画などの機能はAPIを使ったほうがいいんでしょうか?
それとも、VC++EEの機能を使った方がいいんでしょうか?

どちらも一緒のような気もするんですけど、
それらの利点や欠点などもあれば、上記の質問と一緒にお答えいただきたいです。
お願いします。

547 :デフォルトの名無しさん:2006/11/27(月) 21:53:49
自分が使いたい方使えよ
利点欠点なんか自分で使わないとわからん

548 :デフォルトの名無しさん:2006/11/27(月) 22:17:16
VC++EEの機能って何だろう?

549 :デフォルトの名無しさん:2006/11/27(月) 22:50:50
MFC とか .NET とかのこと言ってんのかな?


550 :デフォルトの名無しさん:2006/11/27(月) 23:00:55
あぁ、なんかそんな予感がするな

551 :デフォルトの名無しさん:2006/11/27(月) 23:01:35
Express EditionではMFCは使えなかったはず

552 :デフォルトの名無しさん:2006/11/27(月) 23:44:08
今、MDIアプリケーションでダイアログバーを使用した
子ウィンドウを作成しています。

CMDIChildWndクラスのOnCreateメソッド内でダイアログバー
を作成し、ボタンコントロールの動的作成を行おうとしたのですが
作成したボタンが表示されません。一応ShowWindowメソッドも実行
してみたのですが変化なしでした。わかる方いましたら
教えてください。お願いします。

以下はソースの抜粋です
int CMyChildFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIChildWnd::OnCreate(lpCreateStruct) == -1)
return -1;

//ダイアログバーの作成
m_wndDialogBar.Create(this, IDD_TESTDLG, CBRS_TOP, IDD_TESTDLG);

//ボタンコントロールの動的作成
CButton clsBtn1;
clsBtn1.Create(L"ボタン1", WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
  CRect(10,10,100,70), this, 10);

return 0;
}


553 :デフォルトの名無しさん:2006/11/27(月) 23:52:55
ダイアログバーにする意味があんまりないような気がするけど

554 :デフォルトの名無しさん:2006/11/27(月) 23:57:08
>553
仕様なんで・・・。
それと、なぜ動的に作成するかと言いますと
DBから持ってきたデータによっていくつ作るか
変わるからです。

555 :デフォルトの名無しさん:2006/11/28(火) 00:26:50
c#初心者スレにMFCマンセーが何度もやってきて困っています。

575 名前:デフォルトの名無しさん[sage] 投稿日:2006/11/28(火) 00:14:46
ファイルを開くダイアログでプレビュー機能をつけたくて
とりあえず、OpenFileDialogを継承してみたのですが、プレビューさせるコントロールをはる
ところがわかりません。

576 名前:デフォルトの名無しさん[sage] 投稿日:2006/11/28(火) 00:17:55
c++スレに帰ったほうがいいよ。

577 名前:デフォルトの名無しさん[sage] 投稿日:2006/11/28(火) 00:19:14
>>574
Microsoft Scripting Runtimeを参照設定しました。

578 名前:デフォルトの名無しさん[sage] 投稿日:2006/11/28(火) 00:19:40
C#ではそんなことすらできないんですか?

となると、要望の多い業務アプリにはやはり不向きなんですね


556 :デフォルトの名無しさん:2006/11/28(火) 00:43:31
そんな事ここで言われても

557 :デフォルトの名無しさん:2006/11/28(火) 02:00:44
あるボタンを押したときに、新しいダイアログを表示するプログラムで、
新しいダイアログの閉じるボタンを非表示にしたいと考えています。
どうすればよいのでしょうか。

558 :デフォルトの名無しさん:2006/11/28(火) 02:37:33
何も試さず考えただけとか嫌だよね……(´-`)

559 :デフォルトの名無しさん:2006/11/28(火) 03:32:44
試してみてるんですがわからないんですよ。
CMainFrameでメインウィンドウはできたのですが、子ダイアログの方法がわかりません。

560 :デフォルトの名無しさん:2006/11/28(火) 07:52:24
その「閉じる」ボタンとはなんのことだね。

561 :デフォルトの名無しさん:2006/11/28(火) 08:43:41
とりあえず思いついたのを適当に教えてやってもいいけど
お前が試してみたのと同じ方法だったら嫌だし

こうやってみ
それはもう試したけどだめでした

562 :デフォルトの名無しさん:2006/11/28(火) 11:54:46
閉じるボタンを使わせたく無いだけなら色々方法あると思うが

563 :デフォルトの名無しさん:2006/11/28(火) 12:36:50
質問なのですが、VC++2005で

#include <windows.h>

int aaa(int a)
{
return 0;
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPreInst, LPSTR CmdLine, int CmdShow )
{
aaa(123);
return 0;
}

をコンパイルして出力されたバイナリにGetSystemTimeAsFileTimeなどの身に覚えのないコードが入ってしまいます
これらを入れないようにするオプションなどありますでしょうか?

よろしくお願いします。

564 :デフォルトの名無しさん:2006/11/28(火) 13:18:24
自分でスタートアップコード書くとか

565 :デフォルトの名無しさん:2006/11/28(火) 13:38:27
>>564
おかげさまで解決しました、ありがとうございました。

566 :デフォルトの名無しさん:2006/11/28(火) 13:46:16
20分でスタートアップコード書けるような奴がそんな質問するのか?

567 :552ですが:2006/11/28(火) 14:01:08
ボタンコントロールの表示はできたのですが
作成したボタンのクリックイベントの取得ができません。
どのようにしたらよいのでしょうか?教えてください。

568 :デフォルトの名無しさん:2006/11/28(火) 14:27:33
>>566
returnしか書いてなかったりしちゃったりして

569 :デフォルトの名無しさん:2006/11/28(火) 15:33:47
ダイアログバーはDDX使えなかったりいろいろ不便だよな
どうせいじるなら自作した方が便利だぞ

570 :デフォルトの名無しさん:2006/11/28(火) 18:56:09
VC++2005EEを使っています。
ウィンドウとコンソールを同時に使う方法を教えてください。
リンカで/SUBSYSTEMをつついてみたり
WinMainの中でprintfからConsole::WriteLineとReadLineまで
色々呼んでみましたがダメでした。

571 :デフォルトの名無しさん:2006/11/28(火) 19:05:33
AllocConsole()


572 :デフォルトの名無しさん:2006/11/28(火) 19:07:52
AllocConsole はそのままだとstdio系は使えないから、
エントリーはmain()でウィンドウ作ったほうが楽。


573 :デフォルトの名無しさん:2006/11/28(火) 19:09:00
>>570
/SUBSYSTEM:CONSOLEでいけると思うけど、指定の方法が悪いのでは。
あとから edlitbin /SUBSYSTEM:CONSOLE xxx.exe で試してみたらいい。

574 :デフォルトの名無しさん:2006/11/28(火) 19:45:04
>>573
それってそのままstdoutとか使える?


575 :570:2006/11/28(火) 19:52:59
とりあえずAllocConsole()で急場はしのげそうですが、
色々やってみたいと思います。ありがとうございました。
>>574は別の人です。

576 :デフォルトの名無しさん:2006/11/28(火) 21:47:55
/SUBSYSTEM:CONSOLE /ENTRY:WinMainCRTStartup じゃだめかい?

577 :デフォルトの名無しさん:2006/11/29(水) 02:02:23
俺ならコンソールプログラム(のプロジェクト)を作って、その中でウィンドウ作る。
インスタンスハンドルはGetModuleHandle(0)、WinMainの最後の引数はSW_SHOWDEFAULTで代用。
コマンドライン引数はargc, argvのほうが便利。(どうせグローバル変数にもあるけどさ)

578 :デフォルトの名無しさん:2006/11/29(水) 02:27:18
コンソール付けると右上の閉じるボタンで強制終了されちゃうぜ?
ウィンドウメッセージ取れないぜ?

579 :デフォルトの名無しさん:2006/11/29(水) 10:28:08
std::cout << "押すなよ!閉じるボタン絶対押すなよ!" << std::endl;

580 :デフォルトの名無しさん:2006/11/29(水) 12:09:56
std::cout << "だ が 断 る" << std::endl;

581 :デフォルトの名無しさん:2006/11/29(水) 17:16:32
#include <iostream.h>が開けないって出てくるんだけどどういうこと?

582 :デフォルトの名無しさん:2006/11/29(水) 17:19:40
iostream.hは古い仕様。

583 :581:2006/11/29(水) 17:22:44
どうすりゃいいの〜

584 :デフォルトの名無しさん:2006/11/29(水) 17:41:32
現在のC++では<iostream>となっている。
そして名前が被ることを防ぐため、標準ライブラリに含まれる殆ど全ての名前は
名前空間stdの中に収められている。名前空間内の名前は、std::coutのように::で指定する。

互換性のため、using namespace std;と書けばそれを書いた位置の有効範囲内では、
従来どおりcoutなどのようにして使える。

585 :デフォルトの名無しさん:2006/11/29(水) 18:31:03
#include <iostream>
using namespace std;


class kouza {
private:
long number;
long yokin;

public:
kouza(long no,long yok){
number=no;
yokin=yok;
}

long kouza_no(){return number;}
long kouza_yokin(){return yokin;}
void ireru(long okane){yokin+=okane;}
void orosu(long okane){yokin-=okane;}

};



586 :デフォルトの名無しさん:2006/11/29(水) 18:31:48
void main(){
kouza abe(1,1345);
kouza itou(2,334);

abe.ireru(345);
itou.orosu(330);

cout<<"安部の番号とお金"<<abe.kouza_no()<<"と"<<abe.kouza_yokin".\n";
cout<<"イトウの番号とお金"<<itou.kouza_no()<<"と"<<itou.kouza_yokin;
}



587 :デフォルトの名無しさん:2006/11/29(水) 18:34:00
上のプログラムを書いたんですけど下のようなエラーが大量に出てきてしまいます。
ミスが見つからないんですけど、どっかにあるんですか?それとも設定の段階でうまくいってないとかですか?

c:\program files\microsoft visual studio 8\vc\include\cstdio(25) : error C2143: 構文エラー : '{' が ':' の前にありません。
c:\program files\microsoft visual studio 8\vc\include\cstdio(25) : error C2059: 構文エラー : ':'
c:\program files\microsoft visual studio 8\vc\include\cstdio(25) : error C2143: 構文エラー : '{' が ':' の前にありません。
c:\program files\microsoft visual studio 8\vc\include\cstdio(25) : error C2059: 構文エラー : ':'
c:\program files\microsoft visual

588 :デフォルトの名無しさん:2006/11/29(水) 18:39:14
ちったぁ頭使えよ

589 :デフォルトの名無しさん:2006/11/29(水) 18:41:58
最後の出力でkouza_yokinが関数呼び出しになっていない。

590 :デフォルトの名無しさん:2006/11/29(水) 18:46:05
cout<<"安部の番号とお金"<<abe.kouza_no()<<"と"<<abe.kouza_yokin()<<"a.\n";
cout<<"イトウの番号とお金"<<itou.kouza_no()<<"と"<<itou.kouza_yokin()<<"a\n";
にしてもなおりませんでした

591 :デフォルトの名無しさん:2006/11/29(水) 18:56:42
すみません。できました。
C++のつもりがC設定になっていたことが原因でした。

592 :デフォルトの名無しさん:2006/11/29(水) 19:32:31
VC++(.net 2003)で勉強中なのです。

VC++とは、関係ないかもしれませんが、
sizeof(long double) * 8 で出力すると64ビットになるんですけど
これはこれでいいんですか?

Borland C++ Compilerで同じ事をすると80にちゃんとなるんですけど。


593 :デフォルトの名無しさん:2006/11/29(水) 19:45:22
おk

594 :デフォルトの名無しさん:2006/11/29(水) 19:55:08
VCにおいてlong doubleはdoubleと同等のサイズ
MSDNのリファレンスにも「same as double」とちゃんと書いてある
一方BorlandC++ではlong doubleは10バイト使ってる

595 :デフォルトの名無しさん:2006/11/29(水) 19:56:41
intは16ビットであるべきだよな。

596 :デフォルトの名無しさん:2006/11/29(水) 20:01:35
ありがとうございます。

なにか、テキストどおりじゃないのが釈然としませんが、・・・
大人の世界はいろいろとあるでしょうからそこはあきらめてVCとお付き合いしていきます。(T-T

597 :デフォルトの名無しさん:2006/11/29(水) 20:18:20
>>595
ならshort使っとけば?

598 :デフォルトの名無しさん:2006/11/29(水) 20:23:51
>>596
規格的にはどっちも正しい

599 :デフォルトの名無しさん:2006/11/29(水) 21:42:47
規格上○bit(byte?)ピッタリにしるって規定されてるデータ型ってあったっけ?

600 :592:2006/11/29(水) 21:52:10
>>597
なんとなく嘘だと思いつつやってみたw short double。

>>598,599
最初の方に最小を規定しているとは書いてあったけど、
テキストに80bitって書いてたから・・・・
ググって調べたら「典型的なlong double」は80bitってなってました。


601 :592:2006/11/29(水) 21:55:22
むぉ! long floatはいけたw 64bitだったw

Borlandさんは、拒否された。

602 :デフォルトの名無しさん:2006/11/29(水) 22:06:58
VC++は、修飾子 + [char, int, float]でなんとかなると・・・・
わかりやすいような・・・・わかりにくいような・・・・
でも・・・・、printfのformat指定子と一致するようにしたのかな?・・・・

まぁいいや! 

みなさんありがとうございました。


603 :デフォルトの名無しさん:2006/11/29(水) 22:23:19
>>599
C99の<stdint.h>にはint32_tのようなビット数固定の型がある。

>>600
long doubleが80ビットなのはx86/x64のFPUに因む。
x86/x64以外で80ビットを使用しているものは聞いたことが無い。
つまり80ビット浮動小数点数はむしろ珍しい。(ただPCでは圧倒的なシェアを誇っているけど)

>>601
K&R Cではlong floatはdoubleと同じとされていたらしい。
少なくとも現在のISO C/C++にlong floatは存在しない。

604 :デフォルトの名無しさん:2006/11/29(水) 22:39:20
まぁ、PCじゃIntelが幅利かせてるからな

605 :デフォルトの名無しさん:2006/11/29(水) 22:50:18
数週間ほど前からVC++を触り始めたばかりの初心者です

SDIモードで作成したMFCウィンドウにコントロールを追加する方法が分かりません
以前Javaをやっていたので、基本的にコントロールのインスタンスを生成して配置して表示すれば良いということは分かります
しかし、それをどこで行えば良いのかが分かりません
ドキュメントビューアーキテクチャ?という独特な形式になっているのと、MFCで隠れた部分が多いのとでごちゃごちゃしている
ように思えてしまい、どこにコードを記述して良いのかさっぱり分かりません(コンストラクタでやってみたら失敗しましたし・・・)
この問題を解決するアドヴァイスまたは参考になるサイトについての情報を頂けないでしょうか?

また、新しくウィンドウ(ダイアログではなく)を追加したい場合にはどうしたら良いのでしょうか?
Javaの場合は単にFrameを継承したクラスのインスタンスを生成して表示メソッドを実行すれば良かったのですが、
VC++で同じようなことをしてみても上手くいきませんでした(アクセスがどうとかというエラーが出て落ちます・・・)
やはりドキュメントビューアーキテクチャやMFC内部が関係しているのでしょうか?
解決に結びつくようなアドヴァイスを頂けないでしょうか?

606 :デフォルトの名無しさん:2006/11/29(水) 23:00:47
コンストラクタだとウインドウがまだできてない
少なくともCWndのメンバ関数ぐらいは全部目を通しておいた方がいい。

607 :デフォルトの名無しさん:2006/11/29(水) 23:01:50
まずJavaのことをきれいさっぱり忘れよう

608 :デフォルトの名無しさん:2006/11/29(水) 23:10:05
CString ss[MAX_LENGTH];
MAX_LENGTHは最大いくらまで代入することができるんですか?

609 :デフォルトの名無しさん:2006/11/29(水) 23:11:40
fortranぐらいしか触ったこと無いんですが最近vc++2005EEをはじめました
ものすごいしょーもない質問かもしれないんですが教えてください

String^ testで宣言した変数が test="10 20" のとき,int型の i1=10,i2=20 に変換したり
同様に"10.0 20.0"を double型の d1=10.0,d2=20.0 に変換するときは
どんな処理をすればいいんでしょうか?
連続した数字の文字列だったら int::Parseを使えばいいと思うんですけど、
間にスペースとかコンマが入ってるときはわかりません…。
どうかよろしくお願いいたします。

610 :デフォルトの名無しさん:2006/11/29(水) 23:13:42
>>608
CStringのソース見ろ

611 :デフォルトの名無しさん:2006/11/29(水) 23:16:46
そういうCString初めて見た

612 :デフォルトの名無しさん:2006/11/29(水) 23:23:07
プログラミングをやってみようとVC++買ってきました。
ハードディスクに空き容量が足りないとメッセージが出てきました。
どうすればいいですか?

613 :デフォルトの名無しさん:2006/11/29(水) 23:28:33
あきらめろ

614 :デフォルトの名無しさん:2006/11/29(水) 23:30:27
パソコンもまともに使えないやつがVC買ってもしょうがない

615 :デフォルトの名無しさん:2006/11/29(水) 23:39:10
void CString::AllocBuffer(int nLen)
// always allocate one extra character for '\0' termination
// assumes [optimistically] that data length will equal allocation length
{
ASSERT(nLen >= 0);
ASSERT(nLen <= INT_MAX-1); // max size (enough room for 1 extra)


616 :612:2006/11/29(水) 23:39:14
やっぱり、みんなそう言うよね・・・・

実は友達に>>612を聞かれて・・・・(T-T
一瞬フリーズして、それから「う〜んと、それぐらい自分で解決できないなら止めた方がいい」って言ったんだよ。
そしたら、涙流しながら激怒されて・・・・
女の子は・・・その涙流してるシーンだけで「教えてあげればいいじゃん」とかいいやがる!
事情を説明しても「誰でも最初は初心者」とか・・・・得意げに語り出すし・・・・・・・もう、おれ泣きたかった

スレ汚しごめんなさい。
ちょっと気が楽になりました。

617 :デフォルトの名無しさん:2006/11/29(水) 23:40:59
>>608
配列サイズ(!=要素数)が0x7FFFFFFFを超えないこと。
コンパイルエラーC2148を参照

618 :デフォルトの名無しさん:2006/11/29(水) 23:45:11
ハードディスクの中のエロ画像全部消せ、とか答えてやれ。

619 :デフォルトの名無しさん:2006/11/29(水) 23:48:55
>>603
そういえば16ビット時代のMSCはlong doubleは80ビットだった。
32ビットのコンパイラで64ビットになって何でやねんと思った。

620 :デフォルトの名無しさん:2006/11/29(水) 23:49:08
>>616
お前は泣いていい思う。
周囲が言いたいことも分らんのでも無いんだが……現実はなぁ。

621 :605:2006/11/30(木) 00:05:51
>>606-607
レスありがとうございます

それで、どこで生成すればよろしいでしょうか?

622 :デフォルトの名無しさん:2006/11/30(木) 01:03:24
ピクチャボックスの描画時に起きた現象についての質問です。
その現象なんですが、何も設定していないピクチャボックスにピクチャボックスの領域を越える座標点の図を描きました。
実行してウィンドウの外まで越えることはなかったのですが、ピクチャボックスからはみ出て、ウィンドウの終端まで描画される事となりました。
そこで、ピクチャボックスのサイズでクリッピングをして解決しました。

で、今日そのことを大学の先生に話したのですが、ピクチャボックスの領域を越える描画をした場合は自動的クリッピングするという事と、
ピクチャボックスは専用のメモリを割いているから領域を越える事はない、と言われました。しかし、確かそうだった、と言われたのでココに書き込ませていただきました。
要はピクチャボックスに描いたのではなく、画面に描いた事になっているのでは?ということでした。
m_pict:ピクチャボックスのメンバ変数です。

HDC hDC = m_pict.GetDC()->GetSafeHdc();HWND hWnd = m_pict.GetSafeHwnd();
/*----------------------------------------------------------------------------*/
RECT rect;
::GetClientRect(hWnd, &rect);
HRGN hRgn = ::CreateRectRgn(rect.left, rect.top, rect.right, rect.bottom);
::SelectClipRgn(hDC, hRgn);
::SetMapMode(hDC, MM_ANISOTROPIC);
::SetWindowExtEx(hDC, 500, 500, 0);
/*-----------------------------------------------------------------------------*/
ピクチャボックスの範囲を越えて描画されたときに書いたのが、コメントの上の一行だけで、この一行しか書いていませんでした。
それプラス、コメントで囲まれた部分を書くことによって、クリッピングしてピクチャボックス内に描画することができました。また大きい図でしたので座標系を設定しなおしました。

ビットマップ転送を使えばいいんじゃないか?と言われましたが、それは置いといて、
上記のソースだと、なぜピクチャボックスの領域を越えて描画されたのか?
また、この場合だとピクチャボックスに描画しているのでなく、実は画面に描画しているのか?
以上の2点の問題点を教えて頂きたいと思います。
まだまだ若輩者ですが、今後のためにどうかよろしくご指導お願いいたします。

623 :デフォルトの名無しさん:2006/11/30(木) 01:11:06
つ CS_PARENTDC

624 :デフォルトの名無しさん:2006/11/30(木) 02:03:43
開発環境 VC++.net
スライダをデフォルトでVisible Falseにしておいて
あるボタンを押すと表示するようにしたいのですが、どうすればいいんでしょうか?

CButton *btn = (CButton*)GetDlgItem(IDC_BUTTON1);
btn->EnableWindow(true);

ボタンであればこのようにすればいいのはわかるのですが。

625 :デフォルトの名無しさん:2006/11/30(木) 02:26:27
>>624
表示したいのか有効にしたいのかはともかく、
ShowWindowもEnableWindowもCWndのメンバ関数だから。
後、MFCでダイアログのコントロールにアクセスしたいなら、メンバ変数にしておくと楽。
方法は「ダイアログエディタ メンバ変数」でVSのヘルプを検索しる。

626 :デフォルトの名無しさん:2006/11/30(木) 06:56:03
>>621,624
使おうとするクラスやライブラリのリファレンスにすら目を通さない輩はやる資格無し
帰れ


627 :デフォルトの名無しさん:2006/11/30(木) 17:34:28
>>625
ありがとうございます。
>>626
もう家です。というか家から書き込んでます

628 :デフォルトの名無しさん:2006/11/30(木) 19:32:03
>>623

だから、だったんですか。
勉強になりました。
ありがとうございます。

629 :605:2006/11/30(木) 23:04:15
とりあえずウィンドウをDLL側で生成して表示させることはできました
フレームとビューとドキュメントをCCreateContextで連結させるのに苦労しました
上手に表示されたときはとってもハッピーになりました

さて、申し訳ないですが本日も質問があります
それはビュー(CFormView)に張り付けたダイアログリソースについてです
なぜか分からないですが、呼び出しアプリケーション側のダイアログリソースに置き換わってしまいます
DLLのダイアログリソースが表示されません
Resource.hが怪しいと思っていますが、どうすれば解決できるのか分かりません
アドヴァイスを頂けませんか?

あと、昨日の質問が残っています
>>62の後半、メモリ開放についてです
CFormWndのインスタンスを持っているのはDLL側です
ユーザが閉じるボタンやAlt+F4でデストロイしたことを察知して2度デストロイやdeleteするのを防ぎたいです
大変にクリティカルな問題なのでとても悩んでいます
インターネット検索や書籍で解決策を探していますが、まだ解決には至っていません
アドヴァイスをお願いします

630 :629:2006/11/30(木) 23:05:43
誤爆してしましました
無視してください

631 :初心者:2006/11/30(木) 23:22:20
CFormWnd* form;  //実際にはprivateなメンバ変数

CCreateContext cont;
cont.m_pCurrentDoc = GetDocumet();
cont.m_pNewViewClass = RUNTIME_CLASS(CHogeView);  //CFormViewを継承したView

form = (CFormWnd*)RUNTIME_CLASS(CFrameWnd)->CreateObject();
form->Create(NULL, "hoge", WS_CAPTION | WS_OVERLAPPED | WS_SYSMENU, r, ::AfxGetMainWnd(), NULL, &cont);
form->ShowWindow(SW_SHOW);


とこのように追加ウィンドウを作っているのですが、MDI の子ウィンドウ作成に応用したところ問題が発生しました
具体的には、

CFormWnd



CMDIChildWnd

に単純に変更したところ、赤丸+バッテンのエラーメッセージが表示されてプログラムが落ちました
CMDIChildWnd は CFormWnd を継承したクラスなので大丈夫だろうと思っていたのですが駄目でした

やりたいことは単純で、とにかく MDI の子ウィンドウを手動で生成して動的に追加したいだけです
データの受け渡しはポインタを使用してどうにでもなりますが、表示されない問題はどうにもなりません
この問題についてご存知の方はアドヴァイスをお願いしますm(_ _)m

632 :デフォルトの名無しさん:2006/11/30(木) 23:42:51
>赤丸+バッテンのエラーメッセージが表示されてプログラムが落ちました

デバッガ使えないの?

633 :デフォルトの名無しさん:2006/11/30(木) 23:56:00
エラーメッセージの重要さを理解してない奴多すぎ

634 :デフォルトの名無しさん:2006/12/01(金) 03:20:20
VC++6.0です。
実行ファイルを常に手前に表示させたいのですがどうすればよいのでしょうか。

635 :デフォルトの名無しさん:2006/12/01(金) 03:47:59
追記です。
FormViewで開発を行っているのですが、
SetWindowPos( &wndTop, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE );
と記述してもダメでした。


636 :デフォルトの名無しさん:2006/12/01(金) 09:20:12
wndTopMost

637 :デフォルトの名無しさん:2006/12/01(金) 09:35:03
>>634
表示の順番を拡張子順にして、
a、b、c、dで始まる拡張子のファイルは
別ディレクトリに移動させる。

638 :デフォルトの名無しさん:2006/12/01(金) 11:18:34
質問です。

今組み合わせを考えるプログラムを作ろうと思っています。
例えば1円玉、5円玉、10円玉、50円玉、100円玉、500円玉のチェックボックスを作り、
これで1000円を作る組み合わせは何通りか、そしてその内訳はどんなものかを表示するものです。

このとき、チェックボックスでチェックされていないものは除外するものとして、
まず "あなたの選んだ硬貨は ○と○と○ です" みたいな出力の仕方がわかりません。
ifでくくっていってわざわざ5!/2通りのプラグラムを組むのは違うと思いますし。

それから、その検索ルーチンも硬貨がふたつだけならなんとかなるんですが、
3つ以上だとどのように組んだらいいか手に負えません。


ヒントだけでもいいので上のプログラムの手ほどきをしてもらえないでしょうか?

639 :デフォルトの名無しさん:2006/12/01(金) 11:34:54
「一円玉」とか「五円玉」とかの文字列を一つずつ接続していって全体の文字列文を作ったら?

640 :デフォルトの名無しさん:2006/12/01(金) 11:45:58
ああ、出力の仕方がわからないのか。
とりあえずMessageBox() でいいんじゃね?

641 :デフォルトの名無しさん:2006/12/01(金) 12:12:01
もうこれでよくね?
s += ((is_a) ? (a) : (""));
s += ((is_b) ? (b) : (""));
s += ((is_c) ? (c) : (""));


MessageBox("あなたの選んだ硬貨は " + s + " です");

642 :デフォルトの名無しさん:2006/12/01(金) 12:25:24
アルゴリズムの部分はVCと関係ないから
それが解決してからだな

パズルを出題しあうスレ
http://pc8.2ch.net/test/read.cgi/tech/1153476618/

643 :デフォルトの名無しさん:2006/12/01(金) 12:32:31
うるせえ、獲物が来たら骨までしゃぶり尽くすのがこのスレの流儀だ。


644 :デフォルトの名無しさん:2006/12/01(金) 14:53:58
作業ディレクトリ外のファイルについて質問なのですが

ウィンドウクラス(CWindow)を他のプログラムでも利用できる様に
作業ディレクトリとは別に置いて
[ツール]-[オプション]-[ディレクトリ]で
インクルードファイルとソースファイルを指定しましたが
プリコンパイル済みヘッダーや、継承しようとすると
C2065定義されていない等のエラーが発生してしまいました

別ディレクトリにあるファイルを継承等する場合
他にやるべき事があるのでしょうか?
前方宣言も効果なしでした。

645 :デフォルトの名無しさん:2006/12/01(金) 15:28:01
ヘッダからほかのヘッダを参照のしかたがまずいとか

646 :デフォルトの名無しさん:2006/12/01(金) 16:12:31
>ヘッダからほかのヘッダを参照のしかたがまずいとか
日本語でどうぞ。

647 :デフォルトの名無しさん:2006/12/01(金) 16:24:06
定義されていないというエラーだったら、インクルード自体はうまく言っているという証拠では?
インクルードがうまくいかないのだったら、ヘッダが見つからないというエラーになるはず。

648 :644:2006/12/01(金) 16:38:16
mainと継承先のヘッダーとソースに
#include "CWindow.h" を加えないとエラーが出てしまうようで
直接置いてると継承先のヘッダーだけでいいのですが

ヘッダーでインクルードしてるのに
ソースでもインクルードとか、おかしいな。

後、ツールでディレクトリを指定しなくても動作する
2度ビルドするとエラー(警告ではない)が消える
分からん。頭冷やします。とりあえず再インストール

649 :644:2006/12/01(金) 16:45:48
×直接置いてると継承先のヘッダーだけでいいのですが
○直接置いてると継承先でインクルードするだけでいいのですが

650 :デフォルトの名無しさん:2006/12/01(金) 17:00:06
だから参照のしかたがまずいとか

651 :644:2006/12/01(金) 17:21:38
>>650
[ツール][略で上から2番目に設定したら動いた!
何回か作り直してみます。

652 :644:2006/12/01(金) 17:31:27
無事解決しました。有難うございます。
[ツール][オプション][ディレクトリ]の設定において
出来るだけ上に指定してやる事で
継承先にヘッダーをインクルードするだけでいけました。
プリコンパイルの方はまだやってませんが

653 :デフォルトの名無しさん:2006/12/01(金) 18:35:13
根本的に間違ってるけど、本人が満足してるようだし
よかった

654 :デフォルトの名無しさん:2006/12/01(金) 19:14:03
>>618, >>620
取りあえず、じゃぁ初心者ということでパソコンの勉強から始めようね
と、パソコン技術体系 OS編とハードウェア編をあげて、
e-wordのサイトを教えました。

あいつには理解できないだろうが、
「これで、中学生以上なら独習できるよ。」と言い放ちました。

なんか、すっきりした。


655 :初心者@質問:2006/12/01(金) 19:35:03
関数ポインタで、
 関数名(例えばfunc)⇒その関数へのポインタ
ですが、'&'をつけて(&func)も、
別にかまわないのでしょうか?

ちなみにvisual C++ 2005 EEでコンパイルしたところError&Warningはありません。

656 :デフォルトの名無しさん:2006/12/01(金) 20:52:51
構わない。
逆に呼び出すときに*を付けても構わない。ただし演算子の優先順位に注意。

657 :デフォルトの名無しさん:2006/12/01(金) 20:54:20
1500までの乱数を二重ループで発生させるプログラムを作成したのですが、
以下のように同じ値が出てしまいます。
883 526 841 863 1437 175 1321 998
883 526 841 863 1437 175 1321 998
1422 68 1117 1486 273 149 74 1039
1422 68 1117 1486 273 149 74 1039

システムの時刻と乱数が関係していることが影響しているらしいのですがどうすれば
正常に毎回違う値が出力されるようにできるのでしょうか?

658 :デフォルトの名無しさん:2006/12/01(金) 20:58:45
そんな風に同じ数字が並ぶのは、いくらなんでもお前のプログラムにもどこかおかしいところがあるからだと思う。

659 :初心者@質問:2006/12/01(金) 21:01:37
>>656

そうですか。(WEB上でどこかのHPにそれを説明していない
か探してみたんですが、見つからなくて不安でした。)
そう言いきってもらえると気持ちいいです。

660 :デフォルトの名無しさん:2006/12/01(金) 21:02:01
ご指摘ありがとうございます。
具体的なプログラムは以下の通りですがどこかおかしい点が有ればご指摘お願いします。
for(int i=0; i<100; i++)
{
  System::Random^ ran = gcnew System::Random();
  int r;
  for(int j=0; j<30; j++)
   {
    r=ran->Next(1500);
    writer->Write(r+" ");
   }
   writer->WriteLine();
}
writer->Close();

661 :660:2006/12/01(金) 21:10:14
自己解決しました。

System::Random^ ran = gcnew System::Random();
の部分をループの外で宣言することで問題は解決されました。
ご助言下さった方ありがとうございました。

662 :デフォルトの名無しさん:2006/12/02(土) 00:42:25
VC++を始めて2週間。やはり本は2.3冊揃えたほうがいいのかな?
サイトを回っても超初心者か中級、上級用の情報しかない・・・


663 :デフォルトの名無しさん:2006/12/02(土) 00:46:39
いまさらな質問だけど、BOOLとbool、TRUEとtrueを混在させると良くないかな。
てか、自分で書くプログラムは全部bool、true/falseに統一したいんだけどな・・・
大文字はShift押すのがめんどい。普段C#やってるし・・・

664 :デフォルトの名無しさん:2006/12/02(土) 00:54:15
bool値なんてそんなに多用しないだろ。


665 :663:2006/12/02(土) 01:04:04
え、メソッドの戻り値とかによく使うけど。

666 :デフォルトの名無しさん:2006/12/02(土) 05:40:00
>>663
> 大文字はShift押すのがめんどい。
変換→Shift、無変換→Ctrl にキーをリマップすると楽だぞ

667 :デフォルトの名無しさん:2006/12/02(土) 07:11:36
っCaps Lock

668 :デフォルトの名無しさん:2006/12/02(土) 11:54:57
Caps Lock には _ を割り当てている

669 :デフォルトの名無しさん:2006/12/02(土) 12:16:45
VARIANT_BOOLが気を付けないと一番一番はまる。VARIANT_TRUEは-1。

670 :663:2006/12/02(土) 16:15:08
普通にif分で比較する分にはtrue、TRUE、false、FALSEが混在して入ってても問題なく通るよね?
VARIANT_BOOLか・・・今、COMまわりやってるから、なんか見落としてそうだ。。。

671 :デフォルトの名無しさん:2006/12/02(土) 17:39:59
質問です!!
最近、VisualC++をするようになったんですけど、
なんかAPIというのと、MFCがあるみたいなんですが、
APIを使って勉強です。
ここで、ちょっと困ったことが・・・・ピクチャボックスに簡単な図を書いたらピクチャボックスをはみ出してかかれるんですけど、
これをどうにかしたいんですが、どうしたらいいですか?


672 :671:2006/12/02(土) 17:41:09
あっ
勉強です>勉強中
に訂正ですw

673 :デフォルトの名無しさん:2006/12/02(土) 18:05:57
upして。

674 :デフォルトの名無しさん:2006/12/02(土) 18:53:20
671と同じ質問をどこかで見た

675 :デフォルトの名無しさん:2006/12/02(土) 18:57:39
>>671
> これをどうにかしたいんですが、どうしたらいいですか?
適当にやりたいようにやってそのまま死んでくれ

676 :デフォルトの名無しさん:2006/12/02(土) 18:59:35
まったく同じじゃないが、>>622がそのまま解決に導いてくれそうだな

677 :デフォルトの名無しさん:2006/12/02(土) 19:07:47
普通にやったらはみだすわけがない。
むしろはみ出す方が高度なテクニックが必要

678 :デフォルトの名無しさん:2006/12/02(土) 19:11:04
あっ
本当ですねw
ありました☆
これで一度やってみます!
ありがとーございました〜

679 :デフォルトの名無しさん:2006/12/02(土) 19:18:59
>>670
if (b)のようにしたり、false系との比較は、混在してもコンパイルできてしまうし、問題なく動く。
bool以外でture系との比較はまずい。

680 :678です:2006/12/02(土) 19:36:12
>>622
ココの所で書かれている事でお聞きしたいんですけど、
これってピクチャボックスに書いてるんじゃなくて、ウィンドウに書いてる事になるんじゃないですか?

一般的にピクチャボックスに書くときってどういうコードになるんでしょうか?


681 :デフォルトの名無しさん:2006/12/02(土) 19:45:20
>>680
外から書こうとした時点で微妙に間違っている。
ピクチャボックスをサブクラス化して、
OnPaintをオーバーライドして描画するのが本来のやり方。

682 :デフォルトの名無しさん:2006/12/02(土) 19:56:17
>>671
まず、紙に書いてそれをスキャンするといいよ。
そうするとはみ出さない。

683 :デフォルトの名無しさん:2006/12/02(土) 20:19:45
すみません。ピクチャボックスのサブクラス化というのがわかりません。
一般的な方法を教えてるようなサイトがあれば、教えてもらえませんか?

684 :デフォルトの名無しさん:2006/12/02(土) 20:30:06
サブクラス化を一般的でないとのたまうきか。

685 :デフォルトの名無しさん:2006/12/02(土) 21:11:35
>>684
すみません。勉強不足なんで、勉強しようと思いまし・・・。
教えてもらえないでしょうか?

686 :デフォルトの名無しさん:2006/12/02(土) 21:22:08
本買え
それで勉強しれ
ネットで手に入る知識だけでやろうなんざ10年早い

687 :デフォルトの名無しさん:2006/12/02(土) 21:23:32
まず自分で勉強してくれ。
どれも基本的な事だし、文字でしか伝えられない掲示板より
イラストとか写真で解説してあるサイトや本で勉強したほうがいいよ。

688 :デフォルトの名無しさん:2006/12/02(土) 21:24:52
ヤフーファイナンスから株価のデータをダウンロードするプログラムを作りたいのですが、
参考になるサイトや書籍等がありましたら紹介してください。

689 :デフォルトの名無しさん:2006/12/02(土) 21:35:48
VC関係あるのか?

690 :デフォルトの名無しさん:2006/12/02(土) 21:40:13
まったくもって関係無いな


691 :デフォルトの名無しさん:2006/12/02(土) 21:40:54
vc2003 でビルド時に出る警告について教えてください。

スタティックライブラリを作成してます。
いま A、B、C のライブラリを作るとして、B は A を、C は A と B を参照します。
これらをビルドすると以下の警告が出ます。(複数)

warnning LNK4006 "関数A"は A.lib で定義されています。2 つ目以降の定義は無視されます。 : [C のファイル]

たぶん B.lib が実質 A + B になっていて C がリンクをするときに同じ関数が A.lib と B.lib に存在するために
上の警告が出るのかなと考えましたが、どう対処して良いやら分からず悩んでます。

どうすれば警告を消すことが出来るでしょうか。


692 :685:2006/12/02(土) 21:44:52
ありがとうございました☆
本買います!

693 :デフォルトの名無しさん:2006/12/02(土) 21:45:58
メニューバーから
[表示]−[その他のウィンドウ]−[出力]で消えます。

694 :デフォルトの名無しさん:2006/12/02(土) 21:55:03
そもそもwarningは無視してかまわん

695 :デフォルトの名無しさん:2006/12/02(土) 22:16:11
CPadみたいなの無いですか?

696 :デフォルトの名無しさん:2006/12/02(土) 22:18:01
CPadのどんなことを求めているのか。

697 :デフォルトの名無しさん:2006/12/02(土) 22:20:26
>>695
ありますよ
つ CPad

698 :デフォルトの名無しさん:2006/12/02(土) 22:27:03
iPodじゃだめか?

699 :勉強中:2006/12/03(日) 08:42:19
Visual C++ 2003 SP1をインストールしたら
エディターの1行目が変になりました。

700 :デフォルトの名無しさん:2006/12/03(日) 09:20:43
かわいそうに

701 :デフォルトの名無しさん:2006/12/03(日) 12:03:11
VCのエディタについての質問です。

関数の「定義位置を表示」からその定義に飛んだ後、
元の場所に戻りたいのですが、どうすればいいのでしょうか?

違うファイルならCtrl+Tabで戻れますが、
同じファイル内だった場合は、ちょっと参照したいだけなのにすぐに戻れなくなり、
いちいち元の場所を検索して戻っています。

どうにかならないでしょうか?

702 :691:2006/12/03(日) 12:18:32
>>693
あっはっはっはっは。
いや、私は視界に入れてないんでいいんですけれど。w

>>694
確かに警告の内容からしても無視していいような気もしているのですが。
消せる物なら消したいな、と思ってまして。ダッテ アレガ 200クライ デルンダモン

お二方とも、ありがとうでした。


703 :デフォルトの名無しさん:2006/12/03(日) 12:28:59
質問するスレを選んだ方がいい。

704 :初心者@質問:2006/12/03(日) 17:52:58
VisualC++2005 EEでコンパイルすると、
たまに下のような警告が出ます。
『'localtime' が古い形式として宣言』の“形式”って何でしょうか?

//*:;;;;;:*★*:;;;;;:*★*:;;;;;:*★*:;;;;;:*★*:;;;;;:*
d:\chap14\gendate\gendate\date.cpp(13) : warning C4996: 'localtime' が古い形式として宣言されました。
c:\program files\microsoft visual studio 8\vc\include\time.inl(114) : 'localtime' の宣言を確認してください。
//*:;;;;;:*★*:;;;;;:*★*:;;;;;:*★*:;;;;;:*★*:;;;;;:*


705 :デフォルトの名無しさん:2006/12/03(日) 18:09:01
たまに出るのか?
普段は出ない?

706 :初心者@質問:2006/12/03(日) 18:15:38
>>705
調べてみたら、localtime関数を使用したコードで毎回出力されます。
(環境の問題でしょうか?)


707 :デフォルトの名無しさん:2006/12/03(日) 18:19:47
>>704
ttp://www.google.co.jp/hws/search?hl=ja&q=%E5%8F%A4%E3%81%84%E5%BD%A2%E5%BC%8F%E3%81%A8%E3%81%97%E3%81%A6%E5%AE%A3%E8%A8%80%E3%81%95%E3%82%8C%E3%81%BE%E3%81%97%E3%81%9F&client=fenrir&adsafe=off&safe=off&lr=lang_ja

708 :デフォルトの名無しさん:2006/12/03(日) 18:51:39
MSDNライブラリをC4996で調べる、という考えは浮かばないものかね。

709 :初心者@質問:2006/12/03(日) 19:08:39
>>707
ありがとうございました。
「#pragma warningを使う」方法と
「_CRT_SECURE_NO_DEPRECATEを定義する」方法で
警告がでなくなることを確認できました。

710 :デフォルトの名無しさん:2006/12/04(月) 03:30:46
なぁ、普通はF4押してF1やるだろう?

711 :671です:2006/12/04(月) 11:11:38
本を買ってみたんですけど、やっぱりはみ出しました。
>>622
のようにはみ出した部分はクリッピングしないとダメなんでしょうか?

712 :711:2006/12/04(月) 11:18:01
すみません。訂正です。
のようにはみ出した部分は::SelectClipRgn()を使ってクリッピングしないとダメなんでしょうか?
失礼しました。

713 :デフォルトの名無しさん:2006/12/04(月) 11:27:37
>>712
クリッピングしなくてもはみ出ない。
君のコードが間違ってるだけ。

714 :デフォルトの名無しさん:2006/12/04(月) 11:29:22
>>712
やっぱりそうなんですね。
ありがとうございました。

715 :714:2006/12/04(月) 12:36:12
>>713
やっぱりわかんないです。
あの、どういうコードを書くのか、教えてもらえませんでしょうか?

716 :デフォルトの名無しさん:2006/12/04(月) 12:46:33
どういうコードを書いたらはみだすか知りたい

717 :715:2006/12/04(月) 13:03:05
>>716
CWnd *myPICT = GetDlgItem(IDC_PICT);
CClientDC myCLDC(myPICT);
CPen myPen(PS_SOLID, 1, RGB(0,0,255));
CPen *oldPen = myCLDC.SelectObject(&myPen);

CRect myRECT;
myPICT->GetClientRect(myRECT);
myCLDC.FillSolidRect(myRECT, RGB(255,255,255));

myCLDC.MoveTo(10, 10);
myCLDC.LineTo(300, 10);
myCLDC.LineTo(300, 300);
myCLDC.LineTo(10, 300);
myCLDC.LineTo(10, 10);

myCLDC.SelectObject(oldPen);

というふうに書きました。

718 :デフォルトの名無しさん:2006/12/04(月) 13:34:00
理由はわからんが、CWindowDCならはみ出ない。

719 :デフォルトの名無しさん:2006/12/04(月) 14:09:17
>>718
つまり、自分が書いたコードでも本来ならはみ出すことはないって事でしょうか?

720 :デフォルトの名無しさん:2006/12/04(月) 14:11:44
ピクチャーコントロールのウィンドウクラスにはCS_PARENTDCが付いていて
GetDCはそれに影響される。
>ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/devcons_4esj.asp
>The GetDC function retrieves a common, class, or private DC depending on the class style of the specified window.

ということだと思う。

721 :ザライバ:2006/12/04(月) 14:19:35
Visual C++ .NET 2003で、以下のようなソースファイルをコンパイルすると、
関数に4個の引数を指定できません。というエラーが出ます。誰か助けてください。

void main (){
divd2(left,right,&root,&sw);
何かいろいろ
}

void divd2(left,right,sol,sw)
float left,right,*sol
{
何かいろいろ
}

722 :デフォルトの名無しさん:2006/12/04(月) 14:26:03
>>720
ちょっと意味が理解できてないような気がしますが、

つまり、ウィンドウのクリッピング領域をピクチャボックスのクリッピング領域にセットすることになるから、
はみ出してしまうって事になるんでしょうか?

723 :デフォルトの名無しさん:2006/12/04(月) 14:38:47
>>722
違う。
ピクチャーコントロールのウィンドウクラスにはCS_PARENTDCが付いている。
CS_PARENTDCというのは↓
>http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windowclasses/aboutwindow.asp
>Sets the clipping rectangle of the child window to that of the parent window so that the child can draw on the parent.

GetDCはそれの影響で、ピクチャーコントロールのクライアント矩形ではなく、親ダイアログのクライアント矩形でクリッピングされる。
だからピクチャーコントロールの外にも描ける。
GetWindowDCはそれに影響されず、ピクチャーコントロールのウィンドウ矩形でクリッピングされるからはみ出ない。

724 :デフォルトの名無しさん:2006/12/04(月) 14:54:17
>>723
そうでした。ありがとうございます。
てことは、同じような図を描くことになると、
723さんなら、GetWindowDCを使って描かれるって事ですか?
違ってたら、簡略でいいのでコードを書いていただいてもいいでしょうか?
これが最後なのでお願いします。

725 :デフォルトの名無しさん:2006/12/04(月) 14:58:15
>>724
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_cwindowdc.asp

726 :デフォルトの名無しさん:2006/12/04(月) 18:38:29
質問です。

あるコントロール上でマウスカーソルが○秒以上停止
していた時にイベントを発生させたいのですが
どのように記述したらよいのでしょうか?

環境:VC++2005 MFC

727 :デフォルトの名無しさん:2006/12/04(月) 18:49:29
自分で判断する

728 :デフォルトの名無しさん:2006/12/04(月) 18:53:19
>727
自分で判断すると言うことは
マウスカーソルの停止時間を取得して
判定するのでしょうか?
マウスカーソルの停止時間って
取得できるんでしょうか?

729 :デフォルトの名無しさん:2006/12/04(月) 18:57:38
ウィンドウ上でマウスが動いけば必ずWM_MOUSEMOVEが来る
マウスポインタはウィンドウ上にあるが、動いてない場合は来ない
おk?

730 :デフォルトの名無しさん:2006/12/04(月) 19:04:53
>729
なるほど・・・。
つまりWM_MOUSEMOVEメッセージが
○秒以上来なかったらって判断すればいいわけですね。
ありがとうございます。


731 :デフォルトの名無しさん:2006/12/04(月) 19:15:06
>>725
ありがとうございました!
おかげで、目的の物ができました☆

ただ、くぼみと境界線を選択してたら、
右上から右下に、
左下から右下に、若干のズレが生じました。
これってくぼみの部分が影響してるからなんでしょうか?


732 :デフォルトの名無しさん:2006/12/04(月) 19:17:56
まぁそれだけじゃ完璧じゃないが、後は自分で考えなされ

733 :デフォルトの名無しさん:2006/12/04(月) 19:41:52
>>732
そうですねw
ここまでお付き合いいただき、ありがとうございました!

734 :デフォルトの名無しさん:2006/12/04(月) 19:55:24
>>726
TrackMouseEvent(または_TrackMouseEvent)とWM_MOUSEHOVER

735 :デフォルトの名無しさん:2006/12/04(月) 19:56:48
コントロール上にある時だけ必要なのにTrackしてどうすんだよハゲ

736 :734:2006/12/04(月) 20:06:31
>>735
TrackMouseEvent()でウィンドウハンドルと時間を設定しておけば
コントロール上で止まってたらWM_MOUSEHOVERくるけど。

なんか間違ってること書いてたら訂正するが・・・

737 :デフォルトの名無しさん:2006/12/04(月) 20:39:38
>>736
止まって無くても、ウィンドウ内なら動きまくってても来るよ。

738 :734:2006/12/04(月) 20:54:46
>>735
確認しました。
やはりTrackMouseEvent()+WM_MOUSEHOVERでいけるけどなぁ。
環境依存な部分はアンダーバー付きの_TrackMouseEvent()を使っとけばほぼ吸収できるし。

>>737
dwHoverTimeで指定した時間止まってたらWM_MOUSEHOVERが来ましたが、
動いてるときはWM_MOUSEMOVEでしたよ。


739 :726:2006/12/04(月) 21:18:23
>>734-738
いつのまにやらレスがいっぱい(^o^)
参考にさせていただきますm(_ _)m

740 :デフォルトの名無しさん:2006/12/04(月) 23:42:22
MFCでグリッドを使いたい場合どうすればいいのですか?
CFormViewにMSGridをはりつける?
CViewからガリガリ自前で書いていく?


741 :デフォルトの名無しさん:2006/12/04(月) 23:55:15
キャストについて教えて下さい。

SetWindowLong(hWnd,GWL_WNDPROC,(LONG)pWndProc);

↑こんな感じでポインタを設定しようとすると
「ポインタをXXX(元の型)からLONGへ切り詰めます」
と警告されます。

逆に元の型のポインタ変数にGetWindowLong()でもってポインタを取得しようとすると
「LONGからより大きいサイズのXXX(元の型)へ変換します」と表示されます。

ポインタも32Bit値だから切り詰められるって事はないと思うのですが、具体的に何が
問題なのでしょうか?

742 :741:2006/12/04(月) 23:57:47
申し訳ない
自己解決しますた

VC8だとデフォで/Wp64ついてんのね

743 :質問:2006/12/05(火) 13:50:20
string型からchar型へは、stringクラスのメンバ関数c_strを利用すれば
可能だということはわかるんですが、
char型からstring型への変換ってどうやってやるんですか?


744 :デフォルトの名無しさん:2006/12/05(火) 14:01:01
たぶんコンストラクタ
標準C++の質問ならC++スレへ行った方がいいよ

745 :質問:2006/12/05(火) 14:13:46
>たぶんコンストラクタ
こんな感じですか?
char char_ABC = "abc";
string str_ABC = charABC;

>標準C++の質問ならC++スレへ行った方がいいよ
こういうところですか?
C++なら俺に聞け(入門篇)
http://pc8.2ch.net/test/read.cgi/tech/1160897843/l50

746 :デフォルトの名無しさん:2006/12/05(火) 14:16:01
おまえは小学生か
それぐらい自分で考えろよ

747 :質問:2006/12/05(火) 14:18:54
すみません。(ここもC++だと思ったので。スレッドが多すぎてよく分からないんです。)

748 :デフォルトの名無しさん:2006/12/05(火) 16:26:50
ここは、MicrosoftのC++コンパイラ・IDE製品のVisual C++のスレだ。

749 :デフォルトの名無しさん:2006/12/05(火) 18:03:06
#include <iostream>
using namespace std;
int main()
{
cout << "Hello!" << endl;
}

Visual C++ 2005 Express Edition を使って↑のC++のプログラムをコンパイルしようとしたのですが
↓のようにエラーが出てしまい対処法がわからず困っています。
どのようにすればいいのでしょうか?

------ ビルド開始: プロジェクト: cppテスト, 構成: Debug Win32 ------
コンパイルしています...
cppテスト.cpp
(省略)cppテスト.cpp(9) : fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。
'#include "stdafx.h"' をソースに追加しましたか?
ビルドログは "(省略)" に保存されました。
cppテスト - エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========

750 :デフォルトの名無しさん:2006/12/05(火) 18:08:42
#include "stdafx.h"
あるいは、プロジェクトを作るときに、空のプロジェクトのチェックを入れておく。

751 :749:2006/12/05(火) 18:20:55
>>750
空のプロジェクトにチェックを入れることで「Hello!」の文字が表示されました、
ありがとうございます。

752 :デフォルトの名無しさん:2006/12/05(火) 23:11:57
MDIアプリケーションで子フレームを作成するとメインフレームの[ウィンドウ]メニューに
その子フレームのタイトルが追加されますが、その子フレームのタイトルを変更する
以外にメニューの表示名を変更することってできますか?

753 :デフォルトの名無しさん:2006/12/05(火) 23:25:07
使ってるフレームワークがわからんからなんとも

754 :デフォルトの名無しさん:2006/12/05(火) 23:25:31
MFCのソースみたけどたいしたことやってないよ

755 :デフォルトの名無しさん:2006/12/06(水) 04:10:05
3×3行列の転置行列ってどうやったらいいですかね?

756 :デフォルトの名無しさん:2006/12/06(水) 07:32:06
>>752
そんなアナタに、WM_MDISETMENU

757 :デフォルトの名無しさん:2006/12/06(水) 10:40:23
>>755
行と列を入れ替えればいいと思うよ

758 :デフォルトの名無しさん:2006/12/06(水) 11:24:26
IQ高い猿は踏み台を使ってバナナ取れるけど、
IQ低いと3×3行列の転置行列さえ途方にくれる。

759 :デフォルトの名無しさん:2006/12/06(水) 11:33:09
さあ、はやく割り箸詰め作業に戻るんだ
      i             |   |
     |     _____人__/
      i_,,,  r´_       _〉
     ((テヽ!´ _   _    /_  _j
      ゝ_i    ̄    |    ̄ i
      ゝ ヽ   (_、__j_)ヽ  ノ
    , イ ヽ、       ii   /
  /   \ ヽ  =ニ= /
/      \ `ーj---‐i´i\
          \/    !j  \
      _ ,,,,_  /\         \ ,c、.c、
 ___/´ 、、ヽ/i  :|三三三三三三三\.ヽ.ヽ二l 
  // \ \/ .i /           ,.-、-、| |: |
  | | 、\ \ \!            |:|       !
  | ヽ_,r.'\rj)、rj)          !|       |
  \___/  /                |      /
     /  /                  |      |


760 :デフォルトの名無しさん:2006/12/07(木) 21:32:47
ド素人です
ttp://homepage2.nifty.com/natupaji/DxLib/dxprogram.html#N21

このチャットのサンプルをコピペしてもコンパイルできません
環境は
エディタ =VS2005 standard edition VC++
OS = XPsp2


警告が1つで
「ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください」
ってやつと

エラーメッセージは3つありますがどれも同じ
「指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。」
ってやつです

lstrlen とか lstrcpy っていう関数を使うところでエラーになってるみたいなんですが
どのように対策すればいいかご教授お願いします

761 :デフォルトの名無しさん:2006/12/07(木) 22:11:38
>>760
エラーが出た行数くらい書いてくれよ

762 :デフォルトの名無しさん:2006/12/07(木) 22:14:03
>>760
プロジェクトのプロパティを開いて構成プロパティの全般にある文字セットをUnicodeからマルチバイトに変更。

763 :デフォルトの名無しさん:2006/12/07(木) 22:47:32
>>761
すいません、ちょこっと手直し入れてるんで行数は当てにならないんですよね
えーと、
StrLength = lstrlen( Message ) + 1 ;
lstrcpy( ScreenString[ i - 1 ], ScreenString[i]);
lstrcpy( ScreenString[StringY], AddString );
この関数のところでエラーが出てるみたいです
基本的にこの関数のところでは手直ししていません

>>762
こんなエラーがでました
libjpeg.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _jtransform_execute_transformation が関数 _main で参照されました。
libjpeg.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _jcopy_markers_execute が関数 _main で参照されました。
libjpeg.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _jtransform_adjust_parameters が関数 _main で参照されました。
libjpeg.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _jtransform_request_workspace が関数 _main で参照されました。
libjpeg.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _jcopy_markers_setup が関数 _main で参照されました。
libjpeg.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _write_stdout が関数 _main で参照されました。
libjpeg.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _read_stdin が関数 _main で参照されました。
libjpeg.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _read_scan_script が関数 _parse_switches で参照されました。
libjpeg.lib(jpegtran.obj) : error LNK2019: 未解決の外部シンボル _keymatch が関数 _parse_switches で参照されました。

764 :デフォルトの名無しさん:2006/12/08(金) 00:12:15
おもちゃじゃないんだからさ

765 :デフォルトの名無しさん:2006/12/08(金) 00:39:41
>>763
リンクするライブラリが足りないんじゃね。

766 :デフォルトの名無しさん:2006/12/08(金) 01:19:49
visual c++ 2005 expressを使ってるのですが
過去に作ったC言語のソースをどうやって利用するのか教えてください。
ソースは開けるんですけど、実行することができないです。

767 :デフォルトの名無しさん:2006/12/08(金) 09:53:35
初心者だったら入門書でも買って勉強すればいいよ
勉強もしないで適当にやってみたけど、できないから掲示板で質問
そんなやつに教えてやるだけ無駄

768 :デフォルトの名無しさん:2006/12/08(金) 11:06:31
>>766 MSDNの「Visual C++ ガイド ツアー」を読め

769 :デフォルトの名無しさん:2006/12/08(金) 11:33:01
>>760
<windows.h>をインクルードしろ。lstrlen/lstrcpyなんかはその中で宣言されている。

770 :デフォルトの名無しさん:2006/12/08(金) 12:33:10
素人は黙ってた方がいいと思うよ

771 :デフォルトの名無しさん:2006/12/08(金) 14:44:11
>>760 のやつは馬鹿でも簡単にゲームがつくれるライブラリらしいけど
馬鹿にはやっぱり無理のようだな

772 :デフォルトの名無しさん:2006/12/08(金) 16:29:56
タスクマネージャのようにプロセスのメモリ使用量を監視するソフトを組みたいんですけども
プロセスのメモリ使用量ってどうやって調べるのでしょうか

なんか良い本とかありますか?

773 :デフォルトの名無しさん:2006/12/08(金) 16:38:52
インサイドMicrosoft Windows
http://store.nikkeibp.co.jp/item/main/148910047380.html

774 :デフォルトの名無しさん:2006/12/08(金) 16:46:40
まぁなんつーか
DXをやんわりと包むライブラリがあるだけで作れるゲームなんて
無くても作れるゲームだけだし

775 :デフォルトの名無しさん:2006/12/08(金) 19:46:11
_ui64toaでULONGLONGを文字列に変換できるのは
よいのですが、逆は関数がみあたりません。
なんかよい方法はないですか?

vc++6.0

776 :デフォルトの名無しさん:2006/12/08(金) 19:56:18
std::istringstream使えないか?
だめなら、_strtoui64、sscanfの書式%I64uなんかがVC 6でも使えると思う。

777 :デフォルトの名無しさん:2006/12/09(土) 01:23:49
最初の最初でつまづきました・・・
ソフトはVisual C++ 2005 Express Edition

http://www14.atwiki.jp/garyohosu/pages/5.html
このサイトのサンプルでは成功したんですが・・・

http://www.stat.phys.kyushu-u.ac.jp/~ryokawa/cbegin2_3/html4/cbegin_c1_s2.html#s_hello_world
このサイトの一番最初のコードを入力してもビルドメニューに実行が現れません(F5+Ctrlでも不可)

cppファイルを実行させるにはどうすればいいんでしょうか・・・

778 :デフォルトの名無しさん:2006/12/09(土) 01:33:09
cppファイルは実行ファイルではないので実行できません

779 :デフォルトの名無しさん:2006/12/09(土) 01:40:01
>>778
実行しないでどうやって表示させるんですか?

780 :デフォルトの名無しさん:2006/12/09(土) 01:45:41
つ CINT

781 :デフォルトの名無しさん:2006/12/09(土) 01:57:58
>>780
関数やソフトではなく使い方が知りたいんですが・・・

782 :デフォルトの名無しさん:2006/12/09(土) 02:33:40
>>781 >>768

次スレのテンプレには
| 三′  .._     _,,..  i三 |
ト、ニ| <でiンヽ  ;'i"ィでiン |三.| MSDNも読まずに質問とな!
', iヽ!  、 ‐' /  !、 ーシ |シ,イ
を追加すべきだな。

783 :デフォルトの名無しさん:2006/12/09(土) 03:05:14
>>782
読んだけど俺の問題の解決になるようなことは何一つ書いてない

もうええわ


784 :デフォルトの名無しさん:2006/12/09(土) 08:27:03
質問する側の説明手抜きだから
どうやったらそんな状況になるのか理解不能
掲示板だから何やったか見れないのが残念

785 :デフォルトの名無しさん:2006/12/09(土) 09:39:21
>>777
エスパーになってやろう。
今のVC++はプロジェクト作らないとビルドできないぞ。
下のページではプロジェクトを作らなくてもビルドできた古いバージョンを想定して書かれているようだ。

786 :デフォルトの名無しさん:2006/12/09(土) 12:14:25
PictureBoxのサイズを途中で変更したいんですがどうしたらいいんでしょうか?
Basicだとpicture.Widthやpicture.Heightで変更ができるんですが、VC++にはないようで・・・。


787 :デフォルトの名無しさん:2006/12/09(土) 12:24:24
コントロールもウインドウだから
ウインドウサイズ変更で調べればいい

788 :デフォルトの名無しさん:2006/12/09(土) 12:28:10
コントロール サイズ変更
でぐぐったら1発でみつかるな

789 :デフォルトの名無しさん:2006/12/09(土) 12:40:59
>>787>>788
ありがとうございます。
そうだったんですか。
ピクチャボックス サイズ 変更って調べたときは出なかったのに・・・コントロールなんですね(笑
1発でした!

790 :デフォルトの名無しさん:2006/12/10(日) 03:47:20
.net2005ですが、WindowsFormアプリで追加したクラスから
listBoxにアイテムの追加等を行うにはどうしたらいいでしょうか?

791 :デフォルトの名無しさん:2006/12/10(日) 06:41:09
listBoxの追加用メソッド使えばいい

792 :デフォルトの名無しさん:2006/12/11(月) 11:45:54
ダイアログリソースで設定した各コントロールの
サイズ、位置、フォントが、プロパティシートに割り当てて
表示したときに変わってしまいます。リソースで設定した
状態を維持したまま表示するにはどうしたらよいのでしょうか?

793 :デフォルトの名無しさん:2006/12/11(月) 12:24:27
リソースでコントロールにフォント設定できたっけ?

794 :デフォルトの名無しさん:2006/12/11(月) 13:16:51
失礼しました。フォントに関してはコントロールではなく
ダイアログそのものの設定です。

795 :デフォルトの名無しさん:2006/12/12(火) 21:35:50
MDIアプリケーションで開発しています。
実行するとメインフレーム+チャイルドフレームが表示されますが、
そのときメインフレームのメニューである[ウィンドウ]メニューに
チャイルドフレームのタイトルが自動で追加されています。
このメニューを消したいんですがどうしたらよいでしょうか?

796 :デフォルトの名無しさん:2006/12/12(火) 21:39:17
またお前か
自分でMFCのソースも読めないなら贅沢言うな

797 :デフォルトの名無しさん:2006/12/12(火) 21:46:45
VS.net2003のVC++でMFCを使ってプログラムを作っております
とても困ったことになったので、どうかお知恵を貸してください

状況は以下のようなものです

CWndクラスを継承して作成されたコントロール(標準ではなく)があります
そしてそのヘッダファイルとリブファイル、DLLファイルだけが提供されています
このコントロールは自分でメンバ変数として定義してCreateすることで使うことができます
しかし、そのコントロール上でマウスがダウン/アップしたなどのメッセージを受け取る
方法が分からなくてとても困っているという状況です

コントロール関連の大まかな処理の流れとしては、

ヘッダ内でメンバ変数として定義

OnInitDialog内で生成&初期化&表示

メッセージ受け取りで処理

これだけなのですが、この一番下の処理だけがどうしてもできません
普通のコントロールであればプロパティウィンドウを使ってメッセージ処理の定義?が
できるのですが、このコントロールではできません

メッセージマップと書いてある辺りが怪しいとは思うのですが、リソースエディタでダイアログにペタペタ貼って
メッセージ処理を追加した時に自動生成されるコードと同じようにヘッダとCPPに書いてみても駄目でした

周りに聞けるような人がいないので途方にくれております
かといって、これを使わないというのは無理です(とても自作や他で代用できるようなシロモノではないので)

何かアドヴァイスまたは参考になるようなサイトを教えて頂けませんでしょうか・・・

※なお、諸事情によりそのコントロールの開発者に直接聞くことはできません

798 :デフォルトの名無しさん:2006/12/12(火) 22:55:57
Visual C++ 2003で、
タブと全角スペース だけ 表示したいのですが。
無理ですか?

799 :デフォルトの名無しさん:2006/12/13(水) 02:08:46
>>797
CWnd::SubclassWindow を呼びつつ、
プロパティウィンドウでメッセージ選んでけばOKだと思う。

>>798
WhiteSpace でも始めるの?

800 :デフォルトの名無しさん:2006/12/13(水) 06:45:40
カタカナで「リブファイル」って言うヤツ初めて見た

801 :デフォルトの名無しさん:2006/12/13(水) 09:37:45
>>799
いえ、普通のエディターなら全角とタブと改行とか細かく表示設定できるのに、
なんでVCのエディターは出来ないのかなぁ〜〜と。


802 :デフォルトの名無しさん:2006/12/13(水) 09:51:09
外国製ソフトだと、まともに日本語扱えなかったりするけど

803 :デフォルトの名無しさん:2006/12/13(水) 13:01:35
>>801の言う普通のレベルがすごく世間とズレてる気がする

804 :デフォルトの名無しさん:2006/12/13(水) 22:45:32
質問です

VC++でWindowsフォームアプリケーションからゲームを作ろうと思っています
フォームにピクチャボックスを設置する時にいらない部分は透過させたいのですが
画像に透明色を塗ってもピクチャボックスの場合は透過しません
ラベルとかボタンの場合は透過するんですが、どのような処理を行えばいいのでしょうか

805 :デフォルトの名無しさん:2006/12/13(水) 22:56:44
>>804
つDirectX

806 :デフォルトの名無しさん:2006/12/13(水) 23:05:30
できればDirectXを使わずに行きたいのですが
やっぱりピクチャボックスの透明色を透過させるのは無理ですかね?

807 :デフォルトの名無しさん:2006/12/14(木) 00:47:31
>>804の後半2行が良くわからんけど、

-LayeredWindow
-DIBで自前で頑張る


808 :デフォルトの名無しさん:2006/12/14(木) 01:11:55
後半2行はFormのプロパティでTransparencyKeyっていうのが透明色らしいんで
設定したその色でラベルやボタンのフォント、もしくは背景色にすると透過するんですよ

LayeredWindowはMeでも大丈夫ですかね?
DIBは今の自分の技量じゃとてもじゃないけど実装できそうにないです


素直にDirectXかなぁ

809 :デフォルトの名無しさん:2006/12/14(木) 01:30:48
.NETの話だろ?
Bitmap.MakeTransparentとかで透過情報を持たせれば
描画時に勝手に透過処理されるんじゃないの?

810 :デフォルトの名無しさん:2006/12/14(木) 02:11:49
ありがとうございます
Bitmap.MakeTransparentでなんとかできそうです
ちょっと使い方わかんないけど、試行錯誤してみます

811 :デフォルトの名無しさん:2006/12/14(木) 13:22:47
vc++6.0でビットマップを表示させたいのですがビットマップをインポートしてもエラーが起きます。
すごい馬鹿な質問ですが例えば写真などを表示することはできないのでしょうか?
256色以内であればペイントなどで作成し表示できるのでしょうか?超初心者なのでぜひ教えてください。。

812 :デフォルトの名無しさん:2006/12/14(木) 13:33:20
ビットマップなら簡単

813 :デフォルトの名無しさん:2006/12/14(木) 18:32:25
超初心者ならまずそれらしい本で練習しれ

814 :デフォルトの名無しさん:2006/12/14(木) 23:18:23
VC++.net
CFormViewで開発をしています。
ウィンドウをドラッグして動かしたときに、アプリケーションの左上の(x,y)座標
を取得したいのですが、うまくいきません。
WM_MOVINGとWM_MOVEを試してみたのですが、WM_MOVEには起動直後、
WM_MOVINGに至ってはウィンドウを動かしても一度も呼ばれませんでした。
何を使えば(x,y)を取得できるんでしょうか。

815 :デフォルトの名無しさん:2006/12/14(木) 23:39:17
あげ

816 :デフォルトの名無しさん:2006/12/14(木) 23:41:11
>>814
SDIならCFrameWndで取得しないと意味ないよ。

817 :デフォルトの名無しさん:2006/12/15(金) 00:06:16
>>816
ありがとうございます、無事取得できるようになりました。
このOnMove(int x, int y)の
x,yは何をさしているんでしょうか。。。

818 :デフォルトの名無しさん:2006/12/15(金) 00:31:43
MSDN読めよ・・・

819 :デフォルトの名無しさん:2006/12/15(金) 00:34:43
しかしMSDN読むようなやつだったら、そもそもこんなところで訊いていないだろう。

820 :デフォルトの名無しさん:2006/12/15(金) 13:42:05
MSDQN プ

821 :デフォルトの名無しさん:2006/12/15(金) 15:05:41
>>820
面白くないよ?

822 :デフォルトの名無しさん:2006/12/15(金) 17:11:05
windowsx.h見れば幸せになれる

823 :デフォルトの名無しさん:2006/12/15(金) 18:01:09
質問です。
親ダイアログ(モーダル)からボタンなどのイベントでモードレスの子ダイアログを
動的に作成し、そのポインタを配列に保持しています。
ある子ダイアログが終了(閉じられた)したら、親に知らせたいんですけど
どうしたら子ダイアログが閉じたというのが分かるのでしょうか?


824 :デフォルトの名無しさん:2006/12/15(金) 19:44:45
WM_USER+なんちゃらのメッセージを送る
イベントとかを使う

825 :デフォルトの名無しさん:2006/12/15(金) 19:49:03
そこ、WM_USERではなく、WM_APPだろ。

826 :デフォルトの名無しさん:2006/12/15(金) 19:49:53
常識的に考えてWM_APPだろ

827 :823:2006/12/15(金) 19:54:10
>>824-826
レスありがとうございます。
自作のメッセージを作って投げるってことですね。
参考にさせていただきます。

828 :デフォルトの名無しさん:2006/12/15(金) 20:14:28
いきなりつまづきました。ご助言お願いします。
VisualC++2005 Express Editionです。

#include <string>

using namespace std;
String adress_str;

に対して下記のようにエラーがです。
: error C2065: 'String' : 定義されていない識別子です。
: error C2146: 構文エラー : ';' が、識別子 'adress_str' の前に必要です。
: error C2065: 'adress_str' : 定義されていない識別子です。

string宣言に対してエラーが出ているのだと思うのですが標準ライブラリでサポート
されているハズなので#include <string>以外は必要ないと思うのですが・・・
(他には<stdio.h>と <tchar.h>をstdafx.hでincludeしています)

829 :デフォルトの名無しさん:2006/12/15(金) 20:39:39
Stringではなく、string。

それとも、.NET FrameworkのSystem::Stringを使いたければ、#using <mscorlib.dll>

830 :828:2006/12/15(金) 21:09:38
>>829

ありがとうございました。Sを小文字にすることで解決いたしました。

831 :デフォルトの名無しさん:2006/12/15(金) 21:42:33
VC6が、コーディング中に、一時的にフリーズしまくるという現象が発生してしまいました。
ある特定のプロジェクトだけそうなります。
数年前にも一度起きてかなり悩まされた記憶があります。
原因は何でしょうか?

832 :デフォルトの名無しさん:2006/12/15(金) 21:45:49
メンバ自動表示や型情報ヒントとかのオプションをはずせば解決するのは
わかってるのですが、
対して大きなプロジェクトでもないのにフリーズする原因ってなんでしょうか?

833 :デフォルトの名無しさん:2006/12/15(金) 21:58:46
>>832
では、そのプロジェクトを丸ごと圧縮しUPしてください。検証します。

834 :デフォルトの名無しさん:2006/12/16(土) 01:41:34
質問です。

 htmlをEncoding::GetEncoding(51932)で読み込んだ後に、Split()で分解しています。
分解した後の文字列に「1漢」のように任意の桁数の数字と漢字一文字からなる文字列
があるのですが、これに対してremoveやinsertなどさまざまな方法で漢字の部分を削除
しようとしても操作内容が全く反映されていません。
 data->Remove(0,1)などの操作をしても結果が全く変わらないのですがどうしてなのでしょうか?

835 :デフォルトの名無しさん:2006/12/16(土) 02:02:37
VC++.net SDIで開発をしてます。

Cxxx myDL;
myDL.DoModal();

で新しいダイアログを表示したいのですが、
新しく表示するダイアログの起動位置はどうやって設定すればよいのでしょうか。

836 :デフォルトの名無しさん:2006/12/16(土) 02:34:18
VS.NETとかVC++.NETとか使ってる人で知ってる方にお聞きしたいのですが
既に、VS6.0やVC++6.0がインストールされている環境に
VS.NETやVC++.NETをインストールして、6.0と.NETを併用する事って可能でしょうか?

837 :デフォルトの名無しさん:2006/12/16(土) 02:47:14
できる

838 :デフォルトの名無しさん:2006/12/16(土) 03:16:27
>>837
そうですか。
同時にインストールすると、動作が不安定になったりとかの
弊害とかはまったく無いですか?

839 :デフォルトの名無しさん:2006/12/16(土) 03:32:11
>>834
.NET?
もしそうなら、それ相当のスレに行った方が良いかも。

>>835
OnInitDialog で SetWindowPos

840 :デフォルトの名無しさん:2006/12/16(土) 04:50:31
http://www.vipper.org/vip401437.jpg

841 :デフォルトの名無しさん:2006/12/16(土) 06:35:03
>>838
関連付けが混乱する弊害は(勿論)ある。

842 :デフォルトの名無しさん:2006/12/16(土) 10:23:49
>>834
System::Stringはimmutable、一度作られた文字列の内容を書き換えることはできない。
data->Remove(0, 1)とやってもdataの中身はそのままで、
Removeした文字列が新しく作られて戻り値として返される。
data = data->Remove(0, 1);なんかはどうだ。

843 :デフォルトの名無しさん:2006/12/16(土) 10:44:52
>>842
ご助言いただいた方法でうまくいきました。
大変助かりましたありがとうございます。

844 :デフォルトの名無しさん:2006/12/16(土) 10:58:19
標準ライブラリで使えるstringを.NET;FrameworkのString形式に変換することは
できないでしょうか?
標準ライブラリのstringを使って生成したWebアドレスを使って
下の文を使いたいのですが型があわないのでエラーが出て困っています。

wrGETURL = WebRequest::Create(sURL);  // sURLはString形式

よろしくお願いします。


845 :デフォルトの名無しさん:2006/12/16(土) 11:15:38
std::string s;
gcnew System::String(s.data(), 0, static_cast<int>(s.size()));

846 :デフォルトの名無しさん:2006/12/16(土) 14:49:14
>>841
ああ、それはそうですよね。
とりあえずインストールしてみようかな。

847 :デフォルトの名無しさん:2006/12/16(土) 16:13:58
Visual Studio 2005 Academic Edition
スタティックライブラリを作ってる。
メインのプロジェクトでlibファイルを作るんだけど、
そのライブラリを同じソリューションのほかのプロジェクトで使いたい。

・いちいちlibファイルをコピーする
・debugフォルダとかにパス(ライブラリの)を通す

のほかにやる方法はない?
あとメインプロジェクトのヘッダファイルも使いたい。


848 :デフォルトの名無しさん:2006/12/16(土) 16:28:49
出力先をソリューション内でで共通にしたらいい。
そうすればリンカの追加の依存ファイルのところを$(OutDir)/HogeHoge.libと共通して入力できるはず。

849 :デフォルトの名無しさん:2006/12/16(土) 16:34:30
>>848
トンクス!

850 :844:2006/12/16(土) 19:31:45
>>845
gcnewではエラーになったのでnewを用いたらできました。
ありがとうございます。


851 :デフォルトの名無しさん:2006/12/18(月) 00:33:21
連続した線をLineToを使って描き、さらにMoveToExを使って次の座標を移動する、
という作業を繰り返し行おうとしたんですけど、
1つ目の連続線を描いた後にMoveToExで座標を変えた場合、なぜか、前の連続線の終点からずっと線が続いており、
全ての連続線が1本の線となってしまいました。

これはどうしてなんでしょうか?

int a=0;
for(int i = 0; i < 1000; i++){
if(temp[i] != a){ a = temp; MoveToEx(hDC, x[i], y[i], 0);}
else{
LineTo(hDC, x[i], y[i]);
}

というプログラムです。tempで連続線の種類を判定します。
種類が違っていた場合は座標を移動させて、次の連続線までLineToで線を描き続きます。あとはそれの繰り返しです。


852 :デフォルトの名無しさん:2006/12/18(月) 00:35:40
>>851
>これはどうしてなんでしょうか?
いいか、一つ良いこと教えてやる
プログラムは書いた(記述した)ようにしか動かない

つまりはそういうことだ

853 :デフォルトの名無しさん:2006/12/18(月) 03:28:07
そうですよね。
それでは、私がしようとしてる事に対して、このプログラムは間違ってるって事ですよね。
どうしたらいいんでしょうか?

854 :デフォルトの名無しさん:2006/12/18(月) 06:07:10
> どうしたらいいんでしょうか?
コードを見直せ。

上限が 1000 だと動作確認し辛いだろうから、
10 ぐらいとか、規模を小さくして希望どおりに動いてるか確認するべし。

855 :デフォルトの名無しさん:2006/12/18(月) 08:51:36
ありがとうございます。
やってみます

856 :デフォルトの名無しさん:2006/12/18(月) 17:46:35
質問です。
リストコントロールをレポート形式で表示しています。
(2列×10行、チェックボックス付き)
ボタンのクリックイベントで新規行の挿入と同時に
選択状態にしたいのですが特に設定するような関数は
見あたりませんでした。どうやって設定すればよいのでしょうか?


857 :デフォルトの名無しさん:2006/12/18(月) 18:51:38
何が?

858 :ちょろねずみ:2006/12/19(火) 14:47:27
どなたかご存知の方、教えて下さい。
VC++ 6.0 で作成したレギュラーDLLをVB 6.0 で作成したプログラムから呼ぶと、
「ファイルが見つかりません: test.dll」となります。このDLLとVBプログラム
は、同じファルダにあります。

859 :名無し:2006/12/19(火) 15:12:46
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):親プロセスは1+2+・・・+60の計算を行う。親はその結果を子プロセスに伝え、さらには子はその結果を孫にプロセスに伝える
               親から子、子から孫に伝えられる結果をプロセス間通信で伝える為のプログラムを作成せよ
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: Visual Studio 2003
 [3.3] 言語: C
[4] 期限: 今すぐにでも
[5]特になし


860 :デフォルトの名無しさん:2006/12/19(火) 15:43:38
終了コード 0 (0x0)。
が顔文字に見えて仕方がない今日この頃。

861 :デフォルトの名無しさん:2006/12/19(火) 18:26:50
常駐プログラムを作成したいと考えてるのですが、
作り方が分かりません。
ある時間が来たら、別のプログラムを実行したり、
時間を記録するようなプログラムを作りたいのです。
教えて下さい。。

862 :デフォルトの名無しさん:2006/12/19(火) 19:50:19
>>861
まずはWindowsアプリの作り方を勉強してください

863 :デフォルトの名無しさん:2006/12/19(火) 21:27:27
フィールドに配列を宣言しようとすると複合型は認められません手出てくるんだけど、
これって配列をクラスのprivateに設定できないってこと?

864 :デフォルトの名無しさん:2006/12/19(火) 21:41:47
VC2005Express Editionを使用しているのですが
win32のwindowsアプリケーションが選択できません。
アプリケーションの種類の欄で選択できるのは、コンソールアプリケーションだけなのですが
windows.hをインクルードで着ませんし。

どなたかご存知の方教えてください。

865 :デフォルトの名無しさん:2006/12/19(火) 21:51:35
Express Editionじゃ選択できなくて普通だから気にしなくていい。

866 :デフォルトの名無しさん:2006/12/19(火) 21:53:42
>>864
PlatformSDKインストールしてないと、そうなると思う。

867 :デフォルトの名無しさん:2006/12/19(火) 22:00:13
つ http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/

MSDNが無料でしかも日本語で読める時代なのに…

868 :デフォルトの名無しさん:2006/12/19(火) 22:13:01
>>866,867
ありがとうございます。
DLしてきます。

869 :デフォルトの名無しさん:2006/12/19(火) 23:05:56
System::Stringでの文字コードの扱いについて教えてください。

環境:WindowsXPSP2,VisualC++2005 Express Edition

下記のページのサンプルコードを書き換えて日本語(EUC)のHPからデータを
吸い上げるプログラムを書いています。

ttp://support.microsoft.com/default.aspx/kb/815657/ja

StringはUnicodeで宣言されているため、本来取得したい日本語列が
化けて抜けてしまい(おそらくエンコードでエラーとなり消されている)
困っています。

sLine = objReader->ReadLine(); (sLineはString^ 型です)

この部分がWebデータの取得部分のハズですので取得時に
文字コードの変換ができればうれしいのですが、
解決策はありますでしょうか?

よろしくお願いします。

870 :デフォルトの名無しさん:2006/12/19(火) 23:45:15
>>869
.Netはスレ違い。

871 :デフォルトの名無しさん:2006/12/20(水) 02:10:42
System::String が関係してくる質問が頻繁に出てくる訳だが…

ぐぐれよ。
MSDN ぐらい嫁よ。

872 :ちょろねずみ:2006/12/20(水) 19:00:35
教えて下さい。
VB6のプログラムからVC++6で作成したMFCレギュラーDLLを呼ぶと、
「ファイルが見つかりません」エラーになります。
VBのプログラムファイルとこのDLLは、同じ場所にあります。
1. VB側:
(1) サンプルコード
Public Declare Function GetNezumi Lib "choro.dll" () As Long
Sub test()
Dim lngRet As String
lngRet = GetNezumi()
End Sub
2. VC側:
(1)サンプルコード
extern "C" __declspec( dllexport) int WINAPI GetNezumi()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// 通常関数の本体はこの位置にあります
return TRUE;
}
(2)プロジェクト名:choro
(3)DLLの種類: MFCレギュラーDLL
3. VBでのエラーメッセージの内容
実行時エラー'53':
ファイルが見つかりません: choro.dll

以上、よろしくお願いします。

873 :デフォルトの名無しさん:2006/12/20(水) 19:27:57
内容の不明なバイナリをテキストに変換するプログラムを、
VC2005で作成しています。(C++では作成できました。)
バイナリ→アスキーが出来ません。
問題点を指摘いただけませんでしょうか?

CStdioFile fin;
CString text,filename,temp;
edit1.GetWindowText(filename);
if (filename == "") return;
if(!fin.Open(filename, CFile::modeRead | CFile::typeBinary)) {return;}
text = "";
while (fin.ReadString(temp) !=NULL){
text = text + temp + "\r\n";
}
edit2.SetWindowText(text);
fin.Close();

874 :デフォルトの名無しさん:2006/12/20(水) 19:29:20
>>872
それだとシステムフォルダにdllを探しに行くと思うよ。

875 :デフォルトの名無しさん:2006/12/20(水) 19:37:02
>>873
頭大丈夫か?

876 :デフォルトの名無しさん:2006/12/20(水) 19:48:00
>>875
勉強不足なのは判ってるんですがorz
データ解析を全て手で計算してきた弊害ですね。
生まれてくる時代間違えました。すいません。

877 :デフォルトの名無しさん:2006/12/21(木) 05:05:33
>>873
> C++では作成できました
って事なら、動くものはコピペ(とちょっとした変更)で出来るかと思うぞ。

ファイル入出力は、fstream / FILE もつかえる。
MFC 使っているなら CString::Format を参考にするのも良いかもしれない。

878 :デフォルトの名無しさん:2006/12/22(金) 04:32:37
VC2005でAfxMessageBoxz()使ってメッセージBOX表示するだけで3日もかかったわ。
_T()マクロの存在教えんHELP氏ね!!

879 :デフォルトの名無しさん:2006/12/22(金) 16:43:50
ヘルプにも書いてあるが、お前が気付かなかっただけ。人のせいにするな。

880 :デフォルトの名無しさん:2006/12/23(土) 00:01:05
MFCでフォルダを削除したいのですが、
APIでいうRemoveDirectoryのような関数はないのでしょうか

881 :デフォルトの名無しさん:2006/12/23(土) 00:42:10
>>880
CFile::Remove()じゃディレクトリの削除は出来ないので、無いのでは?
APIじゃダメなの?

882 :デフォルトの名無しさん:2006/12/23(土) 08:15:17
プロジェクトが複数あり、一つ一つ変えるのが面倒なのでソリューション全体に、
プリプロセッサの定義や、拡張命令セットを設定したいのですが、
どのようにすればいいでしょうか?

883 :デフォルトの名無しさん:2006/12/23(土) 08:48:01
馬鹿だったらひとつひとつ手で変えるしかないだろう。

884 :デフォルトの名無しさん:2006/12/23(土) 13:07:30
>>883
馬鹿じゃなかったらどうやるの?

885 :デフォルトの名無しさん:2006/12/23(土) 13:17:56
頭つかう

886 :デフォルトの名無しさん:2006/12/23(土) 17:51:48
すいません。2年ぶりくらいにプログラミング再開したんですが

昔は
std:vector<int> v;
v[5] = 0;

みたいにすぐに代入できてたんですが、新しくVC2005 買ってみたらエラーでやんのw
宣言だけでは実際にvが確保(インスタンス生成?)されてないみたいなんですけど
この場合どうやって書くのがいいんでしょうか?

コンストラクタで配列の個数を指定するか、一度push_backなりしてやれば、実際に生成されるみたいなんですが
(reserveでは駄目でした)

ダミーをpush_backするのも書き方として汚いし、どうかけばいいの?

887 :デフォルトの名無しさん:2006/12/23(土) 18:26:00
よろしくお願いします。

画像処理なのですが、memcpyが含まれるループを回すとき、扱う容量が大きいとときどきフリーズしてしまうのですが、
memcpyはコピーする容量が大きいと、コピーが完了しないうちに次の命令に移ったりしますか?
すぐ次の行にはループの回数を表示するprint文があるだけで、WaitForSingleObjectなどは使っていません。

888 :デフォルトの名無しさん:2006/12/23(土) 18:27:07
>>886
vectorのメンバ関数くらい自分で調べろ。

889 :デフォルトの名無しさん:2006/12/23(土) 18:28:00
>>887
大方memcpy()であらぬメモリを壊しているのだろ。
アドレスとサイズを出力してよくチェックして味噌。

890 :デフォルトの名無しさん:2006/12/23(土) 18:36:16
>>886
あほか

891 :デフォルトの名無しさん:2006/12/23(土) 18:41:39
んーわかんね
Vecotrを 配列と同じに書いちゃってるプログラムなんだけどさー
実行すると「確保されてねーよ」って例外エラードカドカでるんだけど、、、

昔はこれで動いてたのに、いつの間にこんな仕様になったんだ?
俺の作ったプログラムじゃないんだけどねw どう直せば動くんかのう

892 :デフォルトの名無しさん:2006/12/23(土) 18:43:03
> いつの間にこんな仕様になったんだ?
頼むからこっちでやってくれ
ttp://pc8.2ch.net/test/read.cgi/tech/1164376614/l50

893 :デフォルトの名無しさん:2006/12/23(土) 18:59:46
えーそんな酷い話?
vector<byte> buffer;
buffer.reserve(filesize);

ファイルの読み込み先として &buffer[0] ってポインタで渡してるつもりなんだろうけど
コンパイルは当然通って、いざ実行してみるとSTLのソース内で例外エラーが出る

簡単つーなら、対策一言で書いてくれよ。書けるならなwww

894 :デフォルトの名無しさん:2006/12/23(土) 19:06:36
標準C++ならC++スレにでも行け
ここはVC

895 :デフォルトの名無しさん:2006/12/23(土) 19:09:06
VCのSTLの問題だろw 以前のVCなら通ってたし


896 :デフォルトの名無しさん:2006/12/23(土) 19:12:40
1年生からやり直し
出直せ

897 :検索中:2006/12/23(土) 19:15:42
答え書いてよ。やり方わかるならさw
くだらねーレスはいらねーつーの

898 :887:2006/12/23(土) 19:24:47
>>889
レスありがとうございます。
メモリのアドレス等の表示はやったことがありませんでした。
これから勉強します。
もうひとつだけ教えていただきたいのですが、
memcpyはコピー開始で次の行に移るのか、
それともコピー完了で移るのかを教えてください。
バッファを複数使って並列に作業をさせているらしいのですが、
後者であれば意味が無いと思いまして…。
すみませんが、よろしくお願いします。

899 :デフォルトの名無しさん:2006/12/23(土) 19:26:50
関数は全てを終えてから制御を返す。
一般に何か並列に作業をしたかったらマルチスレッドにしろ。

900 :887:2006/12/23(土) 19:42:54
>>889
レスありがとうございます。
メモリのアドレス等の表示はやったことがありませんでした。
これから勉強します。
もうひとつだけ教えていただきたいのですが、
memcpyはコピー開始で次の行に移るのか、
それともコピー完了で移るのかを教えてください。
バッファを複数使って並列に作業をさせているらしいのですが、
後者であれば意味が無いと思いまして…。
すみませんが、よろしくお願いします。

901 :デフォルトの名無しさん:2006/12/23(土) 19:45:57
DMA転送と勘違いしてるんだと思うよ。

902 :デフォルトの名無しさん:2006/12/23(土) 20:07:49
>std:vector<int> v;
>v[5] = 0;
おやおや、>886ではこのように書いているのに
>vector<byte> buffer;
>buffer.reserve(filesize);
>893ではいきなりreserve()していることにしちゃいましたよ。
この馬鹿は構うとどこまで書いてくるんでしょうかね。

903 :デフォルトの名無しさん:2006/12/23(土) 20:09:58
>>902
構うなよヴォケ

904 :887:2006/12/23(土) 21:32:53
すみません、間違いました…>>900


>>899
ありがとうございます。
疑問が解けました!

DMA転送の速度等に問題がある場合は、
データ取り込み用のバッファを複数用意して
順番に使うのは効果があるということでしょうか…?

905 :887:2006/12/23(土) 21:43:06
DMA転送は入力デバイスとメモリ間の問題で、
どちらにせよVC上ではマルチスレッドを使わなければ
並列処理のような制御はできないということでしょうか?

906 :デフォルトの名無しさん:2006/12/23(土) 21:43:14
print文入れたらかなり遅くなる

907 :デフォルトの名無しさん:2006/12/23(土) 21:46:43
マルチスレッド=並列処理

908 :デフォルトの名無しさん:2006/12/23(土) 21:49:15
スレ違いだけど
CPUが並列処理できないと擬似マルチ

909 :887:2006/12/23(土) 22:36:26
よくわかっていないためにおかしな発言をしてしまってすみません…。
memcpyの転送元は画像入力デバイス上のメモリにあるフレームバッファで、
転送先はグローバル変数で定義されているようです。
これはDMA転送になると思うのですが、
このような場合、フレームバッファを複数用意して順番に、
データ取り込み→memcpyを行うメリットはありますか?
過去に実験をした人が、バッファの数を1つから2つにして、
順番に使ったところ大きな画像データも扱えるようになったと言っていたのですが…。

910 :デフォルトの名無しさん:2006/12/23(土) 23:30:46
そりゃぁ、フレームバッファの仕様次第じゃね?

911 :デフォルトの名無しさん:2006/12/24(日) 00:31:27
これからC言語を始めるんですが、2005 Express EditionとToolkit 2003では初心者にはどちらがいいんですか?
今までプログラム等をしたことがなくまったくの初心者です
Expressの方にはエディタも付いているみたいなんですがそれ以外にも違いがあれば教えてください
環境はwindows XPのホームです

912 :デフォルトの名無しさん:2006/12/24(日) 00:34:32
Toolkit2003はもう配布してないんじゃなかったっけ?

913 :検索中:2006/12/24(日) 01:03:05
>std:vector<int> v;
>v[5] = 0;
おやおや、>886ではこのように書いているのに
>vector<byte> buffer;
>buffer.reserve(filesize);
>893ではいきなりreserve()していることにしちゃいましたよ。
この馬鹿は構うとどこまで書いてくるんでしょうかね。

ぷ、どっちでもいいでしょ。例なんだし
別にReserveしないで [5]につっこんだから、問題になってるんじゃねーし
まぁ、どうせあんたもわかんねーんだろw

VC2003とかなら通ってたコードだし、調べても
「vectorのiteratorはポインタと同じ(ただし厳密には保障されない)」とか書いてるやつ多いしな
2005のSTLなって実装が変わったって話だし、意識したことない人は知らないんでしょ?w



914 :検索中:2006/12/24(日) 01:05:14
ちなみに、reserveした後、 &buffer[0]してみても領域確保されてないからw
実際に何か突っ込まないと、reserveも未処理のままなんでしょ。



915 :デフォルトの名無しさん:2006/12/24(日) 01:49:09
一応.NET 2003あたりからvectorのイテレータはポインタでなくなったと思う。
特にこういうチェックをしていたわけではなかったと思うけど。

916 :デフォルトの名無しさん:2006/12/24(日) 03:44:35
「914 = 検索中」じゃないけど
例えば、ファイルからデータを読み込んでそれを
vector<char> vec; に格納する一番エレガントな方法ってどんなでしょうね?
自分の知識だと…
char *pbuf = new char[size];
でバッファを一旦確保して、ifstream::read()等でバッファにデータを読み込んで
それから vector にコピーするって方法しか思いつきません…
ファイルの読み込み関数で直接空のvectorを指定出来れば楽だけど、
それだと関数側でvectorを操作してバッファを確保してもらう事になるんですが
そんな便利な関数ってありましたっけ?

917 :916:2006/12/24(日) 03:49:27
一旦 char *pbuf = new char[size] に読み込んでからは
copy(pbuf, pbuf + size, back_inserter(vec));
でコピー出来るんだけど、ファイルの読み込み関数で直接vector指定ってのは、やはりムリ?

918 :916:2006/12/24(日) 03:59:05
ちょっと話が脱線するけど、そもそも
vectorは「ベクトル」なのか「ベクター」なのか。
自分はベクトルって言ってたのですが、なんか違う様な。
やっはり配列って意味の場合はベクターなのかな。

919 :デフォルトの名無しさん:2006/12/24(日) 04:05:25
>>918
厳密に言えばvectorはvectorでしかない

920 :デフォルトの名無しさん:2006/12/24(日) 04:13:13
>>919
更に分からなくなったw
参考までにあなたは何と呼んでますか?

921 :デフォルトの名無しさん:2006/12/24(日) 04:30:35
ふぇくた〜
ふぇくとr−
ヴぇくた
ヴぇくtr−

うぇww
舌っ足らずなもので・・・

922 :デフォルトの名無しさん:2006/12/24(日) 08:16:20
>>918
ベクトルとベクタは違うと思うの?
どちらもvectorなんだけど。

923 :デフォルトの名無しさん:2006/12/24(日) 09:14:04
>>922
いや、読みはどうなのかなと。
なんか配列って意味では、ベクタって言ってる人が多い様な気が…
そもそも使い分けが必要なのかとか。
もうどっちでもOKって事で良いですか?

924 :デフォルトの名無しさん:2006/12/24(日) 09:26:11
単に発音を日本語表記する際の違いなんだけど、ベクトルっていうと
力学などで使う力の方向などを表す用語と解釈されそうなんで、俺は
ベクタと言ってるな。

925 :デフォルトの名無しさん:2006/12/24(日) 09:28:17
>>916-917
std::istream is;
vector<char> vec;

typedef std::istreambuf_iterator<char> isbuf_iter;
std::copy(isbuf_iter(is), isbuf_iter(), back_inserter(vec);

また、std::vectorの要素は連続することが保障されているから、
予めresizeしておけばis.read(&vec[0], vec.size());なんてこともできる。

926 :デフォルトの名無しさん:2006/12/24(日) 09:32:54
プログラミングに関係ない話やVCじゃなくてC/C++の話になると人が増えるね
ROMってるやつが大勢いるんだな

927 :デフォルトの名無しさん:2006/12/24(日) 11:39:33
>>925
なるほど、色々ありますね。
やっぱC++は複雑だ。勉強になりました。

928 :デフォルトの名無しさん:2006/12/24(日) 16:39:16
これの無料版インストールする時みんな登録した?

929 :デフォルトの名無しさん:2006/12/25(月) 02:35:54
した

930 :デフォルトの名無しさん:2006/12/25(月) 14:10:59
Visual C++2005なんですがツールバーの位置を固定する方法を教えてください。

931 :デフォルトの名無しさん:2006/12/25(月) 14:27:20
VC++ 2005 MFCです。
アニメーションコントロールでaviファイル再生、停止後、画面に残っている再生画を
消したいのですが、どうすればいいでしょうか?

932 :デフォルトの名無しさん:2006/12/25(月) 14:34:09
VC++2003 MFCで組んだアプリ(Releaseビルド)が異常終了するときにWinXPで
「問題が発生したため〜を終了します。ご不便を・・・」のダイアログが
バグの種類によって表示される場合とされない場合があるようです。

どのような場合に表示されずに、いきなりアプリが落ちてしまうのか
ご存知の方いればお教えください。
今までの感じからは、アプリ本体でなくDLLで異常の場合に表示されないことが
あったような気がしますが検証はできていません。

933 :天パ:2006/12/25(月) 16:19:29
VC++で電卓プログラムを作成しなければいけないのですが、全くわからず進みません、自分のためにはなりませんが、コードを教えていただきたいです。

934 :デフォルトの名無しさん:2006/12/25(月) 16:23:38
宿題スレに行けカス

935 :デフォルトの名無しさん :2006/12/25(月) 17:24:31
かなり初心者の質問なんですが。。。調べ方も分からないのでここで
ここで質問させてください

パソコン上の画面を画像として保存というかその画像をつくるのには
どうしたらいいのですか?よくソースを出す時やmixiの画像とか・・・。
ああいう画像(?)ってどうやったら作れるのですか??
質問の意味がよく分からないかも知れませんが誰か分かる人いましたら
教えてください。


936 :デフォルトの名無しさん:2006/12/25(月) 17:28:19
>>935
http://www13.plala.or.jp/kymats/study/MULTIMEDIA/ScreenCapture.html

937 :デフォルトの名無しさん :2006/12/25(月) 17:35:14
>>936
スクリーンキャプチャっていうんですね
ありがとうございます!

938 :デフォルトの名無しさん:2006/12/25(月) 17:54:01
>>935
つ[PrintScreen]
つ[PC初心者]

939 :デフォルトの名無しさん:2006/12/25(月) 23:06:57
本に書いてあるソースを丸写しして警告がでたんだけどvisual C++って誤爆多い?

940 :デフォルトの名無しさん:2006/12/25(月) 23:33:02
殆ど無い。とりあえず警告メッセージup

941 :デフォルトの名無しさん:2006/12/25(月) 23:54:24
どうせ_CRT_SECURE_NO_DEPRECATEとかPOSIX 関数とかだろ。

942 :デフォルトの名無しさん:2006/12/26(火) 00:09:22
webからじゃなくてCDからのインストールでも登録必要なんですか?
ここには登録必要ないって書いてあるんですが聞いてみたら必要っぽい回答が帰ってきたんですが・・・

ttp://homepage3.nifty.com/mmgames/c_guide/p_vc2005.html

943 :デフォルトの名無しさん:2006/12/26(火) 00:21:13
そんな登録もできないほど後ろめたい人生を送っているのか。

944 :デフォルトの名無しさん:2006/12/26(火) 00:23:07
>>943
いろいろ大変なんdねすよ・゚・(つД`)・゚・

945 :デフォルトの名無しさん:2006/12/26(火) 00:30:07
個人情報なんてどうせどこかから漏れるもんなんだから、気にするな。
死ぬしか方法がなくなるぞ。

946 :デフォルトの名無しさん:2006/12/26(火) 00:47:59
で結局CDからでも登録必要なんですか?

947 :デフォルトの名無しさん:2006/12/26(火) 00:51:20
Webから公開当初ダウンロードしたものだけど要らんかったよ

948 :デフォルトの名無しさん:2006/12/26(火) 00:55:57
ありがとうございます
CDからインスコして見ます

949 :デフォルトの名無しさん:2006/12/27(水) 20:58:01
質問!
プロパティページ内にタブコントロールを表示することってできないんですか?
シートのリソースにタブはっ付けてみたんだけど表示されない・・・orz

950 :デフォルトの名無しさん:2006/12/27(水) 22:13:18
できる

951 :デフォルトの名無しさん:2006/12/27(水) 22:30:26
>>949
ttp://m--takahashi.com/bbs/default.aspx?c=14109

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

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)