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


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

★初心者にVisual C++を教えるスレ★ Part13
1 名前:デフォルトの名無しさん :04/07/05 16:05
Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう。
・できるだけ具体的に。

  質問の仕方については次のページが大変参考になります。
  http://www.hyuki.com/writing/techask.html
  http://www.geocities.co.jp/Beautycare/4965/public/template.html

■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
 (MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。

満員電車で携帯なんか使うなよ

前スレ
★初心者にVisual C++を教えるスレ★ Part12
http://pc5.2ch.net/test/read.cgi/tech/1083585833/l50

2 名前:デフォルトの名無しさん :04/07/05 16:06
// 過去スレ
Part12 http://pc5.2ch.net/test/read.cgi/tech/1083585833/
Part11 http://pc5.2ch.net/test/read.cgi/tech/1077965179/
Part10 http://pc5.2ch.net/test/read.cgi/tech/1074933908/
Part09 http://pc5.2ch.net/test/read.cgi/tech/1068983609/
Part08 http://pc5.2ch.net/tech/kako/1063/10630/1063029371.html
Part07 http://pc5.2ch.net/tech/kako/1056/10562/1056280510.html
Part06 http://pc5.2ch.net/tech/kako/1052/10529/1052931903.html
Part05 http://pc5.2ch.net/tech/kako/1048/10486/1048698321.html
Part04 http://pc5.2ch.net/tech/kako/1044/10441/1044196393.html
Part03 http://pc5.2ch.net/tech/kako/1038/10381/1038160750.html
Part02 http://pc3.2ch.net/tech/kako/1030/10309/1030985362.html
Part01 http://pc3.2ch.net/tech/kako/1023/10235/1023530449.html
※「いや〜、ごめんなさい」により、紛失の可能性

// 関連
■MFC相談室 mfc11.dll■
http://pc5.2ch.net/test/read.cgi/tech/1088084875/l50
Win32API質問箱 Build20
http://pc5.2ch.net/test/read.cgi/tech/1088140233/l50
鬱だ氏のう DirectX (Part 13)
http://pc5.2ch.net/test/read.cgi/tech/1083313796/
C++相談室 part29
http://pc5.2ch.net/test/read.cgi/tech/1082047479/
C/C++の宿題をやらせて、お兄ちゃん 22代目
http://pc5.2ch.net/test/read.cgi/tech/1083050221/

3 名前:デフォルトの名無しさん :04/07/05 16:07
// 外部リンク
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
MSDN ライブラリ
http://www.microsoft.com/japan/msdn/library/
Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
Google
http://www.google.co.jp/

//このスレの前身 VisualC++相談室 過去スレ
part 1 http://piza.2ch.net/tech/kako/970/970607517.html
part 2 http://piza.2ch.net/tech/kako/981/981630730.html
part 3 http://piza2.2ch.net/tech/kako/993/993186053.html
part 4 http://pc.2ch.net/tech/kako/1002/10021/1002165477.html
part 5 http://pc.2ch.net/tech/kako/1006/10068/1006834463.html
part 6 http://pc.2ch.net/tech/kako/1011/10116/1011615035.html
part 7 http://pc.2ch.net/tech/kako/1017/10178/1017843192.html
part 8 http://pc.2ch.net/tech/kako/1022/10224/1022499000.html
part 9 http://pc5.2ch.net/tech/kako/1036/10368/1036897197.html


4 名前:デフォルトの名無しさん :04/07/05 16:08
立ててやろうかと思って用意してるうちに立っちゃったかよ

5 名前:デフォルトの名無しさん :04/07/05 16:16
乙〜

6 名前:デフォルトの名無しさん :04/07/05 16:27
>>1
乙ランダム

7 名前:デフォルトの名無しさん :04/07/05 16:36
>>1
乙.NET Framework

8 名前:デフォルトの名無しさん :04/07/05 17:01
>>2
関連スレ最新のヤツ

C++相談室 part32
http://pc5.2ch.net/test/read.cgi/tech/1088236078/l50
ようかんマンがC/C++の宿題を片付けて見せます 26棹
http://pc5.2ch.net/test/read.cgi/tech/1088860889/l50


9 名前:デフォルトの名無しさん :04/07/05 19:29
SE関係の会社に就職しようとおもってハローワークあさってたんですが
備考の欄に実務経験2年以上とか書かれてるんですが
これってどういうことなんですか?
どこかで2年以上仕事してるってことですか?
そのしごとはプログラムとは関係ない仕事でもいいんですか?

10 名前:デフォルトの名無しさん :04/07/05 19:31
板違い。マ板逝け

11 名前:デフォルトの名無しさん :04/07/05 20:34
>>6-7
フイタ

12 名前:デフォルトの名無しさん :04/07/05 20:37
994 名前:990[sage] 投稿日:04/07/05 14:57
どんなときに必要なんでしょうか?

13 名前:デフォルトの名無しさん :04/07/05 20:40
実務って言ってるんだから、実務だろ

14 名前:デフォルトの名無しさん :04/07/05 20:48
SE関係の仕事での実務って
やっぱプログラムにかかわるの仕事のことですか?

15 名前:デフォルトの名無しさん :04/07/05 21:00
>>14
んなもん適当にうそいっときゃいいんだよ。
おまえに実力があればの話だけど。

16 名前:デフォルトの名無しさん :04/07/05 21:29
>>14
それを聞かなければわからんということは、
オマエは確実に募集基準を満たしていないと思っていい。
だいたい何でこのスレで聞くのかもわからんし。

17 名前:デフォルトの名無しさん :04/07/05 21:57
だからマ板行けっつの

18 名前:デフォルトの名無しさん :04/07/06 06:08
簡単なプログラムのコードを書いたのですが、コンパイルの仕方がわかりません。どうすればいいのですか?

19 名前:デフォルトの名無しさん :04/07/06 06:29
前スレで外部クラスに関してあーだこーだと質問していた馬鹿者ですが外部のクラスのヘッダに処理を書く
(インラインであったりテンプレートクラスなのでヘッダに処理を書いておいたり)
場合coutやstringを使うためにはusing namespace std;を書いておかないと動かなかったのですがそれはよくないやり方だとご指摘をいただきました。
この場合using namespace std;をつかわないで使うにはstd::coutなどとすればいいのでしょうか。またstringに関してはどうなんでしょうか。



20 名前:sage :04/07/06 07:15
このスレでいいのかよくわかりませんが、質問です。
今までVBしかやったことなかったのですが、
会社からの要請で今VC++を勉強しています。
メッセージ+APIを使ったWindowsプログラミングの基礎は
だいたいわかったのですが、MFCがよくわかりません。
翔泳社の本を読んでいるのですが、
やたらめったらにクラス名や変数名が羅列してあって、
とても覚えられません。
MFCについての有効な学習方法や
わかりやすい本をご存知の方がいましたら
教えてください。
お願いします。

21 名前:デフォルトの名無しさん :04/07/06 07:22
>>20
翔泳社の誰の何て本?

22 名前:デフォルトの名無しさん :04/07/06 07:26
>>20
翔泳社のMFCってハーバートシルトの本?
アレはMFCを理解するには最良の本だと思うが、
初心者が初めて読むにはどうかなと思う

それに20のC++に対する言語理解はどの程度だろうか?
MFCはクラスライブラリだからC++の知識は必須

本だと
3週間完全マスターVC6とかはどうだろうか

23 名前:デフォルトの名無しさん :04/07/06 07:33
翔泳社もMFC関連の本結構出しているんだなぁ
私はハーバートシルトの標準講座MFC6..0 しか読んだことないが
でもあの本のおかげでMFCに対するアレルギーはなくなったな

24 名前:デフォルトの名無しさん :04/07/06 07:43
>>19
std::string

25 名前:デフォルトの名無しさん :04/07/06 07:45
>>20がどういうところで詰まっているのかわからんから何とも言えんけど、
MFCを使ってソフト作ってみる本だったら、どれもあまり大差ない気がするから、
慣れるしかないんじゃないかい?

MSDNライブラリを見れば良いから、全部暗記しなくても、
要領さえわかってくれば何とかなると思うよ。

ドキュメントテンプレートって何じゃこりゃ? とか、
このマクロって何? とかいう話で気持ち悪いんだったら
ソース読むのが早い。

26 名前:デフォルトの名無しさん :04/07/06 08:37
こんにちわ。
基本的なことで、つまらないかも知れませんが質問です。

いま、MFCでAfxBeginThread()を使って、
マルチスレッドを作っているんですが、
スレッド内でダイアログにあるListBoxの項目を追加しようとすると、
デバックが止まってしまうんです。
もしかしたら、スレッド内ではダイアログにあるリソースを
操作したりしてはいけないのでしょうか?
ひとしきり検索してもわからなかったです。
申し訳ないですが、教えてください。
よろしくお願いします。

27 名前:デフォルトの名無しさん :04/07/06 08:37
「作って分かる・・・」系の初心者向けの本でソースの作成手順を追う作業を
一通りやったら、MFC使ったプログラミングの基礎は理解できると思うけど。
そこから先は数をこなして、「コレをやりたいけどどうしたら良いかな?」という
シチュエーションに一つ一つぶつかっていく積み重ねだと思う。

MFCライブラリのリファレンス本(辞書タイプの)を一冊手元に置いて、ことある
毎に眺めるようにすれば、ページを繰るたびに色んなクラスやメンバの情報が
目にはいるし、使った部分には書き込みもできるからお薦め。これについては
オンライン・ドキュメントより学習効果が高いと思うよ。

28 名前:デフォルトの名無しさん :04/07/06 08:58
>>26
問題なくできますよ。
ただし、ワーカスレッドは元のスレッドとは別の世界。
喩えクラスのメンバ関数の振りをしていたとしても黙って元スレッドの資源が使えるわけじゃありません。
ワーカスレッドにポインタでも渡すようにしてそこからリストボックスを辿るようにしないといけません。

29 名前:デフォルトの名無しさん :04/07/06 09:00
>>26
別スレッド間でのメッセージ処理はかなり危険だよ
コントロールの関数は内部的にはSendMessageを呼んでいる
SendMessageは、メッセージが戻ってくるまで呼び出し側に制御が戻らない

例えばBスレッドに存在しているコントロールに対してAスレッドでCriticalSectionを使用して
SendMessageを呼び出し、そのメッセージを発生させたことで発生するそのほかのメッセージハンドらを
Bスレッドで受けたときに再びCriticalSectionを使用するとデッドロックが発生する

一昨日も同じようなことをしようとしている人がいたのでこの注意をしようと思って
すっかり忘れていた

30 名前:20の者です :04/07/06 09:16
すみません、20を書き込んだ者です。
自分の勉強の道筋としては、
ソフトバンクの「新C++言語入門ビギナー編」でC++を勉強し、
翔泳社の「プログラミング学習シリーズVisual C++」の1と2を読んで
APIやクラスについて勉強しました。
それで今その本の3(MFCについて書かれている)を読んでいるのですが、
やたらめったらにクラス名や変数名が列挙されていて覚えられないのです。
それでもっといい勉強法や本があったら教えてほしいと思いました。
よろしくお願いします。

31 名前:デフォルトの名無しさん :04/07/06 09:17
全て覚えられたら神。
覚えるのではない、感じるのだ。

32 名前:デフォルトの名無しさん :04/07/06 09:24
>>30
階層図とかは無視していいよ
しばらくやっていれば必要なものは嫌でも覚えるし

33 名前:デフォルトの名無しさん :04/07/06 09:26
>>30
そりゃ出てくるもの全部覚えられる人はいないだろう。よく使うようなCStringなんかの
メンバは一通り覚えることもあるだろうが、それも使っていくうちにそうなるもの。

とにかく一度使って自分のプログラムの中にソース例を残しておく。何をどう使ったか
は忘れても、「あのプログラムの中でああいう動作をさせた」ということを覚えておけば
次に似たようなことをするときに前やったソースを見れば良い。頻繁に使うなら覚える
だろう。そうでもないなら、毎回そのブロックをコピペで良い。そうやってコピペできる
ようなソースをためていくことだ。

34 名前:デフォルトの名無しさん :04/07/06 09:51
>>30
オレもその本で持ってるから、今ざっと見てみたけど、
難易度的には1巻から3巻まで変わらんように見える。

AppWizardで書かれたコードで混乱しているのかな?
いきなり全部の意味を理解するのは無理だから、
説明されているところだけ、ふ〜んって感じで読んで理解していけば
良いと思うよ。

んで、この本読んでもさらっとしか書いていないから、
意味不明なところは残ると思うけど、
それは必要になったとき調べていけば、そのうち使えるようになる。

35 名前:デフォルトの名無しさん :04/07/06 09:54
>>30
圧縮して記憶するといいよ

36 名前:デフォルトの名無しさん :04/07/06 10:24
いきなりの質問でスミマセン。
演算子のオーバーロード(なんでしょうか?)についてなんですが演算子の定義をヘッダもしくはそのクラスのcppファイルに定義する方法がわかりません。
これだけのでは意味がわからないのでコード置いておきます。 http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1074774948_24/kudasitu.txt
bool operator<(const Hito& a, const Hito& b){return a.GetName() < b.GetName();}をヘッダの中に書いてしまうと引数が多すぎますとエラーが出てしまい動きません。
このコードのbool operator<(const Hito& a, const Hito& b){return a.GetName() < b.GetName();}の部分を外部のヘッダなりcppになりに記述するにはどのように変更すればよいのでしょうか?

37 名前:26 :04/07/06 10:49
>>28さん
>>29さん

ありがとうございます。
今まで理由もわからず悩んでましたが、
これでなんとか光明が見出せそうです。
本当にありがとうございました。

38 名前:デフォルトの名無しさん :04/07/06 11:07
Visual C++ 6.0 で、コマンドライン引数を受け取って処理をするプログラムを作ったのですが
コマンドライン引数を入力するためにはどうしたらいいのでしょうか?

39 名前:38 :04/07/06 11:09
一瞬で自己解決しました
お騒がせしました

40 名前:デフォルトの名無しさん :04/07/06 11:25
>>36
(方法その1)
グローバルな関数として定義

class Hito {
// 中略
};
bool operator<(...) // ここ(クラス定義の後)に書く。


(方法その2)
Hitoクラスのメンバ関数として定義
class Hito {
// 中略
bool operator<(const Hito& rhs) { return GetName() < rhs.GetName(); }
};


41 名前:デフォルトの名無しさん :04/07/06 13:12
>>36
>このコードのbool operator<(const Hito& a, const Hito& b){return a.GetName() < b.GetName();}の部分を外部のヘッダなりcppになりに記述するにはどのように変更すればよいのでしょうか?
と書いているあたりから,40の答えは36に対する答えとしてはちょっとずれてるかも知れない.
まず,mainの直前のbool operator<(const Hito& a, const Hito& b){return a.GetName() < b.GetName();}を除いて,
1. 普通の実装方法
Hito.hのHitoクラスの定義あとにプロトタイプ
bool operator<(const Hito& a, const Hito& b);
を定義する.Hito.cppを新たに作り,
#include "Hito.h"
bool operator<(const Hito& a, const Hito& b){return a.GetName() < b.GetName();}
と実装する.
2. インライン関数として実装する場合
Hito.hの最後に
inline bool operator<(const Hito& a, const Hito& b){return a.GetName() < b.GetName();}
と実装する.この場合Hito.cppは作らない.


42 名前:41 :04/07/06 13:13
(41の続き)
これは40の(方法その1)の定義に対する実装方法ですが,(方法その2)の定義に対しても同じことが言えて,
1. 普通の実装方法
class Hito {
// 中略
bool operator<(const Hito& rhs);
};
を定義する.Hito.cppを新たに作り,
#include "Hito.h"
bool Hito::operator<(const Hito& rhs) { return GetName() < rhs.GetName(); }
と実装する.
2. インライン関数として実装する場合
class Hito {
// 中略
bool operator<(const Hito& rhs) { return GetName() < rhs.GetName(); }
};
とクラス定義内で実装するか,
class Hito {
// 中略
bool operator<(const Hito& rhs);
};
inline bool Hito::operator<(const Hito& rhs) { return GetName() < rhs.GetName(); }
とクラス定義外で実装する.


43 名前:教えてください :04/07/06 14:36
作成したプログラムをビルドして配布したいのですが
VBみたいな実行可能ファイルを作る方法がみあたらなくてどうすりゃ
いいのかわかりません。
installshield for VC++とかいうのもどこにもついてないみたいだし・・・・・・
プロジェクトのデバッグフォルダの中にあるexeファイルをそのまま配布
したら駄目ですよね???
使っているのはVC6.0PROです。

44 名前:デフォルトの名無しさん :04/07/06 14:39
>>43
exe配布でいいけど

45 名前:デフォルトの名無しさん :04/07/06 14:41
>>43
え?それで良いんじゃないの?

46 名前:教えてください :04/07/06 14:52
>>44,45

え??これでいいんですか?
ちなみに
デバッグフォルダの中にあるほかのファイルは一緒に渡さなくてもいいんですか??

47 名前:デフォルトの名無しさん :04/07/06 14:52
個人制作のソフトならむしろインストーラつけないでくれ。

48 名前:デフォルトの名無しさん :04/07/06 14:55
>>46
exeだけで動くのがCのいいところの一つだと思うのですが・・・

49 名前:デフォルトの名無しさん :04/07/06 15:01
>>46
配布するならReleaseバージョンでね

50 名前:デフォルトの名無しさん :04/07/06 15:04
>>46のプロジェクトはreleaseにするとアクセス違反で落ちるに3000ぬるぽ

51 名前:デフォルトの名無しさん :04/07/06 15:10
>>46
デバッグビルド版の配布はライセンス違反。
かならずリリースビルドした実行ファイルを配布すること。
その際に、Dependency Walker を使って依存している DLL をチェックして、
その DLL の配布の仕方を MSDN や他ライブラリのドキュメントを見て、
インストーラを作るなり同じフォルダに同梱して圧縮するなりして配布すればおk

52 名前:デフォルトの名無しさん :04/07/06 15:13
>>40-42
わかりやすい解説ありがとうございます。

53 名前:教えてください :04/07/06 15:52
>>51
リリースビルドしてみますた。
単なるwindows.hしかインクルードしてないプログラムでも
Dependency WalkerでDLLをチェックしたりしてみると
なんかDLLに依存してる、ってことはあるんでしょうか。
なんだかDependency Walkerで調べてみたんですがパスが不正ダヨンと
言われてとたんにめんどくさくなってしまいました。
多分アドレスの中にあるアカウント名が日本語でしかも文字化けしてる
せいだと思うんですが・・・

54 名前:デフォルトの名無しさん :04/07/06 15:55
日本語が入ってないパスにexe置け

55 名前:教えてください :04/07/06 16:07
弱りますた・・・・・・
なんだか大量のDLLがでてきました。
でてきたDLLはすべてリリースビルドしたexeに同梱するとか
決められた配布方法に従うとかして
全部同梱しなくてはならないんですかね??
これは別にどんなマシンにでもはいっとるから同梱しなくてもいいよチミ、
っていう奴はなんでしょうか。
めんどくさくなってきてしまいました

56 名前:デフォルトの名無しさん :04/07/06 16:15
>>55
とりあえず列挙してみそ

57 名前:デフォルトの名無しさん :04/07/06 16:20
>>55
キミは多分、とりあえず知人にexeだけ配ってみて足りないdllを
探した方が早いと思うぞ。kernel32.dllが何かとか知らんだろうし。

58 名前:教えてください :04/07/06 16:22
KERNEL32、USER32、GDI32をトップに以下遥かなる下層まで延々と枝分かれの枝が伸びて
大量のDLLが表示されていました

59 名前:デフォルトの名無しさん :04/07/06 16:37
お前の作ったプログラムなんか怖くて使えない。
プログラム作るのは勝手だが、人に迷惑かけないように

最低限のテスト環境ぐらい用意しとけ

60 名前:デフォルトの名無しさん :04/07/06 17:01
典型的なヴビ厨だな・・一生VBやってた方が幸せになれるぞ。

61 名前:教えてください :04/07/06 17:10
で、結局kernel32、user32、Gdi32はウィンドウズの一部だから
リリースビルドしたexeファイルに同梱する必要などないと思っていいでしょうか

62 名前:デフォルトの名無しさん :04/07/06 17:18
>>61
その理解でいい

63 名前:デフォルトの名無しさん :04/07/06 17:21
横レススマソ
Dependency Walkerの無いVS.NETはどうやって調べるの?

64 名前:デフォルトの名無しさん :04/07/06 17:30
付いているはずだが?
スタートメニューには出ないけど、ちゃんとインストール
されてるぞ。

65 名前:デフォルトの名無しさん :04/07/06 18:31
vc初心者です
メッセージボックスについてなのですが、
メッセージボックスの下の方に着くボタンの名称を"AUTO"/"MANUAL"/"CANCEL"と
言うようなボタン表示にしたいのですが、どのようにすればよろしいのでしょうか?

66 名前:デフォルトの名無しさん :04/07/06 18:54
出来ません。無理やり変えることはもちろん出来るけど、
メッセージボックス程度ならダイアログエディタで自作
する方が簡単です。

67 名前:デフォルトの名無しさん :04/07/06 18:55
>>65
SetWindowsHookExでCBTフックをインストールして
フックプロシージャの中で適当にメッセージ拾って
その中でSetWindowText汁。

68 名前:デフォルトの名無しさん :04/07/06 19:18
ありがとうございます
ダイアログを自作する方法が簡単に出来そうなので、それでいこうと思います

69 名前:デフォルトの名無しさん :04/07/06 19:21
コンパイルとビルドってどう違うんですか?

70 名前:デフォルトの名無しさん :04/07/06 19:23
猫でもわかるプログラミングとか売ってるのか
違うの買って来たよ
゜д゜)鬱死・・・

