■過去ログ置き場に戻る■ 1- 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

★初心者に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を再ロードしますか?

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

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


■過去ログ置き場に戻る■ 1- 次250 最新50
DAT2HTML 0.33f Converted.