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


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

VisualC++相談室
1 名前:いさましいチビの女 :2000/10/04(水) 06:11
C++Builder相談室があるので、バランス的にこういうのがあっても良いですよね?

2 名前:名無しさん@お腹いっぱい。 :2000/10/04(水) 11:42
CWinAppとCDocumentとCWiewとCMainFrameの関係とか
ドキュメント・ビューアーキテクチャーとか
ドキュメント・テンプレートとか、俺にも分かるぐらいやさしく
おしえれ。

3 名前:名無しさん@お腹いっぱい。 :2000/10/04(水) 11:50
Document-Viewを素直に使ってる奴っているのか?

4 名前:>2 :2000/10/04(水) 11:58
それ完全に答えるのは、スレでやるのに荷が重過ぎるでしょうに・・
判らない所はどこ?

5 名前:名無しさん@お腹いっぱい。 :2000/10/04(水) 16:33
ダイアログのキャンセルボタンを消しちゃったんだけど
あとから、OnCansel() を オーバライドしたいんだけど
クラスウィザードのハンドラの追加とか、仮想関数の追加
ができないんだけど、、、どーすりゃいいんでしょうか?

6 名前:名無しさん@お腹いっぱい。 :2000/10/04(水) 18:40
>>5
ボタンを適当に一つ作って、リソースIDをIDCANCELに
書き換えれば出来ないか?

7 名前:名無しさん@お腹いっぱい。 :2000/10/04(水) 21:21
いまC++を勉強中でVCかVisualStudioを買おうか迷ってるんだけど
本体以外にドキュメントとかCDROMとかどーゆーのが付いてんの?
windowsAPIのリファレンスとか付いてる? あとMSDNってなにもの?

学生です。買うとしたらVCとwin2000か、VSだけかになる。

8 名前:>3 :2000/10/04(水) 21:37
たしかに。
見たことないな。
かわいそうなCDocument..

9 名前:コピペ :2000/10/04(水) 21:53
VisualSourceSafe"以外"のバージョン管理ツールを
利用できるようにIDEを設定することはできないのでしょうか?
いろいろ試してみたりしているのですが、どうにもわかりません。




10 名前:proxy.tokyo.mbn.or.jp :2000/10/04(水) 22:47
hello

11 名前:cse10-41.chiba.mbn.or.jp :2000/10/04(水) 22:48
hello world

12 名前:proxy.tokyo.mbn.or.jp :2000/10/04(水) 22:49
by

13 名前:名無しさん@お腹いっぱい。 :2000/10/04(水) 23:13
UNSUBSCRIBE

14 名前:名無しさん@お腹いっぱい。 :2000/10/05(木) 03:57
完璧にVC使えると、自信を持っていえるのは、
どのくらいのことが出来る事をいうのですか?
面接で恥かかないように、教えてください。

15 名前:名無しさん@お腹いっぱい。 :2000/10/05(木) 04:45
「VCで幾つかツール作ったことがある」といえばいいんじゃない。
「無理して完璧に使う」こたあない。



16 名前:14 :2000/10/05(木) 04:57
>15
なるほど。
そのように言うことにします。
ありがとうございました。

17 名前:名無しさん@お腹いっぱい。 :2000/10/05(木) 16:51
「完璧にVC使えます」とか言う奴は絶対に取りたくないな

18 名前:名無しさん@お腹いっぱい。 :2000/10/05(木) 20:31
MSの固有仕様を全部把握しろってこと?
そんなん嫌だ

19 名前:名無しさん@お腹いっぱい。 :2000/10/06(金) 00:26
ダイアログからボタン等のパーツをリソースエディタで
削除したとき"resource.h"から該当パーツの#defineを
自動的に削除できないもんでしょうか?
コンパイルが通ってしまうので困る。
落ちる原因が分からず3時間ほど悩みました。



20 名前:名無しさん@お腹いっぱい。 :2000/10/06(金) 00:55
「シンボルブラウザ」で未使用のシンボルを選んで削除できたはず。
ただ、使ってないシンボルを#defineしたままでも無害だと思うよ。
GetDlgItemか何かで落ちるのかな?

21 名前:19 :2000/10/06(金) 09:35
>20
さんきう、すっきりしました。

>GetDlgItemか何かで落ちるのかな?
GetDlgItem(ID)->EnableWindow(TRUE)
で落ちます。当然ですが。



22 名前:名無しさん@お腹いっぱい。 :2000/10/06(金) 10:47
フローしたツールバーの移動を監視したんだけど
どうすれば、いいのでしょうか?


23 名前:>22 :2000/10/06(金) 12:20
タイマー監視。

24 名前:名無しさん@お腹いっぱい。 :2000/10/06(金) 12:29
>>22
なんかメッセージ飛んでこなかったっけ?

25 名前:名無しさん@お腹いっぱい。 :2000/10/06(金) 15:16
ツールバーの親の親を監視

26 名前:>22 :2000/10/06(金) 17:23
CToolBarCtrl で OnMove()

27 名前:なにー? :2000/10/07(土) 23:36
CDocumentって普通使わないんですか?
今Doc-View構造のプログラミングを勉強してる
トコなんですが


28 名前:名無しさん@お腹いっぱい。 :2000/10/08(日) 03:13
1.リストビューの項目をD&Dしたりして、
  項目の順序を変えるソフトを見たりするのですが、
  どうやってるんでしょうか?

2.最近MFCの勉強を始めたんですけど、(独学)
  ツールの使い方自体もよくわかりません。
  こんな便利な使い方があるよ、とか デバックは
  ああすれば、簡単だってのをお教えください。


29 名前:名無しさん@お腹いっぱい。 :2000/10/08(日) 04:07
VC++6でプロファイルとインクリメンタルリンカのチェックボックスが
重なってるのってVCのバグですよね。?

30 名前:名無しさん@お腹いっぱい。 :2000/10/08(日) 04:15
>>27
使う人は使う。使わない人は使わない。

31 名前:名無しさん@お腹いっぱい。 :2000/10/08(日) 05:38
IPアドレスコントロールの使い方が良くわかりません。
GetAddressで得た値を、
ソケットのConnect等で使うには、どうすればいいのですか?
レベルの低い質問ですみません。お願いします。

32 名前:ここでいいのかなぁ? :2000/10/08(日) 14:48
C++でWinアプリ作ってますが、
SysTreeView(エクスプローラの左側の奴ね)ライクで、
独自のコントロールが欲しいんですけど、
こうゆう使い勝手の良いコントロールを
一からコーディングするのって、
スゴイ大変な作業になると思われます。

カスタムツリーコントロールの雛型になるソースなど、
できればフリーで転がってないでしょうか?


33 名前:27>30 :2000/10/08(日) 14:55
じゃあやっぱりムリして使おうとすることなかったんですね鬱々


34 名前:名無しさん@お腹いっぱい。 :2000/10/08(日) 16:30
>>33
しかし「難しくて使えない」ってのは情けない。
「使えるけど、めんどうだから使わない」と言えるようにしておこう。

35 名前:名無しさん@お腹いっぱい。 :2000/10/08(日) 21:11
えー、Visual C++5.0にSP3のパッチ当ててます。
http://www.ceres.dti.ne.jp/~goto-ta/windows/tiny.html
このEXEファイル省サイズ化の技を試してみたんですけど、

Test* test = new Test();
delete new;

というコードを入れてみると、

>LIBC.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です

って怒られてしまいます。new演算子定義し直したり、
関係ありそなヘッダを追いかけまくったりしてみたけど分かんないッス。
WinMainCRTStartupを定義せずにデバッガでステップ実行すると、
WinMainを抜けたときに「CRT0.Cのパスを入力してください」と出るのが
何か怪しい気がするんですが……(上の2行を消すと出なくなる)。

この辺、一体何が起こっているのか、どなたか教えて下さいませ。

36 名前:名無しさん@お腹いっぱい。 :2000/10/08(日) 21:14
えー、Visual C++5.0にSP3のパッチ当ててます。
http://www.ceres.dti.ne.jp/~goto-ta/windows/tiny.html
このEXEファイル省サイズ化の技を試してみたんですけど、

Test* test = new Test();
delete test;

というコードを入れてみると、

>LIBC.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です

って怒られてしまいます。new演算子定義し直したり、
関係ありそなヘッダを追いかけまくったりしてみたけど分かんないッス。
WinMainCRTStartupを定義せずにデバッガでステップ実行すると、
WinMainを抜けたときに「CRT0.Cのパスを入力してください」と出るのが
何か怪しい気がするんですが……(上の2行を消すと出なくなる)。

この辺、一体何が起こっているのか、どなたか教えて下さいませ。

37 名前:35 :2000/10/08(日) 21:41
あう、2度書きになってる〜。ごめんちゃい。
エラーメッセージなんて信用するもんじゃないですな。

38 名前:名無しさん@お腹いっぱい。 :2000/10/08(日) 22:54
>>35
その技、使わなくても良いんじゃない?


39 名前:名無しさん@お腹いっぱい。 :2000/10/09(月) 00:50
あのEXEファイル省サイズ化の技では、newとかは使えないよ。
tiny.objの制限に書いてなかった?

40 名前:名無しさん@お腹いっぱい。 :2000/10/09(月) 02:44
VC++で指定したフォルダ以下のファイルを処理をしようと思っているのですが、