71 名前:デフォルトの名無しさん :04/07/06 19:48
>63
PEPROBEとか言うのもある

72 名前:デフォルトの名無しさん :04/07/06 19:53
>>69
コンパイルは、そのファイルだけ構文チェックされ中間ファイルになる。
ちょっとエラーになるかどうか知りたいだけなら、こっちのほうが速い。

ビルドは、コンパイル後にリンクして実行形式ファイルになる。
ビルド対象が複数あれば、それなりの時間がかかる。

73 名前:デフォルトの名無しさん :04/07/06 20:56
ボタンを、アプリケーションが起動してから、Createすると、

Detected memory leaks!
Dumping objects ->
{83} client block at 0x003F5720, subtype c0, 80 bytes long.
a CButton object at $003F5720, 80 bytes long
Object dump complete.

というコメントが、デバッグ時に出ます。
でも、ボタンは普通に表示されてるんですが、
こいつはいったい、何を意味してるのですか?

74 名前:デフォルトの名無しさん :04/07/06 21:08
Detected memory leaks!
訳せる?

75 名前:デフォルトの名無しさん :04/07/06 21:11
ごめんなさいボクがバカでした。
ちゃんと調べてきます。

76 名前:デフォルトの名無しさん :04/07/07 01:42
WindowsXP、VC6でプログラム書いてるんですが、リンクの張り方が分かりません。。。
例えば、
main.c
_______________________________________
#include <stdio.h>
#include "rink.h"
void main ()
{
print(a,b);
}
-------------------
rink.c
-------------------
#include <stdio.h>
#include "rink.h"
void print(a,b)
{
printf("a*b=%d\n",a,b);
}
-------------------
rink.h
-------------------
extern int a= 5;
extern int b= 10;
extern void print(int ,int);
--------------------
を実行すると
rink.obj : error LNK2005: _b はすでに main.obj で定義されています
rink.obj : error LNK2005: _a はすでに main.obj で定義されています
LIBCD.lib(wincrt0.obj) : error LNK2001: 外部シンボル "_WinMain@16" は未解決です
Debug/rinktest.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー  というエラーが出ます。どうやったらビルドできるようになるんでしょうか?

