★初心者にVisual C++を教えるスレ★ Part21

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
1 : ◆Manna2uCLg :2005/04/15(金) 13:33:14
Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

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

  ∧_∧
 ( ´∀`) < ぬるぽ

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

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

過去スレ、関連スレなどは>>2-5
2デフォルトの名無しさん:2005/08/23(火) 23:12:48
3デフォルトの名無しさん:2005/08/23(火) 23:16:12
>>1
4デフォルトの名無しさん:2005/08/23(火) 23:17:13
【関連スレ】
■MFC相談室 mfc14d.dll■
http://pc8.2ch.net/test/read.cgi/tech/1121200124/l50
Win32API質問箱 Build34
http://pc8.2ch.net/test/read.cgi/tech/1122723009/l50
鬱だ氏のう DirectX (Part 15)
http://pc5.2ch.net/test/read.cgi/tech/1096649788/l50
C言語なら俺に聞け! Part 112
http://pc8.2ch.net/test/read.cgi/tech/1123432321/l50
C++相談室 part43
http://pc8.2ch.net/test/read.cgi/tech/1124113879/l50
C/C++の宿題を片づけます 49代目
http://pc8.2ch.net/test/read.cgi/tech/1123661447/l50
【初心者歓迎】C/C++室 Ver.20【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1121644782/l50

【関連サイト】
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
MSDN ライブラリ ※変更された
http://msdn.microsoft.com/library/ja/
Platform SDK Update ※変更された
http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
Google
http://www.google.co.jp/
5デフォルトの名無しさん:2005/08/23(火) 23:18:33
6デフォルトの名無しさん:2005/08/23(火) 23:32:33
>>1
7デフォルトの名無しさん:2005/08/23(火) 23:43:57
何でVisual C++なのか。
Windowsプログラムは作れないといけないのかな。
難しい知識がいる割に、あんなん作れて何か役に立つのかな。

http://pc8.2ch.net/test/read.cgi/tech/1120222322/991
8デフォルトの名無しさん:2005/08/24(水) 00:04:29
MS-DOSプロンプトからビルド出来るならVC++でもビルド出来る
儲けたいならLinuxを学んだほうがいい
9デフォルトの名無しさん:2005/08/24(水) 00:10:35
おいおいマジで言ってんのかよ
10デフォルトの名無しさん:2005/08/24(水) 00:12:13
VC2005はC99に対応するの?
11デフォルトの名無しさん:2005/08/24(水) 00:14:17
しない
12デフォルトの名無しさん:2005/08/24(水) 00:16:24
『Win32コンソールプロジェクト』をプロジェクトで選ぶのと
『Win32プロジェクト』を選んでコンソールアプリケーションにチェックを入れるのとではどう違うのですか。

また、『コンソールアプリケーション(NET)』との違いもあわせて教えて下さい。
13デフォルトの名無しさん:2005/08/24(水) 00:35:49
C99未対応でも、C++でコンパイルしたら通るってわけではないってことなのか。
14デフォルトの名無しさん:2005/08/24(水) 00:41:44
>>12
前者は同じ。後者はマネージドコードを生成する。
15デフォルトの名無しさん:2005/08/24(水) 00:53:41
はじめまして。
http://www.mech.t.u-tokyo.ac.jp/~t40263/04mecha/skincolor.c
のサンプルプログラムを動かしてみたのですが、
C:\kenkyu\MSDev98\MyProjects\yoshimi\yoshimi.cpp(69) : warning C4508: 'process' : 関数に戻り値の型が指定されていません。戻り値を void 型と見なします。
リンク中...
LIBCD.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です
Debug/yoshimi.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー

yoshimi.exe - エラー 2、警告 1

とエラーが出てしまいます。
本当に初心者ですみません。
解決方法を教えてください。
16デフォルトの名無しさん:2005/08/24(水) 00:56:03
それにしても、Visual C++の本は、いろんなことを一通り解説しようとするから、
それだけでは何の役にも立たないプログラムに留まってしまわざるを得なくなる
のかも知れんな。
Visual C++でひとくくりで、一通りの解説で、後は読者がこれらの知識を応用して
くれってものでは厳しいな。分野別に一冊の本でしっかり解説して、何巻もの分野
の本を出版してるほうがいいのではないか。
17デフォルトの名無しさん:2005/08/24(水) 01:00:18
>>15
mainがない。
warningの方はメッセージの通り。
18デフォルトの名無しさん:2005/08/24(水) 01:15:08
>>14
どうもありがとうございました。
NET=マネージドコードと解釈していいみたいですね。

もしよければ、VC++.NET2003の使い方を解説しているおすすめのサイトがあったら教えて下さい。
MFCは未経験で、MFCを取り扱っていてもいなくても構いません。
19デフォルトの名無しさん:2005/08/24(水) 01:23:43
>>18
NETじゃなくて.NET(ドットネット)な
20デフォルトの名無しさん:2005/08/24(水) 01:50:08
>>18

/* skincolor.c*/
void process(unsigned char *tmpbuf, int xsize, int ysize);

int main(void)
{
unsigned char str1[1024];

process(str1, 6, 8);
return 0;
}

void process(unsigned char *tmpbuf, int xsize, int ysize)
{
int x, y;
int rin, gin, bin;
.....(略)
21デフォルトの名無しさん:2005/08/24(水) 01:50:49
>>18
------------------------------------------------------------
[スタート] -> [プログラム(P)] -> [Microsoft Visual Studio .NET 2003]
-> [Visual Studio .NET ツール] -> [Visual Studio .NET 2003 コマンド プロンプト]
------------------------------------------------------------
C:\>cd kenkyu\MSDev98\MyProjects\yoshimi

C:\kenkyu\MSDev98\MyProjects\yoshimi>cl yoshimi.cpp
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.

yoshimi.cpp
Microsoft (R) Incremental Linker Version 7.10.3077
Copyright (C) Microsoft Corporation. All rights reserved.

/out:yoshimi.exe
yoshimi.obj
22デフォルトの名無しさん:2005/08/24(水) 02:18:00
>>18
まずはC言語に専念したほうがいいんじゃないか。
23デフォルトの名無しさん:2005/08/24(水) 02:43:29
>>22
今までC/C++に専念してきて、APIを使ったWinプログラミングを勉強し、
まだまだですがそろそろVC++(とWinプログラミングとMFC?)を扱ってみようかなと思いました。
ずっとググっているのですがVC++.NETの解説しているサイトはあまり無いようですね。
明日本屋に行ってみます。
24デフォルトの名無しさん:2005/08/24(水) 02:44:45
>>19
あーそうですよね。
プロジェクトに書いてあるのは、(NET)と書いてあるのでNETと書いてしまいました。
25デフォルトの名無しさん:2005/08/24(水) 04:24:33
>>18
MFCも、VisualStudioもどういうわけか、入門サイトはありません。マジで。
中級者むけのTipsはあるんだけどね。
26デフォルトの名無しさん:2005/08/24(水) 04:25:51
まぁ、入門サイトが充実しているのはC/C++とJava、CGI くらいのものなんだけどね。
27デフォルトの名無しさん:2005/08/24(水) 04:37:15
>>20
void process(unsigned char *tmpbuf, int xsize, int ysize);

int main(void)
{
unsigned char str1[1024];

process(str1, 6, 8);
return 0;
}
をつけたしてみたところ
C:\kenkyu\MSDev98\MyProjects\yoshimi\yoshimi.cpp(13) : error C2556: 'int __cdecl process(unsigned char *,int,int)' : オーバーロード関数の戻り値は異なっていますが、引数リストは同一です。
C:\kenkyu\MSDev98\MyProjects\yoshimi\yoshimi.cpp(13) : error C2371: 'process' : 再定義されています。異なる基本型です。
C:\kenkyu\MSDev98\MyProjects\yoshimi\yoshimi.cpp(3) : 'process' の宣言を確認してください。
とエラーが出てしまいました。
28デフォルトの名無しさん:2005/08/24(水) 04:40:03
>>21
本当に初心者ですみません。
その意味はどういう意味ですか?
29デフォルトの名無しさん:2005/08/24(水) 05:08:34
VC++じゃなくてC言語の問題だと思う。
30デフォルトの名無しさん:2005/08/24(水) 05:09:21
ついでに、なんでも無料で見れるWebで揃うと思うなかれ。

本屋で普通に売られている本に書いてあることを、
いちいち無償のWebで趣味でやろうなんていう個人は滅多にいないよ。
31デフォルトの名無しさん:2005/08/24(水) 07:17:52
>>23
本当にそれでも専念してたの?
>>27 の質問をしてるとは、CもC++も全然理解できてないよ。
そして、C++でコンパイルするとそのエラーメッセージだが、Cでコンパイル
すると、また別のエラーメッセージになる。
32デフォルトの名無しさん:2005/08/24(水) 07:39:49
おまいらレスがごっちゃになってないか?
33デフォルトの名無しさん:2005/08/24(水) 07:47:49
エディットボックスの文字に色をつけたいのですが、
どうすればできますか?
34デフォルトの名無しさん:2005/08/24(水) 07:49:24
>>28
あえて日本語の文章は書いてないが、初心者のために書いた内容だぞ。
本当にやばいな。
35デフォルトの名無しさん:2005/08/24(水) 08:01:46
>>28
コマンドラインでコンパイルするという意味です。
3623:2005/08/24(水) 08:14:04
>>31
たぶん>>20-21はレス番を間違えているのでレスしていません。(私は>>28でもありません)
15さんと12(私)は違う人です。
ややこしいですが、そういうことです。
37デフォルトの名無しさん:2005/08/24(水) 12:19:52
>>33
OnCtlColorハンドラを作り、その内部でコントロールの識別をして、
該当コントロールの場合のみ、pDC->SetTextColor()で文字色設定
ってとこかな?
3833:2005/08/24(水) 14:01:13
MFCでなくAPIの組み合わせでは不可能なのですか?
39デフォルトの名無しさん:2005/08/24(水) 14:02:17
>>38
初めからそう書けよ馬鹿
40デフォルトの名無しさん:2005/08/24(水) 16:54:48
>>38
たぶん無理。
少なくとも、エディットボックスの文字色を直接変更するAPIは存在しない。
WM_CTLCOLORのハンドラで文字色を設定するのが定石。
41デフォルトの名無しさん:2005/08/24(水) 21:42:30
>>38
1.サブクラス化
2.Windowプロシージャ自分で書く
42デフォルトの名無しさん:2005/08/24(水) 22:17:12
1と2はどう違うのだろう
43デフォルトの名無しさん:2005/08/24(水) 22:29:20
サブクラス化して、Windowプロシージャ自分で書く ってことだろ。
44デフォルトの名無しさん:2005/08/24(水) 23:12:51
チェックボックスに背景色を付けるのは案外面倒だた
45デフォルトの名無しさん:2005/08/24(水) 23:22:51
恐れながら質問をさせていただきます。
開発環境はVC.NET。
MFC ダイアログのアプリケーションを作っています。
リストコントロールを配置してカラムとアイテムを追加しテーブルを作成しました。

問題はアイテムの書き換えです。同じようにやると書き換えではなく
新規のアイテムが追加されてしまいます。アイテムを更新するには
どうすればよいでしょうか?
46デフォルトの名無しさん:2005/08/24(水) 23:30:42
>>45
MSDNでCListCtrlのメンバを良く調べるんだ。
47デフォルトの名無しさん:2005/08/25(木) 00:05:57
標準ライブラリとかってデバッグで関数内に入れるけど、
これって書き換えちゃったりしたらどうなるの?てか戻せるの?
書込み禁止にはなってるけど心配。
だれかがいたずらで書き換えちゃったらと思うと・・・・
48デフォルトの名無しさん:2005/08/25(木) 00:06:42
>>46
MSDNはどこにありますか?
49デフォルトの名無しさん:2005/08/25(木) 00:09:25
>>47
動作が変わることはない。デバッグ時に表示される行の表示位置がずれたりするけど。
書き換えたら書き換えたで、またインストールし直せばいいじゃない。
5045:2005/08/25(木) 00:11:27
>46
即レスありがとうございます。
以下のコードでアイテムを追加しました。
int nItem;
CString str;
nItem = List.InsertItem(0,"合計");
List.SetItem(nItem,1,LVIF_TEXT,str,0,0,0,0);

メンバを調べてみたのですがSetItemTextが使えそうです。
SetItemText(nItem,1,str);
この場合nItemはどのような値を使えばいいのでしょうか?
初心者過ぎる質問でスミマセン_| ̄|○
51デフォルトの名無しさん:2005/08/25(木) 00:20:41
>>50
MSDNでSetItemTextの引数の説明をよく読むんだ。
52デフォルトの名無しさん:2005/08/25(木) 01:09:51
すばらしい返答だな!
53デフォルトの名無しさん:2005/08/25(木) 02:20:58
>>49
>動作が変わることはない。

まじかよ
54デフォルトの名無しさん:2005/08/25(木) 02:42:05
>>53
自分で書いたプログラムだってソースをどういじくろうが
コンパイルしなきゃ動作は変わらないだろーうがぁ。
インタプリタは除くが。
55デフォルトの名無しさん:2005/08/25(木) 03:27:18
>>54
え?どういう意味?屁理屈??
ソースいじってビルドして実行したらさすがに変わるよねえ?
それとも、ライブラリを書き換えても実行時には元に戻るって事なの?
56デフォルトの名無しさん:2005/08/25(木) 03:29:24
Class Propertyってどこにあるのですか?
57デフォルトの名無しさん:2005/08/25(木) 04:08:14
>>55
よくもまぁ検証もせずに屁理屈呼ばわりできるものだな
58デフォルトの名無しさん:2005/08/25(木) 04:35:40
>>55
おまいは、いつもライブラリもビルドしているのかと小一時間問いつめたい。
59デフォルトの名無しさん:2005/08/25(木) 08:39:30
>>47
たしか読み取り専用になっていた気がする。
60デフォルトの名無しさん:2005/08/25(木) 11:30:30
ddespyを手に入れる方法教えてください。
ddespyが欲しいんですがVB6のためついていません。
ddespyのためにvisual studio買うのももったいないので、
何かの付録CD-ROMについているとか情報ないでしょうか?
61デフォルトの名無しさん:2005/08/25(木) 11:46:44
>>60
2005βについてるんじゃないかな?
62デフォルトの名無しさん:2005/08/25(木) 19:10:51
>>31
はい・・本当に何もわからない状態なのですが、これをやらないといけない状態でして(;_;)
どうにか助けていただきたい状態なのです。
本当にすみません。

>>35
コマンドラインでコンパイルするとはどういう意味ですか?
63デフォルトの名無しさん:2005/08/25(木) 19:26:02
環境はVC6.0なんですが
error LNK2001: 外部シンボル ""void __cdecl CreateEditLine(struct HWND__ *,unsigned int,long)" (?CreateEditLine@@YAXPAUHWND__@@IJ@Z)" は未解決です
というエラーが読めなくて困っています。
LNK系のエラーメッセージの詳細がのっているページとかありませんか?
64デフォルトの名無しさん:2005/08/25(木) 19:39:32
すみません、自己解決しました
アホ過ぎたorz
65デフォルトの名無しさん:2005/08/25(木) 20:09:25
>>62
コマンドプロンプト上で、コンパイラのコマンドを使って
プログラム(ソースファイル)をコンパイルすること。

>>21の中で使っているclというのは、VCが使っているコンパイラ。
つまり、やってることはVC上でコンパイルするのとほとんど同じ。
(今回の場合はね)

さすがにコンパイラとコンパイルの区別はできるよね?
まさかC言語すら知らないわけじゃないよね・・・?
66デフォルトの名無しさん:2005/08/25(木) 20:22:28
今度のC++/CLI はどんな感じ?
(Managed C++ はとりあえずCLI環境C++作ってみましたってだけだったらしいけど?)
67very sage:2005/08/25(木) 21:47:26
>>62
困ったもんだ。
>コマンドラインでコンパイルするとはどういう意味ですか?
VCの統合開発環境を使わずにコマンドプロンプトの画面からコンパイル
するという意味です。
VCの[ビルド] -> [ビルド]および[実行]と同様のことができます。

Visual C++ 6.0ですか。それなら >>21 に示したスタートメニューはないので、
普通のコマンドプロンプト(MS-DOS プロンプト)を起動します。
起動すると、その画面には、
C:\>
または
C:\WINDOWS>
が表示されて、その右側にカーソルが点滅して文字を入力できるでしょう。

まずは、カレントディレクトリを、ソースファイルの
あるディレクトリに移動しましょう。

cd \kenkyu\MSDev98\MyProjects\yoshimi
を入力して Enterを押しましょう。すると、

C:\kenkyu\MSDev98\MyProjects\yoshimi>
と表示して、カレントディレクトリを移動しますね。
次にコンパイルするための準備が必要です。
vsvars32.bat というバッチファイルを実行します。そのファイルは Visual Studio
のディレクトリにあるはずです。Windowsのファイル検索プログラムで検索するといい
でしょう。
68very sage:2005/08/25(木) 21:48:45
>>62
[スタート] -> [検索(C)] -> [ファイルやフォルダ(E)...] を選択して、「ファイルま
たはフォルダの名前(M)」(Windows 95や98では「名前(N)」)に vsvars32.bat を入力
して、「探す場所(L)」を正しく指定して、[検索開始(S)]をクリックして検索しましょう。
しばらくすると、検索結果が一覧に表示するはずです。一覧に表示した vsvars32.bat
をマウスでコマンドプロンプトの画面までドラッグアンドドロップしましょう。初心者
だからといって、誤ってデスクトップ上でマウスを放して、デスクトップ上にそのファ
イルを移動してしまわないように注意しましょう。
正しくドラッグアンドドロップをすると、コマンドラインに、そのバッチファイルの
フルパス名が自動的に入力できた状態になっているはずです。これで、Enterキーを押して、
そのバッチファイルを実行しましょう。
これで、コマンドラインでコンパイルする準備ができました。
それでは、コマンドラインからコンパイルするには、clコマンドを使います。
69very sage:2005/08/25(木) 21:49:24
>>62
cl コンパイルするソースファイル名
と入力するとコンパイルできます。
あんたの例では、
cl yoshimi.cpp
と入力するんやで。

VCからビルドするのもいいけど、いちいちプロジェクト作ったりするのが面倒だったりする
からな。このようにコマンドラインからコンパイルするだけで済ませたほうが早いときは
こうしたほうがいいから言ったんやで。
70デフォルトの名無しさん:2005/08/25(木) 21:51:39
>>25,26
マジでないですね。
やっと一つそれなりのサイトを見つけたんですがやっぱり本買った方がいいですね。
説明書すら付いていないし、豊富と思ってた資料もweb上では全然無いし・・・
71デフォルトの名無しさん:2005/08/25(木) 22:06:42
72very sage:2005/08/25(木) 22:21:58
>>62
process() 関数は、内部でどういう処理をしてるのかは不明で、また、コンパイル
して実行しても何も出力しません。この process() 関数にこだわる理由は何かあり
ますか。
とりあえず、関数の仮引数はそのままで、呼び出し元と関数の内部を次のように書き
換えてみてはどうですか。

------------------------------------------------------------
#include <stdio.h>

void process(unsigned char *tmpbuf, int xsize, int ysize);

int main(void)
{
/* unsigned char str1[1024]; */

/* process(str1, 6, 8); */
process("拡張子 .c でいいんじゃないか。", 6, 8);
return 0;
}

/* process(unsigned char *tmpbuf, int xsize, int ysize) */
/* だめです、先頭に void を付けましょう */
void process(unsigned char *tmpbuf, int xsize, int ysize)
{
printf("tmpbuf == \"%s\"\nxsize == %d\nysize == %d\n", tmpbuf, xsize, ysize);
}
73デフォルトの名無しさん:2005/08/25(木) 22:24:49
74very sage:2005/08/25(木) 22:39:44
>>73
15 == 27 == 28 == 62 != 23
12 == 18 == 23 == 36
だと思う。
75デフォルトの名無しさん:2005/08/25(木) 22:43:59
>>74
むしろ>>72に向けて言ってやれ。
76デフォルトの名無しさん:2005/08/25(木) 23:31:08
MessageBox()はあっても、VB の InputBox() に当たるものが、Win32API(またはMFC)
にはないと思うんですが、もしかしてありますか。
(スレ違いだが VCL にもあるのかも気になる。)
77very sage:2005/08/26(金) 00:18:58
>>62
>>72は、Cでならエラーは出ないが、C++ならエラーが出るので、(unsigned char *)でキャストしましょう。

修正前: process("拡張子 .c でいいんじゃないか。", 6, 8);
修正後: process((unsigned char *)"拡張子 .c でいいんじゃないか。", 6, 8);

それと、一つ言い忘れた。
これも初心者でなければ当たり前でわかりきったことだけど。
コンパイルしたプログラムを実行するには、そのプログラム名をコマンドラインで入力するんだよ。

------------------------------------------------------------
C:\kenkyu\MSDev98\MyProjects\yoshimi>cl yoshimi.cpp   ←── コンパイルするコマンドを入力
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.

yoshimi.cpp
Microsoft (R) Incremental Linker Version 7.10.3077
Copyright (C) Microsoft Corporation. All rights reserved.

/out:yoshimi.exe
yoshimi.obj        ←── エラーで出ずにコンパイル・リンクが成功した

C:\kenkyu\MSDev98\MyProjects\yoshimi>yoshimi  ←── コンパイルしたプログラム名を入力すると実行する
tmpbuf == "拡張子 .c でいいんじゃないか。"
xsize == 6
ysize == 8        ←── 実行結果が標準出力される

C:\kenkyu\MSDev98\MyProjects\yoshimi>
78デフォルトの名無しさん:2005/08/26(金) 00:46:53

昔のVC++の廉価エディションは作ったアプリを配布することはできなかったけど
今のVC++.net standardはアプリ配布okなの?
79verysage:2005/08/26(金) 01:13:53
>>62
バッチファイル名は、.NET 2003は vsvars32.bat だが、VC6.0は vcvars32.bat のようだ。

"C:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT"
例えば、こんなフルパス名になるようだ。

これも参考にするといいだろう。
http://yokohama.cool.ne.jp/chokuto/urawaza/mcn/vc_cmdline.html
80very sage:2005/08/26(金) 01:29:06
81デフォルトの名無しさん:2005/08/26(金) 03:54:56
VC++Expressのβ2をインストールし、dumpbinを使おうとするとlink.exeがアプリケーションエラーを吐いて
起動出来ません。表示→アプリケーションを正しく初期化できませんでした(0xc0150002)
一応環境変数等はきっちり通してあるつもりですが、対処方法ありましたら
ご指導下さい。
82デフォルトの名無しさん:2005/08/26(金) 04:57:57
2003もvcvars32.batじゃないの?

と、思ったが、vcvars32.batはvsvars32.bat実行してるだけだなorz
83デフォルトの名無しさん:2005/08/26(金) 05:14:41
>>76
普通にダイアログ作って、GetDlgItemTextとかで取得するしかないんじゃね?
84デフォルトの名無しさん:2005/08/26(金) 10:53:50
>>72
ソースがあるサイトには「肌色抽出プログラム」って書いてるから
画像のデータ抽出用の関数な気がする。
だとすると、tmpbufには画像データ(ビットマップ)が入るわけで、
さらにそれを何らかの手段で取得できるようにしないといけない。

まあ、つまりは>>62の理解度だと
process()関数だけじゃ何もできないってことだ。
とか、>>62はコレ使って何をしたいの?
85デフォルトの名無しさん:2005/08/26(金) 11:31:52
>15の所為ですっかりぐだぐだなスレになったな。
86デフォルトの名無しさん:2005/08/26(金) 12:48:53
.NET のようなタブ式ウィンドウを作りたいのですが、どのように掏ればいいですか?
タブコントロールならサンプルを見つけたんですが
87デフォルトの名無しさん:2005/08/26(金) 13:01:11
漠然としすぎだな
88デフォルトの名無しさん:2005/08/26(金) 13:12:48

昔のVC++の廉価エディションは作ったアプリを配布することはできなかったけど
今のVC++.net standardはアプリ配布okなの?
8986:2005/08/26(金) 15:45:50
xyzzy のような、数ファイルD&Dして一つのウィンドウに1つのファイルを
開いてくれるようなやつでもいいんですが
90デフォルトの名無しさん:2005/08/26(金) 15:48:36
タブコントロール使って作ればええやん。
何がわからないんだ?
91デフォルトの名無しさん:2005/08/26(金) 16:24:08
Visual C++ 2005 βが無料で使えるみたいなので、落としてる最中なんですが、
このソフトは何か問題がありますか?
プログラミング経験無しの素人の俺が覚えるために使おうとしているので、
初心者向きでは無いなら、他のソフトにしようと思っていますので、よろしくお願いします。
92デフォルトの名無しさん :2005/08/26(金) 16:39:51
前のvsと比べ、使いかって等が良くなっている。
プログラミング経験無しでも問題ない。
だが、30日しか使えないので、2005が正式に出たら買うべきだ。
93デフォルトの名無しさん:2005/08/26(金) 17:44:41

昔のVC++の廉価エディションは作ったアプリを配布することはできなかったけど
今のVC++.net standardはアプリ配布okなの?
94デフォルトの名無しさん:2005/08/26(金) 19:12:34
βはあくまでβだからな
オンラインゲームのβとはわけが違う
95デフォルトの名無しさん:2005/08/26(金) 19:16:22
>>92
登録したらずっと使えるんじゃないの?
96デフォルトの名無しさん:2005/08/26(金) 19:32:02
97デフォルトの名無しさん:2005/08/26(金) 19:37:22
>>96
ご注意: Visual Studio 2005 Express Edition Beta 2 を 30 日以上お使いになるには、
ユーザー登録およびライセンス認証が必要です。

http://www.microsoft.com/japan/msdn/vstudio/2005/express/visualc/
98デフォルトの名無しさん:2005/08/26(金) 19:40:02
>>97
βだからってのはそれだけの意味じゃないだろ
99デフォルトの名無しさん:2005/08/26(金) 19:40:39
>>97
オマエは一生βで開発するのか?
100デフォルトの名無しさん:2005/08/26(金) 20:03:51
>>92
ありがとうございます。これからこちらのスレでお世話になるかもしれないですけど、
よろしくお願いします。

製品の期限は、登録をすると来年の5月ほどまで使えるそうですが、
本格的にやろうと思いますので、製品版がでたら購入しようと思っています。

101デフォルトの名無しさん:2005/08/26(金) 20:06:53
書籍紹介スレって
http://pc8.2ch.net/test/read.cgi/tech/1064681919/
http://pc8.2ch.net/test/read.cgi/tech/1090723093/
この二つしか無い?

なんか廃れてるみたいなんだけど、ここは書籍話題はタブーなのか?
102デフォルトの名無しさん:2005/08/26(金) 20:19:44
>>101
別にタブーではないと思うが、
入門書、参考書の類はたくさん種類がある上に、
ほとんどがロクな内容じゃないから読む気がしないんだろう。
もうお腹いっぱいというか、胃もたれ起こしたというか、そんな感じ。
103デフォルトの名無しさん:2005/08/26(金) 20:46:42
104デフォルトの名無しさん:2005/08/26(金) 20:48:49
検索にかかりにくいスレタイだな
105デフォルトの名無しさん:2005/08/26(金) 21:30:48
>>102
なるほど。それは初心者スレにはありがちな事だな。
>>103
ありがと。書籍、本、で検索してかからないわけだよw
106デフォルトの名無しさん:2005/08/27(土) 16:14:34
C言語の勉強をしたくてVisual C++ .netを買ったんですが
調べてみるとものすごく不評っぽいんですが
どうなんでしょうか?
教えてエロイ人
107デフォルトの名無しさん:2005/08/27(土) 16:20:28
BCBよかましだろ。
108デフォルトの名無しさん:2005/08/27(土) 16:24:36
質問です。XP、Visual C++ .NET です。

CFile::Open() でエラーが生じた場合、
CFileException 構造体でエラー情報を受け取り、
エラーの種類の取得は、CFileException のメンバ m_cause で行っています。

ところが m_cause は整数値です。
ユーザに分かるようにエラー名をメッセージボックスに表示させようと思うのですが、
あらかじめエラー用の文章は用意されていないのでしょうか。
自分で switch 文などで、作成するしかないでしょうか。

よろしくお願いします。
109デフォルトの名無しさん:2005/08/27(土) 16:37:36
>>108

つ[CException::ReportError()]
110デフォルトの名無しさん:2005/08/27(土) 16:38:31
自社製のOS上の開発ツールなのに不評ってどういうことなんだ。
自社製だからBorlandより有利なはずなのに。
111デフォルトの名無しさん:2005/08/27(土) 16:42:39
VC++.NETが不評だなんて聞いたこと無いが
112デフォルトの名無しさん:2005/08/27(土) 16:51:59
同じく聞いたこと無いが

とはいえ、OSが自社製だからってのと開発ツールのできのよさはまったくもって無関係
特に外逸一族の作るものは得てして、重いうえに使いづらい。
113デフォルトの名無しさん:2005/08/27(土) 17:03:47
>>112
「外逸」を漢和辞典と国語辞典で調べてみたが、載ってないんだけど。
114108:2005/08/27(土) 17:07:57
>>109
基底クラスのメンバを調べるのを失念していました。お恥ずかしい・・・
ありがとうございます。
115デフォルトの名無しさん:2005/08/27(土) 17:17:51
毎黒祖父戸野微瑠外逸
116デフォルトの名無しさん:2005/08/27(土) 17:19:32
ああ、そういうことか
117デフォルトの名無しさん:2005/08/27(土) 18:07:21
そのまま音読みすりゃわかろうものを・・・
118デフォルトの名無しさん:2005/08/27(土) 19:02:13
>>106
どこらへんが不評なの?
俺も勉強の為に買ったけど、今までのフリーの環境でも快適だったのに、
VCにしてみてさらにエディタの機能ごときで感動してるくらいなんだけど。
さらにリソースエディタなんて、
「うおーこんな機能まであるのか!!」
ってレベルだよ。
119デフォルトの名無しさん:2005/08/27(土) 19:04:14
>>115
がいつ???????
120デフォルトの名無しさん:2005/08/27(土) 19:05:41
>>118
だから不評なんて聞いたことねぇって
121デフォルトの名無しさん:2005/08/27(土) 19:09:06
>119
外と書いて「げ」とも読むよね。
122デフォルトの名無しさん:2005/08/27(土) 19:10:15
ネタにマジレス(ry

本気で言ってるなら、がいつじゃなくてがいいつだろ
123デフォルトの名無しさん:2005/08/27(土) 19:14:48
「ゲイツ」で変換すると
「ミ田」になる俺の辞書
124デフォルトの名無しさん:2005/08/27(土) 19:37:46
みた?
125デフォルトの名無しさん:2005/08/27(土) 19:40:28
ひろこ
126デフォルトの名無しさん:2005/08/27(土) 19:40:56
ハイハイワロスワロス

>>123
窓アイコンは逆向きだろ?
127デフォルトの名無しさん:2005/08/27(土) 20:02:18
ああWindowsのマークだったのか
128デフォルトの名無しさん:2005/08/28(日) 05:32:03
田彡
129デフォルトの名無しさん:2005/08/28(日) 06:34:50
いやまじだって
「ウィンドウズ」でも出る
ミ田
130デフォルトの名無しさん:2005/08/28(日) 06:37:51
誰もネタだろとか嘘だろとか言っておらん
ただ、向きが逆だろと言ってるだけだ
131デフォルトの名無しさん:2005/08/28(日) 06:44:50
>>130
お、こんな時間に奇遇だね。
じゃあ寝るか。
132デフォルトの名無しさん:2005/08/28(日) 06:58:49
生憎だが俺は起きたとこだ。
まぁ、ゆっくりと寝たまえ
133デフォルトの名無しさん:2005/08/28(日) 08:05:13
>>130
逆?鏡でも見てる?
134デフォルトの名無しさん:2005/08/28(日) 11:01:05
ウィンドウズで出るわけじゃないけど向きはあってるなぁ。

>>130
再起動してみ。
135デフォルトの名無しさん:2005/08/28(日) 17:52:18
流れがよく分からないけど質問させてもらいますね(´・ω・`)
画像を透過させ、マスク処理した画像の後ろに画像が見えるというのを表現したいのですが上手くいきません。
赤赤赤           青青青             黒白黒
赤赤赤 後ろの画像   青青青 前面の画像     白白白 前面用マスク画像
赤赤赤           青青青             黒白黒  
ずれてたらすみません、3x3の画像3種類と考えてください。
理想としては
赤青赤 ←こういう感じになって欲しいのですが、      緑青緑
青青青     マスク処理した部分が             青青青            
赤青赤       ブラシの色(緑)になってしまいます→  緑青緑

