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


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

VisualC++ 相談室【9】
1 名前:kng ◆XTitdn3QI6 :02/11/10 11:59
VisualC++関連の話題を扱うスレッドです。

前スレ
http://pc3.2ch.net/test/read.cgi/tech/1022499000/l50

2 名前:デフォルトの名無しさん :02/11/10 12:08


3 名前:デフォルトの名無しさん :02/11/10 13:17
>>1
あとでホテル来てね

4 名前:デフォルトの名無しさん :02/11/10 16:46
自分で作ったstatic link libraryを使用しようと思っているのですが、
特に気をつけなければいけないことはありますか?

例えば、色々なソースを見てみると
・debug版とrelease版を分ける
ということをしている物を見つけることができました。

.hファイルを全部集めてincludeし、.libファイルをリンク
するだけでよいのでしょうか?

5 名前:4 :02/11/10 17:00
最後の方の書き方がわかりにくいので付け加えます

例えば、static link libraryが内部的に使用するクラスを
cpp側でincludeしていた場合、使用する側はそれも
includeしなくてはならないのでしょうか?
簡単に表してみると下のようなイメージです

staticlib.h
classAについての定義のみ

staticlib.cpp
#include "inneruse.h"としてこれを使用

user.h
#include "staticlib.h"
#pragma comment(lib, "staticlib.lib")
#include "inneruse.h" // ←必要かどうか?

user.cpp
staticlib.hのクラスclassAを使用

また逆にuser.cppで直接使わなければならないもの
<string>や"windows.h"などはインクルードの必要はるのでしょうか?

6 名前:デフォルトの名無しさん :02/11/10 17:25
dllをコンパイル時に組み込むことはできますか(exeのみで渡したい)
できるなら方法を教えてください。よろしくお願いします。

7 名前:デフォルトの名無しさん :02/11/10 17:26
VCの設定について質問です。

独自クラス(.h、.cpp)を作りました。そのクラスをプロジェクトで使いたいと思い、
[オプション]のディレクトリタブでインクルードファイルの場所にその独自クラスがあるパス
を指定し、独自クラスの.hをincludeし、実際に独自クラスのインスタンスを作ってみたのですが、
コンストラクタとデストラクタの外部参照未解決でリンクエラーとなってしまいます。
どうやら実装部分である.cppファイルを見つけられていないようです。

いちいちプロジェクトに .h、.cppファイルを追加しなければ使えないのでしょうか?

8 名前:デフォルトの名無しさん :02/11/10 17:29
>>5
やってみればいいんじゃ・・・

9 名前:デフォルトの名無しさん :02/11/10 17:33
>>6
できない

10 名前:6 :02/11/10 17:43
>>9
そんなこといわないでよろしくお願いします。

11 名前:デフォルトの名無しさん :02/11/10 17:44
>>10
どうやら条件はいくつかあるけど出来るみたい。
http://www2.strangeworld.org/uedakana/sahra6138.jpg

まぁ、MSにDL3はあるんで何とかなるでしょう。


12 名前:デフォルトの名無しさん :02/11/10 18:07
VC++6.0である場所の変数の値が知りたくてprintfを使ったのですが
Win32アプリでは標準出力がだせなくこまっています。

ソースファイルの特定の場所で変数の値を知るにはどうすればいいでしょうか?

13 名前:デフォルトの名無しさん :02/11/10 18:12
>>11
最近ご活躍のようですな。
URL でばればれ。

14 名前:デフォルトの名無しさん :02/11/10 18:21
>>13
strangeworldでjpgだからね。

15 名前:デフォルトの名無しさん :02/11/10 20:38
>>11みたいな奴は、ム板をもってしてもアク禁にできんのか?

16 名前:sage :02/11/10 20:45
VC++5.0 のprfessionalとEnterpriseとで
出来ることの違いを知りたいのですが。

Enterpriseは、単にprofessionalに、いろいろな機能を
付加したものと考えてよろしいんでしょうか。
それとも、会社でのイントラネット用につくられたEditionで、
professionalでの個人向けの機能は省かれたものと考えて
よろしいんでしょうか。

17 名前:デフォルトの名無しさん :02/11/10 20:48
XPのスタイルに対応する方法は?
紹介しているページがまだ無い!?

98/ME/2000で動かないってのは無しで
manifestはだめね…

18 名前:デフォルトの名無しさん :02/11/10 20:58
ここでいいのかな
NTDDKダウンロード出来ません。
CD注文するしかないのですか?

19 名前:デフォルトの名無しさん :02/11/10 22:21
VC.netの話なのですが、ダイアログボックスのコントロールで、ラジオボタンをグループにして、
DDXで管理するにはどうすればいいのでしょうか。

