5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

★初心者に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

251 :デフォルトの名無しさん:04/07/15 16:09
隠すだけでいいじゃん。
それが嫌ならテキストを保存してからEditを破棄すれ。

252 :デフォルトの名無しさん:04/07/15 16:09
語感の「オレ解釈」にこだわってても生産性はあがらないYO!

253 :デフォルトの名無しさん:04/07/15 18:21
質問です。
ウインドウタイトルから「無題-」というのをはずして、
ファイルを開いた時にのみ、そのファイル名を表示したいんです。

PreCreateWindowで、
cs.style ^= (LONG)FWS_PREFIXTITLE;
cs.style &= ~(LONG)FWS_ADDTOTITLE;
とやったら、「無題-」はでなくなったのですが、
その後にSetTitleを実行してもタイトル名が表示されなくなってしまいました。

私が望んでいることを実行する方法はないでしょうか?


254 :デフォルトの名無しさん:04/07/15 18:31
SetWindowText

255 :デフォルトの名無しさん:04/07/15 22:27
>>253
SetWindowLongPtr()でウィンドウスタイルを動的に変更してみてはどうだね

256 :253:04/07/16 09:19
>>254,255
どうもありがとうございます。
とりあえず254のやり方でやってみたら出来ました。
SetTitleとSetWindowTextは同じ事をするのだと思っていたら、
違うのですね。
どうもありがとうございました。



257 :デフォルトの名無しさん:04/07/16 10:45
昨日も質問させていただいたのですが、レスがなかったので、
今一度質問させていただきます。
MFCで、XMLを解析してくれるクラスはありますか?

258 :デフォルトの名無しさん:04/07/16 10:49
MFCのクラス階層を見ればわかりますが無いです。

259 :デフォルトの名無しさん:04/07/16 14:39
.NETthespokeで買ったんですけど、"{"の後に自動インデントさせるにはどうすればいいんですか?

260 :デフォルトの名無しさん:04/07/16 15:37
説明不足だと思われ。

261 :デフォルトの名無しさん:04/07/16 15:53
意味はわかるが。持ってないから答えられないけど。専用スレなかったっけ。

262 :デフォルトの名無しさん:04/07/16 17:47
>>259
VS .NET 2003 Pro ならメニューの
ツール→オプション→テキストエディタ→C/C++
でスマートインデントをオンにする。
theSpoke版も同じじゃないかな?

263 :デフォルトの名無しさん:04/07/16 18:51
CBitmapのデータをファイルに書き出すにはどうしたらよいのでしょうか?

264 :デフォルトの名無しさん:04/07/16 19:57
APIスレにはHBITMAPからファイルに書き出すには、って質問が。

265 :263:04/07/16 19:59
>>264
えーっと、それは私ではないですが。

266 :デフォルトの名無しさん:04/07/16 21:44
からage

267 :デフォルトの名無しさん:04/07/16 21:46
>>262
ありがとうございます。無事出来ました。

268 :デフォルトの名無しさん:04/07/16 21:59
質問です
VC++.netで開発してるんですが、
DLL作成のプロジェクトで
VB.netのプロジェクトをインポートしたいです。
ようするに、C++のアンマネージドDLL?を作りたいんだけど、
C++がぜんぜん分からないからロジックはVBで実装しようと。。。
VBに実装してあるHello Worldメソッドを呼び出す、
C++側ソースとか書いてくれたらうれしいです


269 :デフォルトの名無しさん:04/07/16 22:52
出来ません。



270 :デフォルトの名無しさん:04/07/16 23:03
うん。

271 :268:04/07/16 23:36
複数言語サポートっていうのはこういうことじゃなくて?

272 :デフォルトの名無しさん:04/07/16 23:39
Unicodeが扱えるって事じゃないのか?

273 :デフォルトの名無しさん:04/07/17 00:01
>>271
複数サポートされているのはプログラミング言語じゃなくて、自然言語(日本語・英語・中国語……)の方

274 :デフォルトの名無しさん:04/07/17 00:02
>>271
それは、.NETの話ではないのか?
アンマネージドは.NETではない

275 :デフォルトの名無しさん :04/07/17 00:45
VC++6.0で、Win32コンソールアプリを、MFC使わずに作っています。
IEのオブジェクトを作るのにCreateObject("InternetExplorer.Application")
みたいな書き方でコンパイルが通るようにするにはどんなヘッダーを
インクルードすればよいのでしょうか。




276 :デフォルトの名無しさん:04/07/17 00:57
ピンチヘッダー

277 :268:04/07/17 01:29
.NETの話です。
な、なんかチンプンカンプンになってきたー
ここで言ってるのはプログラム言語の複数じゃないの?
あと表のところに、VC++のみアンマネージドで作れるって・・・
ttp://www.atmarkit.co.jp/fdotnet/basics/msdotnet/msdotnet_04.html

278 :デフォルトの名無しさん:04/07/17 01:52
プログラム言語複数で間違いないよ。VC++で開発してもVBで開発しても
C#やJ#で開発しても同じ.NETアプリを作れるから便利だろ?しかも
開発環境は共通しているからわざわざ操作方法を各言語ごとに覚えなくても
済むんだぜ!ということかと。
ついでにアンマネージ・コードを開発できるのはVC++.NETだけで、
ほかのC#やVB.NETを使った場合は.NETアプリしか作れないよ、と読める。
VC++のコンパイラでVBのコードをコンパイル出来るという意味ではない。


279 :デフォルトの名無しさん:04/07/17 01:58
フォルダを開いた画面で使われている
「ファイルの縮小表示ができるリストビュー」
を自作のアプリで使用したいのですが
誰かこのコントロールの名前を知りませんか?

280 :デフォルトの名無しさん:04/07/17 02:05
というか、VC++で開発してもVBで開発しても
C#やJ#で開発しても、.NETを使うなら.NETを覚えなきゃならないぜ。
.NETを覚える苦労に比べたら、言語の違いなんてどうでも良くなるぜ。
つまり.NET専用言語のC#以外は、.NET使うなら意味無いぜ
ってこと。

281 :デフォルトの名無しさん:04/07/17 02:33
>>275
#pragma comment(lib, "comctl32.lib")
#include <commctrl.h>
こうか?

IEコンポーネントをCreateWindow関数で作るサンプルコードなら
ここにもある↓
http://www.nitoyon.com/vc/tips/ie_component.htm#howto2

282 :デフォルトの名無しさん:04/07/17 02:36
リストビューコントロールのことか?

283 :デフォルトの名無しさん:04/07/17 02:58
>>277
VC++.NETを使ってアンマネージドで作成したものは、
.NET対応の実行ファイルを出力しない。
従来のWindowsプログラムと同じようにマシン語のファイルを、出力するの。
当然、.NETフレームワークで提供される機能も使えないので、
他の.NETな言語で作成したものを使うこともできない。


284 :デフォルトの名無しさん:04/07/17 06:30

.NETでつくった実行ファイル(.exe)ってWindows 200x,WindowsXPで
しか動かないのでしょうか。しかも特定のdllファイルが入ってないと
実行時にdllが見つからないとかのエラーも相変わらずですか?



285 :デフォルトの名無しさん:04/07/17 08:05
>281
サンプルコーディングはいろいろあるのは知ってました。
ただインクルードするヘッダーファイルについては
どれもなんも書かれていないので困っておりました。
といってもコンパイル時に出るエラーは初歩的なエラー、
ほとんど***が定義されてない・・・たぐいですが。
とりあえず教えてもらったファイルを追加してみます。

※どのヘッダーファイルが必要で、なおかつどんな順番に
 インクルードすべきかでまごついているのはVC++の使い
 方が間違っているのでしょうか?
 やっぱ基本からVC++の本買って読んだ方がいいですかね。





286 :デフォルトの名無しさん:04/07/17 09:13
>>284
開発が出来ないだけで9x系でも.NETをDLするだけで動かせます。
でかすぎるランタイムだけどな…

287 :デフォルトの名無しさん:04/07/17 10:04
9xでも95では動かないよな

288 :デフォルトの名無しさん:04/07/17 18:01
今時、95なんて・・・


うちの会社ではまだ使ってるけどね。しかもPC98用。

289 :268:04/07/18 01:43
回答ありがとうございます。
要するに、マネージドで出力したプログラムは、使えるフレームワークが同じなので、
何言語で作ってもかわらない。
そうすると、僕の質問である、
「C++アンマネージドDLLの処理をVB.NETで書く」
はありえないんですね。
VB.NETはマネージドでフレームワークを要するから・・・
ではC++マネージドDLLで実現することは出来るのでしょうか?



290 :デフォルトの名無しさん:04/07/18 01:57
test

291 :デフォルトの名無しさん:04/07/18 04:52
テキストファイルのデータを読み込んでの実行は、
どうやって実行するんですか?

292 :デフォルトの名無しさん:04/07/18 05:09
テキストファイルのデータを読み込んでの実行します

293 :デフォルトの名無しさん:04/07/18 10:44
いや、テキストデータを読み込んでから実行じゃないのか?

294 :デフォルトの名無しさん:04/07/19 02:23
今までVB6でアプリケーションを作成してきましたが、今回VC++で
仕事を押し付けられそうなんですが、IEにアドオン機能を付け加える
というのですが、VC6でやればいいでしょうか?それとも今ならVC++.NET
で作成したほうがいいでしょうか?
開発環境はwin pro 2000で、アドオンするIEは5.5以上です。


295 :デフォルトの名無しさん:04/07/19 02:26
>>294
相手が.NET Frameworkランタイム入れてくれるならVC++.NETでもいいけど、
そうでなけりゃVC6しか選択肢は無いでしょ。

296 :デフォルトの名無しさん:04/07/19 02:31
>>295
.NET Framework入ってないと、VC++.NETのアプリは動かないの?