続く

136デフォルトの名無しさん:2005/08/28(日) 17:53:16
hdc = BeginPaint(hWnd, &ps);
hBrush = CreateSolidBrush(RGB(0, 255, 0));
SelectObject(hdc, hBrush);
hbmp_Red = (HBITMAP)LoadImage(hInst, "RedTex",IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR);
続き

hdc_Red = CreateCompatibleDC(hdc);
SelectObject(hdc_Red, hbmp_Red);
BitBlt(hdc, 0, 0, 3, 3, hdc_Red, 0, 0, SRCCOPY);

hbmp_Cross = (HBITMAP)LoadImage(hInst, "Cross",IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR);
hMask = (HBITMAP)LoadImage(hInst, "Cross_Mask", IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR);
hdc_mem = CreateCompatibleDC(hdc);
SelectObject(hdc_mem, hbmp_Cross);
MaskBlt(hdc, 0, 0, 3, 3, hdc_mem, 0, 0, hMask, 0, 0, MAKEROP4(SRCCOPY, PATCOPY));

DeleteObject(hbmp_Red);
DeleteObject(hbmp_Cross);
DeleteObject(hMask);
DeleteDC(hdc_mem);
DeleteDC(hdc_Red);
DeleteObject(hBrush);
EndPaint(hWnd, &ps);

これでやっていますがやり方を間違えているのでしょうか・・。
WinXP/VC++.netです。
137135-137:2005/08/28(日) 17:54:47
136の文中に続きの文字が入ったとです、申し訳ありません
138デフォルトの名無しさん:2005/08/28(日) 18:30:32
>>134
悪いが2kなんで窓マークは出ん
が、確認した、悪かった_| ̄|○i|i
139デフォルトの名無しさん:2005/08/28(日) 18:46:01
CreateCompatibleDCって普通NULLで呼び出さないか?
140デフォルトの名無しさん:2005/08/28(日) 19:04:25
なんていうか秀丸エディッタみたいなのが欲しいんですけど
C++で作れるんですか?
とりあえず興味あるんで、具体的に何からはじめていけばいいですか?
コンパイラはボーランド使ってます。
エディッタはTeraPat使ってます。
141デフォルトの名無しさん:2005/08/28(日) 19:22:05
俺は秀丸エディッタなる存在を聞いたことも見たこともないな。
142デフォルトの名無しさん:2005/08/28(日) 19:39:50
C++で作れるよ
オマエさんが作れるかは別問題だがな
143デフォルトの名無しさん:2005/08/28(日) 20:16:53
>>142
そりゃそうだねーw
今は友達がカレンダー作れるようになれって言われたからカレンダーがんばってるw
144デフォルトの名無しさん:2005/08/28(日) 20:29:01
秀丸エディタは古いコンピュータでも動くようにとのことから
Visual C++ 5.0で作っているそうです。
ちなみに実際に作成しているのは秀丸さんじゃなくて
もう一人のプログラマの人に任せていると
なんかで読みました。
145デフォルトの名無しさん:2005/08/28(日) 23:24:13
>>138
なんか起きてみたら形勢逆転かよ。
とりあえず俺に謝ってくれないか?
うそ、いいよ、許す。
146デフォルトの名無しさん:2005/08/29(月) 00:53:03
>>135
前面画像の透過部分を黒か白にして、MAKEROP4()の第2引数を
黒ならSRCPAINT、白ならSRCANDにする。
147135-137:2005/08/29(月) 01:35:11
>>146
ありがとうございます。
お陰で解決できました。
148デフォルトの名無しさん:2005/08/30(火) 20:52:35
ttp://www.atmarkit.co.jp/fdotnet/special/cppcli/cppcli_01.html
相変わらず電波バリバリだなあ
149デフォルトの名無しさん:2005/08/31(水) 22:31:15
>>144
何で6.0じゃないんだろう
150デフォルトの名無しさん:2005/08/31(水) 22:40:28
>>149
5.0で開発できる+VC++高杉→5.0でいいや、じゃねーの?
151デフォルトの名無しさん:2005/08/31(水) 22:56:16
6.0って、今思うと物凄いロングセラーだよな
5.0買った人達カワイソス
152デフォルトの名無しさん:2005/08/31(水) 23:07:11
6年前には既に有ったからな、6.0
153デフォルトの名無しさん:2005/09/01(木) 04:24:40
VisualC++Express2005をダウンロードして、使い方が良く分からないので
「ひと目でわかる VisualC++.NET Version2003アプリケーション開発入門」
を買ったのですが、CDに収録されているソースを読ませてコンパイルしてもエラーが出ますorz
初めは打ち間違えたのかなと思ったのですが、どうもそうではないみたいです。
2005と2003では何か大きく変更になったところでもあるのでしょうか?
154デフォルトの名無しさん:2005/09/01(木) 04:25:48
ESP! ESP!
155デフォルトの名無しさん:2005/09/01(木) 04:51:32
>>153
わたしは通りすがりで、且つサイコキネシス系の人間だが、
ソースをさらしたほうがいい。でなければ、詳しく。
__gc managed から C++/CLI になった。
.net Frameworkを使ってなければ大佐はいないだろうけど。
156デフォルトの名無しさん:2005/09/01(木) 06:35:53
>>155
どうもありがとうございました。
この本を読み始めた時から、なんだか普通のC++コードと
違う気がしていたのですが、_gc managedとかCLIとかいう
C++の拡張系があるんですね。
ソースは本に付属していたもので、うpするのはまずそうなので
ググって調べてみます。
157デフォルトの名無しさん:2005/09/01(木) 09:17:24
画像を使ったスクロールバーは、どうやってつくるのでしょうか?
サイトを駆け巡ってみたのですが、参考HP見つからず...orz
158デフォルトの名無しさん:2005/09/01(木) 15:01:01
>>157
MSDNをななめ読みしたが、オーナードローとかの仕組みは無いみたい。
自前で作るしかないんじゃね?
159デフォルトの名無しさん:2005/09/01(木) 18:50:16
関数から抜けるとき
Run-Time Check Failure #2 - Stack around the variable 'ローカル変数名' was corrupted
のダイアログがでるんですが
このメッセージの意味と対処法をおしえてください.
160デフォルトの名無しさん:2005/09/01(木) 18:54:58
>>159
「ローカル変数」のスタック蛾物故割れた
161デフォルトの名無しさん:2005/09/01(木) 19:27:52
>>159
配列の境界超えて書き込んだとか、してんじゃないの?
162デフォルトの名無しさん:2005/09/01(木) 21:15:28
エラーログが文字化けします。