20 名前:デフォルトの名無しさん :02/11/11 00:43
>>17 に便乗。
http://www.microsoft.com/japan/msdn/windows/windowsxp/xptheming.asp
この通りにやっても、うまくいかず...
SDKは一応 Feb2001以降(Nov2001)が入っているんだが(;´Д`)

21 名前:デフォルトの名無しさん :02/11/11 00:54
>6
 たとえば、DLLをリソースとして持っといて、
実行時に書き出して、LoadLibraryする手もあるし、
面倒なら、DelayLoadすればいい。
 あるいは、「可能だが実用的ではない」でいいなら、
WindowsのLoadLibraryに相当するものを作っちまって、
リソースから直接MyLoadLibraryすることもできよう。

22 名前::02/11/11 21:45
>19
ラジオボタン1をA
ラジオボタン2をB
と仮定すると
ダイアログエディタ上でAの「Group」をTrueにセットして
Aの右クリックからめんバ変数の追加
値タイプ=Value
型=bool
これでできる。
VC6なら三つ以上のラジオボタンをintに割り当てれたけど
.NETはわからない、というか知らない。
というかこちらが教えて欲しいくらいだ。

23 名前:デフォルトの名無しさん :02/11/12 19:05
あるテンプレートライブラリを使おうとしていたのですが、
エラーが出ます。エラー自体は仕方のないこととして、
そのインクルードファイルがどこで使われているのかを確定するために
インクルードスタックの表示を出したいのですが、方法が分りません。
どうすればgccのようにエラーにそのようなものを表示させることが
できるのでしょうか?

環境
IDE VisualC++6.0
コンパイラ、ヘッダ 最新のPlatformSDK、.netSDK

24 名前:デフォルトの名無しさん :02/11/16 16:16
VC6とVC++.NET使っているのですが、
インクルードディレクトリがそれぞれいくつかあるのですが、
これをexportやimportできないんでしょうか?
どなたか知っている方いましたら教えてください。


25 名前:デフォルトの名無しさん :02/11/16 16:28
6 ならツールのオプションでインクルードパスを追加できるところがあっただろう。
.NET は知らない。

26 名前:24 :02/11/16 17:09
>>25
そのことは知っていたんですが、
やはりそこから1個ずつ登録していくしかないみたいですね...。
ありがとう。


27 名前:デフォルトの名無しさん :02/11/16 17:11
VS.NETのMSDNデラックスっていうのを買って登録したら
OSやらサーバーやらオフィスやらいろいろ送られてきたから、
何人かで分けて使ってるけど、これって違法じゃないよね?
マイクロソフトから何か言われた人いる? 

28 名前:デフォルトの名無しさん :02/11/16 17:25
>>27
デラックスなら大丈だろ。
バージョン情報で20桁くらいの番号が
表示されていると思うけどなんて書いてある?

29 名前:デフォルトの名無しさん :02/11/16 17:27
>>27
単発質問スレ市ね

30 名前:デフォルトの名無しさん :02/11/16 17:28
>>27
逮捕しますた

31 名前:デフォルトの名無しさん :02/11/16 17:50
>>27
ここで訊かずに使用許諾書を読めよ。
確か、MSDN ライブラリだけはチーム内に限りピーコ可能、それ以外は
ライセンス者以外使用禁止みたいに書いてないか?

32 名前:デフォルトの名無しさん :02/11/17 17:33
VC++.NETで、自作したメニューのコマンドハンドラを作りたいのですが
ビューやドキュメントクラスのプロパティウィンドウの
「イベント」タブの「メニューコマンド」以下には自作IDが表示されない(ツールバーにのみ登録の時)か
表示されても32776と、素の番号で表示されてしまいます(メニューバーに登録の時)。
当然ここからハンドラを追加しようとすると"On32776"となってしまい、激しく鬱です。

一応メニューバーからコマンドハンドラの追加をすれば出来るのですが不便でなりません。
どなたか解決法・対処法をご存じでしたら教えてください。


33 名前:デフォルトの名無しさん :02/11/18 13:43
age

34 名前:デフォルトの名無しさん :02/11/18 17:20
C++の簡単な文法のみ学んだ状態でVC++.NETを購入しました。
でも何がなにだかさっぱりわからーんヽ(`Д´)ノウワァン
とりあえずヘルプをつついてみてるんですがまずHello Worldまでの道のりさえ見えてきません。
どこかにWinあぷりを作るまでの道のりを記してないでしょうか?
ポインタお願いします。

35 名前:デフォルトの名無しさん :02/11/18 19:37
猫でも出来るプログラミング
http://www.kumei.ne.jp/c_lang/

でもまー、Hello, Worldとか試すならプロジェクトをコンソールアプリで作ればいいだけだが。

36 名前:34 :02/11/18 20:14
>>35

感謝。
ここVC6との橋渡しをかいてくれてるのでこことVC6関連のページを見て頑張ってみようと思います。

それとこんなのあったんでつね・・
「お勉強ページ勝手にリンク」
http://pc3.2ch.net/test/read.cgi/tech/967778156/13

37 名前:デフォルトの名無しさん :02/11/21 22:22
>>34
数年前、それまで使っていたTurboC++のIDEが動作しないパソコンが出てきて
しかたなく、VC++に切り替えた。
しばらくの間、逐次処理の考えたでWindowsを捕らえようとして苦しんだぞ。
C++に慣れる事も大切だけど、まずは、Windowsプログラムになれることだと思う。


38 名前:デフォルトの名無しさん :02/11/22 00:31
ID

39 名前:デフォルトの名無しさん :02/11/22 02:17
VisualStudio.netのC++を使っていますが、
ソースコードをコンパイルしてアセンブルしたソースコードをテキスト形式で出力するオプションは何でしたっけ?


40 名前:デフォルトの名無しさん :02/11/22 02:46
VC6 では /FA?? だった

41 名前:デフォルトの名無しさん :02/11/22 02:49
>>39
ソースコードをコンパイルしてアセンブルしたソースコードなんてのは激しく意味不明だが、
ヘルプ引けば一発で解決すると思われ。
コマンドプロンプトでcl /?とか。

42 名前:デフォルトの名無しさん :02/11/22 03:20
>>40,41
/FAでできました 
ありがとう

43 名前:デフォルトの名無しさん :02/11/22 09:53
何の気なしに cl と bcc のデフォのアセンブル出力を見比べると、
bcc の方が素直で読みやすいね。

44 名前:デフォルトの名無しさん :02/11/22 10:08
>>43
最適化出来てない・・・?

45 名前:デフォルトの名無しさん :02/11/22 17:11
>>43
その分遅くてコードサイズもでかいんじゃないか?
VC++ がさほど優れているとは思わないが、bcc はそれに劣る。

46 名前:デフォルトの名無しさん :02/11/22 18:47
コンパイラが吐くコードが読みやすい必要は無いと思うが・・・

47 名前:デフォルトの名無しさん :02/11/22 20:26
別に優れてるとも言ってないとおもうが・・・

48 名前:デフォルトの名無しさん :02/11/22 20:38
主文を無視して副文だけ拾われても困るのだが・・・

49 名前:43 :02/11/23 03:30
いやさ…bcc って直球勝負な出力するなあ、っていうか…
その時、思ったことをそのまま書いたまでで、
優劣抜きの感想なんで、その辺はご容赦を。

50 名前:デフォルトの名無しさん :02/11/23 03:38
了解したが、それなら最初にそう述べるべきだった。

51 名前:デフォルトの名無しさん :02/11/25 00:00
勝手に優劣に結びつけようとしてる方がどうかと

52 名前:デフォルトの名無しさん :02/11/25 00:50
午前零時に昔話をいきなり始めるのもどうかと

53 名前:デフォルトの名無しさん :02/11/25 18:40
そういえばTurboC++for Windowsは、コンパイル馬鹿っ早だったなぁ。
勉強目的にはあっちの方が良かった記憶がある。

54 名前:デフォルトの名無しさん :02/11/25 19:15
最近のマシンでは、コンパイル速度なんて意識すらしない。

55 名前:デフォルトの名無しさん :02/11/26 01:39
>>53
それは template ガンガン使えたか?

