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


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

★初心者にVisual C++を教えるスレ★ Part4
1 名前:よろ♪ :03/02/02 23:33
タイトルのとおり、初心者専用です。

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

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

関連スレ
■ VisualC++(MFC限定)相談室 5■
http://pc3.2ch.net/test/read.cgi/tech/1028553308/l50

Win32API 質問箱 Build7
http://pc3.2ch.net/test/read.cgi/tech/1036654893/l50


2 名前:デフォルトの名無しさん :03/02/02 23:34
990 名前:デフォルトの名無しさん 投稿日:03/02/02 23:17
めちゃ初歩的な質問です。

ダイアログベースで作成しているのですが、
OKボタン、CANCELボタンを無効にして新しいボタンを2つ作成し、
そのボタンにOK、CANCELボタンの役割を持たせるように
プログラムしました。
その後、エディットボックスを追加したのですが、
IDCが追加されず、2つのボタンだけのIDCだけが表示されます。
どうやったらエディットボックスのIDCを追加することができますか?



3 名前:前スレ990 :03/02/02 23:35
>>994
無理ってことですか?
どうやってメンバ変数を作成できますか?


4 名前:よろ♪ :03/02/02 23:35
>>1
おつ

5 名前:デフォルトの名無しさん :03/02/02 23:36
>>2
リソースエディタでエディットボックスを追加したら、
クラスウイザードでもIDC_EDIT1が選択できるように
なりましたが、そちらではなりませんか?



6 名前:デフォルトの名無しさん :03/02/02 23:38
>>5
なりません。

7 名前:前スレ990 :03/02/02 23:40
>>5
すみません、リソースエディタとはどこのことを指しておりますか?
よくわからなくて申し訳ないです。
ソースに直接書いているのですか?

8 名前:デフォルトの名無しさん :03/02/02 23:41
>>6
ありえないとは思いますが、
クラスウイザードではC***Dlg というダイアログクラスの
派生クラスを選択してますよね?


9 名前:デフォルトの名無しさん :03/02/02 23:43
>>7
左側のリソースビュー
--> Dialog
--> IDD_TEST_DIALOG
をダブルクリックすると表示されるエディタです。

これ使ってないんですか?



10 名前:前スレ990 :03/02/02 23:44
>>8
その通りです。
デフォルトで作成されたものです。
クラスは一切追加しておりません。


11 名前:前スレ990 :03/02/02 23:47
>>9
ダブルクリックをしても何も動作しないのですが、
なにか設定がいりますか?


12 名前:デフォルトの名無しさん :03/02/02 23:48
いいかげんあきらめれ。

13 名前:デフォルトの名無しさん :03/02/02 23:49
>>11
どうやってボタン追加したんですか?
CButtonクラスでも使って手作業で追加したの?



14 名前:547 :03/02/02 23:50
yakyu.c
d:\tomoki\c言語\新しいフォルダ (3)\yakyu.c(96) : warning C4700: 値が割り当てられていないローカルな変数 'anserA1' に対して参照が行われました。
d:\tomoki\c言語\新しいフォルダ (3)\yakyu.c(102) : warning C4700: 値が割り当てられていないローカルな変数 'anserA2' に対して参照が行われました。
リンク中...
LIBCD.lib(crt0dat.obj) : error LNK2005: _exit はすでに yakyu.obj で定義されています
Debug/yakyu.exe : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました
link.exe の実行エラー

15 名前:デフォルトの名無しさん :03/02/02 23:51
>>11
プロジェクトは MFC AppWizard (exe) ですよね?


16 名前:前スレ990 :03/02/02 23:52
>>13
コントロールから追加しました。
手順としては、新規作成から、ダイアログベースを選択して作成。
OK、キャンセルボタンを一旦削除して、ボタンを2つコントロールから追加。
その後、エディットボックスを追加です。
エディットボックスのプロパティでは、IDC_EDIT1は表示されますが、
クラスウィザードでは、表示されないのです。


17 名前:前スレ990 :03/02/02 23:52
>>15
その通りです。


18 名前:デフォルトの名無しさん :03/02/02 23:56
>>7
http://ebiuma.parfait.ne.jp/upuroda/img-box/img20030202235439.jpg
のことだと・・・

19 名前:デフォルトの名無しさん :03/02/02 23:56
>>16
IDC_BUTTON1 はクラスウイザードで
選択できたの?


20 名前:前スレ990 :03/02/03 00:00
>>19
できました。
>>18
すみません。
OSは2000でVC++6.0ですが、同じですか?


21 名前:547 :03/02/03 00:02
こちらからきました。こたえてね。よろしく。
http://pc2.2ch.net/test/read.cgi/tech/1042640474/547-

22 名前:デフォルトの名無しさん :03/02/03 00:02
>>16
それとおなじことやリマシタが、表示されました。
つわけで、やりなおせ。

23 名前:デフォルトの名無しさん :03/02/03 00:02
>>20
一旦削除して再度追加しても変わらない?

24 名前:前スレ990 :03/02/03 00:04
>>22
>>23
一から作成し直しましたら
無事できました。

原因不明ですが、とりあえず解決しましたのでこのまま続けていきます。

皆様ありがとうございました。


25 名前:デフォルトの名無しさん :03/02/03 00:07
>>20
vc++.netなんで・・・
netだと、ダイヤログベースでプロジェクトで立ち上げると
まず、リソースエディタの画面になるので、VC6は知りません。
VC6でも、リソースヴューのとこでdailogフォルダに対して
dialogの挿入すればリソースエディタ画面になるのじゃないんですか?

26 名前:デフォルトの名無しさん :03/02/03 00:08
>>21
前スレミロ

27 名前:デフォルトの名無しさん :03/02/03 00:12
なんだよ
解決かよ・・・
なら、質問
XPでVC++.NETでコーディングしてると
たまに、落ちやがる
ビルドとかの最中じゃなくて、単にコードを手打ちしてるときに・・・
回避策教えてくれ・・・

28 名前:デフォルトの名無しさん :03/02/03 00:14
>>27
OSクリーンインストール+VC++.NET再インストール

29 名前:デフォルトの名無しさん :03/02/03 00:16
>>28
やだ!!
XP再インスト→MSに電話
VC再インスト→地獄のように時間かかる
できるかそんなこと

30 名前:デフォルトの名無しさん :03/02/03 00:27

 VC++はもう卒業しようよ。 十分苦しんだだろ?
 .NetがいやならDelphiでいいじゃないか。

31 名前:デフォルトの名無しさん :03/02/03 00:27
>>29
>MSに電話
確かにそれやだな。
やっぱ2000にした方がいいんでないか?

32 名前:デフォルトの名無しさん :03/02/03 00:28
>>25
VC++6.0でも同じでっせ。
ダイアログベースプロジェクトなら最初に
リソースエディタがでますよ。



33 名前:デフォルトの名無しさん :03/02/03 01:38
すいません質問です。複数枚のビットマップファイルを連続して読みこむ方法ってありませんでしょうか?

CBitmap newBitmap;
newBitmap.LoadBitmap(IDB_IMG);

をこんな感じにしたいのです。

for(count=0; count<10; count++)
{
 char filename[256];
 CBitmap newBitmap[10];
 ssprintf(filename,"%s%d.%s","temp",count,"bmp"); // "temp0~10.bmp"にしたい
 newBitmap.LoadBitmap(filename);
}

何かいい方法はないでしょうか?

34 名前:33 :03/02/03 01:56
すいません もう一つビットマップ関連の質問で…
質問内容はビットマップの情報を2次元配列にうまく格納できないことです。

