■過去ログ置き場に戻る■
1-
次250
最新50
[memo]
"9999999999_00.html#R20"
という感じで、URLの最後に "#R
レスNo
" を追加すると幸せになれます。
★初心者にVisual C++を教えるスレ★ Part20
1
名前:
デフォルトの名無しさん
:2005/07/01(金) 21:52:02
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-3
。
2
名前:
デフォルトの名無しさん
:2005/07/01(金) 21:52:50
【過去スレ】
Part19
ttp://pc8.2ch.net/test/read.cgi/tech/1116209988/
Part18
ttp://pc8.2ch.net/test/read.cgi/tech/1113539594/
Part17
ttp://pc8.2ch.net/test/read.cgi/tech/1107926989/
Part16
ttp://pc8.2ch.net/test/read.cgi/tech/1101022051/
Part15
ttp://pc5.2ch.net/test/read.cgi/tech/1097880265/
Part14
ttp://pc5.2ch.net/test/read.cgi/tech/1093672937/
Part13
ttp://pc5.2ch.net/test/read.cgi/tech/1089011118/
Part12
ttp://pc5.2ch.net/test/read.cgi/tech/1083585833/
Part11
ttp://pc5.2ch.net/test/read.cgi/tech/1077965179/
Part10
ttp://pc5.2ch.net/test/read.cgi/tech/1074933908/
※
Part09
ttp://pc5.2ch.net/test/read.cgi/tech/1068983609/
※
Part08
ttp://pc5.2ch.net/tech/kako/1063/10630/1063029371.html
Part07
ttp://pc5.2ch.net/tech/kako/1056/10562/1056280510.html
Part06
ttp://pc5.2ch.net/tech/kako/1052/10529/1052931903.html
Part05
ttp://pc5.2ch.net/tech/kako/1048/10486/1048698321.html
Part04
ttp://pc5.2ch.net/tech/kako/1044/10441/1044196393.html
Part03
ttp://pc5.2ch.net/tech/kako/1038/10381/1038160750.html
Part02
ttp://pc3.2ch.net/tech/kako/1030/10309/1030985362.html
Part01
ttp://pc3.2ch.net/tech/kako/1023/10235/1023530449.html
3
名前:
デフォルトの名無しさん
:2005/07/01(金) 21:57:52
【関連スレ】
■MFC相談室 mfc13d.dll■
http://pc8.2ch.net/test/read.cgi/tech/1110179996/l50
Win32API質問箱 Build33
http://pc8.2ch.net/test/read.cgi/tech/1120153520/
鬱だ氏のう DirectX (Part 15)
http://pc5.2ch.net/test/read.cgi/tech/1096649788/l50
C言語なら俺に聞け! Part 109
http://pc8.2ch.net/test/read.cgi/tech/1119435171/
C++相談室 part41
http://pc8.2ch.net/test/read.cgi/tech/1120190961/
C/C++の宿題を片付けます 46代目
http://pc8.2ch.net/test/read.cgi/tech/1119514274/
【初心者歓迎】C/C++室 Ver.19【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1119793525/
【関連サイト】
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
MSDN ライブラリ
http://www.microsoft.com/japan/msdn/library/
Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
Google
http://www.google.co.jp/
4
名前:
デフォルトの名無しさん
:2005/07/01(金) 21:58:05
【このスレの前身 VisualC++相談室 過去スレ】
part 1
ttp://piza.2ch.net/tech/kako/970/970607517.html
part 2
ttp://piza.2ch.net/tech/kako/981/981630730.html
part 3
ttp://piza2.2ch.net/tech/kako/993/993186053.html
part 4
ttp://pc.2ch.net/tech/kako/1002/10021/1002165477.html
part 5
ttp://pc.2ch.net/tech/kako/1006/10068/1006834463.html
part 6
ttp://pc.2ch.net/tech/kako/1011/10116/1011615035.html
part 7
ttp://pc.2ch.net/tech/kako/1017/10178/1017843192.html
part 8
ttp://pc.2ch.net/tech/kako/1022/10224/1022499000.html
part 9
ttp://pc5.2ch.net/tech/kako/1036/10368/1036897197.html
5
名前:
デフォルトの名無しさん
:2005/07/01(金) 21:59:32
ttp://pc8.2ch.net/test/read.cgi/tech/1119008091/l50
6
名前:
デフォルトの名無しさん
:2005/07/01(金) 22:04:39
var
s : string;
begin
s := 'こんにちは'
end;
みたいな書き方を
C++は、できますか?
Cみたいに
*charしかないのでしょうか?
7
名前:
デフォルトの名無しさん
:2005/07/01(金) 22:05:48
あっ Visual C++ じゃないので やっぱりいいです
C++Builderできいてきます
8
名前:
デフォルトの名無しさん
:2005/07/01(金) 22:07:17
快調な滑り出しだな
9
名前:
デフォルトの名無しさん
:2005/07/01(金) 22:43:55
卒研で流れの解析をVC++でやろうと考えているのですが
簡単な数式くらいしか書けないしょぼい実力なので
なにから手をつけたらいいのかわかりません・・・
最終的には自動車丸ごと解析してやろうと考えています。
お勧めの書籍、サイト、プログラムなどアドバイスよろしくお願いします。
10
名前:
デフォルトの名無しさん
:2005/07/01(金) 22:46:41
>>9
スレ違い。
初心者向け言語スレもしくは書籍スレ、或いはこの辺。
http://pc8.2ch.net/test/read.cgi/tech/1118072681/
11
名前:
デフォルトの名無しさん
:2005/07/02(土) 00:34:44
っていうか、1年でできると思ってる?
12
名前:
デフォルトの名無しさん
:2005/07/02(土) 00:42:38
出来るだろ。
13
名前:
デフォルトの名無しさん
:2005/07/02(土) 01:09:43
>簡単な数式くらいしか書けないしょぼい実力なので
で、出来る?
14
名前:
デフォルトの名無しさん
:2005/07/02(土) 02:25:16
>>6
#include <string>
int main(int argc,char *argv[])
{
std::string s;
s = "こんにちは";
return EXIT_SUCCESS;
}
じゃ気に入らんか?
もっともこれは2バイト文字を考慮していない。
15
名前:
14
:2005/07/02(土) 02:26:21
や、ごめ。
#include <stdlib.h>すんの忘れてた。
16
名前:
デフォルトの名無しさん
:2005/07/02(土) 08:07:36
>>1
乙
17
名前:
デフォルトの名無しさん
:2005/07/02(土) 11:32:10
Visual C++て、デバッグ実行ができない問題が多くないか?
Win2000にNET. 2003をインストールした2台のパソコンどちらも、デバッグ実行すると、プログラムの実行
が開始せずに、固まってしまってタスクマネージャーからVCを終了するしかなくなるのはどういうことか。
会社では、Win2000にVC++6.0をインストールしたパソコンでデバッグ実行すると、同じ現象が発生すること
が多かったし。でも今は落ち着いてきて、特に対策をしたわけではなく、なぜかは分からないが、普通に実行
できるようになったが。
でも、NET.2003が依然としてデバッグ実行ができない。困ったもんだ。
デバッグなしで開始はできるが。
VCてぼろいんじゃないか?
18
名前:
デフォルトの名無しさん
:2005/07/02(土) 11:45:08
そっちの環境がぼろいだけ
19
名前:
デフォルトの名無しさん
:2005/07/02(土) 11:59:50
NET. 2003
NET. 2003
NET. 2003
NET. 2003
NET. 2003
NET. 2003
.NET 2003だろ
20
名前:
デフォルトの名無しさん
:2005/07/02(土) 12:08:59
delphi2006最強
21
名前:
デフォルトの名無しさん
:2005/07/02(土) 15:08:48
とりあえず猫を読み終わったので、アクションゲームを作ってみたいのですが、
そういうゲームの作り方を解説しているサイトはないでしょうか?
22
名前:
デフォルトの名無しさん
:2005/07/02(土) 15:15:00
2つ質問させてください。
CTestView::CTestView()
: pMem(NULL)
{
}
と
CTestView::CTestView()
{
pMem = NULL;
}
ではどういう違いがあるのでしょうか?またどっちで記述するのがおすすめとか
ありますか?
あと
#include <stdio.h>
と
#include "stdio.h"
の違いはなんでしょうか?
23
名前:
デフォルトの名無しさん
:2005/07/02(土) 15:37:41
#include <stdio.h>と#include "stdio.h"の違いは検索パスが違う。
<>で指定した場合は開発環境で設定されたディレクトリからファイルを
探してインクルードするが""で指定した場合は、
カレントディレクトリからファイルを探し、無ければ開発環境で指定された
ディレクトリから探すようになる。
と言ってみる試験。
24
名前:
デフォルトの名無しさん
:2005/07/02(土) 15:37:45
>>22
pMem(NULL)は初期化、pMem = NULL;は代入。
pMemの型が何だか知らんが、クラスとかだとかなり意味が違う。
< >と" "の違いは、どこを最初に探しに行くかの違い。
25
名前:
22
:2005/07/02(土) 15:47:09
<> "" は理解しました。ありがとうございます。
pMem は CTestView のメンバで
u_char* pMem;
と宣言してます。なんか不定値入ってたら困るので生成されるときに
初期化しようとしてるんですが、いままでは
pMem = NULL;
でやってたんですが、VCで「メンバの追加」を選んだら
: pMem(NULL)
がソースに書き込まれたので気になって質問してみました。
26
名前:
デフォルトの名無しさん
:2005/07/02(土) 16:58:39
>>25
pMem(NULL)とpMem=NULLは実行されるタイミングが本質的に違う。
この場合はポインタのようだから実質問題ないが、
これがクラスになると大問題になる。
その辺の違いはわかるかな?
メンバ変数&コンストラクタで調べると吉。
27
名前:
22
:2005/07/02(土) 17:33:40
>>26
なるほどです。メンバ変数&コンストラクタをキーにしてもうちょっと
勉強してみます。
ありがとうございました!
28
名前:
デフォルトの名無しさん
:2005/07/02(土) 18:29:04
カラー画像をRGBからHSVに変換して、
csvファイルで保存する方法が全く分かりません。
どなたかプログラムとか、やり方を教えてください・・・
29
名前:
デフォルトの名無しさん
:2005/07/02(土) 18:30:44
カラー画像をどうやってカンマ」区切りにするんだろ
RGBからHSVは調べれば式がみつかるかと
30
名前:
デフォルトの名無しさん
:2005/07/02(土) 18:32:10
>>28
http://www.google.co.jp/search?num=50&hl=ja&newwindow=1&c2coff=1&q=RGB+HSV+%E5%A4%89%E6%8F%9B%E5%BC%8F&lr=lang_ja
あとはこれをfprintfかofstreamかなんかで出力しろ。
宿題なら宿題スレがある。
31
名前:
デフォルトの名無しさん
:2005/07/02(土) 19:24:24
いくら自分の会社が作ってるOS上の開発ツールとはいっても、デバッグ実行できない
のだから、本当にぼろいな。OSの本家のメーカーの製品だからといって、VCを選択す
るのが多いんだろうな。
32
名前:
デフォルトの名無しさん
:2005/07/02(土) 19:33:52
>>31
=
>>17
か?
粘着するなら他所へ行け。
33
名前:
デフォルトの名無しさん
:2005/07/03(日) 00:16:56
>>32
黙れ、野郎。
34
名前:
デフォルトの名無しさん
:2005/07/03(日) 00:43:50
黙ってあげるから別の所に行って下さい。
あなたのぼろいPCと一緒に。
35
名前:
デフォルトの名無しさん
:2005/07/03(日) 01:38:52
スライダーをエディットボックスに関連づけて使用したいと思い、
setbuddy という関数を使ってみたのですが、
これを使うと、余計なお世話で勝手にコントロールの配置が変えられてしまい
(エディットボックスとスライダーが横に並べられてしまう)
レイアウトが崩れてしまいました。
スピンボックスの時はエディットボックスにくっつけるかどうか
任意に選べたのですが、スライダーの時も何か方法があるのでしょうか?
36
名前:
デフォルトの名無しさん
:2005/07/03(日) 05:48:37
>>34
黙るとか言いながら、余計なことを書くな。
お前こそ別の所に行け。
37
名前:
デフォルトの名無しさん
:2005/07/03(日) 06:46:28
('A`)
38
名前:
デフォルトの名無しさん
:2005/07/03(日) 14:32:15
C++(VisualStudio6.0)で書かれたソースをC++.NETで開き、文法上のエラーを解消し、
ビルドしたところ、以下のメッセージが出てしまいました。
error LNK2001: 外部シンボル ""char * __cdecl fgets(char *,int,struct _iobuf *)" (?fgets@@$$J0YAPADPADHPAU_iobuf@@@Z)" は未解決です。
該当するソースはこのようになっています。
FILE *fstream;// ファイルディスクリプタ
char tLine[256];// 一行読み込み用
if( fgets( tLine, 128, fstream ) == NULL ){
if( ferror( fstream ) ){// 一行読み出しエラー
break;
}
break;// EOFに達した
}
その他,atoi、strstrなど、Cランタイムライブラリ関数(?)関連のものは
みな外部シンボルが未解決と出るんですが…何か参照設定が足りないのでしょうか?
ご教授いただければ思います。
39
名前:
デフォルトの名無しさん
:2005/07/03(日) 15:04:23
みなさん、
>>36
は真性のキチガイ厨房ですので、以下では
完全にスルーしましょう。よい子は
>>36
にレスしちゃだめですよ。
自分がぼろいことに気が付いていないのですから。
黄色い救急車マダー?
40
名前:
デフォルトの名無しさん
:2005/07/03(日) 15:23:14
>>38
できそうなのにね?
41
名前:
デフォルトの名無しさん
:2005/07/03(日) 16:13:24
ライブラリがリンクされて無いんだべ。
42
名前:
ペー&(且つ)&パー
:2005/07/03(日) 16:17:00
>>38
最初のほうに #include "stdio.h" といれてますか?
fgets の宣言はそこにあります。 #include でファイルを取り込んでます。
C にしろ、Win32API にしろ ver. の違いでは動かなくないと思うです
C はサンプル読めるけど書かないじんなので、間違いならごめんなサイ
どうでもいいけど、break いらないです。
sample をよく眺めて1つずつ意味(流れ)を理解したほうがよいのでは。
ところが、その質問マルチってやつです?
43
名前:
デフォルトの名無しさん
:2005/07/03(日) 16:58:08
間違ってマルチスレッド/シングルスレッド用ライブラリを
リンクするようにしている。/MDとかなんとかそういうの。
開発環境で設定しる。
ところでストリームがオープンされてないようだが、
省略しただけ?
44
名前:
デフォルトの名無しさん
:2005/07/03(日) 17:30:43
まず
#include <stdio.h>
は上のほうに記入済みです。
参照設定にはmscorlibを設定しました。
ストリームは取得しているところを略してしまいました。
こんな感じです↓
if ((fstream =fopen(ファイル名, "r")) == NULL) {
// エラー処理
} else {
// ファイルを一行ごとに読み出し
while (!feof(fstream)) {
if( fgets( tLine, 128, fstream ) == NULL ){
if( ferror( fstream ) ){// 一行読み出しエラー
break;
}
break;// EOFに達した
}
}
45
名前:
デフォルトの名無しさん
:2005/07/03(日) 17:31:31
こんにちは
Cの変数宣言で
char *a[5] = {"a","bc","def","gh","ijk"};
とよく書くんですが、
これをC++でクラスのメンバ変数に持たせたいの
ですよ。なにかいい方法あります?
46
名前:
マルチすみませんでした
:2005/07/03(日) 17:54:41
>>40-43
さんありがとうございます。38(44)です。
> 間違ってマルチスレッド/シングルスレッド用ライブラリを
> リンクするようにしている。/MDとかなんとかそういうの
cppファイルのプロパティの[C/C++]-[コード生成]-[ランタイムライブラリ]
には[マルチスレッドデバッグ(/MTd)]が設定されていました。
もしやこれがいけないんでしょうか?
47
名前:
デフォルトの名無しさん
:2005/07/03(日) 17:59:39
>>45
今のC++では非静的メンバが配列のときに初期化するのは無理で、コンストラクタで代入するしかない。
48
名前:
45
:2005/07/03(日) 18:23:06
>>47
さん返事ありがとうございます。
地道にですね・・・。
実はCで作ったプログラムをC++の勉強がてらに
クラスで作り直していました。
元々がCプログラムの為、設計がまずいのかとも
思いましたが。。。
>今のC++では
今後に期待ですかね
49
名前:
デフォルトの名無しさん
:2005/07/03(日) 18:57:21
>>48
コンストラクタで、ローカルな配列からコピーすればいい。
例えば、
class foo {
char **array;
unsigned NofArray;
foo();
};
foo:foo()
{
char *s[] = {"a", "bc", "def", "gh", "ijk",};
array = s;
NofArray = sizeof(s) / sizeof(*s);
}
とすればほぼことは足りるだろ?
50
名前:
デフォルトの名無しさん
:2005/07/03(日) 19:12:09
> ローカルな配列からコピーすればいい
> array = s;
……
51
名前:
デフォルトの名無しさん
:2005/07/03(日) 19:37:56
public がない foo: ローカル変数を参照、、、
、、、難易度高いな、4つしかわからん。
52
名前:
デフォルトの名無しさん
:2005/07/03(日) 19:47:42
初心者と言うわけではないんですが、
プロジェクトの種類でフォームアプリケーションというのは、
.net frameworkを使ったプログラミングと考えてよいのでしょうか?
現状で、W32API, MFCなどのどれが普及、奨励されますか?
53
名前:
45
:2005/07/03(日) 20:00:42
>>49
ありがとうございます。
外れているかもだけど、追加で教えて下さい。
sの領域はコンストラクタから出た時に開放されますよね。
"a", "bc", "def", "gh", "ijk"はいつ開放されるんですか?
54
名前:
デフォルトの名無しさん
:2005/07/03(日) 20:19:40
>>53
プログラムが終了する直前
55
名前:
デフォルトの名無しさん
:2005/07/03(日) 20:25:39
>>46
そもそも、●●libをリンクしましたとかせにゃならんのが信じられん。
VisualStudioなら、ヘッダはインクルードせにゃならんが、リンクライブラリ自体はデフォルトで設定されてるのに・・・
56
名前:
&
◆u9Q9Vrla1w
:2005/07/03(日) 20:52:32
>>55
さん
参照設定のmscorlibって
VisualStudio.NETなら一般的にデフォルトで設定されているものなんですか。
根本的にC++のつくりかたを自分は間違えているのでしょうか…。
#using <mscorlib.dll>もコードの先頭に当然必要ですよね?
それと質問なんですがmscorlibって何のために設定しているんですか?
自分は「System.〜のさまざまなメソッドを使用可能にするため」
と解釈してるんですけど…。
fgetsとかはstdio.hなどのヘッダファイル内に定義されてる、
だからincludeしなくちゃだめだよ、ということですよね?
57
名前:
45
:2005/07/03(日) 20:56:26
>>54
staticにしないと関数抜けた時に
開放されると思うのは勘違い???
ためしてみたけど、関数抜けて開放されてた。
staticにしたらOKでした。
#include <stdio.h>
char **array;
void poi()
{
char* s[] = {"abc", "de", "f", "gh"};
array = s;
return;
}
void main()
{
poi();
printf("%s\n", array[0]);
printf("%s\n", array[1]);
printf("%s\n", array[2]);
printf("%s\n", array[3]);
}
58
名前:
デフォルトの名無しさん
:2005/07/03(日) 21:03:58
"abc", "de", "f", "gh"自体はプログラム終了まで有効。
上の文字列の先頭アドレスが格納されたポインタ配列char* s[]は、
>>57
だとpoiから抜けた後は無効。
この場合、ポインタ配列の中身(文字列の先頭アドレス)をコピーしてしまえば
sが破棄されても大丈夫。
59
名前:
.NETなんてしらん
:2005/07/03(日) 21:50:20
stdio.hの入ってるdllの参照設定なんて不要なのかい?
60
名前:
ペー&(且つ)&パー
:2005/07/03(日) 21:55:07
>>52
ええ、きっとそうです。
プロジェクトを作成して、右にある
ソリューションエクスプローラの Form1.h を右クリック。
コードの表示をしてください。
public __gc class Form1 : public System::Windows::Forms::Form
とか普通に使ってます。
Win32API は内部呼び出ししてるですから、これは代替できるもの
がないと思います。しかし、MS さんは Longhorn を開発
してますが、これに.NetFrameworkみたいなのを搭載するとか見たこ
とあります。初期出荷には間に合わず後でって形になるそうですが。
Critical な操作でピンチにならないようにしたいそうですが、
そこまで危惧することかな?・・・MFC はなんとなく使えません。
APIのメッセージループ はWin の理解にいいと思うけれども
どれかを奨励する気はありません。win32 は言語ですらない。
>>56
include はそうです。
#using <mscorlib.dll>謎ですね。
.NetFramework のSystem 名前空間のメンバを使うなら
using namespace System でよいので。
61
名前:
45
:2005/07/03(日) 22:06:42
>>58
理論はなんとなくわかるんですが、
実装がわかりません。
色々試してるんですがうまくいかないっす。
62
名前:
デフォルトの名無しさん
:2005/07/03(日) 22:13:13
>>49
class foo (
// ...
public:
foo();
// ...
};
foo::foo()
{
static char * s[] = {...};
array = s;
NofArray = sizeof(s) / sizeof(*s);
}
63
名前:
41
:2005/07/03(日) 22:18:36
> #using <mscorlib.dll>謎ですね。
>.NetFramework のSystem 名前空間のメンバを使うなら
>using namespace System でよいので。
確かに記述しなくてもエラーになりませんね。
参照設定さえしておけばいいってことでしょうか、
> cppファイルのプロパティの[C/C++]-[コード生成]-[ランタイムライブラリ]
>には[マルチスレッドデバッグ(/MTd)]が設定されていました。
>もしやこれがいけないんでしょうか?
そうすると、あとはこれでしょうか…?
それとも、fgetsとかatoiとかC言語ランタイム関数使用する場合、
.NETでは何かincludeしないとだめなんでしょうか?
stdio.hとかその他ヘッダファイルは当然インクルードしてるんですが
ちなみにVisualStudio6.0だとコンパイルとおっちゃうんですよね…
64
名前:
デフォルトの名無しさん
:2005/07/03(日) 22:25:26
元々VC6で作ったんだからVC6で通らんかったら大問題だろう
65
名前:
45
:2005/07/03(日) 23:26:11
>> 63
staticってこと????
66
名前:
ペー&(且つ)&パー
:2005/07/03(日) 23:34:36
寝る前に書きます。
.NET でも 基本はC++でCです。
意識することはありません。
.NetFramework を搭載して .NET。
Cだけで書けます。まず、C/C++を!
>>59
stdio.h はdll に入ってるわけではないです。
.h はファイルとして実在します。
C でもstdio.h とその関数を使うので同じ。
stdio.h を開くと微妙にわからない宣言と定義が
ならんでます。c++ では .h にも
ソースをよく書きますから。
>>63
include しなくてはなりません。C/C++、ヴァージョン
は関係ないでしょう。
# はpre processer(プリプロセッサ)。pre のとおり、
コンパイル前に動きします。#define a 1 ならコン
パイル前にa をなにかしてるってこと。つまり、
宣言がある stdio.h を読み込まないとってこと。
ともあれ、
#using <mscorlib.dll>がわからなくても書けますよ。
>>65
どこから、static が??
長分、すみmAmせん。
67
名前:
45
:2005/07/03(日) 23:43:00
>>66
すみません。間違いです。
63じゃなくて62でした。
68
名前:
デフォルトの名無しさん
:2005/07/04(月) 00:42:38
>>67
staticな配列はどこにあろうと(関数内だろうと関数外だろうと)生存期間はプログラムそのものと同じ。
69
名前:
デフォルトの名無しさん
:2005/07/04(月) 15:25:39
strcpy()とlstrcpy()の使い分けってどうすればいいのですか?
結果自体は同じような気がするのですが。。。
70
名前:
デフォルトの名無しさん
:2005/07/04(月) 16:32:19
lstrcpy()は使わなくていいよ。非標準だし。
71
名前:
デフォルトの名無しさん
:2005/07/04(月) 16:42:07
>>69
strcpyはCの標準ライブラリ関数、どこでも使える
lstrcpyはWin32API
72
名前:
デフォルトの名無しさん
:2005/07/04(月) 18:36:13
ウィンアプリでstrcpyだと、容量が重くなったり、
正常に動かない場合があるらしい。
73
名前:
デフォルトの名無しさん
:2005/07/04(月) 18:42:30
>>72
根拠は?
つーか、「容量が重い」とは?
74
名前:
デフォルトの名無しさん
:2005/07/04(月) 18:43:07
つーかUNICODE
75
名前:
デフォルトの名無しさん
:2005/07/04(月) 18:51:29
strcpyはANSIだからな
76
名前:
デフォルトの名無しさん
:2005/07/04(月) 19:09:06
dynamic_castを使うための設定項目はどこにありますか?
77
名前:
デフォルトの名無しさん
:2005/07/04(月) 19:09:12
[main.cpp]
#include "aaa.h"
int main(){
aaa<int>();
}
[aaa.h]
template <typename MYTYPE> void aaa(void);
[aaa.cpp]
template <typename MYTYPE> void aaa(void){}
と書くとコンパイルが通らず以下のようなエラーが出ます。
[エラー]
main.obj : error LNK2001: 外部シンボル ""void __cdecl aaa(void)" (?aaa@@YAXXZ)" は未解決です
Debug/main.exe : fatal error LNK1120: 外部参照 1 が未解決です。
template <typename MYTYPE> void aaa(void){}をmain.cppに書くとコンパイルは通るのですが、何がおかしいのでしょうか?
aaa.cpp側にテンプレートを使わない関数を書いても普通に通ります。
78
名前:
デフォルトの名無しさん
:2005/07/04(月) 19:13:53
A.cppのB関数でA.hで作ったクラスCのインスタンスDを作ったとして
E.cppの関数FでそのDのメンバ変数にアクセスしたいのですが
どうやるのでしょうか?
A.h
class C{
public:
int x;
}
A.cpp
#include "A.h"
void B(){
C D;
D.x=15;
}
E.cpp
void F(){
(ここでDのxを参照したいのです)
}
79
名前:
77
:2005/07/04(月) 19:15:04
書き忘れました。すみません。
環境はVC++6.0です。
それから、aaa.cppをmain.cppのプロジェクトへの追加もちゃんとしました。
80
名前:
デフォルトの名無しさん
:2005/07/04(月) 19:32:06
テンプレートって実態が別ファイルだといかんのじゃなかったっけ?
81
名前:
デフォルトの名無しさん
:2005/07/04(月) 20:06:30
>>78
Fが引数を取ればいいだけじゃないか。
D.xだけが必要ならintで、D全体が必要ならconst D&を。
82
名前:
デフォルトの名無しさん
:2005/07/04(月) 20:07:24
>>77
テンプレートはヘッダに書くか、明示的実体化をする必要がある。
ヘッダに書く方が一般的。
83
名前:
77
:2005/07/04(月) 20:37:25
>>82
ヘッダに書いたらOKでした
ありがとうございました
84
名前:
デフォルトの名無しさん
:2005/07/04(月) 20:43:14
>>69
strcpyはchar*のコピーに使う
_tcscpyとlstrcpyはTCHAR*のコピーに使う
UNICODEを定義していなければTCHAR*はchar*と同じ。
_tcscpyとlstrcpyの違いは、後者がWindows APIで、前者がCランタイムであること。
85
名前:
デフォルトの名無しさん
:2005/07/04(月) 20:57:55
UpdateData(TRUE);
ix = m_ix; //m_ixはエディットボックスのメンバ変数
こんな感じでエディットボックスの数値を取得しようとしたんですが、
エディットボックスの値が数値以外や空白の場合、固まってしまいます。
デバックモードで見たところ、UpdateData(TRUE);で止まっているようなのですが、
どうすればよいのでしょう?
環境はVC++6.0です。
86
名前:
デフォルトの名無しさん
:2005/07/04(月) 21:54:13
>>84
>>71
,74-75
87
名前:
デフォルトの名無しさん
:2005/07/04(月) 22:02:18
>>86
>>84
に述べた程度に正確な情報がかかれていなかったので、
敢えて書いておいたんだが
88
名前:
デフォルトの名無しさん
:2005/07/05(火) 00:38:34
>>85
CStringで受け取り数値に変換
またはDDV
89
名前:
78
:2005/07/05(火) 01:07:23
>>81
引数をとるって具体的にどう書くんですか?
A.cppでFを使うならF(D.x)でいいのはわかりますが
A.cpp以外のcppファイルでもFを使いたいのです。
90
名前:
デフォルトの名無しさん
:2005/07/05(火) 07:31:50
>>45
staticなメンバ変数を作ればよい。
class Sample{
static char *a[];
};
char *Sample::a[] = {"a","bc","def","gh","ijk};
91
名前:
デフォルトの名無しさん
:2005/07/05(火) 09:40:39
GDI+を使いたくてGdiplus.hをインクルードした途端に
GdiPlusEnums.hでエラーが7つ出るんです・・・
何が原因かわかりません。なぜなんでしょう?
92
名前:
初心者
:2005/07/05(火) 14:24:02
Visual C++ のダイアログで文字列はうまく表示できますが
数値がうまく表示できません。
例えば エディットボックス1の数値+エディットボックス2の合計が
エディットボックス3に表示のような簡単なものでいいのですが
教えていただけますか?
ちなみに
CString boxa,boxb;
float a,b;
CEdit* myED1=(CEdit*)GetDlgItem(IDC_EDIT1);
CEdit* myED2=(CEdit*)GetDlgItem(IDC_EDIT2);
myED1->GetWindowText(boxa);
a = atof(boxa);
b = a+10;
myED2->SetWindowText();
今はエディット1に入力した値に10を足してエディットボックス2に表示
というのを作っています。
93
名前:
デフォルトの名無しさん
:2005/07/05(火) 14:43:41
CString boxa;
reinterpret_cast<CEdit*>(GetDlgItem(IDC_EDIT1))->GetWindowText(boxa);
CString boxb;
reinterpret_cast<CEdit*>(GetDlgItem(IDC_EDIT2))->GetWindowText(boxb);
CString boxc;
boxc.Format("%d", atoi(boxa) + atoi(boxb));
reinterpret_cast<CEdit*>(GetDlgItem(IDC_EDIT3))->SetWindowText(boxc);
94
名前:
初心者
:2005/07/05(火) 15:28:13
できました。
ありがとうございました!
また質問があったらよろしくお願いします☆
95
名前:
85
:2005/07/05(火) 15:52:14
>>88
CStringでやれば簡単そうなんですが、
DDVとやらは初めて聞いたのでそっちを調べてみたら出来ました。
ありがとうございます。
96
名前:
デフォルトの名無しさん
:2005/07/05(火) 16:05:48
>>91
エラー内容くらい書けよ
VCのバージョンも
97
名前:
初心者
:2005/07/05(火) 17:34:06
たびたびすいません。
エディットボックスを使っての
ファイルの入出力は可能でしょうか?
例えば
C言語のfopenのようなものを使う感じで。
エディットボックス1にsample1.txt
エディットボックス2にsample2.txt
二つのファイルを開いて処理を行う場合などはどうしたらいいでしょうか?
ちなみにVisual C++ バージョンは6.0です
CFile CStdioFile などを使うのでしょうか?
98
名前:
デフォルトの名無しさん
:2005/07/05(火) 17:57:47
MFCでやるんならCFile
エディットボックスがCStringと関連付けてあるならあとはCFileとCStringのやりとりだけ
99
名前:
初心者
:2005/07/05(火) 18:16:20
なるほどありがとうございます。
初心者なもので色々わからない事だらけで
簡単なことも聞いてしまい申し訳ありません。
100
名前:
デフォルトの名無しさん
:2005/07/05(火) 22:05:36
>>91
stdafx.hで#define WIN32_LEAN_AND_MEANを定義していたら消す。
101
名前:
デフォルトの名無しさん
:2005/07/06(水) 06:21:10
最近、VC++6.0からVS.net2003に移行したのですが、
コードの左側に付く「+」とか「-」の定義を折りたためる
やつ(名前がわかりません)を消すことはできないのでしょうか?
ご存知の方、ご教示おねがいします。
102
名前:
初心者
:2005/07/06(水) 11:46:11
本に載っていたプログラムで
char crlf[]="\x0d|x0a";
こんな宣言がありましたがこれはどういった意味なのでしょうか?
簡単なことかもしれませんがすいません。
103
名前:
デフォルトの名無しさん
:2005/07/06(水) 12:08:41
>>102
それが、
char crlf[] = "\x0d\x0a";
ならば、
char crlf[] = "\r\n";
と等価だ。
そしてそれは、宣言ではなく定義だ。
104
名前:
デフォルトの名無しさん
:2005/07/06(水) 14:46:38
crlf=carriage return line feed
105
名前:
デフォルトの名無しさん
:2005/07/06(水) 14:47:42
これから勉強するなら、C++とC#どちらがいいでしょう?
106
名前:
デフォルトの名無しさん
:2005/07/06(水) 15:32:03
ケースバイケース
107
名前:
デフォルトの名無しさん
:2005/07/06(水) 16:11:13
C++で作ったライブラリをC#で使えるのかしら。。。
108
名前:
デフォルトの名無しさん
:2005/07/06(水) 17:14:59
>>96
stdafx.hにインクルードしました。2003.netです。
〜GdiPlusEnums.h(28) : error C2146: 構文エラー : ';' が、識別子 'GraphicsState' の前に必要です。
〜GdiPlusEnums.h(28) : error C2501: 'GraphicsState' : 識別名を宣言するのに、型が指定されていません。
〜GdiPlusEnums.h(520) : error C2146: 構文エラー : ';' が、識別子 'ObjectTypeIsValid' の前に必要です。
〜GdiPlusEnums.h(520) : error C2433: 'BOOL' : 'inline' はデータ宣言をするのに使用できません。
〜GdiPlusEnums.h(520) : error C2501: 'BOOL' : 識別名を宣言するのに、型が指定されていません。
〜GdiPlusEnums.h(548) : error C2065: 'META_SETBKCOLOR' : 定義されていない識別子です。
〜GdiPlusEnums.h(548) : fatal error C1903: 直前のエラーを修復できません。コンパイルを中止します。
GdiPlusEnums.hなんてまったく触ってないのに・・・
>>100
探してみたんですが#define WIN32_LEAN_AND_MEANは定義されていませんでした。
109
名前:
91
:2005/07/06(水) 17:15:58
すいません、91です。
110
名前:
デフォルトの名無しさん
:2005/07/06(水) 17:18:05
>>108
じゃあgdiplus.hより先にwindows.hをインクルードしている?
111
名前:
91
:2005/07/06(水) 17:32:14
windows.hってあるんですか?
とりあえずstdafx.hにはありませんでした。
gdiplus.hは#pragma onceの後にインクルードしています。
場所が悪いんでしょうか?
stdafx.hのほうがいいってどこかで聞いたんですが・・
112
名前:
デフォルトの名無しさん
:2005/07/06(水) 17:36:01
>>111
gdiplus.hはwindows.hがインクルードされていることを前提にしている。
113
名前:
91
:2005/07/06(水) 18:20:33
stdafx.hの下のほうに記述したらできました!
この上ら辺のがwindows.hなんですかね
ありがとうございます、助かりました!
114
名前:
デフォルトの名無しさん
:2005/07/06(水) 18:33:22
この上ら辺のが〜なんですかねって・・・
それも理解しないで作ろうと言うのか・・・
若いとは恐ろしいものだ・・・
115
名前:
デフォルトの名無しさん
:2005/07/06(水) 20:55:22
ExpandEnvironStrings()を使うと、環境変数文字列を展開できますが
逆の処理を行うAPIは存在しないのでしょうか?
例:C:\Windows\System32 -> %windir%System32
116
名前:
デフォルトの名無しさん
:2005/07/06(水) 21:14:35
例えば
HOGE=C:\Windows\System32
なんて環境変数も定義されてたらどっちに変換していいかわからなくなるだろ
117
名前:
デフォルトの名無しさん
:2005/07/06(水) 21:25:54
うろ覚え・・・
class Question {
Hoge* fuga[100];
public:
virtual void print();
virtual void set( Hoge* pfuga, int num ) {
fuga[num] = pfuga;
}
};
void Question::print() {
// なんらかの処理
}
こんな感じで、全てのメソッドに virtual が付いているようなソースコード
を見た記憶があります。 virtual の意味は理解しているつもりだけど、この
意図がイマイチ理解できません。これって意味ないっすよね??
自分は別につける必要はないと思ってるんですが。
118
名前:
デフォルトの名無しさん
:2005/07/06(水) 21:28:46
>>117
継承&ポリモーフィズムするつもりなら意味がある
119
名前:
デフォルトの名無しさん
:2005/07/06(水) 21:36:56
なるほど、するつもりなら、という事は全部になんでもかんでも
全てに付けるような真似をしても、何らメリットはないと言うわけですね(´∀`)
ありがとうございました
120
名前:
115
:2005/07/06(水) 21:45:42
>>116
ご尤も。
CStringクラスのReplace()関数などで自分で環境変数文字列に置換するしかないですかね。
くだらない質問をしてしまってごめんなさい。
ありがとうございました。
121
名前:
デフォルトの名無しさん
:2005/07/06(水) 21:55:49
VC++を最近はじめた者です。
CListViewクラスを利用して、「開く」メニューで選択したフォルダの内容を
表示したいのですが、どのようにしたらようのでしょうか?
最終的には、リスト内で選択されたファイルを他のビューで表示することに使いたいんです。
簡単な画像ビューア(Windows画像とFAXビューア的なアプリケーション)を作ろうと四苦八苦しています。
参考サイトなど、オススメがあれば教えてください。
お願いします。
122
名前:
デフォルトの名無しさん
:2005/07/06(水) 22:49:15
>>121
フォルダの内容を取得して、リストアイテムを追加する。
123
名前:
デフォルトの名無しさん
:2005/07/06(水) 22:52:34
質問です
if (NULL == (fi2=fopen("Results.xls","w")))
{
printf("\7\n Cannot Make File : Results.xls\n");
exit(1);
}
とやって書いてるループを回して他の場所で毎回ファイルに書き出しているのだけれども
508回目に必ずifの仲に入ってしまいます.何か原因わかりますか?
ちゃんとクローズしたりています
stepoutでみてもpfpirnt("でif文の中に入ってhい
中断されちゃうんだけど原因わかる比問いますか・
124
名前:
デフォルトの名無しさん
:2005/07/06(水) 23:23:14
>>123
プログラムより前に日本語を直そう
125
名前:
デフォルトの名無しさん
:2005/07/06(水) 23:50:27
>>122
もうすこし、なんというか・・・詳しく・・・。
126
名前:
デフォルトの名無しさん
:2005/07/07(木) 00:05:44
>>125
CFileFindでファイル列挙。
リストアイテムを追加はMSDN見ればわかるだろ。
127
名前:
デフォルトの名無しさん
:2005/07/07(木) 00:09:06
>>126
おお、なんかわかりそうな予感。
ありがとうございます。
128
名前:
デフォルトの名無しさん
:2005/07/07(木) 12:32:01
>>123
コードを晒すなら、ファイルI/Oを行っている部分全部さらせ。
エラーになったのならエラー番号ぐらい見ろ。errnoだっけ?
#実はファイルを閉じていないだけな予感
129
名前:
初心者
:2005/07/07(木) 16:29:43
先日も質問したものですが
reinterpret_castではcharからintへの変換は可能かと思いますが
charからfloatまたはdoubleに変換したい場合は
何を用いればいいでしょうか?
よろしくお願いします。
130
名前:
初心者
:2005/07/07(木) 16:37:37
すいません
解決しました。
131
名前:
初心者
:2005/07/07(木) 16:44:25
すいません
解決しました。
132
名前:
初心者
:2005/07/07(木) 16:54:00
>>130-131
は偽物です。何卒よろしくお願いします。
133
名前:
デフォルトの名無しさん
:2005/07/07(木) 17:26:22
reinterpret_cast ってポインターをint とかに代入する時に使うんじゃないの?
基本的にキャストって使わないほうがいいと思う。
C#とかJavaとは違ってtemplateもあるし。
char c = 10;
int n = int( c );
float f = float( c );
double d = double( c );
char* p = &c;
__int64 np = reinterpret_cast< __int64 >( p );
134
名前:
デフォルトの名無しさん
:2005/07/07(木) 17:32:44
double d = static_cast<double>(static_cast<int>('\n'));
135
名前:
デフォルトの名無しさん
:2005/07/07(木) 17:42:26
ちょっとどこで聞けばよい性質のものか分からない質問なのですがお願いします。
やりたい事は、Windowsのテキストエリアコントロールみたいなのを自作する事なのですが、
プロポーショナルフォントを使った場合、
キャレットの位置の計算だとか、マウスカーソルが触ってるのが何文字目であるかとか、
そういったことを実現するにはどうしたらよいでしょうか。
文字のドット数を得る関数なんて、、ないですよね?
136
名前:
デフォルトの名無しさん
:2005/07/07(木) 18:04:36
プロポーショナルだと GetTextExtentPoint32 じゃ駄目っぽいよなぁ...
と思ったら GetTextExtentPointI ってのもあるぞ
今仕事中だから自分で調べてくれ
137
名前:
デフォルトの名無しさん
:2005/07/07(木) 18:43:03
親クラスの this ポインタをウォッチウィンドウで参照した時、
サブクラスのポインタが参照できるのですが、これってプログラムで参照する場合は、
どうしたらいいのでしょうか?
ウォッチウィンドウはこんな感じです。
this
│
├[子クラス名]
││
│├m_xxx
││
138
名前:
デフォルトの名無しさん
:2005/07/07(木) 18:51:54
>>137
dynamic_cast
しかしあまりよくない。
139
名前:
デフォルトの名無しさん
:2005/07/07(木) 18:53:53
>>135-136
GetTextExtentPoint32()を繰り返し呼べばいいだろ。
140
名前:
デフォルトの名無しさん
:2005/07/08(金) 11:04:01
isual C++.net 2003 を勉強中の初心者です。Cで基板組込型の開発の経験は有りますが、
C++は、本を読んだだけで実際に使ったことは有りません。日経BPの「ひとめでわかる VisualC++.NET アプリケーション開発入門」という本を読んでいます。この本の7章の6(122ページ)に
int money
・
・
money.ToString
という、記述が出てくるのですが、これが理解できません。int型の変数であるmoneyにToStringというメッソド(メンバー)が、あるのですか?
それとも、このintはクラスなのでしょうか。とすると、どのような機能を使って、クラスにできるのか教えて下さい。
よろしくお願いします。
141
名前:
デフォルトの名無しさん
:2005/07/08(金) 11:53:21
>>140
それはC++ではないと思う。
142
名前:
デフォルトの名無しさん
:2005/07/08(金) 12:53:37
>>141
じゃ、何なのでしょう。
143
名前:
デフォルトの名無しさん
:2005/07/08(金) 13:07:02
>141
それはManegedC++
144
名前:
デフォルトの名無しさん
:2005/07/08(金) 13:39:21
>>143
すいません。ManegedC++ って、何ですか?
145
名前:
デフォルトの名無しさん
:2005/07/08(金) 13:46:36
>>144
C++とは別物です。
146
名前:
デフォルトの名無しさん
:2005/07/08(金) 15:03:06
>>145
VisualC++.netで開発して、動くのに、違うといわれても・・・。
147
名前:
デフォルトの名無しさん
:2005/07/08(金) 15:09:46
違うんだからしょうがないだろw
148
名前:
デフォルトの名無しさん
:2005/07/08(金) 15:46:05
>>146
VisualC++.netでCも開発できますが何か。
149
名前:
デフォルトの名無しさん
:2005/07/08(金) 16:24:35
ManegedC++=.NET FrameworkのAPIを使うC++。VB.NETとかそういうものの
仲間で、ネイティブコードのバイナリー実行形式を作れない。
動作させるには.NET Frameworkがインストールされている必要がある。
コンパイルして作れるのは中間コードと呼ばれるもので、クラックが容易。
ソースコードがほぼ完全に復元出来るので、あまり再配布されたがらない。
.NETアプリ普及を妨げている原因のひとつ?
起動する時にネイティブコードに変換したりセキュリティチェックを
行ったりするので実行速度が遅いと酷評されることが多いが、起動した後は
高速に動作させることが可能。
150
名前:
Man"a"ged
:2005/07/08(金) 16:32:28
さっきからManeged, Maneged言いおって!
151
名前:
デフォルトの名無しさん
:2005/07/08(金) 16:47:20
で、経験があるという割りには自分で調べることもできない困ったちゃんの
>140
はどこに逃げた?
152
名前:
デフォルトの名無しさん
:2005/07/08(金) 16:50:49
>>151
いますよ。おじさんは、仕事中でして。
いじめないでね。
皆さんよくわかりましたと言いたいのですが、さっぱりわからない。
でも、答えてくれてありがとうございました。
153
名前:
デフォルトの名無しさん
:2005/07/08(金) 19:12:55
こんばんわ
ダイアログリソースをつくり、クラスウィザードでダイアログクラスを作ったのですが、
再度、ダイアログリソースからクラスウィザードを立ち上げようとすると、
「新規リソースです」とダイアログを作るよう促されます。
そのダイアログリソースから作られたダイアログクラスはあるのに、
「新規ダイアログ」扱いをされ、再度ダイアログの生成を促されるのがわかりません。
VCはこの辺をどのファイル(設定ファイル)等で管理してるのでしょうか?
私個人で修正できるなら、直そうと思いますが。
ちなみに、VSSを使ってソース管理をしてまして、チェックインアウトをした後に起きるようです。
154
名前:
デフォルトの名無しさん
:2005/07/08(金) 19:42:07
*.aps、resource.h、*.rc、*.clw、*.opt、dlgxxx.cpp、dlgxxx.h
多分*.clwが原因だと思う。
155
名前:
153
:2005/07/08(金) 20:06:42
>>154
ご返答助かります。
clwファイルでした。
clwを消去して、再度生成したら直りました。
ありがとうございました。
156
名前:
デフォルトの名無しさん
:2005/07/09(土) 21:40:27
VC++を使い始めたばかりで右往左往している現状なのですが以下の点で悩んでいます。
コンパイルして実行し、「名前をつけて保存」を選択しても以下のイベントが呼び出されず
メッセージボックスが表示されないのですが、なぜ呼び出されないのでしょう?。
void CnvView::OnFileSaveAs()
{
// TODO : ここにコマンド ハンドラ コードを追加します。
MessageBox("aaa",0,MB_OK);
}
157
名前:
デフォルトの名無しさん
:2005/07/09(土) 22:11:27
>>156
俺んとこでは呼び出されるぞ。
メッセージマップに登録してないとかそんなオチじゃないだろうな?
158
名前:
デフォルトの名無しさん
:2005/07/09(土) 22:41:51
>>156
ClassWizzardが生成したコード(メッセージマップ関連)をいじくっただろ。
159
名前:
デフォルトの名無しさん
:2005/07/09(土) 22:49:50
MessageBoxを追加しただけなら絶対に動く
160
名前:
デフォルトの名無しさん
:2005/07/09(土) 23:10:41
>>158
ClassWizzardってなんですか?
161
名前:
156
:2005/07/09(土) 23:17:32
メッセージマップはClassWizzardが自動で生成してくれるのですよね?、でしたら弄っておりません。
プロパティのイベントにも載っておりますし、あちこちのCPPでも試してみましたが反応なし・・・。
CListViewで詳細表示も出来ない・・・。
SetExtendedStyle(LVS_REPORT)で詳細表示にならない。
私って馬鹿、馬鹿、馬鹿(ーー;)。
162
名前:
デフォルトの名無しさん
:2005/07/09(土) 23:47:38
ところで、CnvViewはなんのクラスだ
163
名前:
デフォルトの名無しさん
:2005/07/09(土) 23:50:54
CViewかその派生クラスから派生してないとかだったりして
164
名前:
デフォルトの名無しさん
:2005/07/10(日) 01:12:09
MFCのダイアログベースでプログラムを作成しています。
子ウィンドウにBMPを表示させたいのですがどうやればいいのか分かりません。
親ウィンドウに表示させる方法は、書籍を参考にしてどうにかできるのですが。
どなたか教えていただけないでしょうか。
165
名前:
デフォルトの名無しさん
:2005/07/10(日) 01:51:54
>>164
親ウィンドウと同じ方法でいいよ。
166
名前:
デフォルトの名無しさん
:2005/07/10(日) 10:54:25
ツリービューにMyDocumentの内容を取得するにはどうやればいいのでしょうか?
どなたかご教授ください。
お願いします。
167
名前:
デフォルトの名無しさん
:2005/07/10(日) 10:58:06
Visual C++ Ver.6 でMFC Appwizardを利用してダイアログベース
アプリケーションを作ろうとしています。
ダイアログ上に、エディットボックスを3つ作り、それぞれ
IDC_BOX1,IDC_BOX2,IDC_BOX3 という名前になっているのですが、
変数として m_hoge[0],m_hoge[1],m_hoge[2] と配列型にしたいのです。
IDC_BOX1にm_hogeを割り当てることはできるのですが、
m_hoge[0]もしくは m_hoge[1]を割り当てることができません。
複数のコントロールを一度に選択できるのかな、と思ったのですが、
1つずつしか指定できないようです(/_;)
hogehoge.h のダイアログの変数のところで
CString m_hoge[3]
とでてくるようにしたいのですけれど。。。。。
ClassWizard でメンバ変数に配列型変数を追加するとき、どういう手順で
やればいいのでしょうか?
よろしくお願いします。
168
名前:
デフォルトの名無しさん
:2005/07/10(日) 11:19:45
コントロール配列 ddx でぐぐったらそれらしきものは見つかるな
169
名前:
デフォルトの名無しさん
:2005/07/10(日) 12:08:42
>>166
MyDocumentの内容とは?
170
名前:
156
:2005/07/10(日) 12:44:58
[View.h]
public:
afx_msg void OnFileSave();
[View.cpp]
void CView::OnFileSave()
{
// TODO : ここにコマンド ハンドラ コードを追加します。
MessageBox("test",0,MB_OK);
}
通常はこれで上書き保存時に読び出されますよね?
171
名前:
デフォルトの名無しさん
:2005/07/10(日) 13:07:57
>>170
俺はわざわざ新規プロジェクト作って確認したらそれで呼ばれたけど、
お前は新規プロジェクト作って確認したのか?
172
名前:
デフォルトの名無しさん
:2005/07/10(日) 13:12:31
>>169
フォルダの内容をツリー表示したいのです。
ちょうどエクスプローラみたいに。
で、そこで選択したファイルの内容を別のビューにおくりたいわけです。
173
名前:
156
:2005/07/10(日) 13:58:55
>>171
もちろん、下手に弄ってる可能性も考えて新規プロジェクト作って確認しました。が・・・反応なし。
かなり間抜けな事をしているんだと思うのですが、それが何だかわからない-;。
174
名前:
156
:2005/07/10(日) 14:08:44
あれ、、前に作ったプロジェクトのものが急に動くようになってる。
これはこれで、また原因が何だったかわからない-;。
変更が上手く更新されてなかったのだろうか・・・。
お騒がせしましたm(_)m
次は、CListViewで起動直後から詳細で表示したいので頑張ります!。
175
名前:
デフォルトの名無しさん
:2005/07/10(日) 14:39:41
>>172
フォルダの内容を取得してツリービューアイテムに追加。
176
名前:
デフォルトの名無しさん
:2005/07/10(日) 18:53:09
CLeftView(CTreeView)で発生したイベントOnTvnSelchangedを異なるクラスの
CListViewに持ってゆく事は出来るのでしょうか?。
CTreeViewで選択された項目に従ってCListViewの内容を変更したいと考えて
おります。
それとも、theApp.ListType = "aaa";という受け渡しをするのが本当なのでしょうか?。
void CLeftView::OnTvnSelchanged(NMHDR *pNMHDR, LRESULT *pResult)
{
}
177
名前:
デフォルトの名無しさん
:2005/07/10(日) 19:28:02
ビューを更新
178
名前:
デフォルトの名無しさん
:2005/07/10(日) 22:17:39
>167
Class Wizzardで作る方法はないんじゃないのかな。
ソースの中で定義して使うよ。
CEdit* m_hoge[3];
m_hoge[0] = (CEdit*)GetDlgItem(IDC_BOX1);
m_hoge[1] = (CEdit*)GetDlgItem(IDC_BOX2);
m_hoge[2] = (CEdit*)GetDlgItem(IDC_BOX3);
以上
179
名前:
デフォルトの名無しさん
:2005/07/11(月) 08:20:36
>>167
ClassWizardではできないと思うので、
hogehoge.h
//{{AFX_DATA(CHogeDlg)
//}}AFX_DATA
CStringm_hoge[3];
hogehoge.cpp
//{{AFX_DATA_INIT(CHogeDlg)
//}}AFX_DATA_INIT
m_hoge[0] = _T("");
m_hoge[1] = _T("");
m_hoge[2] = _T("");
//{{AFX_DATA_MAP(CHogeDlg)
//}}AFX_DATA_MAP
DDX_Text(pDX, IDC_BOX1, m_hoge[0]);
DDX_Text(pDX, IDC_BOX2, m_hoge[1]);
DDX_Text(pDX, IDC_BOX3, m_hoge[2]);
注) 『//{{AFX〜』のコメントで挟まれた部分はClassWizardが使うため、
その外側(上下どちらでもいい)に追加
180
名前:
デフォルトの名無しさん
:2005/07/11(月) 16:56:00
CxxxView::OnFileSave()が実行されたい件に関してソースを眺めて色々考えて
みたのですが、つまりafx_msgは同じウインドウで発生したイベントにしか反応
しないと考えたら良いのでしょうか?。最初は全てのクラスに対してメッセージを
送信しているのだと考えていたのですが、CxxxDoc::OnFileSave()が呼ばれても
CxxxView::OnFileSave()が呼ばれないところをみると、そうとしか思えないのですが-;。
181
名前:
デフォルトの名無しさん
:2005/07/11(月) 17:17:33
そりゃ無理だ。
182
名前:
デフォルトの名無しさん
:2005/07/11(月) 17:24:29
送り先はどれか1つじゃないか?
ウイザードが作ったメンバ関数の中で
基底クラスの同じ関数呼んでたりするじゃん
183
名前:
180
:2005/07/11(月) 18:29:36
空プロジェクトを作り、CxxxViewのCPPで
プロパティ->イベント->ID_FILE_SAVE->COMMAND->OnFileSave()を追加
すれば最初はCxxxView::OnFileSave(){}が呼ばれると思っていたのですが
呼ばれないのであちこちでOnFileSave(){}を作ってみた所、
CxxxDoc::OnFileSave(){}だけが呼ばれている事がわかったのです。
もう、頭の中がぐちゃぐちゃに(~o~)。
>>182
>送り先はどれか1つじゃないか?。
送り先の指定は何処を見たら判るのでしょうか?。
それともOnFileSave()は1つしか作るべきではないという事でしょうか。
184
名前:
デフォルトの名無しさん
:2005/07/11(月) 18:45:06
>>183
きのうも言ったはず
CxxxView::OnFileSave()はちゃんと呼ばれる
すでに何度も複数の人間が確認済み
185
名前:
デフォルトの名無しさん
:2005/07/11(月) 18:52:14
>>183
Splitter使ってるとすれば、そのViewにフォーカスがあたってない可能性が。
あと、念のため聞いとくけど
BEGIN_MESSAGE_MAP〜END_MESSAGE_MAPの中に
ON_COMMAND(ID_FILE_SAVE_AS, OnFileSaveAs)は書かれてる?
>>送り先はどれか1つじゃないか?。
>送り先の指定は何処を見たら判るのでしょうか?。
送り先は一つじゃないよ。(語弊があるが)
MFCのメッセージディスパッチについては、ソース読めば分かるが
とりあえず「CCmdTarget」でgoogleれ
186
名前:
180
:2005/07/11(月) 19:29:55
>>185
185さんのおっしゃる通りでしたm(_)m。ありがとうございます。
Splitterを使用しており、アプリを起動してフォーカスを移してから「名前をつけて保存」すると
CxxxView::OnFileSaveAs()が実行されました。
「CCmdTarget」は今から勉強してきますε=ε=ε=ε=┏(; ̄▽ ̄)┛ 。
[xxxView.h]
public:
afx_msg void OnFileSave();
afx_msg void OnFileSaveAs();
[xxxView.cpp]
IMPLEMENT_DYNCREATE(CxxxView, CListView)
BEGIN_MESSAGE_MAP(CxxxView, CListView)
ON_COMMAND(ID_FILE_SAVE, OnFileSave)
ON_COMMAND(ID_FILE_SAVE_AS, OnFileSaveAs)
END_MESSAGE_MAP()
187
名前:
デフォルトの名無しさん
:2005/07/11(月) 20:23:05
モンテカルロシミュレーションで乱数を与えたいのですが
0から1までの乱数を与えるにはどうしたらよいのでしょうか?
188
名前:
デフォルトの名無しさん
:2005/07/11(月) 20:35:28
MFCはVSを買わないと使えないのは知っているのですが、
かならずVSでビルドやコンパイルをしないといけないのでしょうか?
Win32みたいにコマンドラインからコンパイルとかはできないのでしょうか?
189
名前:
デフォルトの名無しさん
:2005/07/11(月) 20:41:45
>>188
できる
190
名前:
デフォルトの名無しさん
:2005/07/11(月) 23:02:29
他スレで見かけた宣言に long long ていう型があったけど、
VCでこれを使うにはどうすればいいの?
(宣言型名が変わってもOK)
191
名前:
デフォルトの名無しさん
:2005/07/11(月) 23:03:43
__int64
192
名前:
デフォルトの名無しさん
:2005/07/11(月) 23:10:46
>>190
VC7か7.1からlong longはそのまま使える。
193
名前:
デフォルトの名無しさん
:2005/07/11(月) 23:15:02
表示の部分を下記に変更して、
printf("%lld ") -> printf("%I64d ")
>>191
これで上手くいった感じです。
どうもありがとう。
194
名前:
デフォルトの名無しさん
:2005/07/12(火) 00:01:22
VC6ではm_carray.GetCount()の返り値がintだったと思うのですが、
VC7では返り値がINT_PTRとなっており調べてみるとポインタの
ようなのですが、ここから配列の数を収得するにはどうしたら良い
のでしょうか?
195
名前:
デフォルトの名無しさん
:2005/07/12(火) 00:09:14
>>194
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdnw2ksrv/htm/AppSpecServ11.asp
196
名前:
デフォルトの名無しさん
:2005/07/12(火) 00:21:07
>>195
ありがとうございます。
エラーがズラズラ出て気持ち悪いので(int) m_carray.GetCount()としてみました。
はじめたばかりで正しいのか良く判りませんが^^;。
197
名前:
デフォルトの名無しさん
:2005/07/12(火) 08:07:51
おはようございます。
fp.WriteStringでの質問です。fp.WriteStringで一行書き込みを行おうとしているのですが、
m_list.GetAt(i) + "\n"を書き込もうとすると\nのみが書き込まれm_list.GetAt(i)の内容が
消えてしまうようです。これはどうしてなのでしょうか?。
m_list.GetAt(i)だけを書き込めば改行はされないもののm_list.GetAt(i)の内容は書き込まれ
るのですが、+"\n"を追加すると内容が消えてしまいます。
int c = (int) m_list.GetCount(),i = 0;
CString line;
CStdioFile fp("C:\\list.log",CFile::modeCreate|CFile::modeWrite);
for(i=0; i<c; i++){
//line = m_list.GetAt(i) + "\n";
line = m_list.GetAt(i) ;
fp.WriteString(line);
}
fp.Close();
198
名前:
デフォルトの名無しさん
:2005/07/12(火) 09:11:41
取り敢えず別々にWriteString()してみたら?
199
名前:
デフォルトの名無しさん
:2005/07/12(火) 09:39:51
CStdioFile::WriteString の解説みればすぐ解決
200
名前:
197
:2005/07/12(火) 10:07:40
VCは古い本しかないので細かい事が載ってなかったです^^;。
「オンラインMSDN引用」
文字列の終わりを示す NULL 文字 ('\0') は、ファイルには書き込みません。
この関数は NULL 文字で終わる文字列ではなく、バイト数を指定してファイルに書き込みます。
たぶん、この上記2件のどちらかだと思うのですが、WriteString(buf)でbufのサイズを自動計算
して書き込んでいるのだろうと思うのでバイト数は関係ないですよね。
だから、\0が含まれているという事なのでしょうか?。つまり、+"\n"を付加する事により\0が
含まれてしまうのかな・・・。
198さんのアドバイスの別々に挑戦してみます^^。
201
名前:
197
:2005/07/12(火) 10:11:09
WriteString()を別々にする事により上手く書き込めましたm(_)m。
でも、"\n"と\0の関係が良く判りません・・・・。
202
名前:
デフォルトの名無しさん
:2005/07/12(火) 10:28:13
はじめまして。質問してもよろしいでしょうか。
ラベルに、中国語の文字を入力したら一部の文字が「・」と
化けてしまいました。
これを正しく表示させるには、どうしたらいいのでしょうか?
中国語に対応させる必要があって、頭を悩ませています。
お分かりの方、ご教授いただけましたら幸いです。
203
名前:
デフォルトの名無しさん
:2005/07/12(火) 11:02:56
>>202
Unicode
204
名前:
198
:2005/07/12(火) 12:10:46
>>200
>199
は頓珍漢なことを言っていると思われ。
で、問題はWriteString()ではなく、m_list.GetAt(i)の方ではないかと。
今朝は資料がないから放置したが、今調べたらGetAt()が戻すものによっては
lineへの代入前に"\n"を足したのが拙いと思われ。
試しに、line = m_list.GetAt(i) + "\n"の後のlineの値をデバッガでも何でも使って
確認してみるといいと思う。
もしその状態でlineに思う文字列が入っていなければ、問題の行を
line = CString(m_list.GetAt(i)) + '\n'にしてみて再挑戦。
205
名前:
202
:2005/07/12(火) 14:14:51
>>203
UNICODEで入力する前に、コードエディタにコピーすると
文字が化けてしまうんです。
これは、開発環境を変えなきゃダメって事ですかね?
206
名前:
デフォルトの名無しさん
:2005/07/12(火) 14:25:40
MFCのソースにいろんな言語のリソーススクリプトがあるから
コンパイラは多言語に対応してるはず
207
名前:
197
:2005/07/12(火) 15:51:05
以下の2つの方法でlineを作ってMessageBox(line,0,MB_OK)としてみましたが、
どちらも空白(改行のみ)?の表示となりました。+"\n"または+'\n'とする事で
文字が消えてしまう所を考えるとGetAt()で収得した最後に\0などが追加され
その後に+"\n"などとしてしまうと文字列として扱えなくなるのではないでしょうか?。
デバッガの使い方も良く判らない低レベルな者なので間抜けな事をやっている
とは思うのですが報告します。
CString line = m_list.GetAt(i) + "\n"
CString line = m_list.GetAt(i) + '\n'
208
名前:
198
:2005/07/12(火) 16:00:00
>>207
少しは人が書いたことを理解してみよう。
GetAt()は何を返しているかが問題。CString(もしくはその類似型)を返しているのでなければ'\n'も"\n"も足せない。
なので、強制的にCStringに変換させるため、
>204
の最下行。
209
名前:
デフォルトの名無しさん
:2005/07/12(火) 16:15:49
すみませんが質問させてください。
プログラムのウィンドウ外の任意の座標の色を得るにはどうしたらいいんでしょうか。
210
名前:
デフォルトの名無しさん
:2005/07/12(火) 16:49:02
>>209
GetPixel,GetDC
>>207
ところでm_listの型は?197にも書いてないけど
>>205
開発環境は?202にも書いてないけど
国際化対応のサンプルは↓
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vcsample/html/vcoriInternationalSamples.asp
211
名前:
197
:2005/07/12(火) 17:12:04
>>204
,208,210
204>line = CString(m_list.GetAt(i)) + '\n'
208>GetAt()は何を返しているかが問題。CString(もしくはその類似型)を返しているのでなければ'\n'も"\n"も足せない。
あぁ、「CString(m_list.GetAt(i))」で型変換している事に気づきませんでした。
POPUPヘルプに、const CString & GetAt(INT_PTR nIndex)と表示されるのでCStringで良いのかと
思っていたのですが「もしくはその類似型」を返しているのですね。それで足せなかったんだ。
MessageBox(CString(m_user_list.GetAt(i))+"\n");とする事で内容の文字が表示されたので型の
変換を行う必要があったのだと納得しました。
>>210
CArrayです。
ありがとうございました。
212
名前:
デフォルトの名無しさん
:2005/07/12(火) 18:16:51
209
int x, y;//スクリーン座標
・・・
HDC hdc = GetDC( NULL );
COLORREF color = GetPixel(hdc, x, y );
213
名前:
デフォルトの名無しさん
:2005/07/12(火) 21:42:06
>>196
INT_PTRは紛らわしいが結局はintのtypedef。
214
名前:
202
:2005/07/13(水) 10:02:27
>>210
ごめんなさい。VisualStudio6.0、Win2K+SP4です。
ご返答いただき感謝します。
引き続きご教授いただけますでしょうか。
215
名前:
デフォルトの名無しさん
:2005/07/13(水) 13:07:36
>>214
UnicodeかMBCS
216
名前:
デフォルトの名無しさん
:2005/07/13(水) 13:25:46
質問です。ListViewで選択されているアイテムを消そうとしているのですが
以下の方法ではDeleteItemを行う度にnItemがシフトされるらしく上手く消す
事が出来ません。nItemの大きい方から消してゆけば良いのだとは思うので
すが他にスマートな方法はないのでしょうか?。
CListCtrl& ctrl = GetListCtrl();
int c = (int) ctrl.GetItemCount(),i = 0;
for(i=0; i<c; i++){
if (ctrl.GetItemState(i,LVIS_SELECTED) == LVIS_SELECTED){
ctrl.DeleteItem(i);
}
}
217
名前:
デフォルトの名無しさん&
◆LMRaV4nJQQ
:2005/07/13(水) 13:50:22
>>216
GetFirstSelectedItemPosition
GetNextSelectedItem
↑を使うのもありかと思われ
218
名前:
デフォルトの名無しさん
:2005/07/13(水) 15:35:46
どういうわけなのかD&Dでゲットしたパンチをm_StringArrayに追加して、
それをGetAt(i)したatにDelete(0,3)などを実行しても加工されないのですが、
これはどうしてなのでしょうか?。
D&Dされたpathを配列に追加したデータだけが無加工になってしまいます。
DragQueryFile(hDropInfo,i,n.GetBuffer(l+1),l+1);
m_StringArray.Add(n);
ctrl.InsertItem(i,m_StringArray.GetAt(i));
at = m_StringArray.GetAt(i);
at.Delete(0,3);
at = at.Mid(0,at.Find("\\",0));
ctrl.SetItemText(i,1,at);
219
名前:
デフォルトの名無しさん
:2005/07/13(水) 15:46:53
>>217
これだと上手く消えなかったです。
私が使い方を間違えているのかな・・・。
POSITION p = ctrl.GetFirstSelectedItemPosition();
int n;
while(p != NULL){
n = ctrl.GetNextSelectedItem(p);
ctrl.DeleteItem(n);
}
220
名前:
デフォルトの名無しさん
:2005/07/13(水) 16:04:21
>>219
POSITION p = ctrl.GetFirstSelectedItemPosition();
int n;
while(p){
n = ctrl.GetNextSelectedItem(p);
ctrl.DeleteItem(n);
p = ctrl.GetFirstSelectedItemPosition();
}
221
名前:
デフォルトの名無しさん
:2005/07/13(水) 16:43:10
>>220
こんな事をしていたのですが219さんのやり方を使わせて頂きますm(_)m。
int c = (int) ctrl.GetItemCount();
while(c != -1){
if (ctrl.GetItemState(c,LVIS_SELECTED) == LVIS_SELECTED){
ctrl.DeleteItem(c);
}
c--;
}
222
名前:
デフォルトの名無しさん
:2005/07/13(水) 19:01:31
>>214
MFC & ソースへUNICODE直書きでよければ・・・
(GetDlgItem(IDC_LABEL))->SetWindowText(_T("\u662F\u665A\u996D\u7684\u65F6\u95F4"));
223
名前:
デフォルトの名無しさん
:2005/07/14(木) 01:13:55
Visual C++で別ファイルのインクルードをしたいのですが、
インクルードファイルを開けませんとなってしまいます。
パスの設定などはどこですればいいのでしょうか?
224
名前:
デフォルトの名無しさん
:2005/07/14(木) 06:17:25
ソースと同じとこに置いとけば通るだろ
225
名前:
デフォルトの名無しさん
:2005/07/14(木) 07:47:49
>>223
・プロジェクトの設定でパスを指定する。
・ツール→オプションでパスを指定する。
・#Includeでフルパスor相対パスで指定する。
・ファイルの置き場所を変える
好きな方法で対応してくれ。
226
名前:
デフォルトの名無しさん
:2005/07/14(木) 09:31:21
ユーザー関数の返り値にCStringArrayを用いたいと考えているのですが、
以下の方法ではエラーになってしまいます。返り値にCStringArrayを用いる
事は出来ないのでしょうか?。
CStringArray CxxxView::UserKansuu(){
CStringArray dat;
return dat;
}
227
名前:
デフォルトの名無しさん
:2005/07/14(木) 09:46:07
>>226
悪いことは言わん。
std::vector<CString>を使っとけ。
話はそれからだ。
228
名前:
デフォルトの名無しさん
:2005/07/14(木) 10:26:36
>>226
コピーコンストラクタが無いから無理。
229
名前:
デフォルトの名無しさん
:2005/07/14(木) 10:44:24
>>227
,228
std::vector<CString>というのが解らなかったので以下のサイトを
眺めていたのですが、これはstd::vector<CString>とする事で配列と
等価の働きをするのですね。
でも使い方が今一つ解らないのでhファイルにCStringArray等を追加
してあくどく使おうかと妄想してたりします^^;。
ttp://www.fides.dti.ne.jp/~oka-t/vc-mfc.html
勉強になります。ありがとうございます。
230
名前:
デフォルトの名無しさん
:2005/07/14(木) 11:08:29
>>226
たとえstd::vector<CString>を使うとしてもローカルな実体を戻すのはどうかと。
231
名前:
デフォルトの名無しさん
:2005/07/14(木) 11:17:19
>>230
コピーされるから大丈夫。
232
名前:
デフォルトの名無しさん
:2005/07/14(木) 11:21:38
それはわかる。
だがわざわざ重くする必要はあるまい。
参照渡しで不都合が生じるのか?
233
名前:
デフォルトの名無しさん
:2005/07/14(木) 11:24:55
>>226
引数でCStringArrayの参照かポインタ受け取って返り値は成否とかもできる
そんなに使いたいのなら
234
名前:
226
:2005/07/14(木) 15:49:00
みなさん、色々考えていらっしゃいますね。(*..)φ)) メモメモ
文字列の分割をユーザー関数に処理させて返り値を配列で受けとろうと思い、
その時に返り値が配列だとありがたいなと思ったのですが、こういう場合は
みなさん、どうされているのでしょう?。
235
名前:
227
:2005/07/14(木) 16:11:29
>>234
だからstd::vector<CString>。
それを参照で渡すか戻り値で戻すかは兎も角。
236
名前:
デフォルトの名無しさん
:2005/07/14(木) 16:24:57
>>234
参照かポインタでユーザ関数に渡してるときの方が多いな
戻り値はエラーとかのフラグ用にとってる場合が多い
237
名前:
デフォルトの名無しさん
:2005/07/14(木) 17:05:18
>>230-232
今時はそのコピーをなくす最適化もしてくれる。
238
名前:
デフォルトの名無しさん
:2005/07/14(木) 17:32:06
>>226
そのViewクラスにCStringArrayのメンバ変数を作って
メンバ関数で書いてやればいいんじゃね
でもVCとあんまり関係ない話だな
239
名前:
デフォルトの名無しさん
:2005/07/14(木) 17:36:49
ノ 236に一票
240
名前:
239
:2005/07/14(木) 17:37:25
場合によっては238も有り
241
名前:
226
:2005/07/14(木) 18:13:35
今は238で行っているんですが、std::vector <CString>;の使い方が解らない。
Hファイル書いても、CPPファイルに書いてもstdメンバーでないとか怒られます(^^;。
何処かに詳しいサイトありませんでしょうか?。
242
名前:
デフォルトの名無しさん
:2005/07/14(木) 18:20:34
>>241
#include <vector>
243
名前:
デフォルトの名無しさん
:2005/07/14(木) 20:19:49
extern char*Err_Message[];
char*Err_Message[] = { "",
"ERR1:",
"ERR2:",
"ERR3:",
〜(省略) 〜
"ERRXXXX:"
};
という配列を作ったのですが、
この配列(Err_Message)のサイズを取得するにはどうすれば良いのでしょう?
244
名前:
デフォルトの名無しさん
:2005/07/14(木) 20:31:46
質問に割り込んで申し訳ありませんが、お聞きしたいことがあります。
report2.obj : error LNK2001: 外部シンボル "__imp__pthread_create" は未解決です
Debug/Robot.exe : fatal error LNK1120: 外部参照 1 が未解決です。
と言うエラーが出ており、ライブラリが不足しているのかリンクに抜けがあるということまではわかるのですが、後を王したら良いのかがわかりません。
設定→C/C++→コード生成でマルチスレッドに変更したのですがそれでもエラーが消えません。
初心者丸出しで申し訳ありませんがよろしくお願いします。
因みに言語はCです。
245
名前:
226
:2005/07/14(木) 20:32:40
以下のwhile(p){}の間でループに嵌ってしまうのですがどうしてなのでしょうか?。
原因となる部分がわからないのです。
void CxxxView::OnLButtonDblClk(UINT nFlags, CPoint point)
{
int c = ctrl.GetSelectedCount();
POSITION p = ctrl.GetFirstSelectedItemPosition();
int n;
while(p){
n = ctrl.GetNextSelectedItem(p);
//ctrl.SetItemText(n,2,a1);
p = ctrl.GetFirstSelectedItemPosition();
}
}
>>242
includeが必要なのですね^^;;。ありがとうございます。
246
名前:
デフォルトの名無しさん
:2005/07/14(木) 21:30:02
>>245
なんでループ中でGetFirstSelectedItemPosition呼んでんだよ
247
名前:
226
:2005/07/14(木) 21:50:09
>>246
あっ、本当だ。教えて貰ったのを削除用に使わせて頂いていたのですが他の所でも
使おうと思い、深く考えずにコピーして使っていました。ヾ(_ _。)ハンセイ…。
指摘、ありがとうございます。
248
名前:
デフォルトの名無しさん
:2005/07/14(木) 22:43:55
>>244
pthreadのライブラリをリンクしていないのが原因。
249
名前:
243
:2005/07/14(木) 22:44:23
書き忘れましたが、開発環境はVC++6.0です。
250
名前:
デフォルトの名無しさん
:2005/07/14(木) 22:45:54
ウィンドウプログラムを勉強中の初心者です
環境は VC++6.0、WINXP(HOME)、ペンティアムV800MHZです
ツールバーの作り方を勉強しているのですが
TBBUTTON tbb[]={{0, IDM_MARU, TBSTATE_ENABLED, BTNS_BUTTON}};
のようにTBBUTTON構造体のfsStylオプションを
BTNS_BUTTONやBTNS_SEPに指定してビルドすると、
「error C2065: 'BTNS_BUTTON':定義されていない識別子です」
とエラーが出てしまいます
プログラム自体は初歩本のサンプルそのままですので、設定の問題だと思うのですが
どのように設定すればよいか教えていただけませんか?
comct32.libをリンクせよ、と書いてあったので、
プロジェクトの設定>リンク>オブジェクト/ライブラリモジュールの最後に
comct32.libを書き加えましたがダメでした
comct32.dllはHDD内を検索した所8個あり
c\WINDOWS\system32にバージョン5.82が1つ
c\WINDOWS\WINDOWS\WinSxS\〜〜〜 に6.0が2つ
C\WINDOWS\SoftwareDistribution\Download に5.82が2つ、6.0に3つあります
インクルードは #include <windows.h> #include <commctrl.h> #include "resource.h" となっております
Platform SDK を
http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
からダウンロードしてみましたが、PSDK-amd64.exeとPSDK-ia64.exeは32ビット環境ではダメとメッセージが出たので
PSDK-x86.exeをダウンロード・インストールしましたがビルドできません
他の掲示板でも相談させてもらった所、
1・そこのPlatform SDKはVC++6.0ではダメ、
2・定義を読め
#if (_WIN32_IE >= 0x0500)
#define BTNS_BUTTON TBSTYLE_BUTTON // 0x0000
と、2つアドバイス頂きましたが、
代わりのどのSDKをダウンロードすればよいのか?2の定義とは?
と、色々調べてみましたが分かりませんでした
教えて頂けると助かります、宜しくお願いします
■過去ログ置き場に戻る■
1-
次250
最新50
DAT2HTML
0.33f Converted.