297 :デフォルトの名無しさん:04/07/19 10:37
>>295 ( ´,_ゝ`)プッ・・

298 :デフォルトの名無しさん:04/07/19 11:57
それでVC++.NETで.NET Frameworkがはいってない
ウィンドウズ向けのアプリは開発できないの?


299 :デフォルトの名無しさん:04/07/19 11:58
できます。

300 :デフォルトの名無しさん:04/07/19 13:54
VC7のリソースエディタでメニューを編集しています.
しかし,「Grayed」をtrueにして,ビルドをしても,
起動したアプリケーションでは,そのtrueにしたメニューが普通に選択できてしまいます.
どうすれば,最初に使用不可能の状態になるんですか?
(これは,ひょっとしてバグですか?)

301 :デフォルトの名無しさん:04/07/19 17:20
あるメニューが選択されたら、ビットマップを表示したいのですが、
そのメニューハンドラで

//public:CBitmap bitmap,HBITMAP capBitmap
bitmap.Attach(capBitmap);
CClientDC tempDC(this);
CDC dc;
dc.CreateCompatibleDC(&tempDC);
CBitmap *pOld = dc.SelectObject(&bitmap);
tempDC.BitBlt(400,0,320,240,&dc,0,0,SRCCOPY);
dc.SelectObject(pOld);

としても、黒い画像が貼られます。
HBITMAPにデータ転送は、たぶんできているのでハンドラが間違っていると思うのですが、
このソース、どこかおかしい点はあるでしょうか?

302 :デフォルトの名無しさん:04/07/19 17:48
>>301
DDBとDIBって知ってる?

303 :デフォルトの名無しさん:04/07/19 17:48
>>302
わからないです。

304 :デフォルトの名無しさん:04/07/19 17:52
>>303
絶句してしまった。w

305 :デフォルトの名無しさん:04/07/19 17:53
>>303
DDB = DirectDraw Bitmap
DIB = DirectInput Bitmap

306 :デフォルトの名無しさん:04/07/19 18:00
>>301
なんで空のCDCを直に作ってんだよ

307 :デフォルトの名無しさん:04/07/19 18:02
>>306
それは、どういうことですか?

308 :301:04/07/19 18:06
bitmap.Attach(capBitmap);を
bitmap.LoadBitmap(IDB_BITMAP1);
と、適当に作ったファイルを読み込むようにすると、表示されるんですが。
(今、やりたいのは、DirectShowでキャプチャをしてビットマップを表示です。)

309 :デフォルトの名無しさん:04/07/19 18:46
Device Independent Bitmap

310 :デフォルトの名無しさん:04/07/19 18:49
>>309
おまい、ばか?
そのままやんけw
その意味を答えてみろよ

311 :デフォルトの名無しさん:04/07/19 19:01
必死だな・・夏の暑さで頭がやられちゃってるのか。

312 :デフォルトの名無しさん:04/07/19 19:04
>311
答えれないと、結局それなんですねw

313 :301:04/07/19 19:24
あの〜、それで、どのようにすれはよいのでしょうか?

314 :デフォルトの名無しさん:04/07/19 19:38
>>312
http://yougo.ascii24.com/gh/07/000779.html

315 :デフォルトの名無しさん:04/07/19 20:14
>>313
夏厨もまとわりついてることだし、自分で探せ。
その程度のサンプルならweb上に腐るほどあるから。

316 :デフォルトの名無しさん:04/07/19 20:16
>>315
いろいろ、試してみてできなかったんですが。

317 :デフォルトの名無しさん:04/07/19 21:06
DirectInput Bitmapって何ですか?
ぐぐっても出てこないですが。

318 :デフォルトの名無しさん:04/07/19 21:11
ググっても出てこないんならこの世に存在しないんだろ。

319 :デフォルトの名無しさん:04/07/19 21:18
試してないね。

ほんとにやって出来ないとなると、向いてないとしか言いようがない。
初心者にやさしくしたいのはこのスレの趣旨からも当然だが、
それにも限度が・・ということ。

すまん。ちょっと厳しすぎだが・・・

320 :デフォルトの名無しさん:04/07/20 08:57
>>319
いろいろ、サンプルのようなものがあるのは調べてわかっています。
で、それをいろいろ試してもできなかったので、ここに聞きにきています。

321 :デフォルトの名無しさん:04/07/20 09:37
>>320
素朴な疑問だが、メニューハンドラではなく(サンプルにあるように)普通に表示させることはできてるの?

322 :デフォルトの名無しさん:04/07/20 09:53
>>320
普通に、というのがちょっと曖昧でよくわからないですが、

ファイルに保存してあるビットマップの表示は可能。
DirectShowのサンプルでMFCを使わない方法では確認。

323 :301:04/07/20 17:43
解決しました。
どうやら、ファイルからフレームをキャプチャできてなかったようです。
お騒がせいたしました。

しかし、この板に来ると,Nortonが反応するんだが。
なんなんだこれは?

324 :デフォルトの名無しさん:04/07/21 00:15
>>323
新型ウイルスの実験中です。
お気になさらずに。

325 :デフォルトの名無しさん:04/07/21 09:45
>>324
気にするよ。
この症状は、皆様出てるの?

326 :デフォルトの名無しさん:04/07/21 09:54
既出ネタうざい

327 :デフォルトの名無しさん:04/07/21 11:06
>>325
ちゃんと対策している奴は出ないから気にすんな

328 :デフォルトの名無しさん:04/07/21 12:34
>>325
cat /etc/passwd | m*il  (*=a)

この文字列(スレタイ)に反応してるみたい
対策は知らん

329 :デフォルトの名無しさん:04/07/21 12:39
COM初心者です。
InternetExplorer 上で使われる ActiveX コントロールを開発しなくては
いけなくなったんですが、参考になるソースとかアーティクルとかないでしょうか?
CodeProjectとかCodeGuruを見てみましたが、シンプルなわかりやすい例が見つかりませんでした。

UNIX系のアプリケーションばかりつくってたんで、GUIDとかATLとかCOMとかハァ?状態です。
開発環境は VS.NET2003 です。

330 :デフォルトの名無しさん:04/07/21 12:41
ある画像処理プログラムで回転の部分の最適化をしているのですが、
どうも、以前はReleaseモードでやっても激遅だったのに、さほどいじった記憶は無いのに
最近になって3倍ちょっとも速くなっていました。
その間、やった事と言えば98DDKをインストールしてMASMを導入したのですが、
VC++のコンパイル時の最適化で勝手にMMXやSSEなどに最適化してくれるってことはありうるのでしょうか??


331 :デフォルトの名無しさん:04/07/21 12:43
インラインアセンブラでMMXとか使うようにコーディング
してないのなら無いぽ。


332 :330:04/07/21 12:55
ありがとうございます。そうですか、、何で速くなったか謎なのが不可解ですが、
まだ最適化の余地があるのは良かったです。。原因の方はやはり知りたいですが・・・。

333 :デフォルトの名無しさん:04/07/21 13:06
>>332
計測方法に問題があったとか?

334 :デフォルトの名無しさん:04/07/21 13:34
>>330
妖精さんがCPUを強まったものに交換してくれたとか。

335 :デフォルトの名無しさん:04/07/21 13:51
初めまして、当方VisualStudio.NET2003を入れてC++の勉強してます。
なんですが、いきなり問題が…
とりあえず、何か出力しようと思い
#include <iostream.h>
void main(void)
{
  cout << "test" << endl;
}
とやった所、iostream.hが見つからないとのエラーが出て、VSフォルダを見るとiostreamのファイルが。
そこで、#include <iostream>と書き換えたところ
coutとendlに対して、定義されていませんとのエラーが出ました。
MSDNライブラリで色々調べたのですが分からないです。
誰か教えてください、お願いします。

336 :デフォルトの名無しさん:04/07/21 14:00
>>335
std::cout
std::endl

337 :デフォルトの名無しさん:04/07/21 14:00
>>335
.hがくっついてないのは、名前空間が導入された新しいバージョン。
coutやendlほかいろいろがstdという名前空間に放り込まれています。
std::cout って書くなり、面倒だと思うならusingするなりしましょう。

338 :デフォルトの名無しさん:04/07/21 14:06
>>336-337
早速の返答ありがとうございます。
usingについて少し調べてみます。

339 :330:04/07/21 14:20
>>333
もしかしたらDebugモードのまま測定してたのかもしれません。こちらでは普通に30秒とかかかったので。(Releaseで8秒)
以前ビルドしたやつ(DDK導入以前)のバックアップで計ってみたら同じ速度だったので、Debugモードで測ってたのかもです。
お騒がせしました。。。

340 :デフォルトの名無しさん:04/07/21 14:42
表示中のダイアログ(CDialog)において、自身がモーダルかモードレスかを取得する方法はないでしょうか?
(Javaで言うところのisModal()のような)

OnInitDialog()でContinueModal()でモーダルループが継続中かチェックしようとしましたが、
モーダル/モードレスのいかんに関わらず結果は同じでした。

ご回答よろしくお願いします。

341 :デフォルトの名無しさん:04/07/21 15:08
>>340
モードレスの場合、破棄の方法などでコードが違ってくるわけだから、作成元で
ごっちゃにしたらまずくないかな?呼び出し側では呼び出すときにどちらを使う
か分かるわけだし、フラグ変数使って情報を渡すことは可能だと思うけど。

どういうシチュエーションで利用しようとしているのかよく分からないんで的はずれ
かもしれないが。

342 :デフォルトの名無しさん:04/07/21 16:26
HWNDやHDCの値って固定なんですか?
プロシージャ以外でhWndの値を使いたいんですがグローバルで保持していいものなのか気になります
どうか教えてください

343 :デフォルトの名無しさん:04/07/21 18:29
OWNDCが指定してあるなら、固定として扱ってもいい、って
MSDNが云ってた気がする。逆に言えばそれ以外はちゃんと解放しろとも。

344 :デフォルトの名無しさん:04/07/21 18:37
"visual c++"のプログラミングがわかりません。問題が、<入力された3値を辺に持つ三角形の種類、及びその面積を表示するプログラムを作成せよ。
ただし、「ポインタ変数を引数に持つ関数を作成、使用すること」>というものなんですが、初心者で基本的なこともわからないので、お手数ですがこれ
をプログラムしてもらえませんか?ホントわからないので、省略なしに全てお願いします。


345 :デフォルトの名無しさん:04/07/21 18:38
引っ越してキター!

346 :デフォルトの名無しさん:04/07/21 18:40
>344
幾ら出せる?

347 :デフォルトの名無しさん:04/07/21 18:41
宿題スレ行けって。

348 :デフォルトの名無しさん:04/07/21 18:50
>>344は一級の釣り師

349 :344:04/07/21 18:57
ようかんマン以外で、教えてもらえるとこないっすか?



350 :デフォルトの名無しさん:04/07/21 18:58
無い。

351 :344:04/07/21 19:18
>>350  ありがとーございます!

352 :デフォルトの名無しさん:04/07/21 19:54
>>341
回答ありがとうございます。

汎用的な子画面となるダイアログを作成して、呼び出し元に応じて
モーダル/モードレスを可変にすることが目的でした。
また、その際に画面内のコントロールをモードによって、呼び出し元とのI/Fを意識せずに
制御できればと考えていたのですが・・・・

一応今回の件は、ダイアログクラス内にBOOL型のメンバ変数を確保してコンストラクタでFALSEをセット、
オーバーライドしたDoModal()を経由した場合にのみTRUEをセットする方法で対応することにしました。

お手数をお掛けして申し訳ありませんでした・・・・


353 :デフォルトの名無しさん:04/07/21 20:55
>コンストラクタでFALSEをセット、 オーバーライドしたDoModal()を経由した場合にのみTRUEをセットする方法
うーむ……

354 :デフォルトの名無しさん:04/07/21 21:19
>>352
それをどうせやるなら

CDialog - CMyDialog - CMyModalDialog
                  - CMyModelessDialog

と派生クラスにしたほうがスマートでないでしょうか とおもいました

355 :デフォルトの名無しさん:04/07/21 21:27
同じことをするんであれば、どっちもありだと思うが。考え方とそのプログラムの
他の部分がどうかにもよる。

でもそもそもそういうダイアログを兼用で作るってのが一般的なのか疑問。

356 :デフォルトの名無しさん:04/07/21 22:45
モーダルとモードレスでは寿命が違うからデータハンドリングも違えば
ボタンの意味合いも変わってくるからねぇ。
別々に外枠を作って、その中身だけ共通にした方がすっきりするような希ガス。

357 :デフォルトの名無しさん:04/07/21 22:49
寿命?

358 :デフォルトの名無しさん:04/07/21 23:34
<入力された3値を辺に持つ三角形の種類、及びその面積を表示するプログラムを作成せよ。
ただし、「ポインタ変数を引数に持つ関数を作成、使用すること」>

何この問題?「入力された3値を辺に持つ三角形」って何?問題作った人、算数できるのかな?



359 :デフォルトの名無しさん:04/07/21 23:39
>>358
(- -;)...

360 :デフォルトの名無しさん:04/07/22 08:48
>>358
宿題スレへどうぞ

361 :デフォルトの名無しさん:04/07/22 10:32
 .__
ヽ|・∀・|ノ 来るな!


362 :デフォルトの名無しさん:04/07/22 20:11
VC++6.0でWin32コンソールアプリ作成を試みてます。
コンパイルすると、「CString」が定義されていない
識別子です。。って出るんですが?どのヘッダーファ
イルをインクルードすればいいのでしょうか?


363 :デフォルトの名無しさん:04/07/22 20:12
atlmisc.h(WTL)か、afx.h(MFC)だったっけか。

364 :デフォルトの名無しさん:04/07/22 21:43
>363
確かそれを書いてダメだったよーな。
あまりに基本的すぎるのか、MSDNにはどのヘッダーファイルを
インクルードすればCStringクラスが使えるのかなんも書いて
ないでやんす。


365 :デフォルトの名無しさん:04/07/22 21:45
grepしろや。

366 :デフォルトの名無しさん:04/07/22 21:52
#include <string>
typedef std::stirng CString;
//VC初めて1ヶ月くらいまでなら平気

367 :デフォルトの名無しさん:04/07/22 21:56
>365
やってるよ!CStringがたくさん出てきてどのヘッダファイルか
わかんねーんだよ。ポイントを教えろ!

>366
どうも、おおきに。せっかくですがそんな書き方はダサくていやです。



368 :デフォルトの名無しさん:04/07/22 22:00
afxwin.h

369 :デフォルトの名無しさん:04/07/22 22:17
>368
それもダメだったよ。

370 :デフォルトの名無しさん:04/07/22 22:24
プロジェクトの設定でMFCを使用しないになってない?

371 :デフォルトの名無しさん:04/07/22 22:55
教えてください。
マウスカーソルを変更したり、背景にビットマップを表示したいのです。
APIで最初から全部プログラムを書いた時は簡単に出来ました。
WNDCLASSEXを宣言してそのクラスのhCursorやhbrBacgroundに
ロードすればよいわけです。
それがMFCとなると、どこで何をしていいのかさっぱりわかりません。
どなたか、お願いします。

372 :デフォルトの名無しさん:04/07/22 23:10
>370
MFCを使わない方向でやりたいです。
でも、試しにMFCを使う2通りの方法をそれぞれ試して
みましたがそれでもCStringは定義されていない。。
と出ます。なにがいけないのでしょうか。


373 :デフォルトの名無しさん:04/07/22 23:17
grep class.*CString *

374 :デフォルトの名無しさん:04/07/22 23:35
>>372
Win32 Console Applicationでプロジェクト作って
プロジェクトの設定で共有DLLでMFCを使用に変更したあと、

#include "afx.h"
int main(int argc, char* argv[])
{
CString s;
s = "test\n";
printf((LPCTSTR)s);
return 0;
}
をビルドしたらできたよ?

375 :デフォルトの名無しさん:04/07/22 23:46
>>371
SetClassLong
SetClassLongEX
あたりを使うんじゃないかな?

376 :デフォルトの名無しさん:04/07/23 01:04
hbrBackgroundにビットマップって指定できたんだ。

カーソルなら、WM_SETCURSORのハンドラをつくりゃいい。

377 :デフォルトの名無しさん:04/07/23 09:25
VisualC++2003なんですが

warning C4311: '型キャスト' : ポインタを 'LPVOID' から 'DWORD' へ切り詰めます。

このワーニングが納得できません。
なんで出ますか?

378 :デフォルトの名無しさん:04/07/23 09:40
>>371
SetCapture();
::SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_XXX)));

OnNcHitTestとかにこれで普通に変わるけど、こんなのとは違うのかな?

379 :デフォルトの名無しさん:04/07/23 09:42
>>377
どういうところで出るのか分からないので一般的な話になるけど、
その関数の定義を確認して、使うべき型がちゃんと入ってるか調べては?

380 :デフォルトの名無しさん:04/07/23 10:11
>>379

unsigned long a = 0;
void* b = (void*)a;
unsigned long c = (unsigned long)b;

↑をコンパイルすると↓のワーニングが出ます。

warning C4312: '型キャスト' : 'unsigned long' からより大きいサイズの 'void *' へ変換します。
warning C4311: '型キャスト' : ポインタを 'void *' から 'unsigned long' へ切り詰めます。


unsigned long long a = 0;
void* b = (void*)a;
unsigned long long c = (unsigned long long)b;

↑をコンパイルするとワーニングは出ませんでした。
コードをこれに変更することでワーニングを回避することにします。
しかし、理由がわかりません。sizeof(void*)は4でしたし。なぜでしょう?

381 :380:04/07/23 10:16
解決しました。
デフォルトでコンパイラオプション/Wp64がセットされている為でした。
ありがとうございました。

382 :いなむらきよし:04/07/23 10:27
何でもキケーに聞いてくれキケー!

383 :デフォルトの名無しさん:04/07/23 10:59
ワーニング
ワーニング
ワーニング
ワーニング
ワーニング。


384 :デフォルトの名無しさん:04/07/23 12:15
CViewから派生したクラスを動的配列で保持したいと思っています.
しかし,CArrayではエラーが出て,使用することができませんでした.
(コンストラクタがprotectであることが原因といっていたと思います.)
他の動的配列,例えばCObArray等を使えば,保持できるのでしょうか?
それとも,他に何か良い方法はありますか?

さらに,このprotectなコンストラクタをpublicにしてもよいのでしょうか?

いくつか質問させていただきました.
よろしくお願いいたします.

385 :371:04/07/23 12:43
皆さんいろいろありがとうございました。
>>375さんが教えてくれたやり方が、私の理想としている形でした。

以下の記述で出来ました。
HCURSOR hNewCursor;
hNewCursor = LoadCursor ( AfxGetInstanceHandle (), MAKEINTRESOURCE ( IDC_CURSOR1 ) );
HCURSOR hOldCorsor;
hOldCorsor = ( HCURSOR ) SetClassLong ( GetSafeHwnd(), GCL_HCURSOR, ( long ) hNewCursor );

HBRUSH hNewBrush;
hNewBrush = CreatePatternBrush ( LoadBitmap(AfxGetInstanceHandle (), MAKEINTRESOURCE ( IDB_BITMAP1 ) ) );
HBRUSH hOldBrush;
hOldBrush = ( HBRUSH ) SetClassLong ( GetSafeHwnd(), GCL_HBRBACKGROUND, ( long ) hNewBrush );

どうもありがとうございました。

386 :デフォルトの名無しさん:04/07/23 14:08
>>380
あたりまえだ。
自分がやっている事の意味を理解出来ていないのなら、
プログラマを止めた方がいい。


387 :デフォルトの名無しさん:04/07/23 14:20
>>386
まちがいなくプログラマじゃないでしょ。


388 :デフォルトの名無しさん:04/07/23 14:26
>>387
ひょっとして
void *p;
と定義して
p * 2 とか計算するつもりなんだろうか?


389 :デフォルトの名無しさん:04/07/23 15:25
>>386
推奨するわけではないけれど、ポインタを数値として
使うテクニックは存在すると思うが

380はやっていることを理解した上で、質問しているんだと思うけどね

390 :デフォルトの名無しさん:04/07/23 16:27
>>380
#include <iostream>
using namespace std;
int main () {
unsigned long a;
void* b;
unsigned long c;
cout << sizeof (a) << endl;
cout << sizeof (b) << endl;
cout << sizeof (c) << endl;
cout << sizeof ((void*)a) << endl;
cout << sizeof ((unsigned long)b) << endl;
cout << sizeof (void *) << endl;
cout << sizeof (unsigned long) << endl;
return 0;
}
で結果は何と出ます?


391 :デフォルトの名無しさん:04/07/23 17:23
あれこれ騒がなくても>>380はもう>>381で解決しているっていってんだからいいじゃん

392 :デフォルトの名無しさん:04/07/23 17:29
>>391
見落としてた orz
な〜んだ


393 :デフォルトの名無しさん:04/07/23 17:59
いまさらだが ポインタ→整数ならreinterpret_cast使え

394 :デフォルトの名無しさん:04/07/23 18:17
>>380
> sizeof(void*)は4でしたし。

>>381
> デフォルトでコンパイラオプション/Wp64がセットされている為でした。
は矛盾してないの?


395 :394:04/07/23 18:25
>>394
手元に環境が無いで書いてるのだけど/Wp64って警告オプションなのね
納得した


396 :デフォルトの名無しさん:04/07/23 22:38
>374

そうでつか?ありがとう。
月曜に試してみます、レスがなかったらOKってことで。



397 :デフォルトの名無しさん:04/07/24 00:25
先生!
RegisterClass()が失敗します。GetLastError()しても返るのは0。。。
何が起こっているのですかー。

398 :デフォルトの名無しさん:04/07/24 01:10
C++スレから移動してきました

int main(int argc, char* argv[])
{
try
{
throw int();
}
catch(int)
{
}

return 0;
}

これだけのプログラムなのですが
例外処理 (初回) は hoge.exe (KERNEL32.DLL) にあります: 0xE06D7363: Microsoft C++ Exception。
とデバッガのアウトプットに出ます。
これはどういう意味なのでしょうか?
ビルド時に警告は何も出ていません。/GXオプションも付いていることを確認しています。
VC++6.0 SP5 Win2k


399 :デフォルトの名無しさん:04/07/24 01:22
try {
throw int(0);
} catch(int e) {
}

とかじゃなかったっけ?

400 :399:04/07/24 01:23
先生方!
Win95でRegisterClass()が失敗します。GetLastError()しても返るのは0。。。
何が起こっているのですかー。教えてー。

401 :399:04/07/24 01:27
アゲ

402 :デフォルトの名無しさん:04/07/24 01:30
msdn

403 :389:04/07/24 01:34
>>399
そのようにしてもアウトプットにメッセージが出ました。
例外をthrowすると必ず出るもんなのでしょうか?

404 :デフォルトの名無しさん:04/07/24 01:39
>>400
ソースうpしろ

405 :399:04/07/24 01:42
>>403
ごめんよく読んでなかった。デバッガのアウトプットに出るのは正しいんでは?


406 :デフォルトの名無しさん:04/07/24 01:42
必ず出るものです。

407 :399:04/07/24 01:45
ソース会社においてきたーよ(´・ω・`)