やったのは、320×240のビットマップを読みこみ、GetPixcelで1ピクセルごとにRGBを取得。
それらをint型の配列gazou[320][240]に
for(i=0; i<240; i++){
for(j=0; j<320; j++){
if(r==255 && g==0 && b==0){ gazou[i][j]=1; continue; }
else if(r==0 && g==255 && b==0){ gazou[i][j]=2; continue; }
else if(r==0 && g==0 && b==255){ gazou[i][j]=3; continue; }
}
}

として格納したのですが、これらの配列にちゃんと値が入っているかを確認するために、テストプログラムを組んだのですが
x=y=0;
for(i=0; i<240; i++){
for(j=0; j<320; j++){
if(gazou[i][j]==1){ pDC->SetPixcel(x+j,y+i,RGB(255,0,0)); continue; }
else if(gazou[i][j]==2){ pDC->SetPixcel(x+j,y+i,RGB(0,255,0)); continue; }
else if(gazou[i][j]==3){ pDC->SetPixcel(x+j,y+i,RGB(0,0,255)); continue; }
}
}
としたのに、表示された画像は元の画像と同じように表示されないのです。何故か画像の右半分が表示されず、その部分には左半分のが繰り返し表示されてます…
すいませんが、この問題についても解決策をお願いします…


35 名前:33 :03/02/03 01:58
すいません!!
gazou[320][240]でなくgazou[240][320]でした…

36 名前:名無し@沢村 :03/02/03 02:24
>>33
LoadImage()だ。

37 名前: :03/02/03 02:39
めっちゃくちゃ初心者な質問なんですが・・・

DirectX SDKを導入して、一応組めるようにはなったんですけど
DirectXの関数若しくは、構造体等を書いた時に表示される
入力補助機能(というのでしょうか?)を出すようにするには
どうすれば良いのでしょうか?

38 名前:33 :03/02/03 04:25
>>36
 サンクスです!

ところで2次元配列でgazou[1000][1000]って書くのってメモリ的にやばい気がするんだけど、みなさんはどう思われますか
また大量の配列を確保するとき、どうすればいいのか教えてもらえませんか?


39 名前:デフォルトの名無しさん :03/02/03 19:01
学校の授業で配列とか関数とか基本みたいなのはある程度学んだんですよ。
でもっといろんな事勉強したいのですが何をしたらいいのか解かりません。

助けてください。
あとオススメの参考書かなんかあったら教えてください。

40 名前:デフォルトの名無しさん :03/02/03 19:05
>>39
クラスとかやったの?

41 名前:デフォルトの名無しさん :03/02/03 19:36
>>39
基本をやってればプログラム組めるだろ!

42 名前:デフォルトの名無しさん :03/02/03 19:43
>>41
でも、初めてMFCとかやると面食らう
SDKでも面食らう
WINアプリ設計の面倒さを割り切れるようにならないと
何していいかわかんないというのはわかる気がする

43 名前:39 :03/02/03 20:41
クラスはやってません。
これからやるのがよかですか?

>>41
いや、どんなプログラムを組んだらいいのかさっぱりなんです。

44 名前:デフォルトの名無しさん :03/02/03 20:41
switch文の中で、宣言して代入ってできないんでしょうか?

// エラー
UINT j = DT_TABSTOP | 0x00002F00;
DrawText(hdc, str, -1, &rect, j);

d:\temp\winapitest001\winapitest001.cpp(92) : error C2360: 'j' の初期化が 'case' ラベルによって行われませんでした。
d:\temp\winapitest001\winapitest001.cpp(85) : 'j' の宣言を確認してください。

//これだとOK
UINT j;
j = DT_TABSTOP | 0x00002F00;
DrawText(hdc, str, -1, &rect, j);

どうして前者だとエラーになるのでしょう?
文法的には問題なさそうなんですが。



45 名前:デフォルトの名無しさん :03/02/03 20:50
>>43
VCはMSが用意したクラスにつぎたして
コードを書いてく、代物なんで、クラスはVCの基本すぎる基本だと

VCにしろ、なんにしろ、まずはHelloWorldを表示するのから
はじめては・・・
VCではウィンドウにHelloWorld表示するのもえらく難儀やけど・・・
なんとかハンドラがどうのこうのと
わけわかりません・・・

46 名前:デフォルトの名無しさん :03/02/03 20:50
>>42
MFCではそんなに面食らわないだろ。
簡単なアプリなんとなく出来ちゃうじゃん。

47 名前:デフォルトの名無しさん :03/02/03 20:54
>>46
MFCどこにコードを入れていけばいいのか
初心者にはサパーーーーーリ
です・・・・

48 名前:デフォルトの名無しさん :03/02/03 21:00
でるふぁいとか言う奴のほうが敷居は低いのかねえ・・・よう知らんけど。

49 名前:デフォルトの名無しさん :03/02/03 21:00
Cとかでプログラムの経験があると
逆にMFCは面食らうと思う
何も考えないでウイザードで
適当にプログラム作って遊ぶとよいよ

50 名前:デフォルトの名無しさん :03/02/03 21:26
わしCでは7〜8万行くらいDOSプログラミングしますた。
MFCで面食らってまつ。
なんかおすすめの書籍とかないでつか?スレ違い?

51 名前:デフォルトの名無しさん :03/02/03 21:29
>>50
推薦図書/必読書のためのスレッド PART 8
http://pc2.2ch.net/test/read.cgi/tech/1041595397/


52 名前:デフォルトの名無しさん :03/02/03 21:29
>>50
C++の知識は一通りあるんですか?


53 名前:デフォルトの名無しさん :03/02/03 21:32
>>50
「Windowsプログラミングの基礎知識」 柏原正三 アスキー

本当に基礎の基礎なんだけど、MSDNで自習できる
程度にはなります。



54 名前:デフォルトの名無しさん :03/02/03 21:34
習うより慣れよということで
いろんなところでHello World
http://www-kobayashi.ctrl.titech.ac.jp/~mtanaka/vc/

55 名前:50 :03/02/03 21:48
ネタと思われるかとオモタが、みなさんありがとう。
ちなみにC++の知識は、ほとんど無いに等しいです。
>>53
明日買います。
>>54
今から見てきます。

56 名前:50 :03/02/03 21:49
>>51
こっちも見てきます。

57 名前:デフォルトの名無しさん :03/02/03 21:52
>>55
ネタとわかっていてマジレスしてやったんだよ。

58 名前:デフォルトの名無しさん :03/02/03 22:01
(1) C++の学習に。

A. 独習C++ 第3版
Herbert Schildt 著
神林靖 監修
翔泳社
http://www.shoeisha.com/book/Detail.asp?bid=1460

B. 標準C++の基礎知識
柏原正三 著
アスキー
http://www.ascii.co.jp/books/detail/4-7561/4-7561-3121-2.html

C. 標準C++の基礎知識 実践編
柏原正三 著
アスキー
http://www.ascii.co.jp/books/detail/4-7561/4-7561-3563-3.html

(2) Windows API (非MFC)の学習に。

D. Windowsプログラミング標準講座(Windows95/98/NT/2000対応)
Herbert Schildt 著
山本信雄 監修
山本信雄 訳
翔泳社
http://www.shoeisha.com/book/Detail.asp?bid=41


59 名前:デフォルトの名無しさん :03/02/03 22:01