77 名前:デフォルトの名無しさん :04/07/07 02:31
#includeって何をしているか知ってる?
ただ単純にソースに指定したファイルを挿入しているだけなんだよ
つまり
main.c-------
#include<stdio.h>
extern int a= 5;
extern int b= 10;
extern void print(int ,int);
void main ()
{
print(a,b);
}
rink.c----------
#include <stdio.h>
extern int a= 5;
extern int b= 10;
extern void print(int ,int);
void print(a,b)
{
printf("a*b=%d\n",a,b);
}
と同じ
今回の問題点は、externと変数の代入を同時に行っているって言うこと
変数の代入を行っているということはそこで変数が実体化してしまう
ということは・・・・後は自分で考えてみてね

78 名前:76 :04/07/07 03:50
>>77
アドバイスありがとうございます!
つまり2重に代入してしまうからエラーが起こるということでしょうか?
rink.hでの代入をやめて、main.cで、
#include <stdio.h>
#include "rink.h"
void main ()
{a=5;
b=10;
print(a,b);
}   のようにしたら
main.obj : error LNK2001: 外部シンボル "_b" は未解決です
main.obj : error LNK2001: 外部シンボル "_a" は未解決です
LIBCD.lib(wincrt0.obj) : error LNK2001: 外部シンボル "_WinMain@16" は未解決です
Debug/rinktest.exe : fatal error LNK1120: 外部参照 3 が未解決です。
link.exe の実行エラー  となってしましました・・・
他にも色々やってみたんですがだめでした。
77さんの言わんとしている事と自分がやっている事は違うんでしょうか?
何度もすみません・・・。