win2kとxpではオッケーで、95ではダメ。
WNDCLASSはInstanceとClassNameとWndProcを設定してた気が。。。
わかりませんよねぇ(´・ω・`)


408 :デフォルトの名無しさん:04/07/24 02:02
そういえばW98のときにAPIで何かあったな
調べるから待たれ

409 :デフォルトの名無しさん:04/07/24 02:09
自分のメモには
WNDCLASS / RegisterClass の組み合わせだとWin2K/XPでしか動作せず、
WNDCLASSEX / RegisterClassEx を使うように書き換えたらWin98で動作した。
と書いてあった。


410 :399:04/07/24 02:18
>>409
Σ先生マジデスカー!

最初は
WNDCLASSEX / RegisterClassEx
でやっていて、ダメだったので
WNDCLASS / RegisterClass
に変えてやってみたですよ。。。Exの時点でパラメーターか何かが誤っていたということなのかorz

ありがとう。

411 :デフォルトの名無しさん:04/07/24 02:19
ちなみにこんなコードが入っていた

  if(!RegisterClassEx(&wcex)){
    LPVOIDlpMsgBuf;
    FormatMessage(
      FORMAT_MESSAGE_ALLOCATE_BUFFER
      | FORMAT_MESSAGE_FROM_SYSTEM
      | FORMAT_MESSAGE_IGNORE_INSERTS,
      NULL,
      GetLastError(),
      MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
      (LPTSTR)&lpMsgBuf,
      0,  // for auto allocation
      NULL
    );

    __Write_Debug_File(lpMsgBuf);

    LocalFree(lpMsgBuf);
    returnFALSE;
  }


412 :デフォルトの名無しさん:04/07/24 02:23
でもなぜかうちにはそれぞれのリリース用にディレクトリがあるんだよね。
コンパイラのオプションの違いかも。もうちょっと調べるわ。

413 :デフォルトの名無しさん:04/07/24 02:31
Win2K/XP用リリースの方には
   /D "WIN32"

んで

Win98用リリースの方には
   /D "WIN32" /D "_WIN32_W9x"

というオプションが付いておった


414 :デフォルトの名無しさん:04/07/24 02:37
あとね、

ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpwinui/html/_win32_registerclassex.asp

ここに

Windows 95:WNDCLASSEX 構造体の cbWndExtra メンバと cbClsExtra メンバに 40 バイトをより大きな値を指定すると、RegisterClassEx 関数は失敗します。

こんなこと書いてある


415 :デフォルトの名無しさん:04/07/24 02:45
色々ありがとうございます。>>411-414
手元に環境がないので涙で枕を濡らすほかないのです。
ちなみに最初書いてたのは以下のようなコード(だった気がする)
WNDCLASSEX wcx = {0};
wcx.cbSize = sizeof(WNDCLASSEX);
wcx.lpfnWndProc = (WNDPROC)WndProc;
wcx.hInstance = GetModuleHandle(0);
wcx.lpszClassName = m_ClassName;
if (!RegisterClassEx(&wcx)) {
DWORD dwError = GetLastError();
return dwError;
}
なんていうかDLL内で不可視のウィンドウを作ってソケットメッセージを何とかしたかった。
MFCのソケットみたいな。


416 :デフォルトの名無しさん:04/07/24 08:23
>>415
m_ClassNameの中身は?

417 :398:04/07/24 10:10
>>405-406
そうなんですか。
前は出てなかった気がしたんですが、気のせいだったのですね。
どういう仕組みで出るのかわかりませんが、害がないということで安心しました。
ありがとうございました。

418 :399:04/07/24 19:24
>>416
sprintf(m_ClassName, "ClassNameDaze");

適当な文字列なんです。。。

419 :デフォルトの名無しさん:04/07/24 20:45
じゃあ、試しに直接書いてみたら?
wcx.lpszClassName = "ClassNameDaze";

420 :デフォルトの名無しさん:04/07/25 00:27
>>415
DLLなら
wcx.hInstance = GetModuleHandle(0);
は違うと思うが。
これだとEXEのハンドルになるよ。

421 :デフォルトの名無しさん:04/07/25 10:25
関数がコールされると、returnされた際にどこにreturnするかアドレスを
記憶していると思うのですが、そのアドレスはどこにあるのでしょうか?


422 :デフォルトの名無しさん:04/07/25 10:33
スタックとヒーブでぐぐりなされ。

423 :マイク ◆yrBrqfF1Ew :04/07/25 10:49
通常はスタックフレームにリターンアドレスがある

//以下未定義なコード

int main()
{
int array[1];
std::cout<<"return address: "<<std::hex<<array[2]<<endl;
}

424 :デフォルトの名無しさん:04/07/25 14:21
>>420
それで問題ない

425 :399:04/07/25 23:03
アクセス規制が。。

>>420
とりあえずチェックしてみます。
Win2kなどでは良くてもWin95だと問題が出てしまうのですかね。。。

>>424
私はどうすれば。。

426 :399:04/07/25 23:05
解除されたようだ。

>>420
GetModuleHandle(0);
がダメな場合はDLLMain()でもらえるインスタンスを使用するということですよね?
。。。多分。。。


427 :デフォルトの名無しさん:04/07/25 23:34
CListCtrlから派生させてCListCtrlExをつくったのですがこれを
MFCアップウィザードが用意してくれた、CXXXVew(CListViewから派生)に結び付けるには
どうすればいいのかしら?

428 :デフォルトの名無しさん:04/07/26 01:25
>>423
array[2]はBPじゃないのかな?
array[3],array[4]あたりのはずだが。


429 :mike ◆yrBrqfF1Ew :04/07/26 06:59
ならarray[1]は何がある?

i386
↑low
    [array]        //array[0]
    [saved frame pointer] //array[1]
    [return address]   //array[2]
    [arguments...]
↓high

430 :デフォルトの名無しさん:04/07/26 09:31
>>427
できません。CListViewから導出されたクラスにはCListCtrlが結びついていますので
CControlViewから新たに導出してあなたのCListCtrlExを結びつけて
CControlViewをCDocumentとjointしてください
結構面倒ですよ

431 :デフォルトの名無しさん:04/07/26 10:22
>>429
ごめん勘違いですた。


432 :デフォルトの名無しさん:04/07/26 11:18
初心者なんですが、void mainとint main の違いって何ですか?
あと、
#include<stdio.h>
void main(){
int a;
scanf("%d", &a);
printf("%d\n", a);
}
で実行すると、数値はちゃんと同じように出力されるんですが、
文字は変な数値で出力されてしまいます・・。
文字を出力するにはどのように変えれば良いんでしょうか?

433 :デフォルトの名無しさん:04/07/26 11:30
>>432
void main 値を返さないで終了
int main 値を返して終了

scanf("%c",&a);
printf("%c\n",a);

434 :デフォルトの名無しさん:04/07/26 12:16
値を返して終了することのメリットは何ですか?

435 :デフォルトの名無しさん:04/07/26 12:53
Cスレ行って欲しいな

436 :デフォルトの名無しさん:04/07/26 12:57
int main:絶対だれにも文句を言われない。
void main:(特にそのCスレで)規格にないとかなんとかいろいろうるさいのが出てくる。

437 :デフォルトの名無しさん:04/07/26 13:21
>>434
UNIXだと,シェルスクリプト(Winのバッチファイルに相当)から,
その値を返すプログラム(Aとしよう)を起動して,
Aが終了したときの返り値をその後のシェルスクリプトの処理で利用するって使い方をする.
Winだと同様にバッチファイルで使えるんでは?
シェルだと,直前に実行したプログラムの返り値は$?で取り出せるけど,
バッチファイルだと何になるの?


438 :デフォルトの名無しさん:04/07/26 14:01
>>437
IF ERRORLEVEL n 〜
mainの返り値が n 以上なら〜を実行する。IF NOT ERRORLEVEL 〜 ってのもある。

あるいは他のプログラムの中からならGetProcessExitCode()で取得することもできる。
特にGUIプログラムだとこれしかない。

439 :399:04/07/26 18:09
>>419
ソレダ!

ダメダオレ orz

440 :432:04/07/26 18:22
#include<stdio.h>
void main(){
char a[10];
scanf("%s", a);
printf("%s\n", a);
}
でやったら出来ました。

441 :デフォルトの名無しさん:04/07/26 19:02
>>440
じゃあぜひ10文字以上入力してみよう


442 :デフォルトの名無しさん:04/07/26 19:21
これ以上引っ張るなボケ

443 :デフォルトの名無しさん:04/07/26 22:17
%10s

444 :デフォルトの名無しさん:04/07/27 00:10
ここってヘビーな内容はついて行けない人が多いんですねw

445 :デフォルトの名無しさん:04/07/27 00:11
オレオレ

446 :デフォルトの名無しさん:04/07/27 01:00
リソースエディタの事について、聞きたいんですけど
visualC++でリソースをヴィジュアル的に編集する方法は
分かったのですが、スクリプト的に編集するにはどうすればいいですか
検索で色々調べてみたんですが、詳しく手順が載ってる所が無いです。
作ったリソースをスクリプトで見たいです。
BEGIN ~~~~~~
END
ていう風な。
言い方おかしい所あるかも知れませんが、よろしくです。

447 :デフォルトの名無しさん:04/07/27 01:37
>>446
普通にテキストエディタで編集すればいいのでは?

448 :デフォルトの名無しさん:04/07/27 03:04
xxx.rc というファイルが作られてないですか?

449 :デフォルトの名無しさん:04/07/27 05:36
ホントですね。。。
単にテキストエディタで見れば良かったんだ。
何故そこに気が付かなかったのか。
ありがとうございました。
あえてVisualC++でストリプト風な表示がされないのは
やっぱりビジュアル的なこだわりなんでしょうかね
そんな編集も必要無さそうだし。(初心者だからそう思うだけかも)

450 :447:04/07/27 07:59
>>449
VC6でも確か開けたはず。VS.NETはファイル名右クリックでメニューで選べたし。
尤も、どちらの場合でもダイアログエディタなどのヴィジュアルなエディタとは共存できない。
#どっちかで開こうとすると閉じられてしまう。

451 :デフォルトの名無しさん:04/07/28 02:57
質問です。
C++プログラムでnewを利用してメモリを取得しているのですが、
そのメモリ領域を内容はそのまま、後で広げる事は出来るのでしょうか?


452 :デフォルトの名無しさん:04/07/28 03:06
unn

453 :デフォルトの名無しさん:04/07/28 03:06
一応こんなのもあるが
ttp://www9.plala.or.jp/sgwr-t/lib/realloc.html


454 :デフォルトの名無しさん:04/07/28 03:08
realloc()の存在は知ってますが・・・mallocじゃなくても大丈夫なんですか?


455 :デフォルトの名無しさん:04/07/28 03:17
>>451
予め広めに取っておくしかないかもね
どういう用途でそうしたいんでしょうか?


456 :デフォルトの名無しさん:04/07/28 03:21
構造体を使用する数の分だけメモリを確保しようとしています。
newで無理ならmallocに書き直そうと思います;

457 :デフォルトの名無しさん:04/07/28 03:28
>>456
newを再定義してる人もいるようです
ttp://jbbs.shitaraba.com/computer/bbs/read.cgi?BBS=5651&KEY=1048738265&START=43&END=63&NOFIRST=TRUE


458 :デフォルトの名無しさん:04/07/28 03:28
C++と
Visual C++.NETは
実は全くの別言語だったりするんですか?

459 :デフォルトの名無しさん:04/07/28 03:31
C++は総称で
Visual C++.NETは数多くあるC++の実装の一部では?

460 :デフォルトの名無しさん:04/07/28 03:32
newの再定義も考えましたが、結構構造体の数が増える可能性があるのでやめときました。
検索してると標準テンプレートライブラリ関連の情報がでてきたのでベクトルあたりを使って
なんとかできないか調べてみます。(それで無理ならmallocで・・・)

ご協力ありがとうございました。

461 :デフォルトの名無しさん:04/07/28 03:35
C++は言語の事でVisual 〜 というのは統合開発環境の事だと思います。
基本的な構文は変わりませんが.NETが追加した関数とかクラスがあったりします。

462 :デフォルトの名無しさん:04/07/28 03:35
libg++ の string クラスとか vector クラスの実装見ると、参考になるかも

463 :デフォルトの名無しさん:04/07/28 08:05
つーか、vectorで書き直せばことが足りるんで内科医?

464 :Visual C++初心者です:04/07/28 14:30
すいません、初心者なんですけど、質問させてください><
Visual C++でプログラムのコンパイルをした時に、
『error C2146: 構文エラー : ';' が、識別子 'lpDD' の前に必要です。』っていうエラーが出るんです。
きっとDirectDrawが関係しているエラーだと思うんですけど、(使っていないプログラムはコンパイルできました。)
何が原因なんでしょうか・・・? 色々試してるんですけど、分からなくて;;
的外れな質問だったらごめんなさい;

465 :デフォルトの名無しさん:04/07/28 15:01
>>464
ヘッダはinculudeしたか?

というかスレ違いな気がするが・・・

466 :デフォルトの名無しさん:04/07/28 15:02
ある関数が
void func() throw(runtime_error);
みたいに定義されている時に、呼び出し側でキャッチしなくても特にエラーにならないのですが、そういうものですか?
JAVAみたいに呼び出し側にキャッチを要求することはできませんか?
よろしくお願いします。

467 :465:04/07/28 15:02
× : inculude
○ : include

468 :デフォルトの名無しさん:04/07/28 17:39
unn

469 :デフォルトの名無しさん:04/07/28 18:26
ListView のソートとか背景の色をつけることが
できる拡張したListViewってない?

オーナードローがよくわからん

470 :VisualC++初心者です:04/07/28 18:28
えっと、デスクトップパソコンの方ではコンパイルできたんです。(同じソースファイルです。)
今同じプログラムをノートパソコンに移動させようとしてるんですけど、
そっちで上に書いたエラーが出ちゃって・・・><;
スレ違いでした?; ごめんなさい;;

471 :デフォルトの名無しさん:04/07/28 18:36
>>470
ノートの方にSDKはあるのか?
もしくは、パスが通ってないとか

472 :デフォルトの名無しさん:04/07/28 18:42
>469
そういう疑問はcodeguruかcodeprojectに行くとだいたい解決する。

473 :デフォルトの名無しさん:04/07/28 18:58
470は女

474 :デフォルトの名無しさん:04/07/28 18:59
>>472
ついでに英語もわからん
日本語であるとこしりませんか?

475 :デフォルトの名無しさん:04/07/28 19:18
しりません

476 :458:04/07/28 19:30
>>459,461
そうでしたか。ありがとうございます。じゃ、同じってことで。

477 :デフォルトの名無しさん:04/07/28 19:33
>>464
念のためソース貼っておけば?

478 :デフォルトの名無しさん:04/07/28 19:40
>474
http://www.seg.co.jp/sss/
ほい。

479 :デフォルトの名無しさん:04/07/28 20:10
宣言した定数に色つけるってできないんですか?

480 :デフォルトの名無しさん:04/07/28 20:43
>>479
[定数]++;
若干色を付けてみました
とか?

481 :デフォルトの名無しさん:04/07/28 21:17
>>479
エディタオプションだ


482 :466:04/07/28 22:07
どなたか>>466わかる方いませんか?

483 :デフォルトの名無しさん:04/07/28 22:09
>>482
そういうものです

484 :デフォルトの名無しさん:04/07/28 22:21
1行エディットコントロールを作成したのですが、
入力してRETURNキーを押すたびに警告音がします。
うるさいので、無くす方法はないでしょうか?


485 :デフォルトの名無しさん:04/07/28 22:24
マルチキター!

486 :デフォルトの名無しさん:04/07/28 23:00
error LNK2019: 未解決の外部シンボル __imp__mciGetErrorStringA@12 が関数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
error LNK2019: 未解決の外部シンボル __imp__mciSendCommandA@16 が関数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
fatal error LNK1120: 外部参照 2 が未解決です。

すいません、MCI APIを使って音楽を流そうとしているのですが、
何度やってもこの3つのエラーがでます。どういった原因が考えられるのでしょうか?
そもそも「外部参照2が未解決」「未解決の外部シンボル」といった
エラーはよくみるのですがどういうことなのでしょうか?

487 :デフォルトの名無しさん:04/07/28 23:05
>>486
自分もよくわからないけど、クラスのメンバ関数なんかを、
宣言だけして関数本体を書かなかったりすると出る。
どっかでプロトタイプ宣言だけして、処理を記述し忘れてない?


488 :デフォルトの名無しさん:04/07/28 23:12
デバックについてサンプルプログラムなどで詳しく解説してある本、サイト等
を教えてください。

489 :デフォルトの名無しさん:04/07/28 23:41
>>486
>>488
ああ、あとリンクエラーの場合もあり得るか。。。
LNK2019、LNK1120に関してGoogleで検索してみては?


490 :デフォルトの名無しさん:04/07/29 00:08
winmm.lib

491 :デフォルトの名無しさん:04/07/29 00:24
>>490
インポートライブラリをプロジェクトに参加させる方法すらわかりません・・。
どうやるんでしょうか?

492 :デフォルトの名無しさん:04/07/29 00:26
最近圧縮アルゴリズムとやらに興味が出てきたので圧縮ソフトを作ってみようと思っているのですが、
圧縮プログラムの書き方もどこから着手するべきなのかもさっぱりです。
初心者でもその手のことがわかりやすく説明してある本やHP等がありましたら教えてください。


493 :デフォルトの名無しさん:04/07/29 00:43
ツールバーのアイコンの横に文字列を添えたいのですが、
全てのボタンがTB_ADDSTRINGで一番最初に割り当てた
文字列(インデックス0)のみで表示されてしまいます。
例えば、
char szBuf[10];
strncpy(szBuf, "ボタン1", sizeof(szBuf) - 1);
tbb[0].iString = (int)SendMessage(hToolBar, TB_ADDSTRING, NULL, (LPARAM)(LPSTR)szBuf);
strncpy(szBuf, "ボタン2", sizeof(szBuf) - 1);
tbb[1].iString = (int)SendMessage(hToolBar, TB_ADDSTRING, NULL, (LPARAM)(LPSTR)szBuf);
strncpy(szBuf, "ボタン3", sizeof(szBuf) - 1);
tbb[2].iString = (int)SendMessage(hToolBar, TB_ADDSTRING, NULL, (LPARAM)(LPSTR)szBuf);
とした時、全てのボタンの文字列部分が「ボタン1」となってしまいます。
SendMessage関数は、何れも正しい値を返しています。
各々のボタンの文字列を正しく表示させるには、どうすれば良いでしょうか?

494 :デフォルトの名無しさん:04/07/29 00:44
>>492
http://www.zeosync.com/

495 :492:04/07/29 01:03
>>494
サーバーが見つかりません_| ̄|○

496 :デフォルトの名無しさん:04/07/29 01:29
>>469
まさしくそういうクラスを昨日書いたよ。
カラムヘッダクリックでソート、一行ごとに背景色をつけるって仕様。

497 :デフォルトの名無しさん:04/07/29 06:06
>>493 はスルーですか?


498 :デフォルトの名無しさん:04/07/29 07:39
>>497
はい

499 :デフォルトの名無しさん:04/07/29 10:34
>>469
昔 mzListViewつーのがあったよ


500 :デフォルトの名無しさん:04/07/29 12:38
>>490
#pragma comment(lib,"winmm.lib")

501 :デフォルトの名無しさん:04/07/29 14:09
VisualStudio.NETに変わってからあまりに環境が変わりすぎてさっぱりわかりません。
クラスウイザードはどこへ行ったのでしょうか?代わりになるものはなんですか?

502 :デフォルトの名無しさん:04/07/29 14:17
>>501
プロパティ

503 :デフォルトの名無しさん:04/07/29 15:20
JPEGファイルを扱いたいのですが、CImageクラスでは保存時に圧縮率を設定できません。
圧縮率を設定するにはどうしたらいいのでしょうか?

504 :デフォルトの名無しさん:04/07/29 17:38
>>501
右の方にニュッと出てくるプロパティとかあるじゃん
そこらへんにだいたい同等の機能が組み込まれてる

505 :デフォルトの名無しさん:04/07/29 17:51
>>502,504
なんとなく解決。もういちどScribbleから始めます。


506 :デフォルトの名無しさん:04/07/29 17:56
Scribbleってみんなやってるの?
ちなみにやってない派。

507 :デフォルトの名無しさん:04/07/29 18:05
MFCだけじゃなくVC++の使い方まである程度わかるようになるのでいい。
前の環境では書籍がついてたのだが、.NETではどこにあるのか教えてください。

508 :デフォルトの名無しさん:04/07/29 18:10
>>495
ZeoSync で検索すればどんなHPだったのか分かる。
結局こいつら夜逃げしたのか。

509 :デフォルトの名無しさん:04/07/29 19:53
>>508
詐欺事件があった、てことなのでしょうか。

で、どなたか492の質問に回答お願いします_| ̄|○

510 :デフォルトの名無しさん:04/07/29 20:35
>>508, 492
一口に圧縮と言っても色々あるし対象となるデータによっても
向き不向きがあるので、まずはここら辺りで基本的な知識を身につけて
目的にあった方法をより深く調べるなりすれば良いかと。
ttp://member.nifty.ne.jp/yamazaki/doc/basic_compression.html
ttp://homepage1.nifty.com/snap/room03/c02/comp/comp.html

511 :VisualC++初心者です:04/07/30 00:53
ノートパソコンの方にSDK入ってませんでした><;
初歩的な事聞いてごめんなさい;;

急いでSDKをダウンロードしたんですけど、
インストール途中に変なエラーが出て失敗・・・
なんだかインストールするまでも凄く動作が重くなったりするんです。
こんな事ってあります??

512 :デフォルトの名無しさん:04/07/30 01:42
あります

513 :デフォルトの名無しさん:04/07/30 14:43
VC++で使用出来るグレープシティのスプレッドシートのような
ものはないのでしょうか?


514 :デフォルトの名無しさん:04/07/30 17:41
Excel.Application

515 :デフォルトの名無しさん:04/07/31 20:20
WM_KEYDOWNとWM_CHARを使うプログラムを見ていたのですがWM_KEYDOWNはキー入力全般、WM_CHARは文字入力を伴うキー入力のことだと思うのですが、
それを踏まえてこんなコードを書いたのですが http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1074774948_28/text.txt
jを押したときもhを押したときもメッセージボックスが出てくるのは出はないかと思ったのですがhのみ有効でjは反応はなく、Xは有効なのですがどうしてjが無効なのかがわかりません。
よろしければご指導お願いします。

516 :515:04/07/31 20:23
if(wParam == 'o')の処理をWM_CHARに書けというのは無しで、WM_KEYDOWNで行うにはどうすればよいかをお願いします。


517 :デフォルトの名無しさん:04/07/31 20:55
jに応答するコードを書いてないから。

case WM_CHAR:
if(wParam == 'h')
{
wsprintf(s,"hを入力しました");
MessageBox(hWnd,s,"MsgBox",MB_OK);
}
return 0;
case WM_KEYDOWN:
if(wParam == 'o')
{
wsprintf(s,"oを入力しました");
MessageBox(hWnd,s,"MsgBox",MB_OK);
}
if(wParam == 'X')
{
if((GetKeyState(VK_CONTROL)<0)&&(GetKeyState(VK_SHIFT)<0))
{
PostQuitMessage(0);
}
}
return 0;


518 :515:04/07/31 21:46
jとo間違えました。
oを押しても反応がないのでどうすればよいかお願いします。

519 :デフォルトの名無しさん:04/07/31 23:19
仮想キーコードと
キャラクターコードの違いじゃねーの?

520 :デフォルトの名無しさん:04/08/01 01:48
>>515
A〜Zの仮想キーコードは、'A'〜'Z'の「大文字」のASCIIコードと同じ。

521 :デフォルトの名無しさん:04/08/01 02:39
>>520
ありがとうございました。

522 :デフォルトの名無しさん:04/08/02 14:39
Unixサーバにtelnetでログインしていろいろなコマンドを入力するかわりに
GUI操作により自動でコマンド入力するようなソフトウェアをつくりたいと考えています。

たとえば、接続ボタンを押すとあらかじめ登録されたホストにtelnetログインし、GUIにホームディレクトリの
ファイル一覧を表示し、GUIに設けた検索ボタンを押すと裏でtelnet経由でgrepコマンドを起動して
その結果をまたビジュアルに表示するといったようなものです。

そのためにはまずtelnetを制御する仕組みが必要になりますが、MFC等で簡単にtelnetを扱うための
クラスはありますか?FTP用のクラスはあるみたいですが。
ないとしたらVCではどのような手法でtelnetを実現するのが一般的なのでしょうか?

523 :デフォルトの名無しさん:04/08/02 15:00
>>522
「Socket クラス」で検索すれば良いよ。

524 :522:04/08/02 15:15
>>523
MFCのCSocketクラスというのが見つかりました。
これつかってみようかと思います。ありがとう。

525 :デフォルトの名無しさん:04/08/02 19:16
>>522
TeraTermのマクロでも使えば?

526 :デフォルトの名無しさん:04/08/02 19:49
VC++6.0 なのですが、WizardでMFCのexe(MDI)を作成したところWinMainがありませんでした。
今までWinMain(DllMain)ありきという考えでソフトを組んでいたんですが・・・。
アプリケーションを実行した場合、CWinAppクラスがWinMainを含んでいて(?)、
コンストラクタが最初に動作するという考えで良いのでしょうか?

527 :デフォルトの名無しさん:04/08/02 19:51
たった>>523程度の助言でtelnetクライアントを書き上げるだけの
力があるなら>>522のような質問はしないと思うが・・・


528 :デフォルトの名無しさん:04/08/02 20:00
telnetなんか使わずにssh使えよってツッコミはだれもしないのか?
その方が楽に実装できるし、しかも安全だぞ。

529 :デフォルトの名無しさん:04/08/02 20:05
>>526
MFCはentry関数名が違うだけ

530 :デフォルトの名無しさん:04/08/02 20:06
どっからつっこでいいものやら...


531 :デフォルトの名無しさん:04/08/02 21:17
>>526
WinMainはMFCに内包されとる。
WinMain(_tWinMain)→MFC自体の初期化→アプリケーションクラスのInitInstance()
ソース見てみ。

コンストラクタはWinMainの前。
ウィザードで作られたソースに

CHogeApp theApp;

ってグローバル変数があるだろ?


532 :デフォルトの名無しさん:04/08/02 22:43
>>528は、単に「ssh」と言ってみたかっただけ

533 :デフォルトの名無しさん:04/08/03 07:59
>>532
リモートでコマンド実行したいんだから、
rsh とか ssh の Xsh 系でいいんじゃないの?
telnet 使おうとする方がどうかしてる。


534 :デフォルトの名無しさん:04/08/03 08:51
あー確かに。
>532を改めて読むと、単にrshでlsとかgrepとかすればいいだけな気がする。

535 :522:04/08/03 09:52
今回は、sshやrコマンド、X-window等は使えないローカルな環境をターゲットしています。
rコマンドは使えるようにしてもいいかとは考えていますが、対話型コマンド等考えると
telnetのほうが無難かなとも思っています。
また、コマンドラインベースの操作にGUIをかぶせることが目的で、webにしようかとも
考えたのですが、ホスト側でhttpdを動かすことに抵抗があり止めました。
もちろん自分が使うのであればteratermでログインして作業したほうが楽です。

例としてはls等をあげていましたが本当は特殊なシステムを保守するためのコマンド郡になります。

Unixでのプログラム経験はありますがGUIやWindowのプログラム経験がゼロでしたので
取っ掛かりとして先の質問させていただきました。いろいろアドバイスいただきありがとうございます。

536 :デフォルトの名無しさん:04/08/03 11:41
Visual C++ .NETで、.Net Framework コンポーネントのDatagridを
ツールボックスから使用しようとしても、項目はあるのですが、
灰色で使用不可能になっています。
どうしたら使用できるのかどなたか教えていただけませんか?

537 :デフォルトの名無しさん:04/08/03 12:10
VisualC++.NETで、ボタンをクリックするとラベル内の数字が1ずつ増加するプログラムを作りたいんですけど、
どう書けば良いんでしょうか…

538 :デフォルトの名無しさん:04/08/03 12:13
>>537
そんなソフト作って何になるの?

539 :デフォルトの名無しさん:04/08/03 12:23
>>537
ボタンをクリックするとラベル内の数字が1ずつ増加するプログラムを作る。

540 :デフォルトの名無しさん:04/08/03 12:41
>>537
CString ss;
int i;
CWnd *wLabel = GetDlgItem(IDC_Label);
wLabel->GetWindowText(ss);
i = atoi((const char*)ss);
ss.Format("%d",++i);
wLabel->SetWindowText(ss);

541 :デフォルトの名無しさん:04/08/03 19:38
_beginthreadを使ってプログラムを作ろうと思ったのですが、
process.hをインクルードしたのに
error C2065: '_beginthread' : 定義されていない識別子です。
と出てしまいます。
ネットで調べてみると、どうやらマルチスレッド用のライブラリをリンクする必要があるそうなので、
そのようにしたいのですが、そのやり方がわかりません。
ネットで検索すると、VC6での変更のしかたは
[プロジェクトの設定]-[C/C++]-[コード生成]-[使用するライブラリ]-[マルチスレッドライブラリ]
を変更するらしいことは分かったのですが、
残念ながら手元にあるのが
Microsoft Visual C++ .NET
なので、(VC7にあたるんでしょうか?)どこを変更したらいいのかわかりません。
分かる方がいらっしゃったら教えていただけませんでしょうか。

542 :デフォルトの名無しさん:04/08/03 21:44
プロジェクトのプロパティを開いて
C/C++ -> コード生成 -> ランタイムライブラリ

543 :541:04/08/03 22:42
>>542
レスありがとうございました。
解決しました。助かりました。
本当にありがとうございました。

544 :デフォルトの名無しさん:04/08/04 00:37
>>537
ラベルに適当なIDを振ってそれにコントロール変数をCString型で割り当て。
ボタンのメッセージハンドラ内で、
{
Label.Format("%d", atoi(Label) + 1);
UpdateData(TRUE);
}

545 :544:04/08/04 00:38
>>544
TRUEじゃねぇ、FALSEだ。

546 :デフォルトの名無しさん:04/08/04 04:56
VC++6.0でwin32applicationで標準的なhelloworldアプリケーションを選択するとはじめからいくつかのファイルが用意されていますが、
プロジェクト名.cppファイルを参考書でそのままコンパイルしろとあったのですが、fatal error C1083: プリコンパイル済ヘッダー ファイルがオープンできません。'Debug/hhh.pch': No such file or directoryとでてコンパイルができません。
何もいじったわけでもないのになぜなんでしょう。。?

547 :デフォルトの名無しさん:04/08/04 06:08
>>546
書き込みできないディレクトリ上で開発しようとしてないか?
そうでないならプロジェクトの設定がおかしくないか?

548 :デフォルトの名無しさん:04/08/04 09:32
Visual Studio 2003 .NET つこうとるんだけど,
そのエディタで,「閲覧モード」みたいなのはないの?
適当なキィを割りあてて切り換えながら使えると便利なんだけど…


549 :デフォルトの名無しさん:04/08/04 10:48
SetThreadLocaleなどを使って
CreateDialog等で既に表示されているリソースを
破棄しないで表示言語の切り替えをするには
どうすれば良いでしょうか?

550 :デフォルトの名無しさん:04/08/04 15:02
>>548
マルチポスト

551 :デフォルトの名無しさん:04/08/04 17:16
>>548
便利だと自分で思ったなら作れば良いのに・・・。

552 :デフォルトの名無しさん:04/08/04 17:34
おまい、ばかだろ?
そんなに簡単に作れるなら、書き込みするかよ

553 :デフォルトの名無しさん:04/08/04 17:51
閲覧モードが具体的にどういうものか
詳しく書いていなくてあまりにも
アバウト過ぎる。
質問者が馬鹿なだけ

554 :デフォルトの名無しさん:04/08/04 19:07
そもそも「閲覧モード」ってなんだよ?オレ用語使った上に本人まで「みたいなの」を
付けてるんじゃ通じないよ・・・。

555 :デフォルトの名無しさん:04/08/04 19:11
VCでActiveXコントロールを作りたいのですが
イマイチよくわかりません。
ウィンザードを使ってOCXを作成し、Web上から実行して
自分で定義した関数やプロパティ値を操作したいのですが
関数やプロパティ値の定義方法がわかりません・・・。
CABファイルを作成してインストールさせるまではできたのですが・・・。

556 :デフォルトの名無しさん:04/08/04 19:35
ActiveXの作り方はMSDNのチュートリアルに出ているぽ。
それと、この本にも作り方と使い方が出ているぽ。
http://pc5.2ch.net/test/read.cgi/tech/1065699484/l50

557 :デフォルトの名無しさん:04/08/04 21:25
このスレで質問する事じゃないかもしれないけど、
a = ( USHRT )65535*( USHRT )65535;
これって、左辺はその型の限界値を超えたら型に合わせて
値が変わるけど、右辺の評価ってどうなるんでしょうか

試してみたんですけど
a=(unsigned short)65535*4%60;
a=0となり、自分が意図した通り(1)の結果が得られました。
1:(型関係無しー>262140%60=0)(USHRT_MAX=65535)
2:(型関係有りー>65532%60=12)
。。。あれ?キャストしたのに、何故?

あと、(UINT)a <= (USHRT)65535*7 の場合
65535*7をUSHRT型に変換して(=65529)から、値の比較なのか
65535*7のまま(=458745)、値の比較なのか
どちらなんでしょう
お願いします。

558 :557:04/08/04 21:31
追記スマソ
(UINT) a <= (USHRT)65535*7って書いたんですけど
(UINT) a <= 65535*7(キャスト無し)の場合はどこまでが限界なんでしょうか。
質問多くて、すみません。


559 :557:04/08/04 21:48
馬鹿でした。数字にキャストしてどうするって感じですね。。。
今までの質問撤回します。駄文の山が。ゴメンなさい。
もう一回考え直してみます。。。

560 :デフォルトの名無しさん:04/08/05 08:59
>>555
ウィザードで作成したら、クラスウィザードを開きます。
オートメーションタブでプロパティとメゾット、ActiveXタブでイベントの追加が行えます。(クラス名は 〜Ctrlを選択)

561 :デフォルトの名無しさん:04/08/05 16:01
visualC++をつかっていたら
それまでコンパイルできていたのに、
「vcecho!エラー」とでてコンパイルができません。
調べてもこのエラーが何なのかわかりません。
どうすればよいかわかる方教えてください。

562 :デフォルトの名無しさん:04/08/05 17:16
>>561
可能な限り最小限に隠蔽されたあなたの拙い情報を以ってエラーを特定してくれというのですか?
このスレの残りすべてを使って、考えられる限りの解決パターンをリストアップしろというのですか?
あなたは何様ですか?

まずは質問の仕方を、人に自分の状況を正しく伝える術を学ぶべきだと思います。


563 :デフォルトの名無しさん:04/08/05 18:59
>560
ありがとうございました。

564 :デフォルトの名無しさん:04/08/06 10:53
>>561
そのエラーメッセージでググってもなんもでてこねぇぇええーー!!ww
はっきり言って俺はそんなエラーが出たこと無いのでわからんけど、
vcechoエラー以外になんの情報もないメッセージボックスが出てたりするという状況なら、
vcechoエラー を、 vc echo エラー とわけて解釈して、VCのエラー…ということになるのかな?
VC自体の必要なファイルが壊れたとかそういうことの可能性もあるとか…。
VCを再インスコしたら直るとか…。知らんけど。適当言ってるだけだけど。

565 :デフォルトの名無しさん:04/08/06 12:48
PRJ0002 の可能性が。
http://64.233.167.104/search?q=cache:QEN0NK8RsE0J:softwareforums.intel.com/ids/board/message%3Fboard.id%3D16%26message.id%3D153+vcecho&hl=ja&ie=UTF-8&inlang=ja

しかし、PRJ なんちゅーエラーコードがあるとは思わなかった

566 :デフォルトの名無しさん:04/08/06 16:32
外部信号をA/D変換ボードを介して、取り込んだデータをもとに
波形をプロットするものを作っています。
波形をプロットするところまでは出来ました。
メニューから「サンプリング」をクリックすると、波形がプロットされるように
しているのですが、2度、3度とサンプリングをすると、前の波形が残ったまま
波形が書き込まれていきます。
WM_CREATE内で初期状態をどこかに保存し、「サンプリング」をクリックすると
波形をプロットする前に、その保存したものを呼び出せば良いのではと考えたの
ですが、その方法が分かりません…。

実現方法をご教授おながいします。

567 :デフォルトの名無しさん:04/08/06 16:57
>>566
バックグラウンドカラーで四角を書き込むとかではダメなん?破線が引いてあるとか?

568 :566:04/08/06 17:18
>>567
破線が引いてあります。画像です。
ttp://www.2chgoods.net/01234/img-box/img20040806171806.gif

569 :デフォルトの名無しさん:04/08/06 17:26
メモリ上にデバイスコンテキスト(DC)を作成し、(関数名忘れた・・・。)
CreateBitmapでビットマップを作成しメモリ上のDCに関連付けし、
BitBltで初期状態のビットマップ情報をメモリ上のDCにコピーしておけば良い。
初期状態に戻すにはメモリ上のDCから対象DCにコピーし直せばOK。

570 :デフォルトの名無しさん:04/08/06 17:38
Visual C++ 6.0 と Visual C++ .NET ではどちらが最新版なのでしょうか?

それともまったく別物なので比較できないのでしょうか?

違いがいまいちわからないので教えてください

571 :デフォルトの名無しさん:04/08/06 17:40
>>570
6.0はXP発売以前のver
こう言えばわかるだろ?

572 :デフォルトの名無しさん:04/08/06 18:00
>>571
XP?

573 :570:04/08/06 18:03
では最新版は .NET なのでしょうか?

今、6.0をもっているので買い換えようか迷ってました。

574 :デフォルトの名無しさん:04/08/06 18:42
>>573
.NET 2003

575 :デフォルトの名無しさん:04/08/06 18:46
>>573
もうちょっと待つと .NET 2005 が出る

576 :570:04/08/06 19:07
>>575
じゃあ、もう少し待ってみます。

今日、電気屋に行ったら .NET 2003 アカデミパック が5000円くらいで売っていたので買おうかどうか迷ってました。
買わなくて正解でしたね。

577 :デフォルトの名無しさん:04/08/06 19:17
>>575
何ヶ月待たせるつもりだw
5000円パッケージがすぐに出るとも限らんし。

578 :デフォルトの名無しさん:04/08/06 19:19
>>576
それ、アカデミックじゃなくてtheSpokeのやつ。
それに.NET 2005が出ても、theSpokeがすぐ出るとは限らんから、
そんなに安く買えないと思うぞ。



579 :デフォルトの名無しさん:04/08/06 19:32
ちなみに2005でWin32GUIアプリを作るには、
かなり遠回りしないと出来ないようだ。
http://gamdev.org/w/?%5B%5BVisualStudio2005ExpressBeta%A4%C7Win32%A5%A2%A5%D7%A5%EA%A4%F2%A5%D3%A5%EB%A5%C9%A4%B9%A4%EB%CA%FD%CB%A1%5D%5D

MS的には、やっぱり ,NET を使って欲しいらしい。


580 :デフォルトの名無しさん:04/08/06 19:40
.NET 2005 じゃなくて .NET は製品名から取れたんじゃなかったっけ

581 :デフォルトの名無しさん:04/08/06 19:42
>>579
ヘッダとライブラリの設定してるだけじゃん

582 :デフォルトの名無しさん:04/08/06 19:45
>>579
そうか?そこの設定ファイルの書き換えってのが何なのか知らんけど、
PSDKにPath通すのは今まで通りじゃ?

583 :デフォルトの名無しさん:04/08/06 20:45
>>576
学生だったら卒業する前にとっとと買うのが正解

584 :デフォルトの名無しさん:04/08/06 21:19
>>583
Academicならok
theSpokeはNG

585 :デフォルトの名無しさん:04/08/06 21:20
>>584
theSpokeも卒業後OKだが?
Academicを売りつけようとする奴に騙されてないかあんた?

586 :デフォルトの名無しさん:04/08/06 23:13
.NET対応にするならC♯使った方が楽そうなんだけど、
敢えてC++にする意味ってあるんですか?

587 :デフォルトの名無しさん:04/08/06 23:17
そんなもん自分の好きにしろ

588 :570:04/08/07 00:36
なんか、すぐに安くなるわけじゃなさそうですね。

皆さんが言うように theSpoke ってやつでした。
正規のものと何が違うのですか?

589 :デフォルトの名無しさん:04/08/07 00:40
君のは初めから全然技術的な質問じゃないんだけど、自分で調べる気は無いんかい。

590 :570:04/08/07 00:45
>>589
一応、調べてから発言しているつもりですが
Spokeとか聞いたことがなかったものですので、なにか購入に当たってのデメリットとか教えてほしいです。

デメリットについてはSpokeのページを見ても普通書いてませんし

591 :デフォルトの名無しさん:04/08/07 00:48
>>590
Pro版を10マソ付近で購入した人から妬まれます

592 :デフォルトの名無しさん:04/08/07 00:55
絶対調べてないって・・・
質問内容も正規との違い→購入に当たってのデメリットに変わってるし・・・
VC++6.0とVC++.NETのどっちが新しいかなんてすぐ出てくるだろ・・・

593 :570:04/08/07 00:58
>>592
すいません。よく調べてなかったです。
デメリットもマイクロソフトのページに出てました。

594 :デフォルトの名無しさん:04/08/07 01:09
C++とC#の環境だけほしい場合は、Visual Studioを買うより
それぞれを個別に買ったほうが値段、内容ともに得なの?

vbとかvjはいらんので。


595 :デフォルトの名無しさん:04/08/07 01:10
>>594
>>592

596 :デフォルトの名無しさん:04/08/07 01:49
>>594
お前が学生かで変わるよ。

597 :デフォルトの名無しさん:04/08/07 02:55
>>570
とりあえず VC++ Toolkit 2003 落としとけば?

598 :570:04/08/07 03:23
>>597
今は VC++6.0 を使っているので、.NETに買いかえるべきか迷ってました。
Spoke版の.NETも安いし悪くなさそうなので(登録とかの手続きがいらないけど)
買ってみようと思います。
それともVC++6.0持っているなら.NETは5000円を出す価値がないとか?

599 :デフォルトの名無しさん:04/08/07 05:55
今や全ての製品から.NETという名は除外されたね

600 :デフォルトの名無しさん:04/08/07 06:57
>>598
それはお前がVC++6.0を使いこなしているかどうかによる。

601 :デフォルトの名無しさん:04/08/07 07:15
>>598
Spokeはプロダクトキー発行の手続きが必要だしょ。(2週間ぐらいかかるっけ?)

俺、theSpoke買ったけど、VC++6.0使い続けてるなぁ。
PCが低スペックすぎで、.NETが重いからだけど…

602 :デフォルトの名無しさん:04/08/07 08:02
俺は4日できました

603 :デフォルトの名無しさん:04/08/07 09:07
>>601
プロダクトキーがくるまでのために体験版DVD(キー不要)も同梱。

604 :デフォルトの名無しさん:04/08/07 10:06
>>598
VC6を既によく使って配布する程度のソフトをいくつか書いてるなら
.net買っても移行しづらいと思う。使い勝手もかなり変わるし、それで
使いやすくなったって言う人は少ないし。現状の開発環境に特に
具体的な不満点があって、.net版の導入で解決されることが見えてる
なら買えば良いけど、そうでないなら買ってもVC6を使い続けることに
なると思う。

605 :デフォルトの名無しさん:04/08/07 10:13
>>604
このレビューは参考になりましたか?
◎はい ○いいえ


606 :570:04/08/07 11:01
>>604
参考になりました。
VC++6.0を使いこなしているとは思っていませんが、
マシンスペックに自信あるわけじゃないので買い替えは見送ります。(動きが遅くなるのは問題ですね)
今もっているVC++6.0は学校で配っていたやつでMSDNがないのでMSDNあるやつを買おうと思ってましたが、(タブ表示も魅力できでしたが)
重くなるのであれば、買わないほうがよさそうです。

607 :デフォルトの名無しさん:04/08/07 11:14
>>606
VC6から.NET2003にしたけど、正直泣きながら使っている。
暗黙の仕様変更が多いため、使い勝手はかなり悪い。
コンパイラこそVC7だが、
UIは事実上VC V6.0→.NET V1.0でバージョンダウン。

608 :デフォルトの名無しさん:04/08/07 11:42
個人的にはビルドミニバーが無くなったのが
悲しい

609 :デフォルトの名無しさん:04/08/07 12:11
>>606
タブはWndTabsと言うアドインを入れれば使えるようになるよ。

でも漏れはなるべく.net使うけどな。
色々向上してるところも有るからねぇ。

610 :デフォルトの名無しさん:04/08/07 15:22
仕事でVisualStudio6も.netも使っているのでいくつか列挙。

デバッグ環境はサブウィンドウの管理が変わったお蔭で随分良くなったと思う。
クラスウィザードほど手軽ではないし、その辺りの使い勝手は大きく変わった。
ソースへの埋め込み方が小汚くなった。
resource.hをテキストエディタで編集しても問題が出にくいようだ。
ダイアログエディタが落ちにくくなったかも。
言語的にはテンプレートでの警告がなくなったりansi準拠度が増している。
MFCが吐くソースに関しては一長一短。
ヘルプに関してはVC6のそれがバージョンダウンだと思っているのでましに戻った。

611 :デフォルトの名無しさん:04/08/07 16:58
ドトネットのヘルプは重過ぎる。


612 :デフォルトの名無しさん:04/08/07 18:56
昔のVC++って、パッケージが5kgくらいだった。まじで物理的に重かったが、ありがたみがあった。


613 :デフォルトの名無しさん:04/08/07 21:39
C/C++言語・関数リファレンスやら
Win32APIリファレンスまで入ってたからね。
印刷物で。

買った〜!って言う感じは持てたよね。

614 :デフォルトの名無しさん:04/08/07 21:54
今はポースターが沢山入っているよね
ヤラレターっていう感じ

615 :デフォルトの名無しさん:04/08/07 22:11
昔の MSC ってフロッピー1枚で動いてた。
まじで速度的に重かったが、よく我慢して使ってたと思う。


616 :デフォルトの名無しさん:04/08/07 22:12
大容量だ

617 :デフォルトの名無しさん:04/08/07 22:27
>>614
あのポスターって使ってる人いるの?
価値あるものなの?

618 :デフォルトの名無しさん:04/08/07 23:03
さあ。。
pdfでダウンできるからな。

619 :C初心者です:04/08/08 13:06
visualC++でウィンドウを作成をするにはどうすれば良いのでしょうか?

620 :デフォルトの名無しさん:04/08/08 13:08
CerateWindow

621 :デフォルトの名無しさん:04/08/08 13:12
>>620
C++Builder見たいにいろんなコンポーネントをポトペタと貼り付けたいのですが
CerateWindow で作成したWindowにどうやればOK?

622 :デフォルトの名無しさん:04/08/08 13:21
>>621
VC++でポトペタがやりたかったら .NETでWindows フォーム アプリケーションをつくれ。

623 :デフォルトの名無しさん:04/08/08 14:03
>>621
ダイアログベースでやれば?

624 :デフォルトの名無しさん:04/08/08 18:20
>>621
CFormView使えば?

625 :デフォルトの名無しさん:04/08/08 19:53
>>624
コントロールやけに少なくね?

626 :デフォルトの名無しさん:04/08/08 20:14
VC++はそういうものだ

627 :デフォルトの名無しさん:04/08/09 11:32
しょうもない質問なんだけどさ、msvcr71.dllはアプリケーションと一緒に
再配布してexeと同じ場所におけって書いてあるけど、その配布する元の
ファイルはどのディレクトリからもってくればいいの?

パッチとか当ててファイルが更新された場合なんかに、常に最新のバージョン
であることが保証されている場所とかある?
システムディレクトリにあるやつでいいのかな?

628 :デフォルトの名無しさん:04/08/09 17:18
VC.NET 2003 って、
struct Impl;
Impl* pimpl;

struct Impl* pimpl;
って書けますか?

629 :デフォルトの名無しさん:04/08/09 18:37
>>628
自分で試せば?

630 :デフォルトの名無しさん:04/08/09 22:21
分からなければCDに入っているのをコピーすれば良い。
dllの最新バージョンはVSのサービスパックで提供されるからそれを使えば良い。


631 :デフォルトの名無しさん:04/08/10 07:38
>>629
試せねーから、聞いてんじゃんよ
馬鹿かおめー

632 :デフォルトの名無しさん:04/08/10 08:22
無償でできるんだから試せや。

633 :デフォルトの名無しさん:04/08/10 09:15
VC++.NETってなんでこんなにビルドが遅いんですか?
もしかしてIDE自体が.NETフレームワークで動いてんですか?

634 :デフォルトの名無しさん:04/08/10 09:17
>>633
IDEがビルドするかよ(w

635 :デフォルトの名無しさん:04/08/10 09:31
これここで聞けばいいですか?


VC++netで
checklistboxを使いたいんですけどツールボックスの中にはありませんよね
これをデザインで視覚的に操作しながら編集するには?


636 :デフォルトの名無しさん:04/08/11 00:33
コンソールアプリで純粋にCをやりたいんだけど、
どうもC++でコンパイルしてやがるんです。
助けて下さい。


637 :デフォルトの名無しさん:04/08/11 00:41
拡張子を.cに

638 :デフォルトの名無しさん:04/08/11 00:46
>>637
助かりました

639 :デフォルトの名無しさん:04/08/11 18:47
インラインアセンブラ内でカスタムリソースを読みたいんですが、
どうもうまくいきません。

if(h_res1 = LoadResource(NULL,FindResource(NULL,TEXT("#100"),TEXT("BINARY"))))
table1 = (LPSTR)LockResource(h_res1);

で、バイナリを読み込んで

MOV EBX,dword ptr[table1+EDI+1000h]

で、バイナリデータの一部を読みたいんですが、例外が出て止まってしまいます。
ちなみにEDI+1000hはオフセット値なんですが、何がいけないんでしょうか?

というかこういう質問はアセンブラスレ行きですかね・・・

640 :デフォルトの名無しさん:04/08/11 20:29
サービスを登録するプログラムを作ってるんですが、いきなりつまづきました。

VS6.0で、ダイアログベースで作ってるのですが、
SC_HANDLE scm;
とすると、SC_HANDLEが定義されていない、と言われます。

以下、OpenSCManager、CreateService等の関数も定義されていないと言われます。
windows.hはインクルードしているのですが、???です。

誰かわかる方、教えてくださいm(__)m

641 :デフォルトの名無しさん:04/08/11 21:12
>>640
ヘルプ嫁

642 :デフォルトの名無しさん:04/08/11 21:25
>>641

あはは
ヘルプに書いてありました。
ごめんなさい。ありがとう。

643 :デフォルトの名無しさん:04/08/11 21:55
Visual C++ Toolkit 2003は、
exeをつくるとき、ファイル名の前に何て入れるんですか??




644 :デフォルトの名無しさん:04/08/11 21:56
>>643
コンパイルの事か?
clだぞ。

645 :デフォルトの名無しさん:04/08/11 22:04
>>644さん
さっそく試してみます。


646 :デフォルトの名無しさん:04/08/11 23:02
Alt + F8の自動インデントが効かなくなったのですが、
どこに設定があるのでしょうか?

647 :デフォルトの名無しさん:04/08/12 05:40
Visual C++のテキスタエディタの編集「元に戻す」が
急に効かなくなった。
パラメータヒントもたまに使えなくなるし、
なんかバグ(?)多い。
難しいよ、ややこしいよ、VisualC++...
パラメータヒントの方はヘルプに載ってたから、.ncbファイル削除
ですぐ直るけど、「元に戻す」の方は不明です。
どなたかお願いします。

648 :デフォルトの名無しさん:04/08/12 05:53
>>646
ツール->オプション内、テキストエディタ->すべての言語->タブ
で設定。
(インデントって書いてあるけど自動インデントの事だと思う)
初心者なので、間違ってたらゴメソ。

649 :デフォルトの名無しさん:04/08/12 06:01
>>647
バグへの対処方法がヘルプに載ってるっていうのもすごいな

650 :デフォルトの名無しさん:04/08/13 09:04
Windows2000(SP4)にVisualC++(6.0,SP5)を入れてみたのですが
インテリセンスが有効になっていると C++ソースを打ち込むとき
10〜15秒ぐらい VisualStudio の応答が無くなります。
(.ncbファイルを消してみるというのは試してみました)

ステートメント入力候補のオプションのチェックを全部外せば
避けられるのですが、こんなものでしょうか。
またはVisualStudio.Net 200xに乗り換えろというMicrosoftの
主張でしょうか。

651 :デフォルトの名無しさん:04/08/13 09:10
うちにも同じ環境があるけど、べつに遅くないでつ。

652 :デフォルトの名無しさん(650) :04/08/13 10:20
問題にしている人が皆無なので日ごろの行いのせいである
可能性も否定できませんが、なんとなく分かってきました。

#include で '<'を打ち込んだ時になにやらネットワーク上に
ブロードキャストを送って応答を待っている感じです。
ちなみにEnterprise版です。

653 :デフォルトの名無しさん :04/08/13 11:53
すみませんです、参照していた別プロジェクトの.ncbファイルに今は無い
別のマシンのファイルが記述されており それを見に行っていた模様です。

654 :デフォルトの名無しさん:04/08/13 20:39
メッセージマップを使うとエラーがでるのですが、原因がわかりません…。
具体的には、

#include<afxwin.h>
//----------ウィンドウクラス-----------------------
class CAddressWnd : public CFrameWnd {
public :
CAddressWnd();
void OnPaint();
DECLARE_MASSAGE_MAP()
};
BEGIN_MESSAGE_MAP(CAddressWnd,CFrameWnd) //この行
ON_WM_PAINT()
END_MESSAGE_MAP()

のところで'GetMessageMap' : このメンバ関数は、'CAddressWnd' クラス内で宣言されていません。
となります。本の付録のサンプルプログラムをコンパイルした際にも同じエラーがでてしまいます。
ヘッダーファイルが壊れているのでしょうか?

655 :デフォルトの名無しさん:04/08/13 21:54
>>654
×DECLARE_MASSAGE_MAP()
○DECLARE_MESSAGE_MAP()

656 :デフォルトの名無しさん:04/08/13 22:42
マッサージマップワロタ

657 :デフォルトの名無しさん:04/08/13 22:56
せめてコンパイルが通るようマッサージマップの後ろにセミコロンぐらい付けといてくれないと。
ネタとしてはまだまだだな。

658 :デフォルトの名無しさん:04/08/14 02:57
>>657 真性


659 :デフォルトの名無しさん:04/08/14 03:32
>>657は真性包茎だな。

660 :デフォルトの名無しさん:04/08/14 10:07
マクロでイベント処理をする方法がわからないのですが
以下にやり方が書いてあるのですが、自分でやってみても上手く動きません。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vsintro7/html/vxtskmacrosenvironmenteventsprojectitem.asp
わかる方やり方を教えて下さい。

今の自分のソースです(全然わかってないと思うので見当違いの事をやってると思います)
Public Module EnvironmentEvents

+Automatically generated code, do not modify
,↑デフォルトで生成される隠れてる部分です
<System.ContextStaticAttribute()> Public WithEvents CommandEvents As EnvDTE.CommandEvents
' This procedure handles DTEEvents.OnMacrosRuntimeReset.
Public Sub DTEEvents_OnMacrosRuntimeReset() Handles DTEEvents.OnMacrosRuntimeReset
CommandEvents = DTE.Events.CommandEvents
End Sub

Public Sub CommandEvents_AfterExecute(ByVal Guid As String, ByVal ID As Integer, ByVal CustomIn As Object, ByVal CustomOut As Object) Handles CommandEvents.AfterExecute
MsgBox(DTE.Commands.Item(Guid, ID).Name)
End Sub

End Module


661 :デフォルトの名無しさん:04/08/14 11:55
描画の質問です。
InvalidateRect(&rect, TRUE)で
無効矩形だけじゃなくて、クライアント領域の背景も消されてしまう
わけですが、
矩形内のみ消去する方法って何か有ります?

662 :デフォルトの名無しさん:04/08/14 17:02
InvalidateRect(&rect, FALSE)

663 :デフォルトの名無しさん:04/08/14 18:06
>>662
よく考えてみたら矩形内に上書きすればいいだけで
消去する必要なんてなかった。FALSEでよかったんですね。

664 :デフォルトの名無しさん:04/08/14 18:07
新しいワークスペース プロジェクトwin32appをつくって、
たとえばCDにあるサンプル.cpp リソース.rc リソースヘッダ.h
をvc++6にadd files to the projectで入れる。
それらはprojectに追加されるけど、PATHがCDで、ファイルが読取専用になるでしょ?
そうでなくて そのワークスペースにPATHも変えて読取専用をはずして取り込む方法はありますか?
(先にそれらのファイルを移動させて、読み取り専用をはずすのはめんどくさい)


665 :デフォルトの名無しさん:04/08/14 18:23
ない

666 :デフォルトの名無しさん:04/08/14 18:30
え 、まじで?

667 :デフォルトの名無しさん:04/08/14 18:41
マジで。


668 :デフォルトの名無しさん:04/08/14 18:44
かなしけど信じる。ずっと面倒だと思ってたが、やり方知らんだけだとおもってた。
ありがと

669 :デフォルトの名無しさん:04/08/14 21:31
>>668
必要ならマクロなりバッチファイルなり好きな手段で自動化すればよかろう。

670 :デフォルトの名無しさん:04/08/14 23:25
そんなに面倒か?コピーして、属性を変えるだけだが…
まさか、ファイル1つずつ属性変更、なんてやってるわけでもあるまい。

671 :デフォルトの名無しさん:04/08/15 15:49
VC++6.0でwin32アプリケーションで標準的なhellowordを選択するといくつかコードが用意されますが、
ソースファイルのプロジェクト名.cpp(おそらくメインのソースファイル)のコードをビルドメニューの中のコンパイルを選択しコンパイルを実行すると
fatal error C1083: プリコンパイル済ヘッダー ファイルがオープンできません。'Debug/tamesi.pch': No such file or directory となり、コンパイルすることができません。
ビルドメニューのビルドを選択するとビルドはできるのですがなぜかコンパイルのみ上のエラーが出てしまいます。
もしかしてあらかじめ用意されているファイルはコンパイルする必要がないのでしょうか?
なぜこのような問題がおきるのか教えていただけると助かります。


672 :デフォルトの名無しさん:04/08/15 20:46
先に日本語の勉強をした方が良いと思います。

673 :デフォルトの名無しさん:04/08/15 21:11
>>671
StdAfx.hをプリコンパイルしたファイルが作られてないだけ。


674 :デフォルトの名無しさん:04/08/15 21:58
VC2003のISO C99の対応状況はどうなんでしょう?

675 :デフォルトの名無しさん:04/08/15 23:22
>>673
アリガトゴザイマシタ

676 :デフォルトの名無しさん:04/08/16 00:15
>>674
VC++.NETは対応してないみたい。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vccore/html/vcrefwhatsnewlibrariesvisualc70.asp

開発チームがコメントしてるみたいだけど、英語だし、誰かやくして。
http://msdn.microsoft.com/chats/vstudio/vstudio_022703.asp


677 :デフォルトの名無しさん:04/08/16 02:36
先日 Visual Studio.net を買ったんですけど、
#include <iostream.h>
とやったら、そんなヘッダないって言われました。
いろいろやったところ、

#include <iostream> をインクルードして
std::cout<<"Hello World"<<std::endl;
ならうまくいくことがわかりました。

iostream.hはなくなったのでしょうか?
また、std::coutではなく、coutだけで記述できないのでしょうか?
どうしてこのようなことになるのでしょうか?

C++は初めてやったのでよくわかりません。
私の持っている入門書にはこのようには書いていませんでした。
教えてください。

678 :デフォルトの名無しさん:04/08/16 02:51
持ってる入門書を投げ捨ててちゃんとした本買え。

679 :デフォルトの名無しさん:04/08/16 11:16
using namespace std;

680 :デフォルトの名無しさん:04/08/16 14:26
>678
禿げ上がってしまったほど同意。
>679のような文の説明もないような入門書とやらには
金を出す価値はない。

681 :デフォルトの名無しさん:04/08/16 15:05
>>677
何年前の入門書だよ。
21世紀以降の本でそれだったら泣くぞ。

682 :デフォルトの名無しさん:04/08/16 16:22
>>677
本の名前教えてほしい。

683 :デフォルトの名無しさん:04/08/16 17:17
SDKで、エクスプローラ風フォルダリストを作りたいんですが、どうしたらいいんでしょうか?
環境 Win2K
VC++ 7.1

684 :デフォルトの名無しさん :04/08/16 18:19
環境を記号のように書いて質問する人の神経
書けば文句ないんだろ的思考

685 :デフォルトの名無しさん:04/08/16 18:25
>>683
DrawText や LoadImage や BltBit等を組み合わせればできると思います。

686 :デフォルトの名無しさん:04/08/16 18:39
>>684
ゴミレス(゚听)イラネ

687 :デフォルトの名無しさん:04/08/16 19:11
最新のWTLにそのものずばりなサンプルが入ってるんだけどな。
WTLをSDKで読み替えられるならそれで十分だと思うけどな。

688 :デフォルトの名無しさん:04/08/16 23:58
>>683
IShellBrowser

689 :デフォルトの名無しさん:04/08/17 00:16
long型整数は0Lですよね
double,float,char型の整数はどうかくのですか?

690 :デフォルトの名無しさん:04/08/17 00:23
0.0 //double
0.0F //float
charは計算式中ではintに格上げされるので、指定は無い

691 :デフォルトの名無しさん:04/08/17 00:26
>>690
Thanx

692 :デフォルトの名無しさん:04/08/17 00:39
doubleやfloatは整数じゃねえだろとチンコ突っ込んどく。

693 :デフォルトの名無しさん:04/08/17 00:42
>>692
引っ込め。この酔っぱらいが。

694 :デフォルトの名無しさん:04/08/17 00:42
メインのウィンドウハンドルってグローバルにすると
何かまずいんでしたっけ?
いちいち関数に引数つけるの面倒くさいので
グローバルにしちゃいたいんですが、それって間違ってますか?

695 :デフォルトの名無しさん:04/08/17 00:44
間違ってる

696 :デフォルトの名無しさん:04/08/17 00:45
>>694
http://www.cmagazine.jp/src/kinjite/c/variable.html#index10

697 :694:04/08/17 00:58
>>695>>696
即行でこういうところが出てくるのがすごい。どうもです。

698 :683:04/08/17 02:24
レスありがとうございます。

IShellBrowser を調べてやってます。
日本語サイトはあんまりないみたいですけど。

WTLはやったことないですけど、
インストールはしてるので、ちょっと見てみます。

>685
これはちょっときついです。

699 :デフォルトの名無しさん:04/08/17 04:15
>>696
そこの「ポインタと配列を混同している」の説明って
まるごと間違ってない?

700 :デフォルトの名無しさん:04/08/17 04:18
>>699
??
詳しく

701 :デフォルトの名無しさん:04/08/17 04:34
>>699
Cスレ言って教えてもらってこい

702 :デフォルトの名無しさん:04/08/17 04:41
リテラルの書き換えは未定義とかそういう話か?

703 :デフォルトの名無しさん:04/08/17 06:59
素直にconst付けりゃいいじゃん


704 :デフォルトの名無しさん:04/08/17 08:24
何を的外れな

705 :デフォルトの名無しさん:04/08/17 11:28
現在、WIN上でリニアPCMの音ファイルをμ-lawの音ファイルに
変換するプログラムを作成しています。

色々ネットを調べたのですが、音ファイルに関する知識があまりなく
よく分からない状態です。

自分なりにソースを作ってみたのですが、うまく動きません。
分かる方がいらっしゃいましたら、コメントいただけませんでしょうか。
お願いします。

仕様としては、変換元ファイル名と変換後ファイル名を入れれば
勝手にコンバートされるという形を取っています。

ソースとサンプル音ファイル(16kHz-16bit PCM)は
http://aix.exrise.jp/cnv/wave_cnv.zip
こちらにあります。

よろしくお願いします

706 :デフォルトの名無しさん:04/08/17 13:19
うまく動かないとは、どういう状態だ?
エラーが出るのか?プログラム自体が起動しないのか?
音が出ないのか?表示がずれるのか?ハングアップするのか?
変換が出来ないのか?オランダ人が出てくるのか?

707 :705:04/08/17 13:28
オランダ人です

708 :>>705です。:04/08/17 13:42
>>706さん レスありがとうございます。。。
オランダ人は出てきませんです。

音声ファイルは吐き出されますが、音がまともに出てきません。
CoolEditという音声をいじくるソフトで聞くとかろうじて聞ける
音声ファイルができます。

ちなみにCoolEditでも変換できるのですが
私が作ったプログラムからできる音とは
音質に大きな隔たりがあります。。。

709 :デフォルトの名無しさん:04/08/17 15:28
>>708
よく分からんままレスしますが,
ALSAのaplayで再生させると,
変換前のファイル(sample.wav)は
Signed 16 bit Little Endian, Rate 16000 Hz, Mono
と表示されるのに,変換後のファイル(imo.wav)は
Unsigned 8 bit, Rate 8000 Hz, Mono
と出ます.これはこれでいいんの?
wavのヘッダを間違ってるとかないですか?


710 :709:04/08/17 16:12
>>708
変換後のファイルはimo.wavとなってるけどwavじゃないのかな.
u-lawってよく分かんないままレスしてるので,
変なこと書いてたらすみません.

soxがu-law変換できますのでソースを参考にされたらどうでしょうか?
http://sox.sourceforge.net/


711 :>>708:04/08/17 16:23
>>709さん レスどうもです

実際の変換前の音声ファイルはヘッダ無しのものに対して行おうと
思っていますので、ヘッダに関しては何も考えていませんでした。
(データ部分だけに対して変換を行おうとしていました)

>Unsigned 8 bit, Rate 8000 Hz, Mono

となっているとは思いませんでした。
元ファイルは必ずPCM16kHz-16bitととし
変換後はulaw16kHz-8bitとしたいのですが・・・

私の作成したソースではどこをどういじればいいのか
わからないのですが・・・

分かる方がいらっしゃいましたら
ご教授お願いします

712 :デフォルトの名無しさん:04/08/17 17:17
>>711
ttp://www.kk.iij4u.or.jp/~kondo/wave/
.wavフォーマットを知らずにコンバータを作ろうとしていたとか?

713 :>>708:04/08/17 17:41
>>712
ttp://www.kk.iij4u.or.jp/~kondo/wave/
ここのお世話にはなっておりますです。

一応、今回作りたいプログラムの入力音声ファイルは
ヘッダ無し音声ファイルを使用するので、ヘッダに関する
処理をいれませんでした。。。 

714 :709:04/08/17 18:14
>>713
ヘッダの読み込みで既に失敗しているのでは?
sampling frequencyは65408でいいんですか?


715 :デフォルトの名無しさん:04/08/17 18:15
Jpegを読み込んで、表示させるにはどうしたらいいの?
MFCとかはなしでおねがい。


716 :709:04/08/17 18:33
>>713
とりあえずこの辺り.一応こちらではこれで動きました.
int get_word( FILE *fp ) {
signed short result (0);
char *last ((char *)(&result + 1));
for (char *p ((char *)&result); p != last; ++ p) {
int a (fgetc(fp));
if (a == EOF)
return GET_WORD_EOF;
*p = (char)a;
}
return result;
}
int get_ulong_word( FILE *fp, unsigned long *x ) {
char *last ((char *)(x + 1));
for (char *p ((char *)x); p != last; ++ p) {
int a (fgetc(fp));
if (a == EOF)
return -1;
*p = (char)a;
}
return 0;
}


717 :デフォルトの名無しさん:04/08/17 18:37
>>715
GDI+

718 :便乗質問:04/08/17 18:55
GDI+って、どのOSから対応してるの?

719 :デフォルトの名無しさん:04/08/17 19:00
XP

720 :>>708:04/08/17 20:35
>>716さん ありがとうございます。
無事に動きました。。。
(簡単そうに見えて実はすごく難しいのですが・・・)

もう一つ質問させてもらえますでしょうか?

私が作ったプログラムは16kHz-8bitでファイルを作っていますが
これを8khz-8bitにする場合にはどうすればいいのでしょうか?
すみませんが、こちらの方もわかりましたら教えていただけます
でしょうか?

たぶんサンプルプログラムの
#define BIAS 0x84
#define CLIP 32635
を変更すると思うのですが・・・


721 :デフォルトの名無しさん:04/08/17 20:52
>>718
98/NT4.0/Me/2000/XP

722 :デフォルトの名無しさん:04/08/17 21:15
すいません、質問お願いします。

MSFlexGridを使ってスケジュールのプログラムを作り、
今度はそれを印刷するプログラムを作りたいのですが、
MSFlexGridの内容をそのまま印刷する方法というのはあるのでしょうか?

もしくは罫線を使って、Excelのような表を作って印刷したいのですが
何か方法はありますでしょうか?
教えてください。

環境はWindows98にVisual C++6.0です。

723 :デフォルトの名無しさん:04/08/17 21:28
えっと、質問なんですがAPIってCであらかじめ用意されている関数を使ってマイクロソフトがつくった関数なんですか?

724 :デフォルトの名無しさん:04/08/17 21:55
ぶうぁっはっはっは・・・・

725 :709:04/08/17 23:12
>>720
それってu-lawにエンコードする前に普通にダウンサンプリングするってのではダメなのですか?

学習が目的でないのならsoxを使ってみるといいですよ.(Winはパイプはまともなのかな?)
私はWinでは試してないですけど,ダウンサンプリングはできますし,
u-lawエンコードもあるようですよ.


726 :>>708:04/08/18 00:01
>>725さん

エンコードする前にダウンサンプリングをするというアイデアも
考えましたが、やはり同時に処理をしたいというのも考えています。
(多分、ダウンサンプリングしてからエンコードするという
2段処理をしなければいけないのだとは思うのですが・・・・)

やはり最初、SOXやSCMPX、wingogoなどを使用しようとしましたが、
それでは自分の役に立たないと思ったので自分でやろうと調べていました。
winでsoxを使用するのは可能です。しかし使用するのに
ちょっと制約が付きましたが・・・
SOXのソースを見てみましたが、レベルが高すぎて・・・(笑)

727 :709:04/08/18 00:30
>>726
708さんの言う「同時」の意味は同じプロセス内でということのようなので,
それだったら,
sox -t wav sample.wav -t raw -U -r 8000 -c 1 imo.raw
でできます.(imoはwavではないのでsuffixはrawとしました.)
この場合はsample.wavを入力にして,
8000Hzモノラルでu-lawエンコードしたデータがimo.rawとして保存されます.

ファイルのコンバートが目的じゃないのなら,soxは標準入出力を使えますので,
標準入出力使ってプロセス間通信すればいいのではないでしょうか?
例えば,上の例を改編して標準入力からデータを受け取って変換したものを標準出力に出力させるには
sox -t wav - -t raw -U -r 8000 -c 1 -
とすれば良いです.
(ただし,私はwinでのプロセス間通信には暗いので,これ以上は説明できません.誰かフォローを.)

wave_cnvにダウンサンプリング機能を入れるのであれば,
読み込んでから,linear2ulaw(a)でエンコードする間にバッファがいるでしょうね.
ダウンサンプリングの解説はググれば結構ヒットしますよ.


728 :>>708:04/08/18 00:41
>>727さん アドバイスありがとうございます。
wave_cnvにダウンサンプリング機能を入れてみたいので
明日、ダウンサンプリングに関して調べてみます。
どうも遅くまでありがとうございました。

729 :デフォルトの名無しさん:04/08/18 01:34
>>723
OSがアプリケーションのために用意している関数郡とでも解釈しとけ。
関数といってもCに限らずVBとかDelphiとかからでも呼べる。
Cの標準ライブラリなんかも最終的にAPIを呼んでいる。

730 :デフォルトの名無しさん:04/08/18 02:45
OSが用意してるの?
へぇ〜、知らなかったow

731 :デフォルトの名無しさん:04/08/18 03:14
>>729
APIをどうやって使うかっていう質問じゃなくて、
中身がどう作られているかっていう話じゃないの?

732 :デフォルトの名無しさん:04/08/18 04:30
>>723

標準関数 : Cコンパイラに最初から定義されている関数
    → 作成者 : Cコンパイラ開発者
    → 有効 : C専用

Win32API : Windowsがプログラムを動かすために作られた関数
    → 作成者 : Microsoft
    → 有効 : Windows専用


てことで両者は無関係で別物

733 :デフォルトの名無しさん:04/08/18 05:01
>>732
それはもしかしてギャグで言っているのか?(AA省略)

734 :デフォルトの名無しさん:04/08/18 11:03
>>733
あれ?
オレも同じような解釈してたんだけど違うの?

735 :デフォルトの名無しさん:04/08/18 11:59
>>732
Win32API は「Windowsがプログラムを動かすために作られた関数」ではなく
「Windows上でタスク(アプリケーション)を動作させるのに便利な関数」で、ユーザでも作成できるでしょ?

736 :デフォルトの名無しさん:04/08/18 12:33
>>735
Win32APIはWindowsにはじめから用意された関数群だけのことを言うから自分で作ったものはWin32APIとは言えない。
逆に標準ライブラリ関数はISO/ANSIの規格を満たしていれば良いのだから自分で作った物でも標準ライブラリ関数と言えるけど。

737 :735:04/08/18 12:54
へぇ、今まで自分が作ったAPI関数もWin32APIなのだと思ってた。

738 :デフォルトの名無しさん:04/08/18 14:17
はじめから用意されたって、それはどうやって作るんですか?


739 :デフォルトの名無しさん:04/08/18 16:48
>>738
そいつはMicrosoftのみぞ知るということじゃなかろうか
Kernel32.dll
User32.dll
Gdi32.dll
Advapi32.dll
Winmm.dll
etc...
全部OSの開発者が作ったものだしね
プログラマーのために提供されたものではあるけれどOSもこれを利用しているくらい低レベル

740 :デフォルトの名無しさん:04/08/18 19:18
CやC++で作ってる場合もあるし、アセンブラ直書きの場合もあるだろう。

741 :デフォルトの名無しさん:04/08/18 20:44
>>738
Microsoftが「これはWin32APIの一部だ」と言えばそれはWin32APIの一部。

742 :.:04/08/19 01:44
Visual C++6でコンパイルされたEXEとDLLを分析して、
コンパイルしたパソコンを特定できるツールはありませんか?

容疑マシンが10台程度なので、C++のプロダクトIDや
CPUシリアルナンバーの一部が逆算できればいいのですが。

743 :デフォルトの名無しさん:04/08/19 01:56
>>742
先輩すまん。
むしゃくしゃしてたので、それ俺が作りました。

744 :デフォルトの名無しさん:04/08/19 05:37
>>742
EXEやDLLにはVCのプロダクトIDやCPUシリアルナンバーなんて入っていないから無理そうな気がする。

745 :デフォルトの名無しさん:04/08/19 05:56
しょぼい質問で恐縮なんですが、エディットボックスのプロパティで
「垂直オートスクロール」にチェックを入れているものの、
何行文字を打ってもスクロールバーが現れません。
確かこのオプションって行数がはみ出ると
勝手にスクロールバーが出てくるやつのはずだったと思うのですが・・・
何か考えられる原因などあったら教えてください。

746 :デフォルトの名無しさん:04/08/19 06:08
>>742
ファイルのオーナー見れば分かるんじゃない?

747 :デフォルトの名無しさん:04/08/19 06:10
>>745
>勝手にスクロールバーが出てくるやつのはずだったと思うのですが・・・

違います。

748 :745:04/08/19 06:20
>>747
違いました!すいません。

749 :デフォルトの名無しさん:04/08/19 17:53
DirectPlayの練習のため、ダイアログベースの簡単なチャットを作ってます。
DPを使うにはウィンドウメッセージのコールバック関数とは別に、
通信の際の色々なメッセージを受けとる専用のコールバック関数を使うのですが、
そこで受け取ったメッセージ(DPN_MSGID)に応じて、
メインダイアログウィンドウに配置したエディットコントロールなどに
文字表示をしたいと考えてます。

そのため、そのコールバックのなかで、SetWindowText関数等で
メインウィンドウ(ダイアログ)のハンドルやエディットコントロールのハンドルを
使いたいのですが、コールバックの引数は自分で定義できないっぽいので
ハンドルを引っ張って来れません。
そこでハンドルをグローバルにしてみたんですが、
このコールバックの中でグローバル変数を弄ると落ちるようなんです。
それがこのコールバック特有のものなのかどうかは、よく分かりません。
また、意味があるのか分かりませんが、文字表示関数を別個作り、
そちらに飛んだ先でグローバル変数を使うようにもしてみたのですが、
やはり場合によってフリーズします。

この表示の部分をどうやって実装したらいいのか分かりません。
引数としてハンドルを持たせることができない以上、
グローバルにするしかないような気がするんですが、
今の所メッセージボックスでしのいでます、、、(これならハンドルを使わないから)
どんな方法があるか教えて頂けませんでしょうか。よろしくお願いします。
ちなみにクラスは使っていません。

750 :デフォルトの名無しさん:04/08/19 18:19
すみません。教えて下さい。
http://www.sist.ac.jp/~suganuma/cpp/3-bu/10-sho/10-sho.htm#e-10-6 −−−ここのサイトで
今C++を勉強しているのですが、クラスのところで、”リスト構造”というクラスがあるんです。
そこの文字列を追加をしていくソースの部分でわからない所があります。
else より下の部分で、
lt1 = lt2;
lt2 = lt2->next;
k = strcmp(dt->st, lt2->st); // 比較
if (k < 0) { // 追加
dt->next = lt2;
lt1->next = dt;
sw = 0;
この部分の動きと言ったらいいんでしょうか?どのようにして何を渡したりしているのかがわかりません。
この部分を解りやすく解説をお願いできないでしょうか?
一応、自分なりに考えたのですが、わかりません。
よろしくお願いします。


751 :デフォルトの名無しさん:04/08/19 18:24
すみません、馬鹿みたいな質問なのですが、どうしても分かりません。
ピクチャボックスのプロパティを見ることが出来ません。
ピクチャボックスをコントロールボックスから貼り付けたのはいいのですが、
ピクチャボックスを選択して右クリック→プロパティとすると、
フォームのプロパティが出てきてしまいます。
どうすればよろしいのでしょうか?

752 :デフォルトの名無しさん:04/08/19 19:32
>>750
dt->stがlt2->st(つまりthis->next->st)よりstrcmpで比較して小さければ、dt->nextにthis->next、this->nextにdtをそれぞれ代入する。
そうでなければどこかに代入するまでwhileでループする。
そのリストはソートされていて、そのソート作業を常に要素の追加時に行っているって具合だろう。
ところで2ヶ所のsw = 0;はどっちもbreak;に書き換え、while (sw > 0)もwhile (1)かfor (;;)に書き換えてswは消滅させた方がいい。

753 :デフォルトの名無しさん:04/08/19 19:35
VC++netです。

ダイアログエディタでpicture controlを貼り付け
変数の追加→ CStatic Image_Panel とやって


CBitmap img;
img.LoadBitmap(filename);
Image_Panel.SetBitmap(img);

このようにしたのですが
イメージファイルを表示するには何が足りないのでしょうか?
それとも全然間違ってる?


754 :750:04/08/19 19:54
752さん、解説ありがとうございます。あの、さらに質問なんですが、たぶん自分がオブジェクトを理解してないからなのかも知れませんが、
dt->next, dtはまったく別ものなんでしょうか?


755 :デフォルトの名無しさん:04/08/19 22:27
>>753
ファイルから読み込みたいならそれだとダメだね。
CBitmap.LoadBitmapに渡す引数はリソースに展開されてる
ビットマップのリソース名かIDなんで。
ファイルから読み出すならLoadImageかOleLoadPictureを
調べてみると良いよ。

756 :デフォルトの名無しさん:04/08/20 01:06
>>750
悪いことは言わん、そんな旧世紀の異物のような書き方をする香具師からC++を学ぶんじゃない。

757 :デフォルトの名無しさん:04/08/20 01:27
>>756
おまいより、ましだとは思うが・・・

758 :デフォルトの名無しさん:04/08/20 01:35
>>757
EffectiveC++に書かれていること位は理解できたか?

759 :デフォルトの名無しさん:04/08/20 01:53
>>758
読んだことありませんが

760 :デフォルトの名無しさん:04/08/20 01:55
なにか?

761 :デフォルトの名無しさん:04/08/20 02:27
どういう所が旧世紀の異物のような書き方なんですか?

762 :デフォルトの名無しさん:04/08/20 02:45
>>熟達者の皆さん
どうか教えてください。僕はjavaしかできない愚か者なんですが,(他スレではjava厨とも呼ばれます)
VC++では,EclipseのようにIDEが認識しているクラスのメンバにはすべて“.”でアクセスできるんですか?
つまり,IDEのエディタ上でオブジェクトの後に“.”を打つとメンバがリスト表示されますか?
↑なんか初心者じみてすいません。例えば↓の感じです。

hogeclass hoge = new hogeclass();
hoge.methodhoge(); ←hogeを打つとメンバがリスト表示

以前使ったLinux用のKdevelop(C++のIDE)ではユーザがヘッダを書いたものに関しては
認識してリストしてくれました。
でも,標準ライブラリのクラスのメンバは認識してリスト表示してくれませんでした。。。
VC++ではどうですか?


763 :デフォルトの名無しさん:04/08/20 03:00
deru.

764 :デフォルトの名無しさん:04/08/20 03:13
>>761
旧世紀の異物(遺物じゃないのか?w)≒Cと捉えると>756の言いたいことが見えてきそうだ。

765 :デフォルトの名無しさん:04/08/20 03:24
>>762
MFC、自作ライブラリ、アプリのクラスを、1つのブラウザ情報で、メンバ表示できてるよ。

766 :デフォルトの名無しさん:04/08/20 03:25
>>764 また自作自演ですか

767 :デフォルトの名無しさん:04/08/20 03:31
windows.h と valarray をインクルードするとエラーが30個くらいでてくるのですが、どうすればいいのでしょうか?

768 :デフォルトの名無しさん:04/08/20 04:00
おまえの質問の仕方だとどうしようもない。

769 :デフォルトの名無しさん:04/08/20 04:43
えっと、VC.NET 2003 で、
#include <windows.h>
#include <valarray>

int
main()
{
    return 0;
}

ってやると、

valarray(314): error C2059: 構文エラー : ')'
valarray(321): error C2143: 構文エラー : ')' が '}' の前にありません。
valarray(321): error C2143: 構文エラー : ';' が '}' の前にありません。
valarray(321): error C2143: 構文エラー : '}' が ')' の前にありません。
valarray(323): error C2146: 構文エラー : ';' が、識別子 '_Ty' の前に必要です。
valarray(332): error C2146: 構文エラー : ';' が、識別子 'valarray' の前に必要です。
valarray(321): error C2238: ';' の前に無効なトークンがあります。
valarray(314): error C2334: ':' の前に予期しないトークンがありました。関数の本体は無視されます
valarray(323): warning C4003: マクロ 'max' に指定された実引数の数が少なすぎます。
valarray(314): warning C4003: マクロ 'min' に指定された実引数の数が少なすぎます。

って、エラーが出てくるんです。

770 :デフォルトの名無しさん:04/08/20 05:11
>769
ネタか?
吊られてあげよう。
http://www.roguewave.com/support/docs/sourcepro/stdlibref/valarray.html

771 :デフォルトの名無しさん:04/08/20 05:51
-DNOMINMAX

772 :デフォルトの名無しさん:04/08/20 06:10
>>770
ネタじゃないです…
>>771
max, min が展開されてそれでエラーになっちゃってるってことですかね…?

773 :デフォルトの名無しさん:04/08/20 06:36
windows.hでmin/maxという名前のマクロが定義されてるから、その所為。

774 :デフォルトの名無しさん:04/08/20 06:44
#define NOMINMAX
で解決出来ました。

マクロが展開されるせいってことはインクルードの順序かえてもどうにか出来ますね。
MS はこんなマクロなんか定義しなきゃいいのに…

775 :デフォルトの名無しさん:04/08/20 07:53
リストボックスをクリックした時マウスが指す項目を取得したいのですが

POINT cr;
GetCursorPos(&cr);
BOOL d;
CPoint pt(cr.x , cr.y); //←もっと簡単な方法がある?
int index=n_list.ItemFromPoint(pt, d);

この処理を何度呼んでもindexには同じ数字しか入りません。
それもクリックした番号とは関係ない(と思う)数字が入っています。

どこがおかしいのでしょうか
ご教授願います。

776 :デフォルトの名無しさん:04/08/20 09:00
スクリーン座標からクライアント座標に変換しないとだめ
CPoint pt;
GetCursorPos(&pt);
n_list.ScreenToClient(&pt);
BOOL d;
int index=n_list.ItemFromPoint(pt, d);

777 :デフォルトの名無しさん:04/08/20 09:43
>>775
そんなややこしいことしないでGetCurSel()で選択アイテムindex取ったら
良いだけなんじゃないの?

778 :デフォルトの名無しさん:04/08/20 09:45
>>777
ばかはひっこんでてねw

779 :775:04/08/20 10:28
なるほどーできましたありがとうございます。

>>777
複数選択リストボックスを使っているからです。


780 :デフォルトの名無しさん:04/08/20 11:08
C++を学ぶにはどこのサイトがいいでしょうか?できれば、わかりやすく事細かく書いてあるサイトが良いのですが・・・。
それと、オブジェクト指向って要するに何なんでしょうか?よく本屋に行って、C++の本を見ると書いてあるんですが・・・。

781 :デフォルトの名無しさん:04/08/20 11:37
VC++.netでActiveXのDataGridコントロールの追加って
どこに行ったんだ??

782 :デフォルトの名無しさん:04/08/20 14:35
>>780
マジ最強。
http://www.google.co.jp/

783 :デフォルトの名無しさん:04/08/20 16:29
複数選択リストボックスを使っているなら
なおさら..

784 :忍玉:04/08/20 16:34
逆にVC++しかやったことないからオブジェクト指向でない言語がどんなものなのかわかりません

785 :デフォルトの名無しさん:04/08/20 16:48
別にVC++はオブジェクト指向でしかソフトを組めないワケではないけどね。

786 :デフォルトの名無しさん:04/08/20 17:11
C++でのプログラミング全てに言えるけどね。

787 :デフォルトの名無しさん:04/08/20 17:45
オブジェクト指向?

788 :デフォルトの名無しさん:04/08/20 18:05
オブジェクト嗜好に走りすぎると却って使えなくなるし

789 :デフォルトの名無しさん:04/08/20 18:46
質問です。
SendMessageで文字列を送って、受け取る方法はありますか?
受け取った側でwParamをcharにキャストしても上手くいきません。

790 :デフォルトの名無しさん:04/08/20 18:49
どーせプロセス境界でもまたいでるんだろ。
WM_COPYDATAでも使っとけ。

791 :マイク ◆yrBrqfF1Ew :04/08/20 18:54
Qtのsignal最高だよな

792 :デフォルトの名無しさん:04/08/20 18:54
>WM_COPYDATA
こんなのあるんですね。ありがとうございました。がんばってみます。

793 :デフォルトの名無しさん:04/08/21 01:30
SendMessageとPostMessageって
どう違うの?

794 :デフォルトの名無しさん:04/08/21 01:30
http://www.google.co.jp/search?hl=ja&ie=UTF-8&q=SendMessage+PostMessage&lr=lang_ja

795 :デフォルトの名無しさん:04/08/21 04:15
>>789
GlobalAddAtomと任意のメッセージとかもアリ

796 :デフォルトの名無しさん:04/08/21 13:38
VC初心者です。

Win32 API
で、ディレクトリ作成や、ディレクトリの存在チェックって
どうするのですか?



797 :デフォルトの名無しさん:04/08/21 13:43
CreateDirectory
PathFileExists
FindFirstFile & WIN32_FIND_DATA(FILE_ATTRIBUTE_DIRECTORY)

798 :デフォルトの名無しさん:04/08/21 13:46
>>797
ありがとうございます。
早速、やってみます。

799 :デフォルトの名無しさん:04/08/21 16:27
レジストリについて教えてください。
私はずっと、UNIX-C やってたので、レジストリに対する読み書きとかしたことないんだけど、
Windowsだと、よくレジストリの読み書きをすると思うのですが、

Windowsでアプリ固有の情報をレジに作成して、起動時に読み込むようにしたいのですが、
レジストリのどこに書き込むのが一般的なのでしょうか?

800 :デフォルトの名無しさん:04/08/21 17:43
>>799
ユーザーごとに違う設定が必要 → HKCU
PCで固有 → HKLM

じゃないですかねぇ。

801 :799:04/08/21 17:59
>>800
そのなことくらい分かってんだよ、ぼけ

802 :デフォルトの名無しさん:04/08/21 18:15
>>801

>そのなことくらい分かってんだよ、ぼけ

人を装った余計な発言はしないでください。

>>800
ちょっとわからないのが、
HKLMの下のSOFTWARE配下に作ろうと思ってたのですが、
その下のMicrosoft配下に作ってるようなサンプルPGを見かけたので、
一般的なルールがわからないだけに、SOFTWARE配下でもいいのか不安になった次第です。

803 :デフォルトの名無しさん:04/08/21 18:24
>>802
他人のやってるの見て真似れば良いんだよ。レジストリ覗いてみたら実例がそのまま
あるんだし。

HKLM\Software\[vendor : author name]\[software name]\

804 :デフォルトの名無しさん:04/08/21 18:27
>>802
OKです。

一般的には、
(HKCU | HKLM)\Software\会社名\ソフト名\〜
っていう感じにします。

805 :デフォルトの名無しさん:04/08/21 18:28
>>803

どうもです。
Software配下は、ベンダ名になってました。
一般的ルールみたいですね。


806 :デフォルトの名無しさん:04/08/21 20:46
VC++でプリプロセッサだけしたソースファイルを
出力したいんですが、どうしたらいいでしょうか?

807 :デフォルトの名無しさん:04/08/21 22:01
>>806
プロジェクトの設定→C/C++→リスト出力辺り

808 :デフォルトの名無しさん:04/08/22 02:43
コンソールアプリでデバッグライトをprintfしてからreturnして終了しているのですが
これだと一瞬しか表示されないです。そこで最後にgetcharとかしています。
確か終了する前にいったん停止してくれるようVisualStudioに設定するやり方があったと思うのですが
どうやったらよいのでしょう。


809 :デフォルトの名無しさん:04/08/22 02:46
VC++6.0のタブコントロールは、それぞれのタブにコントロールを貼り付ける事は出来ないのですか?
自分で選択中のタブインデックスを取得して、コントロール表示を切り替えるしかないのでしょうか?

810 :デフォルトの名無しさん:04/08/22 02:58
>>809
出来ます
MSDN参照

811 :デフォルトの名無しさん:04/08/22 03:15
>>810
え?そうなんですか?
分かりました。とりあえずヘルプ見てみます。

812 :809:04/08/22 03:29
>>810
いや、やっぱり普通にデザイン画面でそんな事出来そうにないのですが…
第一、どうやってデザイン時にタブを選択したり、デフォルトのタブ数を指定するのでしょう?

自分の頭では、実行時にタブインデックスを取得して、表示コントロールを切り替えるか
コントロールを配置したダイアログを用意して、モードレスダイアログとして表示するくらいしか考え付きません…

宜しければ、MSDNのどの項を参照すれば良いのかご教示下さい。

813 :デフォルトの名無しさん:04/08/22 03:51
>>810
「出来ます」って言い切っているのなら「教示」してやればw

814 :デフォルトの名無しさん:04/08/22 03:52
AppWizardを使ったダイアログベースのアプリで標準のボタンを配置し、
ClassWizardでダブルクリックイベントをマップしても、自動生成された関数が
実行されないのですが、何故なのでしょうか?
何方かわかったら教えてください。

815 :デフォルトの名無しさん:04/08/22 04:39
>>797
なんか微尿に外してるね。
SHCreateDirectoryEx()とPathIsDirectory()の方が使えるかと。

816 :デフォルトの名無しさん:04/08/22 04:43
>>815
焦って書いてたから思い付かなかったしw

817 :デフォルトの名無しさん:04/08/22 09:51
>>814
もっと詳しく。
しかし、何故にダブルクリックに?

818 :デフォルトの名無しさん:04/08/22 10:04
標準ボタンはダブルクリックに反応しないのではなかったか

819 :デフォルトの名無しさん:04/08/22 10:24
>>812
>コントロールを配置したダイアログを用意して、モードレスダイアログとして表示するくらいしか考え付きません…

それでいいんじゃない?
プロパティページみたいに子ダイアログを作っといて、タブ切り替えで表示したり隠したり。

820 :デフォルトの名無しさん:04/08/22 11:50
リストボックスの各項目の左側にアイコンをつけたいのですが、
これを実現するのって、リストビューというやつですか?

列は一つだけなんですが。

821 :デフォルトの名無しさん:04/08/22 11:53
>>812
一度そういうTabCtrlを拡張したクラスを作っておけば、後はほぼポトペタでいけるね。

822 :デフォルトの名無しさん:04/08/22 14:49
↓のようにIMEの入力モードを返す関数を作ってるんですが、
ifの中の書き方が正しくないのか、うまく帰ってきません。
あとIME_CMODEのフラグを組み合わせて指定する必要もあるみたいですが
そういう場合の書き方はどうすればいいんでしょうか。

char* IME::GetInputMode()
{
unsigned long Conversion;
unsigned long Sentence;
ImmGetConversionStatus(m_hImc,&Conversion,&Sentence);

if(Conversion=IME_CMODE_JAPANESE)return "あ";
if(Conversion=IME_CMODE_KATAKANA)return "カ";
}

823 :デフォルトの名無しさん:04/08/22 14:55
>>822
Cの基礎が・・・

if文、ビットフラグ

824 :822:04/08/22 16:55
ありがとうございます。
とりあえず=じゃなくて&にする事は分かったんですけど、
フラグが2個以上同時に成り立ってるときはどうやって書けばいいのか
分からないであります…

825 :デフォルトの名無しさん:04/08/22 17:08
VC++.NET 2002で、デバッガでcharやBYTEなど1バイトの型をウォッチすると、
値が0か-128のどちらかにしか表示されないです。
(実際の値は0x00〜0xFFまでちゃんと保持されてる)
バグ?それともちゃんと表示する方法があるんでしょうか?

826 :デフォルトの名無しさん:04/08/22 17:09
>>824
if( hoge & (フラグA | フラグB))
{
// フラグAとBが同時に成り立った
}


827 :デフォルトの名無しさん:04/08/22 17:15
>>826
違う

828 :デフォルトの名無しさん:04/08/22 17:19
>>824
if(hoge & flag1 && hoge & flag2 …)

829 :デフォルトの名無しさん:04/08/22 17:26
>>827
どこが違うの?

830 :829:04/08/22 17:27
すまん、忘れて。

831 :825:04/08/22 17:33
訂正。
マルチバイト文字の1バイト目?の値を持ってる場合、0か-128と表示されてるような感触。
正しい数値を表示する方法無い?

832 :822:04/08/22 17:54
>>826-803
できた!さんくすこ。

833 :デフォルトの名無しさん:04/08/22 18:04
VCで、Cのライブラリ関数malloc に相当するAPIってあるのでしょうか?

834 :デフォルトの名無しさん:04/08/22 18:14
>>833
VCで、というのはWin32APIでってことか?
HeapAlloc

835 :デフォルトの名無しさん:04/08/22 18:35
malloc使えばいいじゃん

836 :デフォルトの名無しさん:04/08/22 18:38
コーディング作業を一切行わないでプログラムが作れるVC++ってないですか?

837 :デフォルトの名無しさん:04/08/22 18:41
>>835
ウルセーバカ

838 :デフォルトの名無しさん:04/08/22 19:27
>>836
プログラマを雇う
金はかかるが

839 :デフォルトの名無しさん:04/08/22 19:31
サンプルをビルド

840 :デフォルトの名無しさん:04/08/22 19:51
プログラマなんて安いよ
所詮肉体労働者じゃん

時間7,8000円も出せば楽勝だよ

841 :デフォルトの名無しさん:04/08/22 20:16
ココで、僕は何を言うべきですか。

842 :デフォルトの名無しさん:04/08/22 20:41
プログラマが肉体労働だとしたら、
すべての職業が肉体労働になるかと。

大学で教鞭とってる教授も肉体労働になるだろうし、
研究職にしても、結局ほぼ同じ事を繰り返してるという意味では肉体労働。
銀行も証券会社も肉体労働。

843 :デフォルトの名無しさん:04/08/22 20:49
VisualC++を勉強するつもりなんてまったくないんだけどさ、

VC6.0っていうかwin32でGUI部分を設計するときってどんな感じなの?
VBみたいにボタン配置したり出来ないんでしょ?
Javaみたいにawtみたいなものがあるのかな?

844 :デフォルトの名無しさん:04/08/22 20:50
>>842
大学の教授とプログラマとではまるで違うよ…

845 :デフォルトの名無しさん:04/08/22 20:53
>>843
VBとおなじ

846 :デフォルトの名無しさん:04/08/22 20:54
>>844

>大学の教授とプログラマとではまるで違うよ…

知的レベルは全然違うが、どっちも肉体労働w

847 :デフォルトの名無しさん:04/08/22 21:00
>>845
え!?うそ!?
それって.NETアプリだけじゃないの?

848 :デフォルトの名無しさん:04/08/22 21:03
>>847
ダイアログベースなら同じですよ

849 :デフォルトの名無しさん:04/08/22 22:09
なんというか純粋な頭脳労働って、今の社会に存在しないだろ。

俺らがこうやってキーボードをカタカタいわせてコーディングしてることすら
未来人から見れば「何頑張っちゃってるの?こんなの(中略)で一発ジャン」
となる。

VC++スレなので、ここまででやめときます。
というか、どっかいいスレないかな?マ板?

850 :デフォルトの名無しさん:04/08/22 22:19
>>847
確かにダイアログベースなら似たような感じで出来きない事もないけど。
でも、VBと比べるとデザイン時で出来ない事が多い。
要するに、自分でコードをゴリゴリ書いて開発して行くスタイルなので、VBと比べるとかなり面倒だと思いますよ。

まぁ、VB云々以前に、MFCを使うならWin32APIの知識とC++の知識が無いと手も足も出ないような気が…

851 :デフォルトの名無しさん:04/08/22 22:21
>ダイアログベースなら同じですよ
JARO逝ったほうがいい。

852 :デフォルトの名無しさん:04/08/22 22:27
Windowsキー + Eを、押しつづけたら error出て固まった

853 :デフォルトの名無しさん:04/08/22 22:28
>>851
VBと同じだという頭でやると、絶対挫折するわな。

854 :デフォルトの名無しさん:04/08/22 22:30
デザイン"だけなら"同じか。

855 :デフォルトの名無しさん:04/08/22 22:34
>>853
おまいだけ。
言語に不変の部分をきっちりマスターしていれば
VB,VC,BCBもどれも同じじゃん

856 :デフォルトの名無しさん:04/08/22 22:35
>>855
http://pc5.2ch.net/test/read.cgi/tech/1090324689/
そういうことはここに書け。

857 :デフォルトの名無しさん:04/08/22 22:36
>>855
自分が何言ってるか分かってるか?
通して良く読んでみろ

858 :デフォルトの名無しさん:04/08/22 22:40
>>855
完全にロジックが破綻してますなw

859 :デフォルトの名無しさん:04/08/22 22:52
>>855
こういう香具師はどの開発環境もまともに使えてないんだろうな…

860 :デフォルトの名無しさん:04/08/22 23:36
おまえらそんなコトで熱くなるより
>825 >831
これにも回答くれ。

861 :デフォルトの名無しさん:04/08/22 23:41
BCBとPCBは全然違うけどなw

862 :デフォルトの名無しさん:04/08/22 23:43
>>860
unsigned char

863 :デフォルトの名無しさん:04/08/22 23:58
>>862
unsigned char = BYTE
ダメ

(WORD)((BYTE)val)なんつー回りくどいことやってウォッチ登録するしかないのでしょうか?

864 :デフォルトの名無しさん:04/08/23 00:03
>>848,850
なるほど。サンクス!

865 :デフォルトの名無しさん:04/08/23 00:15
俺はVBってモンを全く触った事が無いんだがコントロールの配置とか
制御がダイアログエディタ+クラスウィザード+MFCより楽なん?

866 :デフォルトの名無しさん:04/08/23 00:17
コントロールの配置:同じ
制御:VBの方が楽

867 :デフォルトの名無しさん:04/08/23 00:20
>>863
unsigned char(BYTE)で-128なんて表示される様なVC++.NET 2002なんて
窓から捨ててしまえ!


868 :デフォルトの名無しさん:04/08/23 00:31
>>865
VBの方が視覚的に色々と設定出来る分、コーディング量が少なくてすむ。
VBのライブラリ?は、完全にAPIを隠蔽している感じなので、VC++(MFC)みたいにAPIの知識が乏しくても十分使える。

と、書くと なんか良い事尽くめに聞こえるけど
結局、システムの奥深い所をプログラミングするとなると
VBでもAPIを駆使する事になるので、凝った物を作るのならVC++を使った方が楽だと思う。

869 :デフォルトの名無しさん:04/08/23 00:34
char a[10];
strcpy(a,"まんこ");
で配列aの内容を見る場合のようなことを言ってるの?

それならウォッチタブで名前の所に
a,c
と入れる

MSDNの「ウォッチ変数の文字書式指定」を見て下さいです。


870 :デフォルトの名無しさん:04/08/23 00:44
今、ふと思ったんだけど、VBでリスト構造みたいな物を作る時ってどうやるの?
もしかして、それは無理??

871 :デフォルトの名無しさん:04/08/23 00:53
リスト構造みたいな物
->リスト構造のような物

872 :デフォルトの名無しさん:04/08/23 01:06
>>870
VBは良く知らんが昔のBasicは変数のアドレスを求める関数と
アドレス先の値を得る関数があった。
似たようなのがVBにも用意されてるんじゃない?

873 :デフォルトの名無しさん:04/08/23 01:25
>>869
見れました!感謝

874 :デフォルトの名無しさん:04/08/23 01:37
>>872
なるほど、そういう関数があるんでしょうね。>VB
というか、完全にスレ違いスマソ…

875 :デフォルトの名無しさん:04/08/23 02:58
>>868
要するにこういう事だろ。

VBの場合は直にVBから入っていけるが
VCの場合は C→C++→Win32API→MFC

という段階が必要な訳で明らかにVBよりは敷居が高いわな。

876 :デフォルトの名無しさん:04/08/23 03:13
どうでもいいよそんな役に立たない話。

877 :デフォルトの名無しさん:04/08/23 03:17
そこでBCBですよ!

と言おうと思ったけどマネージドでやるなら
もう十分なほどのRAD環境だよ

878 :デフォルトの名無しさん:04/08/23 03:45
>>877
でも、ネイティブが吐けるM$製BCB系ツールが欲しいのが本音。

879 :デフォルトの名無しさん:04/08/23 05:49
>>878
胴衣。MSが全身全霊を傾けて、詐欺や脅迫までして.netを宣伝したのに、結局ユーザーはついてこなかった。WinFXもどうなる事やら。

880 :デフォルトの名無しさん:04/08/23 05:52
それは漏れがついていくから大丈夫

881 :デフォルトの名無しさん:04/08/23 05:58
.netは後から入れる必要があったが、WinFXはLonghornに付いてくるのでついていくかどうかは問題にならない。
Windows95を買えばWin32になったのと同じ。

882 :デフォルトの名無しさん:04/08/23 06:27
Longhornはいつでまつか?

883 :デフォルトの名無しさん:04/08/23 09:43
質問です
VC++.netでスタティックライブラリを作っているんですが、
STLを使おうとするとエラーが出ます。具体的には、
#include <lisit>
using namespace std;
list<int> test;
とすると
error C2871: 'std' : この名前を持つ名前空間は存在しません。
error C2501: 'list' : 識別名を宣言するのに、型が指定されていません。
と出ます。なにかSTLを使うために特別な記述が必要なのでしょうか?

884 :デフォルトの名無しさん:04/08/23 09:47
>>883
>#include <lisit>

885 :デフォルトの名無しさん:04/08/23 13:19
C→C++→MFC→Win32API
orz

886 :デフォルトの名無しさん:04/08/23 13:35
>>885
俺はこうだ
C→C++→MFC→Win32API→MFC

暇があったらソース読んでみれば?

887 :デフォルトの名無しさん:04/08/23 14:14
ブレークポイントでブレークさせ、ステップ実行しているとVisualStudio毎応答なし
になることありませんか?このときタスクマネージャすら反応しないというような。
とくにメモリダンプ窓を表示させてたりaxレジスタとかをウオッチ表示させてたりすると。

VisualC++6.0 SP6@WinXP SP2


888 :デフォルトの名無しさん:04/08/23 14:25
XPのSP2なんて出ていたっけ?
SP1にしておけば?
http://support.microsoft.com/default.aspx?scid=kb;ja;418661&Product=vcJPN

889 :デフォルトの名無しさん:04/08/23 14:42
>>887
VC7にしろということだろうw

890 :デフォルトの名無しさん:04/08/23 15:26
VC7でもステップ実行してるとたまに固まるけどな

891 :デフォルトの名無しさん:04/08/23 15:41
実行時に、あるファイルのコピー・削除・移動をするには
どのようにすれば良いのですか?

892 :デフォルトの名無しさん:04/08/23 16:08
>>891
remove()とかrename()とか

893 :デフォルトの名無しさん:04/08/23 16:23
>>892
ありがとうございます

894 :デフォルトの名無しさん:04/08/23 16:52
>>891
ごみ箱行きならSHFileOperation

895 :891:04/08/23 17:48
ゴミ箱行きもありがたく使わせてもらいました!


896 :デフォルトの名無しさん:04/08/23 20:15
俺は近々ごみ箱行き...
orz

897 :デフォルトの名無しさん:04/08/23 20:22
ブレークポイント貼っても止まらないで進んでしまうんですが、
なにかあるんでしょうか?
ちがうプロジェクト(DLL作成)では止まるのですが。

VisualC++4.0 WinXP SP1
MFCAppWizardダイヤログです

898 :デフォルトの名無しさん:04/08/23 20:59
単純にブレークまで行ってない
・・・んなわけないか

899 :デフォルトの名無しさん:04/08/23 21:21
>>887
スレッドとかタイマーとか頻繁に動かしてたりしない?
まあでもXPはなんだか止まりやすいな。2000にしと毛。

900 :デフォルトの名無しさん:04/08/23 21:35
>>899
うん。スレッド内部でブレークしてる。しかもそのスレッドからまたスレッドを作ったり。


901 :デフォルトの名無しさん:04/08/23 21:40
>>897
ソースコードとバイナリイメージがずれることがある。
この場合、ブレーク張った箇所は実際には存在してなかったりしてスルーしてるように見えることも。
リビルドしてみた?


902 :897:04/08/23 22:28
>>901
リビルドもしてみたんですけど・・・

最初からプロジェクト作り直したほうがよさそうですかね

903 :デフォルトの名無しさん:04/08/23 22:36
当方、ただ今Susieプラグインを使ってソフトを作っております。
MFC上で作っているのですが、デバイスコンテキストを絡めて使うとどうしてもうまくいきません。
BitbltもAPI(つまりハンドルを指定して表示させる)の方を使うとうまく行くのですが、CDC::Bitbltを使うとだめです。現在のソースは…

spi_getpicture(tmp,0,0,&pHBbkInfo,&h_bkbm,NULL,0);

pBmpInfo = (BITMAPINFO *)LocalLock(pHBbkInfo);
hBm = (LPBYTE)LocalLock(h_bkbm);


CDC* dc = GetDC();
CDC MemDC;
CBitmap MemBitmap;
CBitmap* poldBmp;
HBITMAP myDIB;

MemDC.CreateCompatibleDC(dc);

myDIB = ::CreateDIBitmap(MemDC.GetSafeHdc(),
             &pBmpInfo->bmiHeader,CBM_INIT,
             hBm,pBmpInfo,DIB_RGB_COLORS);
MemBitmap.FromHandle(myDIB);
poldBmp = MemDC.SelectObject(&MemBitmap);

dc->BitBlt(0,0,pBmpInfo->bmiHeader.biWidth,
           pBmpInfo->bmiHeader.biHeight,&MemDC,0,0,SRCCOPY);


MemDC.SelectObject(poldBmp);

こんな感じです。これでなぜうまくいかないのかがさっぱり…どなたかご指導を…

904 :デフォルトの名無しさん:04/08/23 23:05
>>902
作ってるのはDLLとそれを使うMFCベースダイアログアプリ?


905 :デフォルトの名無しさん:04/08/23 23:08
VBスレで、そんなのVBで作るのは、やめとけ
といわれたので、ちょっとVC++スレに着てみました。

ちょっと質問なんですが
例えばチャットソフトを作ったとして、Pluginみたいな感じで
お絵かき機能とか追加してみたいんだけど、やっぱ、そういうのって無謀でしょうか?

よくPluginっていうと、DLLとかで、対応ファイルが増える
とか、そういう感じだと思うんだけど、機能まるごとの追加ができたらいいな、と。


906 :903:04/08/23 23:09
すいません、自己解決しました。
お騒がせしましたm(__)m

907 :903,906:04/08/23 23:37
すいません、やはりどうしても気になるので質問させて下さい。
先ほど自己解決したとカキコしましたが、先に示したソースの問題点は

MemBitmap.FromHandle(myDIB);

でした。これを
MemBitmap.Attach(myDIB);

とすることで解決しました。
しかしなぜFromHandleでは駄目なのかが今ひとつわかりません。
MSDNを見る限りむしろFromHandleを使う方が妥当とさえ思えます。両者の違いはどのへんにあるのでしょうか?

908 :デフォルトの名無しさん:04/08/23 23:43
>>905
できないことは無いけど、最初に想定した範囲のことしか
DLLにやらせられないと思う。
たとえばDLLでお絵かき機能を付けるとすると、マウスでの入力(標準的なのだとMessageか)や
絵の表示先(オーナーウィンドウのハンドル)などをDLL側に通知、またはDLL側でそれらを
取得できないといけないでしょ。

絵だけじゃなく本当にいろんなことをプラグインでできるようにするには、
DLLとのインターフェースを相当考えないといけないでしょう。

909 :デフォルトの名無しさん:04/08/23 23:51
VC6のウィンドウの並びで、
○□□□
○□□□
△△△△

○□□□
○□□□
○△△△
にしたいのですが、できるならやり方を教えてください。
マークは、○がワークスペース、□がコード書き場、△がエラー表示域です。

910 :デフォルトの名無しさん:04/08/23 23:51
>>907
FromHandleはstaticなメンバ関数なので
MemBitmap.FromHandle(myDIB);
はMemBitmapに対する操作ではない。

FromHandleは新しい一時オブジェクトを作り、ハンドルを結び付けて返す。
一時オブジェクトに結び付けられたハンドルは自動的に解放されないので
自分で後始末する必要がある。

911 :デフォルトの名無しさん:04/08/23 23:53
>>907
あと、今度解決方法を書かずに去ろうとしたら後ろの穴を犯す。

912 :デフォルトの名無しさん:04/08/24 00:21
>>908
なるほど、やっぱり厳しいんですね〜
どもども、ありがとうございました

913 :デフォルトの名無しさん:04/08/24 00:56
>>909
それが可能かどうかは知らんが
みんなワークスペースウィンドウとかドッキングさせていつも使ってんの?
自分は、ワークスペースは非ドッキングで、右下の方に置いてる。
で、普段は常に非表示で必要な時だけ表示させて使ってるんだが。

個人的にコードが画面いっぱいに表示されてないと気に食わないんだよねぇ。

914 :デフォルトの名無しさん:04/08/24 00:57
>>911
むしろ犯して欲しい。

915 :デフォルトの名無しさん:04/08/24 01:13
Alt + Shift + Enter でいいじゃん

916 :909:04/08/24 01:38
>>913
ありがとうございます。
そういう事ができるのは知りませんでした。やってみます。

今までは、VCをフルスクリーンにしないで左側を縮めて、
空いた位置に、フォルダウィンドウの細くしたのを置いて代用していました。

>個人的にコードが画面いっぱいに表示されてないと気に食わないんだよねぇ。
自分もそうでしたが、あると、ダブルクリック一つでファイルを開けて便利で。

917 :デフォルトの名無しさん:04/08/24 04:59
>>911 どうぞ。
or2

918 :デフォルトの名無しさん:04/08/24 12:26
自分は最近はこんな感じに落ち着いている
ディスプレーがせまいからこれが現在ではベスト
△△△△
□□□○
□□□○
□□□○

919 :デフォルトの名無しさん:04/08/24 14:13
>>917
良い尻してますね

920 :デフォルトの名無しさん:04/08/24 17:45
orつ


921 :デフォルトの名無しさん:04/08/24 18:10
(:D)~~~~~~|)__


922 :デフォルトの名無しさん:04/08/24 20:30
お邪魔します。
WAVEファイルを使って音を鳴らしたいのですが、
c:\sdk\include\dsound.h(305) : error C2146: 構文エラー : ';' が、識別子 'dwReserved1' の前に必要です。
c:\sdk\include\dsound.h(305) : error C2501: 'DWORD_PTR' : 識別名を宣言するのに、型が指定されていません。
c:\sdk\include\dsound.h(305) : error C2501: 'dwReserved1' : 識別名を宣言するのに、型が指定されていません。
c:\sdk\include\dsound.h(306) : error C2146: 構文エラー : ';' が、識別子 'dwReserved2' の前に必要です。
c:\sdk\include\dsound.h(306) : error C2501: 'DWORD_PTR' : 識別名を宣言するのに、型が指定されていません。
c:\sdk\include\dsound.h(306) : error C2501: 'dwReserved2' : 識別名を宣言するのに、型が指定されていません。
というエラーが出てしまってコンパイルできません。
dsound.h に問題があるようなんですけど、どうすればいいのか全然分かりません・・・
どなたか解決法を教えていただけませんでしょうか? どうかよろしくお願いします。

923 :デフォルトの名無しさん:04/08/24 20:34
DWORD_PTRって型が何処にも宣言されてないんじゃない?

924 :デフォルトの名無しさん:04/08/24 20:43
どのように宣言すればよいのでしょうか?
すいません、初心者なので全然分からないんです・・・(汗

925 :デフォルトの名無しさん:04/08/24 20:45
typedef DWORD* DWORD_PTR;

926 :デフォルトの名無しさん:04/08/24 20:51
これの絡みかな?読んでみ?

ttp://www.doblog.com/weblog/myblog/17039/381620#381620

927 :デフォルトの名無しさん:04/08/24 20:51
>>925は嫌がらせ

928 :デフォルトの名無しさん:04/08/24 20:54
>>922
DSOUND.Hの前にMMREG.Hをincludeする必要があるが、読ませてる?


929 :デフォルトの名無しさん:04/08/24 20:55
>>927
テヘッ

930 :デフォルトの名無しさん:04/08/24 20:56
返信ありがとうございます。
エラーが出た dsound.h 内に入れたのですが、なぜか反映されずに同じエラーが出てしまいます。
どの位置で宣言するのが正しいのでしょうか?
お手数かけて申し訳ないです(汗

931 :デフォルトの名無しさん:04/08/24 20:58
あ、違うんですね・・・(汗
>>925
見てみます。
>>926

932 :デフォルトの名無しさん:04/08/24 21:01
サーバーが混雑していて今見れないようです(汗
もう少ししてから見てみますね。
>>926
ちょっと調べます。
>>928

933 :デフォルトの名無しさん:04/08/24 21:02
ちょっと重いだけだろ
すぐ見れる

934 :デフォルトの名無しさん:04/08/24 21:05
VBで作成したTest.dllというActiveXDllの、strResult=TestM(strA,strB)という関数
をVCから呼出すプログラムを作ったのですが、うまくいきません。
まだ勉強をはじめたばかりで全然ダメだと思いますが、どこが悪いのかご教授願えな
いでしょうか?
どうかお願い致します。

#include <stdio.h>
#import "test.dll" // タイプライブラリ

using namespace TestM;

int main(void)
{
_TestM_Cls *pClass1;

if(SUCCEEDED(::CoInitialize(NULL)))
{
{
_Class1Ptr pClass1(__uuidof(TestM_Cls));

935 :デフォルトの名無しさん:04/08/24 21:08
あああ! 正しくこれです(汗
書いてある通りにやってみます。
皆さんありがとうございました(多謝

936 :デフォルトの名無しさん:04/08/24 21:12

 

937 :デフォルトの名無しさん:04/08/24 21:13


938 :デフォルトの名無しさん:04/08/24 21:20
すみません。VC++2003の、パスの設定がうまくいきません。
ここで質問してもいいですか?


939 :デフォルトの名無しさん:04/08/24 21:22
ツール→オプション→プロジェクト→VC++ ディレクトリ

940 :938:04/08/24 21:36
ありがとうございました

941 :デフォルトの名無しさん:04/08/24 22:02
すいません、先ほどお世話になった者なのですが、
「DirectX9.0cをVisualC++6.0使用してコンパイルする場合、PlatformSDKが必須」
という事なのでPlatformSDKを検索したのですが・・・
いまいちPlatformSDKとは何か、が分かりません(汗
SDKの集合体の事を指しているのでしょうか・・・?
どなたか詳しい方いらっしゃったら教えてください。お願いします。

942 :デフォルトの名無しさん:04/08/24 22:14
>>941
とりあえずググってみろや

943 :デフォルトの名無しさん:04/08/24 22:21
検索はGoogleで一通りしたのですが、分からなかったので・・・(汗
PlatformSDKの内のどれかが必要、ということなのでしょうか・・・
もうちょっと調べてみます・・・

944 :デフォルトの名無しさん:04/08/24 22:22
>>943
いいからググれって

945 :デフォルトの名無しさん:04/08/24 22:24
PlatformSDKはWindowsのAPIのライブラリ集です。時々アップデート
されているので、Visual C++には収録されてないAPIもあります。
ヘッダとかdllとかたくさん付いてます。
DirectXとかMedia Playerみたいなものは独立したSDKとして公開されてます。
つまり、「DirectX9.0cをVisualC++6.0使用してコンパイルする場合、PlatformSDKが必須」
ということは、PlatformSDKに含まれているライブラリを使うからDirectXのSDKの他に
Platform SDKもインストールせよ、ということでしょう。
Platform SDKそのものは
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
から入手できます。Core SDKというのが基本的なものなので
まずはこれをインストールしましょう。
尚、インストールはIE以外のブラウザから行なうのは大変なので
IEを使って下さい。
以上の説明で間違っていたら責任は950が取ります。

946 :デフォルトの名無しさん:04/08/24 22:41
つーかWAV再生したいだけならDX使わなくてもMCIデバイス関係のAPIを
使えば楽なんじゃないかね?

947 :デフォルトの名無しさん:04/08/24 22:42
ネットインストールよりFull Downloadしてからの方がいいと思うよ。

948 :デフォルトの名無しさん:04/08/24 23:16
試しに、winプログラムをコンパイルしてみたんですが、includeファイルが
開けないんです


949 :デフォルトの名無しさん:04/08/24 23:21
ちなみに「システム変数」は、今こんな感じなんです。

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32
\Wbem;C:\Program Files\pcdNavi\bin;C:\Program Files\Fujitsu
\sa\dll;;C:\Program Files\Sonic\MyDVD;;C:\Program Files\WideStudio
\ws\bin;C:\Program Files\WideStudio\ruby\bin;C:\Program Files\WideStudio
\Perl\bin;;C:\Program Files\WideStudio\Python;C:\Program Files\WideStudio\gcc\bin;
c:\Borland\Bcc55\bin;c:\Borland\Bcc55\bin;c:\Borland\Bcc55\bin;D:\Program Files\Microsoft SDK
\Bin\.;D:\Program Files\Microsoft SDK\Bin\WinNT\.SET PATH=D:\Program Files\Microsoft Visual C++ Toolkit 2003
\bin;D:\Program Files\Microsoft SDK\Bin;D:\Program Files\Microsoft SDK\Bin\Win64;%PATH%

950 :デフォルトの名無しさん:04/08/24 23:26
設定をやりだして、まだ、完全にできないでいます


951 :デフォルトの名無しさん:04/08/24 23:29
>>949
やたらと処理系を入れる前に「環境変数の設定方法」から再勉強しましょう。

952 :デフォルトの名無しさん:04/08/25 04:39
あのくだらない質問かもしれませんが
VisualC++のSP1とかSP2とかって入れないと何かマズイ事があるんでしょうか?
また、SPでどの様な事が改善されているのでしょうか?

953 :デフォルトの名無しさん:04/08/25 04:41
非常jにまずい
今すぐ入れろ

954 :デフォルトの名無しさん:04/08/25 05:05
SP6を入れるとProcessor Packが使えなくなるらしい。

955 :952:04/08/25 05:18
はい!今すぐ入れます!!
あわわ…

956 :デフォルトの名無しさん:04/08/25 05:25
>>945のPlatformSDKもいれとけYo!

957 :952:04/08/25 05:32
>>956
レスどうも! PlatformSDKに関しては、以前必要になった事があるのでインストール済みです。
SPもあててないVC++で作ったソフトを公開している自分は逝ってよしですか?

958 :デフォルトの名無しさん:04/08/25 05:59
別に
VC6の時点でたかが知れてるし

959 :デフォルトの名無しさん:04/08/25 09:13
>>958
そういうあなた様は、何をお使いで?w

960 :デフォルトの名無しさん:04/08/25 10:35
F-BASIC386です

961 :デフォルトの名無しさん:04/08/25 14:28
Visual C++ 6.0です。
長くなってしまうので、ソースコードは簡単に書きます。

(i)外部信号を取り込んで、連続的に描画を行いたい。
(ii)取り込みを実行した1固定時間の静止画像を描くことはできた
(iii)取り込み〜描画の一連の命令をループで囲んでも、ループを抜けた状態の静止画像のみ描画される
(iv)ループの繰り返し毎にMessageBoxを出すようにすると、Boxが出る毎にその時の静止画像が描かれる
  つまり、MessageBoxを消していくことで、連続的に描画を行うことができる

(ii)
takein(); //信号取り込み
Draw(); //デバイスコンテキストの初期化+信号の描画
InvalidateRect(hwnd, NULL, FALSE); //WM_PAINTを呼び出す

(iii)
for(i=0; i<10; i++){
 takein(); //信号取り込み
 Draw(); //デバイスコンテキストの初期化+信号の描画
 InvalidateRect(hwnd, NULL, FALSE); //WM_PAINTを呼び出す
}

(iv)
for(i=0; i<10; i++){
 takein(); //信号取り込み
 Draw(); //デバイスコンテキストの初期化+信号の描画
 InvalidateRect(hwnd, NULL, FALSE); //WM_PAINTを呼び出す
 MessageBox(hwnd, "連続描画途中です", "報告", MB_OK);
}

MessageBoxを出すこと無しに、連続的に描画をするにはどうしたらよいのでしょうか?
よろしくお願いします。

962 :デフォルトの名無しさん:04/08/25 14:49
>>961
すまん、最近目が悪いみたいで・・・。

963 :デフォルトの名無しさん:04/08/25 14:54
>>961
面倒だからMessageBox->Sleep(1000)


964 :962:04/08/25 14:56
>>961
takein()関数 がどういうモノかわからないけど、
forループの中に Sleep() 関数を入れてカーネルを回してみるとか?


965 :デフォルトの名無しさん:04/08/25 15:10
質問で
印刷するプログラムで、プリンタの設定でデフォルトで
用紙の向きを横向きに設定するプログラムを作成したのですが
印刷をすると横向きになっていますが途中で印刷内容が切れてしまいます。

ソースを貼りますので、ご教授の方よろしくお願いします。
↓こうしています

void prdlg::Onprint()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
CPrintDialog dlg(FALSE,PD_ALLPAGES,this);
CDC pDC;
HDC hd;
DOCINFO p;
TEXTMETRIC tm;

if(dlg.DoModal() == IDOK)
{
DEVMODE *devmode;
devmode = dlg.GetDevMode();
devmode->dmOrientation = DMORIENT_LANDSCAPE;
devmode->dmFields = DM_ORIENTATION;

hd=dlg.GetPrinterDC();
pDC.CreateDC (dlg.GetDriverName(),dlg.GetDeviceName(),dlg.GetPortName(),devmode);




環境はVC++,Windows98です。
よろしくお願いします。

966 :961:04/08/25 15:17
>>963-964
レスありがとうございます。
しかし、駄目でした。やはりループを抜けた状態の1画像しか描画されませんでした。

なお、以下のような現象が確認されました。
for(;;){
 takein();
 draw1();
 InvalidateRect(hwnd, NULL, FALSE);
 MessageBox( , , );
 draw2();
 InvalidateRect( , , );
}
としてみたところ(draw1, draw2共に連続情報を持つ)、MessageBoxが出るときに
更新される画像はdraw1()で描画されるもののみで、draw2()で描画される画像は、
ループを抜けたあとの1画像のみでした(それまでは描画されない)。

Sleep()関数を用いても、ループを抜けるまでの時間が長くなっただけでした…。

967 :961:04/08/25 15:19
>draw1, draw2共に連続情報を持つ
って意味わかりませんね。
draw1, draw2は共に、takein()関数によって更新された情報を描く関数です。

968 :デフォルトの名無しさん:04/08/25 15:26
ループ中に描画するのではなく、
WM_PAINT で描画するようにしてみる。

969 :デフォルトの名無しさん:04/08/25 15:43
for(;;){
 takein();
 draw();
 InvalidateRect(hwnd, NULL, FALSE);
 UpdateWindow(hwnd);
 Sleep(1000);
}

970 :961:04/08/25 16:30
>>968
う〜ん、駄目でした。

>>969
その方法で出来ました…。
UpdateWindowについて調べてみたところ、「ウィンドウのクライアント領域を更新」
と説明がありました。この関数を使うことで、クライアント領域が更新されて描画さ
れることは納得がいくのですが、このUpdateWindow関数を書かなくても最後の1状態
は描画されていたことに納得がいきません。

どこかで命令文無しにクライアント領域が更新されているのでしょうか?

971 :デフォルトの名無しさん:04/08/25 17:18
>>970
最後の一状態だけ表示されるってのは、
問題の関数を抜けたらメッセージループでWM_PAINTが発行されるから。
UpdateWindowは、メッセージループを介さずに直接WM_PAINTを発行するから、
その場で更新される。

UpdateWindowのところを
MSG msg;
GetMessage(&msg, hwnd, WM_PAINT, WM_PAINT);
DispatchMessage(&msg);
と変えてみても更新されると思う。

972 :デフォルトの名無しさん:04/08/26 08:24
MFCはいつまでサポートされるんだろうか。

973 :デフォルトの名無しさん:04/08/26 08:54
>>972
終了してますが?

974 :デフォルトの名無しさん:04/08/26 08:55
>>973
へ?.NETでもMFCはあるのじゃ?

975 :973:04/08/26 09:05
すいません
「何か?」
をつけるの忘れてましたw

976 :デフォルトの名無しさん:04/08/26 09:39
MFCってもうバージョンは上がらんのだろうか?
新しいコントロールとか追加されてもMFCからはもう使えんのか・・

977 :デフォルトの名無しさん:04/08/26 09:43
MFCもDelphiみたいにコントロールが豊富に提供されてれば、
もっと好かれたかも知れないな・・・

978 :デフォルトの名無しさん:04/08/26 09:47
>>977
MFCがDelphiよりもユーザが多いということは、MFCの方が好かれているということです。

979 :デフォルトの名無しさん:04/08/26 09:54
MFCマンセー

980 :デフォルトの名無しさん:04/08/26 10:00
Microsoft Foundation Class

981 :デフォルトの名無しさん:04/08/26 10:30
Microsoft Frustration Class

982 :デフォルトの名無しさん:04/08/26 15:06
SDKでプログラミングをしています(visual c++ 6)。
マルチスレッドについて勉強をしているのですが、そもそもスレッドとは何かが良く分かりません。
猫でもわかるプログラミングのページ(ttp://www.kumei.ne.jp/c_lang/sdk/sdk_87.htm)を参照
すると、親ウィンドウの中に子ウィンドウが作られています。
マルチスレッドとは、このように親ウィンドウの中に子ウィンドウを作るものなのでしょうか?

私が今やりたいことは、「親ウィンドウ内のある特定領域に、独立な領域を作る」ことです。
独立な領域とは、閉じるボタンやウィンドウアイコンがある、いわゆるwindowではなく、一見
すると領域は1つに見える・・・というものなのですが、分かりますでしょうか?

理解できる方がおりましたら、ご解答よろしくお願いします。実現可能なのでしょうか?

983 :デフォルトの名無しさん:04/08/26 15:38
>>982
http://www.google.co.jp/search?&hl=ja&ie=UTF-8&q=%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9+%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89

984 :デフォルトの名無しさん:04/08/26 15:40
>>982
> 私が今やりたいことは、「親ウィンドウ内のある特定領域に、独立な領域を作る」ことです。
> 独立な領域とは、閉じるボタンやウィンドウアイコンがある、いわゆるwindowではなく、一見
> すると領域は1つに見える・・・というものなのですが、分かりますでしょうか?

スレッドはgoogleの方見れば良いけど、全然理解が間違ってる。
後の方はMDIのこと?そうじゃないとしたら実例としてどういうソフトがあるのか
どこでそういうインタフェースを見たのかを書いた方が良い。見たこともないもの
だとしたら不可能なものである確率が高い。

985 :デフォルトの名無しさん:04/08/26 17:59
なんとなく、htmlのiframeみたいなものを想像しているのだろうかと思ってみたり。

986 :デフォルトの名無しさん:04/08/26 18:22
枠を消したダイアログを貼り付ければいいのか?

987 :デフォルトの名無しさん:04/08/26 21:03
「独立」っていうのが何を意味するのかね?スレッドのことに触れてるけど、実際のところ
処理の独立性という問題より見た目の問題が表に出ているように取れる文章なんだが。
ウィンドウじゃないっていうところからすると、コントロール貼っただけでもそう言えるような
感じ。わけわかんない。

988 :デフォルトの名無しさん:04/08/26 22:05
まあ多分本人も自分で何言ってるのかがわからんのじゃないかな。
伝えたい事はあるんだけどどう言う表現を使ったら良いか分からないみたいな。

989 :デフォルトの名無しさん:04/08/27 09:49
で、次スレまだ?

238 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)