E. プログラミングWindows 第5版(上)(下)
Charls Petzold 著
株式会社ロングテール 長尾高弘 訳
アスキー
http://www.ascii.co.jp/books/detail/4-7561/4-7561-3600-1.html
http://www.ascii.co.jp/books/detail/4-7561/4-7561-3601-X.html

(3) MFCプログラミングの学習に。

F. Windowsプログラミングの基礎知識
柏原正三 著
アスキー
http://www.ascii.co.jp/books/detail/4-7561/4-7561-3252-9.html



60 名前:デフォルトの名無しさん :03/02/03 22:06
>>58-59
この辺が自分が学習に使った本で、この板でも
わりと評価の高い本です。

あ、

「憂鬱なプログラマのためのオブジェクト指向開発講座」
著者: Tucker!
出版社: 翔泳社
ISBN: 4-88135-619-4

C++をやるなら、これも1冊読んでおいたほうがいいと思います。

61 名前:デフォルトの名無しさん :03/02/03 22:14

順番としては
A -> 「憂鬱」 -> B -> C -> D -> F -> E
が良いんじゃないかと個人的には思います。

これでも例外処理とかSTLプログラミングが弱いので、
漏れ自身はその辺をカバーしている本を読まなくちゃと
思っているのですが。(Exceptional C++を注文中)



62 名前:50 :03/02/03 22:30
マジかい!ってくらいお金かかりそうでつね。
わしは、TURBO-Cデビューなんだが、昔は付属の立派なマニュアル
ユーザーズガイド671ページ
リファレンスガイド823ページ
と入門書3冊程度で、入門段階はクリア出来たような記憶があるよ。
脳みそ柔らかくするのがたいへんそうでつ。冬の夜。30歳。

63 名前:デフォルトの名無しさん :03/02/03 22:56
おまえら書籍スレに誘導されてるだろうに・・・

64 名前:デフォルトの名無しさん :03/02/03 22:59
>>62
Cの時代から考えると、Windows自体のファンクションコールの数も
然ることながら、オブジェクト指向、Genericプログラミングなどの
新しい概念が次々と出てきましたからねぇ。C++のライブラリやMFC
などは、これらの概念を元に作成されているんで、なかなか敷居が
高いですね。


65 名前:デフォルトの名無しさん :03/02/03 23:26

なんでMSDNはちょっと突っ込んだ記事を調べようとすると
英語ドキュメントしかないんだろう・・・。(-_-)



66 名前:デフォルトの名無しさん :03/02/03 23:32
MSDNは使ってる内にサブタイがおかしくなるのはなぜだろう・・・。

67 名前:デフォルトの名無しさん :03/02/03 23:42
俺はせめてリンク切れを無くして欲しい

68 名前:デフォルトの名無しさん :03/02/04 00:25
リンク切れもイヤだけど、エンコードがおかしくなるページがあるんだけど、
どうやって直したらいいんでしょ?



69 名前:デフォルトの名無しさん :03/02/04 00:34
エンコードはメニューにあるっしょ。つーかこれVCじゃなくてIEの使い方だな。

70 名前:デフォルトの名無しさん :03/02/04 02:31
ダイアログでタブボタン押した時,移動する順番は変えられますか?

71 名前:デフォルトの名無しさん :03/02/04 02:46
タブオーダーで変えられる。

72 名前:デフォルトの名無しさん :03/02/04 02:52
ありがとうござい増した

73 名前:super(novice) :03/02/04 15:11
ダイアログボックスの背景色を変更するにはどうすればいいのですか?

74 名前:デフォルトの名無しさん :03/02/04 15:57
>>73
それくら検索しような。
ttp://www.google.com/search?q=%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9+%E8%83%8C%E6%99%AF%E8%89%B2+%E5%A4%89%E6%9B%B4

75 名前:デフォルトの名無しさん :03/02/04 17:42
>>69
エンコードの切り替えがMSDNのメニューにないんですが。


76 名前:デフォルトの名無しさん :03/02/04 20:43
>>75
すいません許してください

77 名前:デフォルトの名無しさん :03/02/05 00:05
すみません。
前スレで質問させてもらったのですが、
流されてしまったのでもう一度書かせてください。

最近VisualStudio.Netを買って
VisualC++の勉強をはじめました。
シリアルポートを使った通信プログラムを作るのが目的です。
GUIの作り方とかファイルの入出力とかは参考書などによく載っているので、
それを読みながらなんとか進めているのですが、
シリアル通信については言及している本も見つからないし
ヘルプを見ても良く分からないしで困っております。
シリアル通信はどのように実現すればよいのでしょうか。
関数というかコマンドのようなものが用意されているのでしょうか。


78 名前:デフォルトの名無しさん :03/02/05 00:22
>>77
MSDNの、

Platform SDK
-> Windows Base Service
-> Files and I/O
-> Communication

はどうですか?

hCom = CreateFile( "COM1",
GENERIC_READ | GENERIC_WRITE,
0, // exclusive access
NULL, // no security attributes
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL
);

サンプルにこんなのが載ってる。

日本語ドキュメント欲しいですねぇ。誰かPlatform SDKの全訳
プロジェクトやらんですか?



79 名前:デフォルトの名無しさん :03/02/05 00:23
>>77
CreateFile()とかで"COM1"を開けば?
あとは SetCommState() WriteFile() ReadFile() あたりか。