79 名前:デフォルトの名無しさん :04/07/07 06:22
C言語:extern
http://homepage1.nifty.com/aok2/004/c01.html

80 名前:デフォルトの名無しさん :04/07/07 08:32
スレ違いにも親切なスレですね

81 名前:デフォルトの名無しさん :04/07/07 08:52
extern int a;
は、砕けた言い方をすると
変数aの実体はこのソース上には無いけれど(リンクするときには見つかるはずなので)
このソース内で使いますという宣言し、変数の実体を作らない。
一方
extern int a = 1;
では、上記の意味と違い、変数aが値1で初期化され実体化する。
77のソースを見てもらえば分かるとおり、main.c,rink.cで後者の宣言をしているため
a,bがそれぞれ2つ実体化してしまう

externの意味はわかってもらえただろうか?
78のソースでは逆にどこにも実体が存在していないことになる
ヒントというか回答だが
extern int a;
int a = 1;
extern int a;を#include"rink.h"に置き換えると・・・・

82 名前:デフォルトの名無しさん :04/07/07 11:44
rinkって....
スケートでもするかいな?


83 名前:20と30を書き込んだ者です :04/07/07 12:40
すみません、20と30を書き込んだ者です。
皆さんのご意見を見ると
翔泳社の「プログラミング学習シリーズVisual C++」の3は良い本のようなので
わからないところはあるにしろ、
最後までこの本を読んでみることにしました。

それで改めて皆さんに質問です。
この本は初心者向けだと思うのですが、
この本を読んだ後に読むような中級者・上級者向けの本で
お勧めの本はありますか?
何かありましたら教えてください。
よろしくお願いします。

84 名前:デフォルトの名無しさん :04/07/07 12:43
>>83 の参考にはならないかもしれないけど、
シルトの 標準MFC 6.0 を読んだ後は MSDN だけ見てれば困らないんじゃないかな。

85 名前:76 :04/07/07 16:40
ありがとうございます。ビルドが通りました。
もうちょっと勉強します・・・


86 名前:デフォルトの名無しさん :04/07/07 17:21
インポートできないビットマップってあるんですか?
インポートしようとしてもできるビットマップとできなビットマップがあるんですが。
インポート→ファイルを開く 
ってやってもすぐ消えてしまうんですが。

87 名前:デフォルトの名無しさん :04/07/07 18:55
ちょこっと前に出たビルドしたexeファイルについてなんですがvc++から実行すると「press any key continue」となって何かキーを入れれば終了するのですが、エクスプローラ上から実行すると勝手に閉じてしまいます。
これが普通なのか違うのかわからないのですがどうなんでしょうか?

88 名前:デフォルトの名無しさん :04/07/07 19:36
>>87
プログラムの実行が終わったらプロセスが消滅するが正常。
IDEから実行したときにすぐ閉じないのは、
別のプログラムからそのプログラムを起動してるから。

89 名前:デフォルトの名無しさん :04/07/07 21:08
age




90 名前:デフォルトの名無しさん :04/07/07 23:18
>>87
コマンドプロンプトから実行したら実行後
c:\>
に戻るだろ

91 名前:デフォルトの名無しさん :04/07/08 00:20
今、VNCのようなものを作っていて接続先のカーソルを動かせてはいるのですが、クリックした時
接続先のデスクトップのアイコンをクリックさせる処理がわかりません。
どなたか教えて下さい。お願い致します。

92 名前:デフォルトの名無しさん :04/07/08 02:20
>>90
閉じてしまいます。
外部のHDDから実行しているんですがそれが問題ですかね

93 名前:デフォルトの名無しさん :04/07/08 02:23
>>92
>>88

94 名前:デフォルトの名無しさん :04/07/08 08:36
コンソール使えない人間がコンソールプログラムを作ってるのが大きな間違い。
すこしはコンソールの使い方ぐらい勉強しろ。

95 名前:デフォルトの名無しさん :04/07/08 13:21
よろしくお願いします。

void openLogFile(const string& path)
{
ofstream logfile;
logFile.open(path.c_str(), (ios::out | ios::app), filebuf::sh_read);
}

このようにファイルをオープンしたかったのですが、「error C2039: 'sh_read' : 'basic_filebuf<char,struct
std::char_traits<char> >' のメンバではありません。」といわれしまったので、とりあえずintならいいだろうと

logFile.open(path.c_str(), (ios::out | ios::app), 0);

こうしてみると、「error C2661: 'open' : 3 個の引数を持つオーバーロードされた関数はありません。」となりました。
そこで、

logFile.open(path.c_str(), (ios::out | ios::app));

こうすると正常にコンパイルできました。
なぜ第三引数をみてくれないのでしょう。
ofstreamのコンストラクタにわたしても、同様に「3 個の引数を持つ…」になります。
ヒントをご存じの方、いらしゃいませんか?

環境:
Win2kSP4
Visual Studio 6.0 SPなしとSP6で確認

96 名前:デフォルトの名無しさん :04/07/08 15:19
描画について質問させてもらってもいいでしょうか
WM_PAINTメッセージ処理部分でペンを作って描画しているのですが
描画するたびにいちいちペンを作ったりしてるのがすごい気になってます

WM_CREATEメッセージで全てペンを作ってしまって
そのペンを使いまわしてやったほうが処理が早くなるのでしょうか

97 名前:デフォルトの名無しさん :04/07/08 15:22
>>96
やってみれば?

98 名前:95 :04/07/08 15:44
自己解決しました。
実装が変わったのが原因のようです。

99 名前:デフォルトの名無しさん :04/07/08 15:47
>>96
普通はその都度
作成する。


100 名前:デフォルトの名無しさん :04/07/08 15:52
>>98
なんで実装が変わったのか分かるなら,解説をよろしく.

当方の環境はg++(3.3.4)で,ヘッダファイルをsh_readで検索かけたけど,やはり見当たらなかった.
Visual C++スレなのでレス遠慮してたんだけど.


101 名前:デフォルトの名無しさん :04/07/08 16:28
>>96
それぞれ10000回まわしてみました

毎回作る・・・1953ms
WM_CREATEで作ったやつに持ち替える・・・1328ms

102 名前:デフォルトの名無しさん :04/07/08 16:36
>>96
普通はあらかじめ作成しとく

103 名前:96 :04/07/08 16:48
皆様方、相反するレスありがとうございます

>>101
わざわざ試していただいてありがとうございます
やはり予想通り多少速度差が出てくるみたいですね
あらかじめ作成方式で組んで行くべきなのかなあ

104 名前:デフォルトの名無しさん :04/07/08 16:52
>>103
速い=正解 ではない。


105 名前:96 :04/07/08 17:12
>>103
速度は多少速くなりますけど、常時占めるメモリの量がペンの分増えますよね
その辺のバランスを考えてベストな方法を選べということですかね

106 名前:sage :04/07/08 21:15
fopenが失敗するので困っています。
ヘルプを見るとfopenが失敗するのは
ファイルが存在しない時とかいてありますが、
同じ個所のfopenが成功したり、失敗したりするのです。
パラメータを変更したりしてみましたが、同じです。
fopenが失敗する原因には、どんなものが考えられるでしょうか?

107 名前:デフォルトの名無しさん :04/07/08 21:30
>>106
>失敗する原因
お前の使い方。
又はお前の説明能力。


108 名前:デフォルトの名無しさん :04/07/08 21:48
>>106
共有違反とかか?

Cじゃないとダメなの?win32APIとかMFCとかのファイル処理ならエラー内容を
取得しやすいし分かりやすいと思うけど