56 名前:デフォルトの名無しさん :02/11/26 19:14
VC7 でも名前空間メンバの宣言と定義を別にすると、
クラスビューが使えない。(鬱

57 名前:デフォルトの名無しさん :02/11/27 04:20
VC6でですが、
現プロジェクトのmain.cpp以外を
スタティックライブラリとして
生成したいのですが、

やっぱり
スタティックライブラリのプロジェクトを作って、
地道に全ソースをプロジェクト追加
しないとダメなのでしょうか?

階層がいっぱいあって、めんどくさいのです。
ビルド→構成→追加(コピー)
から、出来そうな気がするのですが。
出来ないでしょうか?

58 名前:デフォルトの名無しさん :02/11/27 04:36
dspファイルの構造をよく見れ。

59 名前:デフォルトの名無しさん :02/11/27 10:02
externよりinlineで最適化
DLLは遅くない(つーか速い)

# 漏れはMSの回し者ではないが

60 名前:デフォルトの名無しさん :02/11/27 13:15
>>59
「DLLは遅くない」 は理解できるが、「つーか速い」 ってどういう事だ?

61 名前:57 :02/11/27 22:19
普通のプロジェクトと
スタティックライブラリのプロジェクト
を作って、
同じファイルを設定して比較してみました。

# TARGTYPE が 103と104で違ったり
通常は、LINK32= link.exe
ライブラリは、LINK32= link.exe - lib
あとは、
通常の方だけ #ADD BASE LINK32 で、たくさんリンクされてました。

普通のほうに構成を追加して、
(VC上や、dspをメモ帳で)パラメータ真似たり、
コピーしたりしてやったけど、エラーが出ます。
何かヒントください。

もしかして、出来ないのでしょうか?


62 名前:デフォルトの名無しさん :02/11/27 23:53
1 つのワークスペースには複数のプロジェクトを同居させられたと思うけど。
ドラッグドロップで。

63 名前:?? :02/12/02 16:20
COMスレから誘導されてきました。

http://pc3.2ch.net/test/read.cgi/tech/981823340/682-683
についてわかる方、お教えいただけませんか?

64 名前:デフォルトの名無しさん :02/12/02 16:30
DLLのソースで
IFastString* __declspec(dllexport) CreateFastString(const char* psz);

アプリのソースで
IFastString* __declspec(dllimport) CreateFastString(const char* psz);

アプリのリンクで
wara.libを追加

65 名前:デフォルトの名無しさん :02/12/02 16:31

wara.DLLの場合な

66 名前:さいたまななし :02/12/02 16:42
VC++オおみやのそふまぷでげとー

67 名前:?? :02/12/02 16:54
解決しますた。

------/*ifaststring.h*/------
#ifdef _EXPORTING
#define CLASS_DECLSPEC __declspec(dllimport)
#else
#define CLASS_DECLSPEC __declspec(dllexport)
#endif

class CLASS_DECLSPEC IFastString
{
public:
virtual void Delete(void) = 0;
virtual int Length(void) const = 0;
virtual char First(void) const = 0;
};

extern "C"
CLASS_DECLSPEC IFastString* CreateFastString(const char* psz);

でとおりました。

68 名前:?? :02/12/02 16:54
>>64さんアドバイスありがとうございました。

69 名前:デフォルトの名無しさん :02/12/02 20:51
内蔵のエディタでタブを聞かせたいのですがどうすればよいのでしょうか?

70 名前:デフォルトの名無しさん :02/12/02 22:55
vc++なんですが、
d&dで落とされたパスから
ディレクトリかファイルかを判別したいんです。
上手い方法はないものでしょうか?

他スレで質問したらここに逝けと・・・




71 名前:デフォルトの名無しさん :02/12/02 23:04
>>70
GetFileAttribute()

72 名前:デフォルトの名無しさん :02/12/03 16:31
インデントとか自動成型してくれるショートカットなんだっけ?

73 名前:70 :02/12/03 21:41
>>71
ありがとう。

ちなみにフルパスからファイル名や拡張子を抜き出すのに
端から調べて¥とかの位置から割り出して抜き出してんですが、
アホですか?

74 名前:デフォルトの名無しさん :02/12/03 22:07
>>73
自前でやりたくなかったら_splitpath()使え。

75 名前:70 :02/12/03 22:25
ちょっと調べてみたんですが、さっぱりですな。使い方わかりません。
もうちっと勉強が足らんみたいですね、俺も。
自前でやるのに問題ないんなら自前でいいんですけど、楽しいし。

76 名前:デフォルトの名無しさん :02/12/03 23:06
>>75 もちろんバグ無しっていう自信があるなら問題無いがな

77 名前:70 :02/12/03 23:37
なるほど。
じゃあ使い方勉強してきます。
ありがとう。

78 名前:デフォルトの名無しさん :02/12/03 23:53
>>72
ヘルプメニューからキーボードショートカット一覧

79 名前:デフォルトの名無しさん :02/12/04 02:13
>>75
_splitpath()の使い方が理解できないようでは他の関数もろくに使えないと思うけどね。

80 名前:デフォルトの名無しさん :02/12/04 13:56
VC++6で使える
Granola みたいなアドインのつーる
ありますか ヽ(;´д`)ノ

81 名前:デフォルトの名無しさん :02/12/04 15:14
VC++6でむけるあまぐりはありまつか?

82 名前:デフォルトの名無しさん :02/12/04 18:16
>81
ネタがつまらんので首吊りの刑

83 名前:81 :02/12/04 18:27
 ∧||∧
(  ⌒ ヽ
 ∪ 。ノ
  ∪∪

84 名前:71 :02/12/05 01:47
>>73
PathFindExtension() PathFindFileName() を使えば簡単。

動作環境に注意。
Windows 2000, Windows NT 4.0 with Internet Explorer 4.0,
Windows 98, Windows 95 with Internet Explorer 4.0

85 名前:デフォルトの名無しさん :02/12/05 21:19
>>71
多謝!!!
非常に助かります。

86 名前:デフォルトの名無しさん :02/12/10 01:14
(,,ノ゚д゚)ノ

87 名前:デフォルトの名無しさん :02/12/10 01:16
(゚д゚ )
//


88 名前:デフォルトの名無しさん :02/12/10 11:25
⌒Y⌒Y⌒Y⌒Y⌒(。A。)

89 名前:デフォルトの名無しさん :02/12/10 18:19
             (゚д゚)ヌルポー

90 名前:デフォルトの名無しさん :02/12/11 01:07
  ∧_∧
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >_∧∩
  _/し' //. V`Д´)/ ←>>89
 (_フ彡        /

91 名前:デフォルトの名無しさん :02/12/11 01:43
ttp://aa.2ch.net/mona/
ttp://aa.2ch.net/kao/
ttp://aa.2ch.net/aastory/
に要け

92 名前:デフォルトの名無しさん :02/12/11 01:57
>>91
キミは遅れているね。

93 名前:デフォルトの名無しさん :02/12/11 14:58
現在、MFCでアプリ作ってるが、ツールバーに表示する
ビットマップのやつをかっけーのに激しくしたい!

だけど漏れには絵の才能が無いぽ...

そんな漏れと同じあなた! あなたならどうしる?

つかいいとこあったら教えて〜

94 名前:デフォルトの名無しさん :02/12/11 15:04
絵云々ならその道の板のほうがよかろ。

95 名前:デフォルトの名無しさん :02/12/11 15:21
CSVファイルを扱う標準関数ってありますか?


96 名前:デフォルトの名無しさん :02/12/11 17:15
C/C++ 標準という意味なら、無い。

97 名前:デフォルトの名無しさん :02/12/11 17:57
Excelをたたくとか

98 名前:デフォルトの名無しさん :02/12/11 18:15
つーか、そんなに難しくないから自分で書いてみれ。

99 名前:デフォルトの名無しさん :02/12/11 18:43
Windows MeでVC++ 6.0を使っているのですが、
CPropertySheet::DoModalを実行すると
「ハンドルされていない例外は〜〜にあります。 0xC0000005 Access Violation」
と出て強制終了してしまいます。エラーメッセージが出るときと出ないときがあり、
一度でもエラーが出るとPCを再起動するまで同じエラーが出てしまいます。

どなたか対処法を教えていただけないでしょうか?

100 名前:100 :02/12/11 21:10
>>99
ちょっとそれだけでは分からないけど、エラーの原因が CPropertySheetにある
のか CPropertytPage(を使ってるんだよね?)にあるのかを切り分けないと。

101 名前:99 :02/12/11 21:32
>100
エラーが出る位置は、CPropertySheet::DoModal中の
    m_nFlags |= WF_CONTINUEMODAL;
→   HWND hWnd = (HWND)::PropertySheet((PROPSHEETHEADER*)psh);
    #ifdef _DEBUG
この行です。
ただ、プロパティページをCPropertySheet::AddPage()で追加しないと、
エラーは発生しないのです。なのでどちらに原因があるのか判断し辛いのです。

一度発生してしまえば、CPropertyPageからの派生クラスのコードを最小限まで削っても、
エラーが消える事はありません。PCを再起動するとまた正常に動く事もあるのですが。

102 名前:デフォルトの名無しさん :02/12/11 21:48
>>93
馬鹿め!死ね!

103 名前:デフォルトの名無しさん :02/12/11 21:52
酷いこと言うなよ

104 名前:デフォルトの名無しさん :02/12/11 21:55
>>101
>ただ、プロパティページをCPropertySheet::AddPage()で追加しないと、
>エラーは発生しないのです。なのでどちらに原因があるのか判断し辛いのです。

明らかにプロパティページに原因があると思うが・・・

105 名前:質問! :02/12/12 10:45
VC++で作成したアプリを配布する時、
どのインストーラー使ってますか?
インストール時に、ファイルの関連付けも行いたいので、
インストーラー探してるのですが・・・

106 名前:デフォルトの名無しさん :02/12/12 10:54
char 型の文字列を、CString型に変換するにはどうしたらいいでしゅか?

107 名前:デフォルトの名無しさん :02/12/12 10:59
>106
=演算子で暗黙の型変換(?)で普通に代入してますが


108 名前:デフォルトの名無しさん :02/12/12 11:57
ワーカースレッドというのをやろうとして、

'AfxBeginThread' : 2 のオーバーロードは 1 番目の引数を 'unsigned int (void *)' から要求の型に変換できません。(新しい機能 ; ヘルプを参照)

とでるんですがいったいどうすればいいですか?

109 名前:デフォルトの名無しさん :02/12/12 12:02
>>108
1番目の引数に unsigned int (void *) 型のデータを渡してください

110 名前:109 :02/12/12 12:11
じゃねぇよ。
新で来る。

111 名前:デフォルトの名無しさん :02/12/12 12:22
>>108 こういう形になってないのでは?

AfxBeginThread ( worker_thread , ・・・);

UINT worker_thread ( LPVOID pPtr )
{
 ・・・


112 名前:108 :02/12/12 12:39
>>111
それがそうなっているんですよ。
MSDEの記述と違うところがあるとすれば、
ダイアログクラスの内部に書いており、
ヘッダのプロトタイプ宣言で、
UINT MyThreadProc(LPVOID pParam); とし、
cpp内では、
UINT MyClass::MyThreadProc(LPVOID pParam)
{
// 適当な処理
return 0;
}
とし、同クラスの他の関数内から、
AfxBeginTread(MyThreadProc, pObj);
としています。

113 名前:デフォルトの名無しさん :02/12/12 12:47
>>112
それって同じ名前のメンバー関数と、普通の関数があるってこと?


114 名前:デフォルトの名無しさん :02/12/12 12:48
>>112
ダメじゃん

115 名前:108 :02/12/12 13:02
>>113 >>114
どのへんがいけないのか教えてください。

116 名前:108 :02/12/12 13:07
ちなみに、AfxBeginTread で、引数を
MyClass::MyThreadProc としても同様にだめです。

117 名前:デフォルトの名無しさん :02/12/12 13:14
>>115
static 指定してください。

118 名前:デフォルトの名無しさん :02/12/12 13:19
>>115
>> それって同じ名前のメンバー関数と、普通の関数があるってこと?
> どのへんがいけないのか教えてください。

まず質問に返答しろよ。

119 名前:108 :02/12/12 13:34
>>118
ダイアログクラス MyClass 内に、MyThreadProc という関数はありますが、
これはメンバ関数なので、普通の関数はないです。

>>117
static というのは、どの部分に指定すればいいのでしょうか?

120 名前:デフォルトの名無しさん :02/12/12 13:40
>>119
UINT MyClass::MyThreadProc(LPVOID pParam)

メンバ変数で↑こういう関数だと、実際は↓こういう関数になるんだよ。

UINT MyClass::MyThreadProc(MyClass *this, LPVOID pParam)

だから、クラスの外に外に関数を作るか、staticをつけるか。

static UINT MyClass::MyThreadProc(LPVOID pParam)


121 名前:デフォルトの名無しさん :02/12/12 13:41
UINT MyClass:MyThreadProc()
を作ってreinterpret_castしても動くだろう。
激しくお勧め出来ないが。

122 名前:------------------さん :02/12/12 13:50
既出っぽいかな。SDI形式で最初のウィンドウサイズを
指定することってできたっけ??
おしえてください。

123 名前:デフォルトの名無しさん :02/12/12 13:54
>>122
MFC使ってるか使ってないかで答えが違うんだが。

124 名前:------------------さん :02/12/12 14:27
>>123
MFCです。

125 名前:デフォルトの名無しさん :02/12/12 14:33
>>124
http://www.microsoft.com/japan/msdn/library/ja/vclib/html/_mfc_CWnd.3a3a.PreCreateWindow.asp?frame=true

CMainFrame::PreCreateWindow()かな?

126 名前:デフォルトの名無しさん :02/12/12 14:39
VC++ 6.0でMFCを使ってプログラミングしています。

ボタンが押された場合、そのボタンを使えないようにしたい
(VBだとEnabledをFalseにする)のですが、
MFCの場合はどのようにすれば良いのでしょうか。

おそらくCButtonクラスだと思うのですが・・・

127 名前:デフォルトの名無しさん :02/12/12 14:42
>>126
CButtonの親のCWndにあるEnableWindow()を使えばできるよ。

128 名前:126 :02/12/12 15:05
>>127さん
ありがとうございます。

使えないようにはなっていると思うのですが、文字の色は反転してくれないようです。
これも指定しなくてはいけないのでしょうか?

(VBだと文字色が灰色になるあれです)

129 名前:デフォルトの名無しさん :02/12/12 15:13
親と言うかスーパークラス

130 名前:デフォルトの名無しさん :02/12/12 15:15
>>128
m_btn.EnableWindow(FALSE);

うちは、WinXPでVC6だけど、上のコードで灰色になるよ。

131 名前:126 :02/12/12 15:21
>>130さん
間違えてました。
メインウィンドウをEnableWindowしていました(;´Д`)

やり直してみます。

132 名前:126 :02/12/12 17:02
できました!ありがとうございました!!

133 名前:108 :02/12/13 11:35
static 宣言をしたらできました。
ありがとうございました。
ちなみにMFCでやってました。
static とか extern とか、使いどころがいまいちよくわからず難しいです。

134 名前:デフォルトの名無しさん :02/12/13 12:15
VC++7ってどう?
もう移行しても大丈夫なのかな?ライブラリバグってない?


135 名前:デフォルトの名無しさん :02/12/13 12:24
C#でよさそうなもんだがなぁ。

136 名前:デフォルトの名無しさん :02/12/13 12:46
.NETならC#でもなんでも好きなのでよい。
.NETのもWin32APIだけのも作るならVC++7。
.NETはいらないがWindows95をサポートするならVC++6。

バグのないライブラリは無い。

137 名前:デフォルトの名無しさん :02/12/13 13:00
VC++でケプラーの運動方程式をとくプログラムの作り方がわかりません

138 名前:デフォルトの名無しさん :02/12/13 13:03
>>137
宿題は自分でしる!

139 名前:デフォルトの名無しさん :02/12/13 15:57
PostMessage(WM_MY_MESSAGE, 0, 0);
ポストメッセージを使って、2番目の引数を用いて、
"あいうえお" などの文字列を渡したいんですが、どうすればいいでしょうか?

140 名前:デフォルトの名無しさん :02/12/13 16:03
>>139
char *s = "abc";
SendMessage(WM_USER, (WPARAM)s, 0);

SendMessage()なら簡単なんだけど。

141 名前:デフォルトの名無しさん :02/12/13 16:13
Post〜で渡すのは難しいね。
メッセージが処理されるまで帰ってこないSend〜なら生存期間をあまり気にしなくていいけど、
処理を待たずに帰ってくるPost〜だといつ処理されるかわかんないから…

142 名前:デフォルトの名無しさん :02/12/13 16:18
>>139

char str = new char[20];
strcpy( str, "あいうえお" );

PostMessage(WM_MY_MESSAGE, (WPARAM)str, 0 );


メッセージを受けた側で
char* hoge = (char*)wParam;
・・・
delete [] hoge;

こんなんで、いいのかな?

143 名前::02/12/13 16:19
× char str = new char[20];
○ char* str = new char[20];

144 名前:デフォルトの名無しさん :02/12/13 16:23
>>142
勝手に解放するのは激しくやめて欲しい

145 名前:デフォルトの名無しさん :02/12/13 16:25
どこが難しいのか問い詰める気がおきない。

146 名前:デフォルトの名無しさん :02/12/13 16:26
PostMessageで、メッセージだけ渡して、文字列はATOM系のAPIで渡すって手もあるな。
でも、めんどうだな。

147 名前:デフォルトの名無しさん :02/12/13 16:27
違うプロセスにアドレス渡しても、
データセグメントとか違って読めなかったりしないのかな。
この辺がすごい気になる。

148 名前:デフォルトの名無しさん :02/12/13 16:38
GlobalAllocすれば?

149 名前:デフォルトの名無しさん :02/12/13 16:41
>>141
SendMessage()に渡すHWNDが他プロセス・他スレッドの場合
SendMessage()は実質PostMessage()になると思うからSendMessage()って
書いてても気をつける必要がある

>>147
char* str = new char[20];
のように普通の場所からとってる場合は無理

>>139
どのような使い方をするのか書くべきだが >>145 が手本となるような
答えを書いてくれるのだろう

150 名前:デフォルトの名無しさん :02/12/13 16:45
http://digikei.kir.jp/

151 名前:デフォルトの名無しさん :02/12/13 16:52
>PostMessage(WM_MY_MESSAGE, 0, 0);

引数の数から考えてMFCで単純にCWndの派生クラス内の話だと仮定してみたわけだが


152 名前:デフォルトの名無しさん :02/12/13 16:55
派生クラス内かどうかがどのように関係してくるのか知りたいわけだが

153 名前:デフォルトの名無しさん :02/12/13 17:09
普通のMFCアプリはCWndの派生クラスでウィンドウを作るからただそう表現しただけで
つまりごく普通の一般的なウィンドウの話であってプロセス外云々の話ではないと言いたかっただけなわけだが

154 名前:デフォルトの名無しさん :02/12/13 17:10
>>148
GlobalAlloc() ってプロセス越えられるの?

155 名前:デフォルトの名無しさん :02/12/13 17:44
Win16の頃は本当にGlobalだったけど、今は超えられれない。

156 名前:デフォルトの名無しさん :02/12/13 17:46
だよねえ・・・すぐに思い付くのは CreateFileMapping() くらいしか

157 名前:デフォルトの名無しさん :02/12/13 18:43
MFCのダイアログクラスを使ったんだけど、
デストラクタを宣言したいんだけどわかりません。
どうしたらいいでしょうか?

158 名前:デフォルトの名無しさん :02/12/13 19:02
よく他のアプリをみると、
-------------
Time=15
Speed=300
Pause=10
-------------
という感じのテキスト形式のファイルを読み込んで
各パラメータの設定をするのをみますが、これを
やるために参考になる例ってどこかにあるんでしょうか?


159 名前:デフォルトの名無しさん :02/12/13 19:06
GetPrivateProfileString() 系統の

160 名前:158 :02/12/13 19:14
>>159
おお、こんな関数あるんですね。ありがとうです。
ではMSDN読みます。


161 名前:デフォルトの名無しさん :02/12/13 19:31
>>157
MSDN見てください

162 名前:デフォルトの名無しさん :02/12/13 19:33
>>157
見当違いだったら悪いか、終了時に何か処理したいならWM_DESTROYをとらえるべし。

163 名前:157 :02/12/13 23:15
>>162
クラスの終了時、
~ClassXXX
みたなデストラクタに終了処理をいれるはずなんだけど、
ダイアログクラスは、CDialog クラスを継承しているので、
いまいちどう宣言したらいいかわからないんです。

164 名前:デフォルトの名無しさん :02/12/14 02:52
>>147
違うプロセス間でもOKなWM_COPYDATAという割と便利そうな
メッセージがありますよ。

165 名前:158 :02/12/14 08:34
>>159
どうもでした。以下の事が解って、ちゃんとできるようになりました!

INIファイル,GetProfileInt(),WriteProfileInt(),
CxxxApp::InitInstanceに追記してEXEと同じフォルダのiniファイルを使わせる


166 名前:デフォルトの名無しさん :02/12/14 09:13
>>153
なぜ CWnd からの派生だと同一プロセス内にあることになるのか問い詰めたい。

167 名前:デフォルトの名無しさん :02/12/14 12:17
申し訳ない・・・。
これの意味がどうしても解らない→「+=」(カッコは除く)。
教えてたもれ。

168 名前:デフォルトの名無しさん :02/12/14 12:18
>>167
a += 2;

a = a + 2;

169 名前:167 :02/12/14 12:22
>>168
ありがとう。
しかもスレ違いだった。。。
申し訳ない。

170 名前:デフォルトの名無しさん :02/12/14 12:40
申し訳ない・・・
これの意味がどうしても解らない→SetWindowLong(hWnd , IDC_HINSTANCE , 12345);
教えてたもれ。

171 名前:デフォルトの名無しさん :02/12/14 12:54
(,,゚Д゚)∩先生質問よろしいですか?
for( ; memcmp( lpBuf,"FileName=",9 ) ; lpBuf++ );
と言うところでプログラムが落ちてしまいます。
どのように対処すればいいのでしょうか?

LPBYTE lpBuf
LPBYTElpFileBuffer = new BYTE[ dwFileSize ];
SetFilePointer( hFile,NULL,NULL,FILE_BEGIN );
ReadFile( hFile,&lpFileBuffer,sizeof( lpFileBuffer ),&ByteCount,NULL );
CloseHandle( hFile );
lpBuf = lpFileBuffer;

for( ; memcmp( lpBuf,"FileName=",9 ) ; lpBuf++ ); // ここで落ちる

172 名前:デフォルトの名無しさん :02/12/14 14:14
>>171
× ReadFile( hFile,&lpFileBuffer,sizeof( lpFileBuffer ),&ByteCount,NULL );
○ ReadFile( hFile, lpFileBuffer,dwFileSize,&ByteCount,NULL );

> LPBYTE lpFileBuffer
は配列じゃなくてポインタなのでそこでsizeofは無意味だ。

> for( ; memcmp( lpBuf,"FileName=",9 ) ; lpBuf++ ); // ここで落ちる
ついでに、もしファイル内に FileName= というのが無かったらそのまま突っ走って落ちるのでやめれ。

173 名前:デフォルトの名無しさん :02/12/14 14:45
>>172
ご指摘ありがとうございます。
sizeofには気が付いたのですが、&lpFileBufferの’&’のせいでした。
元々配列で準備してたのをnewで確保するようにしたとき消し忘れていたようです。
>ついでに、もしファイル内に FileName= というのが無かったらそのまま突っ走って落ちるのでやめれ。
独自仕様のファイルなのでそれはないのですが、
for( DWORD i = 0 ; i < dwFileSize ; i++,lpBuf++ )
{
if( !memcmp( lpBuf,"FileName=",9 ) break;
}
の様にした方がいいですか?

174 名前:172 :02/12/14 15:26
std::search を使うか、
せめて for( long i = 0 ; i < (long)dwFileSize-9 ; i++,lpBuf++ )
をオススメしたい。

> の様にした方がいいですか?
と俺は思う。仮に不測の事態が発生してそのファイルが壊れてたみたいな場合まで想定して
チェックしておけば、その時にページ違反で落ちるのでなくて、「かくかくしかじかな理由で
エラーとなりました」的な表示をして強制終了、くらいにはできる。
その方があとあと問題が起きたときに発見しやすいので。

175 名前:171 :02/12/14 17:47
MSDNでsearchを調べたのですが、いまいちわからなかったので
>せめて for( long i = 0 ; i < (long)dwFileSize-9 ; i++,lpBuf++ )
>をオススメしたい。
こちらを使わせて頂こうと思います。
ありがとうございました。

176 名前:デフォルトの名無しさん :02/12/14 17:56
>>166
CWndの派生クラスでPostMessage(WM_MY_MESSAGE, 0, 0);
とやればそれはthis->PostMessage(WM_MY_MESSAGE, 0, 0); を意味するからじゃん?

177 名前:デフォルトの名無しさん :02/12/14 18:11
CRichEditCtrlの現在の行間(pixel単位)の取得の仕方教えてくんなまし。

178 名前:デフォルトの名無しさん :02/12/14 19:26
>>176
CWnd::FromHandle(hWnd)->PostMessage(WM_MY_MESSAGE, 0, 0);
っていうのも考えらなくもない。

ま、どこにメッセージを投げるのか >>139 が書いていないのに、訳知り顔で
他プロセス云々いうのはどうかと思った。

179 名前:デフォルトの名無しさん :02/12/14 19:48
>>178
>>139はCWnd::FromHandle(hWnd)->はなくてPostMessage(WM_MY_MESSAGE, 0, 0); しか
書いてないわけだからthis->と仮定するのが自然だと思うんだけどなぁ。
まぁ本人が>>139以降登場してないからどうでもいいっちゃどうでもいいんだけど。

180 名前:デフォルトの名無しさん :02/12/14 20:20
>>175
VC5/6使用の場合
search ではなく
serch  で検索しる
外してたらすまそ

181 名前:デフォルトの名無しさん :02/12/14 20:43
>>180
単にVC++6.0付属のMSDNライブラリ中のSTLアルゴリズムの解説がわかりにくいだけじゃないか?
あれ、動作の解説としては正しいんだろうが、なにがやりたいのかは……

182 名前:180 :02/12/14 21:24
そかSTLの話だったな
すまそ

183 名前:180 :02/12/14 21:26
しかもserchではなくbserchだったか(欝山車能

184 名前:デフォルトの名無しさん :02/12/15 03:07
MSDN の C++ リファレンスは、C リファレンスと同じ人に書き直して欲しい・・・。

185 名前:デフォルトの名無しさん :02/12/15 16:02
Visual C++.NETって
Window2000のService Pack3じゃ正常に動作しないんですか?


186 名前:デフォルトの名無しさん :02/12/15 17:16
動いてるってコトは俺のVC++.netは偽者だったのか…

187 名前:デフォルトの名無しさん :02/12/15 18:01
SDI環境で作業したいのですが
強制的にでも設定する方法はありませんか?

188 名前:デフォルトの名無しさん :02/12/15 18:06
>>187
ウインドウ全部分離させたら?(w

SDIなんて使いにくいだけだっつーの。
ほとんどが最初っからMDIかMDIに切り替えてるだろ。

189 名前:デフォルトの名無しさん :02/12/15 19:30
プログラム言語を何も知らないのですが、C++の入門書みたいなもので
いいのはないでしょうか?よくある本は「C言語を少し知っている人向け」みたいなのが多いです。
通販で購入しようと思っています。

最終的にはDirectXを使えるようになりたいです。

190 名前:毛の生えたブリーフ :02/12/15 20:44
高橋麻奈「やさしいC++」(ソフトバンク)

誤植がありますので以下を参照してください。
http://www.bekkoame.ne.jp/~manachan/

C++は広大な言語仕様ですが、この本程度の知識があればたぶんDirectXを
使いこなせると思います。分かりやすいし、コンパクトな本だからいつでも
どこでも持ち運んで勉強できます。おすすめです。


191 名前:デフォルトの名無しさん :02/12/15 20:46
宣伝は話半分に聞いておきましょう。

192 名前:デフォルトの名無しさん :02/12/15 20:58
>>190
なんだか良さげですがVisualC++でOKですよね?
C++としか、かいていませんが。

193 名前:デフォルトの名無しさん :02/12/15 21:04
>>192
失礼しますた。
ttp://bookweb.kinokuniya.co.jp/imgdata/large/4797311843.jpg
を見たらVisualC++対応と書いてますた。
今から買います。ありがとうございますた。

194 名前:忘れた…… :02/12/15 21:35
#include <vector>
class honya
{
 public:
  honya();
  virtual ~honya();
 protected:
  vector < int > m_intlist;
};

VC++6.0ですけど。とやっても”構文エラー : ';' が '<' の前に必要です。”
とかでるんですけど、何故でしたっけ??

195 名前:忘れた…… :02/12/15 21:36

vectorの行で出ます。

196 名前:デフォルトの名無しさん :02/12/15 21:47
>>194
#include <vector>
これじゃないの?エラーの原因。
何かこれを見る限りじゃ他にもあやしい所は歩けど。

197 名前:デフォルトの名無しさん :02/12/15 21:52
>>196
怪しさ大爆発だろ。
ネームスペースが明らかにおかしい。
using namespace std;
とするか、
std::vector<int>とすべき。

198 名前:忘れた…… :02/12/15 21:54
あ、ネームスペースでしたか。。スマソ

199 名前:デフォルトの名無しさん :02/12/16 00:20
Visual C++.NETインストールして立ち上げたら、
Alert!っていう警戒ダイアログが出まくるんだけど何で?

あと、立ち上げるとノートンにも引っかかるんだがそれもなぜだかわからん・・。
どなたか、なぜなのかご存知の人いません?

200 名前:デフォルトの名無しさん :02/12/16 04:08
ゴルァ!windows.h!なんだこれは!

#define small char

小一時間ハマったじゃねーか!!!!!
いくらなんでもこれはないだろう・・・

201 名前:デフォルトの名無しさん :02/12/16 09:37
>>200
[F12]知らんのか?

202 名前:デフォルトの名無しさん :02/12/16 10:59
F12知っててもこういう普通に使う単語が登録されてるとわかりにくいやね。

203 名前:デフォルトの名無しさん :02/12/16 12:32
おすえて。

CFileで、
Createでは開くんだけど、アペンドオープン出来ない。
フラグがわかんねぇっす。
CFile::modeNoTruncate|CFile::modeReadWrite 
でいけるかと思ったけど、ダメだった。
賢いヒトおすえて。

204 名前:デフォルトの名無しさん :02/12/16 12:53
>>203
その方法で Open して SeekToEnd() じゃない?

205 名前:203 :02/12/16 13:05
>>204
おおっ!!
いけたぁ。ありがとう。
そっかぁ、アペンドオープンなら、
ファイルポインタはファイルエンドになると思ってたよ。
どうも、Cの癖が抜け切れてないな。

マジで助かりました、ありがとう。

206 名前:------------------さん :02/12/16 16:23
MFCです。「プリントアウト」について質問なんですが、
SDIならばフォントサイズを訂正してやればもうすぐ印刷できるのですが、
CFormView(SDIのなかにコントロールボタンやPICTがあるやつ)
の場合で例えばPICT1を印刷したい場合どうすればいいのでしょうか。

207 名前:デフォルトの名無しさん :02/12/16 16:26
>>206
OnPrintで頑張れ

208 名前:デフォルトの名無しさん :02/12/16 16:38
どどどどどどないやねん!w

209 名前:デフォルトの名無しさん :02/12/16 18:49
どどどどど童貞ちゃうわ!

210 名前:デフォルトの名無しさん :02/12/16 21:38
どどどどどどうだかな(藁

211 名前:デフォルトの名無しさん :02/12/17 10:24
いや、まじで教えてくれw。
どうやってプリントアウトするんだ?

212 名前:デフォルトの名無しさん :02/12/17 10:47
で、童貞なのか?

213 名前:デフォルトの名無しさん :02/12/17 14:02
質問変えます。
SDI形式の場合OnDraw関数の中身を印刷しますよね。
こてをあとから追加してメニューバーを押すとなにか表示ってのつくたんだけど
そのOnDrawXyz()ってのがあるとします。この中身を印刷するには
どうしたらいいのですか?ちょっと緊急でおながいします。ちなみに童貞じゃないですはい。

214 名前:デフォルトの名無しさん :02/12/17 14:04
画面表示は何もかも全て OnDraw にまとめろ>>213

それ以外の部分では何をどう描くかだけ覚えておいて、
実際の描画は OnDraw で行う、というのが普通。

215 名前:デフォルトの名無しさん :02/12/17 15:22
バカですいません。やはり見た目的にかっこいい先に書いた
CFormViewの方の印刷方法がしりたいです。
PICT1のなかにかかれたものを印刷するには・・

216 名前:デフォルトの名無しさん :02/12/17 15:58
質問;
初歩中の初歩ですいません。SDI形式のドキュメントクラス
の「ファイル保存」でたとえばプログラム内で計算したA
という数値データを保存したいのですが、ファイル保存って
どうやってやるのですぁ?

217 名前:デフォルトの名無しさん :02/12/17 15:59
>>216
C++スレ逝きのヨカーン

218 名前:デフォルトの名無しさん :02/12/17 18:38
質問するスレ変えるので>>216は忘れてください。削除

219 名前:デフォルトの名無しさん :02/12/17 18:42
>SDI形式のドキュメントクラス
この部分からしてCArchiveの使い方を質問してるのだろうから
ここかMFCスレで良いと思ったが、結局クラスの使い方だから
MSDNライブラリ読めと言われる罠。

220 名前:アマグラマー :02/12/18 00:10
VC6 使いの皆さんいらっしゃいますか?
VC.NET framework 入れるかどうか迷っているので、
皆さんの意見を聞かせてください。



221 名前:デフォルトの名無しさん :02/12/18 00:14
>>220
>VC.NET framework
VC++.NETと.NET Frameworkをつなげちゃったわけか・・・

222 名前:デフォルトの名無しさん :02/12/18 18:59
SDIで、CSplitterWndで複数のViewを持たせてます。ActiveなViewをボーダーで囲むなどして強調表示したいんですが、どうしたら良いでしょうか?

223 名前:デフォルトの名無しさん :02/12/18 19:06
>>222
OnDrawでフォーカスがある場合に枠線を書く。

224 名前:デフォルトの名無しさん :02/12/18 19:16
>>222
OnActivateViewで
if(bActivate){
ModifyStyle(0, WS_BORDER, SWP_FRAMECHANGED);
}else{
ModifyStyle(WS_BORDER, 0, SWP_FRAMECHANGED);
}
な感じ。

225 名前:デフォルトの名無しさん :02/12/18 19:19
>>224ばっちりできました。アリガト!>>223ごめん。ListViewやら使ってるんで、OnDrawのなかでは描画できないのであった。でも、サンクス。

226 名前:157 :02/12/19 12:49
自己レスですがダイアログクラスでのデストラクタの宣言方法がわかりました。
public: に、
virtual ~MyClass();
と宣言して、
MyClass::~MyClass(){}
に処理を記述する。
ところで、virtual っていうのはいったいなんなんでしょうか?

227 名前:デフォルトの名無しさん :02/12/19 13:02
仮想関数を知らんのか?

228 名前:デフォルトの名無しさん :02/12/19 13:46
仮想関数と火葬関数の違いは。

229 名前:デフォルトの名無しさん :02/12/19 14:09
>>215
どーもこーも、日本語が分かりづらい。
CStaticのメンバにGetBitmap()ってのがあるから、
それをOnPrintで渡ってきてるCDCでBltBltかませるようにすればいいんじゃない?
簡略して書けば、
CDC memDC;
memDC.CreateCompatibleDC( pDC );
memDC.SelectObject( m_wndPict.GetBitmap() );
pDC->BitBlt( 省略, &memDC, 省略 );
リソースリークとかオラしらねってコードだが。

230 名前:デフォルトの名無しさん :02/12/20 12:21
>>228
Destructor と、DeathTructorみたいなもの。

231 名前:226 :02/12/21 01:35
>>227
よくわかりませんが、つけるのが作法ってことでいいでしょうか。

232 名前:デフォルトの名無しさん :02/12/21 01:42
MFCの前に最低限C++の入門書を読んでおいた方が良いと

233 名前:デフォルトの名無しさん :02/12/21 13:44
MFCとかATLのソースみると、
ASSERT使ってるみたいだけど
これってRelease環境では実行されてないと思うんだけど
内部エラー検出にはASSERT使って、
入力したデータのチェックには例外使って欲しい...。

234 名前:デフォルトの名無しさん :02/12/21 13:47
#include <plot10.h>

ってしたんですが、インクルードファイルplot10.hを開けません。そんなファイルはないですよ。
ってエラーになったんですが、このファイルだけ追加とかできますか?

235 名前:デフォルトの名無しさん :02/12/21 14:05
>>234
そのファイル(ライブラリ)の出所が分からないと、なんとも。

236 名前:デフォルトの名無しさん :02/12/21 14:35
>内部エラー検出にはASSERT使って、
>入力したデータのチェックには例外使って欲しい...。
ASSERT は例外投げてなかったっけ

>>234
"plot10.h" でないの?(テキトウレス)

237 名前:234 :02/12/21 14:41
>>235
出所とは?

>>236
意味が分かりません。

238 名前:デフォルトの名無しさん :02/12/21 14:49
>>237
>出所とは?

ああ、かんちがいだった。

プロジェクトの設定で、インクルードパスが設定できるよ。

もしくは、そのヘッダーファイルをインクルードしてるファイルと同じディレクトリにおいて
#include "plot10.h"
と書き換えるか。

239 名前:デフォルトの名無しさん :02/12/22 16:37
VC++6.0Pro + WinXPで、CStringArrayクラスの配列に、
1件数文字程度の文字列を10万件格納。
これをクイックソート用の関数で五十音順に並べ替えるとき、
同一文字列の数が一定数以上だとスタックオーバーフローが起きる。
10万件中、同一の文字列が数百件程度なら大丈夫だけど、
数千件単位になると急に怒られる。
同一文字列がない、あるいは100件程度なら20万件扱っても平気っぽいのに。

オーバーフローが起きるタイミングは、
クイックソートで「キー」にするための文字列を配列から取得しようとしたとき。
数百〜数千回ほど再帰呼び出しを繰り返して、そこそこ階層が深くなったところで起きる。

240 名前:デフォルトの名無しさん :02/12/22 17:10
>>239
ふーん、で、それがどうかしたのか ?

241 名前:デフォルトの名無しさん :02/12/22 17:22
>>239
当たり前ということに書いてて気付かないのだろうか。

242 名前:239 :02/12/22 17:45
>>241
回答ありがとう。
ごめん、わからん。
何が当たり前でどうダメなのか教えてもらえると助かるよ。

243 名前:241じゃないけど :02/12/22 18:35
「スタック使いすぎちゃってオーバーフローが起きました。」
「じゃあスタック大きくすれば。」

とか、そんな話?

244 名前:デフォルトの名無しさん :02/12/23 00:36
再帰使えばそうなる罠

245 名前:デフォルトの名無しさん :02/12/23 10:02
最近の容量という概念がわかっていないパソ初心者のようなものか

246 名前:239 :02/12/23 10:15
>>243
すまぬ、言葉足らずの質問だった。
うん、スタックを大きめに設定すれば解決はするのだけれど、
原因がわからないのがすっきりしない。
クイックソートって、比較結果が同じ値を扱うときは計算量が増える?
たとえば同じ256個の数値をソートするにしても、
1〜256まで全ての値があるのと10〜250までの10の倍数があるのとでは、
後者の方が手順が増えるものなのかな。

もうVCの話題じゃないな。

247 名前:デフォルトの名無しさん :02/12/23 12:25
関数がどのように呼び出されるのかを勉強すれ。

248 名前:デフォルトの名無しさん :02/12/23 12:26
>>246
同じ値がたくさんあると増えるだろね。
後半は意味が判らん。10〜250まで10の倍数は25コじゃないのか?

まー、とにかくクイックソートのアルゴリズム知らないなら勉強汁。
スレ違いなのでききたきゃ移動汁。


249 名前:デフォルトの名無しさん :02/12/23 12:32
>>231
たとえば、Aというクラスがあって、そこから派生したBという
クラスがあるとするわな。それで、

B *pB = new B;
A *pA = (A *)pB;
delete pA;

なんつーことをする時に、Bのデストラクタが仮想関数になって
いないと、delete時にクラスBのデストラクタが呼ばれない。Bの中で
メモリをアロケートしてたりすると、そこでリークしてしまう罠。
全然VC++の話じゃないが、まぁそういうことだ。デストラクタは
virtual指定しておくべし。

250 名前:デフォルトの名無しさん :02/12/23 19:23
VC++.netってVC++6にあった
最近使ったファイルと最近使ったワークスペースは無くなっちゃったんですか?


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