80 名前:デフォルトの名無しさん :03/02/05 00:24
被った(´Д`;

81 名前:デフォルトの名無しさん :03/02/05 00:26
>>75
ページを右クリックして 「プロパティ」 出して、表示されたアドレスを
コピペで IE に貼り付けろ。
後は煮るなり焼くなり。

82 名前:デフォルトの名無しさん :03/02/05 00:29
>>81
なるほど。今度遭遇したら、それでやってみまふ。



83 名前:デフォルトの名無しさん :03/02/05 00:34
>>77
http://www.codeproject.com/system/#Hardware%20programming

84 名前:デフォルトの名無しさん :03/02/05 08:04
>>77
> シリアル通信については言及している本も見つからないし

ピアソンの「Win32システムサービスプログラミング」

85 名前:デフォルトの名無しさん :03/02/05 08:38
シリアル通信を介して Hello World
http://www-kobayashi.ctrl.titech.ac.jp/~mtanaka/vc/A/3-i.html

86 名前:77 :03/02/05 10:13
みなさんありがとうございます。
本屋に行ったりネットで調べたりしても全然分からなかったのに
(ただ単に調べ方が悪いのですが)
あっという間にこんなに回答をいただけて
ちょっと驚いているというか感動しています。

>>78
>>79
ありがとうございます。
ヘルプの検索において「hcom」で検索したらそのサンプルを見られたのですが、
目次からだと「Platform SDK」がどこにあるのか分かりませんでした。
「MSDNライブラリ」の下にあるんですよね?
今後の参考のために教えてください。

>>83
早速メンバー登録してみました。
いくつかファイルも落としました。
参考にさせていただきます。
ありがとうございます。

87 名前:77 :03/02/05 10:14
>>84
なるほど。
私は「シリアル通信」という言葉がタイトルに入った本を探してしまっていました。
考えてみればハードウェア的なことを抜きにしたら
シリアル通信だけで一冊の本にはならないですよね。
馬鹿でした。勉強させてもらいます。

>>85
ああ、唯一の日本語だ。
やはり、CreateFileやReadFileなんかを使って行うわけですね。
道筋が見えてきた気がします。

ちょっと何か調べようとすると
すぐ英語にぶち当たってしまうんですよね。
私は英語が苦手なんでそのたびにくじけそうになってしまいます。
でもそんなことも言っていられないですね。

88 名前:デフォルトの名無しさん :03/02/05 20:33
質問です。コンパイルするとエラーが出ないのにプログラム実行すると
LIBCD.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です
Debug/gagaga.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー
というエラーが出てしまいます。誰かアドバイスを。。。

89 名前:デフォルトの名無しさん :03/02/05 20:34
すいません。sage進行みたいですね。ageてしまいました。

90 名前:デフォルトの名無しさん :03/02/05 20:45
>>88
mainがない。

91 名前:デフォルトの名無しさん :03/02/05 20:54
Windowsでも動くの?

92 名前:デフォルトの名無しさん :03/02/05 20:59
(゚Д゚) ハァ?

93 名前:デフォルトの名無しさん :03/02/05 21:48
>>91
そりゃ動くだろ!VC++だからな。

94 名前:デフォルトの名無しさん :03/02/05 22:05
質問します。mfcのダイアログベースで、
2つのエディットボックスに数字を入力してボタンを押すと、
それらを計算(加減乗除)して出力するプログラムを作成していますが、
ボタンを押しても2つの数字が読み込めません。
今のところ以下のように書いています。
void CGUItestDlg::OnButton1()
{
double answer;
 answer=keisan.calc(m_num1,m_num2,0);
}
m_num1、m_num2はClassWizardのメンバ変数の追加で、
カテゴリは「値」、変数のタイプは「double」としました。
どのようにすればよいのか教えてください。


95 名前:デフォルトの名無しさん :03/02/05 22:14
>>94
UpdateData(TRUE)


96 名前:デフォルトの名無しさん :03/02/05 22:18
>>93
動くんですね! これで安心して買えます!
ありがとうございました!!

97 名前:デフォルトの名無しさん :03/02/05 22:24
Win3.1だったりして……

98 名前:デフォルトの名無しさん :03/02/05 22:26
>>94みたいな質問定期的に出てくるな。
どっかの宿題なのだろうか。


99 名前:94 :03/02/05 22:29
>>95
できました。ありがとう。

100 名前:デフォルトの名無しさん :03/02/05 22:47
ダイアログボックスベースでプログラムを組んでいます。
Staticコントロールを二つ付けていますが、どちらか一方だけの
色を白にしたいんですが、上手くいきません。
以下に示したものでは二つとも白になってしまいます。
何方かご教授お願いいたします。

HBRUSH CTESTDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// スタティック用のブラシを作成
CBrush myStatic;
myStatic.CreateSolidBrush(0xFFFFFF);
//文字の背景色を設定
pDC->SetBkColor(0xFFFFFF);

if(nCtlColor==CTLCOLOR_STATIC){ // スタティックコントロールの場合
return myStatic; // myStaticはあらかじめ作成されたCBrushオブジェクト
}

return hbr;
}

101 名前:デフォルトの名無しさん :03/02/05 22:48
すいません、教えてくださいな。

ダイアログ上のEdit領域で文字入力中にTABキーを押すと、フォーカスが次のボタン等に移ってしまうのですが、フォーカスを移動させずにTABをEdit領域に入力することって出来るのでしょうか?

102 名前:デフォルトの名無しさん :03/02/05 22:57
>>100
スタティックコントロールに別々のIDをつけて、
OnCtlColor内でIDを区別する

103 名前:100 :03/02/05 23:12
>>102
有難うございます。。。

あかん。。。俺が自分で色々考えながらVC++でプログラムを組むのは
ちょっと早すぎたのか・・・・・全然解らん・・・。
基礎からやり直そうっと・・・・(泣く

104 名前:デフォルトの名無しさん :03/02/05 23:40
>>103
急がば回れだ

105 名前:デフォルトの名無しさん :03/02/06 00:09
アスキーファイルを読みたいので、次のようにしたのですが読めません・・
Serialize(CArchive& ar)ですどこか間違ってますかね・・?
CFile* fp = ar.GetFile();
int i;
double *tmp;
tmp = CCC;
for ( i=0; i<IMAGEDATA_SIZE; i++, tmp++)
{
ar.ReadString( tmp, sizeof( double ) );
     }

CCCはdouble型でデータを格納する場所です
IMAGEDATA_SIZEは256*256です

データの中身は9.352675144624524e+001、こんな感じのが256*256あります
doubleでは無理ですよね・・



106 名前:デフォルトの名無しさん :03/02/06 00:12
マルチする前にMSDNでReadStringの宣言確認すれ。

107 名前:105 :03/02/06 00:22
初心者なので答え、教えてください
doubleつかえないのはわかってます

108 名前:105 :03/02/06 02:36
解決しました。ありがとうございました。

109 名前:デフォルトの名無しさん :03/02/06 03:41
何もしていないが・・・

110 名前:110 :03/02/06 03:50
解決しました。ありがとうございました。

111 名前:デフォルトの名無しさん :03/02/06 05:54
>>101
WM_GETDLGCODE DLGC_WANTTAB

112 名前:デフォルトの名無しさん :03/02/06 06:17

>>101
色々考えてみたんですが、エディットコントロールのウインドウプロシージャ
をフックするしかないみたいです。

(1) 新しいウインドウプロシージャを定義するので、ダイアログクラス
のC++ファイルのはじめに

#include <windows.h>

LRESULT CALLBACK NewEditProc (HWND, UINT, WPARAM, LPARAM);

とやります。MFCウイザードのデフォルトだと、後述する
CallWindowProc()が使えないみたいなので、windows.hも
インクルードします。

(2) エディットコントロールのコントロール自体を操作する
必要があるので、クラスウイザードでコントロールのオブジェ
クトも作成しておきます。

(3) CTestDialog::OnInitialDialog()の直前で、グローバル領域に

WNDPROC OldEdit;

という形でウインドウプロシージャへのポインタを宣言します。


113 名前:デフォルトの名無しさん :03/02/06 06:18

(4) OnInitialDialog()内部で、

OldEdit1 = (WNDPROC) SetWindowLong(m_edit1ctl.GetSafeHwnd(), GWL_WNDPROC, (LONG) NewEditProc);

とやって、エディットボックスに関連付けられていた
エディットコントロールのウインドウプロシージャを新しい
ウインドウプロシージャに変更します。古いプロシージャへの
ポインタも使用するので保存しておきます。

(5) 以上でエディットボックスのウインドウプロシージャを呼び出す際に、
ユーザーが定義したウインドウプロシージャを呼び出す準備ができました。


114 名前:デフォルトの名無しさん :03/02/06 06:18

(6) 新しいウインドウプロシージャを次のように定義します。
C++ファイルの一番下にでも定義してください。

LRESULT CALLBACK NewEditProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_KEYDOWN:
if (wParam == VK_TAB) {
SendMessage(hwnd, EM_REPLACESEL, TRUE, (long) "\t");
return 0;
}
}
return CallWindowProc (OldEdit1, hwnd, message, wParam, lParam);
}



115 名前:デフォルトの名無しさん :03/02/06 06:19

OSから受け取ったメッセージが、キーボード入力で、かつ、それが
TABキーだった場合には、現在のカレットの位置に '\t' を挿入します。
SendMessageは、メッセージの送り先が処理を終了するまで、戻らない
点に留意してください。
このメッセージの処理はこれでOKなので、そのまま return 0 で、
呼び出し側に処理を戻します。

その他のメッセージは特に変更する必要がないので、
CallWindowProc(OldEdit1, hwnd, message, wParam, lParam);
で、メッセージを古いウインドウプロシージャに引き渡して
処理してもらいます。

エラー処理など、いろいろ改善点はあると思いますが、大まかなところは
こんな感じで大丈夫みたいです。


>>111
OnGetDlgCode()で設定の変更もできるんですか?
もっと簡単な方法あります?



116 名前:デフォルトの名無しさん :03/02/06 06:38
>>115
試しに作ったのを再度実行したら、なんかエディットボックスに
ゴミみたいなのが出るなぁ。なんでだろう。
あと、あんまり大きなデータは扱えないみたい。
デフォルトかどうかわからんけど・・。


117 名前:デフォルトの名無しさん :03/02/06 07:45
>>116
解決。

ゴミはりソースエディタで、間違ってアニメートコントロールを
貼りつけていたせいでした。
データサイズは縦スクロールバーを設定すると、大丈夫みたいですね。

118 名前:111 :03/02/06 15:55
>>115
>OnGetDlgCode()で設定の変更もできるんですか?
WANTTABにしておかないとTABのWM_KEYDOWN等が飛んでこないんじゃないかなと思ったけど
飛んでくるのですね。
そのサンプルはダイアログに貼りつけてテストしましたか?

>もっと簡単な方法あります?
サブクラス化を前提にかきました。

119 名前:111 :03/02/06 16:33
なんか気になるので実験してみた。
MFCAppウィザードのダイアログアプリにEditBoxを一つ配置。
やはり WM_KEYDOWN の VK_TAB は飛んでこない。

OnGetDlgCode()で
return DLGC_HASSETSEL | DLGC_WANTARROWS | DLGC_WANTCHARS | DLGC_WANTTABTTAB
としてみると飛んできた。
しかし'\t'がちゃんと表示されない。
エディットボックスの設定を改行可にすると自動的にTABとして表示してくれた。(メモ帳といっしょやね)

結論:GETDLGCODEでWANT_TABし、改行可にするとok


120 名前:デフォルトの名無しさん :03/02/06 17:38
>>118
>そのサンプルはダイアログに貼りつけてテストしましたか?

はい。サンプルを作ってみました。
EM_REPLACECELが挿入に使えるかどうかとか、
試してみないと分からない部分もありましたので。

OnGetDlgCode() は使っていないのですが、
正常に動作しているみたいです。




121 名前:デフォルトの名無しさん :03/02/06 18:28
>>120
了解。119の結論は話半分ってこことでよろ。

122 名前:デフォルトの名無しさん :03/02/06 23:23
昨晩、101でEdit領域へのTAB入力の質問をしたものです。
お蔭様で問題は解決しました。サンクス!

結局、CEditをサブクラスしたCEdit2を作り、
ダイアログのヘッダーの以下のCEditの部分を
CEdit2に置き換えました。

//{{AFX_DATA(CRwDlg)
enum { IDD = IDD_xx_DIALOG };
CEditm_edit;
//}}AFX_DATA

あとは119さんが教えてくれた通りに、CEdit2のOnGetDlgCode()で
return DLGC_HASSETSEL | DLGC_WANTARROWS | DLGC_WANTCHARS | DLGC_WANTTABTTAB
としました。

有難うございました!

123 名前:デフォルトの名無しさん :03/02/06 23:53
過去ログ検索してみましたが、それっぽい質問がないようなので質問させてください。

Cでプログラミングを勉強し、最近VC++に入ったものです。
そもそもクラスやメソッド、オブジェクト指向プログラミングってどういう意味なのですか?
語句に対して調べては見ましたが専門用語の羅列でわけが判りません・・・

どなたか親切な方、判りやすく例え話等を使ってお教えいただけないでしょうか?
よろしくお願いします。

124 名前:デフォルトの名無しさん :03/02/07 00:00
>>123
オブジェクト指向ってのはオブジェクトを中心に考えるってこと。
メソッドってのは、そのオブジェクトに対して操作する関数とか。

吉野家で考えれば、メインオブジェクトは牛丼だ。
で、それに対する属性としてつゆだくだとか、ねぎだくだとかがある。
メソッドとしてはUの字テーブルをはさんだやつといつ喧嘩がはじまってもおかしくないとか
よーしパパ特盛り頼んじゃうぞーとか、店員のマークとかがある。

125 名前:デフォルトの名無しさん :03/02/07 00:17
>>124
それは何か違うと思う。

126 名前:デフォルトの名無しさん :03/02/07 00:21
>>123
「憂鬱なプログラマのためのオブジェクト指向開発講座」
http://www.shoeisha.com/book/Detail.asp?bid=740

これを読めば解決。

あと独習C++とかで、一通りきちんと勉強した方が
早いと思うよ。



127 名前:デフォルトの名無しさん :03/02/07 00:23
吉野家ならメインオブジェクトは店舗だろ

128 名前:デフォルトの名無しさん :03/02/07 13:41
>>123
デザパタもやるならGoF本買っとけ。

129 名前:デフォルトの名無しさん :03/02/07 14:07
すっ、すみませぬ、超基本だと思うのですが変数xの整数部分だけを取り出そうと
y=(int)x;
としたらyに0か異常値が入ってしまうのですがどうすれば宜しいのでしょうか?
教えてくださいませ(つД`)