void Searc(LPCTSTR Name, LPCTSTR Path)
{
CFileFind Seeker;
SetCurrentDirectory( Path );

Seeker.FindFile();
while( Seeker.FindNextFile() )
{
if( Seeker.IsDirectory() )
Search( Name, (LPCTSTR)Seeker.GetFilePath() );
}
Seeker.Close();

Seeker.FindFile( Name );
while( Seeker.FindNextFile() )
{
//処理
}
Seeker.Close();

}

とすると実行時にエラーが出ます。
”ハンドルされていない例外はtest.exe(MSVCRTD.DLL)にあります”
だそうで、CHKSTK.ASM内部で止まりました。解決法求む。

41 名前:名無しさん@お腹いっぱい。 :2000/10/09(月) 03:09
SHFileOperationじゃだめ?

42 名前:名無しさん@お腹いっぱい。 :2000/10/09(月) 05:04
>40
2回目以降のPathの中身を見てみ。

43 名前:35 :2000/10/09(月) 09:25
>>39
なぜnewが使えなくなるのか分かります?
省サイズ化の技使わないにしても知りたいッス。

44 名前:名無しさん@お腹いっぱい。 :2000/10/09(月) 10:14
VCやりたいんですけど
最低限何の知識があれば
プログラム作れますか?

45 名前:名無しさん@お腹いっぱい。 :2000/10/09(月) 10:15
VCやりたいんですけど
最低限何の知識があれば
プログラム作れますか??

46 名前:名無しさん@お腹いっぱい。 :2000/10/09(月) 10:25
何を作るかによって全然違います。
ほんとになんでもよいというのなら
サンプル通りに打ち込んで、あとはコンパイルの
しかただけ知っていれば大丈夫です。
これならプログラムの知識はいりません。


47 名前:名無しさん@お腹いっぱい。 :2000/10/09(月) 12:44
>>44
初心者だからしょうがないかもしれないけど、
こういうとこで質問する時は、もうすこし話しをつめて
具体的な形にしてくらはい。

48 名前:39>35 :2000/10/09(月) 14:22
あの技は、win32apiだけで、msvcrt.dllに依存しないでやる方法だとおもってたけど。
だから、ヒープの初期化処理を呼んでないでしょ。自前で呼べば出来るかも?
または、別な初期化処理が足りないのかも?
c++で、やりたいなら、こっちかな?やりたい事が出来るかは分からないけど。
http://www2s.biglobe.ne.jp/~dkm/Yebisuya/WinTips/tips6.html

49 名前:39 :2000/10/09(月) 17:37
new,deleteはつかえる。スマン
_mainでリンクエラーということは、
main()
がないということでは?コンソールアプリ作ってんの?

50 名前:39>35 :2000/10/09(月) 18:07
よく見たら
>LIBC.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です
crt0だから、本来のスタートアップがリンクされている。
リンクの順番とか、オプションとかが間違ってるだけじゃないのかな?
サイズを小さくしたいだけなら、すなおにCRTをダイナミックリンクしたほうがいいのでは?

51 名前:名無しさん@お腹いっぱい。 :2000/10/09(月) 22:21
ENTRY:_main とかつけたら
できるんじゃないの?

52 名前:39>35 :2000/10/10(火) 01:38
前に作った奴見てたら、思い出した。
スタートアップで定義されてるグローバル変数がどっかの関数で参照されてると
リンク時にエラーがでる。_errnoとか

53 名前:名無しさん@お腹いっぱい。 :2000/10/10(火) 03:45
#pragma comment(linker, "/entry:main")
void __cdecl main(void)
{
}
これをコンパイルすると実行ファイルのサイズはどうなるでしょう?

54 名前:名無しさん@お腹いっぱい。 :2000/10/10(火) 04:06
VC++で自作のヘッダファイルをインクルードしたり、自作の
ライブラリを使う場合はどうしたらいいのでしょうか?

普段はUNIXなのでコマンドライン(あるいはMakefileで)
オプションで指定するか環境変数で指定するのしかしらないです。
VC++の場合どのような環境変数を宣言すればよいのでしょうか?

同じディレクトリに置くと、というの以外で方法を教えてください。

55 名前:名無しさん@お腹いっぱい。 :2000/10/10(火) 04:15
そんなのVCのhelp見れば。
makefileが書ける人が聞く内容じゃないない気がするけど。
それとも、マウスプチプチのやり方がわからないとか?

56 名前:名無しさん@お腹いっぱい。 :2000/10/10(火) 04:45
俺的幻想をお壊さないでくれ>>54

57 名前:54 :2000/10/10(火) 06:26
helpみて勉強します。まず自助努力ですね。

統合開発環境みたいなの使うの初めてなのでなにか特別な
ものでもあるのかと思ってしまいまして…。 すみません。


58 名前:名無しさん@お腹いっぱい。 :2000/10/10(火) 18:30
印刷プレビュー時、
pDC->SelectObject(GetStockObject(NULL_BRUSH));
ここで暴走してしまいます。

なんで?


59 名前:58 :2000/10/10(火) 20:10
アクティブな構成の設定を
デバッグ→リリースに58の現象は、でなくなりました。

なんで?

60 名前:名無しさん@お腹いっぱい。 :2000/10/11(水) 06:40
暴走するのは、間違ってるから。
リリースで出なくなるのは、VCだから。
SelectObject
GetStockObject
をhelpで調べてみては?

61 名前:名無しさん@お腹いっぱい。 :2000/10/11(水) 09:16
pDC->SelectObject(GetStockObject(NURANAI_BRUSH));

62 名前:58 :2000/10/11(水) 10:34
レスありがとう、ヘルプを読みました。
CDC::SelectObject(CBrush* pBrush)は、
CBrush型のポインタを求めている。
GetStockObject(int fnObject)は、
HGDIOBJ型を返している。
つまり型が違うという事ですね、たぶん。

でもコンパイルも通るし、
画面に描画するときもOKで、
デバッグ構成の印刷プレヴュー時だけ
その現象がでるんですね、どうして?(VCだから?)

で、下の方法で解決しました。
SelectObject(pDC->m_hDC,GetStockObject(NULL_BRUSH));

>>61
塗らないブラシは、コンパイルを通りませんでした。

どうして?

63 名前:名無しさん@お腹いっぱい。 :2000/10/11(水) 11:47
>>62
CDC::SelectStockObject()ってのもあるよ


64 名前:名無しさん@お腹いっぱい。 :2000/10/11(水) 12:46
SelectObjectをhelpでもう一度調べてみたら。
コンパイルが通るからと安心している、お前がうらやましい。

65 名前:58 :2000/10/11(水) 17:29
ヘルプ読んだけど、よく解らんかったよ。

> 選択するオブジェクトのハンドルを指定します。オブジェクトは、
> 次に示す関数を使って作成したものでなければなりません。
> オブジェクト 関数
> CreateBrushIndirect, CreateDIBPatternBrush, CreateDIBPatternBrushPt,
> CreateHatchBrush, CreatePatternBrush, CreateSolidBrush

て事で、GetStockObject で作成したブラシはダメだって事???

ちがう?

>>63
それで、使わさせて頂きます。

66 名前:名無しさん@お腹いっぱい。 :2000/10/12(木) 00:37
VC6のSP4なんですが、Debugでビルドした物
を実行すると、

---------------------------------------------
タイトルバー

Microsoft Visual C++ Debug Library
---------------------------------------------
クライアント領域

Program:ファイル名(フルパス)