aRaoapaCaie?e─eoe?e?...
stdafx.cpp
aRaoapaCaie?e─eoe?e?...
sankaku.cpp
print.cpp
c:\Documents and Settings\tarou\My Documents\Visual Studio Projects\print\print.cpp(24) : warning C4267: '=' : 'size_t' ?? 'int' ??????????????????????????
???????...
c:\documents and settings\tarou\my documents\visual studio projects\print\print.cpp(19) : warning C4700: Ale¬eaeΦoue─eτeΩe─eoe?eoaiu[aJaie?o?Eo 'buffer' e?a?e?e─AQA?e¬iseφeΩe?e?e?uB
リンクしています...

解決方法を教えてください。宜しくお願いします。
163デフォルトの名無しさん:2005/09/01(木) 21:18:23
環境書けよ
164デフォルトの名無しさん:2005/09/01(木) 21:19:07
タロー
165162:2005/09/01(木) 21:22:21
すみません、忘れてました。
Win XP Home Edition SP2で Microsoft Visual C++ .NET です。
Microsoft Visual C++ .NET はSpokeからインストールしました。
166デフォルトの名無しさん:2005/09/01(木) 23:21:16
C++とOpenGLは、一応プログラムでメシが食えるくらい理解していると思うのですが、
Windowsについては全くの初心者です。
このたび、趣味でゲームでも作ろうと思い、.NET を購入し、Visual C++をいじってみたのですが、
あまりにも今までやってきたものと環境が違いすぎて困惑しています。
(キーボードを打っていないのに、勝手にコードが書かれていくなんてありえない…)

目標は、Win用自作ゲームをwebで公開することです。
MFCもWin32APIもDirecrXも、ほとんど理解していないのですが、まずどこから手をつければよいのでしょうか。
やはり、DirectXを覚えて、Visual C++で作るべきですか?

また、まったくのゼロから、main() から自分で書いて作るのは大変なんでしょうか?
167デフォルトの名無しさん:2005/09/01(木) 23:24:10
>>166
WindowsでもOpenGLは使えないわけではないよ。
168デフォルトの名無しさん:2005/09/01(木) 23:26:31
>>166
ゼロから手打ちでも不可能じゃないと思う
まぁmainじゃなくてWinMainに変わるけど
169デフォルトの名無しさん:2005/09/01(木) 23:36:33
猫でもわかるプログラミング
でぐぐれ。
170デフォルトの名無しさん:2005/09/01(木) 23:58:30
入門書もろくに読まずにいきなり作り始める馬鹿
171デフォルトの名無しさん:2005/09/02(金) 00:07:31
>>166
俺はMFCでOpenGL使ってるぞ。
172166:2005/09/02(金) 03:50:02
色々と調べたり、本を読んだりはしてみたのですが、
あくまでも遊びレベルなので、それほど真剣には調べてませんでした。
私のような「C++とOpenGLは知ってる」というような者や、
Unix等で昔からガンガン組んでた人がとっつき安い方法を知りたかったので
少しスレ違いとは思いつつも質問させていただきました。

OpenGLが使えることも、「猫でも〜」も知っています。
ただ、ゲームを作るにはイリーガルなやり方みたいですね、やはり。

個人的な理想としては、
・C++言語レベルにおいては、「猫でも〜」のように、main() から自分で書く。
・ライブラリはDirectXを使う。これは、頑張って勉強する。
のような感じが良いかなーと思ったのですが、
プロジェクトテンプレートは何を選んで、どうやってDirectXをリンクすれば良いんでしょうか。
参考サイト等もありましたら教えていただけると嬉しいです。
173デフォルトの名無しさん:2005/09/02(金) 04:02:48
DirectXスレ向けかな。

別にVSに限らず、GUI構築ツールは大抵コードを勝手に吐いてくれるわけだが。
174デフォルトの名無しさん:2005/09/02(金) 04:28:06
>>166
1. Win32 アプリケーションを選ぶ。
2. WinMain 以外をばっさり削除
3. がんばって CreateWindow を成功させる
4. DirectX なり OpenGL なり

という流れで良いと思う。

OpenGL に慣れてるのであれば、
ムリして DirectX 使う必要も無いと思うけど。
175デフォルトの名無しさん:2005/09/02(金) 04:30:02
>2. WinMain 以外をばっさり削除
そんなことしなくても、空のプロジェクトを作成、って項目があるジャマイカ…
176デフォルトの名無しさん:2005/09/02(金) 05:29:51
Windowsゲームを作るならそれがいいんだよな
俺も勝手にコード書かれるの嫌
177デフォルトの名無しさん:2005/09/02(金) 06:19:23
>私のような「C++とOpenGLは知ってる」というような者や、

C++は知ってて当然
OpenGLはVCとは直接関係ない
だから他の初心者と同じように勉強すればいい
178デフォルトの名無しさん:2005/09/02(金) 07:05:32
GLUTならWindowsだからといって特に変更はいらないと思うけど
179デフォルトの名無しさん:2005/09/02(金) 08:12:10
>あくまでも遊びレベルなので、それほど真剣には調べてませんでした。

ということはVCは向いてないね
まったくのプログラミング初心者
趣味程度にプログラムを作りたい
手っ取り早く作りたい
こういう場合はVBかC#
180デフォルトの名無しさん:2005/09/02(金) 08:15:27
趣味でやるならBasic4GLがいいよ
OpenGLのAPIが使えるBasic
Basicといってもポインタとか普通に使えるし
181デフォルトの名無しさん:2005/09/02(金) 10:32:16
エディットボックスに入力された文字数を取得したいのですが、
GetWindowTextLengthを試みましたところ、バイト数が返ってきました・・・
バイト数では無く、文字数を得る為にはどうしたら良いでしょうか?
182デフォルトの名無しさん:2005/09/02(金) 11:11:35
>>181
IsDBCSLeadByte使って自分で数えるか_mbstrlen
183デフォルトの名無しさん:2005/09/02(金) 11:14:23
NT系ならGetWindowTextLengthWとか
184デフォルトの名無しさん:2005/09/02(金) 11:43:03
質問スレで回答無かったので移動しました。
MFC(コンパイラはVC.NET)+Win32APIのアプリケーション用にHTML Help(.chm)形式のヘルプを作っているのですが、
アプリケーションの動作中に動的にページを切り替えるようにするにはどういうアプローチがあるでしょうか。
185デフォルトの名無しさん:2005/09/02(金) 11:50:58
質問が意味不明だからエスパーを呼んでくれ
186デフォルトの名無しさん:2005/09/02(金) 11:56:14
じゃあこれからカバンに入りま〜す、はい〜。
187デフォルトの名無しさん:2005/09/02(金) 12:00:50
>>184
アプリの処理と連動して表示してるヘルプのページを切り替えるってこと?
それなら自分でヘルプID指定してメッセージ投げるとか、ヘルプ表示関数呼ぶとか。
できるかどうか知らないけど。
188デフォルトの名無しさん:2005/09/02(金) 17:26:22
>>181
GetWindowTextLength のヘルプを100万回嫁。
189デフォルトの名無しさん:2005/09/02(金) 18:30:24
50万回まで読みました
190デフォルトの名無しさん:2005/09/02(金) 18:47:59
msvcr71.dllやmsvcp71.dllが再頒布可能であることを直接明示した
ドキュメントを探しているのですが,見つかりません.
どこに明示されているんでしょうか?
191デフォルトの名無しさん:2005/09/02(金) 19:09:00
192デフォルトの名無しさん:2005/09/02(金) 19:21:13
>>191
ありがとうございます.製品CDのRedist.txtを確認してみます.
193前スレ899:2005/09/02(金) 19:41:22
ttp://pc8.2ch.net/test/read.cgi/tech/1120222322/899
ですが関数_beginthreadex()のstack_sizeについてもう一度質問させてください。

//スレッド内の処理をすべてこっちに移した。
void func(void *arg)
{
int i;
char ss[128];

}
//スレッド内では目的の関数を呼び出すだけ
unsigned __stdcall ThreadFunc(void *arg)
{
func(arg);
//スレッド終了時の色々な処理
〜〜〜
_endthreadex( 0 );
return 0;
}

こんな風にしておけばstack_sizeに与える値は関数呼び出しに
必要となるバイト分(sizeof(int)だけだと思いました。
または、スレッドで呼ばれた関数func()も関数を呼び出すので
その分、余分に用意しないといけないとも思いましたがどうでしょうか?

やはり stack_size = (sizeof(int)+sizeof(char)*128)+関数呼び出しにかかるバイト数
となるのでしょうか?
194デフォルトの名無しさん:2005/09/02(金) 19:46:58
>>193
で、質問するのはいいのだが、前スレのレスを吟味した上で聞いているのかね?
195デフォルトの名無しさん:2005/09/02(金) 20:02:05
>>193
_endthreadexがどれくらいスタック消費してるかわからんし
スレッドプロシージャが呼ばれる前にもスタックを消費してるかもしれない。
人に訊かないとわからんようならデフォルト値指定しとけ。
196前スレ899:2005/09/02(金) 20:03:18
はい、stack_sizeには0を指定すればいいとききましたが、
main()では関数を呼び出すだけで終わりです。
func1()にはコマンドラインから与えられた引数
(入出力ファイル名やデータ解析オプション)を渡すのですが、
main()内で宣言している変数はint argc, char *argv[];
しかありませんので、func()内でchar ss[128];を確保したい以上、
stack_sizeに0を指定するのはまずいという結論に達しました。

そこでもう一度質問させてもらいたかったのですが、駄目でしょうか?
197デフォルトの名無しさん:2005/09/02(金) 20:09:10
>>196
mainで宣言してる量でスタックサイズが決まるわけじゃないぞ?
198前スレ899:2005/09/02(金) 20:16:37
えっ、そうなんですか?
私はmain()内ではsizeof(int)+sizeof(char **)分しか
確保されない思っていましたが、違うのですね。

それで皆さん0を指定したらいいよと教えてくださっていたのですか。
すいません杞憂だったようです。

0を指定していきたいと思います。
ありがとうございました。
199デフォルトの名無しさん:2005/09/02(金) 20:25:08
>>198
スタックサイズはコンパイラオプションで決まる。
200デフォルトの名無しさん:2005/09/02(金) 23:02:04
もしかして、stack_sizeに0を指定するのは実際に0バイトし確保しないと思ったんだろうか。
201デフォルトの名無しさん:2005/09/03(土) 00:28:38
機能単位にコンテナ上にコントロールをまとめておいて、
コンテナを表示/非表示することによって可視できるコントロールを
制御したいと考えています。
VBだとデザイン画面で簡単にコントロールの親子関係を関連付け
できるんですけど、VCだとどうやればいいんですか?

もう少し補足しますと
VBのデザイン画面ではピクチャーやフレームコントロールがコンテナの
働きをしてくれて、その上にコントロールを貼り付けておけば
土台となるピクチャーを移動した時に上に乗ってるコントロールは
一緒に移動してくれました。

VC++6.0のダイアログエディタで同じことをやろうとして
ピクチャーやグループの上にボタンコントロールを載せようと
したのですが乗っかってくれません。コンテナとして使えない?

コードで書く方法だとコントロールの数が多いとき大変ですよね。
202デフォルトの名無しさん:2005/09/03(土) 05:05:52
>>201
手元にVC無いんだけど、コントロールのプロパティで「グループ」ってのなかった?
あれはラジオボタンの関連付けとかに使うだけだっけ?
203デフォルトの名無しさん:2005/09/03(土) 07:15:51
ネーヨ
204デフォルトの名無しさん:2005/09/03(土) 08:16:17
もしかして:タブグループ
205デフォルトの名無しさん:2005/09/03(土) 11:42:58
peekmessageでのメッセージループ内で描画のために毎回
createpenしたらプログラム実行時ページファイル使用量が際限なく上昇してしまいます。
deleteobjectでメッセージループの終わりにペンをdeleteするようにしてもだめです。
どうしたらいいでしょうか。
206デフォルトの名無しさん:2005/09/03(土) 11:50:23
>>202
そうなんです。プロパティの「グループ」はラジオボタンのグループ化用でした。
+--グループボックス--+
| ◎ラジオボタン1  |
| ◎ラジオボタン2  |
+-------------------+
この場合グループボックスを無効化すれば、ラジオボタン1と2も無効化
されて欲しいんですけど。
VBだとラジオボタンを切り取って、グループボックスにフォーカスを合わせた
あとに貼り付ければ親子関係が成立するんですけど...
>>204
タブストップ?
207デフォルトの名無しさん:2005/09/03(土) 12:41:48
コードの量が増えてもVBより速いから心配いらんよ
208デフォルトの名無しさん:2005/09/03(土) 12:47:29
関数名等を大文字小文字を区別しないで書く奴に
ハァ?となるような質問が多い件について。
209デフォルトの名無しさん:2005/09/03(土) 13:25:54
>>205
ループの外でペン作っておけばいいじゃん
例えば、
InitInstannceに相当する処理でCreatePen
ExitInstanceに相当する処理でDeleteObjec
210デフォルトの名無しさん:2005/09/03(土) 14:34:19
ペン(&ブラシ)って作成時以外に色変えられましたっけ?
211デフォルトの名無しさん:2005/09/03(土) 16:10:01
>>210
必要な分だけ、あらかじめ作っておくってこと。
どうしてもPeekMessageの中でペンを作らないとダメなら、
条件分岐させて再描画処理(ペン作成)の回数を下げる。
212デフォルトの名無しさん:2005/09/03(土) 16:27:29
どーせ、SelectObjectする前のペンを復帰させてないとかいうオチ。
213デフォルトの名無しさん:2005/09/03(土) 18:24:56
デバッグ中に、ある変数の値をリアルタイムに出力できるようにするには、どうすればいいのでしょうか?
ブレークポイントで止めて、Stepしながら確かめるのではなくて。
214デフォルトの名無しさん:2005/09/03(土) 18:27:13
>213
TRACEマクロ
215デフォルトの名無しさん:2005/09/03(土) 18:57:51
ダイアログベースの新規プロジェクトを作成して、ダイアログにダイアログと同じサイズのピクチャーを貼り付けて
その上にボタンコントロールを載せて、あとはコードを書かずに実行すると
ボタンが表示されたりされなかったりします。
ボタンは見えなくてもマウスでクリックするとボタンが現れます。
試しにピクチャーのウィンドウハンドルを取得してSetWindowPos()で最下面の属性を与えたのですが
結果は変わりませんでした。
この現象はピクチャーコントロールがボタンよりあとに表示されていて
ボタンのエリアをクリッピングしてくれていないということですか?
これの対策はどうすればよろしいですか?
216215:2005/09/03(土) 19:07:23
>>215
ピクチャーにはデザイン画面でビットマップを指定しています。
ビットマップのサイズはダイアログと同じ大きさです。
217デフォルトの名無しさん:2005/09/03(土) 19:55:54
>>216
OnPaintでダイアログに直接BitBlt、とか。
218デフォルトの名無しさん:2005/09/03(土) 21:16:32
今からやるなら、「MFCアプリケーション」と「.NETのWinフォームアプリケーション」のどっちをやった方がいいですか?
219デフォルトの名無しさん:2005/09/03(土) 21:21:10
ケースバイケース
220デフォルトの名無しさん:2005/09/03(土) 21:22:28
C#
221デフォルトの名無しさん:2005/09/04(日) 05:21:47
中間ファイルの出力ディレクトリを変更して、プリコンパイル済みヘッダーを使用すると
次のようなエラーが出て困ってます。

error C2859: d:\test\debug\src\vc60.pdb は、このプリコンパイル済みヘッダーが
        作成されたときに使用されたpdb ファイルではありません。
        プリコンパイル済みヘッダーを再作成してください。
cl.exe の実行エラー

中間ファイルの出力ディレクトリを変更しても、
エラーが出ないようにするにはどうすればいいですか?
222デフォルトの名無しさん:2005/09/04(日) 05:59:52
リビルドしてもだめなん?
223221:2005/09/04(日) 06:16:32
>>222
クリーン→リビルドしても同じエラーが出ます。

中間ファイルの出力ディレクトリを変更しない場合(全て同じディレクトリ)は
エラー無く、うまくいくんですけどね…。
224デフォルトの名無しさん:2005/09/04(日) 07:53:46
初心者がわざわざ変更する必要ないから
やりたければ勝手にどうぞ

アブノーマルな使い方は初心者スレの範囲外
225デフォルトの名無しさん:2005/09/04(日) 08:07:37
どっかの設定のパスを変え忘れてるに一票。
226デフォルトの名無しさん:2005/09/04(日) 12:32:52
>>221
そのファイルを削除する
227デフォルトの名無しさん:2005/09/04(日) 14:19:09
SDLのライブラリを使ってプログラミングをしているのですが、インテリセンスがうまく働かない関数があります。
SDL_InitやSDL_Quitなどです。
SDL_LoadBMPという関数やSDLで定義されている構造体などには、引数やメンバが表示されます。
これはどこか設定がうまくいっていないのでしょうか。それともVCの仕様ですか?
228デフォルトの名無しさん:2005/09/04(日) 14:25:56
GLUTの関数も一部出ないよね。
IntelliSense意外とバカ?
229デフォルトの名無しさん:2005/09/04(日) 14:43:57
一回そのプロジェクトの.ncbファイルを削除する事をお勧めする。
.vcprojを起動したらちゃんとしたの新しく作ってくれるよ。
230デフォルトの名無しさん:2005/09/04(日) 17:38:59
VC7 のインテリセンスって文字列リテラルに全角が混ざるだけでバグるほど馬鹿なんだけど。
VC6 じゃ、こんなことなかった。

printf("こんにちは");
            ↑ここまで打ってもprintfのヒントが消えない
231デフォルトの名無しさん:2005/09/04(日) 17:53:03
"が全角になってるとか、''になってるとかの落ちじゃねーの?
232デフォルトの名無しさん:2005/09/04(日) 17:58:05
printf("あ");
       ↑ここまで打って消える。
printf("あいうえお");
            ↑ここまで打っても消えない。
233デフォルトの名無しさん:2005/09/04(日) 20:35:20
自作デスクトップマスコットをWME(ウインドウズ メディア エンコーダー)で撮ろうとしていますがなぜか映りません。
マウスカーソルの影も同様です。
WMEの仕様上不可能なのか設定でどうにかできるならいいのですが、
プログラム側で対応できないのでしょうか?
タイトルバーと枠なし、背景透明をやめれば映るのですが、
見栄えが非常に悪くなるのでそれだけは残しておきたいです。
環境はXP、.NETです。
234デフォルトの名無しさん:2005/09/04(日) 20:58:55
>>233
マウスは仕様
DTMが映らないのはおまえの作り方が悪い
235デフォルトの名無しさん:2005/09/04(日) 21:04:01
LayeredWindowが映らないだけでは?
あれはたしかにBitBltでは持ってこれない。
236233:2005/09/04(日) 21:23:21
>>234-235
レスありがとうございます。
>BitBltでは持ってこれない
と言うことはそれ以外の方法があるのでしょうか?
(ビットマップ)画像を描画する方法はBitBltやStretchBltぐらいしか知らないので、猫(時計作成の項)にも書かれていたようにそのまま使っていました。
237デフォルトの名無しさん:2005/09/04(日) 21:36:44
LayerdWindowじゃなくて普通のWindowでリージョン使ってやってみれ
238233:2005/09/04(日) 21:52:36
ありがとうございます。
まだデバッグまでは行ってませんがなんとかできそうです。
239デフォルトの名無しさん:2005/09/04(日) 22:49:45
>>235
つCAPTUREBLT
240デフォルトの名無しさん:2005/09/05(月) 03:19:53
質問です。
項目は DirectInput 関係ですが、質問自体は DirectX に関係ないと思い、ここで質問させていただきました。

IDirectInput8::EnumDevicesBySemantics に関して、MSDN で以下のような記述を見つけたのですが・・・。

DIERR_INVALIDPARAM
無効なパラメータが、戻ってくる関数に渡されたか、オブジェクトがその関数を呼び出せる状態になかった。この値は、標準のコンポーネント オブジェクト モデル (COM) 戻り値である E_INVALIDARG に等しい。

戻ってくる関数って・・・コールバック関数のことでしょうか。
241デフォルトの名無しさん:2005/09/05(月) 03:33:26
>>240
そうです。
日本語MSDNは誤訳が多いので困る
242240:2005/09/05(月) 03:41:56
>>241
おっと、ありがとうございました。
243デフォルトの名無しさん:2005/09/05(月) 10:29:36
VC++.NET2003でソリューソンエクスプローラーにフォーカスを当てる
ショートカットをご存知の方がいたら教えて下さい。
お願いします。
この場合のフォーカスを当てるというのは、マウスを使わずにソリューソン
エクスプローラーにあるファイルを選択できるようにするということです。
244デフォルトの名無しさん:2005/09/05(月) 12:55:45
>>212
今更だがペンを復帰させるってどういう意味?
245デフォルトの名無しさん:2005/09/05(月) 13:00:50
>>244
持ち替える前のペンに戻す
246デフォルトの名無しさん:2005/09/05(月) 17:38:58
標準関数みたいにdirectxの関数でもコーディング支援機能を使いたいんですが
どう設定したらいいんでしょうか?
247デフォルトの名無しさん:2005/09/05(月) 17:41:30
DirectXの支援機能が無いから無理
248デフォルトの名無しさん:2005/09/05(月) 18:08:07
ActiveBasicなら入力補完とDirectXに対応
249デフォルトの名無しさん:2005/09/05(月) 18:11:57
自分でラッパクラスかラッパ関数でも作れば?
そうすりゃそのクラスもしくは関数を使う限りは支援が受けれるぜ?
250デフォルトの名無しさん:2005/09/05(月) 18:17:29
まぁ、普通はそんなことしなくても支援されるんだけどな
251デフォルトの名無しさん:2005/09/05(月) 18:18:13
そりゃ支援するためのデータが有るからだろ
252デフォルトの名無しさん:2005/09/05(月) 18:28:19
支援するためのデータってヘッダだろ?DirectXで開発するならヘッダあるに決まってるじゃん。
253デフォルトの名無しさん:2005/09/05(月) 18:43:07
VCもDelphiみたいに型情報まで判断して支援してくれりゃ言うことないんだけどな
254デフォルトの名無しさん:2005/09/05(月) 23:54:31
開発環境 OS:XP 言語 visual C++6.0
VBからの移行プログラムで、C言語でのプログラムの修正を解析されたのですが、
msghook が出てきました。msghook ってなんですか。わかる方教えてください。
255デフォルトの名無しさん:2005/09/06(火) 00:30:59
買う前にMSのサイトで各エディションの比較表を見てVisualC++.net Version2003
を買ったんだけど、コンパイラが違うのは使うまで分からなかった。
Toolkit2003のおかげで助かったけど、このものすごく重大な違いが
ものすごく分かりやすくかかれていないのは問題じゃないか?
256デフォルトの名無しさん:2005/09/06(火) 01:44:44
>>243
マクロ作ればいけると思うぞ。
CTRL + SHIFT + R で記録すればコードを各必要も無いし。

>>支援
インテリセンスのコトだったら
IDirect3DDevice9 とかの型もヒントが出てくるケド…?
…釣られてる?
257デフォルトの名無しさん:2005/09/06(火) 04:17:48
普通は入力支援されるんだがDirectXのインストール順とかでダメなことがあるらしい
NCBやいらないファイルを削除してリビルドするだけでうまくいくこともあるみたいだけどね
鬱氏で昔話題になった記憶がある
258デフォルトの名無しさん:2005/09/06(火) 05:10:18
>>255
俺も同じなんだが、そんな俺にVisualC++.net Version2003でToolkit2003でコンパイルする方法を教えてくれないか?
259デフォルトの名無しさん:2005/09/06(火) 05:59:48
Visual C++ と C++Builderってどうちがうの?
おなじC++言語で開発するんだから余り変わりないの?
260デフォルトの名無しさん:2005/09/06(火) 06:12:15
>>259
使い勝手やライブラリ、コンパイラなどが違います。
VCは主軸を.NETに移しており新機能はそちらが中心となっております。
BCBはしばらくリリースがありませんでしたが数ヶ月後にDelphi2006に
統合されてリリースされる予定です。
261デフォルトの名無しさん:2005/09/06(火) 06:15:58
ソース比べてみればわかるけど
全然別物
262デフォルトの名無しさん:2005/09/06(火) 06:16:57
大丈夫、C++の標準関数などを使っている分には大差ないから。
263デフォルトの名無しさん:2005/09/06(火) 06:17:54
>>254
メッセージフックじゃろ

>>261
プ
264デフォルトの名無しさん:2005/09/06(火) 06:18:27
そこで#pragma comment(linker, "/nodefaultlib:\"libc.lib\"")ですよ
265デフォルトの名無しさん:2005/09/06(火) 06:21:43
>>260-262
どもw
どちらの方がオススメなんでしょうか?
自分はDelphiからの移行を考えているのですが・・・・
266デフォルトの名無しさん:2005/09/06(火) 06:23:34
>>265
なにをやりたいかにも拠るが、GUIやりたいなら当然BCBの方が移行は楽。
267デフォルトの名無しさん:2005/09/06(火) 06:30:01
>>265
成るほど。
企業などではどちらがよく使われるの?
268デフォルトの名無しさん:2005/09/06(火) 06:30:37
>>265
BCBだと結局Delphiと変わらない
C++覚えたいだけならそのほうが都合がいいかもしれんが
269デフォルトの名無しさん:2005/09/06(火) 06:34:00
>>268
なるほど・・・・・Delphiと変わらんか・・・
Delphiは趣味で使うにはいいんだけど、企業で使われることは少ないらしいし。
一応SE目指してC勉強してるんで・・・それだとちょっとなあ・・・

270デフォルトの名無しさん:2005/09/06(火) 06:34:53
>>267
どっちもあまり使ってないと思うが雑誌のアンケートを信じるなら
Java > VB > Delphi >>> VC >>>(超えられない壁)>>> BCB

分野で完全にひっくり返ったりするから参考程度で
271デフォルトの名無しさん:2005/09/06(火) 06:53:24
>>270
どもw参考にします
272デフォルトの名無しさん:2005/09/06(火) 07:52:28
私の勤める会社でも部署によっては業務系でDelphiもJAVAも使っているし、
私と同じのプロジェクトに参加しているソフト屋は制御系でBCBを使っているらしい。
どちらもVBは使っているがVB.netではない。寧ろC#の案件が一部あるそうだ。
273デフォルトの名無しさん:2005/09/06(火) 10:45:11
C++覚えたいだけならそっちのスレへ
274デフォルトの名無しさん:2005/09/06(火) 11:41:38
了解しますた
275デフォルトの名無しさん:2005/09/06(火) 13:39:18
CString を charへ変換したいのですがどうすればいいでしょうか?
例えばcharからintならatof(a);
というやり方でできますが
CStringからcharはどのようにしたいいですか?
Cで作ったプログラムをVisual C++を使って作りたいのですが
ここがどうしてもうまくいきません。
Cで作ったものはVisual C++でもうまくいくのでしょうか?
276デフォルトの名無しさん:2005/09/06(火) 13:41:17
 テストは Windows XP(SP2), Pentium 4, Visual C++2003で。
 以下のコードで、最適化をかけずにビルドすると
何故か 結果がおかしいです。

float swappp(const float f)
{
  unsigned int r = *(unsigned int*)&f;
  r =    ((r >> 24) & 0xff)
      | ((r << 24) & 0xff000000)
      | ((r >> 8) & 0xff00)
      | ((r << 8) & 0xff0000);
  return *(float *)(&r);
}
277デフォルトの名無しさん:2005/09/06(火) 13:41:55
276の 続きです。
union IntFloat
{
  unsigned int i;
  float f;
};

int main()
{
  IntFloat t;
  t.f = -1002.249939f;    // A : t.i = 0xC47A8FFF
  t.f = swappp(t.f);     // B : t.i = 0xff8f7ac4のはず
  printf("0x%08x\n", t.i);  // C : でも t.i = 0xffcf7ac4
}

 スワップしているだけなので、8bit単位で同じ値になるはずなのに、
何故か 8F->CFになります。
 原因は単精度浮動小数点ではない値を浮動小数点として扱っている為、
CPUの浮動小数点レジスタのフォーマットに変換した際に値が変化してしまったと
考えられるのですが、これはバグなのでしょうか。
 それとも C++の規約的には不定となるようなコードで、
こうなっても仕方がない類のものなのでしょうか。
278デフォルトの名無しさん:2005/09/06(火) 13:43:30
ただCStringの持ってる文字列をchar配列に取り出したいだけなら、

CString str = "Hoge";
char szBuf[5];
lstrcpy( szBuf, (LPCTSTR)str);

これでいい
279デフォルトの名無しさん:2005/09/06(火) 13:44:10
CString を charへ変換したいのですがどうすればいいでしょうか?
例えばcharからintならatof(a);
というやり方でできますが
CStringからcharはどのようにしたいいですか?
Cで作ったプログラムをVisual C++を使って作りたいのですが
ここがどうしてもうまくいきません。
Cで作ったものはVisual C++でもうまくいくのでしょうか?
280278:2005/09/06(火) 13:44:50
>>275宛てね
281デフォルトの名無しさん:2005/09/06(火) 13:49:21
>>275,279
何がしたいのか日本語で言ってみろよ

それから氏ね
282デフォルトの名無しさん:2005/09/06(火) 14:04:04
textBox->Text += "1";の演算ができないです。
Form1.h(624): error C2845: '+' : __gc ポインタ 'System::String __gc *' に対してポインタ演算ができません。
というエラーがでます。

VC++.NET 2003使用
283デフォルトの名無しさん:2005/09/06(火) 14:28:59
(マネージドだと、こんなVBライクな事が出来るのか・・・)
284デフォルトの名無しさん:2005/09/06(火) 14:33:19
>>276
反転すると指数部が0xffかつ仮数部が非0になるので非数(NaN: Not a Number)となるな。
8F->CFとなっても非数には変わりないから、IEEE754的には正しい動作と言えると思う。
285デフォルトの名無しさん:2005/09/06(火) 14:37:21
あとC/C++的には、floatの内容をいじくった時点で未定義なコードだと思う。
286デフォルトの名無しさん:2005/09/06(火) 14:37:47
>>276
swapp()がfloatを返す仕様だからしかたないね。
ポインタのままかバイト列か整数で受け渡しをすれば巧くいくと思うけど。
287276:2005/09/06(火) 14:41:15
>> 284-286
 なるほど。そうでしたか。
 ありがとうございました。
288デフォルトの名無しさん:2005/09/06(火) 14:48:25
>>282
もっと自分で考えれ

>>283
できてないだろ
289デフォルトの名無しさん:2005/09/06(火) 21:20:03
>>258は教えてくれないのですか?
290デフォルトの名無しさん:2005/09/06(火) 22:02:46
ぐぐれ
291デフォルトの名無しさん:2005/09/06(火) 22:38:02
コマンドプロンプトで始めにcd c  って打つんですけど指定されたパスが見つかりません
って出ます。何でですか?  ファイル名c です。」
292デフォルトの名無しさん:2005/09/06(火) 22:51:38
スレ違い。
293デフォルトの名無しさん:2005/09/06(火) 23:11:11
CAsyncSocket Class にて、関数を作成する際(例:TestFunc(構造体名& testType); )に、
CWinApp Class にて宣言した構造体を引数にしたいのですが、コンパイルすると、
「構造体名がシンタックスエラーを起こしました。」のメッセージが出てしまいます。
ワークスペース表示欄にて、Socket classの名称の方が、Win classの名称より上位にあるために、
構造体名が参照されず、このようなことが起きているのでしょうか?どうやったら、
コンパイルが通るかわかりません。誰か知ってる人いたら、教えて下さい。
294デフォルトの名無しさん:2005/09/06(火) 23:20:41
>>293
よく理解できないが前方宣言はどう?
295デフォルトの名無しさん:2005/09/07(水) 01:36:44
>>258
VisualC++.net Version2003でToolkit2003のコンパイラを使う方法のこと?
だったら自分も確実な方法は知らない。サポート対象外で自己責任。

オプションの実行ファイルディレクトリにToolkit2003のbinフォルダを優先させて
登録する人が多いみたいだけど、自分はさらにToolkit2003のlink.exeと
link.exe.configを退避させてる。(元のlink.exeを使いたいから)

ちなみに dbghelp.dll msobj71.dll mspdb71.dll msvcp71.dll msvcr71.dll
cl.exe.config link.exe.config は元のファイルとバイナリ一致
link.exeはサイズが一緒なんでメッセージの言語が違うだけかなと。
296295:2005/09/07(水) 01:53:42
最適化のオプションは コマンドライン→追加のオプション のところに書く。
297デフォルトの名無しさん:2005/09/07(水) 04:45:40
>>294
その手がありましたね。ありがとーございました!
なんとかできそうです!
298デフォルトの名無しさん:2005/09/07(水) 10:30:09
で、Toolkit2003のコンパイラだとどんなメリットが?
299デフォルトの名無しさん:2005/09/07(水) 10:34:01
エラーメッセージが英語になる
300デフォルトの名無しさん:2005/09/07(水) 10:41:50
そりゃ便利だ
さっそく使ってみよう
301デフォルトの名無しさん:2005/09/07(水) 12:42:20
VC7 から VC7.1にしたら、ダイアログ上に配置する
Buttonのデザインが古くなってるんですが、
我慢するしかないですか?
302デフォルトの名無しさん:2005/09/07(水) 13:01:38
LPCTSTR型はMFCではないと使えないんですか?
コンソールアプリケーションでは使えませんか?
よろしくお願いします。
環境 VC++6.0 win2000です
303デフォルトの名無しさん:2005/09/07(水) 13:18:19
302
#include <windows.h>でどう?
304デフォルトの名無しさん:2005/09/07(水) 13:22:38
>>303
サンクス!ありがとーっす!動いたっす!
305デフォルトの名無しさん:2005/09/07(水) 17:14:44
まぁ、LPCTSTRが使いたいだけならwindows.hインクルードせんでも、
自分で、typedefしてもいいんだけどな
306デフォルトの名無しさん:2005/09/07(水) 17:43:55
なるほどtypdefもいいんですね!ありがとうございます
>>305
307デフォルトの名無しさん:2005/09/07(水) 17:51:42
typedef const char *LPCTSTR;と書く予感。
308デフォルトの名無しさん:2005/09/07(水) 23:05:38
>>299
ググれば一瞬で分かるだろハゲ
309デフォルトの名無しさん:2005/09/07(水) 23:18:57
CString を vector<string> col;に入れたい。
だして表示したい。
のですがどうすればいいでしょうか?
1 SQLを実行後にCstrig strResult;//hage がはいってます。
vector<string> col;
vector<vector<string> > recordset;
col.resize(10);
col[i] = strResult;//ぐるぐるまわす 入りますか。?
recordset.push_back(col);
///////////
CDC::TEXTOUT(10,10,(recrordset[1][1]).c_str());

CDC::TEXTOUT(10,20,(recrordset[1][2]).c_str());
・・・
************
* hage *
* *
* *
* *
************
310デフォルトの名無しさん:2005/09/07(水) 23:27:57
>>295
ありがとう
311デフォルトの名無しさん:2005/09/08(木) 00:46:39
>>309
なんで普通にcol.push_back(static_cast<const char *>(strResult));しないの?
312デフォルトの名無しさん:2005/09/08(木) 01:03:09
>>309
言いたい事わわかるような気がするんですが
コードの部分だけでしか分かり得ません
私は韓の国からやってきましたが日本語をべんきょしても
あなたの日本語は理解し得ません
313デフォルトの名無しさん:2005/09/08(木) 01:36:24
>なんで普通にcol.push_back(static_cast<const char *>(strResult));しないの?
神出現 W、わかりました。ということは
col.push_back((LPCTSTR)strResult);もOK牧場ですよね。
おきててよかった。ありがとう311
 何度もあつかましいようですけど CDC::TextOut(10,10,(recrordset[1][1]).c_str());
は、OKでしょうか。これでグローバルのベクター(SQL結果の1時記憶)が完成しました。
それから、vector<Cstring> COL; vector<vector<Cstring> > RS;はやめておいた方がよいですよね。



↓ダイアログ画面のつもりでした。↓
************
* hage  *
*      *
*     *
*      *
************





314デフォルトの名無しさん:2005/09/08(木) 05:10:04
>>313
質問の要点は的確に。
>それから、vector<Cstring> COL; vector<vector<Cstring> > RS;はやめておいた方がよいですよね。

CStringをvectorに入れることの是非を問うているのなら、それはそれで構わないと答えるけど。
315デフォルトの名無しさん:2005/09/08(木) 07:34:59
>>313
col.push_back(static_cast<LPCTSTR>(strResult));
316デフォルトの名無しさん:2005/09/08(木) 10:37:51
>>313
プログラムの前に日本語勉強してこい
317205:2005/09/08(木) 11:14:34
アドバイスありがとうございます。

どうやら色々やってみたところGetDC(hWnd)、ReleaseDC(hWnd)をメッセージループで
使用するとページファイルが際限なく上がるみたいです(DirectX使ってるので
サーフェスにGetDC、ReleaseDCを使うだけでいいのに間違えて書いてた)。
よってこれに関してはペンやブラシの作成は関係なかったみたいです。

ただ、メッセージループ内でCreatePen、CreateBrushするとなぜかしばらくプログラムを
起動しているとペンやブラシが消える(ペンやブラシで描いた図形が画面から消える)みたいですが
ループ外であらかじめ作っておけば大丈夫、ということがわかりました。
318デフォルトの名無しさん:2005/09/08(木) 11:28:04
質問者は日本語で質問してくれ
319デフォルトの名無しさん:2005/09/08(木) 13:23:41
VC++6.0 WinXPsp2

質問です。
タイプライブラリを #import するとプライマリヘッダ(.tlh)とセカンダリヘッダ(.tli)が自動生成され、
それらを #include しようとするのですが、そこで警告が出てしまいます。

たとえば #import "hoge.tlb" としてコンパイルすると、hoge.tlh と hoge.tli が生成され、
warning #990: #include of "Release/hoge.tlh" may be non-portable
warning #990: #include of "c:\aaa\bbb\ccc\hoge.tli" may be non-portable
のような警告が出ます。

この警告が出ないようにする方法はありませんでしょうか。
よろしくお願いします。
320デフォルトの名無しさん:2005/09/08(木) 13:29:24
XPでVC++6.0を使うのを止めて.NET2002/2003を使うか、
Win2kあたりでVC++6.0を使う。
321デフォルトの名無しさん:2005/09/08(木) 16:20:00
>>320
ありがとうございます。
.NETに乗り換えることにします。
322fool:2005/09/08(木) 17:41:14
よく自分で調べろっていうやついるけどさぁ
要するに自分じゃ説明できないから調べろってことなのか?
だとしたらただ無駄にプライドが高いだけの馬鹿だなwww
323デフォルトの名無しさん:2005/09/08(木) 17:43:40
あくまで「だとしたら」、の話だよな。
324デフォルトの名無しさん:2005/09/08(木) 17:56:39
>>230
ほんとだ。
なんか不便。
当然、一度変数に入れれば問題ないが面倒だよな。
325デフォルトの名無しさん:2005/09/08(木) 18:03:22
引数に直接""でリテラルを書くのはダメプログラマ
326デフォルトの名無しさん:2005/09/08(木) 18:31:19
func(STRING_DEF1)
327デフォルトの名無しさん:2005/09/08(木) 18:33:23
>>325
そうなのか。
次からはこんな感じで行こう!!
String a,b,c,d,e,f,g,h,i,j,k;
328デフォルトの名無しさん:2005/09/08(木) 18:34:16
>>327
ダメプログラマどころかカスプログラマだな
329デフォルトの名無しさん:2005/09/08(木) 18:43:11
>>325
んなアホなこというお前こそダメプログラマ
330デフォルトの名無しさん:2005/09/08(木) 19:48:04
catch(const char*){
とかやってしまうのはだめなんか・・・。だめだよなそりゃ。
331デフォルトの名無しさん:2005/09/08(木) 19:52:34
>>325
なんで?
332デフォルトの名無しさん:2005/09/08(木) 19:53:49
>>331
変更が有った時に全部直すのがめんどくさいからじゃね?
333デフォルトの名無しさん:2005/09/08(木) 20:19:24
国際化に対応するのが大変だな
334デフォルトの名無しさん:2005/09/08(木) 21:06:12
>>328
突っ込んでくれてありがとう。
335デフォルトの名無しさん:2005/09/08(木) 22:40:50
VC7 から VC7.1にしたら、ダイアログ上に配置する 
ボタンのデザインが古くなってるんですが、 
我慢するしかないですか? 

皆さんはボタンも自作しますか?
336デフォルトの名無しさん:2005/09/08(木) 22:53:11
まったく同じ質問をどこかで見たぞ
337デフォルトの名無しさん:2005/09/08(木) 22:53:24
>>301=>>335
VC7を使い続ければいいんじゃね?
VC7.1じゃないと困ることでもあるのか?
338335:2005/09/08(木) 23:07:58
VC7.1で作り始めちゃったので・・・
UIの見た目が、何故か劣化してるのが
どうしても気になっちゃったもので、
見た目をどうこういう程、大したもの作ってる分けでは無いのですが、
よくよく、出回っているフリーソフト等のボタンと見比べると、
見劣っちゃうな・・・と
339デフォルトの名無しさん:2005/09/08(木) 23:16:04
>>338
manifestファイルがないとかでは?
340335:2005/09/08(木) 23:26:25
>>339
ありがとうございます。
ぐぐったらそれっぽい感じです!
助かりました!
341デフォルトの名無しさん:2005/09/09(金) 01:47:11
特定のフォルダの中のファイルを調べるにはどうすればいいんでしょうか?
MSDNライブラリで、フォルダやディレクトリで検索してみましたが色々出すぎてわかりませんでした
342デフォルトの名無しさん:2005/09/09(金) 01:50:12
system("dir targetFolder");
343デフォルトの名無しさん:2005/09/09(金) 12:47:16
コマンドプロンプトでforma(ry
344デフォルトの名無しさん:2005/09/09(金) 13:51:48
>>341

_findfirst
345デフォルトの名無しさん:2005/09/09(金) 15:00:32
VisualC++2003スタンダード(日本語版)でMFCプロジェクトを作成したのですが
メニュー等の文字は日本語になのですが、DDVに引っかかったときのメッセージは英語です。
プロジェクト→プロパティ→リソース→全般→追加のインクルードディレクトリに
$(VCInstallDir)\atlmfc\include\l.jpn
を追加すれば日本語になってくれるのですが、毎回この操作をしなければならないのでしょうか?
346デフォルトの名無しさん:2005/09/09(金) 16:05:11
院生の先輩にVC6++とあるひとつのワークスペース(?)を
渡された初心者です。
CPU使用率を上げてしまう個所を探せ、という課題なのですが
ソースの中からそういうループみたいな部分を抜き出すことができる
ツールとかご存知の方、教えてくださいm(__)m

WinXpです
347デフォルトの名無しさん:2005/09/09(金) 16:20:33
自分でソース見て探せや怠け学生
348デフォルトの名無しさん:2005/09/09(金) 16:37:59
>>346
課題ぐらい自力でやれ
349デフォルトの名無しさん:2005/09/09(金) 16:51:01
そのワークスペースをupしろ。
見付けてやるぞ。
350デフォルトの名無しさん:2005/09/09(金) 16:58:58
↓本当にワークスペースだけうpする奴
351346:2005/09/09(金) 17:00:57
自力で何とかすることにします。
板汚し、失礼しました。
352デフォルトの名無しさん:2005/09/09(金) 19:43:03
Vtuneでもいれれば。
353デフォルトの名無しさん:2005/09/09(金) 19:44:51
>>346
マジれすすると、そう言う時にはVC++を使うと良い。
ちょいとプロファイルを取ってみれば、大体見当つくだろ。
354デフォルトの名無しさん:2005/09/09(金) 19:46:17
て言うか変な課題だな
355デフォルトの名無しさん:2005/09/09(金) 19:49:03
課題ではなくて単にその先輩が無能なんで
丸投げしただけだろ。その先輩の尻拭いを
させられているわけだな。
>>346は解決したら先輩に言ってやれ。
こんなものも出来ないならさっさと院なんか
辞めて下さいって。
356346:2005/09/09(金) 19:55:09
そんなことする人じゃありません。
悪質な決め付けしかできない人は来ないでください。
357デフォルトの名無しさん:2005/09/09(金) 20:06:27
>>356
んな事言ってもなぁ
こんな課題して何の力がつくんだっていう
358デフォルトの名無しさん:2005/09/09(金) 20:10:00
先輩の尻拭いじゃなくて、要は使われてるんじゃね?
教授の実験の手伝いをさせられてる理系大学四年生みたいな感じ
359デフォルトの名無しさん:2005/09/09(金) 20:44:00
どちらにせよ、きんも〜☆
360デフォルトの名無しさん:2005/09/09(金) 21:40:32
初心者に最適なC++、C言語の本を教えていただけないでしょうか?
361デフォルトの名無しさん:2005/09/09(金) 21:47:44
>>360
C++、C言語の話はスレ違い
362デフォルトの名無しさん:2005/09/09(金) 22:07:32
推薦図書/必読書のためのスレッド PART25
http://pc8.2ch.net/test/read.cgi/tech/1119115838/l50
363名無しさん@そうだ選挙に行こう:2005/09/10(土) 19:22:29
VC.NETのMFCのダイアログで、keyDownメッセージを使いたいのですが
どうしたことかカーソルキーの部分だけ応答してくれません。KeyUpを使うと問題なく
反応するのですが、KeyDownではカーソルキーを使う際に何か問題があるのでしょうか?
364名無しさん@そうだ選挙に行こう:2005/09/10(土) 19:52:16
使えたはず
365名無しさん@そうだ選挙に行こう:2005/09/10(土) 20:41:51
作り方が悪いんじゃね?
366名無しさん@そうだ選挙に行こう:2005/09/10(土) 20:47:56
 float test[500][500];
これをするとWinMainで頭で
 'System.StackOverflowException'のハンドルされていない例外が xxx.exe で発生しました。
とエラーを吐きます。
 float test[250][250];
なら問題ないです。
1MB程度の配列は使えないのでしょうか?


367名無しさん@そうだ選挙に行こう:2005/09/10(土) 20:50:58
リンカのオプションいじってスタックサイズ大きくすれば取れるかもね。
面倒なら自分で動的に確保or STL
368名無しさん@そうだ選挙に行こう:2005/09/10(土) 21:21:14
「WM_KEYDOWN ダイアログ」でぐぐってみなかったんだろうか?
369名無しさん@そうだ選挙に行こう:2005/09/10(土) 21:37:44
>>367
ありがとうございます。多分出来ました。

370名無しさん@そうだ選挙に行こう:2005/09/10(土) 21:56:29
>>366
ローカル変数にするのがいけない
371名無しさん@そうだ選挙に行こう:2005/09/10(土) 22:06:50
ローカルではなく構造体に書いていたんですが、それがまずかったんですかね。
372名無しさん@そうだ選挙に行こう:2005/09/10(土) 22:33:33
ようするに367
373名無しさん@そうだ選挙に行こう:2005/09/10(土) 22:44:52
VC以前の問題
374名無しさん@そうだ選挙に行こう:2005/09/10(土) 22:52:01
金出せば買えるんだね
375名無しさん@そうだ選挙に行こう:2005/09/11(日) 00:04:31
VC++ってC++とどこが違うんですか?
376名無しさん@そうだ選挙に行こう:2005/09/11(日) 00:09:28
>>375
日本語って日本語ワープロとどう違うんですか?
って言ってるのと同じ。
377名無しさん@そうだ選挙に行こう:2005/09/11(日) 00:10:35
逆だった。
日本語ワープロって日本語とどこが違うんですか?
だな。
378名無しさん@そうだ選挙に行こう:2005/09/11(日) 00:15:03
IMAPIを使ったライティングソフトを作るとしたら
開発側とクライアントでどういった環境が必須になるんでしょうか?

例えば
 開 発  :WinXPSP1以降 VS.NET2003以降
クライアント:WinXPSP1以降 .NET Framework1.1必須
みたいな
379名無しさん@そうだ選挙に行こう:2005/09/11(日) 01:47:53
>>375
VC++ → 製品名
C++ → 言語名
380名無しさん@そうだ選挙に行こう:2005/09/11(日) 17:06:47
>>375
まずプログラミング言語C++がある。
MSが作ったC++のコンパイラとMFC/ATLなんかのライブラリをつけた製品がVC++。
381名無しさん@そうだ選挙に行こう:2005/09/11(日) 17:09:38
しむらー!IDE!IDE!
382名無しさん@そうだ選挙に行こう:2005/09/11(日) 17:14:46
dllについてなんですが、
関数呼び出しをdll形式にするとメモリの節約になるのは分かるのですが、
関数の実行速度についてはどうなんでしょうか?
ダイナミックリンクと、スタティックリンクではどちらのほうが実行速度が速くなりますか?
383名無しさん@そうだ選挙に行こう:2005/09/11(日) 17:25:39
VCTKがあるからパッケージ内容にIDEやATL・MFCが含まれるとは限らない
384名無しさん@そうだ選挙に行こう:2005/09/11(日) 17:31:53
>>382
呼び出しオーバーヘッドがほんのちょっと増えるだけでたいして変わらんと思うけど。
385名無しさん@そうだ選挙に行こう:2005/09/11(日) 18:34:24
>>382
メモリの節約じゃなくて、EXEが占める容量の節約だろ
386名無しさん@そうだ選挙に行こう:2005/09/11(日) 19:03:56
>>385
複数のプログラムで同じDLLを使うとメモリの節約になる。
387名無しさん@そうだ選挙に行こう:2005/09/11(日) 19:07:12
気になるんなら自分で試してみるだけだ
自分で試して違いがわからんのなら聞いても無駄
388382:2005/09/12(月) 00:22:54
実験してみました。

実行時間比
ダイナミック:スタティック = 1000:700

でした、予想では9割くらいしか違わないと思っていたのですが、
ダイナミックとスタティックでは7割も違っていたので驚きました。
389デフォルトの名無しさん:2005/09/12(月) 05:33:40
>>388
そんな馬鹿な。どんな実験したの?
ほとんど何もしないようなDllエクスポート関数を
何回も呼び出したんじゃないの?現実にはそんなことはないわけだからね。
390382:2005/09/12(月) 20:27:42
全ての関数をDLLにして実行しました。
関数の中の関数もDLLにしたんですが、普通はしないもんなんでしょうか?
391デフォルトの名無しさん:2005/09/12(月) 20:45:49
全ての関数・・・(´Д`i|)
392デフォルトの名無しさん:2005/09/12(月) 21:20:31
>関数の中の関数もDLLにしたんですが
詳しく
393382:2005/09/12(月) 22:49:44
funcall(void)
{
func1();
func2();
func1();
.......
}
func1()
{
i++;
........
func3();
}

こんな感じで関数が作成されているとき、
func1(), func()2, func3()全てをDLL化しました。
なんか皆さんの反応を見ると
funcall()だけをDLL化したらよかったような気もします・・・

現在は
funcall_dss()
{
funcall();
}
こんな風に主要な関数だけDLL化するようにしました。
394デフォルトの名無しさん:2005/09/12(月) 23:15:13
何でもDLLにすれば良いと思っているんじゃないか?
395デフォルトの名無しさん:2005/09/13(火) 01:14:06
>>393
DLLにする意味わかってやってるのか?
396デフォルトの名無しさん:2005/09/13(火) 18:39:19
わかってやってたらこんなことにはならんわな
397デフォルトの名無しさん:2005/09/14(水) 02:35:44
>>393
一般的に、DLL化する目的として以下の項目が挙げられる

・複数のプロセスorアプリで共通のデータおよび関数を使う
  →ディスク容量/メモリサイズの節約
・DLLとして関数群を独立させることで、作業の効率を高める
  →個別にメンテ/拡張できる
  →DLLを修正しても、インタフェースに変更が無ければ、呼び出し側の再コンパイルは不要
・独立した機能(サブセット)として分割することで、生産性/利便性を向上させる
  →インタフェースさえ一致していれば、他言語で書いたDLLも使用可能
  →他人が作った同機能のDLLも使用可能

つまりは、複数のモジュールで共通で使用するような関数やデータの集まりを
DLL(or スタティックリンクライブラリ)としてまとめるわけた。
398デフォルトの名無しさん:2005/09/14(水) 15:42:44
マウスカーソルの置く位置を変えるAPIはなんですか
399デフォルトの名無しさん:2005/09/14(水) 15:55:57
聞く前に自分で調べろ
400デフォルトの名無しさん:2005/09/14(水) 16:26:04
SetCursorPos
401デフォルトの名無しさん:2005/09/14(水) 18:24:33
>>398
厳密に言うと Visual C++に限った質問じゃないんで、今度からは向こうでやってくれ

Win32API質問箱 Build35
http://pc8.2ch.net/test/read.cgi/tech/1125850096/
402デフォルトの名無しさん:2005/09/17(土) 08:44:34
自宅でVisual C++ 6.0 Standard Editionを使用しています。

次の機能を使いたいのですが、Standard Editionでは使えません。

・プロファイル
・最適化
・実行時ライブラリの静的リンク

Visual C++ .NET Standard Version 2003ではこれらの機能は使えるのでしょうか?
403デフォルトの名無しさん:2005/09/17(土) 08:50:54
もうすぐ2005でるけど
404デフォルトの名無しさん:2005/09/17(土) 08:56:50
>>402
何寝言言ってんだあんた・・・
あんた本当に6.0SE使ってんのか・・・
405デフォルトの名無しさん:2005/09/17(土) 09:09:36
>>402
>次の機能を使いたいのですが、Standard Editionでは使えません。
>Visual C++ .NET Standard Version 2003ではこれらの機能は使えるのでしょうか?

あんたに使えるか、という質問なら仮令2003でも使えないだろうね。
406デフォルトの名無しさん:2005/09/17(土) 10:17:13
プロファイラがどういう状況で必要になるかといえば、
例えば1つのシステムを大勢で開発している場合だろう。
システムの統括者が、どの部分に問題があるか調べたいと思った場合
自分の書いたソースならともかく、人が書いた膨大な量のコードを調べるのは大変
こいう場合にプロファイラなどのツールが役に立つ。
あと会社の場合、監査結果などのドキュメントを残す必要もある。
407デフォルトの名無しさん:2005/09/17(土) 10:23:06
なんだ突然
408デフォルトの名無しさん:2005/09/17(土) 13:41:20
>>404

本当に6.0 SEでは使えませんよ。ちゃんとヘルプに書いてあります。

画面ではグレイ表示されて選択できません。
409デフォルトの名無しさん:2005/09/17(土) 13:45:11
Visual C++ の各 Edition
Microsoft Visual C++ 6.0 は、Standard、Professional、Enterprise の 3 つの Edition があります。

Standard Edition 上級者向け Visual C++ ツール セットを使いながら、C++ 言語を学習します。
Standard Edition には、Professional Edition の機能がほとんど揃っています。
コードの最適化、プロファイラ、MFC ライブラリの静的リンクの 3 機能だけがありません。

Professional Edition Windows 95 や Windows NT など、Win32 プラットフォーム向けのアプリケーション、サービス、およびコントロールを開発します。
オペレーティング システムのグラフィカル ユーザー インターフェイスまたはコンソール API を使用できます。

Enterprise Edition インターネットまたはイントラネット向けのクライアント/サーバー アプリケーションを開発し、デバッグします。
Enterprise Edition には、Professional Edition の全機能のほか、SQL データベースの操作用ツール、SQL ストアド プロシージャのデバッグ用ツールが揃っています。
Visual SourceSafe のソース コード管理システムを使用すると、チームでの開発が容易になります。
410デフォルトの名無しさん:2005/09/17(土) 13:51:36
静的リンクできないのはMFCだけやん。
411デフォルトの名無しさん:2005/09/17(土) 14:07:55
そんなにやりたければMFCのソースからビルドすればいいだけ
412デフォルトの名無しさん:2005/09/17(土) 14:35:42
>>408=>>409
確かに自分で選択はできない
自分で選択できないだけで、Releaseビルド時には最適化されとる
プロジェクト→設定→C/C++タブで確認してみれ
Debug時は無効、Release時は速度になっとるわ
413デフォルトの名無しさん:2005/09/17(土) 16:07:41
>>412
IDE上ではそうなってるけど、コンパイラが最適化オプションを無視してるという可能性はないの?
414デフォルトの名無しさん:2005/09/17(土) 16:18:14
コンソールからコンパイラ起動すれば
最適化コンパイラならOptimizing Compilerと表示されるはず

C:\tmp>cl
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3052 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
415デフォルトの名無しさん:2005/09/17(土) 16:20:17
スタンダードとその他ではcl自体同じ物なのかな?
416デフォルトの名無しさん:2005/09/17(土) 16:32:35
>>413
速度比較してみればすぐ分かるでしょ。
417デフォルトの名無しさん:2005/09/17(土) 21:46:01
>>412
VC++.NET2003Standardだけど確認してみたらそうなってた。
もしかしてReleaseビルドすれば最適化されるのか!?
いや、、そんな事はないとは思うが…。
418デフォルトの名無しさん:2005/09/17(土) 21:56:48
最適化はコムパイラの重要なおすぃごとでつ
419デフォルトの名無しさん:2005/09/17(土) 21:59:48
結局最適化を気にしてるのは
最適化されるかどうか自分で確認すらできない馬鹿ばっかりだということだ
420デフォルトの名無しさん:2005/09/17(土) 22:30:53
>>418
は?
>>419
最後の最後で結局答えを出せないバカばっかだな
421デフォルトの名無しさん:2005/09/17(土) 22:39:39
professional持ってるから最適化なんか気にしたことないし
422デフォルトの名無しさん:2005/09/17(土) 22:46:16
>>420
そんなに自虐しなくてもいいんだお?(^ω^)
423デフォルトの名無しさん:2005/09/17(土) 23:26:01
>>422
そうかい?
じゃあ教えてお^^
424デフォルトの名無しさん:2005/09/18(日) 00:49:28
o
425デフォルトの名無しさん:2005/09/18(日) 04:25:43
>>420
>>423
(`m´#)ムカッ
W(=0=)W ガオォー!!
(ノ ゚Д゚)ノ ==== 彡┻━┻
\(`O´θ/エ~イ キックじゃ!バキッ! ☆/(x_x)顔文字
(((((((三 三 三 ( ▼_▼) ダッシュ!
逃がさん ( ▼_▼)―C<―_-)
( ▼▼)//(ノ××)ノ バシバシ!
ウラァ ( ▼_▼)=○  ☆()゜O゜)
エイッ! (ノ`ヘ´)ノミ...●

プハー ○o。.(-。-)y-~~



426295に追加:2005/09/18(日) 15:08:25
link.exeからc*.dllを使うらしいので、standardのlink.exeが使いたければ、
退避させたあとstandardのlink.exeとlink.exe.configを同じフォルダに
コピーする必要があるかもしれない。
427デフォルトの名無しさん:2005/09/19(月) 19:54:54
猫でもわかるWindowsプログラミングを始めたのですが、いきなりサンプルファイルでコンパイルエラーがでてしまいました。
キャストがおかしいみたいなエラーなのですが、VC++は初心者なのでいきなりつまずいて困っています。

\projects\sample\sample\sample01.cpp(58) : error C2440: '=' : 'LPCSTR' から 'LPCWSTR' に変換できません。
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
\projects\sample\sample\sample01.cpp(85) : error C2664: 'CreateWindowExW' : 2 番目の引数を 'char [9]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。


エラーメッセージは上記です。よろしくお願いします。
428427:2005/09/19(月) 19:56:17
VC++2005EXPRESS beta2とPlatform SDKでコンパイルしてます。
429デフォルトの名無しさん:2005/09/19(月) 20:08:28
プロジェクトのプロパティの
[全般] -> [文字セット] を "マルチ バイト文字セットを使用する" か "設定なし" にすれば通ると思う


が、窓プログラミングになれてきたら LPCSTR を LPCTSTR、char を _TCHAR にして
_T( ) を利用したコーディングすることをお勧めする。
430デフォルトの名無しさん:2005/09/19(月) 20:16:56
>>429
ありがとうございました。
設定なしにしたところ、コンパイル通りました。

WindowsSDKは知らないことだらけなのでこれから少しずつやっていきたいです。
431デフォルトの名無しさん:2005/09/19(月) 20:55:43
>猫でもわかる

やめとけ
まともな本買って勉強するのが結局は近道
432デフォルトの名無しさん:2005/09/19(月) 21:01:43
猫の内容はずいぶん古い
433デフォルトの名無しさん:2005/09/19(月) 21:03:45
猫の糞サイトの尻拭いさせられるのも納得いかんな
自前でトイレットペーパーぐらい用意しろよ
434デフォルトの名無しさん:2005/09/19(月) 22:16:10
つか猫スレがあるから検索汁
435デフォルトの名無しさん:2005/09/19(月) 22:32:25
あのサイトなぜ修正しないの?
みつけにくい所に注意書きはあるのに
436デフォルトの名無しさん:2005/09/19(月) 22:42:47
猫だから
437デフォルトの名無しさん:2005/09/19(月) 23:31:04
修正したら本が売れなくなるからだろ。
438スタティックライブラリを自作したい:2005/09/19(月) 23:37:12
VC++6.0 で自作のスタティックライブラリを作成しそれを他のプロジェクト
から利用としていますがよく分かりません。

現状行っているのは
1. プロジェクト作成時にWin32 Static ライブラリを選択
2. 「プロジェクト->プロジェクトへ追加」を選択し、hoge.cpp hoge.hを追加
3. コンパイル
以上でライブラリの作成は完成のつもりでいます。

そして
1. 別のプロジェクトをMFC AppWizard[exe]で作成
2. 自作ライブラリを使いたいので #include "hoge.h"
と書いています。あと include やリンク?のパスを通せばいい
という感覚でいるのですがいまいち設定法が分かりません。
(色々やってみましたがうまくいきません)。

ライブラリの作成の仕方やその使い方を教えていただけないでしょうか。
よろしくお願いします。
439デフォルトの名無しさん:2005/09/19(月) 23:44:44
>>438
ペゾルド下巻
440名無しさん@お腹いっぱい。:2005/09/20(火) 03:31:55
windows XP でシリアル通信をしようとしました。
HANDLE iComm;
iComm = CreateFile("COM1",GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(iComm == INVALID_HANDLE_VALUE){
// エラー処理
}
デバイスマネージャには、COM1しかないのに、いつもエラー処理になります。
どーしてもCOM1ポートのハンドルがとれなくて、先に進めません。RS232Cを使用するために、他に何か設定がありますか?
441デフォルトの名無しさん:2005/09/20(火) 04:11:09
うちの Win2000 と WinXP で、そのコードでハンドル取れたぞ?
442名無しさん@お腹いっぱい。:2005/09/20(火) 04:38:42
440です
CMSCommを利用して、 SetPortOpen(true)を使用したところ、
一度だけ開いたのですが、その後、何度やっても
「ポートは既に開いています」が表示されてしまいます。
閉じ忘れかと思い、パソコンを再起動したのに、
それでも表示されて開きません。
CreateFileでも、やっぱりだめなままです。。。。
再起動しても、ポートは閉じられませんか?
何かポートを故意に閉じる方法ってありますか?
443デフォルトの名無しさん:2005/09/20(火) 05:47:27
VC++6.0でやってます
scanfで数値を一文で横に入力するようにするにはどのようにプログラムすればいいでしょうか?
100 200 300 と入力する感じにしたいのです
よくわからなかったので
scanf("%d %d %d",&a,&b,&c)みたいにやってみたのですが
これだと縦に
100
200
300
と入力するようになってしまいます
やりかた教えてください

あと小数点つき123.45とか入力した場合
途中で終わってしまいます
小数点入り数値を入力しても大丈夫なやり方も教えてほしいです
444デフォルトの名無しさん:2005/09/20(火) 06:03:54
scanfはCの標準関数だから
Cスレで聞いた方がいい
445デフォルトの名無しさん:2005/09/20(火) 06:08:07
>>444
Cスレで聞いてきま
446デフォルトの名無しさん:2005/09/20(火) 06:15:00
初歩の質問ですみません
リソースを編集するときに
コントロールボックスがなくて困っています。
どうしたらでてくるのでしょうか
お願いします。
447デフォルトの名無しさん:2005/09/20(火) 06:18:49
ツールバーを右クリック
448デフォルトの名無しさん:2005/09/20(火) 06:20:06
すばやい回答ありがとうございます
助かりました^^;
449デフォルトの名無しさん:2005/09/20(火) 06:50:00
VCとか関係なく、Winアプリの基本だな?
450346:2005/09/20(火) 09:33:26
、、、。
451デフォルトの名無しさん:2005/09/20(火) 11:32:34
>>442
GetLastError して、エラールックアップしてみれ。
452デフォルトの名無しさん:2005/09/20(火) 12:07:06
>>450
Visualくわんてぃふぁい

ぴゅーりふぁいがメモリリーク検出
453デフォルトの名無しさん:2005/09/21(水) 00:38:57
CMSComm *pMSComm = new CMSComm();
pMSComm->Create(NULL,WS_VISIBLE,CRect(0,0,0,0),this,2000,NULL);
>>>ポート設定のパラメータ・・・
pMSComm->SetPortOpen(true);
>>>送信処理
pMSComm->SetPortOpen( false);
delete pMSComm;
CMSComm を newして、Create して、delete すると、delete直後に
warning: calling DestroyWindow in CWnd::のメッセージが表示されます。
どーしてわからないんですが、誰か教えてくれませんか。
454デフォルトの名無しさん:2005/09/21(水) 00:43:43
そのまま。ウインドウを持つクラスは、始末するまえに
DestroyWindow呼んででウインドウを破棄しとけ、と言う話。
455デフォルトの名無しさん:2005/09/21(水) 00:44:12
インリン関数
456デフォルトの名無しさん:2005/09/21(水) 01:05:10
>>454
ありがとうございます!!!できましたー!!!
457デフォルトの名無しさん:2005/09/21(水) 01:43:39
>>448は女
458デフォルトの名無しさん:2005/09/21(水) 02:18:20
質問です。
とあるクラスの関数内で外部から取り込んだポインタの
コピーを行いたいのですがうまくいきません。
具体的には以下のような呼び出しを行ってもまったくコピーされません。
何故でしょうか?
-------------

class test *tst;
tst = new test();

int figure=5;
int *figure_a;
int*figure_b;
figure_a = &figure;

tst->reference(figure_a,figure_b);
cout<<"figure_aの値:"<<*figure_a<<"\n"<<flush;
cout<<"figure_bの値:"<<*figure_b<<"\n"<<flush;

delete tst;

-------------
void test::reference(int *a, int *b)
{
b=a;
}
459デフォルトの名無しさん:2005/09/21(水) 02:31:14
呼び元のポインタを格納する変数が更新されていないからだな
460デフォルトの名無しさん:2005/09/21(水) 04:01:15
COleVariant を利用したいのですが、昔のPGの修正で、COleVariantの
宣言とコンパイルは通るものの、なぜかうまく使えません。
afxole.h が見たらなかったので、StdAfx.h の中に、#include <afxole.h>を入れ、
initinstance にて、AfxoleInit を実行したのですが、COleVariantこの変数を
利用するところで、プログラムが落ちます。どうしたら、OLEが使えるようになりますか?
461デフォルトの名無しさん:2005/09/21(水) 04:23:43
http://www.geocities.jp/chiakifujimon/index.html
ここを見ながらやっています。
HTMLエディタの3のクリップボードを操ろう で
そこに書かれてあるように関数(SetClipBoard GetClipBoard)
を追加したのですが、このようなエラーがでてしまいました。
Notepad2View.cpp
C:省略\Notepad2\Notepad2View.cpp(160) : error C2556: 'class CString __thiscall CNotepad2View::GetClipBoard(void)' : オーバーロード関数の戻り値は異なっていますが、引数リストは同一です。
C:省略\Notepad2\Notepad2View.cpp(160) : error C2371: 'GetClipBoard' : 再定義されています。異なる基本型です。
c:省略\notepad2view.h(42) : 'GetClipBoard' の宣言を確認してください。
C:省略Notepad2\Notepad2View.cpp(173) : error C2511: 'SetClipBoard' : オーバーロードされたメンバ関数が '<Unknown>' にありません。
どこがダメだったんでしょうか。
分かる方お願いします。
462デフォルトの名無しさん:2005/09/21(水) 05:16:15
>>461
> オーバーロード関数の戻り値は異なっていますが
463デフォルトの名無しさん:2005/09/21(水) 06:12:57
だからよ
どっかのサイトを見ながらやってんならそこで訊けよ
464デフォルトの名無しさん:2005/09/21(水) 06:35:50
訊いたんですがそのBBSが出会い系の宣伝でいっぱいだったもので
ここに来たんですがいけなかったですか?
465デフォルトの名無しさん:2005/09/21(水) 06:38:00
何に対しての「だから」ですか?
466デフォルトの名無しさん:2005/09/21(水) 07:07:40
('A`)=3
467デフォルトの名無しさん:2005/09/21(水) 07:28:40
質問です。

DLL内から、そのDLLを呼び出した実行ファイルのファイル名を取得する方法はないでしょうか?
ファイル名が無理であれば、何でもいいのでその呼び出し元の実行ファイルを特定できるような
情報をDLL側で取得したいのですが・・・。
468デフォルトの名無しさん:2005/09/21(水) 07:36:44
>>467
GetModuleFilename()の最初の引数を0にすればできると思う。
469467:2005/09/21(水) 07:44:01
>>468
ありがとうございました。
早速ためしてみます。
470デフォルトの名無しさん:2005/09/21(水) 07:45:28
>>461
インクルードファイルでSetClipBoardをGetClipBoardで宣言してたりしない?
#そうでなかったとしてもいずれその辺だ。
471デフォルトの名無しさん:2005/09/21(水) 08:10:09
自分のレベルにあったサンプルじゃないと時間を無駄にするだけ
動かすだけが目的だったらプロジェクトごとついてるやつにした方がいい。
472デフォルトの名無しさん:2005/09/21(水) 08:10:56
>>470 ごめんなさいよく分からないのですが
インクルードファイルはいじってないです。
ただ、メンバ関数の追加から関数を作って、そのまま関数をコピペしただけです。
473デフォルトの名無しさん:2005/09/21(水) 08:26:10
そこの最後に完成品おいてあるじゃん
それ落としてビルドするだけだ

作成したHTMLEditorのソースファイル:src.lzh(227kByte)
474デフォルトの名無しさん:2005/09/21(水) 09:03:28
>>459
有難う御座います、
呼び元を変数内で更新するにはどうすれば宜しいでしょうか?
475デフォルトの名無しさん:2005/09/21(水) 09:03:44
>>473 ビルドしてみましたがHPに書いてあるような機能が実現されてないみたいでした;
それに、何がいけなかったかが分からないと成長したきがしませんでした;
どうも分からないみたいなので、このことは諦めることにします;
こんど新しい本を買うのでそれでがんばってみます
476デフォルトの名無しさん:2005/09/21(水) 13:33:27
>>474
int**

>>475
> HPに書いてあるような機能が実現されてないみたいでした
いや、書いてあるし…

いろいろ調べが甘いと思うぞ。
C2556 とかも調べりゃいろいろ出てくるし。
477デフォルトの名無しさん:2005/09/21(水) 14:42:29
>>476
オォォォォォ〜、動きました。
なんで更新されないのかがよく判りませんが
ご教授有難う御座いました。
478デフォルトの名無しさん:2005/09/22(木) 14:58:13
すいません、ダイアログベースでタブコントロールを使ったプログラムを作ってるんですけど、
タブの中のダイアログのデータ交換をするときに親ダイアログのソースファイルに

CTab1.Dlg dlg;
dlg.UpdateData(FALSE);

と書き込んだらビルドできるんですけど実行できないんです。
(Debug Assertion Failedというのが出てきて強制終了させられます)
どうすればいいですか?教えてください。
479デフォルトの名無しさん:2005/09/22(木) 15:21:44
CTab1.Dlg dlg;
dlg.UpdateData(FALSE);

この2行の間で何もしてないなら
まだウインドウが生成されてないように見えるが
480デフォルトの名無しさん:2005/09/22(木) 15:58:35
つーかタブの中のダイアログってなんだ・・・
481478:2005/09/22(木) 16:20:09
>>479
すいません、その2行の間は省いて書き込んでました。
実際は
dlg.m_edit = "あああ";
みたいな感じでやってます。

>>480
親ダイアログにタブコントロール貼り付けて、
その中に表示させるものが新しく追加したダイアログってことです。
デフォルトの親ダイアログにはUpdateData関数使えるんですけど…。
482デフォルトの名無しさん:2005/09/22(木) 18:53:11
>>481
Createしたのか?
483デフォルトの名無しさん:2005/09/23(金) 00:37:56
タブコントロールの中にダイアログを表示????
484デフォルトの名無しさん:2005/09/23(金) 00:42:01
>>483
タブコントロールでモードレスダイアログの表示をON/OFFで切り替える。
コストはかかるけどアイテム一個一個の管理を丸投げできるからコーディングが楽になるぞ。
MFC雑技団とかに載ってる。
485デフォルトの名無しさん:2005/09/23(金) 00:46:18
>>484
×表示をON/OFFで切り替える。
○表示/非表示を切り替える。

ナゾ日本語スマソ
486デフォルトの名無しさん:2005/09/23(金) 01:00:09
そんな雑技いらねぇ
487デフォルトの名無しさん:2005/09/23(金) 02:24:27
Windowsプログラミングでカードゲーム的なものを作りたいんですが、
「画像をクリックして切り替える」ってのをどうやって
再現すればいいのか分かりません。
ヒント的なものをください。
カードの部分を領域指定して・・・って感じですかね?
どーもうまくいかなくて・・
488デフォルトの名無しさん:2005/09/23(金) 02:36:01
全部描きなおし
489デフォルトの名無しさん:2005/09/23(金) 04:02:34
C++.net Standard版を買いました。
インストールしようとおもったのですが、認証がひつようなようですが、
アンインストールすれば、同一PCで再インストールできるのでしょうか?
可能な場合、アンインストールした別のPCでインストールできるでしょうか?
490デフォルトの名無しさん:2005/09/23(金) 04:29:51
アンインストール後、
インストールして認証しようとした時に「ダメ」と表示されたら、
電話認証に電話して事実を伝えれば問題ないとか聞いたぞ。
491デフォルトの名無しさん:2005/09/23(金) 05:41:23
Windowsのカードゲームはcards.dll使ってるんだよな
検索するとサンプルが見つかる
492デフォルトの名無しさん:2005/09/24(土) 15:36:36
MFCで画像の読み込みがしたいのですが、指定した範囲に画像を読み込んで表示させるのはどうやればいいんでしょうか?

http://www1.axfc.net/uploader/9/so/No_2033.jpg.html
↑こんなのを想定してます
493デフォルトの名無しさん:2005/09/24(土) 15:59:14
やりたいことが分かってるんなら、
それをキーワードにぐぐる先生なりで調べろや
最初から他人を頼みにするんじゃねぇよ
494デフォルトの名無しさん:2005/09/24(土) 16:07:48
495デフォルトの名無しさん:2005/09/26(月) 21:54:44
超初心者的な質問なんですが
VC++6.0standardで、フリーウェアを公開することはできるなでしょうか?
496デフォルトの名無しさん:2005/09/26(月) 22:06:27
>>495
Release版のEXEにReadme.txtをつけてアーカイブするだけ。
497デフォルトの名無しさん:2005/09/26(月) 22:11:33
お答えいただきありがとうございます。
Readme.txtにはなにをかいたらいいのでしょうか?
あとアーカイブするとはなんですか?
初心者ですいません
498デフォルトの名無しさん:2005/09/26(月) 22:31:15
ReadmeはVectorでいろいろ落としてみるなり、
書き方をググってみるなりして自分で調べろ。
一般的には、インストール方法や動作環境等を書いた簡易説明書。

アーカイブする=ファイルをまとめて圧縮する

少しは自分で調べる癖をつけましょう。
初心者でも、適当なキーワードでググるくらいはできるでしょうに・・・。
499デフォルトの名無しさん:2005/09/26(月) 22:38:13
変な方向へ話が進んでるな
500デフォルトの名無しさん:2005/09/26(月) 22:44:46
>>498
ググるとはなんですか?
とくる予感。
501デフォルトの名無しさん:2005/09/26(月) 22:45:17
>>497
お前フリーソフト使ったことないだろ。
502デフォルトの名無しさん:2005/09/26(月) 22:51:24
プログラミングに関係ない話になると初心者が得意になって出てくる
503デフォルトの名無しさん:2005/09/26(月) 22:51:30
>>498
詳しい解説ありがとうございます。
今度からなるべく自分で調べるようにします。

>>501
なんどかつかったことはあります。
504デフォルトの名無しさん:2005/09/27(火) 20:24:38 0
>503
初歩的なこともわからないコピペプログラマのソフトなんて誰も使おうとしないよ
505デフォルトの名無しさん:2005/09/27(火) 20:50:53 0
シェアウエア。4000円です。
void main(){}
506デフォルトの名無しさん:2005/09/27(火) 20:54:08 0
え?4000円くれるの?
507デフォルトの名無しさん:2005/09/27(火) 20:55:26 0
>>505
それなんてCPU最適化ツール?
508デフォルトの名無しさん:2005/09/27(火) 21:46:10 ID:0
コードを最適化するんじゃなくて、CPUを最適化するんだww
509デフォルトの名無しさん:2005/09/28(水) 02:27:10
今思えばVBランタイムが起動するだけでいくらかメモリがフラッシュされるんだから
本人の意図はともかく効果はあったんだよな
510デフォルトの名無しさん:2005/09/28(水) 21:10:04
>>508
うわー、意図が汲めてない人ハケーン…
511デフォルトの名無しさん:2005/09/30(金) 13:07:41
プログラム起動中に熱さフリーズして
立ち上げてみたら
バイナリに勝手に変わっちゃったんですが
これってもう、どうにもならんもんなのでしょうか。

前バイナリに変わった時は思い出しながら
また作って1日つぶれてしもた・・・。
512デフォルトの名無しさん:2005/09/30(金) 13:08:37
>>511
スレ違い
513デフォルトの名無しさん:2005/09/30(金) 13:10:08
>>512
VC++だったものでここに質問しました。
どこのスレに行けばいいでしょうか
514デフォルトの名無しさん:2005/09/30(金) 13:20:03
エスパー召集
515デフォルトの名無しさん:2005/09/30(金) 13:24:31
プログラム起動中に熱暴走でフリーズ
その後再起動してみたら

ここまで翻訳できた。
あとはタノム。
516511:2005/09/30(金) 13:32:52
あ、すいません
日本語が壊れてたみたいですね

float position;

ノ: ) ( ] = ) mLメ; ) ] ) (

こんな風になってしまいました。
もう、どうにもならんのですね。
517デフォルトの名無しさん:2005/09/30(金) 14:37:55
いい加減主語を書けってことに気づいてくれないかなぁ。
開発環境も書いてないし。

具体的に言おうか?
・「何が」壊れたのか
・OSは
・開発環境は
518デフォルトの名無しさん:2005/09/30(金) 14:38:50
>>516
バックアップ取ってなかった自分を恨め
519デフォルトの名無しさん:2005/09/30(金) 14:40:52
そもそもプログラム起動中て何だ
ビルドしてできあがった実行ファイルのことを指してるなら、ソースが壊れることはないよな
デバッグ中か?
520デフォルトの名無しさん:2005/09/30(金) 14:42:17
単にHDDか何かが逝っただけだろ
521デフォルトの名無しさん:2005/09/30(金) 15:13:17
開発中のソースがフリーズにて壊れてしまい
テキストとして読めなくなったんだろう。
俺ならすっぱりあきらめる。
ファイルシステムをFAT32とかにしてたんじゃないの?
522デフォルトの名無しさん:2005/09/30(金) 16:03:13
NTFSなら、普通はフリーズ程度でデータ化けは起きないわな
なんだかんだいってもあれのジャーナル処理は強力だから

今時FAT32なんて前世紀の遺物上で開発してた奴が悪い
523デフォルトの名無しさん:2005/09/30(金) 16:35:39
つーかスレ違いじゃなくて板違い。
524デフォルトの名無しさん:2005/09/30(金) 16:36:41
ファイルのリンク情報が壊れたっぽいから下手すれば被害甚大だね。
525デフォルトの名無しさん:2005/10/01(土) 10:12:05
別に叩けば直るんちゃうん?、んなもん
526デフォルトの名無しさん:2005/10/01(土) 11:17:03
じゃあまずは525を叩いて直すか
527デフォルトの名無しさん:2005/10/01(土) 14:38:08
TCHARと_TCHARは何が違うのですか?
528デフォルトの名無しさん:2005/10/01(土) 15:16:29
>>527 は「TCHAR _TCHAR 違い」でググる、ということさえ思いつかないバカなんです。
529デフォルトの名無しさん:2005/10/01(土) 16:11:44
元宣言見て見ればいいだろうが
530デフォルトの名無しさん:2005/10/01(土) 19:59:35
リソースでコンボボックスコントロールをつけると、実行してプルダウンした時に2ドットぐらいしかメニューが出ないんです。
CreateWindowの方で作ると、何故かフォントサイズが24ぐらいになってしまってわけが分かりません。

プルダウンした時のサイズを変える方法は、どうしたらいいんでしょうか?
531デフォルトの名無しさん:2005/10/01(土) 20:06:29
超FAQな質問が来たぞ
532デフォルトの名無しさん:2005/10/01(土) 20:29:49
コンボボックスを貼り付けるときの縦幅がプルダウン時の大きさ
貼り付けたあとのサイズ変更のやり方は忘れた
533デフォルトの名無しさん:2005/10/01(土) 21:12:32
>>532
ありがとうございます。

最初に設定する方法を検索したら、そのやり方が出てきました。
http://www.athomejp.com/goldfish/vcused/combo.asp

最初はこれを見ても分からなかったんですが、▼がスクロールバーってことに気付いて上手く行きました。
サンクスです
534デフォルトの名無しさん:2005/10/02(日) 00:08:23
SendMessageという命令は、ハンドルが不正だった等おかしな値があった場合、ポインタでおかしなとこを参照したような意味不明な動きをするんでしょうか?
何故かSendMessageから関数の頭にワープして無限ループに入るバグに悩まされています。
535デフォルトの名無しさん:2005/10/02(日) 00:22:36
ループしているんじゃなくて、再帰しているんじゃないか?
つまり、メッセージ処理ルーチンで自分が受け取ったメッセージを自分宛てに送り直しているとか。
536デフォルトの名無しさん:2005/10/02(日) 00:47:08
デバッガでコールスタックを見れば一目瞭然
537デフォルトの名無しさん:2005/10/02(日) 09:35:03
>>534
ところでSendMessageは命令ではなく関数だ。
538デフォルトの名無しさん:2005/10/02(日) 12:00:35
関数でなくAPIと言いたまえ
539デフォルトの名無しさん:2005/10/03(月) 22:27:42
質問です。
拡張子.c のファイルを
『右クリック→プログラムから開く→Visual Studio.net2003』 で開いてもビルドできません。
プロジェクトを作らずに、
540デフォルトの名無しさん:2005/10/03(月) 22:31:29
コマンドラインからclつかえ。
541デフォルトの名無しさん:2005/10/03(月) 22:35:32
ビルドしたいのですが。

どなたか、知恵を貸して下さい。
542デフォルトの名無しさん:2005/10/03(月) 22:37:35
プロジェクト作れ
543539:2005/10/03(月) 22:58:12
539です。
何度もすみません。
cl.exe をPATHに設定して、コマンドラインからclを打ったらエラーダイアログが出てしまいます。

cl.exe - コンポーネントが見つかりません
× mspd71.dllが見つからなかったため、このアプリケーションを開始できませんでした。アプリケーションをインストールし直すとこの問題は解決される場合があります。
544デフォルトの名無しさん:2005/10/03(月) 22:59:40
スタートメニューの「Visual Studio .NET 2003 コマンド プロンプト」から開始すべし。
545デフォルトの名無しさん:2005/10/03(月) 23:01:17
>>543
VS .Net 2003だろ。
スタート→プログラム→Visual Studio .Net 2003→Visual Studio .Net ツール→Visual Studio .Net 2003 コマンドプロンプト
これでclが使える状態のコマンドプロンプトが出るはず。
546539:2005/10/03(月) 23:02:05
Visual Studio.net2003を再インスコ OTL
したくないんスけど
547539:2005/10/03(月) 23:04:59
>>544
>>545
その方法でいけました。有難うございます。
助かりました
548デフォルトの名無しさん:2005/10/03(月) 23:24:41
ダイアログボックスの中にウィンドウを作ろうとしています。
ダイアログボックスの中にウィンドウを作ることには成功しまし
たが、ウィンドウのサイズあわせがうまくいかず困っております。

リソースエディタの画面右下を見ながらダイアログボックスのサイズを調整しているのですが、
CreateWindow()で作ったウィンドウとサイズが合わず困っています。
リソースエディタの画面右下で変わっている数字はピクセル単位ではないのでしょうか。

CreateWindow()で横幅を640に設定する。
ダイアログボックスの横幅の数字を560位にする。
コンパイルしてダイアログを呼び出すと、ダイアログボックスのほうが大きいです。
どうやったら解決できるのでしょうか・・・
549デフォルトの名無しさん:2005/10/03(月) 23:26:53
>>548
コードの中でGetClientRectとAdjustWindowRectを使えばいいんじゃないか?
550デフォルトの名無しさん:2005/10/03(月) 23:47:18
ありゃ、DLUだから。ダイアログのフォントを
MSゴシック(PとかUIではない。固定フォントの方)の
12ptを使うようにすれば、1DLU=2pxになる。
551デフォルトの名無しさん:2005/10/03(月) 23:48:30
スクリーンの解像度が96dpiの時限定だけどね。
552デフォルトの名無しさん:2005/10/03(月) 23:50:44
>>548
ドラッグエリアのありなしでもサイズは変わってくるんじゃない?
ダイアログって、クライアント領域のサイズで作るんじゃない?
553548:2005/10/04(火) 01:00:51
なんか、縦横比も一対一ではないようで八対九くらいっちゅう中途半端な感じでした。
ダイアログは作らずにウィンドウ上にボタンとか配置していくことにしました。

失礼しました。
554デフォルトの名無しさん:2005/10/04(火) 08:13:22
何がしたかったんかようわからんの
555デフォルトの名無しさん:2005/10/04(火) 10:40:16
質問させてください。

Visual C++ .NET を使っています。
CTreeCtrlの描画を変更したくて、新しいクラスをCNewTreeCtrl作ることにしました。
「クラスの追加」でCTreeCtrlから派生クラスを作成するところまでは分かりました。
ここで、protected なOnPaintをオーバライドしてWM_PAINTをハンドルしたいのですが、
メッセージマップだとかその辺が良くわからなくて、どう書けばいいかわからないのです。

Class Wizardとかその辺の便利なツールから簡単にできるのでしょうか。
識者の方々、どうか方法をご教授ください。

よろしくお願いいたします。
556デフォルトの名無しさん:2005/10/04(火) 10:46:23
その辺の便利なツールから簡単にできます
頑張ってやってみましょう
557デフォルトの名無しさん:2005/10/04(火) 10:47:52
プロパティがソリューションエクスプローラの下とかに表示されてるだろ?
それの右から2番目のタブのようなものの所にメッセージってのがあるから、
WM_PAINTを選んで右側の空欄からドロップダウンリスト出して、
"<追加> OnPaint()"をクリック。
削除もそこからできるがコメントアウトされるだけなので注意。
558デフォルトの名無しさん:2005/10/04(火) 10:55:23
>>556-557

ほんとに簡単にできました。
ありがとうございました。
559デフォルトの名無しさん:2005/10/04(火) 10:57:06
蝶初心者ですがよろしくおねがいします
<環境>
 Win2000
 VC++.NET2003
なんですが、
Windowsフォームアプリケーションで
Form1,Form2を作成。
Form1にボタンを作って作成したForm2をただ開きたいだけなのですが

error C2061:構文エラー:識別子 'Form2'

などとでて、なかなかうまくいきません。
インテリセンスでForm1も2もでてくるのに…
何か足りないことがあるのでしょうか?


ご教授お願い致します
560デフォルトの名無しさん:2005/10/04(火) 10:58:32
どうせincludeしていないとかそういうことだろ?
IntelliSenseは結構その部分ゆるい所がある。
561デフォルトの名無しさん:2005/10/04(火) 11:01:10
どうせインスタンス作ってないとかそういうことも、だろ?
562デフォルトの名無しさん:2005/10/04(火) 13:27:46
C++ で新規プロジェクトを作る時に言語「日本語」を選択したんですが、
後から「英語」に変更する事はできないんでしょうか?
メニューの表示等を全部英語にしたいんですが。
563デフォルトの名無しさん:2005/10/04(火) 14:25:49
プロジェクトの設定が英語だろうと、
表示する文字は全部自分で英語にして入力しないといけないのだから、
わざわざプロジェクトの設定を英語にする必要はない
564デフォルトの名無しさん:2005/10/04(火) 14:26:56
英語でプロジェクト作ってそこへソースを追加が無難
日本語でプロジェクト作って英語のリソースを追加でもいいけど
565デフォルトの名無しさん:2005/10/04(火) 15:07:33
>>564
> 英語でプロジェクト作ってそこへソースを追加が無難

これでできました。
563様、564様ありがとう。
566デフォルトの名無しさん:2005/10/04(火) 15:21:23
つーかおめぇ、英語OSで動かすのか?
日本語OSで動かすのに英語で作るのか?
567559:2005/10/04(火) 16:40:14
>>560
その通り。
インクルードって入れたらできたよ
ありがとう。

で、開くのは出来たんだけど
Form2を閉じだときに
HideしていたForm1をCloseイベントかなんかで
Showしたいんだけど…
568デフォルトの名無しさん:2005/10/04(火) 16:58:09
parent.show()
569デフォルトの名無しさん:2005/10/04(火) 16:59:46
>>566
どの言語で動かしても見た目が同じになるようににしろ、て言われました。
ユーザー比率は米国が7割なんで英語が採用されたという訳です。
570559:2005/10/04(火) 17:46:29
>>568
マジでありがとうorz

あと、年月日を表示したいんだが
和暦(平成とかね)ってだせるのかな?
571デフォルトの名無しさん:2005/10/04(火) 18:21:35
System.Globalization.JapaneseCalender.GetYear(DateTime) で年号での年数

System.Globalization.JapaneseCalender.GetEra(DateTime)
で、明治を1とする数値で、指定したDateTimeの年号を取得できるぞ
572デフォルトの名無しさん:2005/10/04(火) 21:43:06
使用環境はWinXP ProfessionalでVisualC++.NETを使用しています。
アプリケーションを作ったのですが、そのexeを今使っているXP以外のWin98やMeなどの
OSでも使用できるかどうかは実際に試してみる他ないのでしょうか?
それともコンパイルやビルド時にどこかで設定できるのでしょうか?
教えてください。
573デフォルトの名無しさん:2005/10/04(火) 22:00:57
>>572
.NETなら.NETさえ入ってりゃ動く

Win32API使ってるならMSDNのドキュメントに対応してるOSのバージョンとか書いてある
574デフォルトの名無しさん:2005/10/04(火) 22:08:06
>>572
<Windows.h>をインクルードする行より前にこれを書けばWin95/NT4以降で動くAPIだけしか使えないようになる。
#define WINVER 0x0400
#define _WIN32_WINNT 0
#define _WIN32_WINDOWS 0
#define _WIN32_IE 0

http://msdn.microsoft.com/library/en-us/winprog/winprog/using_the_windows_headers.asp
575572:2005/10/05(水) 02:26:03
>>573,572
遅くなりましたが、どうもありがとうございました。
576デフォルトの名無しさん:2005/10/05(水) 17:28:00
プログラミングとかはじめて何ですけど、
VisualC++を勉強する前にC言語とかを勉強してからのほうがいいですか?
577デフォルトの名無しさん:2005/10/05(水) 17:31:47
>>576
VisualC++とC言語を同列に持ってくること自体おかしい
578デフォルトの名無しさん:2005/10/05(水) 17:34:29
VCって言語だと思ってる人(営業とか)多いからOK。
579デフォルトの名無しさん:2005/10/05(水) 17:43:27
>>576
おかしいか?
小学校卒業してから中学に入学する
とかと同じだろ
580デフォルトの名無しさん:2005/10/05(水) 17:48:35
VCの入門書にこんなこと書いてある

読者はCを知らなければならない。
Cを知らないプログラマにとって、
Windowsプログラミングはスタート地点としてふさわしくないだろう。
581デフォルトの名無しさん:2005/10/05(水) 18:48:02
>>576
日本語ワープロを勉強する前に日本語とかを勉強してからのほうがいいですか?

と言ってるのと同じだな。
VC++はC/C++言語での開発をサポートする統合開発環境の製品名で
それを勉強することはC言語を勉強することと直接の関係は無い。
582デフォルトの名無しさん:2005/10/05(水) 19:35:25
C
C++
VeryC++。略してVC++
583デフォルトの名無しさん:2005/10/05(水) 20:01:34
>>579
おかしいな
とりあえずキミの頭が
584デフォルトの名無しさん:2005/10/05(水) 21:31:02
>>581
VisualC++の入門書なのにCやC++も教えている本がかなりあるけど
本当に関係ないと思ってる?
585デフォルトの名無しさん:2005/10/05(水) 22:08:51
ここってプログラミングとは直接関係ないから板違いだろ
統合開発環境ソフトの操作方法を教えるスレだよな
    ↓    ↓    ↓
★初心者にVisual C++を教えるスレ★ Part21
586デフォルトの名無しさん:2005/10/05(水) 22:09:42
教えないと先に進めないからな
587デフォルトの名無しさん:2005/10/06(木) 16:09:39
Win32 Console Application でプロジェクトを作成しています。
処理の最後で AfxMessageBox を使用してメッセージを出すと、
どうしてもコマンドプロンプトの下にメッセージが出てしまいます。
コマンドプロンプトの上にメッセージを出す方法はありますでしょうか。
588デフォルトの名無しさん:2005/10/06(木) 16:15:13
1 コマンドプロンプトを出す
2 そのコマンドプロンプトからプログラムを実行
589デフォルトの名無しさん:2005/10/06(木) 20:05:43
>>587
合ってるかどうか知らんけど、メッセージボックスのハンドルがおかしい時に、下に行ったよ。
なんかの本のサンプルをコピって来たんだろうけど、わしの場合はNULLが指定してあってバグってた。
590デフォルトの名無しさん:2005/10/06(木) 20:59:38
__declspec( restrict )
__declspec( noalias )
__restrict
/Oa /Ow

マルチスレッドのWin32アプリケーション開発時に、上記キーワードを使ってソースを書いた場合、
クリティカルセクション、ミューテックス、セマフォ、イベント、メータードセクション、
その他諸々の同期機構を使っても、それらを無効化してしまう様なコードをclが吐き出す事は有り得るのでしょうか?
591590:2005/10/06(木) 21:04:01
Windowsでは暗黙的にebp,edi,esiのレジスタの内容を
呼び出し元に復帰(ret)する前に復元するという話を聞き、
そういった事が絡んで、同期機構が無効化云々するのかどうかも気になります。
592デフォルトの名無しさん:2005/10/06(木) 21:11:02
どなたか、IMEの制御についてご教授ください。

ImmSetConversionStatus()にてIMEモードを切り替えているのですが、
 入力モード; 直接
 変換モード; 一般等(無変換ではない)
という状態はどのようにすればいいのでしょうか?

fdwConversionの引数をIME_CMODE_ROMANにセットすれば半角英数にはなるのですが、
直接入力モードの設定方法がわかりません。

これってImmSetConversionStatus() では設定不可能なんでしょうか?
Getしても値が変わっておらず・・・。
593デフォルトの名無しさん:2005/10/06(木) 22:53:26
>>592
ImmSetOpenStatusはどうだろう?
594デフォルトの名無しさん:2005/10/07(金) 09:30:52
VC++.NETのMFC ActiveXコントロールのテンプレートで作成したダイアログを
表示するocxをIEに埋め込んでIEの中でダイアログを埋め込み表示したいです。
(ウイルスバスターオンラインみたいなことを実現したい。)
「もしかして、IEのhWndを取得してocxに渡すのでは?」と思ったのですが、
他に良い方法があるのではないかと思って探しています。
方法をご存知の方、教えていただけないでしょうか?
595559:2005/10/07(金) 09:38:02
>>571
ありがとう。
しかし、使い方がいまいち判らん…
参照設定とか関係ある??
596559:2005/10/07(金) 16:06:53
ゴメソやっぱわかった

GetEraで4、
GetYearで17
 が返ってくるようになった。
平成 って出したい場合if文とか書かなきゃやっぱり無理か。

そして、今度はフォームを(最大化ボタン使わず)
画面全体表示して、
それにあわせてオブジェクトらも真ん中に持っていきたいのだけれど…

どうしたらいいかな????
597デフォルトの名無しさん:2005/10/07(金) 16:21:11
>>596
.Netはよう知らんが、GetEraメソッドの隣にGetEraNameメソッドがあるわけだが。
598デフォルトの名無しさん:2005/10/07(金) 16:29:40
>>596
仮にメソッドで直接年号取得できないとしても
わざわざifなんて書かなくても配列を使えば済む話なわけだが
599デフォルトの名無しさん:2005/10/07(金) 16:31:16
>>594
htmlのオブジェクトタグに書けばよいよ。
600デフォルトの名無しさん:2005/10/07(金) 16:35:50
>>596
最大化使わずに画面全体のサイズにするなら、デスクトップの領域サイズを取ってくればいいだろう
601559:2005/10/07(金) 18:55:24
>>597
.NET'03でみてみたがないみたいだ、残念
>>598
case文とか?(わかっていない)
まぁ、結局は書かなきゃいけないのね
>>600
デスクトップの領域サイズね。
VBのSCREENみたいなものだろぅ?
それがわかんね…orz
602デフォルトの名無しさん:2005/10/07(金) 19:49:55
エクスプローラー → ツール → ファイルタイプ
で表示されるフォルダオプションダイアログの
ファイルタイプタグに
拡張子.tng
open"D:\Program Files\tonjiru.exe" /prefetch:7 /Open "%L"
close"D:\Program Files\tonjiru.exe" /prefetch:7 /Close "%L"
という情報を登録したいのですが、登録の仕方がわかりません。

.regファイルを使えば登録できそうなのですが
.regファイルは手書きするのが大変です。
何か簡単な方法を知っている方、ご教授お願いいたします。
603デフォルトの名無しさん:2005/10/07(金) 19:50:49
>>601
>DateTimeFormatInfo.GetEraName メソッド
>指定した時代 (年号) の名前を格納している文字列を返します。

>Screen クラス
>1 つのシステム上の 1 つ以上のディスプレイ デバイスを表します。
>この型のすべてのメンバの一覧については、Screen メンバ を参照してください。
>System.Object
> System.Windows.Forms.Screen

探すってことができないのかな?
604デフォルトの名無しさん:2005/10/07(金) 19:51:45
>>602
.regファイルを出力するプログラムを作る。
605デフォルトの名無しさん:2005/10/07(金) 20:59:36
>>601
やる気あんのかアンタ・・・
教える気も失せるぞ

>>603
いい奴だなおまえさん
606デフォルトの名無しさん:2005/10/07(金) 23:26:57
>>601
>.NET'03でみてみたがないみたいだ、残念
そうか、今度は.NET 2003で調べてごらん。きっと見つかるよ。

>case文とか?(わかっていない)
>まぁ、結局は書かなきゃいけないのね
それもひとつの方法だ。
今時改暦なんて風習を引きずっているのは、世界でも日本くらい。
元々改暦なんて考慮して作られていない可能性もあるし、パッチの提供が遅れる可能性もある。
改暦時に速やかに対応できるように自前で実装するのも、ひとつの考え方としてあっても良い。

>VBのSCREENみたいなものだろぅ?
どうしてもAPIが理解できず、Screenを使いたいなら、
VBでScreenの値を返すActiveX DLLを作るなんてどうだ?
607デフォルトの名無しさん:2005/10/08(土) 00:17:43
ああそうですか日本くらいですか
608デフォルトの名無しさん:2005/10/08(土) 14:56:41
>602
自分の環境で関連付けを設定しておいて、REGEDITでその部分だけを.regに出力。
ターゲット環境ではその.regを結合する。
609デフォルトの名無しさん:2005/10/08(土) 23:56:29
VC++ 7.1を使用しています。

ファイルを読み書きするプログラムを作成していて、デバッグ作業を行っているのですが、
デバッグで実行するとどうやらカレントディレクトリがソリューションのあるフォルダになっているようです。

それを実行ファイルのあるパスに変更する方法ってありますか?

この時にちゃんと実行ファイルのあるディレクトリになっていないとデバッグ時だけファイルが読み込めずデバッグになりません・・・。
プロジェクトの設定を一通り見てもそれらしきものはなさそうなのですが、どこかにあるのでしょうか?
初歩的な質問ですが、よろしくお願いします。
610デフォルトの名無しさん:2005/10/09(日) 00:16:09
>>609
プログラム側で対処した方がいい。
起動時のカレントディレクトリは実行ファイルがあるところとは限らない。
611デフォルトの名無しさん:2005/10/09(日) 06:50:44
>>609
GetModuleFileNameに自分のインスタンスハンドルを渡してやればフルパスがもらえる(実行ファイル名込み)
612デフォルトの名無しさん:2005/10/09(日) 12:48:49
Visual C++6.0を使用しています。
私はSDLやOpenGLをよくいじるんですが、APIの関数のようにSHIFT + Ctrl + Spaceで引数を表示できるようにできませんか?
物忘れが激しいんでいちいち見に行かなくてはいけないので効率が落ちて困っています。
どこかに設定ファイルのようなものがあるのでしょうか?それともヘルプいじればいいのでしょうか?
教えていただけるとうれしいです。
613デフォルトの名無しさん:2005/10/09(日) 12:52:09
>>612
ヘッダの定義には飛べるんじゃないの?
614デフォルトの名無しさん:2005/10/09(日) 12:57:53
>>613
自作の関数(main.hで宣言)の引数は表示されましたが、gl.hやらglu.hの関数は表示されませんでした。
hの読み込み方が悪いのでしょうか?
ちなみに
-main.h-
#pragma once
#pragma comment(lib, "Opengl32.lib")
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "SDL.lib")
#pragma comment(lib, "SDLmain.lib")
#include <windows.h>
#include <SDL.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <stdio.h>
#include <vector>
using namespace std ;

void QuitGame(int code);
以下略

-main.cpp-
#include "main.h"
以下略

という風に使っています。
改善点があれば教えていただきたいと思います。
615デフォルトの名無しさん:2005/10/09(日) 13:31:40
>>614
VC6 ならツール→オプション→<ディレクトリ>タブ
インクルードファイルの項目でSDL.hやOpenGL関連のインクルードファイルのディレクトリを指定してやる。
多分これで見に行くようになる気がする。
616デフォルトの名無しさん:2005/10/09(日) 14:03:47
>>615
設定してみましたが、表示されません。
SDLは・・・\IncludeのなかGLは・・・\Include\GLのなかにあります。
GLのほうは設定して一番上に上げましたが、見に行ってくれません。
617デフォルトの名無しさん:2005/10/09(日) 15:11:02
VC.NET2003を使っています。
ttp://homepage2.nifty.com/natupaji/DxLib/
このライブラリを使ってみたのですが、インテリセンスが表示されないのですがどうしたらいいでしょうか。
ライブラリはDxLib.hをヘッダーファイルに追加して使う事が出来ています。
よろしくお願いします。
618617:2005/10/09(日) 15:16:16
あ、すいません。
>>612さんと全く同じ質問でした。
よろしくお願いします。
619デフォルトの名無しさん:2005/10/09(日) 15:17:28
>>616
本当だ見てくれないなorz
プロジェクトにヘッダーを追加するしかないみたいですね。

620デフォルトの名無しさん:2005/10/09(日) 16:35:00
>>619
そうですか・・・
いちいち追加するのも面倒なんでHELP見て覚えるだけ覚えます・・
ご迷惑おかけしました
621デフォルトの名無しさん:2005/10/09(日) 16:35:57
>>617
諦める
622デフォルトの名無しさん:2005/10/09(日) 16:43:26
Visual C++.NETをつかっています。初歩的な質問で恐縮ですが,
Form1にrichTextBox1があり,Form2でそこのTextの値を使いたいのですが
Form2のヘッダに何をincludeすれば良いのでしょうか?
"Form1.h"をincludeしてもうまくいきません。
623デフォルトの名無しさん:2005/10/09(日) 16:52:46
Form1とForm2は他人?兄弟?親子?
624デフォルトの名無しさん:2005/10/09(日) 17:45:14
妹です。
625デフォルトの名無しさん:2005/10/09(日) 18:26:28
>>623
Form1が親でForm2が子だと思います。
ビルドすると先に出るFormが1で12は1から呼び出す形です。
626デフォルトの名無しさん:2005/10/09(日) 19:41:46
boolとBOOLはどう違いますか?
627デフォルトの名無しさん:2005/10/09(日) 19:45:54
BOOL → WinAPI、C99
bool  → C++
628デフォルトの名無しさん:2005/10/09(日) 19:46:46
>>627
ありがとうございます
629デフォルトの名無しさん:2005/10/09(日) 20:11:58
>>627
C99は_Boolと<stdbool.h>でtypedefされているboolだ。
630617:2005/10/10(月) 04:12:20
>>619
プロジェクトにヘッダーを追加してもだめなんですが・・・。
631デフォルトの名無しさん:2005/10/10(月) 04:21:32
>>630
設定後、ビルドしました?
632617:2005/10/10(月) 06:08:35
>>631
はい、しました。
それでもインテリジェンスが機能してくれません。

自分でソースファイル->クラスの追加 等でクラスを追加したり、関数などを追加した場合はビルドに関わらず機能してくれます。
どうしてでしょうか・・・?
633デフォルトの名無しさん:2005/10/10(月) 07:58:51
>>632
リビルドじゃね?

あとインテリジェンスってなんでぃすか
634デフォルトの名無しさん:2005/10/10(月) 08:14:38
>>633
知性ってことじゃないの?で617には反応してくれないという。
635デフォルトの名無しさん:2005/10/10(月) 09:08:25
そりゃぁ、ないもんは反応しないだろ。
636デフォルトの名無しさん:2005/10/10(月) 09:14:21
1度ブラウザファイルを作る設定でビルドしたらだめ?
637デフォルトの名無しさん:2005/10/10(月) 09:25:57
たぶんこの辺の情報がないとダメ
Common\MSDev98\Bin\win32.ncb
638デフォルトの名無しさん:2005/10/10(月) 15:34:59
質問です。XP、.NET です。

やや大きめの矩形ビットマップ領域(800,600)をある色でクリアしたくて、
CDC::FillRect を用いて塗りつぶそうとしたのですが、
ある入門書で、ExtTextOut を用い、テキストの背景色を利用して矩形を塗りつぶしているものがありました。
(ExtTextOut に渡す表示テキストは NULL です。)

かなり驚かされたのですが、これは常套手段なのでしょうか?
矩形を塗りつぶすには、シンプルな方法としてはこれが最良(手軽、高速)な方法なのでしょうか?

くだらない質問ですがよろしくお願いします。
639デフォルトの名無しさん:2005/10/10(月) 15:45:45
激しくトリッキーな塗り方だと思うが?
640638:2005/10/10(月) 16:15:39
>>639
ありがとうございます。
とくに高速にする必要もない部分なので、素直に FillRect を使うことにします。
641619です:2005/10/10(月) 16:44:30
>>632
.NETは持ってないので確認できないんで参考になるかどうかワカリマセンが
プロジェクトのフォルダーにソースと同じ名前の .ncb って在りません?
インテリセンスが機能しなくなったら、一度それを削除しちゃってからIDEを立ち上げなおすと
ちゃんと認識してくれたりします。
VisualStudio6ではそれで行けるんですが…
642デフォルトの名無しさん:2005/10/10(月) 17:59:40
すみません、Visual C++.NETで製作したダイアログをWindows98で実行すると
文字化けしてしまうので、日本語リソースの文字セットをUNICODEからShift_JISに
したいので方法はありますか?
643デフォルトの名無しさん:2005/10/10(月) 18:01:44
WINVERでなんとかなるんじゃね?
644デフォルトの名無しさん:2005/10/10(月) 18:23:51
自分のソースその他にUNICODEって書いてる部分調べりゃわかるだろうが
645デフォルトの名無しさん:2005/10/10(月) 18:25:39
#undef UNICODE
すれば?
646デフォルトの名無しさん:2005/10/10(月) 19:25:23
>>638-640
CDC::FillSolidRect() のソース見ろ。ExtTextOut()で塗ってるぞ。
単に純色のブラシ作ってCDC::FillRect()するなら、CDC::FillSolidRect()使ったほうが高速。
647559:2005/10/11(火) 11:37:50
>>603
>>606
(゜Д゜;)
ありがとう、マジ、ありがとう(涙
今度からは、もっとよく探してみますorz
648デフォルトの名無しさん:2005/10/11(火) 12:08:01
VC++6.0使ってます

エクセルファイルにリソースIDと変数名を格納してある状態で
VC側からエクセルファイルオープンしてリソースIDと変数名を文字列で取得

この文字列をリソースID、変数名として代替利用できる方法ないでしょうか?

defineできって対応させるしかないですか?

もうぼけぼけでわけわからんちん
649602:2005/10/11(火) 13:03:59
>>604,>>608
有難うございます。
エクスプローラー → ツール → ファイルタイプの下位の
「ファイルタイプの編集」にたどり着くことが出来ました。
REGEDITにて2箇所のディレクトリを.regに出力。
2つの.regを結合して1ファイルに編集しても上手くいきました。
650デフォルトの名無しさん:2005/10/11(火) 17:18:37
よくDvorakとかの配列にするために変換するソフトありますよね。
ちょっと自分のキーボードの配列を変えたいんであれみたいなのを作りたいですが、あれはどのようにして変えているんでしょうか?
GetKeyStateとkeybd_eventを組み合わせてやってもうまく動いてくれないんですが・・・
どなたかスムースにうまく動くやり方ご存じないでしょうか。
651デフォルトの名無しさん:2005/10/11(火) 17:25:41
>>650
コントロールパネル→キーボード→入力ロケール→追加...→キーボードレイアウト→Dvorak
652デフォルトの名無しさん:2005/10/11(火) 17:29:20
>>651
すいません。CTRLとかEND,HOMEとかの位置を別のキーに置き換えたいとおもったのですが・・
誤解されてしまいました。
Dvorakを例に出したのがまずかったです。
653デフォルトの名無しさん:2005/10/11(火) 17:58:32
>>652
ドライバにパッチ。
654デフォルトの名無しさん:2005/10/11(火) 18:01:28
レジストリ書き換えてみます・・
ありがとうございました
655デフォルトの名無しさん:2005/10/11(火) 18:30:24
メッセージループの中で仮想キーを文字コードに変換してる所があるだろ
656デフォルトの名無しさん:2005/10/11(火) 19:03:07
VC++.NET2003のWindowsフォームアプリケーション(.NET)のテンプレートで
可変長文字列型を扱いたいと思っています。
<afx.h>をincludeしてCString型を使おうとしてもうまく行きません。
Windowsフォームアプリケーション(.NET)で可変長文字列型を扱うのは
何型が適しているのでしょうか?
よろしくお願いいたします。
657デフォルトの名無しさん:2005/10/11(火) 19:11:06
>>656
でも.NetならSystem::String。
ちなみに非MFCでCStringを使うには<atlstr.h>だってMSDNに書いてあるだろ。
658デフォルトの名無しさん:2005/10/11(火) 20:05:42
>>656
.NET使ってんだから.NETの検索くらいしろよ
659デフォルトの名無しさん:2005/10/11(火) 22:47:27
VC.NET 2003 でMFCプロジェクト を作っています。
で、初めてActiveXのDLLを使おうとしているのですが、
ぐぐってみても、MSDNで調べてみてもサパーリTT

調べてみて、先ず、
#import "wakaranX.dll"
using namespace

のようにやってみたら

d:\MyProject\MFCProj\Debug\wakaranX.tlh(4966) :
   error C2366: 'wakaranX;::_doshite::GetAmount' :
   再定義; 異なる implementation_key 指定子です。
  
  d:\MyProject\MFCProj\Debug\pscharge.tlh(2286) :
   ''wakaranX::_doshite::GetAmount' の宣言を確認してください。

上記の様なエラーがどっさり出てきてしまいました。
なにか足りない宣言があるのでしょうか?
DLLは市販のもので、商品のマニュアルとサンプルはVBのものしかついていません。
多言語については「なんでもおっけさー!」と書きながら、「それぞれの言語のActiveXの
使い方を見てね」なのです。

<つづく>
660デフォルトの名無しさん:2005/10/11(火) 22:49:25
<つづき>
プロジェクトの参照設定で、system32下にあるDLLを選んで、
ビルドは通りましたが、その後の使い方が????

DLLには各クラス(上の例だとdoshite)があり、
配下に関数(上の例ではGetAmount)が数多あります。
プロジェクト内のクラスでの呼び出し方すらわかりません。
こうして書いていて、我ながら猿以下だとは思うのですが、
こうやるんだよ!ってのをよろしくお願いします。
661659:2005/10/11(火) 23:32:04
追加
660での参照設定は stdafx.hの記述は削除した上でやっています。
662デフォルトの名無しさん:2005/10/12(水) 00:32:32
どのスレかよくわからなかったのでこちらで失礼します。
xmlの作成で質問です。

検索をかけると、
ttp://www.sutosoft.com/oldroom/devdiary/20040307.html
↑のようなやり方が数多く発見されるわけなんですが、
同じように書いても「引数の数が合わねーぞエラー(C2660)」でどうにもなりません。

同じ環境で上記のようなコードを書いていたりするサンプルがあったりするので、脳がはちきれそうです。
現在は下記のようにやらざるを得ない状態ですが、
↑のような書き方にできる方法があったら是非ともお教え下さい。
---------------------------------------------------------------------------------
#import "msxml4.dll" named_guids raw_interfaces_only
using namespace MSXML2;
   ・
   ・
VARIANT_BOOl vBool;
MSXML2::IXMLDOMDocument2Ptr pDoc;
MSXML2::IXMLDOMElementPtr pRoot, pElement;

pDoc.CreateInstance(MSXML2::CLSID_DOMDocument40);
pDoc->loadXML(L"<?xml version=\"1.0\" encoding=\"EUC-JP\" ?>\n<hoge />", &vBool);
pDoc->get_documentElement(&pRoot);

pDoc->createElement(_bstr_t("hage"), &pElement);
pRoot->appendChild(pElement, NULL);
---------------------------------------------------------------------------------

環境:
win2000sp4
VC++.NET2003
MSXML4.0sp2
663デフォルトの名無しさん:2005/10/12(水) 00:34:30
現在MFCを利用してプログラムを作成しています。
できるだけ正確に60fpsの処理をさせるために以下のようなコードを作りました。

DWORD Now = timeGetTime();
DWORD Last = Now;
DWORD PastTime= 0;
while(1){
 Now = timeGetTime();
 if(Now == Last) continue;
 PastTime += 60 * (Now - Last);
 Last = Now;
 if(PastTime > 1000){
  PastTime -= 1000;
  //ここにやりたい処理
 }
}

この状態でも動作は問題なく行うのですが、
どうやらwhileの無限ループを行っているせいか、CPU使用率が跳ね上がってしまいます。
精度を維持しつつ、これを回避する方法はないでしょうか?
MFCとはたぶん関係なさそうなので、ここで質問させていただきます。
664デフォルトの名無しさん:2005/10/12(水) 00:45:24
タイマーかスリープ
665662:2005/10/12(水) 00:49:32
>662
申し訳ありません、raw_interfaces_only外したらできてしまいました。
何でさっきあんだけ試してできなかったのよ…orz
666デフォルトの名無しさん:2005/10/12(水) 02:03:24
>>641
その通りやってみましたが機能してくれませんでした。
ありがとうございました。
667デフォルトの名無しさん:2005/10/12(水) 09:22:02
>>663
ゲームプログラミングか何か?(・∀・)イイナー
Sleepを使うことをお勧め。1ミリ秒程度の誤差がでるかも。
でも、ファミリーコンピューターみたいな滑らかさを実現するには、
ディスプレイの垂直同期のタイミングで描画しないとむりぽ。
タイマーは時間が不正確なのでやめといた方がいいです。

DWORD Now = timeGetTime();
DWORD Last = Now;
DWORD PastTime= 0;
while(1){
 Now = timeGetTime();
 if(Now == Last) continue;
 PastTime += 60 * (Now - Last);
 Last = Now;
 if(PastTime > 1000){
  PastTime -= 1000;
  //ここにやりたい処理
 }
 else{
  Sleep(1); //ここでスリープぅ
 }
}
668デフォルトの名無しさん:2005/10/12(水) 09:24:51
>>657
ありがとうございます。
669668は656:2005/10/12(水) 09:26:40
↑は>>656です。
670デフォルトの名無しさん:2005/10/12(水) 15:02:07
ダイアログで設定した情報を得るにはどうしたら?

※ダイアログクラスが在るとして
1.グローバル変数
2.INIファイルやレジストリを介す
3.単純にアクセサを使う
4.Observerパターン
5.Win32APIに良くある様に、データを纏めた構造体のアドレスを渡す


自分が思いつくのはこれ位なのですが、「2.」が一般的なんですかね?
671デフォルトの名無しさん:2005/10/12(水) 15:12:09
★シュワルツネッガー知事の拒否で、カリフォルニア州の「反日教科書」法成立せず

・いわゆる「南京大虐殺」など、旧日本軍の残虐行為をカリフォルニア州の教科書に
 書き込むことを目的とした法案に、シュワルツェネッガー知事が署名を拒否しました。

 この法案は、州の中学高校で使用される教科書について、第二次大戦中にアジアで
 起きた出来事に、もっと分量を割くことを求めるもので、先月、州議会を賛成多数で
 通過していました。提案者の議員は教えるべき具体例として、いわゆる「南京大虐殺」を
 挙げていました。法案を後押ししたのは、日本の常任理事国入り反対の署名活動を
 展開した在米の中国人団体らで、「南京大虐殺」などの旧日本軍の残虐行為をアメリカ
 で歴史的事実として定着させることが、推進派の最大の目的でした。しかし、拒否権を
 持つシュワルツェネッガー知事は7日、「アジア諸国の役割について学習することは、
 すでに認められている」として署名を拒否し、法案は成立しませんでした。
 http://www.tv-asahi.co.jp/ann/news/web/inte_news8.html?now=20051009245834
 ※ニュースは既に削除されています。

672デフォルトの名無しさん:2005/10/12(水) 17:53:48
エスパー!仕事、仕事!
673デフォルトの名無しさん:2005/10/12(水) 19:02:32
質問です。
動的に変化する2次元配列の配列を作りたいのですが、
どうすればよいのでしょうか?
普通にnew演算子を使って作るのはできるのですが
vectorを使った方が都合が良いです。

例えば
std::vector< std::vector<int> > matrix;
matrix.push_back(std::vector<int>(4));
matrix.push_back(std::vector<int>(4));

でmatrix[*][4]は作れますよね。

こんな感じで
matrix[*][9][4]のような物を作りたいのですが、
上手くいかなくて困り果てています…
674デフォルトの名無しさん:2005/10/12(水) 19:09:51
C++を学ぶ上で、分かりやすい本があったら、教えてもらえますか?
675デフォルトの名無しさん:2005/10/12(水) 19:44:00
分かりやすいなんて人それぞれだし、スレ違い。
676デフォルトの名無しさん:2005/10/12(水) 19:45:11
=="MailTest.h"ファイル==

#using <mscorlib.dll>
#using <System.dll>
#using <System.Web.dll>
using namespace System::Web::Mail;

class MailTest : public CObject
{
public:
MailMessage *tMailTest;

-後略-
}

上記の様にすると*tMailTestの定義で下記のエラーが3件もでてしまいます。

「error C3265:アンマネージ'<不明>'で、マネージ'<不明>'を宣言できません。」

cppファイル内で内部定義した時にはエラーはでないのですが、
ヘッダーに定義して全ての関数から使用できるようにしたいので、なんとか
解決をと試行錯誤してるのですが解りません。
要素が足りないのかと思って、以下のように定義しても同様でした。

System::Web::Mail::MailMessage *tMailTest;
はっきりいってハマってしまいました。
有識者の方々、是非ご教授くださいませ。。。

ちなみに
Windows 2000
Visual C++ .NETです。
677デフォルトの名無しさん:2005/10/12(水) 20:11:32
>>667
Sleepで1ms程度の誤差しか出ないとは運の良い奴だな。

Sleepやタイマーが指定した経過時間で処理を完了することを期待したコードを書いては駄目。
timeGetTimeなりパフォーマンスカウンタなりを使って経過時間を算出し、
経過時間に基づいて算出を行うべし。
678デフォルトの名無しさん:2005/10/12(水) 20:26:39
>>648
どういう状態を想定してるか分からんが、変数名は無理。
ハッシュのキーなどにすれば文字列で指定可能だけど。
679673:2005/10/12(水) 20:41:26
すいません、質問するスレを間違えました、
お詫びします…
680デフォルトの名無しさん:2005/10/12(水) 20:53:24
>>677
してるじゃん
681デフォルトの名無しさん:2005/10/12(水) 21:13:20
突然ですみません。
DirectX以外の方法で、ほぼ正確に1/60毎にコールバック関数を呼ぶAPIはありますか?

いろいろ試してみたのですが、マルチメディアタイマーを使用すると、1/60秒から少しずれてしまい(整数msの分解能のため)
1/60秒での処理ができません。
これだとfpsに直すと62fps(16msの場合)になりますよね?
これをほぼ正確に60fpsにしたい場合、何か方法はないでしょうか

http://pc8.2ch.net/test/read.cgi/tech/1128951330/10
これと質問内容は一緒だお。
巧妙なマルチだお。
682デフォルトの名無しさん:2005/10/12(水) 21:28:22
>>670
2は少数派だと思う。
683デフォルトの名無しさん:2005/10/12(水) 21:43:16
>※ダイアログクラスが在るとして
>5.Win32APIに良くある様に

もしかしてMFCのやり方を知りたいんだろうか?
684デフォルトの名無しさん:2005/10/13(木) 00:17:33
>>681
確かに内容は似てるが質問が全く違うぞ。よく見ろw
685デフォルトの名無しさん:2005/10/13(木) 02:39:55
>>684
違うか?
まんまコピペに見えるが。
686670:2005/10/13(木) 06:27:44
>>683
ダイアログ等で設定した情報を、親ウィンドウや他のクラスに送信する、
もしくは、その内容を反映させる方法論みたいなのが知りたいんです。

今までは>>670の「3」と「5」を組み合わせてやってたんですが、設定したい内容
が増えてゴチャゴチャしてきたもので…。
687デフォルトの名無しさん:2005/10/13(木) 07:44:26
>>686
その状況で、1を採用してもごちゃごちゃは改善されないと思うが。
688648:2005/10/13(木) 12:04:04
>>678
返信どもです
変数は_ですか・・・

想定している状態はというと・・・
DBも構造体も他社設計で決まっていない状態で
リソースIDと変数名だけ変更すればその他処理を修正しなくても
いいような感じに持っていきたいと考えてます

で内容は
 1.DB→構造体→画面
 2.構造体→エクセル

 で( ゚Д゚)マンドクセーなので定義ファイルをひとつ作成して
 そこにリソースIDとエクセルのアドレス?(A12とか)と変数名を入れておいて
 定義ファイルを読んでリソースIDのデータを変数とエクセルに設定できるような
 共通関数を作成しようかと想定しています

 なので変数を除けばなんとかできそうな感じですよね・・・
 いい案あったら教えてくだはい
689667:2005/10/13(木) 13:40:55
>>681
やっぱりゲームを作りたいのかな?
DirectXでディスプレイ制御を乗っ取らない限り、凄い精度で時間計測できたとしても
グラフィック描画中の状態が見えてしまいます。μ秒単位で時間を取得する方法があるけど、
やっても無駄だと思われ。大きめのゲームセンターに行って「ギガウイング ジェネレーション」
というゲームの画面を観察すると参考になるかも。このゲームは時間計測の方法で描画してます。
一定周期ごとに描画中の状態が見えます。パソコンのDirectXの垂直同期待ち描画は、
処理落ちすると像がブレて画面汚いから、時間計測の方法を使ったと思われる。
690デフォルトの名無しさん:2005/10/13(木) 14:26:45
(゚д゚;)
691デフォルトの名無しさん:2005/10/13(木) 15:05:48
winXPにしたらVisualStudio6.0がインストールできなくなった!
2005買うしか無いんすか?ポマイラおしえて〜!!
692デフォルトの名無しさん:2005/10/13(木) 15:09:52
んなこた〜ない。
693デフォルトの名無しさん:2005/10/13(木) 15:10:40
>>691
できます
694デフォルトの名無しさん:2005/10/13(木) 15:19:43
コピペぺったん

日本海新聞でワンクリックアンケート
ttp://www.nnn.co.jp/index.html

>鳥取県人権侵害救済条例
全国で初めて成立した県人権条例についてどう思いますか。


投票&コピペ、ヨロシコ
695デフォルトの名無しさん:2005/10/13(木) 16:22:05
Visual Studio .NET 2002を使ってるのですが
DirectX9.0日本語ドキュメントをVS.NETの「検索」範囲(?)に入れられますか?
「ヘルプ」→「検索」で検索して9.0JPN Docの中からも探せるようにしたいです
ヘルプらしきものがいっぱい入ってるトコロにインストールしたのですが
無理なようで特別に操作が必要なのでしょうか
696デフォルトの名無しさん:2005/10/14(金) 13:34:12
VC++.NETのWindowsフォームアプリケーション(.NET)で
WindowsフォームContextMenuコントロールを
FormなどのプロパティのContextMenu欄を
使わずに表示したいです。
ご存知の方いらっしゃれば教えていただけないでしょうか?
697デフォルトの名無しさん:2005/10/14(金) 13:34:49
>>689
フレーム切り替えって通知されないの?

ていうか、こっちでフレームの切り替え指定できないの?

もちろんタイマーで同期は取らないといけないと思うけど、
タイマー待ちのためにタスクの処理を捨てるのはもったいない。
698デフォルトの名無しさん:2005/10/16(日) 11:16:00
>>681
タイマーボードを挿せ
699デフォルトの名無しさん:2005/10/16(日) 18:29:20
VS2003で、ウィンドウの中の色を黒背景ベースにできないんでしょうか?
テキストエディタだけは、オプション→フォントおよび色変更で変えられますが、
他のウィンドウは白いまま・・・。
700デフォルトの名無しさん:2005/10/16(日) 19:10:27
簡単に変えれるけど、馬鹿には変えれない
701デフォルトの名無しさん:2005/10/16(日) 20:12:31
>>699
プログラム板で聞くような内容じゃないな。
コントロールパネルから設定できるだろ。
702デフォルトの名無しさん:2005/10/17(月) 18:51:59
VC++.NETのWindowsフォームアプリケーション(.NET)でMFCのクラスを使いたいと思っています。
StdAfx.hにMFCの定数やヘッダをincludeすれば、MFCを使えることがわかりました。
しかし、ある特定のコンポーネント(WindowsMediaPlayer)と同時に使用すると
コンパイルが通りません。
【Form1.h】
01://
02:// axWindowsMediaPlayer1
03://
04:this->axWindowsMediaPlayer1->Enabled = true;
05:this->axWindowsMediaPlayer1->Location = System::Drawing::Point(8, 56);
06:this->axWindowsMediaPlayer1->Name = S"axWindowsMediaPlayer1";
07:this->axWindowsMediaPlayer1->OcxState = (__try_cast<System::Windows::Forms::AxHost::State * >(resources->GetObject(S"axWindowsMediaPlayer1.OcxState")));
08:this->axWindowsMediaPlayer1->Size = System::Drawing::Size(208, 184);
09:this->axWindowsMediaPlayer1->TabIndex = 4;
10:this->axWindowsMediaPlayer1->MouseUpEvent += new AxInterop::WMPLib::_WMPOCXEvents_MouseUpEventHandler(this, axWindowsMediaPlayer1_MouseUpEvent);

07:で
『d:\tonjiru\WmpCtrlFrm\Form1.h(116) : error C2039: 'GetObjectA' : 'System::Resources::ResourceManager' のメンバではありません。
stdafx.cpp(0) : 'System::Resources::ResourceManager' の宣言を確認してください。』
というエラーが出ます。(エラーが出るのは、この行だけ。)

07:のGetObjectのところを上手く書けば通るような気がするのですが、よくわかりません。
ご存知の方教えていただけないでしょうか?よろしくお願いいたします。
703デフォルトの名無しさん:2005/10/17(月) 19:48:18
VS2005 TeamSuite Beta2 の C++ について、
埋め込みマニフェストが、毎回「はい」になっていてエラーとなる。
これをデフォールト「いいえ」に設定する方法を、誰か教えて。

メニューバーの「プロジェクト」から、
「XXX(プロジェクト名)のプロパティ」
--> 「構成プロパティ」--> 「マニフェストツール」
--> 「入力と出力」--> 「埋め込みマニフェスト」
です。
704デフォルトの名無しさん:2005/10/17(月) 19:58:58
703です。
失礼しました。
VS2005の板があったので、そこへ転載します。
705デフォルトの名無しさん:2005/10/17(月) 21:26:20
>>702
#undef GetObject
706デフォルトの名無しさん:2005/10/17(月) 23:05:43
CPropertyPageのメソッドでAfxBeginThreadをRuntimeClassの方を引数にして
CWinThreadポインタを得ようとすると「メモリが不足しています」って出るね。
AFX_THREADPROCを引数にした方は、余裕で起動できるのに。

メモリを不正参照しているのは分かるんだけど、よく分からない・・・。
だれか原因知っている方いませんか?
707702:2005/10/18(火) 20:19:07
>>705
適切な方法を教えて頂き、ありがとうございました。
708デフォルトの名無しさん:2005/10/18(火) 23:32:03
何あのVS2003の使えないIntelliSence
ちゃんとクラス作ってファイル追加してんのに、:: も . も反応しやがらねぇ・・・
さすがMSだな
709デフォルトの名無しさん:2005/10/19(水) 01:32:28
2003に限らないがな。
インテリセンスのバグはいいけがん何とかして欲しい。
710デフォルトの名無しさん:2005/10/19(水) 07:42:45
それだけ素人が書いた糞コードの解析が難しいって話。
711デフォルトの名無しさん:2005/10/19(水) 09:10:12
VC++6.0、MFCです

class CHoge {
 CHoge();
 enum EHoge {
  A_BEGIN, A_NUM1, A_END, B_BEGIN, B_NUM1, B_END
 };
 static CString A_Numbers[];
 static BYTE B_Numbers[];
};

CString CHoge::A_Numbers[] = {"0"};
BYTE CHoge::B_Numbers[] = {0};

CHoge::CHoge() {
 ASSERT( sizeof(A_Numbers)/sizeof(CString) == CHoge::EHoge::A_END - CHoge::EHoge::A_BEGIN - 1);
 ASSERT( sizeof(B_Numbers)/sizeof(BYTE) == CHoge::EHoge::B_END - CHoge::EHoge::B_BEGIN - 1);
}

列挙してある中の、各BEGINとENDの間の値の個数と各Numbers配列は同じ個数になるようにします
コンストラクタでその個数の正規性チェックをしてるのですが、
2行目のASSERTのところで、「error C2070: sizeof 式のオペランドが、識別子または型名になっていません。」とエラーが出てしまいます

識別子も型名も間違えず書いてあるのに、何故こんなエラーが出るのでしょうか
712711:2005/10/19(水) 09:15:49
すみません
自己解決しましたorz
713デフォルトの名無しさん:2005/10/19(水) 09:16:02
>>711
それはsizeof(B_Numbers)だけでもエラーが出ると言うことで宜しいか?
714デフォルトの名無しさん:2005/10/19(水) 13:54:43
>>712
ここは ROM の人も多いから、皆の後学のために
解決したらだめだった理由を書いてくれるとありがたい
715インテリセンス:2005/10/19(水) 16:15:28
>>709
>いいけがん
こんな事書くヤツのコードなんか解析できっかよ
716711:2005/10/19(水) 16:42:18
すみません、出かけてて遅れました

BYTE CHoge::B_Numbers[] = {0};と書くところを、実際にはBYTE B_Numbers[] = {0};と書いてまして
CHoge::を付けてちゃんと書いたらエラーが消えました
717デフォルトの名無しさん:2005/10/19(水) 21:24:02
VC++.NETでWindowsMediaPlayerActiveXコントロールを使って
動画の再生中にWindowsMediaPlayerを右クリックして
コンテキストメニューを出した後に、
コンテキストメニューから項目を選択すると
WindowsMediaPlayerのClickEventが発生しますが、
コンテキストメニューの何の項目が選択されたのかを
取得する方法がわかりません。
(WindowsMediaPlayerActiveXに該当するイベントが見当たらなかったです。)
何方かご存知の方、教えていただけないでしょうか?
718デフォルトの名無しさん:2005/10/19(水) 23:18:45
リッチエディットボックスを使ってるんですが、
文字のサイズ変更と色変更はできるようになりました。

fgets()で読み込んだあとに先頭に特定の文字列があれば
その行だけ色を変えたいのですが、リッチエディットボックスでの
実装方法を教えていただけないでしょうか。

if(strncmp(ss, "for", 3)==0){
//ここにいろいろと処理を追加したい。
}
719デフォルトの名無しさん:2005/10/20(木) 09:24:45
お世話になります。よろしくお願いします。win2000、VC++6.0MFCで
作ってるのですが、メンバ変数のポインタからメンバ関数を使いたいのですが。
メンバ変数に追加するだけでメンバ関数って使えないのですか?
メンバ変数の設定は値、CStirngです。
720デフォルトの名無しさん:2005/10/20(木) 09:36:19
使える
ドットでやってるとか言うなよ?
721デフォルトの名無しさん:2005/10/20(木) 09:54:19
ドットでした。どうすればいいのですか? -> ←これですか?
722デフォルトの名無しさん:2005/10/20(木) 11:23:38
そうだよ
723デフォルトの名無しさん:2005/10/20(木) 11:40:39
いやいやあの〜〜〜
メンバ変数.メンバ関数()でやるにはどうすればよろしいでしょうか?
値ではなくコントロールにすればいいですか?
724デフォルトの名無しさん:2005/10/20(木) 11:45:37
>>723
具体的に何をしたいのか書け。
725デフォルトの名無しさん:2005/10/20(木) 11:58:06
>>723
ポインタじゃ無理だバカ
726デフォルトの名無しさん:2005/10/20(木) 12:01:40
ポインタ->メソッドの何が気に入らんのやら・・・
727デフォルトの名無しさん:2005/10/20(木) 12:08:39
どうでもいいが >>720 のエスパーっぷりに感動した
728デフォルトの名無しさん:2005/10/20(木) 12:30:04
(*メンバ変数).メソッドでやれば
729デフォルトの名無しさん:2005/10/20(木) 12:44:13
m_ProcCnb.GetCurSel();みたいに使いたいんですけど。。。。
730デフォルトの名無しさん:2005/10/20(木) 12:56:00
>>729
使えばいいじゃん。
だから、なにをしたいんだってばさ。
731デフォルトの名無しさん:2005/10/20(木) 12:57:22
->でも使えないんです。
732デフォルトの名無しさん:2005/10/20(木) 12:58:13
小出しじゃなくてもっと要点をまとめて、
いっぺんにしっかりと説明しる
733デフォルトの名無しさん:2005/10/20(木) 13:06:34
コンボボックスで選択された項目の格納されてるデータを
エディットボックスに出力したいんですけど、
734デフォルトの名無しさん:2005/10/20(木) 13:11:53
ひとりごと?
735デフォルトの名無しさん:2005/10/20(木) 13:17:23
1.何をしたら
2.どうなったか

せめてこれだけでも書いてくれ
いくら使えない使えないって言われても、使えるよとしか答えれるわけないじゃん
736デフォルトの名無しさん:2005/10/20(木) 13:17:46
どういう手順で行えばいいのかわかりません。
自分で考えた↓
選択されているデータのインデックスを取得
      ↓
選択されているデータ取得
      ↓
取得した文字列をエディット・ボックスへ出力

だと思うんですけど、インデックスを取得する時に
メンバ変数を使ったほうがいいのかと思いました。
737デフォルトの名無しさん:2005/10/20(木) 13:19:35
御前様は箸の上げ下ろしも教わらないとできませんか。そうですか。
738デフォルトの名無しさん:2005/10/20(木) 13:26:18
コンボボックスならGetWindowTextでいいんじゃないか?
リストじゃなくてわざわざコンボなわけだし
739デフォルトの名無しさん:2005/10/20(木) 15:00:58
「メンバ変数」とはDDX変数のことで、たぶんUpdateData()をしていないのだろう。

じっちゃんの名にかけて。
740デフォルトの名無しさん:2005/10/20(木) 15:13:32
UpdateDataはしたんですけど、だめでした。
741デフォルトの名無しさん:2005/10/20(木) 17:48:11
初めまして。この度は一つ質問させて頂きたく参りました。

現在、手元に、「main.cpp」「StdAfx.h」「Ed.sln」「Ed.vcproj」があるのですが、Ed.exeファイルにコンパイルする方法が分からなくて困っています。
仕様しているソフトは、「Microsoft Visual C++ 6.0」です。

初歩的な質問になってしまいますが、よろしくお願い致します。m(_ _)m
742デフォルトの名無しさん:2005/10/20(木) 17:53:10
文字列の最後から、指定した文字列が存在するまでのバイト数を返すような
標準関数ってありませんか?

"文字列取得"とかで調べたんですが、見つかりませんでした。
ご存知でしたら教えてください。
743デフォルトの名無しさん:2005/10/20(木) 18:06:32
strlen()で全体の長さ調べて、strstr()で先頭からバイト数調べて引いちゃだめなの?
744デフォルトの名無しさん:2005/10/20(木) 18:06:47
2年近く使っていてまだこのレベルかと自分が情けなく思うのだが
質問したい。

VC++6.0をwin2k環境下で使っているのだが、上司に
「デバッグするのにspy++つかわんのか?」といわれて
「あれ、どうも馴れてなくて」とその場は流したのだが、たしかに基本機能に
近い位置にあるものだし、あと10年はキーボード叩いてメシ食べたいし、
知識がほしいのです。

spy++の基本的な使い方から解説してくれてるような書籍/サイトが
あったら教えてください。
よろしくおねがいします。
745デフォルトの名無しさん:2005/10/20(木) 18:11:39
>>741
VC++7 to VC++6 project converter
http://www.arstdesign.com/articles/prjconverter.html
を使ってみるとか。
(*.sln, *.vcprojはVS.NETのプロジェクトファイル。)
746デフォルトの名無しさん:2005/10/20(木) 18:12:10
>>741
どっから持ってきたんだよそのファイル群
そら.NET対応になって以後のVisualStudioのファイルだVC++6じゃない
747デフォルトの名無しさん:2005/10/20(木) 18:16:28
>>742
最後だから strrchrがいいんでない?
748デフォルトの名無しさん:2005/10/20(木) 18:43:07
>現在、手元に、「main.cpp」「StdAfx.h」「Ed.sln」「Ed.vcproj」があるのですが

main.cpp ひとつコンパイルするだけじゃないか
749742:2005/10/20(木) 19:15:27
>>743さん , 747さん

strrchrで無事解決しました、ありがとうございました。。
750デフォルトの名無しさん:2005/10/20(木) 21:07:41
DiskMirroringToolっていうミラーリングツールの公開されているソースを参考にし、
ミラーリングツールを自作してみたのですが、なんか、変な現象に悩まされているです。

自作のツールのみを起動させて実行させるとコピー速度が遅いのですが、
DiskMirroringToolと一緒に起動させて、走らせると、DiskMirroringToolが
コピーしている間だけ、自作ツールの方のコピー速度もつられて(?)早くなるのです・・・。
こんなことって、何が原因で起こってるか分かりますか?VC6です。
751デフォルトの名無しさん:2005/10/20(木) 21:11:33
キャッシュ
752デフォルトの名無しさん:2005/10/20(木) 21:33:55
>>745,746,748

お返事ありがとうございます。
745さんのおっしゃるもので、sln,vcprojファイルを変換したのですが、ビルド時にエラーをはいてしまいました。
後、勘違いしていたのですが、コンパイルではなくビルド(?)したいという事でした。
説明不足ですみませんでした。

このファイル群は友達に貰ったものなのですが、VisualStudioが必要という事なのでしょうかね・・・。
ご親切にアドバイスありがとうございましたm(_ _)m
753デフォルトの名無しさん:2005/10/20(木) 21:46:01
学生時代にc++5.0を買ってそのまま眠ってたのですが、
最近仕事を辞めて時間できました。
もう一度勉強してみようと思うのですが、楽しくC++勉強できる本などありますか?
754デフォルトの名無しさん:2005/10/20(木) 21:53:03
>>753
すれ違いだわな
755デフォルトの名無しさん:2005/10/20(木) 21:53:12
>>キャッシュなんですか・・・
キャッシュを使ってコピーするっていう方法は
VCで、どうやるのでしょうか?

DiskMirroringToolは単体でも早いのに、自作ツールの方は
上のツールと一緒に動かさないと早くならないなんて・・・
DiskMirroringToolのソースみてもどこが該当するのか分からんTT
756デフォルトの名無しさん:2005/10/20(木) 21:58:43
学生だったら4000円もあればVisualStudioを買えるんだけどな
757デフォルトの名無しさん:2005/10/20(木) 22:08:19
VC++とC++は別物だから
758デフォルトの名無しさん:2005/10/20(木) 22:12:23
>>753 >>757
そういうことでしたか。知らずとはいえご迷惑おかけしました。
759デフォルトの名無しさん:2005/10/20(木) 22:23:54
>>752
sln、vcprojはVC7のソリューションファイルとプロジェクトファイルで、
VC6ではそれぞれdswとdspに対応する。
それ自体はテキストファイルだから必要ならテキストエディタで見るとして、
VC6で空のプロジェクトを作ってそれにmain.cppを追加してビルドすればいいだろう。
760デフォルトの名無しさん:2005/10/21(金) 04:08:04
VC7のファイルだけじゃねぇよ
761717:2005/10/21(金) 13:52:29
別のConTextコントロールを作成して
任意のHWND上にConTextコントロールを表示する方法で
解決いたしました。
762デフォルトの名無しさん:2005/10/21(金) 13:53:34
Windowsの画面の右下の時刻の所にマウスカーソルを持っていくと、
黄色の背景に年月日がポップアップ表示されます。
VC++のTextBoxコントロールで、上記と同じ様にポップアップを
表示させる機能を付けたいのですが方法がわかりません。
どなたか知っている方、教えていただけないでしょうか?
よろしくお願いします。
763デフォルトの名無しさん:2005/10/21(金) 13:57:51
タイトルバーを持たない、2Dボーダーのポップアップウィンドウ作って表示すれば?
764デフォルトの名無しさん:2005/10/21(金) 14:00:51
CToolTipCtrl?
765762:2005/10/21(金) 14:26:01
>>763-764
ToolTipの存在を初めて知りました。
ToolTipコントロールを使って
即行解決しました。
ありがとうございます。
766デフォルトの名無しさん:2005/10/21(金) 21:24:18
課題レポート1
 VC6sp6XPhomeでSDIでCstudentを作成しました。
プロジェクト内の*.hと*.cppをセットで全てソースコードを
印刷せよ。2段組8pとすること。
 いままでは、寺パットでtmp.txtに貼りつけてましたが
いい加減疲れました。世の中にそんなeditorが存在したら教えてください。
秒殺で仕上げられるのなら、方法をご教授ください。
767デフォルトの名無しさん:2005/10/21(金) 21:26:02
貼り付けで我慢しる
768デフォルトの名無しさん:2005/10/21(金) 21:27:49
そういうプログラムを作る。これ最強。
769デフォルトの名無しさん:2005/10/21(金) 21:39:56
766です
>貼り付けで我慢しる
>そういうプログラムを作る。これ最強。
そんなこと言わないで教えてください。
とりあえず、こんな漢字で始めようと思います。
最後尾にキャットしていけば、できようですが、*.cppで
改ページしたいです。
#include <iostream>
#include <fstream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
int main()
{
ifstream in_file( "C:\\My Documents\\*.txt" );
if ( ! in_file )
{ cerr << "ぼけ\n"; return -1; }
ofstream out_file("C:\\My Documents\\PjAll.txt" );
if ( ! out_file )
{ cerr << "はげ\n"; return -2; }
ifstream in_file2( "C:\\My Documents\\*.txt" );
if ( ! in_file )
{ cerr << "ぼけ\n"; return -1;

string word;
vector< string > text;
while ( in_file >> word )
text.push_back( word );
770デフォルトの名無しさん:2005/10/21(金) 21:41:26
>>766
Perlでも使ってtmp.txtを作ってエディタに開かせて,
そこからゴニョゴニョ
771デフォルトの名無しさん:2005/10/21(金) 22:43:47
>>766
つ[cygwin]
772デフォルトの名無しさん:2005/10/22(土) 00:26:41
766です。
>つ[cygwin]
ウニわかりません。かんべんしてください。
>そういうプログラムを作る。これ最強。
大分完成に近づいてきました。力を御菓子ください。
■WS内の*.hto or *.cppをワイルドカードで検索し、fname_fileに出力
■fname_file内のファイルを順番に読み取りPjAll.txtの後部に連結
■PjAll.txtを直印刷。
■オプション //改ページ の文字を見つけたら次ページ
       予約語 青、コメント 緑
■週末に疲れた死似そう、横にならしてください。 
/次のコードで現在のディレクトリにあるすべてのファイルを列挙できます。
//各ファイルの名前が出力されます。
#include <afx.h>
CFileFind finder;      //ここ↓がワカリマセン
BOOL bWorking = finder.FindFile("*.*");
while (bWorking)
{
bWorking = finder.FindNextFile();
fname_file << (LPCTSTR) finder.GetFileName() << endl;
}
773デフォルトの名無しさん:2005/10/22(土) 00:29:04
VisualStudioとMSWORDですぐ出来るけどな。
774デフォルトの名無しさん:2005/10/22(土) 00:32:22
>VisualStudioとMSWORDですぐ出来るけどな。
スイマセン教えてください。お願いします。
もしかしてマクロで秒殺ですか?




775デフォルトの名無しさん:2005/10/22(土) 00:40:13
>>774
やりたいことが今ひとつよくわからないんだけど、Ctrl+Aでソースの全範囲選択して
コピペするだけで予約語は青いしもそのまま出るしコメントアウトは緑。
やや横が足りないから適宜改行してやる必要があるけどね。
776デフォルトの名無しさん:2005/10/22(土) 00:41:36
×青いしもそのまま
○青いしインデントもそのまま
777デフォルトの名無しさん:2005/10/22(土) 00:57:47
766です
説明が下手ですいません。以下を全自動で印刷処理したいです。
だだし、DO(2段組(1段は97行)、 MSゴシック8p);
任意のプロジェクトでやりたい。
最終的には、VisualStudioのツールメニューのボタンから実行したいです。
StdAfx.h+StdAfx.cpp印刷
Student.h+Student.cpp印刷
StuDoc.h+StuDoc.cpp印刷
StuView.h+StuView.cpp印刷



クラスの数だけ
778デフォルトの名無しさん:2005/10/22(土) 01:01:45
2段組ってのがよくわからないんだけど?
俺が無知なだけな気がするが
779デフォルトの名無しさん:2005/10/22(土) 01:04:53
紙1枚に2ページ印刷するやつかと
なんていえばいいんかな、2分割とか4分割とかして印刷ってオプションあるじゃん、プリンタに

コマンドラインから印刷する方法調べて、バッチファイルでも作ったらだめ?
780デフォルトの名無しさん:2005/10/22(土) 01:14:02
>2段組ってのがよくわからないんだけど?
A4縦の紙を縦に2つに折ります。左が1段、右が2段です。
有名なテキストエディターの寺Padの印刷の中に段組と言う設定があります。
有名なテキストエディターのxyzzyの印刷の中に段組と言う設定があります。
こだわるか理由はA4の紙で190行のコードが印刷でき、約3枚位で電車の中、
トイレの中でコード解析ができます。
わたしに言わせれば、Cmagaのコード印刷は超人的に微細です。
781デフォルトの名無しさん:2005/10/22(土) 01:18:09
MSWORDの印刷オプションに一枚当りのページ数って言うのがあるけど
これじゃまずいの?
782デフォルトの名無しさん:2005/10/22(土) 01:24:32
766 あなたの小規模のプロジェクト内のファイルを全て
有名なテキストエディターのxyzzyで2段組で印刷してみてください。
 それを全自動でやりたいです。LISPもわからないですし、秀丸マクロもなしでお願いします。
783デフォルトの名無しさん:2005/10/22(土) 01:30:54
>MSWORDの印刷オプションに一枚当りのページ数って言うのがあるけど
>これじゃまずいの?
まずいです。やってみてください。
書式>段組>2段です。
それよりも全ファイルをWORDに書き込むやり方を教えてください。
784デフォルトの名無しさん:2005/10/22(土) 02:08:52
つ[cmd.exe]
785デフォルトの名無しさん:2005/10/22(土) 02:25:10
>784 名前:デフォルトの名無しさん :2005/10/22(土) 02:08:52
>つ[cmd.exe]
いろいろお世話になりますが、引数は全て手打ちするのでしょうか?
サンプルコードをご教示していただきたく深く強く激しくお願いします。

 ファイルを結合するには、以下のように入力します。
 a.txtとb.txtの内容を結合して、c.txtにします。
//hage.bat
copy a.txt+b.txt c.txt/append
copy c.txt+d.txt f.txt/append
copy h.txt+i.txt j.txt/append





786デフォルトの名無しさん:2005/10/22(土) 02:38:03
>>766
この辺のはどう? 予約語色付けはなさそうだけど。
ttp://www.vector.co.jp/soft/win95/writing/se252056.html
ttp://www.vector.co.jp/soft/win95/util/se292423.html
787デフォルトの名無しさん:2005/10/22(土) 03:59:32
教えてください。

 フリーで使えるカスタムコントロールって
 無いでしょうか? 出来ればソースが公開
 されているものが良いのですが・・・
788デフォルトの名無しさん:2005/10/22(土) 08:13:58
そういうの、2段組って言うんじゃなくて、2カラムって言うんですよ
789デフォルトの名無しさん:2005/10/22(土) 09:49:20
ttp://www.vector.co.jp/soft/win95/util/se292423.html
機能 できないこと: ヘッダ・フッタの編集、段組印刷、1枚に複数ページ印刷等々
 よくよめよ、ボケ!
しかし、かなりイイ。
>そういうの、2段組って言うんじゃなくて、2カラムって言うんですよ
 ひとりだけで言っててね。
790デフォルトの名無しさん:2005/10/22(土) 09:55:41
(´,_ゝ`)<専門用語は分かりませんか?
791      :2005/10/22(土) 10:34:48
>>>(´,_ゝ`)<<<専門用語は分かりませんか?
大衆用語を使えよ。ボケ
792デフォルトの名無しさん:2005/10/22(土) 10:54:37
おしえてください。

class A {
func1()...
};
class B {
func1()...
};
class C : public A {
func1()...{
func();
}
};
この場合に、Cと実装が同じでBを継承したDを作りたい場合、
どのようにすればいいでしょうか?
class C : public Aと書いた時点でAを継承するのですが、
C自体の実装は全く同じで、Aの替わりにBを継承したDを
作りたいのですが。。。 class D : public C , public B
だとCはBを継承していないのでダメだと思うので。。。
793デフォルトの名無しさん:2005/10/22(土) 10:55:53
は?
794792:2005/10/22(土) 11:03:52
ごめんなさい。
よく理解していないので、説明が悪いのだと思います。

やりたい事は下記のようなことです。

いぬ、ねこ、たぬき
調教師
ここで、
いぬ  の調教師
ねこ  の調教師
たぬきの調教師

を作りたいのですが、いぬ・ねこ・たぬきが調教師
を継承するのではなく、調教師がいぬ、ねこ、たぬき
を継承するようにしたいです。


795デフォルトの名無しさん:2005/10/22(土) 11:05:32
設計を見直す。
796デフォルトの名無しさん:2005/10/22(土) 11:06:03
エスパーを呼ぶ。
797デフォルトの名無しさん:2005/10/22(土) 11:07:16
調教師 is a たぬき
798792:2005/10/22(土) 11:30:21
すいません。

 例えば、ファイルシステムにFATというのが有りますが、
 FATは主にデータ構造としての実装になるかと思いますが、
 具体的な実装では、HDDやSDやFlashというような感じで
 媒体が異なる場合などに、FATというクラスを作って、
 このクラスFATから、HDDやSDやFlashへの読み書きを
 行うためのクラスを使いたいという場合が多々あると思うの
 ですが、この場合、実装上はHDDやSDやFlashへの
 読み書きを基底クラスとして、FATを派生クラスとできる
 方が理想的だと思うのですが、このような実装を行いたい
 場合、どうすればいいのでしょうか?
799デフォルトの名無しさん:2005/10/22(土) 11:31:38
>>792
よくわからんが

template<class Base> class C : public Base
{ /* ・・・ */ };

ということ?
800デフォルトの名無しさん:2005/10/22(土) 11:33:49
>>798
よくわからんが、主語はどれで述語はどれ?
801デフォルトの名無しさん:2005/10/22(土) 11:37:58
>>799
ありがとうございます。

 こういう場合には template を用いるのが最適な
 方法でしょうか?

 仮想基底クラスというのが関係あるのかなーと、
 勉強しているのですが、templateそのものは
 オブジェクト指向とは別物だと思っていましたので、
 出来ればクラス構造だけで実装できればスッキリ
 するかな・・・と思ったのですが・・・
 根本的に勘違いしてますでしょうか?
802デフォルトの名無しさん:2005/10/22(土) 11:46:20
>>798
そういう場合は、デバイスを操作する抽象基本クラス(Device)とFATクラスに分ける。
FATクラスはDeviceクラスを操作する方法さえ知っていればいい。
実際の物理デバイスへの操作は、Deviceを継承・実装した
HddDevice、SdDevice、FlashDeviceクラスに任せればいい。
803デフォルトの名無しさん:2005/10/22(土) 11:49:24
>798
FAT is HDD?
理想的も何も、is-a関係の成り立たない、そいつらを
継承関係にもっていくのは無理だろ。
804798:2005/10/22(土) 15:01:18
>>802
>>803
ありがとうございます。

 構成手法として、
 FATclassとHDDclass を多重継承した、HDDFATclassを
 作って、このHDDFATclassでFATclassとHDDclassを操作
 するという構成にするのが正規の手法という考え方で良い
 でしょうか?
805798:2005/10/22(土) 15:02:39
すいません。
抽象基本クラスに実際の動作を反映させる
手法の具体例を教えて頂けないでしょうか?
806デフォルトの名無しさん:2005/10/22(土) 15:14:02
初心者スレ荒らすなよ
よそへ行ってやってくれ
807798:2005/10/22(土) 15:15:34
すいません。
class Device {
 public:
  virtual char Read(int)=0;
  virtual void Write(char)=0;
virtual void Seek(int)=0;
}
class FAT : public Device
{
 ...
}
class HDDFAT : public FAT
{
 public:
  char Read(int){...}
  void Write(char){...}
  void Seek(int){...}
}
という感じで、Deviceにある純粋仮想関数
の実体をHDDFATで定義するという形で良い
のでしょうか?
808デフォルトの名無しさん:2005/10/22(土) 15:18:16
C++の話はよそでやれ
809デフォルトの名無しさん:2005/10/22(土) 15:22:56
>>807
// デバイスに対する抽象的な操作を定義する(インターフェース)
struct Device { virtual void read() = 0; };
// 実際の動作を実装
class HddDevice : public Device { void read() { /* HDDを操作するコード */ } };
class SdDevice : public Device { void read() { /* SDを操作するコード */ } };
class FlashDevice : public Device { void read() { /* Flashを操作するコード */ } };

// 外から与えられたデバイスに対して操作する。
// 実際のデバイスの種類は知る必要は無い。
class FAT {
public:
FAT(Device* dev) : dev_(dev) {}
void hage() { dev_->read(); }
private:
Device* dev_;
};


HddDevice dev;
FAT fat(&dev);

fat.hage();
810デフォルトの名無しさん:2005/10/22(土) 15:27:16
C++相談室 part44
http://pc8.2ch.net/test/read.cgi/tech/1128512737/

【初心者歓迎】C/C++室 Ver.22【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1128872687/

はきだめC/C++下級者の質問箱
http://pc8.2ch.net/test/read.cgi/tech/1124256027/

C++初心者に救いの手を(゚ロ゚)
http://pc8.2ch.net/test/read.cgi/tech/1118674839/
811デフォルトの名無しさん:2005/10/22(土) 15:32:53
横レスするが、テンプレートつかうとこうなる
template<typename T>
class FAT{
public:
FAT(T& dev) : dev_(dev){}
...
...
private:
T& dev_;
};

継承(’A`)マンドクセ、
812デフォルトの名無しさん:2005/10/22(土) 15:37:07
813798:2005/10/22(土) 15:37:38
>>809
>>811
的確なアドバイスありがとうございました。
実際にVC++でコンパイルしましたら、
うまく動きました。 ありがとうございます。

お騒がせ致しました・・・
814初心者の僕:2005/10/22(土) 15:39:42
行列の積を求めるプログラムをC言語で書きのように作ってみたのですが、
どうしても「c3: エラーE2040 宣言が正しくありません」って出てきます。
どこがおかしいのでしょうか。教えていただけませんか?
#include <stdio.h>
int main();
{
int a[3][3];
int b[3][3];
int c[3][3]={{0,0,0}{0,0,0}{0,0,0}};
int i;
int i;
int k;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("A:%d 行 %d 列",i+1,j+1);
scanf("%d",&a[i][j]);}}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("B:%d 行 %d 列",i+1,j+1);
scanf("%d",&b[i][j]);}}
for(i=0;i<3;i++){
for(j=0;i<3;j++){
for(k=0;k<3;k++){
c[i][j]=c[i][j]+a[i][k]*b[k][j];}}}
return 0;
}
815デフォルトの名無しさん:2005/10/22(土) 15:45:50
iが二つねーか
816デフォルトの名無しさん:2005/10/22(土) 15:46:08
int c[3][3]={{0,0,0},{0,0,0},{0,0,0}};
817デフォルトの名無しさん:2005/10/22(土) 15:46:30
>>814
エラー個所くらい書けよ。
818初心者の僕:2005/10/22(土) 15:54:58
単純なミスで申し訳ないです!
jがiになっている箇所がありました!
修正したところコンパイルすることができました!
ありがとうございました!
819デフォルトの名無しさん:2005/10/22(土) 16:03:22
自ら初心者を名乗る奴はどうしようもないな。
820デフォルトの名無しさん:2005/10/22(土) 16:08:06
>>818
いやぁ、嘘だろ。
エラーメッセージは3行目で宣言エラーといっているが、実際2行目のmain()の後にセミコロンがあるから
そこで3行目でエラーが起きているんだから。
821デフォルトの名無しさん:2005/10/22(土) 16:15:53
ネタに決まってるだろ
822デフォルトの名無しさん:2005/10/22(土) 16:38:40
計算結果は使わないのか
823デフォルトの名無しさん:2005/10/22(土) 17:01:18
>>814の脳みそをコンパイルしようとしたのですが
数え切れないほどのエラーがでました
どうすればよろしいでしょうか
824オレモナー:2005/10/22(土) 17:31:20
>>823 の脳みそを修正して、スルーすることができるようにする。
825デフォルトの名無しさん:2005/10/22(土) 17:45:00
/* コメントアウトされた脳みそ */
826デフォルトの名無しさん:2005/10/23(日) 11:05:21
static textの背景を白くするか
ダイアログウィンドウの背景を白くするには
どうすればよいのでしょうか。
827デフォルトの名無しさん:2005/10/23(日) 14:43:13
質問なんですけど
main.cppをVisual C++ 2005 Express Edition Beta 2でコンパイルしようとすると
------ ビルド開始: プロジェクト: Otamesi, 構成: Debug Win32 ------
コンパイルしています...
main.cpp
c:\documents and settings\1234\my documents\visual studio 2005\projects\Otamesi\stdafx.h(6) : fatal error C1083: include ファイルを開けません。'windows.h': No such file or directory
ビルドログは "file://c:\Documents and Settings\1234\My Documents\Visual Studio 2005\Projects\Otamesi\Debug\BuildLog.htm" に保存されました。
Otamesi - エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========

とでるんですけど、windows.hファイルがなくどうすればいいかわからなくて困っています
どうすればいいでしょうか
828デフォルトの名無しさん:2005/10/23(日) 15:31:15
インストールしたらならwindows.hあるはず
でもwindows.hがあってもどこにあるか教えてやらないと見つけられない。
829デフォルトの名無しさん:2005/10/23(日) 15:31:36
830デフォルトの名無しさん:2005/10/23(日) 15:35:22
>>828
レスありがとうございます。
どこでそれを教えてあげればいいんでしょうか度々すみません。
831デフォルトの名無しさん:2005/10/23(日) 15:35:39
教えて下さい。
マウス操作で、右クリックしたまま、マウスをムーブした時に、
プログラム内で処理を行いたいんですが、どうやれば良いのでしょうか?
下の書き方ですと、右クリックしないでマウスを動かすと、対象処理を
行います。(当然だと思います)
皆様、ご教授御願いします。m(_ _)m

// ウィンドウプロシージャ関数
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMsg,WPARAM wParam,LPARAM lParam)
{
switch(iMsg)
{
case WM_LBUTTONDOWN:
やりたい処理;
break;
case WM_MOUSEMOVE:
やりたい処理;
break;
832デフォルトの名無しさん:2005/10/23(日) 15:41:35
WM_MOUSEMOVEの中でマウスボタンが押されてるか見る
833デフォルトの名無しさん:2005/10/23(日) 16:43:20
>>827
Express Edition Beta だと、
プラットフォームSDK まではインストールされなかったような。
834デフォルトの名無しさん:2005/10/23(日) 23:04:10
VCではなくCの範囲かもしれませんが、
文字列を返す関数ってどうやって作るのでしょうか?

char moji(){
return "にちようび";
}
とやると、char[10]はchar*と間接操作のレベルが異なります、とエラーになってしまいます。

switch(youbi){
case 0:
return ("にちようび")
bresk;
case 1:
return ("げつようび")
bresk;
case 2:
return ("かようび")
bresk;
}

のように返り値(文字列)の長さが一定でなくてもOKにしたいです。
835デフォルトの名無しさん:2005/10/23(日) 23:08:53
returnで返そうと思うな
その考えは捨てろ
836デフォルトの名無しさん:2005/10/23(日) 23:12:49
>>834
つ[std::string]
837デフォルトの名無しさん:2005/10/23(日) 23:29:41
"にちようび" って何型だ?
838デフォルトの名無しさん:2005/10/23(日) 23:34:16
bresk;で吹いた
839デフォルトの名無しさん:2005/10/23(日) 23:57:11
char *moji(){
return "にちようび";
}

これでいける絶対いける
やってみ、*(アスタリスク)がポイント。
840デフォルトの名無しさん:2005/10/24(月) 00:00:53
バイナリファイルを読み込みたいのですがわからないことが多く困っています。
ファイルの先頭から64バイト移動してint型の変数measParamsOffsetにデータをひとつ
読み込むとき、コンソールプログラムの場合はmain関数の中に下記のように記述すると
うまく動いてくれました。
CString InputFileName = "test"

int measParamsOffset;

FILE *pfi;
pfi = fopen((LPCTSTR)InputFileName, "rb");

fseek(pfi, 64, SEEK_SET);
fread(&measParamsOffset, sizeof(measParamsOffset), 1, pfi);
つづく
841デフォルトの名無しさん:2005/10/24(月) 00:02:33
つづき
これと同様の内容ををWindowsプログラミングでMFCのシリアライズ関数に
下記のように書くとコンパイルは出来るのですが、プログラムを起動してファイルを
開こうとするとエラーが発生してしまいます。どこをどう直せばいいのでしょうか?

void CTest8Doc::Serialize(CArchive& ar)
{
void *buf = NULL;
CFile *fp = ar.GetFile();
if (ar.IsStoring())
{
// TODO: この位置に保存用のコードを追加してください。
ar << measParamsOffset;
}
else
{
// TODO: この位置に読み込み用のコードを追加してください。
fp->Seek(64, CFile::begin);
ar.Read(buf, 4);
measParamsOffset = *(int*)buf;
}
}

Windows XP、Visual C++ 6.0です。
842デフォルトの名無しさん:2005/10/24(月) 00:06:36
> 開こうとするとエラーが発生してしまいます。

それで、そのエラーの内容は国家機密なのかい?
843デフォルトの名無しさん:2005/10/24(月) 00:11:37
void CTest8Doc::Serialize(CArchive& ar)
void CTest8Doc::Serialize(CArchive* ar)
とか?
844デフォルトの名無しさん:2005/10/24(月) 00:13:25
>>839
問題の本質を間違えてるって。
staticの配列ならともかくただのリテラルじゃ偶然に頼るほかない。
845デフォルトの名無しさん:2005/10/24(月) 00:15:30
意味不明。
846841:2005/10/24(月) 00:16:21
>>842
英語のわけのわからんメッセージが出ます。
Debug Assertion Failed!
Program: D\My Documents\C C++ Language\test8\Debug\test8.exe
File: arccore.cpp
Line: 491

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the aplication)
847質問です。:2005/10/24(月) 00:17:02
libjpeg調べてもさっぱりです。
プログラムを載せてるページとか教えてください。
848デフォルトの名無しさん:2005/10/24(月) 00:18:06
>>841
void *buf = NULL;

ar.Read(buf, 4);
とかやってるから、
ar.Read(NULL, 4);
と同じ意味になっててメモリアクセスエラー(というか内部のアサーション)とかいうオチ?

>>846
そのメッセージが出たところでデバッガに落ちて、
コールスタック調べればどこが問題かわかるよ
849846:2005/10/24(月) 00:32:19
>>848
void *buf = NULL;をvoid *buf;
と書き換えても同じメッセージが出ました・・・。

デバッガでみるとbufがずっと0xccccccccとなってましたが
どうすればいいかわかりませんです。

>>843
ドキュメントビューアーキテクチャが用意してくれたシリアライズ関数に
付け足してるだけですのでそこではないかと思います。
850デフォルトの名無しさん:2005/10/24(月) 00:35:06
>>849
あのな・・・
メモリー確保しないでbufに読み込めるわけないでしょ
851デフォルトの名無しさん:2005/10/24(月) 00:49:23
数学板でも質問した者です。

例)
563、741、572、237、673、622、894、125、765
の数字の中からいくつかを足して1692にせよ。

という問題でナップサック問題
http://hp.vector.co.jp/authors/VA008160/cipher/knap.htm
というらしいのですが、
これをプログラムで解く方法は何かありますでしょうか。

ランダムにいくつか足し算して1692にするという案が浮かぶのですが、
どういう風に書いたらよいのかよく分かりませんでした。

よろしくお願いします。
852849:2005/10/24(月) 00:55:17
>>850
たしかに!
void *buf = new int;
って書いてみたら動いてくれました。
まだ微妙に問題残ってますが考えてみます。
ありがとうございました。
853デフォルトの名無しさん:2005/10/24(月) 01:00:07
>>851
894+765=1659
563+572+237+125=1497
なので数字4つまたは3つの組み合わせを考えれば良い

とするとこうなる

第1のループ:先頭の数字を選択する
第2のループ:2つ目の数字を選択する
第3のループ:3つ目の数字を洗濯する
 ここで3つ足すと1692になるか判定する
第4のループ:4つ目の数字を選択する
 4つ足すと1692になるか判定する

854デフォルトの名無しさん:2005/10/24(月) 01:03:47
>>841 >>849 >>852
でもなんであなたはarをそのまま使わずに中のfpを取り出してるんですか・・・
arが使ってるfpを外からシークして、arの状態がおかしくなってないかどうかなんて、
怪しい領域(CArchiveの実装によりけり)に思いっきり突入してしまうような・・・。

fpを直接使いたいならMFCシリアライズ関連クラスとまぜて使うのは
放棄したほうが良いと思うですよ。

自分のやってることを完璧に理解してそういったことをするなら止めませんが、
そうとも思えません。
855デフォルトの名無しさん:2005/10/24(月) 01:18:03
>>854
>arが使ってるfpを外からシークして、arの状態がおかしくなってないかどうかなんて、
>怪しい領域(CArchiveの実装によりけり)に思いっきり突入してしまうような・・・。

GetFileは公開されてるメンバだから大丈夫だろ。(Flushする必要はあるけど)
856デフォルトの名無しさん:2005/10/24(月) 15:50:32
VC++.NETのWindowsフォームアプリケーション(.NET)で、
他アプリケーションからSendMessageされたメッセージを
受け取りたいのですが、受け取る方法がわかりません。
VC6の様にWindowProc関数を追加できれば何とかなりそうな
気がしますが、WindowProc関数を追加する方法がわかりません。
ご存知の方、教えていただけないでしょうか?
857デフォルトの名無しさん:2005/10/24(月) 16:28:54
どういうメッセージよ
システムで既に定義されてるメッセージか?
ユーザー定義のメッセージか?

前者なら単純にその分のイベントハンドラを追加しる

後者なら、FormクラスのWndProcメソッドをオーバーライドして、
目的のメッセージの処理を加え、それ以外のメッセージを元のWndProcに渡すようにすればいいかと
858857:2005/10/24(月) 16:29:43
DefWndProcだの、WndProcだの、
MSDNでFormクラスのメンバ一覧見たら普通に載ってる項目ぞ?
859デフォルトの名無しさん:2005/10/24(月) 17:45:14
初めまして、初歩的な質問ですが、よろしくお願い致します。

先日、ソースファイルに、main.cpp , ヘッダファイルにStdAx.hを追加し、ビルドしたところ、

c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(828): error C2059: 構文エラー : 'サフィックスが無効です。'
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(828): fatal error C1012: カッコが一致していません。')' がありません。

とエラーを二つはきました。
828行目を見ても、構文エラーであったり、「)」が足りていない訳でも無いように思え、頭を捻っています。

よろしければ、対処法などアドバイスを頂けないでしょうかm(_ _)m
860デフォルトの名無しさん:2005/10/24(月) 17:47:12
>>859
そのWinNT.hをインクルードするに至る、あんたのソースに問題があるはずだ。
861856:2005/10/25(火) 11:23:06
>>857
ユーザー定義のメッセージです。
>後者なら、FormクラスのWndProcメソッドをオーバーライドして、
>目的のメッセージの処理を加え、それ以外のメッセージを元のWndProcに渡すようにすればいいかと
VC++.NET2003のWindowsフォームアプリケーション(.NET)では、[プロパティ]ウインドウのオーバーライドにWndProcが出てきません。

>MSDNでFormクラスのメンバ一覧見たら普通に載ってる項目ぞ?
見様見真似でMSDNのサンプルコードの追加を試みましたが上手く行きませんでした。
VC6なら即行WndProcを追加できたのですが・・・手動でオーバーライドするにしても方法がわからず。

>FormクラスのWndProcメソッドをオーバーライド
web上にサンプルコードも発見できず・・・
非常にわがままですが、実装方法を順番に説明していただけないでしょうか?
862デフォルトの名無しさん:2005/10/25(火) 12:10:33
Formクラス WndProc でぐぐったらいっぱいみつかるじゃん
863デフォルトの名無しさん:2005/10/25(火) 12:55:21
手動でオーバーライドするにしても方法がわからずって、
おまいさん、そもそもオーバーライドって何かわかってるか?
864デフォルトの名無しさん:2005/10/25(火) 21:28:38
Part20から入りましたが、Part1の
ttp://pc3.2ch.net/tech/kako/1023/10235/1023530449.html
をたてた人すごいな。唯我独尊

どの辺から「継続可」になったか知りたい 先達よ教えてくれ。
865デフォルトの名無しさん:2005/10/25(火) 21:45:03
そこに人が集まってしまった以上自然とそうなる。
最近ではSTLスレだってなんだかんだ言って次スレ作られているし。人は来ないけど。
866デフォルトの名無しさん:2005/10/25(火) 22:23:41
Part21にしては、まとめとかFAQとかテンプレのようなものが何もないな
867デフォルトの名無しさん:2005/10/25(火) 23:10:48
868デフォルトの名無しさん:2005/10/25(火) 23:35:48
>>866
まとめサイトをおながいします。
869834:2005/10/26(水) 10:19:37
>>839
それでいけました。ありがとうございます。
にしてもVC(っていうかC)の文字列の扱いってまだ難解でよくわからん・・・
870デフォルトの名無しさん:2005/10/26(水) 10:30:27
とりあえずそういうやり方もできるというだけで
あんまり見ないやりかただな
871デフォルトの名無しさん:2005/10/26(水) 10:44:19
あんまり見ないと言うか、

  や  る  な

>>869の考えの方が難解でよくわからん
872デフォルトの名無しさん:2005/10/26(水) 14:55:23
リッチエディットコントロール2.0のあるダイアログボックスを作ると、何故かダイアログボックスの作成に失敗するのですが、どうやったらよいのでしょうか?

1.リソースからリッチエディット2.0を張る
2.DialogBoxでダイアログを呼ぶ

コールバックなどはreturn等最小限の処理しか書いていません
873デフォルトの名無しさん:2005/10/26(水) 15:02:51
重 要 ダイアログ ボックスでリッチ エディット コントロールを使用する場合は
(アプリケーションが SDI、MDI、ダイアログ ベースかにかかわらず)、
ダイアログ ボックスの表示前に、

(中略)


CRichEditCtrl の使い方の詳細については、『Visual C++ プログラマーズ ガイド』の
「Control Topics」および「CRichEditCtrl」を参照してください。
874872:2005/10/26(水) 15:03:00
自己レス

LoadLibrary("riched20.dll");
をしたら解決しました。どもでした
875デフォルトの名無しさん:2005/10/27(木) 17:08:48
今デスクトップ画面を取り込んでプリンタへ印刷するアプリケーションを
作っているのですが、暫く使っていると印刷が出来なくなります。
「スタート」→「設定」→「プリンタ」の中の対象のプリンタの状態を見てみると
印刷ジョブ自体は溜まっている状態になっていて、PCを再起動すると
それまでに溜まっていた印刷ジョブが実際印刷されます。
印刷ジョブに溜まっているのに印刷出来ない状態になるというのは
どういう状況が考えられるでしょうか?プリンタの状態は「準備完了」になっています。

環境はWindows2000、VC++6.0です。宜しくお願いします。
876デフォルトの名無しさん:2005/10/27(木) 17:23:50
用紙切れ、インク切れ
877デフォルトの名無しさん:2005/10/27(木) 17:26:45
とりあえずVC++とはなんの関係も無いな
878デフォルトの名無しさん:2005/10/27(木) 17:44:50
>>876
PCを再起動すると溜まっていたジョブがそのまま印刷されるので・・・。

>>877
アプリケーションとは全く関係ないのでしょうか・・・?
879デフォルトの名無しさん:2005/10/27(木) 17:48:42
オマエの組んだプログラムのせいだ
880デフォルトの名無しさん:2005/10/27(木) 18:01:48
ビットマップを出して回転させる、一番簡単な方法ってどんな方法がありますか?

GDIでやろうと思ったら、PlgBlt使って平方四辺形の3点みたいなのを計算しないと駄目っぽくて。
もっと簡単に出来る方法があったら知りたいです。宜しくお願いします。
881880:2005/10/27(木) 18:32:09
CreateFontを使い、絵はAAを使うことにしましたw
一応解決しましたが、さすがにAAはマズそうなので、良い方法があったら知りたいです。
882デフォルトの名無しさん:2005/10/27(木) 18:54:39
>>875
Windowsでのネットワークプリンタなら連続n回印刷コマンド発行すると一定時間受け付けなくなる仕様になってる
その期間にもうn回印刷コマンドを発行すると印刷出来ないまま受付禁止になるので印刷できなくなる
883デフォルトの名無しさん:2005/10/27(木) 18:57:16
ようするにPC初心者板で聞けばよかったと
884デフォルトの名無しさん:2005/10/27(木) 19:09:04
初歩的な質問で申し訳ありません。
VC++でAPI関数のみを用いてプログラムを作成しているのですが、
コンボボックスをクリックしたときに下に展開される行数が一行分の高さしか持ちません。
表示させる行数を複数行にする場合はどこを設定すれば宜しいのでしょうか。

┌────┐
├────┤
└────┘
    ↓
┌────┐
├────┤
│      │
│      │
└────┘ こんな感じにしたい

補足:プロパティボックスにはTRUE/FALSEの設定が大半でそれを弄る場所が見当たりませんでした
885デフォルトの名無しさん:2005/10/27(木) 19:12:12
>>884
それ超FAQだから100%回答でるよ
待てなきゃ過去ログさがせば見つかるかも
886デフォルトの名無しさん:2005/10/27(木) 20:26:31
>880
回転させるのが90度, 180度, 270度なら簡単に出来る。
この方法は自分で考えてみてね。

37度とか任意の角度なら回転行列という数学の力を借りなきゃ駄目。
具具ってみなせぇ
887デフォルトの名無しさん:2005/10/27(木) 21:05:09
>>884
それ確かに分かりにくいよな。
リソースのとこで▼を押すのだよ。
押せば分かる。
って言っても、▼が分からんのよな。
同じとこで詰まったよ。説明ページ見ても、▼って書いてあるけど分からんの。
リソース使ってないなら知らん。
888デフォルトの名無しさん:2005/10/27(木) 21:18:25
>>887
それって、そんなに気付きにくいかな?
普段使うときと同じように操作してみると分かるのに・・・。
889デフォルトの名無しさん:2005/10/27(木) 21:19:56
>>888
分かりにくいとは思うよ
890884:2005/10/27(木) 21:26:51
>>887
ありがとうございます!
最初どこの▼かと思いましたが

※コンボボックス
┌─────┬─┐
│        │▼│←ココ
├─────┴─┤
│           │
└───────┘

まさかこの▼とは思いませんでした。ずっとプロパティの▼を見てましたw
確かに普通にコンボボックスの真ん中でサイズ変更やってたら気づきませんね。
マウスカーソル当てるとカーソルが変化したので気づきました。
ここを一回クリックするとコントロールのサイズがドロップダウン前からドロップダウン後のサイズに切り替わるので
そこを変えればOKなワケですね。
891デフォルトの名無しさん:2005/10/29(土) 01:40:28
子ウィンドウ(ダイアログ)のコントロールを親ウィンドウから操作したいのですが
どのようにしてポインタを取得すればいいでしょうか?

親ウィンドウのソースファイルを
・・・
CWnd* a = (CWnd*)GetDescendantWindow(IDD_DLG_CHILD);
CEdit* b = (CEdit*)a->GetDlgItem(IDC_EDIT);
・・・
とやってみたのですが、ビルド&実行すると、
2行目の処理の部分でエラーが起きて強制終了してしまうのです。
892デフォルトの名無しさん:2005/10/29(土) 06:17:29
親が作った子ウィンドウならハンドルぐらい持ってるだろう
893デフォルトの名無しさん:2005/10/29(土) 13:15:03
メニューの左側にアイコンを表示する方法を教えてください。
894デフォルトの名無しさん:2005/10/29(土) 14:40:21
質問です。XP、.NET です。
関数ポインタについてです。

CHoge hoge {
public:
 bool (*pFunc)();
 bool Func();
 void test();
}

CHoge::test()
{
 pFunc = Func;
}

上記のコードをコンパイルした結果、関数へのポインタへの代入に失敗しました。
Func() の型は bool (*)(CHoge*) のため(CHoge* は暗黙の引数 this を受け取る)、
bool (*)() 型の pFunc には代入できなかった、という理解でよろしいのでしょうか?

また、上記問題を解決するため、

 bool (*pFunc)(CHoge* pHoge);
 static bool Func(CHoge* pHoge);

というように、Func を静的にし、メンバを呼ぶためオブジェクトのアドレスを渡すようにしたのですが、
これでは、Func() の記述内に pHoge-> が散乱してしまい、格好悪くなってしまいます。

何かいい解決法はないでしょうか。
よろしくお願いします。
895894:2005/10/29(土) 14:42:01
しまった・・・、スレ違いのようでした。

【初心者歓迎】C/C++室 Ver.22【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1128872687/

こちらで聞いてきます。お騒がせいたしました。
896デフォルトの名無しさん:2005/10/29(土) 16:22:12
くだすれの方で反応がないのでこちらでもよろしくお願いします

CTreeCtrlのアイテムそれぞれに対して
CWnd::EnableWindow(...)
関数のような、使用許可・不許可の設定を行うことは可能ですか?

環境
* WindowsXP
* Visual C++ 6.0
897デフォルトの名無しさん:2005/10/29(土) 16:29:10
またか
898デフォルトの名無しさん:2005/10/29(土) 16:39:24
>メニューの左側にアイコン
MDIで子ウインドウを最大化するとそうなるな
899デフォルトの名無しさん:2005/10/29(土) 18:02:08
指定されたフォルダパスが正しいか(指定されたフォルダが存在するか)チェックする方法はどんなのがいいですか?
今は

#include "io.h"

if (_access(szPath, 00) != 0){
return FALSE;
} else {
//処理
}

って感じで書いてあるんですけど。
900デフォルトの名無しさん:2005/10/29(土) 18:05:07
>>896
できなきゃ何のためにCWndを継承しているのか
901デフォルトの名無しさん:2005/10/29(土) 18:05:40
>>887-889
俺もそこで2〜3日悩んだ。
902デフォルトの名無しさん:2005/10/29(土) 18:28:54
>>900
思いっきり勘違いしていない?
TreeCtrlそのものではなく、その中の各itemの制御をしたいらしいよ。
903896:2005/10/29(土) 20:22:30
>>902
補足ありがとうございます
904デフォルトの名無しさん:2005/10/31(月) 20:03:12
3Dビュワーもどきを作っているのですが、ドラッグで詰まっています。
ドラッグしつつカーソルがウィンドウ外に出ると、メッセージが来なくなってドラッグが中途半端に終わってしまいます。
ドラッグ中はウィンドウ外に出ても利いていて欲しいのですが、メッセージだけでは不可能なのでしょうか?
現在WM_MOUSEMOVEを使っています。
905デフォルトの名無しさん:2005/10/31(月) 20:09:58
ヒント: SetCapture
906デフォルトの名無しさん:2005/10/31(月) 21:37:41
プログラム実行中、whileか何かループで
詰まってるようで、breakポイントを仕掛けて止めるのではなく、
実行中の箇所で止めてデバッグすることは不可能なんでしょうか?
どこでループしてるか知りたいのですが
907デフォルトの名無しさん:2005/10/31(月) 21:56:18
実行中にctrl+breakで中断すればいい。
908デフォルトの名無しさん:2005/10/31(月) 23:34:43
>907は天才
いままで知らんかった
907まじおすすめ
909デフォルトの名無しさん:2005/11/01(火) 11:09:32
Cのソースを拡張子CPPにしてコンパイルしたあと拡張子Cに戻したら、
なんかのヘッダーファイルで大量にエラーが出るようになってしまった
んだけどどうすればいいですかね?
910デフォルトの名無しさん:2005/11/01(火) 11:09:40
いい!
911デフォルトの名無しさん:2005/11/01(火) 11:16:29
>>909-910
12時間ぶりの書き込みなのに8秒差かい
912デフォルトの名無しさん:2005/11/01(火) 12:13:02
>>909
リビルドした?
913デフォルトの名無しさん:2005/11/01(火) 13:28:06
>>905
猫にもありました。ありがとうございます!
914デフォルトの名無しさん:2005/11/01(火) 15:58:27
オマエんちの猫はWin32APIを装備してるのか。すげぇ。
915デフォルトの名無しさん:2005/11/02(水) 00:22:38
>>908
て言うか、メニューからも中断できたと思うが…。

>>909
拡張子を cpp に戻せばいいんじゃねーの?
916デフォルトの名無しさん:2005/11/02(水) 01:51:21
メニューバーのリソースを作ったのですが、表示が左端からではなく、右に表示されてしまいます。
これは何ででしょうか?
917デフォルトの名無しさん:2005/11/02(水) 01:53:52
右端といいますか、×(閉じる)ボタンの下あたりに表示されてしまう感じです。。
918デフォルトの名無しさん:2005/11/02(水) 02:05:49
猫でものソースを使って、はじめてのリソースを体験^^
919デフォルトの名無しさん:2005/11/02(水) 04:03:07
環境:W2K、VC6.0
教えてくださいです

GIVEIO.SYSっていうライブラリの関数(例えば、int giveio_start(void))を使うために、
下のへッダファイルは既に追加してビルド(MFC APP、DLL用)かけるんですが、リンクエラー
(LNK1136)になるんです。教えてください。どうすれば通るか・・・。

GIVEIO.H

#ifndef __GIVEIO_H__
#define __GIVEIO_H__

/* result of giveio_start() */
#define GIVEIO_ERROR 0
#define GIVEIO_WIN95 1 /* windows 95/98/Me, unnecessary */
#define GIVEIO_OPEN 2 /* giveio opened */
#define GIVEIO_START 3 /* giveio service start & opened */
#define GIVEIO_INSTALL 4 /* giveio install,start & opened */
int giveio_start(void);

/* parameter of giveio_stop() */
#define GIVEIO_STOP 3 /* giveio stop service */
#define GIVEIO_REMOVE 4 /* giveio stop & remove driver */
int giveio_stop(int param);

#endif


920デフォルトの名無しさん:2005/11/02(水) 05:48:37
>>916
「ヘルプ」が有効になってないか?

>>919
GIVEIO.c もプロジェクトに加えたの?
あと link1136のヘルプ自体に色々ヒントが書いてあるけど…?
921デフォルトの名無しさん:2005/11/02(水) 06:02:32
デバイスドライバを作ろうとしているのか?
922デフォルトの名無しさん:2005/11/02(水) 07:57:52
そんなんで詰まるLVじゃ無謀ってもんだな
923916:2005/11/02(水) 16:00:20
>>920
直りました^^
924916:2005/11/02(水) 16:07:33
助かりました。
有難うございます
925デフォルトの名無しさん:2005/11/02(水) 16:52:23
Win32で別プロセスにシグナル(SIGTERM)を送るには
どうしたらよいのでしょうか?
CreateProcessを使ってプロセスIDの取得するところまでは
できています。ご指摘よろしくお願いいたします。
926デフォルトの名無しさん:2005/11/02(水) 16:52:42
すみません。ビットマップエディタに画像ファイルをコピーして貼り付ける方法がわかりません。
ドラッグアンドドロップでは無理だったのですが。
927デフォルトの名無しさん:2005/11/02(水) 17:12:56
ワークスペースの右クリックのインポート
256色超えるとムリだったけど
928デフォルトの名無しさん:2005/11/02(水) 19:08:52
>>927さん
ありがとう。後ほど試してみたいと思います。
929919:2005/11/02(水) 19:51:32
>>920
>>921
レス、どうもありがとうございます。亀レスですみません。
GIVEIO.C(GIVEIO.SYS)は、プロジェクトには、入ってません。

このエラーが出るまでは、
error LNK2001: 外部シンボル ""int __stdcall giveio_start(void)" (?giveio_start@@YGHXZ)" は未解決です
が出てきて、それを解決しようとしていたら相談してた妻がいつのまにかプロジェクトの「設定」の
「リンク」でGEIVEIO.SYSを、オブジェクト/ライブラリモジュールに登録して、更に、「ツール」、「オプション」
の「ディレクトリ」に、GIVEIO.SYSがあるフォルダを設定したので、かのようなエラー(SYSはインクルードできない
からLNK1136「ファイルが壊れています。」)が出てたようです。で結局、元に戻って考えると、エラーは、上記の
LNK2001が実態でした。
尚、GIVEIO.SYSは、「その道」では有名なドライバらしく、WIN NTや2KでIOポートを叩くときの一種の必需品みたいな
ものらしいことが、あちこちのサイトに書いてありましたが、DLLにせよEXEにせよ、プロジェクトに入れてビルドしてる
ということはないみたいです。
私のGIVEIO.SYS(C)との関わりは、簡単なマザーボードモニターを自作で作って、
CPUの温度制御に利用したいということなんですが・・・
(続き
930919:2005/11/02(水) 19:52:08
続き)
マザーボードモニターで有名な、かの「LM78」とか「MBPROBE」でも、GIVEIO.SYSは、
モニターソフト本体とは別に、GIVEIO.SYS専用のインストーラーを使うこと、
LM78では、
INSTDRV.EXE: Version 0.16 - GiveIo.sys Driver Installer
Copyright (c) :p araffin. 2001. Allrights reserved.
を推奨し、
MBPROBEでは、
 WinNT/2000 support (download MBProbeNT.zip as well)
giveio.sys : Port I/O kernel driver for Windows NT/2000 (c) Dale Roberts
ntinst.exe : Installer for the above driver
を使って、インストールしているようです。
尚、GIVEIO.Cのソースコードは、
ttp://members.at.infoseek.co.jp/x1resource/xilinx/giveio/giveio.htm
GIVEIO.SYSは
ttp://homepage1.nifty.com/paraffin/software/index.html#INSTDRV
で、ダウンロードできます。
GIVEIO.SYSを使う例としての簡単な例として(そのサイト↓では、GIVEIO.SYSを「アクセスラブラリ」と呼んでいました。)
ttp://www1.bbiq.jp/kougaku/IO_parallel.html
があったのでこれを参考にしてのですが・・・
931919:2005/11/02(水) 20:05:17
尚、エラーが出る個所は↓の⇒のところです

#include "stdafx.h"
#include "giveio.h"
#include "CMBM.h"
・・・・・・
・・・・・・
int giveio_result;
/* GIVEIO open */
⇒ giveio_result = giveio_start();
/* result */
/* switch(giveio_result)
{
case GIVEIO_INSTALL:
AfxMessageBox("giveio.sys installed");
case GIVEIO_START:
AfxMessageBox("giveio.sys started");
case GIVEIO_OPEN:
AfxMessageBox("giveio.sys opened");
break;
     case GIVEIO_WIN95:
AfxMessageBox("giveio.sys win95");
break;
case GIVEIO_ERROR:
AfxMessageBox("giveio.sys unable");
return 0;
}*/
932デフォルトの名無しさん:2005/11/02(水) 20:40:10
>>929
GIVEIO.Hの中にある宣言をリンゲージ指定してCリンゲージに入れればうまく動くと思う。
933デフォルトの名無しさん:2005/11/02(水) 21:01:46
VCと関係ないし作ったやつに聞けよ
934919:2005/11/02(水) 21:28:21
>>932
レス、どうも
935919:2005/11/02(水) 22:16:39
>>920
やっぱ、GIVEIO.Cを加えないと駄目みたいです。GIVEIO.SYS
とGIVEIO.Cは全く別もののようです。GIVEIO.CをGIVEIO.CPPに
名前を変えて一緒にビルドしたらうまくいきました。
どうもありがとうございました。
936928:2005/11/02(水) 22:38:12
リソースの追加→ Bitmap → インポート(M) というのは見つかったのですが、
上手くいかなかったので、エクスプローラーから画像を差し替えました^^;こんなんでいいんかな
937デフォルトの名無しさん:2005/11/02(水) 22:43:03
不安だなァ・・
938デフォルトの名無しさん:2005/11/02(水) 23:38:38
>936
256色以内ならドラッグ&ドロップでもいけたよ。
>上手くいかなかった
というのは、256色以上含んでるからムリと出たんじゃないでしょか?
それなら、GDI使ってメモリデバイスコンテキスト>デバイスコンテキストの手順で、
コードでフレーム上に取り込むのが手でしょう
939デフォルトの名無しさん:2005/11/03(木) 03:31:18
>>935
確かにそれで動くようにはなるのだろうが・・・。

extern "C" について調べてみることを薦めておこう。
940デフォルトの名無しさん:2005/11/03(木) 17:12:53
VS2003のVC++で、Win32アプリプロジェクト作ってやってます

STLのstring使ってるんですが
ちゃんと#include <string>してるのに、ReleaseビルドするとLNK2001の外部参照エラーが出るんです
同じコードなのに、Debugビルドではこのエラーは出ません

ウィザードが作成したプロジェクトの設定から変えたことといえば、
プリプロセッサの定義で_UNICODEを追加しただけですが、これはReleaseもDebugも両方追加してます

どうしたらエラーを取り除けるのでしょう
941デフォルトの名無しさん:2005/11/03(木) 17:33:57
エラーメッセージはコピペで
942940:2005/11/03(木) 18:30:29
エラーメッセージは↓のようになってます
error LNK2001: 外部シンボル ""public: void __thiscall std::_String_base::_Xran(void)const " (?_Xran@_String_base@std@@QBEXXZ)" は未解決です。
943デフォルトの名無しさん:2005/11/03(木) 19:42:05
http://www.microsoft.com/japan/msdn/library/ja/vclib/html/_crt_c_run.2d.time_libraries.asp?frame=true
標準C++用ライブラリのリンクの機嫌が悪いのではないかと思ってみる。

プロジェクトのプロパティの
- C/C++ -> コード生成 -> ランタイムライブラリ
- リンカ -> 入力 -> すべての既存のライブラリを無視 or 特定のライブラリを無視
辺りを弄くっても問題が解決しないようであれば、

- リンカ -> 入力 -> 追加の依存ファイル
に、自分で適切なライブラリを指定するとがんばれるかもしれない。
944デフォルトの名無しさん:2005/11/03(木) 20:16:00
>>938さん
レス有難うございます。それは、参考にさせていただきます。^^
945デフォルトの名無しさん:2005/11/03(木) 21:03:57
>>942
俺も同じ現象に遭遇したが、
マルチスレッド用のライブラリをリンクするように指定したら解決した。
(C/C++ -> コード生成 -> ランタイムライブラリ)
946デフォルトの名無しさん:2005/11/05(土) 09:17:07
VC++6 SP5をWinXP SP2で使っています。

DAOを使ったプログラムを作ろうとして、困っています。
ClassWizardで新規クラスの追加をしようとしても、
基本クラスのコンボボックスで、CDaoRecordsetを選べません。

CRecordsetは選べるのですが、データベースのオプションで、
データソースラジオボタンでDAOを選ぶこともできません。

ClassWizard(などVC++6的な操作)で
CDaoRecordsetから派生したクラスを追加するには、
どうすれば良いのでしょう?
何かインストール忘れなどがあるのでしょうか?
947デフォルトの名無しさん:2005/11/05(土) 14:15:50
>>946
まず、DAOのインストールが必要なんじゃ?
948デフォルトの名無しさん:2005/11/05(土) 14:43:22
>>947
ありがとうございました。
DAO3.5が登録されていないのが原因だったようです。

regsvr32 dao350.dll
したらClassWizardにも出るようになりました。
何で登録されていなかったのかは分かりません。
WinXPの標準はDAO3.6だと思うので、余計な副作用が発生していないといいのですが。

とりあえず、現状でコードを書いて、
AfxGetModuleState()->m_dwVersion = 0x0601;
で、DAO3.6で動くようにするという感じにしようと思っています。
949デフォルトの名無しさん:2005/11/05(土) 18:25:46
マイク入力から音階、音量読み取って画像をそれに連動させろって言われても…
そんなプログラムを1からつくってほしいのでが。。。。。

950デフォルトの名無しさん:2005/11/05(土) 18:36:35
>>949
何この微妙なマルチ
まさか同じ研究室の人?w
951デフォルトの名無しさん:2005/11/05(土) 19:41:41
>>950
まさかぁ

助けてくれ…
952デフォルトの名無しさん:2005/11/05(土) 19:53:56
あ〜
VC++だべよ
953デフォルトの名無しさん:2005/11/05(土) 20:24:28
g++とVC++の差分はどれくらいですか?
954デフォルトの名無しさん:2005/11/05(土) 20:53:13
エスパーさん、いらっしゃ〜い
955デフォルトの名無しさん:2005/11/05(土) 20:57:50
g++とはなんぞ??
956デフォルトの名無しさん:2005/11/05(土) 20:59:43
GCCのC++標準コンパイラ
957デフォルトの名無しさん:2005/11/05(土) 21:02:50
すまぬがわからむ。。。。。。。。

958デフォルトの名無しさん:2005/11/05(土) 21:13:33
>>953
C++の規格への対応に関しては(両者最新版では)ほぼ同じ。
基本的にはMFCとかATLが付属するかどうかが両者の違い。(VCTKなどは考えないものとする)
尤もMFCやATLはおそらくg++でも使えなくはないと思われる。
959デフォルトの名無しさん:2005/11/05(土) 22:55:43
ttp://www.kab-studio.biz/Programing/PragmaTwice/

>#pragma twice は Visual C++ を使用したプログラミングを1から教える初心者向け講座です。
>プログラミングの経験がまったくない方を対象に書いていますから、どなたでもすんなり入っていけるでしょう。
>それに、内容は水希と火美ちゃんの会話形式なので、とても分かりやすくなっています。


こんなサイトみつけた。VC入門には良いかもしれん。
先に言っとくけど俺はこのサイトの作者じゃないぞ! 本当だぞ!
960デフォルトの名無しさん:2005/11/05(土) 23:50:21
>>959
よくぐぐるさんで引っかかるサイトだね。
ただ・・・非常に読みにくい気が・・・・
961デフォルトの名無しさん:2005/11/06(日) 00:34:57
>>958
>尤もMFCやATLはおそらくg++でも使えなくはないと思われる。
いくらなんでもg++にMFC,ATLは無理でしょう。Windows版だけ有効になるわけ?そんなバナナ。
962デフォルトの名無しさん:2005/11/06(日) 01:02:55
>>959
>「2年実戦的なことを学んで、ここで3年勉強すれば、もうエリートじゃな
>い、すごいよね」
963デフォルトの名無しさん:2005/11/06(日) 01:13:32
>>959
コレ全部読めたらもう怖いものなしだね。
もうプログラミングで挫折することはなさそう
964デフォルトの名無しさん:2005/11/06(日) 01:25:52
小説部分は確かにヒクなw
965デフォルトの名無しさん:2005/11/06(日) 02:55:16
> TRACE
> ( "%d, %d, %d, %d\n"
> , 0 && 0, 0 && 1, 1 && 0, 1 && 1 );

ひくとかむかつくとか以前に、「コードを〈絵〉として見られるから」という割りには審美眼を持たないようで。
966C++とMFC:2005/11/06(日) 07:16:11
ご教授宜しくお願い致しますm(_ _)m

スキルとしては、サーバーサイドスクリプト(WEB)を4年程やっています。
Winアプリ開発はまったくの初心者です…(泣
今回、「.NET Frameworkなどの一般ユーザー環境には
インストールされていないランタイムを使わずに」
以下を1年程度で実現しなければならなくなりました。

1.WEB上で動くActiveXを作る  -- ドラッグ&ドロップ・DBGridの配置 など
2.データベースを管理するMDIアプリを作る

勉強として、Visual C++ .NET (2003) の「MFC アプリケーション」で
簡単なMDIメモ帳を作ってみました。

C++で問題の2点を1年程度で実現するに当たり、
MFCで作る(を勉強する)のは正解でしょうか?

例えば「Win32 プロジェクト」の方がいいよ!とか…。
皆様のお知恵をお借りしたいです。宜しくお願いします。
967デフォルトの名無しさん:2005/11/06(日) 08:33:09
ActiveXやデータベースだったらMFCの方が良さそうな気はするね。
968966:2005/11/06(日) 10:28:56
>967様

早速のレスありがとうございます。
習得ターゲットをMFCに絞って頑張る決意を持てました。
色々ググッていたのですが敷居が高く、
何から手を付けていいものやら…と悩んでいたので
とても助かりました。

厚かましいながら、現在
http://www.geocities.jp/chiakifujimon/text/text.html
http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/9707/actdoc/axdoc.html
http://homepage3.nifty.com/flare/pc/bcb/index.html
などのサイト様や、猫でもわかる…様、
Googleで「C++ MDI MFC」「inf cab activeX IE」などで調べているのですが、
何か検索キーワードのコツ等があれば、ヒントを頂けませんでしょうか?
969デフォルトの名無しさん:2005/11/06(日) 11:55:58
970デフォルトの名無しさん:2005/11/06(日) 12:12:18
MFCでActiveX使うのはなんだこんなもんかって感じだが、
VCでDBMS作るとなるとそれこそ、ミドルウェア作るようなもんなんじゃないか、
DAOもといOLEDB使ったとしても、トランザクション組まなくちゃいけないんだろう。
MS-SQL鯖使ったりするならやりやすいだろうけど。
DBMSはサーバサイドJavaに任せてってとこで、C++とJAVAを同じフレームワークでできるDelphiってどうなのかな、ActiveX使えたりするの?Delphi自体使ったことないけど。
971966:2005/11/06(日) 12:13:49
>967様

そうですね…(´-ω-`)。
968の件については、昨日から7時間程ずっとググッていたのですが、
行き詰ったのでキーワードの問題かと思った次第でした。
浅はかな考えでお尋ねしてすみませんでした。
教授と教示も間違っていたのですね(汗
MFCで行けると確信できて、大変助かりました。
ありがとうございました。
972デフォルトの名無しさん:2005/11/06(日) 13:47:55
コマンドライン引数 255 200 255

#include <stdio.h>
#include <windows.h>
void main(int argc,int *argv[]){
int R = (int)argv[1];
int G = (int)argv[2];
int B = (int)argv[3];
COLORREF color = RGB(R,G,B);
int R2 = GetRValue(color);
printf("%d",R2);
}

などで正しく値が合成されなくて困っています、どうすれば良いでしょうか?
開発環境はVC.net 2003です
よろしくお願いします。
973デフォルトの名無しさん:2005/11/06(日) 14:00:37
>>972
atoi
974デフォルトの名無しさん:2005/11/06(日) 14:09:33
>void main(int argc,int *argv[])
975デフォルトの名無しさん:2005/11/06(日) 14:24:27
うはwwwwうぇうぇwwww
そんな書き方する奴初めてみた。
976デフォルトの名無しさん:2005/11/06(日) 14:31:10
>>973
ありがとう。
>>974-975
おかげで気づいた。
ありがとう。
977デフォルトの名無しさん:2005/11/07(月) 15:14:01
始めまして、僭越ながら質問させて頂きます。
先日、某所よりDLをしてきた、

http://www.uploda.net/cgi/uploader2/index.php?dlpas_id=0000005863 (PASS=1111です)

上記のツールを、折角ソースファイルも付け加えて下さっているのでという事で、試しにソースからビルドしようとした所、(.vcproj
ファイルを開き、そのままビルド致しました。)Debugというフォルダが出来、その中に出来たexeが入っていたのですがいざその
exeファイルを実行した所、機能ははたしているのですが、104kbという元のexe(これは、たった3kbなのです)と比べ物にならない
程、ファイルサイズの大きなものとなってしまった上に、CPU負荷が30〜40%と非常に大きなものとなりました。

元の3kbのexeファイルを実行した所、CPU負荷はわずか1〜2%という結果でした。
何がいけないのか、何故そのままソース変更もなくビルドをした結果このような事態になってしまった事が不思議です。

お恥ずかしい質問をしているのは承知の上ですが、原因・改善の方法がわかる方、またアドバイスをして頂ける方
よろしくお願い致しますm(_ _)m
978デフォルトの名無しさん:2005/11/07(月) 15:29:07
>>977
それはDebugビルドだから。
Releaseビルドに換えれば最適化が施されるので高速(≒低負荷)になり、
デバッグ情報が埋め込まれないので小さくなる。
979デフォルトの名無しさん:2005/11/07(月) 15:40:19
>>978
素早いレスありがとうございます。
帰宅後、ご報告を添えると共に、早速Releaseビルドを行ってみようと思います。(まだ未熟な知識の為、手順など不安ですが)

Debugビルドをしていた為、デバッグ情報が埋め込まれていたのですね。
目から鱗な気分です。一つ、勉強になりました。

本当にありがとうございましたm(_ _)m
980デフォルトの名無しさん:2005/11/07(月) 15:53:30
おいおい、DebugビルドもReleaseビルドも知らずにVC使ってんのかよ
981デフォルトの名無しさん:2005/11/07(月) 16:50:40
>>979
VC6ならビルドメニューのアクティブな構成の設定...、VC7.1ならコンボボックスで変更可能。
982デフォルトの名無しさん:2005/11/07(月) 17:22:29
プログラム作れないやつって全然どうでもいいこと気にするんだよな
983977:2005/11/07(月) 18:37:28
ただいま帰宅し、早速試してみた所、無事Releaseフォルダが出来、その中にexeファイルが生成されておりました。

ずっと悩んでいた事だったのですごくすっきりました。
こんな小さな事で悩まなくていいように勉強していきたいと思います。

ありがとうございました。
984モードレスダイアログが作れません:2005/11/07(月) 21:27:04

親ダイアログからあるボタンを押した場合にモードレスな子ダイアログを
呼び出したいのですが、ボタンを押しても子ダイアログが表示されず(一瞬
表示される?)うまく動きません。可能性としては
1、子ダイアログが作成できていない
2、作成できているが見えていない
3、作成できているがすぐに消えている
当たりが考えられそうですが、原因がつかめません。

プログラムですが、子ダイアログ(IDD_DIALOG1)のクラスにCmyDialogをつくり
親ダイアログのOnBnClickedButton関数内で

 CClientDC myDC(this);
 CmyDialog myDL;
 myDL.Create(IDD_DIALOG1, this);
 myDL.ShowWindow(SW_SHOW);

としています。myDialog.cppの方は特になにもしていません。
個人的には、子ダイアログがすぐ消えているような気がして、myDialog.cpp内で
何かしらのループ処理が必要なのかなとも思うのですが、よく分かりません。
原因や解決策が分かる方がいらっしゃいましたらよろしくお願いします。

環境はWindowsXP,VisualStdio.NET2003、ダイアログベースのMFCを使っています。
985デフォルトの名無しさん:2005/11/07(月) 21:35:07
関数内でスタック上に作ったオブジェクトは、関数を抜けると消えるがそういう問題では?
986デフォルトの名無しさん:2005/11/07(月) 21:35:25
そのコードだと、ダイアログをスタックに作成しているから
そこを抜けたらすぐに閉じてしまう。ヒープに作成セマウル号。
CmyDialoig* myDlg=new CmyDialog();
myDlg->Create(IDD_DIALOG1,this);
myDlg->ShowWindow(SW_SHOW);
987デフォルトの名無しさん:2005/11/07(月) 21:37:06
つーかむしろメンバとして作っとけ
988デフォルトの名無しさん:2005/11/07(月) 21:46:11
>>986
もろリーク起こすやんか
989デフォルトの名無しさん:2005/11/08(火) 01:07:16
>>988
あれじゃリークするが、

CmyDialog::CmyDialog()
{
  m_pChildDlg=(CDialog *)NULL;
}

CmyDialog::~CmyDialog()
{
  if(m_pChildDilg)
    delete m_pChildDlg;
}

とかすればいい。 モーダレスが1個なら、直接メンバ変数にする方が簡単だが、
複数のモーダレスを作成/破棄するなら、メンバ変数にテンプレート(CPtrArray)
を使った変数でダイアログのポインタを管理した方がいい。
990デフォルトの名無しさん:2005/11/08(火) 01:12:39
親→子のアクションが無ければ、delete this で自殺させても可
991デフォルトの名無しさん:2005/11/08(火) 01:33:24
つ[モードレス]
992デフォルトの名無しさん:2005/11/08(火) 01:48:37
delete NULL; は合法なので、if( foo ) delete foo;は冗長
993デフォルトの名無しさん:2005/11/08(火) 02:07:43
高々四行のコードに対する部分を示してあるだけなのに
メモリリークとかケチ付けてる奴は馬鹿だな。
994デフォルトの名無しさん:2005/11/08(火) 08:47:17
そんなに悔しがるなよ^^
995デフォルトの名無しさん:2005/11/08(火) 11:58:16
二時まで眠れなかったのかw
996デフォルトの名無しさん:2005/11/08(火) 18:43:29
次スレは?
997デフォルトの名無しさん:2005/11/08(火) 18:48:23
★初心者にVisual C++を教えるスレ★ Part22
http://pc8.2ch.net/test/read.cgi/tech/1131443284/l50
998デフォルトの名無しさん:2005/11/08(火) 19:42:45
998
999デフォルトの名無しさん:2005/11/08(火) 19:52:52
999
1000デフォルトの名無しさん:2005/11/08(火) 19:53:31
1000ならVisual C++ 2005 日本語版が年内に販売。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。