130 名前:129 :03/02/07 14:07
sage忘れゴメンなさい∧||∧

131 名前:C++厨 :03/02/07 14:22
double modf( double x, double *intptr );

が整数と小数をわけてくれるよ。

132 名前:129 :03/02/07 15:12
>>131
ありがとうございます。
早速試してみます。

133 名前:123 :03/02/07 15:29
>>124さま
親切にありがとうございます。
>>126,128さま。
この問題にぴったりそうな本を教えていただきありがとうございました。
早速勉強しなおしたいと思います。

134 名前:デフォルトの名無しさん :03/02/07 21:12
WinMXとかWinnyにある、共有ソフトのダウンロードリストは
どんなコントロールをつかっているのですか?
エクセルみたいなコントロールみたいですが

135 名前:デフォルトの名無しさん :03/02/07 21:15
普通はListViewコントロールがはじめに思いつくと思うけど・・・

136 名前:デフォルトの名無しさん :03/02/07 21:19
なるほどー

137 名前:デフォルトの名無しさん :03/02/07 21:33
>>134
そういう時はspy++を使って調べてみよう。

138 名前:デフォルトの名無しさん :03/02/07 21:39
なる!メッセージからコントロールをわりだすのですか〜


139 名前:デフォルトの名無しさん :03/02/08 00:36
VC++6.0でINETコントロールを使っているのですが、
どうしても、FTPが上手くいきません。
executeメソッド等の使い方が悪いんですかね・・・。

どなたか、正常動作するサンプルソースとか
記述して頂けませんか?(´д⊂)

140 名前:デフォルトの名無しさん :03/02/08 00:46
>>139
どううまくいかないのか書け。
「うまくいきません」だけで判るはずないだろボケ