DAMAGE:after Normal block (#18) at 0x009A0EC0.

(Prees Retry to debug the application)
---------------------------------------------

というエラーのダイアログが出るんですけど、
これってDebug関係のエラーなんでしょうか
それとも、バグがあることを教えてくれてる
んでしょうか。
とりあえず、Releaseでビルドしてもこのダ
イアログは出ませんでした。

エラーが出ている箇所は

delete this;

というところでした

本当に他力本願な書き込みで申し訳ないです。

67 名前:名無しさん@お腹いっぱい。 :2000/10/12(木) 03:07
バグです。58が回答するまでお待ち下さい。

68 名前:>64 :2000/10/12(木) 10:48
SelectObjectのhelp読んだけど 何が問題か解らないゾ!
...ウツダシノウ...

69 名前:名無しさん@お腹いっぱい。 :2000/10/12(木) 11:25
じゃ、afxwin.hでもながめてろ。

70 名前:ぱくぱく名無しさん :2000/10/12(木) 11:26
質問ですけど、バッファについて。ランしてから、初めの5もじをタイプすると、
行が変わって、その後、5つの文字のひとつでも打つと、一行変わるように
したいんですけど、バッファってどうやって使えばいいのかわかりません
教えてくれませんか?

71 名前:>69 :2000/10/12(木) 12:09
WINGDI.Hじゃなくて?(w

72 名前:名無しさん@お腹いっぱい。 :2000/10/12(木) 17:02
58はMFCベースでプログラム組んでるんじゃないのか?
63の方法で解決してるのにまだ、気にしてるようじゃ駄目だ。
そのうちわかるようになるから、やらないといけないことやれ。
ないなら、66の質問にこたえてみろ。

73 名前:名無しさん@お腹いっぱい。 :2000/10/12(木) 17:23
VC++のマルチタスキングに付いて勉強する必要に迫られたのですが、
手持ちの本には申し訳程度のことしか書いてありません。
どなたか、いい勉強サイトをご存知なら教えてもらえませんか?

74 名前:ヨコ :2000/10/12(木) 17:26
引数が2こだからAPIの方だろ

75 名前:>73 :2000/10/12(木) 17:49
>VC++のマルチタスキングに付いて勉強する必要に迫られたのですが、
VCとマルチタスクに何の関係があるんですか?
マルチタスク=マルチスレッドは成り立たないし、
タスクの管理をVCで犯ると言うことですか?
もし出題者がそのままのお題を出しているのなら無知を藁って終わりです

76 名前:>75 :2000/10/12(木) 17:51
たぶんOSを起そうとしている人だな(ww

77 名前:名無しさん@お腹いっぱい。 :2000/10/12(木) 18:05
>58
ばかはおれだった。

78 名前:>70 :2000/10/12(木) 18:41
>質問ですけど、バッファについて。ランしてから、初めの5もじをタイプすると、
>行が変わって、その後、5つの文字のひとつでも打つと、一行変わるように
>したいんですけど、バッファってどうやって使えばいいのかわかりません
>教えてくれませんか?

云っている事がちと不明瞭だが・・・
WM_CHARで捕まえて、後は好みに合わせて料理してください

・仮文字列に1文字追加する
・仮文字列から、表示用文字列に変換する
(5文字毎に改行を挿入する)

文字列をCStringなんかで取れば ::GetLength とか ::Mid とか
::Format とか利用して簡単にできると思うよ

79 名前:名無しさん@LV3 :2000/10/12(木) 21:37
>70
OSが書いてない。
結論から言うと、そのようなプログラムは移植性の高い形で
実現することは不可能。
なぜなら、C言語およびその標準入出力ライブラリは、
1文字単位の入力をサポートしていないから。

getc, getcharのような関数は1文字を「返す」が、使ってみれば
分かる通り、端末が通常の状態であれば、これらの関数は
ユーザーが改行を入力するまではブロックする。
ユーザが任意の1文字を入力した時にそれを読み出したければ、
端末のモードを変更したり、OS依存の謎の関数を呼ぶことになるが、
どこでも使える移植性に富んだ方法はない。


80 名前:>79 :2000/10/13(金) 10:06
fread() は?
ってここって、VC++だろ・・・

81 名前:70 :2000/10/13(金) 14:26
コンパイルして、最初の5文字(何でも選べる)を、タイプし、5文字まとめて表示します。
それは、バッファをつかって、カウンターをつくって。で、そのご、自分の選んだ5文字のうち
どれかをタイプした場合、改行するようにつくるのです。だれか教えてください。

82 名前:優しい人 > 70 :2000/10/13(金) 14:45
それはコンソールアプリか?
それと何処までのものを自分で作ったか見せてみ、
そのレベルによって教えやるよ(今日、リーダーいないし・・・)


83 名前:70 :2000/10/13(金) 15:25
言っときますけど、ほんとに初心者ですよ。
#include<conio.h>
#include<stdlib.h>
#defineN5
void main(void)
{
int j,k;
char buff[N],it,bucket;
for(k=0;K<N;K++)
{
it=getch();
buff[N]=it
}
while(j<K)
{
putch(buff[j]);
j=j+1;
}
while(bucket!=27)
{
bucket=getch;
if(bucket==it){
putch(bucket);
   putch(10);}
else
putch(bucket);
}






int

84 名前:優しい人 :2000/10/13(金) 16:26
#include  <stdio.h>
#define  N  5
int  main(void)
{
  int    j, k          ;
  char  buff[N+1],  it, bucket  ;
 
  printf("なんか5文字いれろ=>");
  for(k = 0;k < N;k ++){
    it = getch();
    buff[k] = it ;
  }  //  同じ文字も可能となっている
 
  buff[N] = 0x00 ;
  printf("入力した5文字:%s\n",buff) ;  //  入力した5文字の表示
 
  while(bucket != 27){          //  ESC で 抜ける
    bucket = getch() ;
    j = 0 ;                //  j を フラグとして利用
    for(k = 0;k < N;k ++)
      if(buff[k] == bucket)      //  初めの五文字を検索
        j = 1 ;              //  hit!!
    if(j == 1)
      printf("%c\n",bucket) ;        // hitした時は、改行も出す
    else
      printf("%c",bucket) ;
  }
  return 0 ;
}

85 名前:優しい人(つづき) :2000/10/13(金) 16:27
ちと乱暴だが、意味がまぁまぁ解ったので添削しといた。

改良のポイント:
 ・初期入力で同じ文字は無効にする
 ・大文字/小文字の判別を無くしたり
 ・制御文字をエコーバックさせないようにする


86 名前:優しい人(注意!) :2000/10/13(金) 16:29
そのままコピペすると、倍角空白のセイでコンパイルは通らないヨ

87 名前:VCと関係ないからsageで書くけど :2000/10/13(金) 17:09
UNIXのエコーバックの制御は、下ネ。
http://www.race.u-tokyo.ac.jp/users/moro/unix-programmer/faq-j_4.html



88 名前:79 :2000/10/13(金) 18:57
>80
fread()がどうかしたのか。
もっとも「VC++相談室」なのにあんな寝ぼけたレスを書いた
俺は万死に値しますか。

>83
という訳で以下はお詫びのかわり。
1) getcheでその場エコーバック
2) 改行したいときはCR + LFを端末に送る
3) こういう単純な検索はmemchr使えば一発
ってとこずら。

#include <string.h>
#include <conio.h>

#define N 5
#define ESC 27

int main()
{
  char buff[N];
  int i, c;

  for (i = 0; i < N; ++i)
    buff[i] = getche();
  cputs("\r\n");

  while ((c = getche()) != ESC)
    if (memchr(buff, c, N))
      cputs("\r\n"); 

  return 0;
}


89 名前:70 :2000/10/14(土) 07:26
どうもありがとう!!>やさしい人
5文字いれたときに、大文字と小文字は、別扱いにしないといけないんです。もし、abcde
といれたら、Aをおしても、改行しません。

90 名前:名無しさん@お腹いっぱい。 :2000/10/14(土) 13:41
iteratorの何が便利なのか、全然分かりません。
だれか教えてください。

for (it = vect.begin(); it != vect.end(); it++) {
int i =distance(vect.begin(), it);
itを色々と処理
}

for (int i = 0; i < vect.size(); i++) {
vect[i]を色々と処理
}

この二つの書き方はどっちが幸せになれるでしょうか?
vectorへの添え字が欲しい時とかにiteratorを使うと
distance()の分だけ二度手間な気がします。

91 名前:名無しさん@お腹いっぱい。 :2000/10/14(土) 16:14
>90

> int i =distance(vect.begin(), it);
なぜわざわざこのようなものを使うのか。
*it や it->
を使えば良かろう。



92 名前:名無しさん@お腹いっぱい。 :2000/10/15(日) 03:05
>>90
vactorやdequeなら後者でもよかろうが、mapなんかはiterator使うしかないだろ。
それから、インデックスに意味があるなら後者の方法を使うべきだろ。
わざわざdistanceを使ってるのはまるっきり意味不明。

93 名前:90 :2000/10/15(日) 06:04
みんな、ありがとう!
今回は後者でいくことにしまする。

94 名前:70 :2000/10/16(月) 04:41
>やさしいイ人
コンパイルしたらchar buff[N]がエラーでした。どうしてでしょう?

95 名前:名無しさん@お腹いっぱい。 :2000/10/16(月) 06:41
配列のサイズには定数しか指定できないよ。
って、Nが変数ってことだよね?それとも;がないって落ちか?

96 名前:名無しさん@お腹いっぱい。 :2000/10/16(月) 08:35
>94
全角スペースが入ってるからだろ。
キミのコンパイラはエラーメッセージを出さないのか?

97 名前:優しい人 > 70 :2000/10/16(月) 10:28
char buff[N+1] を char buff[N] と書いたらっていいたいのかな?

・・・buff[N]でもコンパイルは通るし、
実行しても、ちと問題があるぐらいだと思うが・・・
エラーメッセージはどーゆーの?

98 名前:名無しさん@お腹いっぱい。 :2000/10/16(月) 15:17
CStringを継承したPathStringという自作のクラスを愛用していた
ところ、このPathStringをincludeしただけで、以下のようなメッセー
ジでコンパイルを拒否されて困ってます。結局、必要な機能を新たに
PathStringなしで実装して済ませてますが、不便でなりません。
しかし、いろいろ試した結果、PathStringのcpp部とh部の定義部や
宣言部の中身を空にしても同じエラーが出るので、これはVCそのものに
問題があると確信しました。コンパイルの設定などもいろいろいじって
はみてるのですが、いまだに、問題の原因がわかりません。
だれか、なにか思い当たることがあれば教えてください。

\vc98\include\new(35) : error C2061:
syntax error : identifier 'THIS_FILE'
\vc98\include\new(35) : error C2091:
function returns function
\vc98\include\new(35) : error C2809:
'operator new' has no formal parameters
\vc98\include\new(36) : error C2061:
syntax error : identifier 'THIS_FILE'
\vc98\include\new(37) : error C2091:
function returns function
\vc98\include\new(37) : error C2556:
'void *(__cdecl *__cdecl operator new(void))(unsigned int,const struct std::nothrow_t &)' : overloaded function differs only by return type from 'void *(__cdecl *__cdecl op
erator new(void))(unsigned int)'
\vc98\include\new(35) : see declaration of 'new'
\vc98\include\new(41) : error C2061:
syntax error : identifier 'THIS_FILE'
\vc98\include\new(42) : error C2091:
function returns function
\vc98\include\new(42) : error C2556:
'void *(__cdecl *__cdecl operator new(void))(unsigned int,void *)' : overloaded function differs only by return type from 'void *(__cdecl *__cdecl operator new(void))(unsig
ned int)'
\vc98\include\new(35) : see declaration of 'new'
\vc98\include\new(42) : error C2809:
'operator new' has no formal parameters
\vc98\include\new(42) :
error C2065: '_P' : undeclared identifier
Error executing cl.exe.