109 名前:デフォルトの名無しさん :04/07/08 21:50
名前欄にsageって書いてる時点で(ry

110 名前:デフォルトの名無しさん :04/07/08 21:58
(2n-1)!
を計算するプログラムを作ってみたのですが
n=2で計算すると計算結果が9になってしまいます。。
どなたか間違いを指摘していただけるとありがたいです。

for(int m=1;m<=n;m++)
   a=a*(2*m-1);

111 名前:デフォルトの名無しさん :04/07/08 22:10
aの最初の中身は?

112 名前:デフォルトの名無しさん :04/07/08 22:10
a=1です

113 名前:デフォルトの名無しさん :04/07/08 22:15
ちなみに
n=3で計算すると3375になります。
なぜなんでしょう・・・

114 名前:デフォルトの名無しさん :04/07/08 22:19
>>113
for節の中で,
a,m,nの中身を表示させるようにして実行すると何と表示します?
例えば,n=2やn=3で.


115 名前:デフォルトの名無しさん :04/07/08 22:19
>>113
プログラム全部見せて。

ついでに(2n-1)!だったら
for (int m = 1; m <= (2 * n - 1); m++) a = a * m;
じゃない?

116 名前:デフォルトの名無しさん :04/07/08 22:21
>>110が計算してるのは(2n-1)!じゃなくて

2n-1
 Π m
m = 1

117 名前:116 :04/07/08 22:22
ちがう

  n
 Π (2m-1)
m = 1

だった。

118 名前:110 :04/07/08 22:27
#include<iostream.h>
#include<conio.h>
#include<math.h>

const double Pi=3.14159263;

main()
{
cout << "整数nを入力してください。\n";
int n; cin >> n;

double a=1,b=0,c=0;

for(int i=1;i<=n;i++){
for(int m=1;m<=n;m++){
a=a*(2*m-1); }
b=pow((-1),(i-1));
c=c+(1/a)*b*pow((Pi/2),(2*i-1)); }
cout << "答えは" << c << "です。\n";

getch(); return(0); }

for節の中で表示させると
n=2の時
1 3 3 9

n=3のとき
1 3 15 15 45 225 225 675 3375

になります。。
アドバイスを見てもうちょい考えてみます。。


119 名前:110 :04/07/08 22:31
for節の中でmを表示させてみたのですが
何故か3回目の処理でm=1に戻ってしまっています。
n=2の時
m=1,a=1
m=2,a=3
m=1,a=3
m=2,a=9
と処理されてしまっています・・・。

120 名前:デフォルトの名無しさん :04/07/08 22:33
なんとアドバイスしたらよいのやら....


121 名前:110 :04/07/08 22:34
なんとなく原因が分かりました・・・。
for文が2重になってたのが原因ですね。。
なんとか直してみます。

122 名前:デフォルトの名無しさん :04/07/08 22:41
>>121
ひとつ確認したいんだが
n=2のときは (2*2 - 1)! = 3! = 6
n=3のときは (2*3 - 1)! = 5! = 120
を求めるんだよね?

123 名前:110 :04/07/08 22:42
>>122
そうです。
今自分でも気づきました・・・。
上記の式だと1*3*5*7・・・をやってしまってますね・・・。
意味不明ですみませんでした。。

124 名前:デフォルトの名無しさん :04/07/08 22:45
なぜ階乗の計算でπだのpow()だのがでてくるのかと(ry

125 名前:110 :04/07/08 22:55
>>124
上記の式は
S=π/2 - 1/3! * (π/2)^3 + 1/5! * (π/2)^5 - ・・・・ + 1/(2n-1)! * (-1)^(n-1) * (π/2)^(2n-1)
に任意のnを計算する式だったので。。
もっとも、(2n-1)!でかなり謎い事をしていましたが・・・


126 名前:デフォルトの名無しさん :04/07/08 23:29
Google 検索: 謎い事
http://www.google.com/search?hl=ja&lr=lang_ja&ie=sjis&q=%93%E4%82%A2%8E%96

127 名前:デフォルトの名無しさん :04/07/09 00:26
>>118
どうでもいいが、 Pi=3.14159265 だ。

128 名前:デフォルトの名無しさん :04/07/09 00:29
最近の教科書ではπ=3なんだっけ?

129 名前:デフォルトの名無しさん :04/07/09 00:33
>>128
違うよ

130 名前:デフォルトの名無しさん :04/07/09 00:34
およそ3・・・とかだったっけ?

131 名前:デフォルトの名無しさん :04/07/09 04:11
およよ

132 名前:デフォルトの名無しさん :04/07/09 05:44
とてもVisual C++とは思えない
アメリカ映画で日本、中国、韓国がごちゃまぜで出てきたような複雑な気持ち

133 名前:デフォルトの名無しさん :04/07/09 11:47
Visual C++ 6.0SP6 + STLport です。
昔開発していたプログラムをコンパイルしたところ
下記ページのエラーが発生してしまいました。
以前にこのエラーが出た記憶がないので、
何か回避法があったと思うのですが、
思い出せません。
回避法を教えてください。

ttp://www005.upp.so-net.ne.jp/episteme/html/stlprog/_08.html#prob_std

134 名前:デフォルトの名無しさん :04/07/09 12:26
VC++7.1にする。

135 名前:デフォルトの名無しさん :04/07/09 12:51
>>134
しかし、エラーが出たコードは一年も前にコンパイルが通っていたものです。
開発PCを移してコンパイルしたら通らなくなったんです。


136 名前:デフォルトの名無しさん :04/07/09 13:01
エラーメッセージみてないから何とも

137 名前:デフォルトの名無しさん :04/07/09 13:19
MFCとDirectShowを使って、aviを再生しようとしています。
メインウィンドウではなく、新たにウィンドウを作れば、表示されるのですが、
メインウィンドウに表示しようとすると、うまくいきません。
どうしたらよいでしょうか、よろしくお願いします。

138 名前:デフォルトの名無しさん :04/07/09 13:24
>>136
エラーメッセージはこんな感じです。

wstring wstr;
string str;
mbstowcs( wstr.begin(), str, wstr.length());



error C2664: 'mbstowcs' : 1 番目の引数を 'struct _STL::_DBG_iter<class _STL::_Nondebug_string<unsigned short,class _STL::char_traits<unsigned short>,class _STL::allocator<uns
igned short> >,struct _STL::_Nonconst_traits<unsigned short> >' から 'unsigned short *' に変換できません。 (新しい機能 ; ヘルプを参照)
この変換を実行可能なユーザー定義変換演算子がないか、または演算子を呼び出せません。

vector< BYTE > buffer;
vector< BYTE >::iterator i = buffer.begin();
*(LPDWORD)i = DWORDの定数;i += sizeof(DWORD);



error C2440: 'type cast' : 'struct _STL::_DBG_iter<class _STL::__vector<unsigned char,class _STL::allocator<unsigned char> >,struct _STL::_Vector_nonconst_traits<unsigned ch
ar,unsigned char *> >' から 'unsigned long *' に変換することはできません。(新しい動作 ; ヘルプを参照)
この変換を実行可能なユーザー定義変換演算子がないか、または演算子を呼び出せません。



139 名前:133 :04/07/09 14:08
#define NDEBUG

を追加したら直りました。
でも理由がわかりません。
どうしてでしょうか?

140 名前:デフォルトの名無しさん :04/07/09 14:26
>>139
1年前とやらは NDEBUG をつけてたのかい? (ソースに限らず)

141 名前:デフォルトの名無しさん :04/07/09 14:44
>>140
自作ヘッダにこんな一文がありました〜。
このせいだったみたいです。

#ifdef NDEBUG
#undef _STLP_DEBUG
#else
#pragma warning(disable:4786)
#define _STLP_DEBUG 1
#endif

設定ではデバッグビルド時ではNDEBUGは定義されず
リリースビルド時では定義される形になっていまして
「_STLP_DEBUG 1」が定義されると上記エラーが出るようです。
これをOFFにします。
お騒がせしました、ありがとうございました。



142 名前:632 :04/07/09 15:07
.NET2003を使っています。演算子のオーバーロードについて質問します。
ビルド時に
LNK2019: 未解決の外部シンボル "class Vector __cdecl
operator-(class Vector,class Vector)" (??G@YA?AVVector@@V0@0@Z)
が関数 "int __cdecl CheckForCollision(struct _RigidBody *,struct _RigidBody *)"
(?CheckForCollision@@YAHPAU_RigidBody@@0@Z) で参照されました。
こういうエラーが出ます。オーバーロードはRigidBody構造体で定義
しています。

143 名前:142 :04/07/09 15:10
訂正 × RigidBody構造体
   ○ Vectorクラス 

144 名前:106 :04/07/09 15:19
昨日は名前にsageと書いてすみませんでした。
慌てていたもので。
何とか自己解決しました。
理由は、カレントディレクトリが
他の処理を実行中に移動してしまう場合があるということでした。
お騒がせしてすみませんでした。


145 名前:デフォルトの名無しさん :04/07/09 15:19
>>142
リンクエラーのようですが,
Vectorクラスの定義を上げてもらえると話が進めやすいです.
でかければ,問題の演算子の部分だけでも.


146 名前:145 :04/07/09 15:22
>>142
あと問題の演算子がどのファイルで実装されているのか.


147 名前:106 :04/07/09 15:24
それで新たに質問です。
僕はC++も初心者なので、まだわからないことがあります。
staticとexternについてなのですが、

<A.cpp>
static char MOZI[999];
char KOTOBA[999];

<B.cpp>
extern char KOTOBA[999];

という二つのソースファイルがあるときに、
Bのファイルが実行中のときは、
static変数MOZIの値を参照できるのでしょうか?
またextern宣言したKOTOBAの値を参照できるのでしょうか?

すみませんが、教えてください。

148 名前:デフォルトの名無しさん :04/07/09 15:28
>>147
まず自分でやってみる.
基本です.

それで何故そうなるのか分からなければ,
ググるなりここで聞くなりするとよいでしょう.
説教臭くて申し訳ないですが「C++も初心者」と書かれてるので説教してみます.


149 名前:148 :04/07/09 15:32
>>147
気悪くされないで下さいね.
ようするにやってみれば,分かると思いますよ.


150 名前:!148 :04/07/09 15:38
便乗。
「初心者です」という言葉が与える印象について見てみるといいでしょう。

ttp://wids.net/lib/forlusers.html
ttp://www.geocities.co.jp/SiliconValley/5634/t82B5_0021.html#76
ttp://www.geocities.co.jp/SiliconValley/5634/t82B5_0021.html#1683

151 名前:142 :04/07/09 15:45
>>145 Vectorクラスではinline Vector operator+(Vector u, Vector v);
 このように定義しています。*,/,-も同様。宣言は
 inline Vector& Vector::operator+=(Vector u)
{
x += u.x;
y += u.y;
return *this;
}です。実装しているのはWinMain関数の内部です。


152 名前:148 :04/07/09 15:48
実は147は身の回りにコンピュータがない環境で
ひたすら文献を頼りにC++を学んでいるとすれば,
理解できなくもないですけど.


153 名前:デフォルトの名無しさん :04/07/09 15:52
>>151
宣言と定義という言葉の使い方が逆

154 名前:デフォルトの名無しさん :04/07/09 15:54
>>151
あなたの言う「実装」とは?
+,*,-,/は定義してる?

155 名前:145 :04/07/09 15:56
「宣言」,「定義」,「実装」の言葉使いが...(汗)

class Vector {
inline Vector operator+(Vector u, Vector v);
};

inline Vector& Vector::operator+=(Vector u)
{
(略)
}
は別物です.


156 名前:145 :04/07/09 16:14
142のエラーメッセージを読むに,
int __cdecl CheckForCollision(struct _RigidBody *,struct _RigidBody *)
でVectorクラスのオブジェクトの引き算をやってることと思います.
コンパイルは通ってるようなので,operator-の宣言はあるのだと思います.
話をこの引き算オペレータに限定しましょう.
1. この引き算オペレータの宣言(プロトタイプ宣言)はどこでされてますか?
2. この引き算オペレータの定義(動作内容を記述した部分,実装)はどこでされてますか?


157 名前:デフォルトの名無しさん :04/07/09 16:59
すいません
VisalCのスレはどこですか?

158 名前:デフォルトの名無しさん :04/07/09 17:03
>>157
あなたが立ててください。


159 名前:デフォルトの名無しさん :04/07/09 17:05
>>138
begin()やend()等が返すのはiteratorであって、T*ではない。
っつーの、FAQじゃなかった?
data()やc_str(),&[0]を使うのが定石。

160 名前:デフォルトの名無しさん :04/07/09 17:38
すいません
Visual C++のスレはどこですか?

161 名前:デフォルトの名無しさん :04/07/09 17:41
private voidって何ですか

162 名前:デフォルトの名無しさん :04/07/09 17:42
>>161
出典は?


163 名前:デフォルトの名無しさん :04/07/09 17:46
>>161
俺専用のvoidタン

164 名前:147 :04/07/09 17:47
どうもすみません、いきなり聞いてしまって。
自分でも確認してみました。
staticはだめだけど、
externはOKでした。
それで正しいですよね。
何か追加コメントがある方はお願いします。

165 名前:147 :04/07/09 17:54
それで今度の質問は調べてもわからないので教えてください。
プロパティシート(ダイアログボックスを複数くっつけたもの)を
作っています。
まずダイアログボックスを作りました。
次にCPropertySheetクラスでシートを宣言し、
CPropertyPageクラスをダイアログの数(2つ)だけ宣言しました。
それで次にDDXを作ろうとしたら、
ラジオボタンのコントロールIDがClassWizardのメンバ変数の
追加画面に表示されません。
エディットボックスなどは正常に表示されるのですが。
これは仕様なのでしょうか?
それとも僕のやり方がいけないのでしょうか?

166 名前:デフォルトの名無しさん :04/07/09 23:04
(1)グループ属性つける (2)メンバ変数追加 (3)グループ属性はずす

167 名前:デフォルトの名無しさん :04/07/10 13:17
普段はbcpadとbolandのc++で満足しているのですが、学校でvisual studioを配布され入れてみました。
すると、やたらとソフトを起動するとメモリーがreadになれませんでした。とかいうエラーが頻繁に発生するようになりました。
デバックを選択すると、Visual cが起動するのですが、これは何か監視しているツールがインストールされたのでしょうか?
サービスパックを入れても関係ないみたいです。

VisualBasicなら何も起こらないのですが。

168 名前:デフォルトの名無しさん :04/07/10 13:21
>>167
> すると、やたらとソフトを起動するとメモリーがreadになれませんでした。とかいうエラーが頻繁に発生

それはそのプログラムにおかしなコードが入ってるってこと

> デバックを選択すると、Visual cが起動するのですが、

システムがバグったプログラムを食ったときバグを検証するためにツールを使うか
ご親切にも尋ねてくれているだけ

169 名前:デフォルトの名無しさん :04/07/10 15:53
>>168
格安のビデオキャプチャーソフトのWinFASTとかいうやつの、録画ソフトを起動すると
エラーができます。出ないときもあります。
VisualC++を入れないと、エラーは出ません。

録画ソフトがおかしいとしても、直せないので、このエラー回避は出来ませんか?


170 名前:デフォルトの名無しさん :04/07/10 18:19
>>169
大丈夫、WinXPならVisualStudioを入れなくてもエラーがでるから。

171 名前:デフォルトの名無しさん :04/07/10 19:52
>>169
つーか
プログラムやってるくらいの人なら常識で考えたら分かるだろうけど
他の一般プログラムでエラー出てもVCとは関係ないだろ

172 名前:デフォルトの名無しさん :04/07/10 20:25
>>171
そうでもないだろ。
VC++とかのマイケルソフト製ソフトはインスロールするだけで
システムをこれでもかってくらい弄りまわす。


173 名前:デフォルトの名無しさん :04/07/10 20:36
・・・・・。

174 名前:デフォルトの名無しさん :04/07/10 20:38
(a*10+b)-(b*10+b) = 45 となるようなaとbをもとめるプログラムをforを
つかって書いてください。ちなみに0<=a<10,0<=b<10

175 名前:デフォルトの名無しさん :04/07/10 20:43
a,bは10以下の整数です

176 名前:デフォルトの名無しさん :04/07/10 20:46
>>174
http://pc5.2ch.net/test/read.cgi/tech/1089136366/l50


177 名前:デフォルトの名無しさん :04/07/10 22:11
>>174
(a*10+b)-(b*10+b) =(10a+b) - (10b+b) = 10(a-b) = 45
a,b∈Zよりa-b∈Z.
しかし10(a-b) = 45からa-b = 45/10 = 9/2だが、これは明らかにZに含まれない。
よってそのようなa,bは存在しない。

178 名前:デフォルトの名無しさん :04/07/11 01:26
#include "stdafx.h"

int main()
{
for(int a=0;a<10;a++){
for(int b=0;b<10;b++){
if((a*10+b)-(b*10+b)==45){
printf("a=%d, b=%d\n",a,b);
return 0;
}
}
}

return 0;
}


179 名前:デフォルトの名無しさん :04/07/11 04:53
非MFCなアプリケーションにMFCなスタティックライブラリはリンクできないのでしょうか?
リンクでズラーっとエラーが出てしまいます。。。(´・ω・`)

180 名前:名無しさん@そうだ選挙に行こう :04/07/11 12:54
>>179
どんなエラーか示せ

181 名前:名無しさん@そうだ選挙に行こう :04/07/11 13:38
一度目の左クリックで現在のデスクトップ上の画面をグローバル変数に保存しておき
次の左クリックでウィンドウにその画面を表示したいのですがどのようにしたらよろしいのでしょうか?
CreateCompatibleDC、CreateCompatibleBitmap、BitBltを使いそうな気がするのですが、うまくいきません。
宜しくお願いします

182 名前:名無しさん@そうだ選挙に行こう :04/07/11 14:59
VC6で勉強中の者です。
初歩的な質問なのですが、Classの所で右クリックしても
「メンバ変数の追加」とかはあるのですが、「インプリメント」が
出てこないのはなぜでしょう???

183 名前:名無しさん@そうだ選挙に行こう :04/07/11 16:02
「インターフェイスのインプリメント」をすると
メソッドがずら〜っと追加されて嬉しいのですけど、
元の機能のままにしたい時はどうすればよいのでしょう?

STDMETHOD(get_isAvailable)(BSTR bstrItem, VARIANT_BOOL * pIsAvailable)
{
if (pIsAvailable == NULL) return E_POINTER;
return E_NOTIMPL;
}

例えば、こんなのが追加されたけど、
元のget_isAvailableの処理してから返したいときとか。。。

ん〜わからん、、、偉い人教えて!

184 名前:名無しさん@そうだ選挙に行こう :04/07/11 17:08
>>182
VC6だから。

185 名前:名無しさん@そうだ選挙に行こう :04/07/11 17:11
>>183
元の関数を呼べばいいじゃん。

186 名前:名無しさん@そうだ選挙に行こう :04/07/11 19:10
>>181
ディスプレイのDCでもGetすればいいと思う

187 名前:デフォルトの名無しさん :04/07/11 20:51
>>186
現在のディスプレイの状態をウィンドウに表示はできるのですが、
どうやって一時保存をするのかわからないのです

188 名前:デフォルトの名無しさん :04/07/11 21:24
>>187
おまいが書いたコード晒せ。
話はそれからだ。

189 名前:デフォルトの名無しさん :04/07/11 21:48
>>188

hSrcDC = GetDC(NULL);   //ディスプレイのデバイスコンテキストハンドル
hDestDC = GetDC(hWnd);   //ウィンドウのデバイスコンテキストハンドル

BitBlt(hDestDC,    //コピー先のデバイス
    0, 0, 1024, 768,  //コピー先のx,y座標
    hSrcDC,     //コピー元のデバイス
    0, 0,       //コピー元のx,y座標
    SRCCOPY);

ReleaseDC(hWnd, hDestDC);
ReleaseDC(hWnd, hSrcDC);

です


190 名前:デフォルトの名無しさん :04/07/11 23:48
>>189
メモリデバイスコンテキストにでも
一旦転送するとか?

191 名前:165 :04/07/12 09:55
>>166
やり方を教えてくれてありがとうございました。
出来ました。

ところで、何でグループ属性を付加すると出来るのですか?
グループ属性のヘルプを呼んでもわからなかったもので。
理由も知っておきたいのですが。

192 名前:デフォルトの名無しさん :04/07/12 10:22
MFCが荒れてるのでこちらに再掲します

仮想リストコントロール内でのアイテム選択変更に
SetItemState(nIndex, LVIS_SELECTED, LVIS_SELECTED | LVIS_FOCUSED);
とやっても選択が変わってくれないんですけど、これは使えませんか?
仮想LCだと選択についてもやり方が別になってますか?

193 名前:デフォルトの名無しさん :04/07/12 10:23
>>192
> MFCが荒れてるのでこちらに再掲します

MFCスレが・・・
の間違い(ゴメン)

194 名前:デフォルトの名無しさん :04/07/12 11:40
VC++6.0を使用しているのですが、任意のヘッダファイルを
すべてのソースファイルからインクルードさせる設定はないのでしょうか?
VC++.netから追加された機能なのでしょうか?

195 名前:デフォルトの名無しさん :04/07/12 12:09
>>194
StdAfx.hに書いておくのはどう?
どうせMFC使ってたらインクルードしているはずだし。

196 名前:デフォルトの名無しさん :04/07/12 12:28
>>194
自己レスです。
プロジェクトオプションに直接
/FI"nullpo.h"
とか記述することで解決しました。

>>195
レスどもです。実はMFCを使ってない、
というかCオンリーのプログラムなもので・・・。

197 名前:デフォルトの名無しさん :04/07/12 12:31
if(MFC != C) printf("マジっすか!?");

198 名前:デフォルトの名無しさん :04/07/12 12:35
>>197
C++だねぇ。

199 名前:デフォルトの名無しさん :04/07/12 12:38
>>197=>>198

200 名前:197 :04/07/12 12:39
むしゃくしゃしてやった
揚げ足とれれば何でもよかった
今は反省している

201 名前:デフォルトの名無しさん :04/07/12 13:06
非MFCなアプリケーションにMFCなスタティックライブラリはリンクできないのでしょうか?
色々やってリンクでズラーっとエラーが出なくはなったのですが
実行時にAfxGetInstanceHandle()でASSERTしてしまいます(´・ω・`)
afxCurrentInstanceHandleがNULLなんですが、だめなのかなぁ。



202 名前:デフォルトの名無しさん :04/07/12 17:17
VC6を使ってます
同名ファイルの.hと.cppを切り替えるマクロを
以前2chで頂いたのですが、うっかりOS再インストール時に無くしてしまいました。

似たようなのを使っている方いらっしゃいましたら、
ちょいとマクロソースを貼って頂けないでしょうか

203 名前:デフォルトの名無しさん :04/07/12 18:00
 giko.txt
名前   頭文字   地域(大)   地域(中)   地域(小)
西村   に   九州
北村   き   北関東
鈴木   す   関東   東京   多摩地区
中西   な   関西
田中   た   北海道
北島   き   東北
永田   な   中国
板垣   い   四国
中田   な   関東
高遠   た   その他
(ここまでが第1グループ)
高木   た   関東   東京   23区
西村   に   関東   東京   23区
ワインバーグ   わ   外国
安藤   あ   その他
石田   い   関東
山本   や   中国
ファインマン   ふ   外国
(ここまでが第2グループ)
有坂   あ   関西   京都
車   く   関西
石井   い   関東
阿藤   あ   九州
伊藤   い   東北
安達   あ   関東   東京   23区
金本   か   関西   大阪
井上   い   東北
キム   き   外国
西村   に   関東   東京   多摩地区
(ここまでが第3グループ)

204 名前:デフォルトの名無しさん :04/07/12 18:10
>>203
どっかで見たことあるな。
なんだ?

205 名前:デフォルトの名無しさん :04/07/12 18:13
>>202
「切り替える」ってのがよく分かんないです。


206 名前:デフォルトの名無しさん :04/07/12 18:18
>>202
Sub toggleCppAndH ()
'DESCRIPTION: ソースファイルとヘッダファイルを入れ替えます
on error resume next
Dim doc
set doc = ActiveDocument

' Be sure active document is a text document
if doc Is Nothing Then
Exit Sub
elseif doc.Type <> "Text" Then
Exit Sub
End If

lookFor = doc.Selection
fileName = doc.FullName
dotPos = InstrRev(fileName , ".", -1, vbTextCompare)

fileType = Right(fileName, Len(fileName) - dotPos)
fileName = Left(fileName, dotPos)


207 名前:デフォルトの名無しさん :04/07/12 18:19
if UCase(fileType) = UCase("cpp") then
fileName = fileName + "h"
elseif UCase(fileType) = UCase("h") then
fileName = fileName + "cpp"
else
MsgBox("Unsupported file format: " + fileType)
Exit Sub
End If

fileName = LCase(fileName) 'first try lower case
Documents.Open fileName
if Err.Number <> 0 then
Err.Clear
fileName = UCase(fileName) 'try upper case
Documents.Open fileName
if Err.Number <> 0 then
MsgBox Err.Description, 0 , "Error"
exit sub
End If
End If



208 名前:デフォルトの名無しさん :04/07/12 18:21
if Len(lookFor) > 0 then
curLine = ActiveDocument.Selection.CurrentLine
curCol = ActiveDocument.Selection.CurrentColumn
lookForDef = "::" + lookFor
ActiveDocument.Selection.FindText lookForDef, dsMatchCase
if ActiveDocument.Selection = lookForDef then
curLine = ActiveDocument.Selection.CurrentLine
curCol = ActiveDocument.Selection.CurrentColumn - Len(ActiveDocument.Selection)
End if
ActiveDocument.Selection.Cancel
ActiveDocument.Selection.MoveTo curLine, curCol
ActiveDocument.Selection.FindText lookFor, dsMatchCase
End if
End Sub



209 名前:デフォルトの名無しさん :04/07/12 18:22
>>202
206-208を結合。

210 名前:202 :04/07/12 18:27
>>205
言葉足らず失礼。
ええと例えば「ctrl+;」にこのマクロを割り当てておいたとします。

hoge.cpp編集中に、同名のhoge.hに記述された型宣言を確認したくなったら「ctrl+;」一発!
hoge.cpp表示中のウィンドウが、hoge.hのウィンドウに切り替わります。逆もしかり。

あると本当に便利なんですよ…。

211 名前:202 :04/07/12 18:29
なんて書いてたら来てたー!!!!!!!

>>206-209
ありがとうございます!無事動きました。
いやー朝からスクリプトのリファレンス眺めてたのですが、さっぱりで。
あーこりゃ自分には無理だ。本当に助かりました!

212 名前:デフォルトの名無しさん :04/07/12 18:49
>>202
調べてば普通に出て来るんだがなぁ…
http://www.google.com/search?num=50&hl=ja&inlang=ja&ie=Shift_JIS&q=cpp+h+%90%D8%91%D6+%83%7D%83N%83%8D&lr=lang_ja

213 名前:デフォルトの名無しさん :04/07/12 18:50
「調べれば」ね... orz


214 名前:デフォルトの名無しさん :04/07/12 19:00
俺の推理だと恐らくIMEの悲劇だな、切り替えと切替

215 名前:デフォルトの名無しさん :04/07/12 22:34
orv
oru
orγ
orL
orぅ
sro
orn

L○」

Γ|


216 名前:デフォルトの名無しさん :04/07/12 22:42
で、スタティックライブラリ内でウィンドウを作りたいんですが、
CreateWindow()に渡す、インスタンスってライブラリを使用する
側から貰うしかない?AfxGetInstanceHandle()みたいなのってないのかな?


217 名前:デフォルトの名無しさん :04/07/12 23:00
GetModuleHandle(0)

218 名前:216 :04/07/12 23:13
>>217
アリガト。一歩進んだ。

219 名前:デフォルトの名無しさん :04/07/12 23:19
>>191
ラジオボタンのグループに対してはint型の変数を追加することができる。
この変数はグループの中で何番目のボタンが選択されているかを表すもの。
便宜上グループの先頭、つまりWS_GROUPを持つボタンにこの変数を割り当てる。
間違ってほかのボタンを選ばないよう、ラジオボタンはグループ属性のやつしか
リストに出てこないようになっている。

要するに、int型以外のメンバ変数もあることをすっかり忘れてたわけよガッハッハ

220 名前:デフォルトの名無しさん :04/07/12 23:33
>>219
グループの終了はどうやって明示するんですか?
新しいグループを作れば良いみたいですが、グループを作らずに終了させたいのですが。

221 名前:デフォルトの名無しさん :04/07/13 00:25
猫でもわかるプログラミングのこのページ ttp://www.kumei.ne.jp/c_lang/sdk/sdk_00.htm
のソースをコンパイルしようとしても下のようなエラーが出ます。
コンパイラはVC++6.0とBorland5.5で試しましたが同じ結果でした。
サイト内でもこの事について触れていないということは私の環境が悪いのでしょうか?

エラー E2034 test.cpp 22:
'void *' 型は 'HBRUSH__ *' 型に変換できない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )

222 名前:デフォルトの名無しさん :04/07/13 00:41
………おまぃはどこを見ているのかと。
ttp://www.kumei.ne.jp/c_lang/setvc.htm

223 名前:デフォルトの名無しさん :04/07/13 00:55
>>222
ありがとうございました。コンパイルできました

224 名前:デフォルトの名無しさん :04/07/13 01:24
>>190
うまくいきました。ありがとうございました

225 名前:デフォルトの名無しさん :04/07/13 12:53
便利なショートカット機能を教えてください

226 名前:デフォルトの名無しさん :04/07/13 13:40
Ctrl + Alt + Del

227 名前:デフォルトの名無しさん :04/07/13 13:57
Ctrl + F4

228 名前:デフォルトの名無しさん :04/07/13 13:59
Windowsキー + E
を、押しつづけろ。

229 名前:デフォルトの名無しさん :04/07/13 14:33
krドメインのページ開いてF5押しっぱなし

230 名前:デフォルトの名無しさん :04/07/13 18:31
質問です。
VBだったら簡単に出来ることなのだけど、
ファイルに保存する前に、入力項目がすべて入力されているかどうか
チェックをしたいのです。
印刷する場合だったらOnPreparePrintingで出来るのですけど、
保存する前に出来ないでしょうか?

ちなみに保存時はSerializeを使ってます。
この関数は保存するファイルを指定してから作動するので、
ここでチェックしても意味がないのです。

わかる方、お願いします。

231 名前:デフォルトの名無しさん :04/07/13 19:16
>>230
MFC?
入力項目っていうのはダイアログ使ってるのかな?
ダイアログならOKボタンが押されたときにチェックすればいいんじゃない?

232 名前:デフォルトの名無しさん :04/07/13 21:58
板違いかも知れないけど聞かせてくださいませ

ダイアログだとリソースエディタで作れるから楽なんですけど、
ウィンドウだとGUI部品を設置していくの大変ですよね?
こういうのって気合で座標とかサイズ指定しまくるのですか?

233 名前:デフォルトの名無しさん :04/07/13 22:04
論理レイアウト

234 名前:デフォルトの名無しさん :04/07/13 22:10
>>232
GUI部品というのはボタンとかの標準のコントロールこと?

だったらダイアログ以外のものになぜコントロールを乗っける必要があるのかと思うわけで・・・

235 名前:232 :04/07/13 22:35
>>234
ウィンドウが左右に割れていて左にタブやらボタンやらエディットやらがずらっと並んでいるようなアプリ
たまにみかけるんで、あぁいうのは気合で設定してるのかなと思いまして

もしかすると、あれはダイアログを貼り付けてるってことですか!?

236 名前:デフォルトの名無しさん :04/07/13 22:40
>>232
TabCtrlでさえ、ダイアログを貼り付けて使う。
況やSplitWindowをや。

237 名前:デフォルトの名無しさん :04/07/13 22:43
>>235
そんなのは普通CToolBarとかCDialogBarとか使うけど。

238 名前:232 :04/07/13 23:04
なるほど、そういうからくりだったのですね
ありがとうございます

239 名前:デフォルトの名無しさん :04/07/14 01:05
サカーで延長ってPKでもしたのか?
それとも最初からそういう枠?

240 名前:230 :04/07/14 07:01
>>231
MFCです。
FORMVIEWというのを使っていて、
画面にコントロールを配置しています。
それで「名前をつけて保存」で保存できるように作ったのですが、
入力項目のチェックをどこでしたらいいのかわかりません。
よろしくお願いします。

241 名前:デフォルトの名無しさん :04/07/14 10:20
>>240
やったことないけど
DoDataExchangeにDDV_系のチェック関数置くとか
DDV_関数のソース見て自作するとかすればいいんじゃないの?

242 名前:240 :04/07/14 19:29
>>241
OnFileOpenをオーバーライトしてそこでチェックすることにしました。
動作好調です。

それで新たにわからないことがあります。
教えてください。

GetFileExtで拡張子は取得できますが、拡張子をセットすることは出来ないでしょうか?

印刷時に、右下にアプリケーション名とかページ数を簡単に出力する方法はないでしょうか?

わかる方、お願いします。

243 名前:デフォルトの名無しさん :04/07/15 12:25
CViewなどに、CEditをCreateで貼り付けたとします。
このEditのテキストを保持しながら、Viewから取り除く方法ってありますか?
(Destroyだと、中に書いてあったテキストも破棄)
さらに、取り除いてから復元する方法はありますか?
よろしくお願いします。

244 名前:デフォルトの名無しさん :04/07/15 12:59
>>243
edit.ShowWindow(SW_HIDE);

245 名前:デフォルトの名無しさん :04/07/15 13:17
>>244
これって、文字的に隠すだけに見えたので、使おうとしなかったのですが、
ちゃんと、VIewから、取り除いてくれるのですか?

246 名前:デフォルトの名無しさん :04/07/15 13:27
意味不明な質問する前に試せ

247 名前:デフォルトの名無しさん :04/07/15 15:32
MFCで、XMLを解析してくれるクラスって何かありますか?

248 名前:デフォルトの名無しさん :04/07/15 15:33
見えなくしておきつつ実体は保持する
==隠す

じゃないのか?

249 名前:デフォルトの名無しさん :04/07/15 15:40
>>248
Javaの例で申し訳ないですが、remove();というメソッドがあります。
それは、フレーム(View)からコンポーネントを削除するのですが、
Edit等の中身は保持したまま、削除できます。

こういうやつはVCにあるのかわからなかったので、
質問させていただいております。

250 名前:デフォルトの名無しさん :04/07/15 15:49
>>249
>>244>>246


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