141 名前:139 :03/02/08 01:17
スマソ(;´Д`)

Executeメソッドを実行しても、
ファイルが転送されないまま、終了してしまうんです・・・(´д⊂)
(一応、転送先のURLにアクセスはしてます)

おそらく、パラメータ指定が間違っているんだと思うのですが、
Executeメソッドに必要な4つの引数には、
それぞれ、何を与えればいいんですか?

142 名前:デフォルトの名無しさん :03/02/08 02:53
>>141
お前は何を与えてるんですか?

143 名前:139 :03/02/08 04:25
MSDNにVBでのリファレンスがあったんで、
それを参考にして与えてます。

第1引数:"ftp://hoge:hoge@hoge.com/"
第2引数:"PUT C:\\hoge.txt hoge.txt"
第3引数&第4引数:""

というような感じなんですが、
やっぱり、VC++だと与え方は違うんでしょうか?

144 名前:デフォルトの名無しさん :03/02/08 07:23
VCでInetコントロール?
CFtpXXXXってクラス使わないの?

145 名前:デフォルトの名無しさん :03/02/08 11:29
>>139
http://www.microsoft.com/japan/developer/library/vccore/_core_prerequisites_for_internet_client_classes.htm

146 名前:デフォルトの名無しさん :03/02/09 01:44
Wininetなら漏れはここみて便給したけど。
http://www.geocities.co.jp/SiliconValley-PaloAlto/1512/


147 名前:デフォルトの名無しさん :03/02/10 03:56
今日からC始めた初心者ですが
普通にメイクしたexeファイル実行終了したら
自動的にウインド閉じちゃうんですけど、
どこで手動に切り替えられますか?

148 名前:デフォルトの名無しさん :03/02/10 08:27
>>147
ショートカットのプロパティじゃなかったっけ?

149 名前:デフォルトの名無しさん :03/02/10 14:08
VC7のダイアログエディタでダイアログボックスにリストビューを貼り、

そのリストビューの表示スタイルを"レポート"表示に設定したいのですが、

リストビューのプロパティを開いても

ttp://kerochan.no-ip.com/vcsdk/letsprog/graph4/chap31listprop.gif

のようなメニューが出てきません。

VC7のダイアログエディタでリストビューのスタイルを設定するにはどうすればいいですか?


150 名前:149 :03/02/10 14:23
すまぬ。一番下にViewって項目があったわ。。。

151 名前:デフォルトの名無しさん :03/02/10 14:28
>>149
プロパティウィンドウの"View"

152 名前:147 :03/02/10 17:54
それらしき項目見当たらなかった…

153 名前:デフォルトの名無しさん :03/02/10 18:17
>>152
IDE環境から実行してるんなら最後にgetch()でもしとけ。

154 名前:デフォルトの名無しさん :03/02/11 06:48
コンソールアプリなら
コマンドプロンプトから実行すればいいんじゃね

155 名前:147 :03/02/11 08:21
サンキューです。

156 名前:デフォルトの名無しさん :03/02/11 13:16
今までコンソールアプリを学習してきてマスターしてきたので、
WindowsのGUIアプリの作り方を学習したいのですが、
ttp://www.amazon.co.jp/exec/obidos/ASIN/4881358219/ref=pd_rhf_p_1/249-8667808-1583552
この本は、Visual C++.netでも使えますか?

157 名前:ひよこ名無しさん :03/02/11 13:25
グローバル変数!グローバル変数!グローバル変数!
グローバル変数!グローバル変数!グローバル変数!グローバル変数!
グローバル変数!グローバル変数!グローバル変数!
グローバル変数!グローバル変数!グローバル変数!
グローバル!グローバル!グローバル!グローバル!ああああああああああああああああああああああああああああああああああああああああ

158 名前:ひよこ名無しさん :03/02/11 13:36
参考書の例題で
OnLButtonDown()関数で得たマウスの座標をOnPaintに受け渡すために
int xpos = -100;
int ypos = -100;
とグローバル変数を宣言してるのですが
なぜ、int xpos; じゃだめなのでしょうか?

159 名前:ひよこ名無しさん :03/02/11 14:05
お願いします。

160 名前:デフォルトの名無しさん :03/02/11 14:09
>>158
正直、何やりたいのか判らん。
グローバル変数を何に使ってんだ?

161 名前:デフォルトの名無しさん :03/02/11 14:10
なんでxposの初期化が必要なのか聞いてるんだろうが、それだけ見せられても
答えようがない。

162 名前:デフォルトの名無しさん :03/02/11 14:12
ダメなことはないだろう。
何かエラー起こってんのか?

悪い質問のお手本だな

163 名前:C++厨 :03/02/11 14:21
グローバル変数は 糞!

164 名前:158 :03/02/11 14:22
int xpos = -100;
int ypos = -100;

void CS17Wnd::OnPaint()
{
CPaintDC dc(this);

dc.Ellipse(xpos - 20, ypos - 20, xpos - 20, ypos - 20)
}
void CS17Wnd::OnLButtonDown(UINT nFlags, CPoint point)
{
xpos = point.x;
ypos = point.y;

invalidate();

}
このint xpos = -100;の-100はどういうことなんでしょうか?
なぜ-100なのかが分かりません。
宜しくお願いします。



165 名前:デフォルトの名無しさん :03/02/11 14:23
今からVCやろうと思っているんだけど、やるなら6.0じゃなくてやっぱ.NETかな?

166 名前:デフォルトの名無しさん :03/02/11 14:25
>>164
適当。

>>165
何をやりたいかもわからないのに答えようがないと思う。


167 名前:デフォルトの名無しさん :03/02/11 14:34
>>164
はっきり言おう。
お前の脳みそが理解できん。
自分でコーディングしておいて「分かりません」?

病院いって来い・。

168 名前:デフォルトの名無しさん :03/02/11 14:34
>>164
OnLButtonDownが呼ばれる前にOnPaintが呼ばれたらどうなるか小一時間考えるといい。

169 名前:デフォルトの名無しさん :03/02/11 14:35
>>167
参考書の例題と書いてるだろう。
このスレは質問の仕方も悪けりゃ答える奴も無能かよ

170 名前:デフォルトの名無しさん :03/02/11 14:36
全然初心者向けの回答じゃないな

171 名前:デフォルトの名無しさん :03/02/11 14:37
-100の意味を聞いてるんだからテキトー。これ。

はい次↓

172 名前:158 :03/02/11 14:41
>>168
int xpos;で試したら-100の意味が分かりました。
ありがとう。

173 名前:158 :03/02/11 14:42
>>171
適当なわけじゃなかったよ

174 名前:デフォルトの名無しさん :03/02/11 14:42
我思う。試してから質問しろと。

175 名前:158 :03/02/11 14:43
>>174
そうでした。すいません

176 名前:デフォルトの名無しさん :03/02/11 14:48
この板自体来るの初めてなのだろうか。
元質問以外はなるべくsageてね。

177 名前:158 :03/02/11 15:08
失礼しました。今後質問時は気をつけます

178 名前:デフォルトの名無しさん :03/02/11 23:05
実行しているファイルと同じディレクトリにある設定ファイルを読みたいので
すが、ファイル名だけでオープンしようとすると上手くいきません。
そこで、実行ファイルのあるディレクトリを取得したいのですが可能でしょうか?

179 名前:デフォルトの名無しさん :03/02/11 23:07
検索したらすぐ出てきたよ

180 名前:デフォルトの名無しさん :03/02/11 23:08
>>178
質問する前に検索しろよ
http://www.google.com/search?q=Windows+%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA+%E5%8F%96%E5%BE%97

181 名前:デフォルトの名無しさん :03/02/11 23:09
>>180
ありがとうございます。
10分くらいは検索してみたのですが・・・。多謝です。

182 名前:デフォルトの名無しさん :03/02/11 23:11
いったいどんなキーワードで検索したやら(藁

183 名前:デフォルトの名無しさん :03/02/11 23:22

Windowsディレクトリって c:\windows でしょ?
>>178の答えになってるの?



184 名前:デフォルトの名無しさん :03/02/11 23:27
でも、結局よく情報抜き出せませんでした(涙)
GetCurrentDirectoryで出てくるのは、何か実行ファイルがおいてあるのとは
別のディレクトリが取れているようでして・・・。
どの命令を使えばいいのでしょうか?(ダメ

185 名前:デフォルトの名無しさん :03/02/11 23:31
すみません、デバックで動かしていたのが原因だっただけみたいです。
逝ってきます。

186 名前:デフォルトの名無しさん :03/02/11 23:48
>>185
GetCommandLine
現在のプロセスのコマンドライン文字列へのポインタを取得します。

LPTSTR GetCommandLine(VOID)

これでフルパスが取れるみたいです。
試してみたら、

"D:\TEMP\TEST\Debug\TEST.exe"

こんな感じになりました。





187 名前:デフォルトの名無しさん :03/02/11 23:56
VC++6.0でプログラムを作成しています。
ダイアログベースのアプリで、最小化のタイミングでタスクトレイに
表示したくOnSyscommand関数で最小化のイベントを取り、メインダイアログを隠したい
のですが、OnSyscommand関数がデフォルトで出来ていません。
ユーザーが作成するものなのでしょうか?
生成方法を教えて下さい。
宜しくお願いします。

188 名前:デフォルトの名無しさん :03/02/12 00:07
>>183
Windows ディレクトリ 取得
Windows入れないと別のOSも含まれるんじゃないの?
カレントディレクトリにしたほうがいいんだろうけど

189 名前:デフォルトの名無しさん :03/02/12 00:11
>>187
オーバーライドの方法はヘルプ読め

190 名前:178 :03/02/12 00:14
>>186
おお、そんな命令が。ありがとうございました。

191 名前:デフォルトの名無しさん :03/02/12 00:15
>>187
ダイアログの右上の最小化ボタンの動作をフックして
独自の動きをさせたいってことなの?
メインダイアログを隠すってことの意味がよくわからないんだけど・・。
隠す=最小化/アイコン化?



192 名前:187 :03/02/12 00:18
>>189
すみません、オーバーライドをすればよいということでしょうか?

193 名前:デフォルトの名無しさん :03/02/12 00:23
>>192
VCならクラスウイザード使えばいいだろ。

194 名前:デフォルトの名無しさん :03/02/12 00:25
つーか回答者もネタ?
GetModuleFileNameだろ。<アプリと同じフォルダ

195 名前:187 :03/02/12 00:25
>>191
そうです。
最小化して、タスクトレイにアイコン化することが目的です。
showwindow(SW_HIDE)
でダイアログを隠そうとしております。


196 名前:187 :03/02/12 00:26
>>193
OnSysCommandが見つからないのです。
OnCommandならあるのですが…。


197 名前:デフォルトの名無しさん :03/02/12 00:29
>>195
MFC App Wizard (exe) プロジェクト
で作成すると、ダイアログクラスに
CTestDlg::OnSysCommand()
というオーバーライドされた、メンバ関数が自動的に
作成されるみたいだけど、これを改造するのじゃ
いかんの?

この関数では、基底クラスのCDialog::OnSysCommand()に
メッセージをそのまま渡しているみたいですが。



198 名前:187 :03/02/12 00:30
>>197
それが自動的に作成されなかったようです。
追加で作成することは不可能なのでしょうか?


199 名前:デフォルトの名無しさん :03/02/12 00:31
ちなみに検索の仕方はこんな感じで
http://www.google.com/search?hl=ja&inlang=ja&ie=Shift_JIS&q=%83A%83v%83%8A%83P%81%5B%83V%83%87%83%93%81@%83t%83H%83%8B%83_%81@%8E%E6%93%BE%81@C%2B%2B&lr=

200 名前:デフォルトの名無しさん :03/02/12 00:33
>>198
ClassWizardでWM_SYSCOMMANDのハンドラ作れ

201 名前:デフォルトの名無しさん :03/02/12 00:34
>>198
左上のメニューのバージョン情報は
どうなってますか?
IDD_ABOUTBOXダイアログを
オーバーライドされたOnSysCommand()で
起動しているようですが。



202 名前:187 :03/02/12 00:42
>>201
すみません、メニューのバージョン情報とはどこのことでしょうか?
VS_VERSION_INFOならあります。

>>200
クラスウィザードからハンドラの追加の方法がわかりませんでした。
イベントから追加しようとして、
SYSCOMMANDが左の蘭になく、誤ってWM_CANCELMODEを追加してしまって
消せなくなってしまいました(鬱


203 名前:デフォルトの名無しさん :03/02/12 00:44
>>194
これも良いみたいですね。
char str[1024];
GetModuleFileName(NULL, str, 1024);
cout << str << endl;

で結果が

D:\TEMP\TEST2\DEBUG\TEST2.EXE

こうなりました。こっちの方が汎用性が高いかな。



204 名前:デフォルトの名無しさん :03/02/12 00:45
つーかClassWizardの使い方をWEBなりMSDNなりで調べてこい。
それですべて解決だ。

205 名前:デフォルトの名無しさん :03/02/12 00:46
>>202
ダイアログ左上のアイコンを左クリックすると、
メニューが出ませんか? その中でバージョン
情報の表示を選択できますが。




206 名前:デフォルトの名無しさん :03/02/12 00:48
>>203
つーかそのやり方が定番だから。

207 名前:デフォルトの名無しさん :03/02/12 00:49
>>202
class view のクラス名の上で右クリック
→メッセージハンドラの追加
でできますよ。

208 名前:187 :03/02/12 00:50
>>205 >>204
イベントからOnSysCommandを追加することができました。
フィルタのところでwindowを選択することで出てきました。
どうもありがとうございました。


209 名前:デフォルトの名無しさん :03/02/12 00:52
>>207
これで、フィルタを「ウィンドウ」にすると、
WM_SYSCOMMAND のハンドリングが
できる雰囲気。



210 名前:名無しさん :03/02/12 02:02
COMポートからデータを読み出すプログラムが組みたいのですが、どうもうまくいきません。
具体的にいうと「フフフフフフフフフフフフフフフ・・・」てな感じです。どうしたらいいのでしょう?
明日の朝までに組まなきゃいけなくて、四苦八苦してます。

211 名前:名無しさん :03/02/12 02:03
ちなみに、API使ってます。

212 名前:デフォルトの名無しさん :03/02/12 02:09
初期化されてないとフフフフになるよ

213 名前:名無しさん :03/02/12 02:14
初期化ですか?いまいちやりかたが・・・(汗

214 名前:デフォルトの名無しさん :03/02/12 02:18
> フフフフフフフフフフフフフフフ・・・

ストーカーからの電波を受信しています。

つーか、NT とかだと、確保してから 1 度も使われてないメモリ領域は 0xCC で
塗りつぶされている。
それを読んでしまっているのだから、データをきちんと COM ポートからメモリに
読み込めていないんじゃないか?

215 名前:デフォルトの名無しさん :03/02/12 02:22
塗りつぶされるのはNTとかじゃなくてデバッグ時だった気が。

216 名前:デフォルトの名無しさん :03/02/12 02:26
俺もデバッグ用にVCが埋め込んでるんだと思ってた

217 名前:デフォルトの名無しさん :03/02/12 02:26
>>210
できもしない仕事を請け負ったんだから自業自得ですな

218 名前:名無しさん :03/02/12 03:18
成り行き上そうなってしまって・・・(泣
一応フの羅列は回避できました。
でも、途中で読みに行かなくなっちゃって・・・

219 名前:デフォルトの名無しさん :03/02/12 04:36
>>218
( ´_ゝ`) フーン

