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


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

VisualC++相談室
251 名前:名無しさん@お腹いっぱい。 :2000/11/07(火) 01:22
fgetsはlen-1バイト入力されたら終りナリ。

252 名前:名無しさん@優しい人 :2000/11/07(火) 02:35
>>247
気付かないのか?
テストシロ。(藁

253 名前:VCのプロファイラが動かない。 :2000/11/07(火) 14:10
っていうか、プロジェクト→設定→リンクのタブ→一般カテゴリ→「プロファイルを行う」
のチェックボックスをONにしてOKを押しても、なぜか次に設定ダイアログを開くと、
このチェックボックスがOFFになってる。
なめてんのかMS。
これの対処法知ってる人教えてプリーズ。

254 名前:>253 :2000/11/07(火) 15:06
FAQだね

255 名前:名無しさん@お腹いっぱい。 :2000/11/08(水) 00:22
 245です。ありがとうございます。でも、もう一度質問させてください。
 たとえばCRuntimeClassからCFrameWndを作ったとして、DestroyWindow
します。このとき、CRuntimeClassのインスタンスがまだ生きている
ようなのですが、これは、どうやったら完全に消滅させることが
できるのですか?
 よろしくお願いします。

256 名前:名無しさん@お腹いっぱい。 :2000/11/08(水) 01:29
>255
CView派生とCFrameWnd派生はWM_NCCREATEのとき
PostNcDestroy()で、delete thisするので、
DestroyWindow()で完全に消えます。多分ね

257 名前:名無しさん@お腹いっぱい。 :2000/11/08(水) 01:30
それからCRuntimeClassはstaticなので、消えません。

258 名前:名無しさん@お腹いっぱい。 :2000/11/08(水) 16:26
ダイアログにピクチャコントロールを貼って、ビットマップを
貼りつけてます。
プログラムでこのビットマップを別のビットマップに変えたい
んですが、どうしたら、よいのでしょーか!

259 名前:>258 :2000/11/08(水) 17:20
どうやって貼り付けたかによって答えがかわる。

簡単に言えば、別のビットマップを貼り付ければいい。

260 名前:名無しさん@お腹いっぱい。 :2000/11/08(水) 18:15
最初のやつはダイアログエディタで貼りつけています。
これをほかのビットマップにしたいです。
ビットマップはリソースにあってサイズは同じです。

よろしくお願いします

261 名前:名無しさん@お腹いっぱい。 :2000/11/08(水) 18:19
最初のやつはダイアログエディタで貼りつけています。
これをほかのビットマップにしたいです。
ビットマップはリソースにあってサイズは同じです。

よろしくお願いします。

262 名前:名無しさん@お腹いっぱい。 :2000/11/09(木) 14:19
マルチスレッドでADO(データベースはAccess97です)を使ってると、スレッド数が増えるにつれ
ハングる確立が増えるんですが、同じような経験をなさった方は
おられますか?

263 名前:名無しさん :2000/11/09(木) 16:33
Doc::Serialize(CArchive& ar)で、ファイルの取込・保存を行っています
自分のアプリのファイル形式でないファイルをドロップされたとき、
ファイルの中身を判定して自分のファイルでない場合、そのアーカイブを
破棄したいのですけど、やり方が分かりません、ご存知の方教えてください

何が問題かというと、bmpのみを開くアプリにa.gifを落としました。
エラーで、弾きました。docmentを変更しました(絵を書く)。
上書き保存を選択すると、その時a.gifに対して、そのデータを保存して
しまうことが発生しちゃうんです(困った困った)

264 名前:名無しさん@お腹いっぱい。 :2000/11/09(木) 16:57
ウィンドウ(CFrameWnd派生)を、ウィンドウの枠の右上のボタンで閉じない
ようにして、アプリ本体からのみ閉じられるようにしたいのですが、
ウィンドウを閉じるのはDestroyWindowを使うとして、枠のボタンを
無効にするにはどうしたらいいのでしょうか
よろしくお願いします。

265 名前:名無しさん@お腹いっぱい。 :2000/11/09(木) 17:12
255ですけども、DestroyWindowについて
"The DestroyWindow function destroys the Windows window
without destroying the object."(MSDNから)とあるんで、
DestroyWindowだけではインスタンスは消えないみたいですね。
これは、完全に消し去るにはfreeでしょうか、deleteでしょうか…。


266 名前:名無しさん@お腹いっぱい。 :2000/11/09(木) 18:23
>263
WM_DROPFILESで.gifだったら蹴るとか・・
.bmpのGIFファイルが来たら困るけど。

>264
GetSysMenu(FALSE);してからSC_CLOSEをディスエーブルにする。

>265
CFrameWnd派生ならDestroyWindow()呼び出しから帰るまでに
デストラクタが呼ばれるはずですよ。

267 名前:263 :2000/11/09(木) 18:30
Windows付のペイントもそうなんで、ちょっと安心しました・・
とりあえず、AfxThrowArchiveException(CArchiveException::badIndex);
で、弾くことにしましたけど。。。。。


268 名前:名無しさん@お腹いっぱい。 :2000/11/10(金) 01:17
すこし趣旨からはずれるかもしれないけどVC++のMFCで作ったプログラム
ってランタイム不要のだとすごくサイズが大きくなってしまいますよね?

これを配布するときってどうしてますか?VC++のランタイムはない人の
ほうがほとんどでしょうし、VBランタイムならたいていはいってるのに。

そのせいでフリーソフトはVBで作られてるのが多いような気もするんですが・・
VCランタイムをVBランタイムみたいに一般化させようという動きはないん
しょうか。
このままだとフリーソフトとか作る人はVC++を避けつづけてしまうような
気がして・・・



269 名前:名無しさん@お腹いっぱい。 :2000/11/10(金) 01:36
MFCのランタイムはIEに付属です。
MFCのオンラインソフトいっぱいあるよ。

270 名前:名無しさんi486 :2000/11/10(金) 01:39
>>268
ワラタ

271 名前:名無しさん@お腹いっぱい。 :2000/11/10(金) 01:44
MFCのランタイムって、Win98以降なら最初から入ってなかった?

272 名前:>268 :2000/11/10(金) 09:22
すげえ厨房。
弐ch編者なみだな。

273 名前:名無しさん@お腹いっぱい。 :2000/11/10(金) 12:48
最近のVBはVCのランタイムが必要です。

274 名前:名無しさん@お腹いっぱい。 :2000/11/10(金) 14:27
本当にスレが趣旨から外れて相談室として機能しなくなってる.
厨房に見せかけた高度なあらしか(ワラ

275 名前:KKK :2000/11/10(金) 15:45
>Detected memory leaks!
>Dumping objects ->
>d:\other\cv\cv03\cvview.cpp(339) : {174} normal block at 0x018F4238, 147864 bytes long.
> Data: <MMMMMMMMMMMMMMMM> 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D
>Object dump complete.

F5で実行すると↑が出てきます。
ちゃんとメモリをdeleteしてんのに、なんでこうなるんでしょうか?
だれか教えてください。

スクリーンをJPEGでチャプチャするプログラムを作成しており、
unsigned char *pPixelData = new unsigned char[NbBytes];
にしてメモリを動的確保しています。
実行するとちゃんとJPEGのファイルができるんでとりあえずはいいんですが、
気になっています。

(VC6 / Intel Jpeg Library)

276 名前:名無しさん@お腹いっぱい。 :2000/11/10(金) 17:38
delete[]しとけ。

277 名前:KKK :2000/11/10(金) 22:45
>276
ええ、最後に
>delete [] pPixelData;
ってやってます。これでリークしちゃうんで困っています。
アプリケーション終了時にリークが起こるなんてことがあるのでしょうか?


278 名前:名無しさん@お腹いっぱい。 :2000/11/11(土) 01:11
>ええ、最後に

最後ってプログラムの最後っていうわけじゃないよね(汗)


279 名前:KKK :2000/11/11(土) 08:30
全部書くと長くなっちゃうんで大体の流れを書きます。
よろしくお願いします。

void CCVView::OnJpgSave()
{

 file.Open(szFile, CFile::modeWrite | CFile::modeCreate);

 // Alloc pixel bytes
 int NbBytes = 3 * size.cx * size.cy;
 unsigned char *pPixelData = new unsigned char[NbBytes];
 unsigned char *pPixelData2 = new unsigned char[NbBytes];

 //ピクセルデータを入れ替える
 //pPixelData2 <= pPixelData

 // Compressing in jpeg
 pPixelData2 = (unsigned char*)jpeg.Compress(pPixelData2, size.cx, size.cy, 3, len, quality);
 file.Write(pPixelData2, len);

 // Cleaning memory
 delete [] pPixelData;
 delete [] pPixelData2;
}


280 名前:名無しさん@お腹いっぱい。 :2000/11/11(土) 08:42
VC++でEUCのソースって読めないですかねぇ?

281 名前:名無しさん@お腹いっぱい。 :2000/11/11(土) 11:45
ある線分とある線分の交点を求める関数ってありますか?
多角形を描画したとき、内部に隙ができちゃうのを埋めたいので
利用しようと思いまして。

282 名前:名無しさん@お腹いっぱい。 :2000/11/11(土) 15:59
>>281
英文だが...これでも嫁。
comp.graphics.algorithmのFAQだ。
http://FAQs.jmas.co.jp/FAQs/graphics/algorithms-faq


283 名前:281>282 :2000/11/11(土) 18:39
ありがとぅーね。

284 名前:Visual名無しさん :2000/11/11(土) 21:31
>>279
大体の流れと言っておきながら pPixelData を一度も使ってない
ソースを示されても困るんだが、とりあえず pPixelData2 に代入はまずいだろ。

285 名前:名無しさん@お腹いっぱい。 :2000/11/12(日) 02:47
とりあえず、つーか、問題の核心の気がする<pPixelData2に途中で代入

286 名前:名無しさん@お腹いっぱい。 :2000/11/12(日) 03:02
「あぁ、ポインタ(変数)を全く理解せずにnewを使う者がここにも」
ってのが結論なのか?

287 名前:名無しさん@お腹いっぱい。 :2000/11/12(日) 05:48
そゆこと。

288 名前:名無しさん@お腹いっぱい。 :2000/11/13(月) 22:40
Win32APIでHeapAllocなどのメモリ割り当て関数がありますが、new char[xxx]
などと比べて、どっちがいいのでしょうか。c++になれてしまっていてnewばかり
つかっているのですが、どんなもんなんでしょう。

289 名前:名無しさん@お腹いっぱい。 :2000/11/13(月) 23:30
newもHeapAlloc等で実装されてるんじゃない?
よりプリミティブにやりたければ、APIでやると


290 名前:名無しさん@お腹いっぱい。 :2000/11/14(火) 00:49
ライブラリにもよるけど、ふつーはnewの方が速い。

291 名前:名無しさん@お腹いっぱい。 :2000/11/14(火) 03:50

    / ̄ ̄ ̄ ̄ ̄ ミ
    /   ,――――-ミ
  /  /  /   \ |
  |  /   ,(・) (・) |
   (6       つ  |
   |      ___  |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   |      /__/ /  <  …教えないよ!!
 /|         /\   \____________

292 名前:名無しさん@お腹いっぱい。 :2000/11/14(火) 03:53

    / ̄ ̄ ̄ ̄ ̄ ミ
    /   ,――――-ミ
  /  /  /   \ |
  |  /   ,(・) (・) |
   (6       つ  |
   |      ___  |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   |      /__/ /  <  …教えられないよ!!
 /|         /\   \____________



293 名前:名無しさん@お腹いっぱい。 :2000/11/14(火) 15:32
VirtualAlloc って何に使ってる?

294 名前:名無しさん@お腹いっぱい。 :2000/11/14(火) 18:00
malloc()の中身とか。
HeapAlloc()だとアドレス空間の解放までコントロールできないし。
NTならHeapCompact()が使えるけど。


295 名前:名無しさん@お腹いっぱい。 :2000/11/14(火) 21:02
あまりに初歩的な質問で申し訳ないんですが、MFCでのマウス操作の検出がなぜか、
うまくいかないんです。スケルトンに、クラスウィザードからOnLButtonDown関数
を付け加えただけの物でやってみて
Void CTestView::OnLButtonDown(UINT nFlags, CPoint point)
{MessageBox("左クリック検出");

CView::OnLButtonDown(nFlags,point);
}

としただけのものすらうまくいきません。コンパイルとビルドは問題
なく終わるのに左クリックしても反応がありません。何か考えられる
原因はあるでしょうか?


296 名前:初心者 :2000/11/15(水) 00:28
abcde と入力したら cdefg と出力されるプログラムって
どう書くんでしょうか。

297 名前:名無しさん@お腹いっぱい。 :2000/11/15(水) 00:54
宿題は自分でやりましょう

298 名前:>296 :2000/11/15(水) 00:59
char *foo(char *s)
{
 if(strcmp(s,"abcde")==0)
  return "cdefg";
 else
  return "イッテヨシ";
}

299 名前:名無しさん@お腹いっぱい。 :2000/11/15(水) 01:08
リテラルをchar *で返すな。

300 名前:298>299 :2000/11/15(水) 01:33
まだ文句あっか?
char *foo(char *s)
{
 char *ret = (char*)malloc(256);
 if(strcmp(s,"abcde")==0)
  strcpy(ret, "cdefg");
 else
  strcpy(ret, "イッテヨシ");
 return ret;
}

301 名前:名無しさん@お腹いっぱい。 :2000/11/15(水) 01:50
>>299
別にいいじゃん。問題ないっしょ。


302 名前:名無しさん@お腹いっぱい。 :2000/11/15(水) 01:59
MFCをつかってMDIのときなんですが。
下になってるウインドウをクリックしたときの挙動は
どうされていますか?
初回は選択動作であるべき、ってのは俺の思い込みだから
どうでもいいんですが、皆さんどうされているのかと
思って。

303 名前:名無しさん@お腹いっぱい。 :2000/11/15(水) 02:00
>302
すいません補足。
選択動作=一回目は下のウインドウが上にくるだけ、
という意味。

304 名前:こういう問題だったりぃ :2000/11/15(水) 02:30
dst[0] = src[2] ;
dst[1] = src[3] ;
dst[2] = src[4] ;
dst[3] = src[0]+5 ;
dst[4] = src[1]+5 ;


305 名前:>300 :2000/11/15(水) 02:31
299の書き込みは多分そういう意味じゃなくて、
const付きで関数定義しろと言ってるんじゃないの?

306 名前:名無しさん@お腹いっぱい。 :2000/11/15(水) 02:53
『static でとってもいいね』なんて言ってみる。


307 名前:>306 :2000/11/15(水) 03:02
文字列定数をわざわざstaticでとる意味あんの?

308 名前:307 :2000/11/15(水) 03:16
>306
ごめん、300のmalloc()の事ね。
staticだとまずいケースを考慮してるのかもよ。
戻り値チェックが抜けてるのはご愛敬かな。

309 名前:ひまつぶし :2000/11/15(水) 03:47
int 茶昆布(int c)
{
 if(isalpha(c)) {
   c += 2;
   if(!isalpha(c)) c -= 26;
 }
 return c;
}
void 紐昆布(char *dst, const char *src)
{
 while(*src)
   *dst++ = 茶昆布(*src++ & 0xff);
 *dst = 0;
}

310 名前:名無しさん@お腹いっぱい。 :2000/11/15(水) 05:30
1:18]
おまえらいつまで
■▲▼
1 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/09(木) 12:16
C言語の話してんだよ。同じ話何遍も繰り返して。。。
ボケたオヤジか?
そんなんだったらVBの話のほうがまだまし(ワラ

311 名前::2000/11/15(水) 12:43
つまんねー煽り。
もっと考えたら?

312 名前:298,300 :2000/11/16(木) 02:16
質問です
ネタ^2にマジレスされちゃった場合どうすればよいでしょうか?
鬱で氏ぬべきでしょうか?

313 名前:マジレスされて悲しい時は :2000/11/16(木) 04:46
次はもっとネタだとわかりやすいように書こうと心に誓う。

314 名前:優しい名無しさん :2000/11/16(木) 06:55
質問です。
VC++6.0のテキストエディタなんですが、
DirectX7のメンバ関数とかが自動で表示されません。(DirectX5までしか)
設定の仕方教えて下さい。

315 名前:名無しさん@お腹いっぱい。 :2000/11/16(木) 07:28
>314
プロジェクトにDirectX7のヘッダファイルをあえて
直接加えてみるとうまくいくよ

316 名前:>310 :2000/11/16(木) 07:32
そうか?
なら言わせてもらうが・・・

1:18]
おまえらいつまで
■▲▼
1 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/09(木) 12:16
C言語の話してんだよ。同じ話何遍も繰り返して。。。
ボケたオヤジか?
そんなんだったらVBの話のほうがまだまし(ワラ

317 名前:優しい名無しさん :2000/11/17(金) 05:27
>315さん
すみません。ヘッダファイルを追加してもだめなんですが(泣

318 名前:315@帰りたい :2000/11/17(金) 06:23
>317
うーん、自分の場合、ここのだと・・・
DX7関係のヘッダファイル(ddraw.h等)を適当なフォルダにまとめ
(まとめる必要無いけど)、プロジェクト>プロジェクトへ追加>
ファイル、で片っ端からさっきのフォルダの.hを追加
・・・でうまくいくのだけど。

「オプション」のディレクトリ設定、一番上はちゃんと
・・・\DirectX7sdk\includeとかになってますよね?
      ~~~~

319 名前:名無しの笛の踊り :2000/11/17(金) 11:41
VC++でDictionary オブジェクトを引数として受け取り、処理する
には、どうすれば良いでしょうか?
aspのVBScriptからDictionary オブジェクトを引数で
渡したいのですが。

320 名前:海溝 :2000/11/17(金) 17:36
あのーハート型を書いて、赤く塗りたいのですけど、
どーすればいーのでしょーか


321 名前:KoReDeYoShi :2000/11/17(金) 18:25
 ■■■   ■■■
■■■■■ ■■■■■
■■■■■■■■■■■
 ■■■■■■■■■
  ■■■■■■■
   ■■■■■
    ■■■
     ■

322 名前:名無しさん@お腹いっぱい。 :2000/11/17(金) 20:58
すいません。

Afx って何の頭文字なんでしょうか?
それとハンガリアンnotationとかいう慣習で変数の前に型名をつけますが
'z' ってなんですか? lpzStr とか良く見ませんか?

323 名前:名無しさん@お腹いっぱい。 :2000/11/17(金) 21:13
>>322 zeroのz

324 名前:名無しさん@お腹いっぱい。 :2000/11/17(金) 23:43
>>320
CDC::Polylineでハートを描いてCDC::FloodFillで塗りつぶす。
なつかしのBASIC風味。

325 名前:名無しさん@お腹いっぱい。 :2000/11/17(金) 23:56
>>322
Application Frameworks かなぁ

326 名前:名無しさん@お腹いっぱい。 :2000/11/17(金) 23:58
>>322
Application Frameworks かなぁ

327 名前:325 :2000/11/18(土) 00:00
げ。ダブりスマソ。

328 名前:名無しさん@お腹いっぱい。 :2000/11/18(土) 00:03
>>322
Application Framework
Xはおまけ。

329 名前:名無しさん@お腹いっぱい。 :2000/11/18(土) 03:07
MSXとかXBOXのXだな
あーDirectXのXかも

330 名前:名無しさん@お腹いっぱい。 :2000/11/18(土) 03:59
日本ではダメな場合にペケをつけるってことを知らんらしい‥

331 名前:名無しのエリー :2000/11/18(土) 06:26
18歳以下(厨房含む)お断りの時にXがつくんだろ?

332 名前:名無しさん@お腹いっぱい。 :2000/11/18(土) 09:49
>>330

え、バッテン印に否定の意味って
日本だけなんですか。
知らなかった…


333 名前:名無しさん@お腹いっぱい。 :2000/11/18(土) 14:49
VC6.0のMFCでプログラムを組んでいます。
MDI形式のプログラムで、プログラム起動時に2つのビューを出して、
それぞれに違う内容を描画することって出来ますか?

334 名前:名無しさん@お腹いっぱい。 :2000/11/18(土) 15:35
>333
出来ます。

335 名前:名無しさん@お腹いっぱい。 :2000/11/18(土) 19:46
>332
あるチェックボックスを選択すると、四角の中に×がつくのって、見たことない?

336 名前:名無しさん@お腹いっぱい。 :2000/11/18(土) 20:43
//--------------------------------------------exe.cpp

#include <windows.h>
#include <iostream>
#include <string>

#define TESTCASE 3

int main()
{
  ::HMODULE hModule = ::LoadLibrary( "dll.dll" );

  std::string ( __stdcall *GetString )() = reinterpret_cast<std::string ( __stdcall * )()>( ::GetProcAddress( hModule, "_GetString@4" ));

#if TESTCASE == 1

  std::string *a = new std::string;
  *a = GetString();
  std::cout << a->c_str() << '\n';
  delete a;

#elif TESTCASE == 2

  std::string a( GetString());
  std::cout << a.c_str() << '\n';

#else

  std::cout << GetString().c_str() << '\n';

#endif

  ::FreeLibrary( hModule );

  return 0;
}

//--------------------------------------------dll.cpp

#include <string>

#pragma warning( disable : 4190 )

extern "C" __declspec( dllexport ) std::string __stdcall GetString();

std::string __stdcall GetString()
{
  return std::string( "hoge" );
}

上のソースですが、exe.cppが exeのソース、dll.cppが dllのソースです
debug でビルドしてます

TESTCASE 1,elseの時は、debug assertion とかいうのがでて、
TESTCASE 2の時は、アクセス違反が起こります

その辺はいいのですが、

実際のソースでTESTCASE 1の時と同じようにコーディングしているというのに、
終了コード3で終了してしまいました

何故でしょうか…

337 名前:名無しさん@お腹いっぱい。 :2000/11/19(日) 00:31
X-BOX -> マイクロソフトX-BOX -> MSX-BOX 〜> MSX


338 名前:名無しさん@お腹いっぱい。 :2000/11/19(日) 02:11
突然ですがVC++で
rcファイルをエディタで編集するにはどうしたらいいですか?
ダブルクリックしても開かないんですが。


339 名前:>338 :2000/11/19(日) 02:21
テキストエディタにD&D

340 名前:338 :2000/11/19(日) 02:35
>339
早速のレスありがとうございます。
しかし、試してみましたが出来ませんでした。
(D&D禁止マーク?が出ます。ソースでもヘッダファイルでも。)

341 名前:名無しさん@お腹いっぱい。 :2000/11/19(日) 03:36
>338
「開く」でrcファイルを選択し、用途でテキストを選択。

342 名前:338 :2000/11/19(日) 03:46
>341
おお!出来ました!
おかげでやっとエディタで編集出来ます。
ありがとうございました。

343 名前:名無しさん@お腹いっぱい。 :2000/11/19(日) 07:47
えーと、VC++初心者です。
現在Cの本を読んでコマンドライン引数のとこの勉強しています。
そこでこんなプログラムがたくさんあるんですがこういうのはどうやって使うんですか?
コマンドライン上でどうのこうのって書いてあるんですが・・
まったくわかんないです。
本当に初心者なのでわかりやすく教えてください。
よろしくお願いします。
例)
#include <stdio.h>
#include<stdlib.h>

int main(int argc,char *argv[])
{
double pounds;

if(argc!=2){
printf("使用法:<ctraning><ounces>\n");
printf("もう一度やり直してください");
}
else{
pounds=atof(argv[1])/16.0;
printf("%f ポンド",pounds);
}
return 0;
}

344 名前:名無しさん@お腹いっぱい。 :2000/11/19(日) 08:08
>>343
例えばそのコマンドがcmdという名前だったとします。
だったら
cmd 2.3
こんなふうに使います。


345 名前:名無しさん@お腹いっぱい。 :2000/11/19(日) 08:17
>>343
VCのメニューの「プロジェクト」→「設定」→「デバッグ」→「プログラムの引数」に、
5.4とか適当な数値を設定してみてください。

本来はコマンドラインから使うのですが、そちらは説明が大変なので
「MS-DOSプロンプト」や「DOS窓」で検索して、解説サイトをでも見つけてください。

346 名前:343 :2000/11/19(日) 08:19
>344
それはどこでcmd 2.3 とかくんですか?
コマンドがcmdだったらってコマンドはどこで設定するんですか?

347 名前:SAGE :2000/11/19(日) 09:42
>346
スタートメニューのどっかにある「MS-DOSプロンプト」起動して、
cd 作った実行ファイルのあるフォルダ名 (ここでReturn)
cmd 2.3 (ここでReturn)
と打て。
VC++ のデフォルトなら、abcde.c をコンパイルするとコマンド名は abcde みたいになるはず。

でも >>345 の方が簡単。

348 名前:343 :2000/11/19(日) 23:45
DOSひらくとC:\WINDOWS>ってでますよね。
開きたいフォルダはC:\ProgramFiles\MicrosoftVisualStudio\MyProjects\ctraining
なんですがどうやってするんですか?
ほんっとに初心者なんでよろしくお願いします。

349 名前:名無しさん@お腹いっぱい。 :2000/11/19(日) 23:52
cd "C:\Program Files\MicrosoftVisualStudio\MyProjects\ctraining"
と入力。

350 名前:名無しさん@お腹いっぱい。 :2000/11/19(日) 23:54
追加して言うと。
cd "progra ‥ でフォルダがWindows上で開くわけではなくて
カレントディレクトリがそこに移るだけ。

351 名前:名無しさん@お腹いっぱい。 :2000/11/20(月) 00:17
VisualC++のHTMLViewクラスを使って
IEベースのブラウザを作ろうかと思っているのですが、
ユニシスさんの所のライセンスを取らないといけないんですか?


352 名前:名無しのエリー :2000/11/20(月) 02:23
>>351
シェアなら必要。
フリーならこっそりと・・・

353 名前:名無しさん@お腹いっぱい。 :2000/11/20(月) 10:04
>351
一気に有名になる可能性があるから、気をつけたほうがいい。

354 名前:名無しさん@お腹いっぱい。 :2000/11/20(月) 12:12
ふと思ったんですが、VC++上からデバッグ実行してるときに、
shift+F5(デバッグの中止)を選択すると、通常の終了制御
(WM_DESTROY等)を行わずにいきなり終了しますよね。

これでメモリリークがでないって言うことは
VC側でデバッグ中のアプリケーションの
メモリアロケート状況を監視してるって事ですよね。

そういうことならメモリーリークの報告とかも
出来てしまう気がするんですが、
なぜVCにはそのような機能がないのでしょうか?


355 名前:名無しさん@お腹いっぱい。 :2000/11/20(月) 12:29
プロセスが死ねばOSが全部開放するんでないの?
いや、良くしらんが。

356 名前:名無しさん@お腹いっぱい。 :2000/11/20(月) 14:34
>354
VC++でできるじゃん。メモリリークの報告。

357 名前:名無しさん@お腹いっぱい。 :2000/11/20(月) 15:53
GDIとかも含めていってるんじゃない

358 名前:354 :2000/11/20(月) 20:25

>>356
それってDEBUG_NEWじゃないやつですか?

>>357
そういうのも含めて。
DirectX系のも普通に終わりますよね。


359 名前:ふと思ったんだけど :2000/11/20(月) 20:25
VC++5.0で、システム時刻をプログラム中で変更するってどうやるんだろうか?

360 名前:>359 :2000/11/20(月) 21:08
SetLocalTimeは?

361 名前:359 :2000/11/20(月) 21:13
>360
ありがとう、なんかすっきりしたよ

362 名前:>361 :2000/11/20(月) 21:38
安易にシステム時間変更するなよ。

363 名前:名無しさん@お腹いっぱい。 :2000/11/21(火) 00:57
リソースエディタを作りたいんですけど、
他のEXEやDLLにリソースを書込むにはどうすればいいんでしょうか?


364 名前:名無しさん@お腹いっぱい。 :2000/11/21(火) 01:53
msdn onlineを丸ごと落とせる巡回ソフトないかな?

365 名前:名無しさん@お腹いっぱい。 :2000/11/21(火) 04:52
http://search.cpan.org/ みたいに 目的別のクラスライブラリを集めてるサイトはありませんか?

366 名前:名無しさん@お腹いっぱい。 :2000/11/22(水) 01:21
VCでファイル A.txt を開きます。
その後テキストエディタで同ファイルを編集後
VCにもどると、編集された旨のメッセージボックスが
ちゃんと表示されます。

これと同じことをしたいんですがどうしたらいいのでしょうか?

367 名前:名無しさん@お腹いっぱい。 :2000/11/22(水) 02:28
自分のアプリにフォーカスが来るたび
(または一定時間ごとに)
開いているファイルのタイムスタンプを確認する
そんな程度で何とかなりそうだが‥

368 名前:名無しさん@お腹いっぱい。 :2000/11/22(水) 02:29
アプリがアクティブになるたびに編集しているファイルの
更新日時が変化していないか調べたらいい。

369 名前:368 :2000/11/22(水) 02:34
(^^;

370 名前:名無しさん@お腹いっぱい。 :2000/11/22(水) 02:36
FindFirstChangeNotification

この辺調べてごらん。


371 名前:365 :2000/11/22(水) 07:46
ありがとうです。タイムスタンプの比較でやって
見ようと思います。

372 名前:名無しさん@お腹いっぱい。 :2000/11/24(金) 23:04
これからVC++を覚えようと思ってる初心者ですが、
お勧めの入門書などありましたら教えてもらえませんか?
一応C言語は使えますが、Windowsのプログラムを書いたことはありません。

373 名前:名無しさん@お腹いっぱい。 :2000/11/25(土) 06:06
C使える上に、これからMFC使う気が無いなら、解説サイトとMSDNが
あれば十分な気がする。んで「C++の」良書を購入するとか。

自分、VC++の入門書ってMFCの解説ばっかだから好きじゃないです

374 名前:名無しさん@お腹いっぱい。 :2000/11/25(土) 12:00
表を使ったソフトを作りたいのですがFLEXGRID(or FLEXHGRID)で
セルをマージ可能にするとマウスでセルを選択した時に色が変わらなく
なるようです。これはバグなのでしょうか。


375 名前:名無しさん@お腹いっぱい。 :2000/11/25(土) 13:52
>>352
特許に関しては有償、無償に関係なく侵害になる。
詳しいことは弁理士に相談して。

IEは消尽理論で問題ないかもね。これでも一般論だけど。
http://www.forest.impress.co.jp/article/2000/03/16/lzw_license.html



376 名前:名無しさん@お腹いっぱい。 :2000/11/25(土) 15:17
CreateWindowを呼び出して、スタテッククラスを作成した時のスタイル
でくぼみのあるコントロールをこしらえたいのですがうまくいきません。
リソースエディターなら可能ですのでできるようなきがするのですが。
くぼみをつけるパラメータは存在しないのでしょうか。


377 名前:名無しさん@お腹いっぱい。 :2000/11/25(土) 15:49
CreateWindowEx()

378 名前:376 :2000/11/25(土) 17:19
>>377

おお簡単にできた!!!(ノ ̄▽ ̄)ノ⌒( ̄▽ ̄⌒)(¬ ̄▽ ̄)¬
WS_EX_CLIENTEDGEを使えばいいんですね。
こんなことに気がづかなかったとは・・・
377さんありがとう。

379 名前:名無しさん@お腹いっぱい。 :2000/11/25(土) 21:35
APIは
Hoge(...) で困ったら
HogeEx(...) が無いか調べてみよう。
けっこうあるぞ‥

380 名前:372 :2000/11/26(日) 03:04
>373
MFCはダメですか?

381 名前:名無しさん@お腹いっぱい。 :2000/11/26(日) 03:42
やめとけ‥

382 名前:373 :2000/11/26(日) 06:18
Windowsプログラム、ってことならMFC使えた方が便利かもしれません。
MSDN、日本語の方のWinAPIの解説が不十分なこともあって、コントロ
ール周りとか結構面倒だし(難しくはないです)。

でもですねぇ、個人的には381さんと同意見です。勉強ならとくに。
どうしても・・・ならMFC抜きで一通りやってからの方が
振り回されずにすむかと。

383 名前:名無しさん@お腹いっぱい。 :2000/11/26(日) 06:22
またやってる・・・382は
>>380です

384 名前:名無しさん@お腹いっぱい。 :2000/11/26(日) 11:51
理解を深めたいなら、MFCを使うだけじゃなく、
MFCのソースを読んでみるといいと思いますよ。
SDKのサンプルより役に立つことが多いです。

385 名前:> :2000/11/26(日) 14:05
勉強つー意味ならVCLのソースもいいと思う
が、pascalなのでCの勉強にはならん‥

386 名前:>384 :2000/11/26(日) 19:41
そうか、いいなあ、あまりにもdefineの山で目がチカチカする

387 名前:>386 :2000/11/26(日) 20:59
プリプロセッサ通してから読め(藁

388 名前:名無しさん@お腹いっぱい。 :2000/11/26(日) 23:50
プロパティシートを作ったんですが、
OKボタンを押したときに、プロパティページに
IDOKメッセージが飛んできてくれません。何ででしょうか?

389 名前:名無しさん@お腹いっぱい。 :2000/11/27(月) 02:27
OKボタンはページではなくシートにあるからだ。
各ページにはPSN_APPLYメッセージが来る。
ドキュメント読めよ。
http://msdn.microsoft.com/library/psdk/shellcc/commctls/PropSheet/PropSheet.htm#OK__Cancel__and_Appl


390 名前:388 :2000/11/27(月) 03:01
>389
おまえ頭いいな!

391 名前:ぱくぱく名無しさん :2000/11/27(月) 09:41
誰か私の宿題を手伝ってください。int dealの後Return文を書かなければ
ならないのですが、書き方がわからないのです。(今までVoidしか使った事がなかったので。)
これは英語のプログラミングですが、よろしくおねがいします。一応、
ブラックジャックを学ぶためのプログラミングです。

#include <conio.h>
#include <iostream.h>
#include <stdlib.h>

/*
int deal(void)
//ここに1から11のランダムナンバーがでるようなファンクションを入れる。
*/


void main(void)
{int Knowledge[31],Card1, Card2, Hit, Score, Previous, Games, P;
char Answer;

for(P=0;P<31;P++) Knowledge[P]=1;

cout<<" カードのナンバーを2つ入れよ。真中にスペースを忘れずに。"<<endl;

for(Games=0;Games<16;Games++)
{cout<<"私のカードは何?";cin>>Card1>>Card2;
Card1=rand()%11+1;
Card2=rand()%11+1;
cout<<"私のカードは"<<Card1<<" "<<Card2;
Score=Card1+Card2; Previous=Score;

while ((Score<22) && (Knowledge[Score]>0)) // Ask for hit if not busted,
// or have not yet learned to stand on this score
{cout<<"Hit me";cin>>Hit;
Hit=rand()%11+1;
cout<<" "<<Hit;
Previous = Score;
Score = Score + Hit;
}
cout<<endl;
if (Score<22)
Answer='y';
else
Answer='n';

cout<<"I stand, 私は勝った? (y/n)"; cin>>Answer;

if (Answer == 'y') Knowledge[Previous]++;// Reward the machine
else Knowledge[Previous]--; // Punish the machine
}
cout<<"My knowledge base contains the following numbers "<<endl;
 for (P=0;P<22;P++) cout<<"Cell "<<P<<" contains "<<Knowledge[P]<<endl;
for (P=0;P<22;P++) cout<<Knowledge[P]<<" ";
cout<<endl;
}


392 名前::2000/11/27(月) 09:45
宿題は専用スレでお姉さんにきけ!

393 名前:Visual名無しさん :2000/11/27(月) 09:45
int deal(void)
{
int number;
// ここで rand() とかを使って number に1〜11のどれかを入れる。
return number;
}

394 名前:名無しさん@お腹いっぱい。 :2000/11/28(火) 02:19
デュアルCPUの場合、ある処理を2つを分散させたいのですが、
どうやればよろしいのでしょうか?

知人から2つ起動すれば、OSの方で勝手にやってくれると聞き
テストプログラムを作ってやった所それはできました。

で、今回は、内部で平行して走らせて、A側とB側で、データを
検索させて、片側でもデータを検出したら、検出中の一方の検索
を終了させたりしたりしたいんです。
while(どちらかが見つかるまで){
  A = DataSearch(.A側) ;  // 同時
  B = DataSearch(.B側) ;  // 同時
}
if(まだ片方検索中なら)
  検索やめなさい(検索中の方) ;
てな、感じで。よくわかりません。
どういうキーワードで調べるかのヒントでもいいので、教えてください。


395 名前:名無しさん@お腹いっぱい。 :2000/11/28(火) 02:52
>>394
スレッドを作ってスレッド1でA、スレッド2でBを検索するようにすれば
OSが勝手に分散させるよ。
データが見つかった場合、もう片方のスレッドにメッセージを送って検索を終了させる。
例えばBOOL型変数でループを作っておいてTRUEの間は検索。
どちらかで見付かったらFALSEに書き換えてループから抜けて終了。
終了時にはスレッドの同期(両方終了するのを待つ)をとったほうが良いかもね。

396 名前:394@感謝 :2000/11/28(火) 04:06
>>395
早速のレスありがとうございます。

取り敢えず、まだよく解らないけど、調べながらやってみます。
解らないこと:
・スレッドプロセスの作成方法
・スレッドプロセスの終了方法
・スレッドプロセスにメッセージ送信/受信


397 名前:名無しさん@お腹いっぱい。 :2000/11/28(火) 04:49
>>396
CreateThread をMSDNで調べれば多分分かる。

398 名前:名無しさん!uucp :2000/11/28(火) 15:08
>>396
スレッド終了を監視するには、WaitForMultipleObjects()を、
スレッドを強制的に終了させるには、TerminateThread()を
使いましょう :-)


399 名前:名無しさん!uucp :2000/11/28(火) 15:11
>>396
A,Bのスレッドを作成して、いずれか一方が完了したときに
他方を終了させるサンプル。

---
/* Aを検索するスレッド */
DWORD AThread(DWORD parm)
{
/* Aを検索するにょ〜 */
}

/* Bを検索するスレッド */
DWORD BThread(DWORD parm)
{
/* Bを検索するにょ〜 */
}

int main(int args, char *argv[])
{
HANDLE hThread[2];
DWORD ReturnValue;

hThread[0]=CreateThread( (途中パラメータ略), (LPTHREAD_START_ROUTINE)AThread, (パラメータ略));
hThread[1]=CreateThread( (途中パラメータ略), (LPTHREAD_START_ROUTINE)BThread, (パラメータ略));

ReturnValue=WaitForMultipleObjects(2, hThread, FALSE, INFINITE);
if (ReturnValue == WAIT_OBJECT_0)
{
/* Aスレッドが終わった */

/* Bスレッドを終わらせる */
TerminateThread(hThread[1]);
}
else if (ReturnValue == WAIT_OBJECT_0+1)
{
/* Bスレッドが終わった */

/* Aスレッドを終わらせる */
TerminateThread(hThread[0]);
}
}
---

ちなみに #include とかエラー処理とかは省略してるので、必要に応じて加えてください :-)


400 名前:名無しさん@お腹いっぱい。 :2000/11/28(火) 15:45
>>399
TerminateThread() は良くないよ。
スレッドの強制終了だから、スタック解放しない、ハンドル閉じない。
タイミングによってはプロセスごとこけるおそれあり。
イベントなどで終了を通知するべし。

401 名前:名無しさん@お腹いっぱい。 :2000/11/28(火) 16:30
こんな感じで、如何でしょう。

typedef struct{
 HANDLE hAbort;
 char * SearchPath;
}TSearchParam;

DWORD SearchThreadEntry(LPVOID param)
{
 HANDLE hAbort = ((TSearchParam *)param)->hAbort;

 while(WaitForSingleObject(hAbort,0) == WAIT_TIMEOUT && bDone == FALSE){
  /* 検索処理 */
 }
 return(0);
}

int EnterSearch(HANDLE hUserAbort)
{
 HANDLE hAbort = CreateEvent(NULL,TRUE,FALSE,NULL);
 HANDLE hThread[3];
 TSearchParam sp[2];

 sp[0].hAbort = hAbort;
 sp[1].hAbort = hAbort;
 hThread[0] = CreateThread(...,SearchThreadEntry,&sp0,...);
 hThread[1] = CreateThread(...,SearchThreadEntry,&sp1,...);
 hThread[2] = hUserAbort;
 WaitForMultipleObjects(3,hThread,FALSE,INFINITE);
 SetEvent(hAbort);
 WaitForMultipleObjects(2,hThread,TRUE,INFINITE);
 CloseHandle(hAbort);
 return(0);
}


402 名前:394 :2000/11/30(木) 04:29
皆さま、いろいろありがとうございます。
処理の方は、思い通り動きましたです。
本当にありがとうございました。

403 名前:名無しさん@お腹いっぱい。 :2000/11/30(木) 19:17
ボタンを押下しても、イベントが発生してないのか関数に飛んでくれません。

ちゃんと動くやつとの違いを考えてたのですが、
ウィンドウをスプリット(画面分割)させてて左側にEditView。
右側にFormViewを置いてあり、そのFormViewに貼り付けたボタンが
機能しないんです。

どこらあたりを調査すればよいのでしょうか??

404 名前:名無しさん@お腹いっぱい :2000/11/30(木) 19:51
ちと書く場所が違うかもしれないけど、純粋?なC++の
仕様書って、何処に行けばあるんですか?
MFCとかいろいろあるけど、どれにも汚染されてない奴が欲しい.

いやーなんでかってstatic_castはC++のキャストだと思ってたんだけど
上司に否定されて、(MFCのキャストじゃないの?とか言いやがった!)
悔しいから調べてるんだけど、わかんないんだよね.

405 名前:404 :2000/11/30(木) 20:19
ギコ猫に聞きます。

406 名前:名無しさん@お腹いっぱい。 :2000/12/01(金) 17:47
アプリ内からShellExecuteとかで他のアプリをを起動すると、
自プロセスの占有メモリが徐々に増えていきますが、そういうものなのでしょうか?

ランチャー作ってるんですが、これのせいでメモリ多く消費してるように見えて
なんかイヤなんです。起動直後はそうでもないのに。

ShellExecuteで指定する親ウィンドウをデスクトップとかにしてもダメでした。
回避する方法をご存知でしたら教えてください。

407 名前:ハガ>406 :2000/12/01(金) 17:53
ランチャって何ですか?

408 名前:406 :2000/12/01(金) 18:07
アプリをたくさん登録しておいてすばやく起動するためのソフトです。
参考スレ http://yasai.2ch.net/test/read.cgi?bbs=win&key=965622016


409 名前:406 :2000/12/01(金) 18:08
もしかして、launcherはロンチャと読めゴルァ!というネタ振りなのだろうか…。

410 名前:名無しさん@お腹いっぱい。 :2000/12/01(金) 18:14
>これのせいでメモリ多く消費してるように見えて
何をみてるですか?

411 名前:406 :2000/12/01(金) 18:27
Win2000のタスクマネージャのプロセスです。
この方法じゃだめでしょうか。

412 名前:名無しさん@お腹いっぱい。 :2000/12/01(金) 21:42
おれもランチャ作ってるぞゴルァ (`Д´)
オマエのランチャの起動時の最大メモリ使用量いくつだ!

#たしかにShellExecute()するとでかくなるな

413 名前:メガテンフリーク :2000/12/02(土) 03:49
カワンチャー

414 名前:名無しさんi486 :2000/12/03(日) 12:52
>>412
アプリ50個登録した状態で3,500KBぐらいだゴルァ。
でかい?

415 名前:名無しさん@お腹いっぱい。 :2000/12/03(日) 14:54
ロケットランチャーの作り方を教えてください

416 名前:名無しさん@お腹いっぱい。 :2000/12/03(日) 18:44
>414
おんなじくらいダゾ(`Д´)



417 名前:名無しさん@お腹いっぱい。 :2000/12/04(月) 02:22
MFCを使わずにドラッグドロップを実装しようとしています。
DoDragDrop関数を使えばいいという所までたどり着きました。
IDropTargetインターフェイスのポインタは取得できたのですが、
IDropSourceインターフェイスのポインタの取得方法がわかりません。
どなたか教えていただけないでしょうか。


418 名前:名無しさん@お腹いっぱい。 :2000/12/04(月) 03:20
www.nakka.com(だっけ?)のサンプルが参考になるかと>417

419 名前:初心者 :2000/12/04(月) 08:36
プログラムが大きくなってくると
プロシジャー関数がやたらに大きくなって、
そしてどのにWM_PAINTがあるやらと
いつも探すはめになってしまします。

プロの方々はどのように対処されているのでしょうか?

420 名前:名無しさん@お腹いっぱい。 :2000/12/04(月) 11:01
>>419
検索する。

421 名前:名無しさん@お腹いっぱい。 :2000/12/04(月) 12:22
>>419
>プロシジャー関数がやたらに大きくなって、
いわゆるWinProcの事?
違う処理するウインドウなら、別のウインドウクラス登録して、
ウインドウプロシージャを分ければいいだろうし、
そうでなければ、ウインドウハンドルに対応する管理テーブル作って、
WM_PAINTから呼び出し先とかを変えれば問題ないと思うけど。
ウインドウの数が多い場合は、管理テーブルへのマッピングに、
ハッシュテーブルをかますのがベターです。

422 名前:名無しさん@お腹いっぱい。 :2000/12/04(月) 14:23
>>419
WindowProcに全部詰め込むと汚くなるので、
メッセージ処理部分は関数にしよう。

423 名前:419 :2000/12/04(月) 16:10
みさなんいろいろなご助言ありがとうございます。
自分はいままで別に関数を作って処理してました。
ただこのやり方が一般的かどうか心配だったもので・・・
421さんがおっしゃるやり方も試してみようと思います。


424 名前:名無しさん@お腹いっぱい。 :2000/12/04(月) 20:01
> SQLExecDirect(stmt, "SELECT ...", SQL_NTS);
C++で上記のように書くと、
> error C2664: 'SQLExecDirect' : 2 番目の引数を 'const char *' から 'unsigned char *' に変換できません。 (新しい機能 ; ヘルプを参照)
> 指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。
の様なコンパイルエラーが出るのですが、できる限りソースのこの部分に手を付けずにエラーを消す方法はないですか?
一応、/Jオプションは試してみたんですが、効果がありませんでした。

425 名前:名無しさん@お腹いっぱい。 :2000/12/05(火) 13:21
"x1.h"
template <typename T>
class x11{
public:
x11();
};
class x12{
private:
class x121{
public:
x121(){}
};
public:
x12();
x11<x121> xx;
};

"x1.cpp"
#include "x1.h"
template <typename T>
x11<T>::x11(){}
x12::x12(){}

"main.cpp"
#include <string>
using namespace std;
#include "x1.h"

int main(){
x11<string> xx;
return 0;
}

このコードコンパイルしたら、リンクでエラーがでる。
x11のデフォルトコンストラクタの実装がないとか言う。
あるやん、なんでぇ?

コンストラクタ・デストラクタ以外ならうまくいく。
コンストラクタをインラインにしてもうまくいく。
x11の実装をmain.cppに書いてやるとうまくいく。
VC++6.0だけど、これってコンパイラのせい?

誰か助けて。
オ ネ ガ イ!


426 名前:名無しさん@お腹いっぱい。 :2000/12/05(火) 14:20
>>425
templateの使い方を勉強しなおせ
全然意味を理解しないでtemplateを使ってるだろ

427 名前:名無しさん@お腹いっぱい。 :2000/12/05(火) 15:26
>>426
コードの中で、テンプレート型をいっちょも使ってないってこと?
千行以上あるコードをここでアップするわけにはいかないから
問題の箇所を抜き出して、最低限のコードにしたからこうなったのですが。
templateの意味は分かってるつもりです。
イジワルしないで、教えてください。

428 名前:名無しさん@お腹いっぱい。 :2000/12/05(火) 15:41
>>427
テンプレートはマクロの一種だということを考えれば
自ずと答えは出てくると思うが
型が違うテンプレートは当然リンクできない

429 名前:名無しさん@お腹いっぱい。 :2000/12/05(火) 16:28
"x1.h"
template <typename T>
  class x11{
public:
  x11();
};
template <typename T>
x11::x11()
{}
class x12{
  ・・以下略
こう使うのが筋だと思うがどうよ?>427

430 名前:429 :2000/12/05(火) 16:29
インデント間違えたー

431 名前:427 :2000/12/05(火) 17:39
>>428
うーん、大きなヒントのような気がしますが、理解できません。
もう一声お願いします。
>>429
実装も、"x1.h"でしちゃえ、って事ですか?
そうすると、"x1.h"を複数モジュールでインクルードすると
実装が重複しちゃいます。

432 名前:名無しさん@お腹いっぱい。 :2000/12/05(火) 18:59
>そうすると、"x1.h"を複数モジュールでインクルードすると
>実装が重複しちゃいます。

そうか?templateだぞ?

433 名前:名無しさん@お腹いっぱい。 :2000/12/05(火) 19:10
inlineにするかはともかく、
template <typename T>
x11<T>::x11() {}
にしないとコンパイルできない。

434 名前:427 :2000/12/05(火) 20:20
>>432
おぉぉぉ、わかりました。うまくいきました。
ありがとうございます。
つまり、テンプレート型の実装は実際に宣言したモジュールで
行われるわけですねー。つまりマクロだと。
このおかげで、>>428 も理解できました。

ぬぉー、なんてこった、こんなのに3日もかけたなんて。
>>426 の言うとおり、全然理解してなかったようです。
ショボン

435 名前:>434 :2000/12/05(火) 21:03
そう落ち込むな、これで君もtemplateを少し理解出来たじゃないか。
以前より進歩したということだ。未来は、明るいかもしれないぞ。

436 名前:名無しさん@お腹いっぱい。 :2000/12/06(水) 10:40
SetPixel()を使って点をプロットしたいのですがほとんど見えません。
円を書いて点を描くと問題ないのですがもう少しスマートにコーディネートしたいです。
点の大きさを変えるようなAPIは無いのでしょうか?

437 名前:>436 :2000/12/06(水) 10:51
PENを変えればよかろう。

438 名前:名無しさん@お腹いっぱい。 :2000/12/06(水) 18:09
cout << setw(7) << setfill('0') << num << endl;

このコードが、Releaseバージョンだと問題ないのですが、Debugバージョンだとコンパイルが通りません。
以下のようなエラーメッセージが出ます。

error C2679: 二項演算子 '<<' : 型 'struct std::_Fillobj<unsigned char>' の右オペランドを扱う演算子は定義されていません。(または変換できません)(新しい動作; ヘルプを参照)

何で、Debugだとコンパイルが通らないんでしょうか?
<iostream>と<iomanip>はインクルードしてあります。
VC++6.0 Professionalです。

439 名前:438 :2000/12/06(水) 18:20
とりあえず、簡単なテストプログラムを書いてみたらちゃんとコンパイルが通りました。
何が原因なんだろう???

440 名前:名無しでGO! :2000/12/06(水) 19:00
>>438
charのデフォルトがsignedなのかunsignedなのかの違いのせいでしょう

441 名前:438 :2000/12/06(水) 20:44
>>440
その通りでした。
他で出た不具合のために、charの型をunsignedにしたまま戻すのを忘れていました。
おかげで解決できました。ありがとうございます。

442 名前:Rs :2000/12/07(木) 01:35
VCを使いつづけるメリットはなんでしょう?
MSはVBをメインに開発してるようにおもえるのですが。。
ていうかC#まで出てきたらほんとになくなりそうです。。

443 名前:>442 :2000/12/07(木) 02:09
VCがどうとかと言うより、VBじゃOSは組めないよ。
まっとうな売りもんになるアプリも組めないと思うが。
ちょっと、無茶なこといってるよ君。

444 名前:名無しさん@ネタじゃないよ、まじまじ :2000/12/07(木) 03:08
映画のスタッフロールみたいな動きをするクラスってありますか?


445 名前:名無しさん@お腹いっぱい。 :2000/12/07(木) 08:26
>442
リアル厨房?


446 名前:名無しさん@お腹いっぱい。 :2000/12/07(木) 15:48
ヘッダのいらんC++作ってくれんかなー。

#JAVAは嫌・・・



447 名前:名無しさん@お腹いっぱい。 :2000/12/07(木) 16:44
ANSIで標準化されているC++にMSが独自仕様を追加する事はできないからC#を作ったんだよ。

448 名前:名無しさん@お腹いっぱい。 :2000/12/07(木) 17:12
?VCは結構ANSI C++と違うが?

449 名前:てんてん :2000/12/07(木) 18:21
#define ぐるぐる回る for(;;)
という使い方をしたいです。
やり方教えて!!

450 名前:名無しさん@お腹いっぱい。 :2000/12/07(木) 18:30
InteliSense で自分で作ったメンバ関数他ワークスペース上の
関数・変数しか出てきません。
「::」を入力しても同様で、とっても困ってます。なにかのヘッダファイルを
プロジェクトに追加すればいいのでしょうが、そのヘッダファイルの名前を
教えていただけませんか?

451 名前:ε :2000/12/07(木) 19:10
>>447
んじゃ、MSDNによく出てくる
> Microsoft 固有の仕様 →
> ← Microsoft 固有の仕様
って、何?

452 名前:。>451 :2000/12/08(金) 01:01
それって、無いとは言わないけど、C++そのものより、
標準ライブラリに多いと思ったけど。
まぁ、ライブラリ抜きで考える事って少ないから、
確かに独自部分は多い事にはなるね。

453 名前:名無しさん@お腹いっぱい。 :2000/12/08(金) 02:06
>>451
そういう拡張って、 gcc でも使えたりするよね。
いやだから何ってわけじゃないけど。


454 名前:名無しさん@お腹いっぱい。 :2000/12/08(金) 17:37
>>453
たしかに
void func(int i)
{
 int array[i];
...
なんて書き方ができるCコンパイラはgcc以外にしらないな。


455 名前:名無しさん@お腹いっぱい。 :2000/12/09(土) 03:19
>>454
え。
malloc 出番減るなあそれ。
すごい(嬉しい)拡張だ。


456 名前:名無しさん@お腹いっぱい。 :2000/12/09(土) 03:28
つーか、実質allocaだべ?

457 名前:名無しさん@お腹いっぱい。 :2000/12/09(土) 03:50
システムのプログレスダイアログボックスを表示させないで
ごみ箱へファイルを移す(仮削除)簡単な方法は無いでしょうか。
(別スレッド上で移動させたいので、ダイアログが出ると不都合なんです。)
環境はVisualC++ で、MFCは使っていません。
よろしくお願いします。

458 名前:名無しさん@お腹いっぱい。 :2000/12/09(土) 04:20
>454
どうでもよいけど i が -1 だったりしたらどうなるのだろ?(わ
しかしスタック上に確保されるのはいいね〜
オーバーフローには注意しなきゃだけど。


459 名前:名無しさんi486 :2000/12/09(土) 04:24
>>457
SHFileOperation()じゃ駄目なの?

460 名前:457です :2000/12/09(土) 04:38
>459
SHFileOperationに、
ダイアログを出さないオプションって、あるんでしょうか。

461 名前:457です :2000/12/09(土) 04:43
あ、FOF_SILENTってのがありますね。
これ使って試してみます。

462 名前:名無しさんi486 :2000/12/09(土) 04:52
>>460
>FOF_NOCONFIRMATION Respond with Yes to All for any dialog box that is displayed.
>FOF_SILENT Does not display a progress dialog box.
>FOF_SIMPLEPROGRESS Displays a progress dialog box but does not show the file names.

好きなの選べ。

463 名前:名無しさん@お腹いっぱい。 :2000/12/09(土) 05:02
>>458

負の値を入れたら逝ってしまいました。
0も危ないと思っていたのですが
1要素として扱われたみたいです


464 名前:名無しさん@お腹いっぱい。 :2000/12/09(土) 06:39
>463
ありゃりゃ、逝っちゃいますか。
でも、そのブロック内の配列の宣言の直前とかに条件式(?:)とか入れられる
仕様なら、リカバリは出来そうですね。↓
void func (int i) {
  size_t anum = i > 0 ? i : 1;
  char a[anum];
  /* ... */
  { /* 途中のブロックもokなのかな〜 */
    char b[anum];
    /* ... */
  }
}

465 名前:457です。 :2000/12/10(日) 15:15
ダイアログを出さずにごみ箱への移動の件、うまく行きました!
あともう一つだけお願いします。
プログラムから、ごみ箱の中のファイルを削除する方法が
ありましたら教えてください。

環境は前述しましたが、VisualC++ で、MFCは使っていません。
よろしくお願いします。

466 名前:名無しさん@お腹いっぱい。 :2000/12/10(日) 16:03
DeleteFile;
SHFileOperationの必要なし。
少しは自分で調べましょう。
初心者の私でもわかるよ。


467 名前:名無しさん@お腹いっぱい。 :2000/12/10(日) 16:28
MFCなどはプログレスバーやスピンコントロール作成できるなぅていまあす。
APIからは作成できないのでしょうか。

468 名前:名無しさん@お腹いっぱい。 :2000/12/10(日) 16:55
>466
初心者らしい浅知恵だね。
SHEmptyRecycleBin

469 名前:名無しさん@お腹いっぱい。 :2000/12/10(日) 22:24
前からの素朴な疑問なんですけど、

MFC&APP wizardで作ったアプリをGPLで公開していいの?
コード的にMSが作ったものが混じってしまうので問題なのかな?と考えていますが。

識者の方、教えてください。



470 名前:名無しさんi486 :2000/12/10(日) 22:32
MSDNっていくらするの?
今はVC proに付いてくるライブラリ入ってる、学生の内にVS買うつもりだから
あと1年半は大丈夫なんだけど。

471 名前:( ´∀`)さん :2000/12/10(日) 23:27
MSDN入れば?
最新のが手に入るぞぬ


472 名前:466 :2000/12/11(月) 02:26
>>466
これはどうも。また1つ勉強しちゃった

473 名前:466 :2000/12/11(月) 02:28
あ、間違えちった。
>>468

474 名前:名無しさん@お腹いっぱい。 :2000/12/11(月) 12:50
初心者です。
ひとつのダイアログ上に255個以上のコントロール配置できないんですか?

475 名前:名無しさん@お腹いっぱい。 :2000/12/11(月) 16:33
SDIアプリのクライアント領域(CViewのとこ)を凹ませずに
表示したいのですが、どうやったらいいのでしょうか?
Dialogベースのアプリのようにのっぺりしたウィンドウに
したいんです。

476 名前:>475 :2000/12/11(月) 20:57
GetSysColorで、ボーダーの色を取得して、
その色から、ソリッドブラシを作る。
作成したブラシをWNDCLASSのhbrBackgroundに設定して、
RegisterClassを呼べば設定できる。
SetWndowLongでブラシを変更しても出来る。

477 名前:名無しさん@お腹いっぱい。 :2000/12/12(火) 05:20
↓のようなプログラムを作りました。
----------------------------------------------------
void  pre処理(int count)
{
  int  *p[3] ;

  p[0] = (int *)malloc(count) ;
  if(p[0] == NULL)  goto err_return0 ;
  p[1] = (int *)malloc(count+256) ;
  if(p[1] == NULL)  goto err_return1 ;
  p[2] = (int *)malloc(count+16) ;
  if(p[2] == NULL)  goto err_return2 ;

  処理(p[0],p[1],p[2]) ;

  free(p[2]) ;    //  <- ここで暴走
err_return2:
  free(p[1]) ;
err_return1:
  free(p[0]) ;
err_return0:
 
  return ;
}
----------------------------------------------------
メモリを開放する時にプログラムが停止してしまいます。
なぜだか解らず、困っています。どうかこのバカ者に
教えてください。

478 名前:名無しサソ :2000/12/12(火) 05:39
>>477

 ?自分はCは使わないから、mallocはほとんど
使ったことは無いけど、mallocってこれでいいんだっけ?

p[0] = (int *)malloc(sizeof(int)*count);

とか書くのではないの?これでpを処理できているのが
かなり疑問なのだけど。的外れだったらスマソ

479 名前:名無しさん@お腹いっぱい。 :2000/12/12(火) 05:42
>>477
処理()でオーバーランが起きている可能性がある。


480 名前:名無しサソ :2000/12/12(火) 05:44
補足ね
 countでバイト数そのものを定義しているのなら、的外れ。
でも、わざわざバイト数を直接指定してどうするの?変な数
を指定して、暴走の原因になるような・・・。

481 名前:477 :2000/12/12(火) 05:55
助言いろいろ有難うございます。
もう一度考え直して出直してきます。
でわ。

482 名前:名無しさん@お腹いっぱい。 :2000/12/12(火) 09:58
>>474
直接貼り付けられるのはコントロールIDが255までだからそのとおり。

483 名前:名無しさん@お腹いっぱい。 :2000/12/12(火) 13:55
Cのreallocの機能をnew された変数で実現するにはどうしたら良いでしょうか?
具体的には
classのインスタンスを配列で管理して数を増減させたいです


484 名前:名無しさん@お腹いっぱい。 :2000/12/12(火) 14:09
DLLの作成方法なんですが
ClassをexportしたDLLをinportする場合
気をつけなければいけないところとかありますか?
メモリーまわりの制約があったら教えてください

実際の問題は
DLL内のクラスに実体もたせてその関数をコールした時
戻り値(TRUE)がを返す時にエラーが出ます
(DLLにする前は正常に動いたClassとプログラムなんですが
ClassをDLLにしたらエラーが発生するようになりました)

DLLはクラスをexportしているだけで実体まで持たせていません


485 名前:名無しでGO! :2000/12/12(火) 15:19
>>483 newしてコピーしてdelete

486 名前:名無しさん@お腹いっぱい。 :2000/12/12(火) 15:24
実行時自分が作ったプログラムがどれぐらいのメモリをしめているのか、どの部分が処理に時間がかかっているのかを調べたいんですがいい方法はないでしょうか?

487 名前:>86 :2000/12/12(火) 16:13
profilerを使う。
でもlearning(standard?)にはついてないかも。

488 名前:名無しさん@お腹いっぱい。 :2000/12/12(火) 23:39
なんでこのソースがコンパイルできないんだろう???
#include<iostream>
#include<vector>
#include<string>

using std::vector;
using std::string;
using std::cout;
using std::cin;
using std::endl;

int main( int argc , char **argv )
{
vector<string> vs;
vs.push_back( "ギコネコ" );
vs.push_back( "モナー" );
vector<string>::iterator ite = vs.begin();

while( ite != vs.end() )
cout << *ite++ << endl;

cin.get();
return 0;
}


489 名前:名無しさん@お腹いっぱい。 :2000/12/12(火) 23:58
>>483
std::vectorを使う。

490 名前:名無しさん@お腹いっぱい。 :2000/12/13(水) 06:20
>>488
どこでどんなエラーが出るかくらい書けよな

491 名前:474 :2000/12/13(水) 09:14
>>482
やっぱ無理なんすかねぇ・・・?
そういう場合どうします?

492 名前:>491 :2000/12/13(水) 10:13
1、わける
2、いくつかの機能を統合した新しいコントロールを作る
3、EDITコントロールなんかは直接貼り付けず、必要な場所に移動して表示させる

493 名前:名無しさん@お腹いっぱい。 :2000/12/13(水) 10:39
継承(仮想関数)
仮想関数を使うとき親のクラスポインタに子のインスタンス当てますよね?
そのとき、ポインタ当ての行で
'type cast' : 'class KO *' から 'class OYA *' の変換は存在しますが、アクセスできません。
というエラーが出るのですが、原因がわかりません
仮想関数部分を消してただの親子クラスにして試しても同じエラーが出ます
親子の関数、変数を全部publicにしても駄目でした

どなたか、同じような経験のある方いないですか?


494 名前:名無しさん@お腹いっぱい。 :2000/12/13(水) 11:35
>>493
問題のコードを見せて。


495 名前:名無しさんi486 :2000/12/13(水) 12:07
>>493
OYAを継承するときpublicにしました?
class KO : public OYA{

496 名前:名無しさん@お腹いっぱい。 :2000/12/13(水) 13:04
VCでデバッグ中に変数の値が変わったら止める、
ということをしたいのですが、こんなことってできますか?

497 名前:名無しさん@お腹いっぱい。 :2000/12/13(水) 13:27
MYCLASS *A;
A=new MYCLASS[10];
delete A;
これで実行時にエラーなんですけど
こんなときどうやって開放してやれば良いのですか?
それとも、取り方が悪い?

498 名前:名無しさん@お腹いっぱい。 :2000/12/13(水) 13:52
>>497
× delete A;
○ delete [] A;

499 名前:名無しさんi486 :2000/12/13(水) 14:02
>>496
編集->ブレークポイント

500 名前:496 :2000/12/13(水) 14:18
>>499
ありがとうございます。


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