99 名前:>98 :2000/10/16(月) 18:04
>>CStringを継承したPathStringという自作のクラスを愛用していたところ、

愛用していたとゆー事は、以前まではキチンと動いていたという事ですか?

>>これはVCそのものに問題があると確信しました。

これはたぶん違うと思います。
ぼくも試しに class pathString : public CString{};
なんてやってみたけど、すんなりコンパイルは通りましたが。。。

100 名前:>98 :2000/10/16(月) 18:13
PathString.hで、<afx.h>をインクルードしているか確認してみてください。

101 名前:名無しさん@お腹いっぱい。 :2000/10/16(月) 22:35
98です。さっそくのお答えをありがとうございます。
afxもincludeしてますし、それはもともとキチンとうごいてました。
それにしても、なんでnew.h内にエラーが起きるんでしょうね。
でも、ファイルが壊れているわけではないはずです。

102 名前:名無しさん@お腹いっぱい。 :2000/10/16(月) 23:49
PathString公開キボソ

103 名前:アンポンタン :2000/10/17(火) 02:06
ビジュアルC自体ひつようですか?
エディタで書くよりいいですか?

104 名前:名無しさん@お腹いっぱい。 :2000/10/17(火) 04:47
プリコンパイルヘッダ(.pch)が壊れてるとか(たまにある)。
リビルドしても駄目?