220 名前:デフォルトの名無しさん :03/02/12 05:11
質問なんですが・・

CPoint t1,t2,t3;
t1=(10,10); t2=(9,10); t3=(10,9);

とあったとき、この変数3つが、近い場所にあると判断させるにはどういうプログラミングをすればいいのでしょうか…
どうかご教授お願いします。

221 名前:デフォルトの名無しさん :03/02/12 05:24
>>220
単純に距離を求めたらいかんの?

222 名前:デフォルトの名無しさん :03/02/12 05:43
>>215-216
ごめん、そうみたい。
NT のメモリ領域の初期化は 4 バイトくらいの周期だった。

223 名前:デフォルトの名無しさん :03/02/12 05:44
言語や開発環境のスレで、ロジックまで教えるべきなのかどうかいつも
迷うのだけれども

224 名前:デフォルトの名無しさん :03/02/12 05:52
>>220
「近い」の定義がよく分からんぞ。
とりあえず適当に決めた一定値以内の距離だったら近いとすれば?

225 名前:デフォルトの名無しさん :03/02/12 06:47
>>221、224
 近い、という定義はだいたいxとyの座標がそれぞれ0〜1ずれていても同じとみなしたいのです…
 3つの座標は、ぞれぞれ3つの辺の始点と終点を示しています。
 2つの辺の始点か終点が重なれば一つの頂点としてみなしたいのです。
 慌てていたので、ちょっと上の質問例が違っていました。訂正します
 自作のプログラムでは線分を切り出した時にこのような座標の取り方をしたので、
 これをうまく使って「この3辺は三角形だ」と認識させたいと考えています。

#define siten 0
#define syuten 1

CPoint t1[2],t2[2],t3[2]; //一辺の始点と終点の座標を持つ
t1[siten]=(0,0); t1[syuten]=(10,0); // "1"の辺の始点と終点
t2[siten]=(10,1); t2[syuten]=(4,8); // "2"の辺の始点と終点
t3[siten]=(0,1); t3[syuten]=(4,7); // "3"の辺の始点と終点

 1111111111
3 2
3 2
3 2
3 2
3 2
3 2
32
2

よろしくお願いします。

226 名前:デフォルトの名無しさん :03/02/12 06:49
>>225
各点間の距離をそれぞれ求めてそれが0〜1なら重なってるフラグ立てりゃいいじゃん

227 名前:デフォルトの名無しさん :03/02/12 06:50
あ、三角形が潰れてしまった…鬱氏
実際に紙に書いてもらえればわかりやすいと思います…
ほんとすいません つД;)



228 名前:デフォルトの名無しさん :03/02/12 07:29
>>226
で良いんじゃないの? ダメ?



229 名前:デフォルトの名無しさん :03/02/12 08:31
>>178
>実行しているファイルと同じディレクトリにある設定ファイルを読みたいので
>すが、ファイル名だけでオープンしようとすると上手くいきません。

こんな感じに配置してVCから実行してるのなら
C:\VC\test\Debug\test.exe
C:\VC\test\Debug\test.ini

次のようにやってみて
C:\VC\test\Debug\test.exe
C:\VC\test\test.ini

VCから実行すると実行ディレクトリは実行ファイルがあるところじゃなく
プロジェクトファイルがあるところになっちゃうかね

絶対パスだと読み込めたところをみるとたぶんこれが原因じゃないかな?




余談だけどWritePrivateProfileStringなんかの設定ファイルを書き込むやつは
ファイル指定が "test.ini" と ".\\test.ini" じゃ動作が異なるから気をつけて
前者だとウィンドウズディレクトリに設定ファイル作っちゃうから

230 名前:デフォルトの名無しさん :03/02/12 10:35
>>227
しつこい

>>229
プロジェクト→設定のデバッグタブで作業ディレクトリ変えりゃ済む話でないの?

231 名前:デフォルトの名無しさん :03/02/12 15:02
パスの質問はもう答え出てるから。

232 名前:デフォルトの名無しさん :03/02/12 17:01
マイクロソフトの"マイコンピュータ"や"ローカルディスク"等の

標準的なアイコンを自分のソフトに組み込んで使用したいのですが、

著作権はどのようになっているのでしょうか?(自分のソフトに組み込んで使えますか?)

また、二次使用できる場合、どこで配布されているでしょうか?


233 名前:デフォルトの名無しさん :03/02/12 17:24
毎回読みこめば?

234 名前:デフォルトの名無しさん :03/02/13 20:44
あほな質問ですまにゅ。
VC++6.0で独自のインターネットブラウザって作成可能なの?

235 名前:デフォルトの名無しさん :03/02/13 20:48
論理的には可能ですか。

236 名前:デフォルトの名無しさん :03/02/13 21:11
作れるけどライセンスの問題があるから
IEコンポーネントを使う

237 名前:デフォルトの名無しさん :03/02/13 23:55

ライセンスってJPEGの?
独自ブラウザは不可能なんですかね?



238 名前:デフォルトの名無しさん :03/02/13 23:59
テキストベースにする裏技

239 名前:デフォルトの名無しさん :03/02/14 02:07

MFCのCEdit なんですが、コントロールから
改行する方法ってどうしたら良いんでしょうか?

リソースエディタで複数行と、改行を許可は選んであります。

それで、ReplaceSel で文字を書いたのですが、
どうも改行されない。\n では改行できないんでしょうか?
CString からDDXを使う方法もありますが、後学のためにも
コントロール自体で操作したいと考えています。



240 名前:デフォルトの名無しさん :03/02/14 02:10
>>239
CRLF (\r\n) じゃなかったっけ

241 名前:デフォルトの名無しさん :03/02/14 02:10
改行は \r\n

242 名前:デフォルトの名無しさん :03/02/14 02:17

ども。ありがとうございます。
\r\n
で解決しました。



243 名前:デフォルトの名無しさん :03/02/14 02:34
コードを見やすくしたいんですけど、

class CDInput8{...};
void* pvRef;

として、

((CDInput8*)pvRef)->DInput->CreateDevice(...);


これ、綺麗になりませんか?

244 名前:名無し@沢村 :03/02/14 04:30
>>243
static_cast<CDInput8*>(pvRef)->DInput->CreateDevice(...);

245 名前:デフォルトの名無しさん :03/02/14 19:28
見やすくしたいとはこれ如何に

246 名前:デフォルトの名無しさん :03/02/14 20:50
CDInput8* pDInput8 = static_cast<CDInput8*>(pvRef) ;
CDInput* pDInput = pDInput8->DInput ;
pDInput->CreateDevice(...);

駄目か。かえって見づらい?
->を何段も重ねるの好きじゃないんだが。

247 名前:デフォルトの名無しさん :03/02/14 21:59
まったくの初心者がVisual C++ .NETを購入して学習していくのは無謀ですか?
(いちお、古いJava本で配列・演算・インクルの概要は把握しました・・・)

そのうち、新しい2chブラウザー(低機能)を作ったり
ネットワークゲーム(ターン制)を作ってみたいです

VB.Netの方が初心者向きですか?

248 名前:デフォルトの名無しさん :03/02/14 21:59
CDInput8のインラインメンバ関数に


249 名前:デフォルトの名無しさん :03/02/14 22:08
>>247
初心者と言ってもどのレベルか分からん。
C++が分からんのなら無謀!

250 名前:由美(ネカマ1号機) :03/02/15 00:18
変な質問ですいませんが…
Visual C++って何ができるんですか?


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