105 名前:70>やさしい人 :2000/10/17(火) 06:27
error C2018: unknown character '0x81'
cこんな感じのが102個もあります。すべて、char buff と、whileのあとの
{ エラーがでています。

106 名前:優しい人 :2000/10/17(火) 11:36
>>96さんの“全角スペースが入ってるから”です

エディタで全角スペースを半角スペースに置き換えてみてください
VCのエディタなら ctrl+H で 置換
全角スペースは、MSIMEならshift+スペースででます

って俺って優しくない??

107 名前:優しい人(訂正) :2000/10/17(火) 11:47
> エディタで全角スペースを半角スペースに置き換えてみてください

これ、訂正
全角スペース2個→タブ(\t)にね
正規表現にチェックをいれる

108 名前:クエ :2000/10/17(火) 12:47
OnKeyDownでシフトを押しながらの方向キーと押さない方向キーを
分けて処理をしたいのですけどやり方がわかりません


109 名前:>108 :2000/10/17(火) 13:48
GetKeyState(VK_SHIFT);

110 名前:PathStringうんたら :2000/10/17(火) 14:46
ヘッダのインクルード順を変えたら動いたりしませんか?
以前、STL+DDrawでこけるとか何とかというのを聞いたことが・・・。

111 名前:クエ :2000/10/17(火) 15:14
>>109
感謝します

112 名前:名無しさん@お腹いっぱい。 :2000/10/17(火) 18:51
>>98
クラスPathStringに、operator系のメンバ関数の宣言を
追加したらどうよ?

おれは以前、VC5で
#include <algorithm>
を使ったとき、使用しないoperatorでも宣言しとかないと
コンパイルエラーになったぞ。


113 名前:VCLer :2000/10/17(火) 19:02
CStringは継承できてよいなぁ ヽ(´ー`)ノ

114 名前:名無しさん@LV3 :2000/10/17(火) 19:37
C++あまり使わないので、常用する方に質問。

CStringクラスのインタフェイスを見る限りでは
仮想関数が一つもなく、特にデストラクタが仮想でないため、
そもそも継承を全く考慮していない(恐らくは効率重視の)
デザインに見えるのですが、どうでしょうか。
それとも、このようなクラスであっても、地雷を踏む覚悟で継承して使うのが
通常のやり方なのでしょうか。


115 名前:名無しさん@お腹いっぱい。 :2000/10/17(火) 22:37
つーかなんでStringクラス継承するの?
そこまで設計者にさからわんでも、、、
コンポジションして委譲してくんろ。

116 名前:すとろー先生 :2000/10/17(火) 23:32
CString は自己書き換えメソッドばっかりで使いにくいよ。
std::string の方が100倍良い。

117 名前:名無しさん@お腹いっぱい。 :2000/10/18(水) 03:54
>やさしい人
ほんとにありがとうございます。プログラム動きました!!!感謝します。

118 名前:114 :2000/10/18(水) 11:05
>115
それを聞いてやや安心。
private 継承ならば良いように思いますが
コンポジションにすべきですか。

>116
std::basic_string<TCHAR> や std::basic_string<wchar_t>
ではなくて string なのでしょうか。
TCHARを使いたがるような人は CString を使うのかな。

std::basic_string<unsigned char>
はあまりに不便で誰も使わなさそうですね。


119 名前:116 :2000/10/18(水) 14:25
char でも wchar_t でも unsigned char でも目的によって使い分けるだけで
別に不便とは思わないな。CString の唯一の利点はデバッガサポートがある事だけ。

120 名前:114 :2000/10/18(水) 15:58
std::basic_string<unsigned char>
  ucs(static_cast<unsigned char *>("bar"));
とか書かされるのは嫌じゃ。
という意味で(unsigned char版は)
「使いにくい」
と書いたのです。本当に不便とは思いませんか?

デバッガサポートは本当にそうすね。
それとVC++に限定して言えば、string系クラスの代入・アペンド演算の
効率が鬼のように悪いようなので、CStringユーザーはGetBufferを
多用しているのではと想像。


121 名前:名無しさん@お腹いっぱい。 :2000/10/19(木) 12:27
チャイルドフレーム(?)自体にボタンをくっ付ける方法ってありますか?

122 名前:名無しさん@お腹いっぱい。 :2000/10/19(木) 15:37
>>114
basic_stringや、STL辺りも全然仮想関数使ってないよ。
STLのコンテナは、継承したいと思うことがわりとあるんだけど名‥‥‥

>>116
確かに、自己書き換えばかりってのは使いづらいね。
しかも、戻り値がvoidなのが多いから、
dist = src.MakeUpper();
みたいなことができない。結構不便だよな‥‥‥

でも、std::stringもformatが欲しいなあ。
あるいは、ストリーム入力をサポートしてくれれば楽なんだけど。

123 名前:116 :2000/10/19(木) 18:12
>120
違う型で初期化するんだから回りくどい書き方になって当然です。
string<unsigned char>で普通の文字列処理を行なうのが間違ってます。
>122
>でも、std::stringもformatが欲しいなあ。
string format(const char *format, ...) みたいな関数作ればいいだけだと思う。

124 名前:名無しさん@お腹いっぱい。 :2000/10/19(木) 19:04
>>122
>STLのコンテナは、継承したいと思うことがわりとあるんだけど名‥‥‥
1. ラッパークラスを書く
2. 似たようなのを作る
しかないよね多分

125 名前:122 :2000/10/19(木) 19:56
>>123
>string format(const char *format, ...) みたいな関数作ればいいだけだと思う。
やっぱそうかね?ふむ、ちょっとやってみるか。

>>124
オーバーライドやデータメンバの追加がなければ継承で問題なかったりもするんだけどね。
ところで、ostreamクラスのラッパーを作ってみたんだけど、引数付きマニピュレータの
ラッピングのしかたがよくわからなくて困ってます。どうしたものかな?

126 名前:名無しさん@お腹いっぱい。 :2000/10/19(木) 19:58
>>124
>2. 似たようなのを作る
車輪の再発明はちょっとな。
それをやると、STLを使ってる意味がないし。

127 名前:120 :2000/10/19(木) 20:41
>>116
全然「当然」とは思わない。以下、
> 違う型での初期化
の例。
unsigned char s[] = "hello, world";
-----------------------------------------------

ところでVC++6のCLコンパイラは、上を文句も言わずに通すくせに
unsigned char *s = "world";
は頑強につっぱねますね。普段はC使ってるから気付かんかった。
だれかこの理由を説明をしてくれませんか。


128 名前:120 :2000/10/19(木) 20:45
今のは
>>123
でした。申し訳ない。
しかも
頑強じゃなくて頑迷。


129 名前:120 :2000/10/19(木) 20:45
失礼。上のは
>>123
です。


130 名前:名無しさん@お腹いっぱい。 :2000/10/19(木) 20:48
しかし、formatのニーズがこれだけあるということは、やはり
型安全だろうが何だろうがstrstreamは人気が無いのでしょうか。
マニュピレータがウザい、とか。


131 名前:名無しさん@お腹いっぱい。 :2000/10/19(木) 20:48
>string format(const char *format, ...) みたいな関数作ればいいだけだと思う。

stringstream じゃダメですか?(使いにくい?)

132 名前:116 :2000/10/19(木) 21:15
>127
char から unsigned char への代入はOK
char* から unsigned char* への代入はNG
ってことだな。

133 名前:116 :2000/10/19(木) 21:20
つまり unsigned char s[] = "hello, world"; は以下の簡略形式ということです。
unsigned char s[] = {'h','e','l','l','o',',',' ','w','o','r','l','d','\0'};

134 名前:120 :2000/10/19(木) 21:41
>>132
>代入 ×
初期化 ○

ていうかなぜそうなるかが知りたかった訳ですが、
C++の規格書は持っていないので情けないことにヘルプで
理解しました。
要はcharとunsigned charが異なるtypeである以上、それらに対する
pointerがC++的には可換ではないということですが、
自分としてはこれぐらい黙って変換してくれよの気持ちで一杯。
思い返せばC++ではvoid*が何のためにあるのかわかりゃしないという
ぐらい魅力半減なシロモノでしたね。

同じCLコンパイラでも、Cの場合はpointer to another typeへの
型変換をエラーとはしないが、問題ありげなものだけコンパイラが
気を遣って警告してくれるので自分的には嬉しい。


135 名前:名無しさん@お腹いっぱい。 :2000/10/20(金) 01:10
安全性には疑問が残りますが共用体つかえば
いくらでも変換はできます。(ポインタ)
もちろん自己責任で。

136 名前:名無しさん@お腹いっぱい。 :2000/10/20(金) 02:59
なんかちがうような。
文字列がconst char []だからじゃないのかな >>127
だからchar *への型変換はさせねえって話。

問題はunsignedの有無じゃなくてconstの有無。


137 名前:名無しさん@お腹いっぱい。 :2000/10/20(金) 07:00
C++は
func(char* p) {
 signed char用の処理
}
func(unsigned char* p) {
 unsigned char用の処理
}
って書けるから。
signed char*とunsigned char*の自動型変換を導入すれば
いいけれど、ただでさえ「あいまい」さがまとわりつく処理が
よりいっそう…

138 名前:120 :2000/10/20(金) 10:24
日本でプログラミングしている以上、UNICODEを使わないならば
皆さんmbstring系の関数を文字列処理で常用なさっているものと
思いますが、いちいち
mbschr(static_cast<const unsigned char*>(str.c_str(), '\\'));
などと書かされる訳でしょうか。
鬱だ。

>>136
しかし
char *s = "hello";
はOKですよ。厳密にはNGにしなければならないように思えますが
上のようなコードはウンザリするほど多いので通すようににしている
のではと推測。


139 名前:120 :2000/10/20(金) 10:28
上のカッコの位置間違ってますね。失礼。
mbschr(static_cast<const unsigned char*>(str.c_str()), '\\');

140 名前:120 :2000/10/20(金) 10:55
というか、
substr や
find 系のメンバ関数が役に立たない以上、デフォルトの
std::stringは使え(わ)ないのが普通なのでしょうかね。
::mbschrは本来findで処理すべき処理な訳ですが。

>>135
C++のポインタ間の型変換規則がCより厳しいのは
フールプルーフのためと考えますが、それのもたらすある種の
不便さへの対策として、unionのような危険なものを一々
持ち出さなければならないとしたら、本末転倒もいいところだと
思いませんか。
私はそのような言語設計を好きにはなれません。
無論、やむを得ず職務上C++を使用せざるを得ない人間にとっての、
その場しのぎの解決策としては役に立つと思いますが。


141 名前:122 :2000/10/20(金) 11:44
>>120
>mbschr(static_cast<const unsigned char*>(str.c_str()), '\\');
っていうか、static_castは使えませんよ。
mbschr(reinterpret_cast<const unsigned char*>(str.c_str()), '\\');
です。
signedポインタとunsignedポインタの違いはかくも根深いもののようでありますな。

どうでもいいが、意味もなくunsignedポインタや非定数ポインタを要求するライブラリ、逝ってくれ。
いちいちキャストするのが面倒なんだよ!

142 名前:120 :2000/10/20(金) 14:48
> mbschr(reinterpret_cast<const unsigned char*>(str.c_str()), '\\');
勉強になります。ていうかreinterpret_cast、こんなところで
使うのですね。
ますますイヤさに拍車がかかる...

unsignedポインタですが、それが「C向け」のライブラリ
であれば、"bad API"とは呼べないと思います。
const関係はANSI C的にもその通りですね。


143 名前:名無しさん@お腹いっぱい。 :2000/10/20(金) 14:57
>>138
>皆さんmbstring系の関数を文字列処理で常用なさっているものと
>思いますが、いちいち
>mbschr(static_cast<const unsigned char*>(str.c_str(), '\\'));
>などと書かされる訳でしょうか。

もしMFCを使ってるなら、CStringを使えばいいよ。
マルチバイト文字列に対応してるから。

144 名前:122 :2000/10/20(金) 14:58
>>144
> ますますイヤさに拍車がかかる...
確かに。
何というか、ソースから「ここはおかしなことをしています」という
雰囲気がにじみ出てるようでどうにも気分が良くない。
const_castも同様。

‥‥‥嫌いだ、「C向け」のライブラリ(むしろM$のライブラリ)なんて!

145 名前:名無しさん@お腹いっぱい。 :2000/10/20(金) 17:17
おかしな事をしてる部分が目立つようにするため、
あるいは、おかしさのレベル付けをするためにわざわざ異様な
形式のキャストを作ったんじゃないかな。
イヤなら旧式のキャスト使えばいいと思うんですけど。

146 名前:120 :2000/10/20(金) 17:34
>>143
そのようですね。
もっとも私はC++以上にMFCが大嫌いなのですが....

basic_stringは、ナナメ読みした感じから言って
MBCS用のtraitsを作るぐらいではMBCSに対応できなさそうに見えます。
そのようなことをやってみた方、おられますか?

>>144
私としては単純に、いよいよもってC++が嫌いになるだけの話です。


147 名前:122 :2000/10/20(金) 17:54
>>145
いや、static_castはむしろ、旧式のキャストに比べて、「何も問題ありません」
という雰囲気がにじみ出る感じがするから、特に抵抗はないです。
少々、記述が面倒だという欠点はありますが。
むしろ、旧式のキャストは「何かおかしなことをしているかもしれません」って
雰囲気で、そっちの方が抵抗があります。

>>146
いや、C++は好きです。基本的に。
やっぱり、Cとの互換のためにおかしなことになってるところがあるって
ことなのかな?

148 名前:名無しさん@お腹いっぱい。 :2000/10/20(金) 22:00
>MBCS用のtraitsを作るぐらいではMBCSに対応できなさそうに
>見えます。
wstringでWCSを使って下さい。
私に言わせれば今やプログラムの内部でMBCSを使うメリットなど
皆無です。1バイト目と2バイト目の泣き別れや、
パターンマッチングの性能の劣化など百害あって一理なし。
通信やディスクへの書き出しの際にMBCSへ変換しましょう。


149 名前:145>147 :2000/10/21(土) 09:53
「おかしな」っていうのは安全かどうかという意味もあるけど、
たとえ安全でもキャストは本来排除すべきものであるという
教育的指導の意味合いが強いと思う。あの書式はね。
だから私はstatic_castで「何も問題ありません」とは思わない。
dynamic_castも含めて、なんとか排除してやろうと考えます。

150 名前:み鶴 :2000/10/22(日) 03:03
プロパティシートにやっと3ページできました
プロパティページの2ページ目から表示させたいの、ですが
どうすればいいですか。

151 名前:名無しさん@お腹いっぱい。 :2000/10/22(日) 18:13
>>148
で、UNICODE にすればすべての問題が解決すると誤解する人が
増えるんだな。UNICODE つかうなら上から下まで全部使わないと
「ー」「−」とかの区別が付かなくなるんで心しておくと良い。

152 名前:122 :2000/10/23(月) 12:50
ま、キャストなんかないにこしたことはないというのは激しく同意。
ただ、使用するライブラリの関係上多用せざるを得ない場合があるというのがネックなんだよな。

153 名前:俺も考えてみた>150 :2000/10/24(火) 04:44
ま猿。た樫。か罪。

154 名前:122 :2000/10/24(火) 13:04
>>123
と言うわけで、適当に作ってみた。
もっと、スマートな方法ってある?

const string& Format(const char* format, ...)
{
   static string ret;
   va_list   argptr;
   va_start(argptr, format);
   char *buffer;
   int   size = 256;
   buffer = new char[size];
   while(_vsnprintf(buffer, size - 1, format, argptr) == -1){
      delete [] buffer;
      size *= 2;
      buffer = new char[size];
   }
   ret = buffer;
   delete [] buffer;
   va_end(argptr);
   return ret;
}

155 名前:名無しさん@お腹いっぱい。 :2000/10/24(火) 13:34
スレッドアンセーフにしてまで参照を返す利点はないと思う。

156 名前:名無しさん@お腹いっぱい。 :2000/10/24(火) 13:39
varargはね、キャストが増えるという弱点があるから、
避けるのが理想だと思うね。
printf("value = % 3d", 100);
を、
cout << "value = "
<< setw(3) << setfill(' ') << 100 << endl;


157 名前:122 :2000/10/24(火) 14:47
>>155
ごもっとも。早速修正してみた。
大した修正じゃないから、ソースは出さないけど。

158 名前:初心者ですみません :2000/10/24(火) 15:29
CDC *pDC;
pDC=GetDC();
pDC->なんたらかんたら;
ReleaseDC(pDC);

を、単に

GetDC()->なんたらかんたら;

にするのはアリですか?

それと
CBitmap *tempbitmap= new CBitmap;
の破棄は、deleteとDeleteObjrct()とどちらを使えばいいのでしょうか?


159 名前:名無しさん@お腹いっぱい。 :2000/10/24(火) 15:32
>>158
>GetDC()->なんたらかんたら;
>にするのはアリですか?
リリースできなくなるからナシです。

>deleteとDeleteObjrct()とどちらを使えばいいのでしょうか?
delete



160 名前:初心者ですみません :2000/10/24(火) 15:44
早速ありがとうございます。
>>GetDC()->なんたらかんたら;
>>にするのはアリですか?
>リリースできなくなるからナシです。
たとえば「現在のDCにビットマップを送るだけ」とかに
GetDC()->BitBlt(0,0,100,100,tempDC,0,0,SRCCOPY);
とかやりたいんですけどダメですかね?
イメージ的には取得してないので破棄する必要もないのかな、と。

161 名前:read MSDN. :2000/10/24(火) 18:28
>>150
SetActivePage()

162 名前:名無しさん@お腹いっぱい。 :2000/10/25(水) 18:47
MFCであたらしいクラスを作ろうと思うのですが、
どういったものに どんな基本クラスをつかえばよいのかわからないです〜。

163 名前:名無しさん@お腹いっぱい。 :2000/10/25(水) 19:02
>>162
どんなクラスを作りたいのかわからなきゃ、こちらとしても答えようがありません。
そもそも、わざわざMFCを使おうと思った理由は何?

164 名前:名無しさん@お腹いっぱい。 :2000/10/25(水) 19:05
仕事でそうなったんです〜

165 名前:163 :2000/10/25(水) 20:34
>>164
いや、そんなことより何を作りたいの?

166 名前:名無しさん@お腹いっぱい。 :2000/10/25(水) 21:54
>>158

>とかやりたいんですけどダメですかね?
>イメージ的には取得してないので破棄する必要もないのかな、と。

仮に解放する必要のないとしても関数がエラー値を返した時に対応できないのでやっぱりナシです。


167 名前:初心者でした :2000/10/26(木) 11:25
>>166
GetDC()->ButBlt();
で何度も繰り返し描画したらリソースがどんどん減っていきました。
やっぱり解放しないといけないみたいです。
ちなみにヘボプログラマなのでエラーの対処はたいして考えていませんでした。
ごめんなさい。


168 名前:超初心者 :2000/10/26(木) 11:52
はじめまして、こんにちは。
少し分からないところがあるんで、どうかお願いします。

「データの読みこみ方」についてなんですけど
データ(例:suti.dat)
 11 90
 80 100
 30 80
   ・
   ・
   ・
って書かれてあるものをオープンして読みこみたいんですけど
どうすればいいのかヘルプを読んでもよく分からなかったんです。
読みこんだあと配列の値(a[1][0]=11 a[1][1]=90)としたいのですが、
何かアドバイスお願いします。



169 名前:名無しさん@お腹いっぱい。 :2000/10/26(木) 15:20
>>168
っていうか、具体的にどこがわからないの?
それがわからないと答えようがないんだけど。

170 名前:名無しさん@お腹いっぱい。 :2000/10/26(木) 23:06
たまにはマジレス

返り値 関数(ファイル名やら、配列のアドレスやら)
{
  ファイルをオープンする
  if (失敗) {
    エラー処理orエラーコードを返す
  }
  while (一行読みこんでファイルの終りじゃなかった) {
    読んだ文字列を数値に直し、配列に格納する
  }
  ファイルを閉じる
  エラーが無かったら成功コードを返す
}

171 名前:名無しさん@お願いっぱい。 :2000/10/27(金) 12:54
ドキュメントデータを圧縮して保存したいのですが、
JAVAのjava.util.zip.Deflater クラスみたいな
便利な道具は、ありますか?


172 名前:名無しさん@お腹いっぱい。 :2000/10/27(金) 12:58
>>171
lzh とか zip とかのDLLは使えんの?

173 名前:名無しさん@お腹いっぱい。 :2000/10/27(金) 13:00
>>169
たぶん、なにもかもさっぱり分からないのだと思う。

174 名前:171 :2000/10/27(金) 13:07
どちらかといえば、内蔵したいのです。>>172

関連して、DLLを使用する場合のライセンスとかは、
どうなっているんでしょうか?

175 名前:名無しさん@お腹いっぱい。 :2000/10/27(金) 13:40
>>174
ライセンスは、使いたい DLL のドキュメントを参照してください。
アーカイブ系のDLL は↓のサイトが便利です。

http://csdinc.co.jp/archiver/lib/main.html

176 名前:171 :2000/10/27(金) 13:59
ありがとうございます>>175

177 名前:名無しさん@お腹いっぱい。 :2000/10/27(金) 16:24
VC6です。あるウィンドウを、ウィンドウができてからどの他のウィン
ドウをアクティブにしても、常にトップレベルウィンドウになるように
固定するには、どうしたらよいのでしょうか…。
よろしくおねがいします。


178 名前:>177 :2000/10/27(金) 17:28
WS_EX_TOPMOSTな

179 名前:名無しさん@お腹いっぱい。 :2000/10/27(金) 19:06
細かい事だけど、トップレベルウィンドウは
違う意味だよ。

180 名前:177 :2000/10/27(金) 19:51
え゛・・・。トップレベルウィンドウとは画面上で一番上になっている
窓のことだと思ってました。どう違うんですか?

181 名前:179 :2000/10/27(金) 20:49
ヘルプにかいてある。

画面で一番上になっているのはフォアグラウンドウィンドウ。
トップレベルウィンドウはいわゆる一般的なウィンドウ全部をさす。
そうじゃないのは子ウィンドウ(ボタンとかね)

182 名前:179 :2000/10/27(金) 20:56
フォアグラウンドウィンドウの説明間違い。ヘルプ読んで。

183 名前:名無しさん@お腹いっぱい。 :2000/10/27(金) 21:15
>181
それも違う
フォアグラウンドはアクティブなフォーカスのあるウィンドウのこと。
フォアグラウンドも通常は最前面にあるが例外もある。
177のいう他のウインドウをアクティブにして非アクティブに
他のウィンドウよりも前面に位置するウィンドウはトップモストだ。
ステイオントップなんていわれることもある。
>177
CreateWindowExを見よ。

184 名前:( ´∀`)さん :2000/10/27(金) 23:06
厨房でスミマセソ
CDCのTextOutとかで文字列を書き込む時に使う
フォントを指定するのはどうやってやればいいでスか?



185 名前:名無しさん@お腹いっぱい。 :2000/10/27(金) 23:27
CFontをつくって、SelectObject()なъ( ゚ー^)


186 名前:( ´∀`)さん>>185 :2000/10/27(金) 23:40
・・・了解
鬱だけど逝きよう…

187 名前:名無しさん@お腹いっぱい。 :2000/10/28(土) 19:08
初心者です。
ある文字列を別の文字列に置換する関数を作りたいのですが難し過ぎて
手が出ません。
CString::ReplaceのようなものをSDKだけを使って作りたいのです。
どなたか教えて下さい。

188 名前:名無しさん@お腹いっぱい。 :2000/10/28(土) 23:15
なぜ既にあるものを作ろうとするのか? >187
勉強のためというならわかるが‥

189 名前:名無しさん@お腹いっぱい。 :2000/10/28(土) 23:25
strstr()を駆使してがんばれъ( ゚ー^)

190 名前:名無しさん@お腹いっぱい。 :2000/10/28(土) 23:25
http://piza.2ch.net/test/read.cgi?bbs=tech&key=972707778
勉強するつもりなら、ここ逝け>初心者

191 名前:つーか :2000/10/28(土) 23:35
>SDKだけを使って
ってなんぞや?

192 名前:名無しさん@お腹いっぱい。 :2000/10/28(土) 23:52
188>>MFC依存から脱皮したいからです。まあ勉強の為です。
190>>Cの標準関数にはありませんのでそのスレにはふさわしくないです。
191>>MFCを使わずにということです。


193 名前:名無しさん@お腹いっぱい。 :2000/10/29(日) 00:04
バーカ、そのスレを読んで勉強しろって言われてんだよ

194 名前:名無しさん@お腹いっぱい。 :2000/10/29(日) 00:09
193>> 了解。逝ってきます。

195 名前:名無しさん@お腹いっぱい。 :2000/10/29(日) 00:32
>187
VCにまつわる問題というのではなさそうなので
他の初心者スレに行く事をお勧めします。


196 名前:名無しさん@お腹いっぱい。 :2000/10/29(日) 00:35
あ、遅かった。スマソ

197 名前:名無しさん@お腹いっぱい。 :2000/10/29(日) 01:47
VCの参考書でこれだけは買っとけみたいな
物はありますかね?

198 名前:無名選手@投げたらアカん! :2000/10/30(月) 14:47
卒業研究でテキストエディタを作っているんですけど、下のソースが上手く動かない
んです。教えて頂けませんか?

/////////////////////////////////////////////////////////////////////////////
// ファイルを開く
void CMainFrame::OnMenuOpen()
{
CString cstTemp, cstTarget ;
CFileDialog cfdgLoad(TRUE, "txt", NULL, NULL,"テキスト文章|*.txt|HTML(*.html,*.htm)|*.html,*.htm|全てのファイル(*.*)|*.*|") ;
CString filename;

if(cfdgLoad.DoModal() == IDOK){
TRY{
CStdioFile cstdLoad(cfdgLoad.GetPathName(),CFile::modeRead);
while(cstdLoad.ReadString(cstTemp)!=NULL){
}

}
CATCH(CFileException, e)
{
AfxMessageBox(cfdgLoad.GetPathName() + "の読み込みエラーです。") ;
}
END_CATCH
}
}
/////////////////////////////////////////////////////////////////////////////
// ファイルに名前を付けて保存
void CMainFrame::OnMenuSaveAs()
{
CFileDialog cfdgSave(FALSE, "txt", NULL, OFN_OVERWRITEPROMPT,"テキスト文章|*.txt|HTML(*.html,*htm)|*.html,*htm|全てのファイル(*.*)|*.*|") ; CString filename;

if(cfdgSave.DoModal() == IDOK){

TRY{
CStdioFile cstdSave(cfdgSave.GetPathName(),CFile::modeCreate|CFile::modeWrite);
}

CATCH(CFileException, e)
{
switch(e->m_cause) {
case CFileException::diskFull:
AfxMessageBox("ディスクの容量不足です。") ;
break ;
case CFileException::hardIO:
AfxMessageBox("ハードウエアエラーです。") ;
break ;
default:
AfxMessageBox(cfdgSave.GetPathName() + "の書き込みエラーです。") ;
}
}
END_CATCH
}
}

199 名前:無名選手@投げたらアカん! :2000/10/30(月) 14:51
198です。
保存は問題がありつつ出来るんです。しかし、読み込みが出来ません。

教授に怒られちゃってブルーです

200 名前:名無しさん@お腹いっぱい。 :2000/10/30(月) 17:04
VC6です。以前に、ウィンドウの開閉を繰り返しているとどんどん
リソースか何だかが減っていって、最後にはクラッシュするという
話を聞いたことがあるんですが、これは、しっかりとDestroyWindow
などをしても、ウィンドウの開閉を繰り返すのはよくないということ
でしょうか…。

201 名前:名無しさん@お腹いっぱい。 :2000/11/01(水) 05:30
誰か答えてやれよ。VC屋は

202 名前:名無しさん@お腹いっぱい。 :2000/11/01(水) 05:50
>>200
普通に作っていれば、ウインドウの開閉だけでリソースは減ったりしない。


203 名前:名無しさん@お腹いっぱい。 :2000/11/02(木) 04:52
>>198=199
なにを教えて欲しいのかちゃんと書いてくれ。
ソース出されただけじゃ意味不明だよ。
そもそもインデントもされてないソースなんて読む気もしないが。


204 名前:名無しさん@お腹いっぱい。 :2000/11/02(木) 05:02
>>200
どこかでメモリか、リソースのリークしてるの。
ありがちなのはGDIオブジェクトとかだな。
規模がデカくなると、こういうバグは取り難くなるから、ほっとかずに早めに対処した方が良いよ。
モジュール毎に分けて、単体テストやるなりすれば、何処がおかしいかいずれわかるよ。


205 名前:名無しさん@お腹いっぱい。 :2000/11/02(木) 05:08
>>200
>最後にはクラッシュするという話を聞いたことがある
そんな事話したバカ逝ってよし!
だな(藁


206 名前:名無しさん@お腹いっぱい。 :2000/11/02(木) 06:39
>>198
>CFileDialog cfdgLoad(TRUE, "txt", NULL, NULL,"テキスト文章|*.txt|HTML(*.html,*.htm)|*.html,*.htm|全てのファイル(*.*)|*.*|") ;

CFileDialog cfdgLoad(TRUE,"txt",NULL,NULL,"テキスト文章|*.txt|HTML(*.html,*.htm)|*.html;*.htm|全てのファイル(*.*)|*.*||");
フィルタの記述が間違ってるんじゃないの?
っーか、「読み込みが出来ません」だけじゃなぁ・・・



207 名前:無名選手@投げたらアカん! :2000/11/02(木) 12:13
198です。

>203さん
インデントって何ですか?。全く分からなくて申し訳ありません。


>206さん
大幅にソースを書き換えましたこれでも、読み込めなかったです。
仕方がないのでstring_tableを「\n\nテキスト\nテキスト(*.txt)\n.txt\n」
にして応急処置をしました。


// ファイルを開く
void CMainFrame::OnMenuOpen()
{
CFileDialog dlg(TRUE, NULL, NULL,OFN_EXPLORER,"テキスト文章|*.txt|HTML(*.html,*.htm)|*.html,*.htm|全てのファイル(*.*)|*.*|") ;

if(dlg.DoModal() == IDOK)
{
//読み込むファイルのパスを取得する
CString strFilename=dlg.GetPathName();
CFile textFile;
//ファイルを開く
textFile.Open(strFilename,CFile::modeRead);
//Carchiveオブジェクトarchibeを生成する
CArchive archive(&textFile,CArchive::load);
//Serialize関数を呼び出す
Serialize(archive);
//Carchiveオブジェクトarchibeを閉じる
archive.Close();
//CFileオブジェクトtextFileをクローズする
textFile.Close();
//クライアント領域を更新する
Invalidate(TRUE);
}
}


// ファイルに名前を付けて保存
void CMainFrame::OnMenuSaveAs()
{

CFileDialog dlg(FALSE, NULL, NULL, OFN_OVERWRITEPROMPT,"テキスト文章|*.txt|HTML(*.html,*htm)|*.html,*htm|") ;

if(dlg.DoModal() == IDOK)
{
//ファイル選択ダイアログで選択されたファイルをstrFilenameに設定する
CString strFilename=dlg.GetPathName();

CFile textFile;
//CFileオブジェクトtextFileをオープンする
textFile.Open(strFilename,CFile::modeCreate | CFile::modeWrite);
//Carchiveオブジェクトarchibeを生成する
CArchive archive(&textFile,CArchive::store);
//Serialize関数を呼び出す
Serialize(archive);
//Carchiveオブジェクトarchibeを閉じる
archive.Close();
//CFileオブジェクトtextFileをクローズする
textFile.Close();
}
}

208 名前:無名選手@投げたらアカん! :2000/11/02(木) 12:18
再び198です

>203さん
とにかく上のソースを正常に動作させたいんです。
今の段階では満足いってません(涙)

209 名前:無名選手@投げたらアカん! :2000/11/02(木) 12:29
          ___/ 冫   ∧_∧
 ∧_∧  _ __ (_    /   (´∀` )
 ( ´∀`)/ ) )  |   |    //   \
 (  ⊃/ //  ∧_∧    (__(_/`  |
  \__//    ( ´∀`)       _///
       ̄     ∪ ̄∪      (__(__)

   「レ」       「イ」       「ク」

210 名前:名無しさん@お腹いっぱい。 :2000/11/02(木) 13:06
>>198
もう少し、いやもっと大幅に自分で調べる習慣をつけろ。

>インデントって何ですか?。全く分からなくて申し訳ありません。
Yahoo! で「インデント」で検索するだけでもいくつかヒントは得られるだろ?
アスキー デジタル用語辞典 http://www.ascii.co.jp/ghelp/ とかで
調べてもいいんじゃないの?
それでもわかんないときになって、はじめて人に聞きなさい。

>保存は問題がありつつ出来るんです。しかし、読み込みが出来ません。
「出来ません」ってどうなるのよ? 途中でエラーがおきて異常終了する、
ファイル選択ダイアログが出てほしいのに出てくれない、ファイル名は
指定できて関数も正常終了するけど読み込まれたデータがファイルの内容
と一致しない、etc. 最低限そんくらい説明しろ。

友達を家に読んだときショートメールで「そっちの家までいけません。
どうすればイイですか?」としか聞かれなかったら「あなたはいま
どこにいるの? 家の場所がわからないの? それとも最寄り駅が
わからないの?」とかいろいろ聞き返さなきゃいけなくて、メンドウだろう?
最初から「いま最寄り駅にいるけど南口と北口のどっちで降りるのか?」
みたいに質問されれば答える方もラクだろう?

なにやるにしても、他人の善意の上にあぐらをかくな。

211 名前:名無しさん@お腹いっぱい。 :2000/11/02(木) 14:06
↓こんなのはアリなのでしょうか?
thisはParent構造体を指してると思いこんで良いのでしょうか…。
一応動作しているのですが…。

typedef struct {
  char a[100];
} Parent;

class Child : public Parent
{
public:
  Child() {
    //↓問題部分↓ 構造体Parentを0クリアしているつもり...
    memset( this, 0, sizeof(Parent) );
  };
};


212 名前:211 :2000/11/02(木) 14:16
すみません。質問がアホでした。一眠りします。終了。

typedef struct {
char a[10];
} Ojiji;

typedef struct {
char a[10];
} Obaba;

class Aho : public Ojiji, Obaba
{
public:
Aho() {
memset( (Ojiji*)this, 1, sizeof(Ojiji) );
memset( (Obaba*)this, 2, sizeof(Obaba) );
};
};


213 名前:無名選手@投げたらアカん! :2000/11/02(木) 14:51
198です

>210さん
不愉快にさせてしまい申し訳ありませんでした。氏にます。。。

ダイアログは出せます。エラーは全く出ないんですけど、保存したファイルを
表示させる事が出来ないんです。


214 名前:無名選手@投げたらアカん! :2000/11/02(木) 14:55
たびたび198です
保存したファイルを選択して開こうとしても、何も反応してくれないんです

215 名前:名無しさん@お腹いっぱい。 :2000/11/02(木) 15:39
>>198
読み込みの途中でハングアップするってことか?
デバッガでどこで止まってるのか調べてみたか?

#デバッガの使い方は、ヘルプで調べること。

216 名前:無名選手@投げたらアカん! :2000/11/02(木) 15:55
198です。

>215さん
ハングアップしないです。
読み込む動作まではできますが、肝心な保存した文章が出てこないんです

217 名前:名無しさん@お腹いっぱい。 :2000/11/02(木) 17:47
>>198
「読み込む動作まではできる」とは?
意図したファイルの内容が、意図したとおりのバッファに書き込まれている
ことを確認したということ?
「文章が出てこない」とは?
バッファに文字列が書き込まれているのに、画面にその文字列が出ないということ?

もしそうなら、ファイル読み込みの問題ではないのでは?

218 名前:無名選手@投げたらアカん! :2000/11/02(木) 18:14
198です。

>217さん
画面に文字列は出てきません。その原因は分かりません。スイマセン

基本的に保存は出来るのですが、ウインドウの左上に保存したファイル名
が反映されないです。

219 名前:名無しさん@お腹いっぱい。 :2000/11/02(木) 19:04
>>198
.........

そこまで手取り足取り教える気になりません。自力でやってください。
2chを頻繁に見る時間はあるようですから、初歩的な教科書を探して買って
勉強する時間や、ヘルプとサンプルを読む時間は作れるでしょう?

220 名前:203 :2000/11/03(金) 00:45
>>198
だめだこいつ…。
219はよく付き合ってあげたな。
もういいと思うよ。198には無駄な努力だったみたい。


221 名前:名無しさん@Cプログラマ、C++は専門外 :2000/11/03(金) 02:08
ならば私が引き継ごう。
>>198

while(cstdLoad.ReadString(cstTemp)!=NULL){
}

ってなんだ?
cstTemp にファイルの最後まで読むのは分かるが cstTemp に読みつづけたら読んだ内容がクリアされるだろ?
ReadString って1行ずつ読みこむんだろ?
ループ中で cstTarget かなんかに追加コピーするんじゃないか?

保存する方は全く保存の処理がかかれていないような気がするが俺の見間違いか?
眠いから目がかすんでるんだよ!

それとファイルアクセスの最後で Close しなくても良いのか?
俺が言えるのはこれくらいだ!!

222 名前:名無しさん@お腹いっぱい。 :2000/11/03(金) 03:00
>>221
いいよもう。
198も、どうせ教授に怒られるだけだろ。
いっそのこと、その教授ぶん殴って学校やめちまえば?


223 名前:ぱくぱく名無しさん :2000/11/04(土) 16:43
ポインターの意味が全くわかりません。だれか教えてください。
どういう風に使うか、例とかもだしてください。

224 名前:名無しさん@お腹いっぱい。 :2000/11/04(土) 17:02
>>223
入門書よめ。

225 名前:名無しさん@優しい人 :2000/11/04(土) 17:39
>>223
pointer: n.指示する人〔物〕;(時計・計器の)指針;教鞭(べん);〈話〉ヒント,示唆(しさ);ポインター〈猟犬〉;(pl.) (the P‐)《天》指極星〈大熊(くま)座中の二星〉.
これでいいですか?(冗談です
ちなみにポインタを学習する場合、アセンブラも同時に覚えると上達が早いです。
逆にアセンブラが書ける人はポインタの事を理解してると言えます。

226 名前:ぱくぱく名無しさん :2000/11/04(土) 18:58
入門書読んでもわからないから、聞いてます。ただ、私がバカなだけ。


227 名前:名無しさん@優しい人 :2000/11/04(土) 19:13
>>226
読んでもわからないバカに何言っても、無駄。

228 名前:名無しさん@お腹いっぱい。 :2000/11/04(土) 20:03
読んだだでわかんないなら、いろいろ試してみれ。

229 名前:名無しさん@お腹いっぱい。 :2000/11/04(土) 21:10
//じゃあ、ポインタの使い方。

int main()
{
char *buf;

buf = malloc(11);

printf("10文字入力してください:");
gets(buf);
printf("あなたの入力した文字は [%s] です(ワラ", buf);
}



230 名前:名無しさん@お腹いっぱい。 :2000/11/04(土) 21:14
ポインタ 参照 アドレス 別名 と4つの言葉を日本語と英語で100ペン
唱えながから筆ペンでCRTの4隅に書くと、なんか啓示を受けるそうです。

231 名前:>229 :2000/11/04(土) 22:26
必要不要論はここでは無用として
とりあえず サンプルなんだからfreeは入れとこう。

232 名前:231 :2000/11/04(土) 22:28
あとは暴走させていろいろ考えさせてみようという事なんだろうから
まあやってみたらと言う事で

233 名前:名無しさん@お腹いっぱい。 :2000/11/04(土) 23:20
>>229
freeはともかくreturnは入れとけ

234 名前:名無しさん@優しい人 :2000/11/04(土) 23:25
>229,230,231,232
あんな質問にいちいち付き合おうとするおまえらに乾杯!

235 名前:名無しさん@お腹いっぱい。 :2000/11/04(土) 23:36
>>229
(char*)malloc キャストも氏とけ!

236 名前:名無しさん@優しい人 :2000/11/04(土) 23:49
>>235
揚げ足になってしまうが、ANSIだったらキャストは必要ないよ。
キャストが必要だったのは(void *)の無かったANSI以前の時代だ。(K&Rとか)

237 名前:名無しさん@お腹いっぱい。 :2000/11/04(土) 23:52
malloc(sizeof(char)*11)で逝け

238 名前:名無しさん@お腹いっぱい。 :2000/11/04(土) 23:56
>>236
VC++6.0の場合、Cで malloc をキャスト無しで使うとワーニングがでて
C++の場合はコンパイルエラーになる。

239 名前:名無しさん@優しい人 :2000/11/05(日) 00:01
>>237
揚げ足になってしまうが、sizeof(char)はどうやっても1なので冗長です。

>>238
わたしも普段VC6.0ですが?

240 名前:名無しさん@冷たい人 :2000/11/05(日) 00:18
229を修正してやるぜ!

int main()
{
char *buf;
long buflen = 11;

buf = (char*)malloc(buflen);

printf("10文字入力してちょ♪:");
fgets( buf , buflen , stdin );
if( buf[ strlen(buf) -1 ] == '\n' )
buf[ strlen(buf) -1 ] = '\0';
printf("彼方が入力した文字は [%s]ですよぉ〜(10文字以上は切り捨てよん)\n", buf);
return 0;
}


241 名前:名無しさん@お腹いっぱい。 :2000/11/05(日) 00:28
>>240
だから free しろよ!

242 名前:名無しさん@お腹いっぱい。 :2000/11/05(日) 00:34
#include しろよ!

243 名前:名無しさん@優しい人 :2000/11/05(日) 00:40
>>241=242か?
んなことより本質的な事忘れてるよ…

>>240
テストしたか?
#それにしても気持ち悪い書き方だな。

244 名前:名無しさん@お腹いっぱい。 :2000/11/05(日) 01:30
>>240
>10文字以上
以上じゃないぞ!

245 名前:名無しさん@お腹いっぱい。 :2000/11/06(月) 17:37
VC6使ってますけど、いまいち、CRuntimeClassからCreateObjectしてできた
インスタンスの開放の仕方が良くわかりません。これは、deleteでもなくfree
するものでもなさそうなんですが、どうやるんですか?
すいません。おねがいします。

246 名前:名無しさん@お腹いっぱい。 :2000/11/06(月) 18:41
DestroyObject()

247 名前:名無しさん@お腹いっぱい。 :2000/11/06(月) 18:54
>>243
何だよ、本質的なことって?それを言えよ。
全く、何で上からわかった気になって悦に入ってるだけなんだ、こいつらは。

248 名前:名無しさん@お腹いっぱい。 :2000/11/06(月) 19:04
サンプルなんだけど、とりあえずNULLチェックはしておけ。

249 名前:>245 :2000/11/06(月) 19:17
deleteでいいんじゃない?
CView派生とかCFrameWnd派生の場合はDestroyWindow()で

250 名前:243じゃないけど :2000/11/07(火) 00:42
>247
もしかして、9行目はたまにアロケートされた外を書き換える
可能性があるのでは?アロケートしたメモリの、11文字目が
たまたま\0なら問題ないだろうけど…


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