★初心者にVisual C++を教えるスレ★ Part20
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2005/07/01(金) 21:52:02Visual 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。
0002デフォルトの名無しさん
2005/07/01(金) 21:52:50Part19 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
0003デフォルトの名無しさん
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/
http://www.google.co.jp/
0004デフォルトの名無しさん
2005/07/01(金) 21:58:05part 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
0005デフォルトの名無しさん
2005/07/01(金) 21:59:320006デフォルトの名無しさん
2005/07/01(金) 22:04:39s : string;
begin
s := 'こんにちは'
end;
みたいな書き方を
C++は、できますか?
Cみたいに
*charしかないのでしょうか?
0007デフォルトの名無しさん
2005/07/01(金) 22:05:48C++Builderできいてきます
0008デフォルトの名無しさん
2005/07/01(金) 22:07:170009デフォルトの名無しさん
2005/07/01(金) 22:43:55簡単な数式くらいしか書けないしょぼい実力なので
なにから手をつけたらいいのかわかりません・・・
最終的には自動車丸ごと解析してやろうと考えています。
お勧めの書籍、サイト、プログラムなどアドバイスよろしくお願いします。
0010デフォルトの名無しさん
2005/07/01(金) 22:46:41スレ違い。
初心者向け言語スレもしくは書籍スレ、或いはこの辺。
http://pc8.2ch.net/test/read.cgi/tech/1118072681/
0011デフォルトの名無しさん
2005/07/02(土) 00:34:440012デフォルトの名無しさん
2005/07/02(土) 00:42:380013デフォルトの名無しさん
2005/07/02(土) 01:09:43で、出来る?
0014デフォルトの名無しさん
2005/07/02(土) 02:25:16#include <string>
int main(int argc,char *argv[])
{
std::string s;
s = "こんにちは";
return EXIT_SUCCESS;
}
じゃ気に入らんか?
もっともこれは2バイト文字を考慮していない。
001514
2005/07/02(土) 02:26:21#include <stdlib.h>すんの忘れてた。
0016デフォルトの名無しさん
2005/07/02(土) 08:07:36乙
0017デフォルトの名無しさん
2005/07/02(土) 11:32:10Win2000にNET. 2003をインストールした2台のパソコンどちらも、デバッグ実行すると、プログラムの実行
が開始せずに、固まってしまってタスクマネージャーからVCを終了するしかなくなるのはどういうことか。
会社では、Win2000にVC++6.0をインストールしたパソコンでデバッグ実行すると、同じ現象が発生すること
が多かったし。でも今は落ち着いてきて、特に対策をしたわけではなく、なぜかは分からないが、普通に実行
できるようになったが。
でも、NET.2003が依然としてデバッグ実行ができない。困ったもんだ。
デバッグなしで開始はできるが。
VCてぼろいんじゃないか?
0018デフォルトの名無しさん
2005/07/02(土) 11:45:080019デフォルトの名無しさん
2005/07/02(土) 11:59:50NET. 2003
NET. 2003
NET. 2003
NET. 2003
NET. 2003
.NET 2003だろ
0020デフォルトの名無しさん
2005/07/02(土) 12:08:590021デフォルトの名無しさん
2005/07/02(土) 15:08:48そういうゲームの作り方を解説しているサイトはないでしょうか?
0022デフォルトの名無しさん
2005/07/02(土) 15:15:00CTestView::CTestView()
: pMem(NULL)
{
}
と
CTestView::CTestView()
{
pMem = NULL;
}
ではどういう違いがあるのでしょうか?またどっちで記述するのがおすすめとか
ありますか?
あと
#include <stdio.h>
と
#include "stdio.h"
の違いはなんでしょうか?
0023デフォルトの名無しさん
2005/07/02(土) 15:37:41<>で指定した場合は開発環境で設定されたディレクトリからファイルを
探してインクルードするが""で指定した場合は、
カレントディレクトリからファイルを探し、無ければ開発環境で指定された
ディレクトリから探すようになる。
と言ってみる試験。
0024デフォルトの名無しさん
2005/07/02(土) 15:37:45pMem(NULL)は初期化、pMem = NULL;は代入。
pMemの型が何だか知らんが、クラスとかだとかなり意味が違う。
< >と" "の違いは、どこを最初に探しに行くかの違い。
002522
2005/07/02(土) 15:47:09pMem は CTestView のメンバで
u_char* pMem;
と宣言してます。なんか不定値入ってたら困るので生成されるときに
初期化しようとしてるんですが、いままでは
pMem = NULL;
でやってたんですが、VCで「メンバの追加」を選んだら
: pMem(NULL)
がソースに書き込まれたので気になって質問してみました。
0026デフォルトの名無しさん
2005/07/02(土) 16:58:39pMem(NULL)とpMem=NULLは実行されるタイミングが本質的に違う。
この場合はポインタのようだから実質問題ないが、
これがクラスになると大問題になる。
その辺の違いはわかるかな?
メンバ変数&コンストラクタで調べると吉。
0028デフォルトの名無しさん
2005/07/02(土) 18:29:04csvファイルで保存する方法が全く分かりません。
どなたかプログラムとか、やり方を教えてください・・・
0029デフォルトの名無しさん
2005/07/02(土) 18:30:44RGBからHSVは調べれば式がみつかるかと
0030デフォルトの名無しさん
2005/07/02(土) 18:32:10http://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かなんかで出力しろ。
宿題なら宿題スレがある。
0031デフォルトの名無しさん
2005/07/02(土) 19:24:24のだから、本当にぼろいな。OSの本家のメーカーの製品だからといって、VCを選択す
るのが多いんだろうな。
0032デフォルトの名無しさん
2005/07/02(土) 19:33:52=>>17か?
粘着するなら他所へ行け。
0033デフォルトの名無しさん
2005/07/03(日) 00:16:56黙れ、野郎。
0034デフォルトの名無しさん
2005/07/03(日) 00:43:50あなたのぼろいPCと一緒に。
0035デフォルトの名無しさん
2005/07/03(日) 01:38:52setbuddy という関数を使ってみたのですが、
これを使うと、余計なお世話で勝手にコントロールの配置が変えられてしまい
(エディットボックスとスライダーが横に並べられてしまう)
レイアウトが崩れてしまいました。
スピンボックスの時はエディットボックスにくっつけるかどうか
任意に選べたのですが、スライダーの時も何か方法があるのでしょうか?
0036デフォルトの名無しさん
2005/07/03(日) 05:48:37黙るとか言いながら、余計なことを書くな。
お前こそ別の所に行け。
0037デフォルトの名無しさん
2005/07/03(日) 06:46:280038デフォルトの名無しさん
2005/07/03(日) 14:32:15ビルドしたところ、以下のメッセージが出てしまいました。
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ランタイムライブラリ関数(?)関連のものは
みな外部シンボルが未解決と出るんですが…何か参照設定が足りないのでしょうか?
ご教授いただければ思います。
0039デフォルトの名無しさん
2005/07/03(日) 15:04:23完全にスルーしましょう。よい子は>>36にレスしちゃだめですよ。
自分がぼろいことに気が付いていないのですから。
黄色い救急車マダー?
0040デフォルトの名無しさん
2005/07/03(日) 15:23:14できそうなのにね?
0041デフォルトの名無しさん
2005/07/03(日) 16:13:240042ペー&(且つ)&パー
2005/07/03(日) 16:17:00最初のほうに #include "stdio.h" といれてますか?
fgets の宣言はそこにあります。 #include でファイルを取り込んでます。
C にしろ、Win32API にしろ ver. の違いでは動かなくないと思うです
C はサンプル読めるけど書かないじんなので、間違いならごめんなサイ
どうでもいいけど、break いらないです。
sample をよく眺めて1つずつ意味(流れ)を理解したほうがよいのでは。
ところが、その質問マルチってやつです?
0043デフォルトの名無しさん
2005/07/03(日) 16:58:08リンクするようにしている。/MDとかなんとかそういうの。
開発環境で設定しる。
ところでストリームがオープンされてないようだが、
省略しただけ?
0044デフォルトの名無しさん
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に達した
}
}
0045デフォルトの名無しさん
2005/07/03(日) 17:31:31Cの変数宣言で
char *a[5] = {"a","bc","def","gh","ijk"};
とよく書くんですが、
これをC++でクラスのメンバ変数に持たせたいの
ですよ。なにかいい方法あります?
0046マルチすみませんでした
2005/07/03(日) 17:54:41> 間違ってマルチスレッド/シングルスレッド用ライブラリを
> リンクするようにしている。/MDとかなんとかそういうの
cppファイルのプロパティの[C/C++]-[コード生成]-[ランタイムライブラリ]
には[マルチスレッドデバッグ(/MTd)]が設定されていました。
もしやこれがいけないんでしょうか?
0047デフォルトの名無しさん
2005/07/03(日) 17:59:39今のC++では非静的メンバが配列のときに初期化するのは無理で、コンストラクタで代入するしかない。
004845
2005/07/03(日) 18:23:06地道にですね・・・。
実はCで作ったプログラムをC++の勉強がてらに
クラスで作り直していました。
元々がCプログラムの為、設計がまずいのかとも
思いましたが。。。
>今のC++では
今後に期待ですかね
0049デフォルトの名無しさん
2005/07/03(日) 18:57:21コンストラクタで、ローカルな配列からコピーすればいい。
例えば、
class foo {
char **array;
unsigned NofArray;
foo();
};
foo:foo()
{
char *s[] = {"a", "bc", "def", "gh", "ijk",};
array = s;
NofArray = sizeof(s) / sizeof(*s);
}
とすればほぼことは足りるだろ?
0050デフォルトの名無しさん
2005/07/03(日) 19:12:09> array = s;
……
0051デフォルトの名無しさん
2005/07/03(日) 19:37:56、、、難易度高いな、4つしかわからん。
0052デフォルトの名無しさん
2005/07/03(日) 19:47:42プロジェクトの種類でフォームアプリケーションというのは、
.net frameworkを使ったプログラミングと考えてよいのでしょうか?
現状で、W32API, MFCなどのどれが普及、奨励されますか?
005345
2005/07/03(日) 20:00:42外れているかもだけど、追加で教えて下さい。
sの領域はコンストラクタから出た時に開放されますよね。
"a", "bc", "def", "gh", "ijk"はいつ開放されるんですか?
0054デフォルトの名無しさん
2005/07/03(日) 20:19:40プログラムが終了する直前
0055デフォルトの名無しさん
2005/07/03(日) 20:25:39そもそも、●●libをリンクしましたとかせにゃならんのが信じられん。
VisualStudioなら、ヘッダはインクルードせにゃならんが、リンクライブラリ自体はデフォルトで設定されてるのに・・・
0056& ◆u9Q9Vrla1w
2005/07/03(日) 20:52:32参照設定のmscorlibって
VisualStudio.NETなら一般的にデフォルトで設定されているものなんですか。
根本的にC++のつくりかたを自分は間違えているのでしょうか…。
#using <mscorlib.dll>もコードの先頭に当然必要ですよね?
それと質問なんですがmscorlibって何のために設定しているんですか?
自分は「System.〜のさまざまなメソッドを使用可能にするため」
と解釈してるんですけど…。
fgetsとかはstdio.hなどのヘッダファイル内に定義されてる、
だからincludeしなくちゃだめだよ、ということですよね?
005745
2005/07/03(日) 20:56:26staticにしないと関数抜けた時に
開放されると思うのは勘違い???
ためしてみたけど、関数抜けて開放されてた。
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]);
}
0058デフォルトの名無しさん
2005/07/03(日) 21:03:58上の文字列の先頭アドレスが格納されたポインタ配列char* s[]は、>>57だとpoiから抜けた後は無効。
この場合、ポインタ配列の中身(文字列の先頭アドレス)をコピーしてしまえば
sが破棄されても大丈夫。
0059.NETなんてしらん
2005/07/03(日) 21:50:200060ペー&(且つ)&パー
2005/07/03(日) 21:55:07ええ、きっとそうです。
プロジェクトを作成して、右にある
ソリューションエクスプローラの 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 でよいので。
006145
2005/07/03(日) 22:06:42理論はなんとなくわかるんですが、
実装がわかりません。
色々試してるんですがうまくいかないっす。
0062デフォルトの名無しさん
2005/07/03(日) 22:13:13class foo (
// ...
public:
foo();
// ...
};
foo::foo()
{
static char * s[] = {...};
array = s;
NofArray = sizeof(s) / sizeof(*s);
}
006341
2005/07/03(日) 22:18:36>.NetFramework のSystem 名前空間のメンバを使うなら
>using namespace System でよいので。
確かに記述しなくてもエラーになりませんね。
参照設定さえしておけばいいってことでしょうか、
> cppファイルのプロパティの[C/C++]-[コード生成]-[ランタイムライブラリ]
>には[マルチスレッドデバッグ(/MTd)]が設定されていました。
>もしやこれがいけないんでしょうか?
そうすると、あとはこれでしょうか…?
それとも、fgetsとかatoiとかC言語ランタイム関数使用する場合、
.NETでは何かincludeしないとだめなんでしょうか?
stdio.hとかその他ヘッダファイルは当然インクルードしてるんですが
ちなみにVisualStudio6.0だとコンパイルとおっちゃうんですよね…
0064デフォルトの名無しさん
2005/07/03(日) 22:25:26006545
2005/07/03(日) 23:26:11staticってこと????
0066ペー&(且つ)&パー
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せん。
006745
2005/07/03(日) 23:43:00すみません。間違いです。
63じゃなくて62でした。
0068デフォルトの名無しさん
2005/07/04(月) 00:42:38staticな配列はどこにあろうと(関数内だろうと関数外だろうと)生存期間はプログラムそのものと同じ。
0069デフォルトの名無しさん
2005/07/04(月) 15:25:39結果自体は同じような気がするのですが。。。
0070デフォルトの名無しさん
2005/07/04(月) 16:32:190071デフォルトの名無しさん
2005/07/04(月) 16:42:07strcpyはCの標準ライブラリ関数、どこでも使える
lstrcpyはWin32API
0072デフォルトの名無しさん
2005/07/04(月) 18:36:13正常に動かない場合があるらしい。
0073デフォルトの名無しさん
2005/07/04(月) 18:42:30根拠は?
つーか、「容量が重い」とは?
0074デフォルトの名無しさん
2005/07/04(月) 18:43:070075デフォルトの名無しさん
2005/07/04(月) 18:51:290076デフォルトの名無しさん
2005/07/04(月) 19:09:060077デフォルトの名無しさん
2005/07/04(月) 19:09:12#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側にテンプレートを使わない関数を書いても普通に通ります。
0078デフォルトの名無しさん
2005/07/04(月) 19:13:53E.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を参照したいのです)
}
007977
2005/07/04(月) 19:15:04環境はVC++6.0です。
それから、aaa.cppをmain.cppのプロジェクトへの追加もちゃんとしました。
0080デフォルトの名無しさん
2005/07/04(月) 19:32:060081デフォルトの名無しさん
2005/07/04(月) 20:06:30Fが引数を取ればいいだけじゃないか。
D.xだけが必要ならintで、D全体が必要ならconst D&を。
0082デフォルトの名無しさん
2005/07/04(月) 20:07:24テンプレートはヘッダに書くか、明示的実体化をする必要がある。
ヘッダに書く方が一般的。
008377
2005/07/04(月) 20:37:25ヘッダに書いたらOKでした
ありがとうございました
0084デフォルトの名無しさん
2005/07/04(月) 20:43:14strcpyはchar*のコピーに使う
_tcscpyとlstrcpyはTCHAR*のコピーに使う
UNICODEを定義していなければTCHAR*はchar*と同じ。
_tcscpyとlstrcpyの違いは、後者がWindows APIで、前者がCランタイムであること。
0085デフォルトの名無しさん
2005/07/04(月) 20:57:55ix = m_ix; //m_ixはエディットボックスのメンバ変数
こんな感じでエディットボックスの数値を取得しようとしたんですが、
エディットボックスの値が数値以外や空白の場合、固まってしまいます。
デバックモードで見たところ、UpdateData(TRUE);で止まっているようなのですが、
どうすればよいのでしょう?
環境はVC++6.0です。
0086デフォルトの名無しさん
2005/07/04(月) 21:54:13>>71,74-75
0087デフォルトの名無しさん
2005/07/04(月) 22:02:18>>84に述べた程度に正確な情報がかかれていなかったので、
敢えて書いておいたんだが
0088デフォルトの名無しさん
2005/07/05(火) 00:38:34CStringで受け取り数値に変換
またはDDV
008978
2005/07/05(火) 01:07:23引数をとるって具体的にどう書くんですか?
A.cppでFを使うならF(D.x)でいいのはわかりますが
A.cpp以外のcppファイルでもFを使いたいのです。
0090デフォルトの名無しさん
2005/07/05(火) 07:31:50staticなメンバ変数を作ればよい。
class Sample{
static char *a[];
};
char *Sample::a[] = {"a","bc","def","gh","ijk};
0091デフォルトの名無しさん
2005/07/05(火) 09:40:39GdiPlusEnums.hでエラーが7つ出るんです・・・
何が原因かわかりません。なぜなんでしょう?
0092初心者
2005/07/05(火) 14:24:02数値がうまく表示できません。
例えば エディットボックス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に表示
というのを作っています。
0093デフォルトの名無しさん
2005/07/05(火) 14:43:41reinterpret_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);
0094初心者
2005/07/05(火) 15:28:13ありがとうございました!
また質問があったらよろしくお願いします☆
0096デフォルトの名無しさん
2005/07/05(火) 16:05:48エラー内容くらい書けよ
VCのバージョンも
0097初心者
2005/07/05(火) 17:34:06エディットボックスを使っての
ファイルの入出力は可能でしょうか?
例えば
C言語のfopenのようなものを使う感じで。
エディットボックス1にsample1.txt
エディットボックス2にsample2.txt
二つのファイルを開いて処理を行う場合などはどうしたらいいでしょうか?
ちなみにVisual C++ バージョンは6.0です
CFile CStdioFile などを使うのでしょうか?
0098デフォルトの名無しさん
2005/07/05(火) 17:57:47エディットボックスがCStringと関連付けてあるならあとはCFileとCStringのやりとりだけ
0099初心者
2005/07/05(火) 18:16:20初心者なもので色々わからない事だらけで
簡単なことも聞いてしまい申し訳ありません。
0100デフォルトの名無しさん
2005/07/05(火) 22:05:36stdafx.hで#define WIN32_LEAN_AND_MEANを定義していたら消す。
0101デフォルトの名無しさん
2005/07/06(水) 06:21:10コードの左側に付く「+」とか「-」の定義を折りたためる
やつ(名前がわかりません)を消すことはできないのでしょうか?
ご存知の方、ご教示おねがいします。
0102初心者
2005/07/06(水) 11:46:11char crlf[]="\x0d|x0a";
こんな宣言がありましたがこれはどういった意味なのでしょうか?
簡単なことかもしれませんがすいません。
0103デフォルトの名無しさん
2005/07/06(水) 12:08:41それが、
char crlf[] = "\x0d\x0a";
ならば、
char crlf[] = "\r\n";
と等価だ。
そしてそれは、宣言ではなく定義だ。
0104デフォルトの名無しさん
2005/07/06(水) 14:46:380105デフォルトの名無しさん
2005/07/06(水) 14:47:420106デフォルトの名無しさん
2005/07/06(水) 15:32:030107デフォルトの名無しさん
2005/07/06(水) 16:11:130108デフォルトの名無しさん
2005/07/06(水) 17:14:59stdafx.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は定義されていませんでした。
010991
2005/07/06(水) 17:15:580110デフォルトの名無しさん
2005/07/06(水) 17:18:05じゃあgdiplus.hより先にwindows.hをインクルードしている?
011191
2005/07/06(水) 17:32:14とりあえずstdafx.hにはありませんでした。
gdiplus.hは#pragma onceの後にインクルードしています。
場所が悪いんでしょうか?
stdafx.hのほうがいいってどこかで聞いたんですが・・
0112デフォルトの名無しさん
2005/07/06(水) 17:36:01gdiplus.hはwindows.hがインクルードされていることを前提にしている。
011391
2005/07/06(水) 18:20:33この上ら辺のがwindows.hなんですかね
ありがとうございます、助かりました!
0114デフォルトの名無しさん
2005/07/06(水) 18:33:22それも理解しないで作ろうと言うのか・・・
若いとは恐ろしいものだ・・・
0115デフォルトの名無しさん
2005/07/06(水) 20:55:22逆の処理を行うAPIは存在しないのでしょうか?
例:C:\Windows\System32 -> %windir%System32
0116デフォルトの名無しさん
2005/07/06(水) 21:14:35HOGE=C:\Windows\System32
なんて環境変数も定義されてたらどっちに変換していいかわからなくなるだろ
0117デフォルトの名無しさん
2005/07/06(水) 21:25:54class Question {
Hoge* fuga[100];
public:
virtual void print();
virtual void set( Hoge* pfuga, int num ) {
fuga[num] = pfuga;
}
};
void Question::print() {
// なんらかの処理
}
こんな感じで、全てのメソッドに virtual が付いているようなソースコード
を見た記憶があります。 virtual の意味は理解しているつもりだけど、この
意図がイマイチ理解できません。これって意味ないっすよね??
自分は別につける必要はないと思ってるんですが。
0118デフォルトの名無しさん
2005/07/06(水) 21:28:46継承&ポリモーフィズムするつもりなら意味がある
0119デフォルトの名無しさん
2005/07/06(水) 21:36:56全てに付けるような真似をしても、何らメリットはないと言うわけですね(´∀`)
ありがとうございました
0120115
2005/07/06(水) 21:45:42ご尤も。
CStringクラスのReplace()関数などで自分で環境変数文字列に置換するしかないですかね。
くだらない質問をしてしまってごめんなさい。
ありがとうございました。
0121デフォルトの名無しさん
2005/07/06(水) 21:55:49CListViewクラスを利用して、「開く」メニューで選択したフォルダの内容を
表示したいのですが、どのようにしたらようのでしょうか?
最終的には、リスト内で選択されたファイルを他のビューで表示することに使いたいんです。
簡単な画像ビューア(Windows画像とFAXビューア的なアプリケーション)を作ろうと四苦八苦しています。
参考サイトなど、オススメがあれば教えてください。
お願いします。
0122デフォルトの名無しさん
2005/07/06(水) 22:49:15フォルダの内容を取得して、リストアイテムを追加する。
0123デフォルトの名無しさん
2005/07/06(水) 22:52:34if (NULL == (fi2=fopen("Results.xls","w")))
{
printf("\7\n Cannot Make File : Results.xls\n");
exit(1);
}
とやって書いてるループを回して他の場所で毎回ファイルに書き出しているのだけれども
508回目に必ずifの仲に入ってしまいます.何か原因わかりますか?
ちゃんとクローズしたりています
stepoutでみてもpfpirnt("でif文の中に入ってhい
中断されちゃうんだけど原因わかる比問いますか・
0124デフォルトの名無しさん
2005/07/06(水) 23:23:14プログラムより前に日本語を直そう
0125デフォルトの名無しさん
2005/07/06(水) 23:50:27もうすこし、なんというか・・・詳しく・・・。
0126デフォルトの名無しさん
2005/07/07(木) 00:05:44CFileFindでファイル列挙。
リストアイテムを追加はMSDN見ればわかるだろ。
0127デフォルトの名無しさん
2005/07/07(木) 00:09:06おお、なんかわかりそうな予感。
ありがとうございます。
0128デフォルトの名無しさん
2005/07/07(木) 12:32:01コードを晒すなら、ファイルI/Oを行っている部分全部さらせ。
エラーになったのならエラー番号ぐらい見ろ。errnoだっけ?
#実はファイルを閉じていないだけな予感
0129初心者
2005/07/07(木) 16:29:43reinterpret_castではcharからintへの変換は可能かと思いますが
charからfloatまたはdoubleに変換したい場合は
何を用いればいいでしょうか?
よろしくお願いします。
0130初心者
2005/07/07(木) 16:37:37解決しました。
0131初心者
2005/07/07(木) 16:44:25解決しました。
0132初心者
2005/07/07(木) 16:54:00は偽物です。何卒よろしくお願いします。
0133デフォルトの名無しさん
2005/07/07(木) 17:26:22基本的にキャストって使わないほうがいいと思う。
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 );
0134デフォルトの名無しさん
2005/07/07(木) 17:32:440135デフォルトの名無しさん
2005/07/07(木) 17:42:26やりたい事は、Windowsのテキストエリアコントロールみたいなのを自作する事なのですが、
プロポーショナルフォントを使った場合、
キャレットの位置の計算だとか、マウスカーソルが触ってるのが何文字目であるかとか、
そういったことを実現するにはどうしたらよいでしょうか。
文字のドット数を得る関数なんて、、ないですよね?
0136デフォルトの名無しさん
2005/07/07(木) 18:04:36と思ったら GetTextExtentPointI ってのもあるぞ
今仕事中だから自分で調べてくれ
0137デフォルトの名無しさん
2005/07/07(木) 18:43:03サブクラスのポインタが参照できるのですが、これってプログラムで参照する場合は、
どうしたらいいのでしょうか?
ウォッチウィンドウはこんな感じです。
this
│
├[子クラス名]
││
│├m_xxx
││
0138デフォルトの名無しさん
2005/07/07(木) 18:51:54dynamic_cast
しかしあまりよくない。
0139デフォルトの名無しさん
2005/07/07(木) 18:53:53GetTextExtentPoint32()を繰り返し呼べばいいだろ。
0140デフォルトの名無しさん
2005/07/08(金) 11:04:01C++は、本を読んだだけで実際に使ったことは有りません。日経BPの「ひとめでわかる VisualC++.NET アプリケーション開発入門」という本を読んでいます。この本の7章の6(122ページ)に
int money
・
・
money.ToString
という、記述が出てくるのですが、これが理解できません。int型の変数であるmoneyにToStringというメッソド(メンバー)が、あるのですか?
それとも、このintはクラスなのでしょうか。とすると、どのような機能を使って、クラスにできるのか教えて下さい。
よろしくお願いします。
0141デフォルトの名無しさん
2005/07/08(金) 11:53:21それはC++ではないと思う。
0142デフォルトの名無しさん
2005/07/08(金) 12:53:37じゃ、何なのでしょう。
0143デフォルトの名無しさん
2005/07/08(金) 13:07:02それはManegedC++
0144デフォルトの名無しさん
2005/07/08(金) 13:39:21すいません。ManegedC++ って、何ですか?
0145デフォルトの名無しさん
2005/07/08(金) 13:46:36C++とは別物です。
0146デフォルトの名無しさん
2005/07/08(金) 15:03:06VisualC++.netで開発して、動くのに、違うといわれても・・・。
0147デフォルトの名無しさん
2005/07/08(金) 15:09:460148デフォルトの名無しさん
2005/07/08(金) 15:46:05VisualC++.netでCも開発できますが何か。
0149デフォルトの名無しさん
2005/07/08(金) 16:24:35仲間で、ネイティブコードのバイナリー実行形式を作れない。
動作させるには.NET Frameworkがインストールされている必要がある。
コンパイルして作れるのは中間コードと呼ばれるもので、クラックが容易。
ソースコードがほぼ完全に復元出来るので、あまり再配布されたがらない。
.NETアプリ普及を妨げている原因のひとつ?
起動する時にネイティブコードに変換したりセキュリティチェックを
行ったりするので実行速度が遅いと酷評されることが多いが、起動した後は
高速に動作させることが可能。
0150Man"a"ged
2005/07/08(金) 16:32:280151デフォルトの名無しさん
2005/07/08(金) 16:47:200152デフォルトの名無しさん
2005/07/08(金) 16:50:49いますよ。おじさんは、仕事中でして。
いじめないでね。
皆さんよくわかりましたと言いたいのですが、さっぱりわからない。
でも、答えてくれてありがとうございました。
0153デフォルトの名無しさん
2005/07/08(金) 19:12:55ダイアログリソースをつくり、クラスウィザードでダイアログクラスを作ったのですが、
再度、ダイアログリソースからクラスウィザードを立ち上げようとすると、
「新規リソースです」とダイアログを作るよう促されます。
そのダイアログリソースから作られたダイアログクラスはあるのに、
「新規ダイアログ」扱いをされ、再度ダイアログの生成を促されるのがわかりません。
VCはこの辺をどのファイル(設定ファイル)等で管理してるのでしょうか?
私個人で修正できるなら、直そうと思いますが。
ちなみに、VSSを使ってソース管理をしてまして、チェックインアウトをした後に起きるようです。
0154デフォルトの名無しさん
2005/07/08(金) 19:42:07多分*.clwが原因だと思う。
0156デフォルトの名無しさん
2005/07/09(土) 21:40:27コンパイルして実行し、「名前をつけて保存」を選択しても以下のイベントが呼び出されず
メッセージボックスが表示されないのですが、なぜ呼び出されないのでしょう?。
void CnvView::OnFileSaveAs()
{
// TODO : ここにコマンド ハンドラ コードを追加します。
MessageBox("aaa",0,MB_OK);
}
0157デフォルトの名無しさん
2005/07/09(土) 22:11:27俺んとこでは呼び出されるぞ。
メッセージマップに登録してないとかそんなオチじゃないだろうな?
0158デフォルトの名無しさん
2005/07/09(土) 22:41:51ClassWizzardが生成したコード(メッセージマップ関連)をいじくっただろ。
0159デフォルトの名無しさん
2005/07/09(土) 22:49:500160デフォルトの名無しさん
2005/07/09(土) 23:10:41ClassWizzardってなんですか?
0161156
2005/07/09(土) 23:17:32プロパティのイベントにも載っておりますし、あちこちのCPPでも試してみましたが反応なし・・・。
CListViewで詳細表示も出来ない・・・。
SetExtendedStyle(LVS_REPORT)で詳細表示にならない。
私って馬鹿、馬鹿、馬鹿(ーー;)。
0162デフォルトの名無しさん
2005/07/09(土) 23:47:380163デフォルトの名無しさん
2005/07/09(土) 23:50:540164デフォルトの名無しさん
2005/07/10(日) 01:12:09子ウィンドウにBMPを表示させたいのですがどうやればいいのか分かりません。
親ウィンドウに表示させる方法は、書籍を参考にしてどうにかできるのですが。
どなたか教えていただけないでしょうか。
0165デフォルトの名無しさん
2005/07/10(日) 01:51:54親ウィンドウと同じ方法でいいよ。
0166デフォルトの名無しさん
2005/07/10(日) 10:54:25どなたかご教授ください。
お願いします。
0167デフォルトの名無しさん
2005/07/10(日) 10:58:06アプリケーションを作ろうとしています。
ダイアログ上に、エディットボックスを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 でメンバ変数に配列型変数を追加するとき、どういう手順で
やればいいのでしょうか?
よろしくお願いします。
0168デフォルトの名無しさん
2005/07/10(日) 11:19:450169デフォルトの名無しさん
2005/07/10(日) 12:08:42MyDocumentの内容とは?
0170156
2005/07/10(日) 12:44:58public:
afx_msg void OnFileSave();
[View.cpp]
void CView::OnFileSave()
{
// TODO : ここにコマンド ハンドラ コードを追加します。
MessageBox("test",0,MB_OK);
}
通常はこれで上書き保存時に読び出されますよね?
0171デフォルトの名無しさん
2005/07/10(日) 13:07:57俺はわざわざ新規プロジェクト作って確認したらそれで呼ばれたけど、
お前は新規プロジェクト作って確認したのか?
0172デフォルトの名無しさん
2005/07/10(日) 13:12:31フォルダの内容をツリー表示したいのです。
ちょうどエクスプローラみたいに。
で、そこで選択したファイルの内容を別のビューにおくりたいわけです。
0173156
2005/07/10(日) 13:58:55もちろん、下手に弄ってる可能性も考えて新規プロジェクト作って確認しました。が・・・反応なし。
かなり間抜けな事をしているんだと思うのですが、それが何だかわからない-;。
0174156
2005/07/10(日) 14:08:44これはこれで、また原因が何だったかわからない-;。
変更が上手く更新されてなかったのだろうか・・・。
お騒がせしましたm(_)m
次は、CListViewで起動直後から詳細で表示したいので頑張ります!。
0175デフォルトの名無しさん
2005/07/10(日) 14:39:41フォルダの内容を取得してツリービューアイテムに追加。
0176デフォルトの名無しさん
2005/07/10(日) 18:53:09CListViewに持ってゆく事は出来るのでしょうか?。
CTreeViewで選択された項目に従ってCListViewの内容を変更したいと考えて
おります。
それとも、theApp.ListType = "aaa";という受け渡しをするのが本当なのでしょうか?。
void CLeftView::OnTvnSelchanged(NMHDR *pNMHDR, LRESULT *pResult)
{
}
0177デフォルトの名無しさん
2005/07/10(日) 19:28:020178デフォルトの名無しさん
2005/07/10(日) 22:17:39Class 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);
以上
0179デフォルトの名無しさん
2005/07/11(月) 08:20:36ClassWizardではできないと思うので、
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が使うため、
その外側(上下どちらでもいい)に追加
0180デフォルトの名無しさん
2005/07/11(月) 16:56:00みたのですが、つまりafx_msgは同じウインドウで発生したイベントにしか反応
しないと考えたら良いのでしょうか?。最初は全てのクラスに対してメッセージを
送信しているのだと考えていたのですが、CxxxDoc::OnFileSave()が呼ばれても
CxxxView::OnFileSave()が呼ばれないところをみると、そうとしか思えないのですが-;。
0181デフォルトの名無しさん
2005/07/11(月) 17:17:330182デフォルトの名無しさん
2005/07/11(月) 17:24:29ウイザードが作ったメンバ関数の中で
基底クラスの同じ関数呼んでたりするじゃん
0183180
2005/07/11(月) 18:29:36プロパティ->イベント->ID_FILE_SAVE->COMMAND->OnFileSave()を追加
すれば最初はCxxxView::OnFileSave(){}が呼ばれると思っていたのですが
呼ばれないのであちこちでOnFileSave(){}を作ってみた所、
CxxxDoc::OnFileSave(){}だけが呼ばれている事がわかったのです。
もう、頭の中がぐちゃぐちゃに(~o~)。
>>182
>送り先はどれか1つじゃないか?。
送り先の指定は何処を見たら判るのでしょうか?。
それともOnFileSave()は1つしか作るべきではないという事でしょうか。
0184デフォルトの名無しさん
2005/07/11(月) 18:45:06きのうも言ったはず
CxxxView::OnFileSave()はちゃんと呼ばれる
すでに何度も複数の人間が確認済み
0185デフォルトの名無しさん
2005/07/11(月) 18:52:14Splitter使ってるとすれば、そのViewにフォーカスがあたってない可能性が。
あと、念のため聞いとくけど
BEGIN_MESSAGE_MAP〜END_MESSAGE_MAPの中に
ON_COMMAND(ID_FILE_SAVE_AS, OnFileSaveAs)は書かれてる?
>>送り先はどれか1つじゃないか?。
>送り先の指定は何処を見たら判るのでしょうか?。
送り先は一つじゃないよ。(語弊があるが)
MFCのメッセージディスパッチについては、ソース読めば分かるが
とりあえず「CCmdTarget」でgoogleれ
0186180
2005/07/11(月) 19:29:55185さんのおっしゃる通りでした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()
0187デフォルトの名無しさん
2005/07/11(月) 20:23:050から1までの乱数を与えるにはどうしたらよいのでしょうか?
0188デフォルトの名無しさん
2005/07/11(月) 20:35:28かならずVSでビルドやコンパイルをしないといけないのでしょうか?
Win32みたいにコマンドラインからコンパイルとかはできないのでしょうか?
0189デフォルトの名無しさん
2005/07/11(月) 20:41:45できる
0190デフォルトの名無しさん
2005/07/11(月) 23:02:29VCでこれを使うにはどうすればいいの?
(宣言型名が変わってもOK)
0191デフォルトの名無しさん
2005/07/11(月) 23:03:430192デフォルトの名無しさん
2005/07/11(月) 23:10:46VC7か7.1からlong longはそのまま使える。
0193デフォルトの名無しさん
2005/07/11(月) 23:15:02printf("%lld ") -> printf("%I64d ")
>>191
これで上手くいった感じです。
どうもありがとう。
0194デフォルトの名無しさん
2005/07/12(火) 00:01:22VC7では返り値がINT_PTRとなっており調べてみるとポインタの
ようなのですが、ここから配列の数を収得するにはどうしたら良い
のでしょうか?
0195デフォルトの名無しさん
2005/07/12(火) 00:09:14http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdnw2ksrv/htm/AppSpecServ11.asp
0196デフォルトの名無しさん
2005/07/12(火) 00:21:07ありがとうございます。
エラーがズラズラ出て気持ち悪いので(int) m_carray.GetCount()としてみました。
はじめたばかりで正しいのか良く判りませんが^^;。
0197デフォルトの名無しさん
2005/07/12(火) 08:07:51fp.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();
0198デフォルトの名無しさん
2005/07/12(火) 09:11:410199デフォルトの名無しさん
2005/07/12(火) 09:39:510200197
2005/07/12(火) 10:07:40「オンラインMSDN引用」
文字列の終わりを示す NULL 文字 ('\0') は、ファイルには書き込みません。
この関数は NULL 文字で終わる文字列ではなく、バイト数を指定してファイルに書き込みます。
たぶん、この上記2件のどちらかだと思うのですが、WriteString(buf)でbufのサイズを自動計算
して書き込んでいるのだろうと思うのでバイト数は関係ないですよね。
だから、\0が含まれているという事なのでしょうか?。つまり、+"\n"を付加する事により\0が
含まれてしまうのかな・・・。
198さんのアドバイスの別々に挑戦してみます^^。
0201197
2005/07/12(火) 10:11:09でも、"\n"と\0の関係が良く判りません・・・・。
0202デフォルトの名無しさん
2005/07/12(火) 10:28:13ラベルに、中国語の文字を入力したら一部の文字が「・」と
化けてしまいました。
これを正しく表示させるには、どうしたらいいのでしょうか?
中国語に対応させる必要があって、頭を悩ませています。
お分かりの方、ご教授いただけましたら幸いです。
0203デフォルトの名無しさん
2005/07/12(火) 11:02:56Unicode
0204198
2005/07/12(火) 12:10:46>199は頓珍漢なことを言っていると思われ。
で、問題はWriteString()ではなく、m_list.GetAt(i)の方ではないかと。
今朝は資料がないから放置したが、今調べたらGetAt()が戻すものによっては
lineへの代入前に"\n"を足したのが拙いと思われ。
試しに、line = m_list.GetAt(i) + "\n"の後のlineの値をデバッガでも何でも使って
確認してみるといいと思う。
もしその状態でlineに思う文字列が入っていなければ、問題の行を
line = CString(m_list.GetAt(i)) + '\n'にしてみて再挑戦。
0205202
2005/07/12(火) 14:14:51UNICODEで入力する前に、コードエディタにコピーすると
文字が化けてしまうんです。
これは、開発環境を変えなきゃダメって事ですかね?
0206デフォルトの名無しさん
2005/07/12(火) 14:25:40コンパイラは多言語に対応してるはず
0207197
2005/07/12(火) 15:51:05どちらも空白(改行のみ)?の表示となりました。+"\n"または+'\n'とする事で
文字が消えてしまう所を考えるとGetAt()で収得した最後に\0などが追加され
その後に+"\n"などとしてしまうと文字列として扱えなくなるのではないでしょうか?。
デバッガの使い方も良く判らない低レベルな者なので間抜けな事をやっている
とは思うのですが報告します。
CString line = m_list.GetAt(i) + "\n"
CString line = m_list.GetAt(i) + '\n'
0208198
2005/07/12(火) 16:00:00少しは人が書いたことを理解してみよう。
GetAt()は何を返しているかが問題。CString(もしくはその類似型)を返しているのでなければ'\n'も"\n"も足せない。
なので、強制的にCStringに変換させるため、>204の最下行。
0209デフォルトの名無しさん
2005/07/12(火) 16:15:49プログラムのウィンドウ外の任意の座標の色を得るにはどうしたらいいんでしょうか。
0210デフォルトの名無しさん
2005/07/12(火) 16:49:02GetPixel,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
0211197
2005/07/12(火) 17:12:04204>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です。
ありがとうございました。
0212デフォルトの名無しさん
2005/07/12(火) 18:16:51int x, y;//スクリーン座標
・・・
HDC hdc = GetDC( NULL );
COLORREF color = GetPixel(hdc, x, y );
0213デフォルトの名無しさん
2005/07/12(火) 21:42:06INT_PTRは紛らわしいが結局はintのtypedef。
0214202
2005/07/13(水) 10:02:27ごめんなさい。VisualStudio6.0、Win2K+SP4です。
ご返答いただき感謝します。
引き続きご教授いただけますでしょうか。
0215デフォルトの名無しさん
2005/07/13(水) 13:07:36UnicodeかMBCS
0216デフォルトの名無しさん
2005/07/13(水) 13:25:46以下の方法では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);
}
}
0217デフォルトの名無しさん& ◆LMRaV4nJQQ
2005/07/13(水) 13:50:22GetFirstSelectedItemPosition
GetNextSelectedItem
↑を使うのもありかと思われ
0218デフォルトの名無しさん
2005/07/13(水) 15:35:46それを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);
0219デフォルトの名無しさん
2005/07/13(水) 15:46:53これだと上手く消えなかったです。
私が使い方を間違えているのかな・・・。
POSITION p = ctrl.GetFirstSelectedItemPosition();
int n;
while(p != NULL){
n = ctrl.GetNextSelectedItem(p);
ctrl.DeleteItem(n);
}
0220デフォルトの名無しさん
2005/07/13(水) 16:04:21POSITION p = ctrl.GetFirstSelectedItemPosition();
int n;
while(p){
n = ctrl.GetNextSelectedItem(p);
ctrl.DeleteItem(n);
p = ctrl.GetFirstSelectedItemPosition();
}
0221デフォルトの名無しさん
2005/07/13(水) 16:43:10こんな事をしていたのですが219さんのやり方を使わせて頂きますm(_)m。
int c = (int) ctrl.GetItemCount();
while(c != -1){
if (ctrl.GetItemState(c,LVIS_SELECTED) == LVIS_SELECTED){
ctrl.DeleteItem(c);
}
c--;
}
0222デフォルトの名無しさん
2005/07/13(水) 19:01:31MFC & ソースへUNICODE直書きでよければ・・・
(GetDlgItem(IDC_LABEL))->SetWindowText(_T("\u662F\u665A\u996D\u7684\u65F6\u95F4"));
0223デフォルトの名無しさん
2005/07/14(木) 01:13:55インクルードファイルを開けませんとなってしまいます。
パスの設定などはどこですればいいのでしょうか?
0224デフォルトの名無しさん
2005/07/14(木) 06:17:250225デフォルトの名無しさん
2005/07/14(木) 07:47:49・プロジェクトの設定でパスを指定する。
・ツール→オプションでパスを指定する。
・#Includeでフルパスor相対パスで指定する。
・ファイルの置き場所を変える
好きな方法で対応してくれ。
0226デフォルトの名無しさん
2005/07/14(木) 09:31:21以下の方法ではエラーになってしまいます。返り値にCStringArrayを用いる
事は出来ないのでしょうか?。
CStringArray CxxxView::UserKansuu(){
CStringArray dat;
return dat;
}
0227デフォルトの名無しさん
2005/07/14(木) 09:46:07悪いことは言わん。
std::vector<CString>を使っとけ。
話はそれからだ。
0228デフォルトの名無しさん
2005/07/14(木) 10:26:36コピーコンストラクタが無いから無理。
0229デフォルトの名無しさん
2005/07/14(木) 10:44:24std::vector<CString>というのが解らなかったので以下のサイトを
眺めていたのですが、これはstd::vector<CString>とする事で配列と
等価の働きをするのですね。
でも使い方が今一つ解らないのでhファイルにCStringArray等を追加
してあくどく使おうかと妄想してたりします^^;。
ttp://www.fides.dti.ne.jp/~oka-t/vc-mfc.html
勉強になります。ありがとうございます。
0230デフォルトの名無しさん
2005/07/14(木) 11:08:29たとえstd::vector<CString>を使うとしてもローカルな実体を戻すのはどうかと。
0231デフォルトの名無しさん
2005/07/14(木) 11:17:19コピーされるから大丈夫。
0232デフォルトの名無しさん
2005/07/14(木) 11:21:38だがわざわざ重くする必要はあるまい。
参照渡しで不都合が生じるのか?
0233デフォルトの名無しさん
2005/07/14(木) 11:24:55引数でCStringArrayの参照かポインタ受け取って返り値は成否とかもできる
そんなに使いたいのなら
0234226
2005/07/14(木) 15:49:00文字列の分割をユーザー関数に処理させて返り値を配列で受けとろうと思い、
その時に返り値が配列だとありがたいなと思ったのですが、こういう場合は
みなさん、どうされているのでしょう?。
0236デフォルトの名無しさん
2005/07/14(木) 16:24:57参照かポインタでユーザ関数に渡してるときの方が多いな
戻り値はエラーとかのフラグ用にとってる場合が多い
0237デフォルトの名無しさん
2005/07/14(木) 17:05:18今時はそのコピーをなくす最適化もしてくれる。
0238デフォルトの名無しさん
2005/07/14(木) 17:32:06そのViewクラスにCStringArrayのメンバ変数を作って
メンバ関数で書いてやればいいんじゃね
でもVCとあんまり関係ない話だな
0239デフォルトの名無しさん
2005/07/14(木) 17:36:490240239
2005/07/14(木) 17:37:250241226
2005/07/14(木) 18:13:35Hファイル書いても、CPPファイルに書いてもstdメンバーでないとか怒られます(^^;。
何処かに詳しいサイトありませんでしょうか?。
0242デフォルトの名無しさん
2005/07/14(木) 18:20:34#include <vector>
0243デフォルトの名無しさん
2005/07/14(木) 20:19:49char*Err_Message[] = { "",
"ERR1:",
"ERR2:",
"ERR3:",
〜(省略) 〜
"ERRXXXX:"
};
という配列を作ったのですが、
この配列(Err_Message)のサイズを取得するにはどうすれば良いのでしょう?
0244デフォルトの名無しさん
2005/07/14(木) 20:31:46report2.obj : error LNK2001: 外部シンボル "__imp__pthread_create" は未解決です
Debug/Robot.exe : fatal error LNK1120: 外部参照 1 が未解決です。
と言うエラーが出ており、ライブラリが不足しているのかリンクに抜けがあるということまではわかるのですが、後を王したら良いのかがわかりません。
設定→C/C++→コード生成でマルチスレッドに変更したのですがそれでもエラーが消えません。
初心者丸出しで申し訳ありませんがよろしくお願いします。
因みに言語はCです。
0245226
2005/07/14(木) 20:32:40原因となる部分がわからないのです。
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が必要なのですね^^;;。ありがとうございます。
0246デフォルトの名無しさん
2005/07/14(木) 21:30:02なんでループ中でGetFirstSelectedItemPosition呼んでんだよ
0247226
2005/07/14(木) 21:50:09あっ、本当だ。教えて貰ったのを削除用に使わせて頂いていたのですが他の所でも
使おうと思い、深く考えずにコピーして使っていました。ヾ(_ _。)ハンセイ…。
指摘、ありがとうございます。
0248デフォルトの名無しさん
2005/07/14(木) 22:43:55pthreadのライブラリをリンクしていないのが原因。
0249243
2005/07/14(木) 22:44:230250デフォルトの名無しさん
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の定義とは?
と、色々調べてみましたが分かりませんでした
教えて頂けると助かります、宜しくお願いします
0251デフォルトの名無しさん
2005/07/14(木) 22:46:49sizeof Err_Message
要素数が欲しいのならsizeof Err_Message / sizeof Err_Message[0]
たぶんヘッダの宣言に要素数がないと駄目だと思うけど。(あっても無理だったかもしれないけど)
0252デフォルトの名無しさん
2005/07/14(木) 22:48:52つまりcommctrl.hやwindows.hのインクルードより前に#define _WIN32_IE 0x500と書けばいい。
あるいはBTNS_BUTTONをTBSTYLE_BUTTONに置き換えればいい。
0253244
2005/07/14(木) 22:57:52ありがとうございます
具体的になんという名前のlibファイルをリンクしたらよろしいでしょうか。
0254デフォルトの名無しさん
2005/07/14(木) 23:19:010255244
2005/07/14(木) 23:19:57自己解決しました。使っている関数が悪かったようです。
WindowsとLinuxにおいて仕様が違うところがあるのですね。勉強になりました。
ご迷惑おかけして申し訳ありませんでした。
0256初心者
2005/07/14(木) 23:41:33c:\program files\microsoft visual studio\vc98\include\oaidl.h(6827) : fatal error C1073: インクリメンタル コンパイルを伴う内部エラーが発生しました(コンパイラ ファイル '.\p0io.c', 行番号 1142)
cl.exe の実行エラー
ブラウザ データベースを作成中...
BSCMAKE: error BK1506 : コンパイラは、指定されたファイル '.\Debug\StdAfx.sbr'を開くことができません。: No such file or directory
bscmake.exe の実行エラ
ビルドしたらこんなエラーが出たんですけど、なんなんですか?会社でかいたソースをフロッピにいれて
家で立ち上げたんですけど、こんなエラーがでてしまいました。どうすれば実行できますか?
0257デフォルトの名無しさん
2005/07/14(木) 23:45:11中間ファイルは全て消せ。
0258デフォルトの名無しさん
2005/07/14(木) 23:49:50メモリを確保できる最大とかは決まっているのでしょうか?
0259デフォルトの名無しさん
2005/07/14(木) 23:55:01大丈夫、そのくらいならnewで問題なく取ってこれる。
#どうしてもローカル変数にしたいなら設定でスタックサイズを調整したまえ。
0260初心者
2005/07/15(金) 00:20:00リビルドでいいんですか?
0261初心者
2005/07/15(金) 00:25:01リビルドしてもだめでした・・・・また同じエラーがでます。
0262デフォルトの名無しさん
2005/07/15(金) 01:08:22いっそ、Debugフォルダごと一度消してしまえ。
#つーか、持って帰るのに邪魔だろうに……
0263デフォルトの名無しさん
2005/07/15(金) 09:27:34は問題なくとおるのに
using namespace System;
だと名前空間が存在しないというエラーが出ます。
Systemだけ特別な場所に記述しなきゃいけないってことはないですよね・・・?
ご指導お願いします。
0264デフォルトの名無しさん
2005/07/15(金) 10:16:140265デフォルトの名無しさん
2005/07/15(金) 12:25:38検索してもみつかりません。このような場合はどうしたらいいのでしょうか?
教えてくださいませ。
0266初心者ゴン
2005/07/15(金) 14:45:00次のエディットボックスへ移ることってできますか?
例ですけど
_____________ ______________
名前:|____________|E-mail(省略可):|____________|
名前を入力したらE-mail(省略可)のエディットボックスへ
移動できるのでしょうか?
0267デフォルトの名無しさん
2005/07/15(金) 14:47:310269デフォルトの名無しさん
2005/07/15(金) 15:08:440270真のデフォルトの名無しさん
2005/07/15(金) 15:15:25265の俺のも答えろよ!
0273デフォルトの名無しさん
2005/07/15(金) 16:14:53超サンクス!
0274真のデフォルトの名無しさん
2005/07/15(金) 16:16:22しっとけよこのバカ!
0275初心者ゴン
2005/07/15(金) 16:31:11Enterの押下を検出して、フォーカスをセットする
ってどうやるのか分からないっす・・・
0276デフォルトの名無しさん
2005/07/15(金) 16:50:24しらねーよ
>>275
WM_KEYDOWN
SetFocus
0277初心者ゴン
2005/07/15(金) 17:01:48できますか?
0278デフォルトの名無しさん
2005/07/15(金) 17:02:36どっちなのかと
0279初心者ゴン
2005/07/15(金) 17:23:320280デフォルトの名無しさん
2005/07/15(金) 17:30:280281デフォルトの名無しさん
2005/07/15(金) 19:34:410282デフォルトの名無しさん
2005/07/15(金) 19:54:140283281
2005/07/15(金) 20:34:09どうしてか4つファイルがある内の3つしか拾えません。1つファイルを増やすと4/5になって
しまいます。1.txt...5.txtという空ファイルを作成してテストしたのですが5つの場合は1〜.4の
数のテキストファイル、4つの場合は1〜3の数のテキストファイルだけしか拾えません。
特定のファイルが拾えていないのではなく最後のファイルだけ拾えないようなのですが
どうしてでしょうか?。
CFileFind FileFind;
if (!FileFind.FindFile("C:\\*.*")) return;
while(FileFind.FindNextFile()){
MessageBox(FileFind.GetFilePath(),0,MB_OK);
}
>>282
その言葉の関数はVCには「関数」という言葉はないという意味も含まれてたりするのでしょうか。
揚げ足ではなく少し気になったもので・・・。
0284デフォルトの名無しさん
2005/07/15(金) 20:59:59ただの開発ツール名。
0285デフォルトの名無しさん
2005/07/15(金) 21:02:24SHFileOperationなぞどうかね?
0286デフォルトの名無しさん
2005/07/15(金) 22:10:00ヘルプでCFileFind::FindNextFileの戻り値を良く見てみるといいよ
0287デフォルトの名無しさん
2005/07/15(金) 22:12:49関数 "public: void __thiscall CWorthlessDlg::ErrMsgOut(unsigned long)"
(?ErrMsgOut@CWorthlessDlg@@QAEXK@Z) で参照されました。
こんなのが出てリンクが出来ません
Visual C++.NETで簡単なCDプレーヤーを作成しているのですが、
winmm.libをインポートライブラリに指定しているのにうまくいきません。
どなたか、解決法がお判りでしょうか?
0288デフォルトの名無しさん
2005/07/15(金) 22:16:24コレを回避させるにはその処理をスレッド化するんでしょうか?
それとも他の方法があるんですか?
定番を教えてください。
0289デフォルトの名無しさん
2005/07/15(金) 22:26:100290デフォルトの名無しさん
2005/07/15(金) 22:27:110291デフォルトの名無しさん
2005/07/15(金) 22:28:17あんまし変わんない気がするんだけど
0292デフォルトの名無しさん
2005/07/15(金) 22:29:35Sleep(1)を試してみて、駄目ならスレッド化させます。どーもでした。
0293厨房質問
2005/07/15(金) 22:32:31の意味がわかりません。教えて下さい。
0294デフォルトの名無しさん
2005/07/15(金) 22:35:520295デフォルトの名無しさん
2005/07/15(金) 22:56:140296デフォルトの名無しさん
2005/07/15(金) 23:00:06ループ中にかますのはGetMessage/DispatchMessageだな。
0297デフォルトの名無しさん
2005/07/15(金) 23:04:44そのコード通るコンパイラあるの?
static const char* const hoge="";
これならわかるけど。
0298デフォルトの名無しさん
2005/07/15(金) 23:14:30処理を分割する。
少し処理し、最後にWM_APP+aをPostするのを繰り返す。
0299281
2005/07/15(金) 23:26:29みなさん、頑張ってください。
>>285
SHFileOperationは便利そうですね^^。今、いじりながら使おうとしているのですがエラーが出て
コピー出来ない-;。読み取り側のファイルが読めないとかいうエラーが出ます。何が原因なのか
教えて頂けないでしょうか?。
SHFILEOPSTRUCT sfo;
sfo.wFunc = FO_COPY;
sfo.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMMKDIR | FOF_MULTIDESTFILES;
sfo.hwnd = m_hWnd;
sfo.pFrom = "c:\\*.*";
sfo.pTo = "c:\\abc";
if (SHFileOperation(&sfo)){
MessageBox("失敗",0,MB_OK);
return FALSE;
}
>>286
見てもわからなかった-;。返り値がBOOLになっていますし、一部のサイト(Cかな)では成功で0、
失敗またはファイルがあればそれ以外と書いてありました。前はこう書いてて上手く行ってた
記憶があるんだけど今回のはどこかのサイトのを引用したから失敗したのかなぁ。
CFileFind finder;
BOOL id = finder.FindFile();
while (bWorking){
id = finder.FindNextFile();
}
0300デフォルトの名無しさん
2005/07/16(土) 01:32:04スレッドを使わないなら、
if(PeekMessage(&msg,hWnd,0,0,PM_REMOVE)){
TranslateMessage(&msg); //アクセラレータキーを処理しないなら不要
DispatchMessage(&msg);
}
をループの中に入れる。MFCを使っている場合、hWndの箇所にGetSafeHwnd()を書く。
0301デフォルトの名無しさん
2005/07/16(土) 02:23:19#include <stdio.h>
#include <math.h>
#define N 10000 /* ステップ数 */
#define T 1000 /* t=0 から t=T まで計算する */
double f1(double t, double x,double y);
double f2(double t, double x,double y);
int main(){
double t[N+1], x[N+1],y[N+1], dt, k11,k12,k21,k22,k31,k32,k41,k42; int i;
dt=(double)T/(double)N; /* ステップ幅 */
printf("dt=%f\n",dt);
t[0]=0.0; x[0]=100;y[0]=100; /* 初期値の設定 */
for(i=0;i<N;i++){
k11=dt*f1(t[i],x[i],y[i]);
k12=dt*f2(t[i],x[i],y[i]);
k21=dt*f1(t[i]+dt/2,x[i]+k11/2,y[i]+k12/2); k22=dt*f2(t[i]+dt/2,x[i]+k11/2,y[i]+k12/2);
k31=dt*f1(t[i]+dt/2,x[i]+k21/2,y[i]+k22/2); /* 未完成 */
k32=dt*f2(t[i]+dt/2,x[i]+k21/2,y[i]+k22/2);
k41=dt*f1(t[i]+dt/2,x[i]+k31/2,y[i]+k32/2); /* 未完成 */
k42=dt*f2(t[i]+dt/2,x[i]+k31/2,y[i]+k32/2);
x[i+1]=x[i]+(k11+2*k21+2*k31+k41)*1/6;
y[i+1]=y[i]+(k12+2*k22+2*k32+k42)*1/6;
0302301続き
2005/07/16(土) 02:23:44return(0);
}
double f1(double t, double x,double y);
{
return (0.01*x-0.0001*x*y);
}
double f2(double t, double x,double y);
{
return (-0.05*x+0.0001*x*y);
}
というプログラムで「error C2447: グローバルスコープで中カッコ ({) が見つかりましたが、対応する関
数ヘッダーがありません。」というエラーが出たんですが対処法が分かりません。どうか教えてください。
0303デフォルトの名無しさん
2005/07/16(土) 02:33:56double f1(double t, double x,double y); ←";"いらない
{
:
}
double f2(double t, double x,double y); ←";"いらない
{
:
}
0304デフォルトの名無しさん
2005/07/16(土) 12:37:42Dlg.GetDlgItem(IDC_R1);とするとコンパイルは通るものの実行して確かめると例外だよ!と
怒られてしまいます。
CDlgSelect Dlg;
int rd = (int) Dlg.DoModal();
CButton *R;
R = (CButton *) Dlg.GetDlgItem(IDC_R1);
if (R->GetCheck()){
MessageBox("aa");
}
0305304
2005/07/16(土) 12:49:34GetCheckedRadioButton()が使えそうなのでこちらを使ってみようと想います^^。
0306304
2005/07/16(土) 13:27:08どうすれば良いでしょうか?。これでは書き換える事は出来ないようです。
CDlgSelect Dlg;
Dlg.SetDlgItemText(IDC_R1,"aaa");
0307デフォルトの名無しさん
2005/07/16(土) 14:47:150308デフォルトの名無しさん
2005/07/16(土) 15:06:040309304
2005/07/16(土) 15:06:59検索してサイトを見て回ると、そうしている所が多いいから・・・・。
変数を追加してチェックが入る時に変数に代入するしかないのかな。
0310デフォルトの名無しさん
2005/07/16(土) 15:26:40・モードレスダイアログとはなんであるのか
・DoModalとはなんであるのか
おまいはまずこれらを調べ理解してこい
0311デフォルトの名無しさん
2005/07/16(土) 15:31:09先に>>310の答えを言っちゃうと、DoModalはモーダルダイアログを作る。モードレスダイアログはCreateだ。
0312デフォルトの名無しさん
2005/07/16(土) 16:36:580313304
2005/07/16(土) 17:41:56それで私が使いたいのは「モーダルダイアログ」でラジオボタンの選択をさせてチェックの
有無を確かめたいのです^^;。
そして今から「DoModal」を調べてきます。
0314デフォルトの名無しさん
2005/07/16(土) 23:06:36モーダルにするんならダイアログを起動したスレッドからは変更は不可能。
監視用の別スレッド作って変更するか、ダイアログのプロシージャ内で変更しろ。
0315デフォルトの名無しさん
2005/07/17(日) 20:09:01表示したいのですが、どうやったら出来るのでしょうか?。
0316デフォルトの名無しさん
2005/07/18(月) 00:05:02CTreeCtrl & c = GetTreeCtrl();
SHFILEINFO sfi;
SHGetFileInfo(path,FILE_ATTRIBUTE_ARCHIVE,&sfi,sizeof(sfi),SHGFI_ICON|SHGFI_SMALLICON);
c.InsertItem(path,imglist->Add(sfi.hIcon),imglist->Add(sfi.hIcon),TVI_ROOT,TVI_LAST);
0317デフォルトの名無しさん
2005/07/18(月) 09:45:48出すことは可能でしょうか。
0318デフォルトの名無しさん
2005/07/18(月) 10:08:30そんでもってTRACEマクロを使用すればできるかな。
0319デフォルトの名無しさん
2005/07/18(月) 10:33:24それって質問に対する回答にはなってないな。オナニーご苦労。
0320デフォルトの名無しさん
2005/07/18(月) 10:44:05コマンドラインでリダイレクト。
0321デフォルトの名無しさん
2005/07/18(月) 11:12:46コンソールアプリならコンソールかファイルへ出力できれば十分だろ
0322デフォルトの名無しさん
2005/07/18(月) 11:14:43このスレでは質問するのにいちいち必要性を説明しなければならないのですか?
必要なくても技術的に可能かどうか疑問を持ってはいけませんか?
0323デフォルトの名無しさん
2005/07/18(月) 11:19:25よっぽどひまで物好きな人がいるといいね
0324デフォルトの名無しさん
2005/07/18(月) 11:21:28前提を満たしてないのに話を先に進めちゃダメよ。
プログラムもそうでしょ。
0325デフォルトの名無しさん
2005/07/18(月) 11:23:34afxDumpとか
暇なら調べてみ
0326デフォルトの名無しさん
2005/07/18(月) 11:31:39誰か答えてたような気もするが、勘違いかもしれない。
過去ログ調べてみるのも手だな
0327デフォルトの名無しさん
2005/07/18(月) 12:45:11質問者が気に入らんから回答はここまで
誰か親切なやつがいるといいね
0328デフォルトの名無しさん
2005/07/18(月) 18:38:580329デフォルトの名無しさん
2005/07/18(月) 20:02:55>>327
サンキュー。分かったよ。
何が気に入らなかったのかは理解不能ですが。
0330デフォルトの名無しさん
2005/07/18(月) 21:25:07printf()の出力はそのままでは出せないので
vsprintf()とOutputDebugString()で我慢しろ
0331288
2005/07/19(火) 15:05:20みなさん回答ありがとうございました。
メッセージポンプをループ中に入れることにします。
0332デフォルトの名無しさん
2005/07/19(火) 15:31:06vc++でcのプログラムを作成しているのですが、
最大表示件数を5件、↑↓キーでのページ切り替えを行うにはどうしたらよいのでしょうか?
よろしくお願いします。
0333デフォルトの名無しさん
2005/07/19(火) 15:32:280334デフォルトの名無しさん
2005/07/19(火) 15:38:32vc++6.0にてc言語のプログラムを作成しています。
ファイルの読み込み>一覧表示の際に
仮に50件のデータがあるとして、5件までを1ページの最大の表示件数に設定し、
↑↓キーによってページを切り替えられるようにしたいわけです。
この場合だと10ページの切り替えにしたいと言えばいいのでしょうか。
こ、これで伝えられてるでしょうか・・・。
0335デフォルトの名無しさん
2005/07/19(火) 15:47:480336デフォルトの名無しさん
2005/07/19(火) 15:49:350337デフォルトの名無しさん
2005/07/19(火) 18:38:50conio.hのgetch()を使えば、↑↓を押したときもすぐ返してくれます。
とりあえず、getch()の戻り値をモニターするプログラムを作って、
↑↓を押したときにどんな値が返るか調べましょう(そのくらい作れるよね。できないならあきらめな)。
0338デフォルトの名無しさん
2005/07/19(火) 19:01:47>vc++6.0にてc言語のプログラムを作成しています。
作成しようと思っているんじゃなく、作成し始めてるんだな?どこまでできたんだ?
0339デフォルトの名無しさん
2005/07/19(火) 20:31:12scanf("%c",&ch);
printf("%d,%c",data,ch);
上のようにint型dataとchar型chに数と文字を入れ
printfで出力しようと思うのですが
実行するとdataを入力したら文字入力が飛ばされ終了してしまいます
scanfを上下入れ替えて文字、数字の順にすると問題なく動きます
文字入力のscanfを%sで実行すると飛ばされはしませんがdataの中が0になってしまします
色々調べてみたのですが原因がわかりません
よろしければご教授ください
0340デフォルトの名無しさん
2005/07/19(火) 20:51:12fgets()で文字列にしてからatoi()なり何なりを使って変換汁。
0341デフォルトの名無しさん
2005/07/19(火) 21:34:30なんとかならんのか
0342デフォルトの名無しさん
2005/07/19(火) 21:46:36C言語の標準関数だけでやってるならCのスレへ行くべきだろう
http://pc8.2ch.net/test/read.cgi/tech/1121657911/60-63n
>
> 63 :デフォルトの名無しさん :2005/07/19(火) 14:14:02
> >>60
> C言語の標準関数だけでは無理なので、該当スレへどうぞ。
> ・VCスレ
> ・初心者質問スレ
> ・MFCスレ
0343デフォルトの名無しさん
2005/07/19(火) 22:07:10scanf("%d"のときに数字を入力した後の改行が次の%cで読み込まれている。
scanf("%d%*[^\n]%*c", &data, %ch);とでもすればいいんじゃない?
0344デフォルトの名無しさん
2005/07/19(火) 22:57:31scanf("%c", &dummy);
上記を各scanfの後に行いダミー変数に放り込む方法で解決しました
アドバイスありがとうございました
0345デフォルトの名無しさん
2005/07/19(火) 23:13:27誰か教えてください!!
0346デフォルトの名無しさん
2005/07/19(火) 23:16:35http://pc8.2ch.net/test/read.cgi/tech/1121471445/
0347デフォルトの名無しさん
2005/07/19(火) 23:25:490348デフォルトの名無しさん
2005/07/19(火) 23:30:49余りいい方法じゃないね。
>340がずっと使える一般的な手法かと。
>343でもいいけど毎回そのフォーマットを編集するのも気が萎えるだろうしね。
0349デフォルトの名無しさん
2005/07/20(水) 00:37:55ハイパーリンクを取り込むことができません。
どなたかお知恵を貸してください。
0350デフォルトの名無しさん
2005/07/20(水) 00:52:36大変そうだ。
#ブックファイルを読むならいざ知らず。
0351デフォルトの名無しさん
2005/07/20(水) 01:39:14完全に自社製品のサポートに対する怠慢だとおもうのだが!
自社製品の不備が多すぎるので答えるのが面倒で防御策をしていると
思われるがどう思う?
0352デフォルトの名無しさん
2005/07/20(水) 07:13:35そういう香具師は、Eclipse+GCCでも使うよろし
0353デフォルトの名無しさん
2005/07/20(水) 12:00:380354デフォルトの名無しさん
2005/07/20(水) 12:22:42リスト上部のカラムをドラックしてサイズを変えると、行がずれた時に
再描画されてないらしくて灰色の線が残っちゃったりします。
スクロールの機能自体は残したいのですが、カラムをクリックした時とか
カラムのサイズが変わったのを検知して、再描画を促す手段とかご存知ないでしょうか?
0355デフォルトの名無しさん
2005/07/20(水) 12:55:50わざわざそんなことやんなくてもいいはず
描画してる場所がまずいんじゃないの?
0356デフォルトの名無しさん
2005/07/20(水) 13:09:15タブコントロールの上にリストビューを2個重ねておいていて、タグが選択されたら
対応するリストビューをm_listctrl.ShowWindow(SW_SHOW);で描画するってことを
やってるんですけど、原因はそれですかね?
0357初心者ゴン
2005/07/20(水) 13:13:180358355
2005/07/20(水) 13:14:14左右に振ってみたら、前述の描画異常は起きませんでした。
どうも、タグの上への重ね方が悪かったみたいです。
0359デフォルトの名無しさん
2005/07/20(水) 13:36:59デバッグビルドするだけじゃないかな
0360初心者ゴン
2005/07/20(水) 13:50:040361デフォルトの名無しさん
2005/07/20(水) 13:51:200362デフォルトの名無しさん
2005/07/20(水) 14:01:51#define MLCHECK() do { \
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); \
_CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE); \
_CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE); \
_CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDOUT); \
_CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDOUT); \
_CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDOUT); \
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); \
} while(0)
コンソールアプリならmain() 入ってすぐに MLCHECK(); しとけばいい。
試しに new int; return 0; とかやってみればどうなるかはわかる。
0363初心者
2005/07/20(水) 14:24:54void CSample2View::OnButton1() このクラス内で
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
CFileDialog filedlg(TRUE, "txt", "*.txt");
CString file1;
FILE *fp1;
int i=0;
int c;
char boxa[200];
if(filedlg.DoModal() == IDOK)
{
file1 = filedlg.GetPathName();
fp1 = fopen(file1,"r");
while( (fscanf(fp1,"%f",&boxa[i]) )!=EOF)
{
fscanf(fp1,"%f",&boxa[i]);
i++;
}
c=i-1;
fclose(fp1);
}
}
などの計算をしてそのboxaの値を他のクラス内で使用したい場合は
どのようにすればよいですか??
publicなどで宣言すればよいのですか??
よろしくお願いします。
0364初心者ゴン
2005/07/20(水) 14:29:07#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
ってメモリーリークなんですかね?
0365初心者ゴン
2005/07/20(水) 14:30:010366初心者ゴン
2005/07/20(水) 14:39:480367354
2005/07/20(水) 18:01:05リストの描写が潰れていたのはそこら辺が原因みたいでした。
どうもお騒がせしました。
0368デフォルトの名無しさん
2005/07/20(水) 21:19:27Getter,Setter
0369初心者
2005/07/21(木) 13:52:55SDI、MDI、ダイアログってありますがどれを選択すればよいでしょうか?
簡単に言うと
1.2つのファイル(.txt)を入力(オープン)。
2.閾値などを入力し2つのファイルのデータを処理。
3.処理されたデータをグラフ表示。
C言語ではファイルのオープンから閾値などを入力し
出力ファイルを作るところまではできたのですが
C++ではなかなかうまくいきません。
お教えいただけますか??
0370デフォルトの名無しさん
2005/07/21(木) 14:56:00>ダイアログでデータを入力して
単一ダイアログモデルでいいなら、ダイアログを選択すればいいじゃん。
グラフを別ウィンドウにするとしても、別ダイアログで事は足りるだろうし。
SDI/MDIはファイル依存型、ダイアログは操作依存型と思えばいい。
0371デフォルトの名無しさん
2005/07/21(木) 14:56:140372デフォルトの名無しさん
2005/07/21(木) 15:08:32どれを選択なんていわずに全部作ってみる。
0373デフォルトの名無しさん
2005/07/21(木) 16:14:36初心者ならまずダイアログから入ったほうがよさげ。
0374デフォルトの名無しさん
2005/07/21(木) 17:42:39Document/Viewアーキテクチャーを理解できなくなる罠
0375デフォルトの名無しさん
2005/07/21(木) 17:47:490376デフォルトの名無しさん
2005/07/21(木) 17:52:370378デフォルトの名無しさん
2005/07/21(木) 18:28:130379デフォルトの名無しさん
2005/07/21(木) 18:29:550380デフォルトの名無しさん
2005/07/21(木) 20:35:14受け渡しするプログラムを作っています。
DDXを使うのは分かるのですが、スクロールバーを移動した際のデータの
反映がうまくいきません。
UpdataDataを使ってデータの更新をしようと試みていますが、
起動してスクロールバーを移動させるとエラーが出て止まります。
何かいい方法は無いでしょうか?
0381288
2005/07/22(金) 11:02:49全く同じ実装にみえますが、
どんなコントロールを使ってるのでしょうか?
0382デフォルトの名無しさん
2005/07/22(金) 11:58:540383288
2005/07/22(金) 12:20:230384288
2005/07/22(金) 16:12:320385デフォルトの名無しさん
2005/07/22(金) 16:30:47C#.NETで作ったDLLを、アンマネージコードから呼ぶにはどうしたらよいのでしょうか?
0386デフォルトの名無しさん
2005/07/22(金) 17:15:57ど素人から卒業できるよう勉強する。
0387デフォルトの名無しさん
2005/07/22(金) 19:06:030388デフォルトの名無しさん
2005/07/22(金) 19:56:04とは具体的にどのようにすればいいのでしょうか?
ちなみに関数は、virtual void CApp001::Func(void* p)です。
0389デフォルトの名無しさん
2005/07/22(金) 20:39:21とか
void Func(void* p)
0390デフォルトの名無しさん
2005/07/22(金) 22:25:19たびたびすみません。度素人です。
.NETのDLLをCOM化するにはどうしたらよいのでしょうか。
COM化とはActiveXにするということですか?
0391デフォルトの名無しさん
2005/07/22(金) 22:52:160392デフォルトの名無しさん
2005/07/23(土) 01:37:38最初はそんな事はなかったのですが、
ブレークポイントを置いてデバッグ実行する際、
ブレークポイントが、下に数行勝手にずれてしまいます・・・orz
(ブレークポイントで止まります・・・が、自分が見たい変数の内容や条件文は
すでに実行された後で、デバッグが非常にやりずらい状況です)
解決する方法はありますでしょうか?
新規に別プロジェクトで作成するアプリケーションでは発生しません。
開発環境の問題と言うより、おかしくなるプロジェクトの問題なのでしょうか?
0393デフォルトの名無しさん
2005/07/23(土) 01:40:200394デフォルトの名無しさん
2005/07/23(土) 06:04:410395デフォルトの名無しさん
2005/07/23(土) 08:26:21[ビルド(B)] - [(プロジェクト)の消去(N)]
0396デフォルトの名無しさん
2005/07/23(土) 09:40:30そのCApp001::Funcを関数へのポインタの変数に代入しようとしているかほかの関数の引数に渡そうとしているだろ。
0397デフォルトの名無しさん
2005/07/23(土) 13:45:11数値を文字描画するプログラムを作ったのですが(クリップしない)、
文字を消去する時、ピクチャーボックス外にはみ出た文字が消去されません。
これ以外の処理は何をすればよいでしょうか?
CWnd* h = GetDlgItem(IDC_PICTURE);
h->Invalidate(); //再描画すべき領域を設定
開発環境はVC++6.0です。
0398デフォルトの名無しさん
2005/07/23(土) 13:58:38描き直したい領域全てをInvalidate()しろ。
ぶっちゃけ、ダイアログ全体で試してみればよかろう。
#つーか、はみ出したところが判っているならそこだけInvalidate()すればいいのだが。
0399397
2005/07/23(土) 16:20:23//CWnd* h = GetDlgItem(IDC_PICTURE);
CWnd* h = GetDlgItem(IDD_KYOKUSEN01_DIALOG);
h->Invalidate(); //再描画すべき領域を設定
はみ出したところだけInvalidateするという方法も調べてもわかりません。
とりあえず、ピクチャーボックスの4方にこんな感じではみ出ている状態です。
a
a□a
a
0400デフォルトの名無しさん
2005/07/23(土) 16:28:500401デフォルトの名無しさん
2005/07/23(土) 18:18:590402デフォルトの名無しさん
2005/07/23(土) 18:21:150403デフォルトの名無しさん
2005/07/23(土) 19:45:38って言ってるのと同じだな。
0404デフォルトの名無しさん
2005/07/23(土) 20:25:530405デフォルトの名無しさん
2005/07/23(土) 21:02:08って感じか。
0406デフォルトの名無しさん
2005/07/23(土) 21:13:260407デフォルトの名無しさん
2005/07/23(土) 21:38:51C++にWindows用も何もないだろ。
Microsoftが開発・販売している、プログラミング言語にC++を採用した、Windowsアプリ統合開発環境ソフトの商品名がVisualC++。
0408デフォルトの名無しさん
2005/07/23(土) 22:09:32.cppと.hで書き分けるのにはどういう意味があるんでしょうか?
回答お願いします。
0409デフォルトの名無しさん
2005/07/23(土) 22:16:55C/C++スレの過去スレで同じ質問があったな
0411デフォルトの名無しさん
2005/07/23(土) 22:50:46ここはウインドウズ用のアプリを開発する人のスレ
0412392
2005/07/24(日) 00:48:24>>393
確認してみましたが、デバッグ実行です。コードの最適化も「なし」になっています。
>>394
それはありません。自分で作成したクラスのコンストラクタや、メンバ関数内です。
>>395
はい。既に何度も行っています。オブジェクトファイルや .ncb ファイルの削除も効果がありませんでした。
他に確認すべき所はありますでしょうか?
0413デフォルトの名無しさん
2005/07/24(日) 00:50:31混合モードでみてみろ。
0414392
2005/07/24(日) 01:26:47早速見てみました。
004FBD4E push 800h
004FBD53 push 0
004FBD55 mov eax,dword ptr [this]
004FBD58 add eax,78h
004FBD5B push eax
004FBD5C call @ILT+11765(_memset) (4D7DFAh)
004FBD61 add esp,0Ch
pThread = NULL;
004FBD64 push offset string "LogicCam" (6AAEE8h)
004FBD69 mov ecx,dword ptr [this]
004FBD6C call CWnd::SetWindowTextA (4DB874h)
#ifdef OFFLINE
pThreadOffLine = NULL;
004FBD71 mov eax,dword ptr [this]
004FBD74 mov dword ptr [eax+0A84h],0
#endif
004FBD7E mov eax,dword ptr [this]
004FBD81 mov dword ptr [eax+0A88h],0
memset(&PostResultStr[0], 0x00, sizeof(PostResultStr));
004FBD8B mov eax,dword ptr [this]
004FBD8E mov dword ptr [eax+0A8Ch],27Fh
this->SetWindowText("LogicCam");
のようになりました。
this->SetWindowText("LogicCam"); に該当すると思われるニーモニックが上にずれています。
ちょうど、ブレークポイントのズレ量と一致します。
0415デフォルトの名無しさん
2005/07/24(日) 01:47:02設定したデフォルトの高さになってしまうようですが、
項目が空の場合だけ高さを調整することってできませんか?
もしくは空の場合にドロップダウンできなくする方法はありませんか?
ただし、ドラッグ&ドロップに対応させたいので無効にしない方法で。
うまく説明できませんがお願いします。
0416デフォルトの名無しさん
2005/07/24(日) 02:34:49関数呼出しごとに引数で渡されたポインタのメモリ確保領域をインクリメントする
ということは可能でしょうか?
0417デフォルトの名無しさん
2005/07/24(日) 02:43:18うーん。
void piyo(int* fuga){
}
みたいな関数で、fugaの内容をインクリメントするって事??
void piyo(int* fuga){
++(*fuga);
}
じゃダメ? これって、基本的な部分のC言語のお話ですよね。
0418デフォルトの名無しさん
2005/07/24(日) 02:50:25そのファイルをVisual C++で扱えないんですか?
Visual C++はEUC-JPはサポートしてませんか?
0419デフォルトの名無しさん
2005/07/24(日) 02:59:42うーん。文字コードだったらSHIFT-JISへ変換して使えば??
変換ツールなら、オンラインソフトでもいくつかあります。
ttp://www.vector.co.jp/vpack/filearea/win95/util/text/conv/code/index.html
もしくは、秀丸みたいにサポートしているテキストエディタで開いて
VC++画面へコピペするとか。
0420デフォルトの名無しさん
2005/07/24(日) 08:23:23少なくとも2003は開けるはずだぞ。
C++ソースコードエディター(エンコード付)
を使えば開ける。
0421デフォルトの名無しさん
2005/07/24(日) 11:01:01IDEはOFFLINEが定義されてないと思ってるけどコンパイラはOFFLINEが定義されていると思ってる。
OFFLINEの定義を確認してリビルドしてみる。
0422392
2005/07/24(日) 11:55:30OFFLINEは、 stdafx.h で
#define OFFLINE
として、定義しています。試しにプロジェクトのプリプロセッサ定義の所で
WIN32;_WINDOWS;_DEBUG
を
WIN32;_WINDOWS;_DEBUG;OFFLINE
にしてみました。コンパイラは
warning C4005: 'OFFLINE' : マクロが再定義されました。
と、言ってきました。(予想通りですが)
ちなみに、OFFLINE を無効にしても、同様にブレークポイントのズレは
発生してしまいます。
IDEがOFFLINEが定義されてないと思ってる・・・とありますが、
これは、どのように確認するのでしょうか?
0423デフォルトの名無しさん
2005/07/24(日) 13:34:59キミが返答してる先に、「OFFLINEの定義を確認してリビルドしてみる」と書いてあるのにキミは何をやってるのかね?
0424392
2005/07/24(日) 14:15:30すみません。何か間違っていますでしょうか?
「OFFLINEの定義を確認してリビルドしてみる」をやってみた結果、
422 のようになりました。
OFFLINEは、 stdafx.h で #define OFFLINE として、定義されている事を
確認した上でリビルドしてみましたが、状況に変化はありませんでした。
stdafx.h 内の定義とは別に、プロジェクトのプロジェクトの
プリプロセッサ定義を変更してみましたが、ブレークポイント停止位置が
ずれる現象に変化はありませんでした。
また、OFFLINE の定義を無効にしてリビルドしても、同様に状況は変わりません。
0425デフォルトの名無しさん
2005/07/24(日) 14:38:22メンバ変数をmemsetで2048byteほど0クリアしているところをコメントアウトしてみなさい。
それでも変わらないならそのプロジェクトをどこかのアップローダに丸ごとあげてみてください。
誰かヒマな人がみてくれるでしょう。
0426誰か教えて!!
2005/07/24(日) 22:01:29ホンマにお願いします!!!!!!!!!!!
下記に示したマージソートの中の最終行にある関数、divide_from(),merge()を
実装すること。
(不足部分がある場合は適切に補うこと。細かい誤りがある場合は訂正せよ)
参考:マージソートの手順(下記を再起的に行なう)
1.リストを分割する。(クイックソートとは異なり、単に前半と後半に分ける)
2.分割したリストをそれぞれマージソートする。
3.ソートした二つのリストをマージする。
template < class Node_entry >
struct Node
{
Node_entry entry ;
Node < Node_entry > *next;
Node() { next == NULL; }
};
template < class List_entry >
class List
{
protected :
int count ;
Node < List_entry > *head ;
};
0427デフォルトの名無しさん
2005/07/24(日) 22:04:23ぼるじょあがC/C++の宿題を片づけますYO! 48代目
http://pc8.2ch.net/test/read.cgi/tech/1121471445/l50
0428誰か教えて!!(続き)
2005/07/24(日) 22:04:39class Sortable_list : public List < Record >
{
public :
void merge_sort();
private :
void recursive_merge_sort( Node < Record > * & );
Node < Record > * divide_from( Node < Record > * );
Node < Record > * maege( Node < Record > *, Node < Record > * );
};
template < class Record >
void Sortable_list < Record > :: merge_sort()
{
recursive_merge_sort( head ) ;
}
template < class Record >
void Sortable_list < Record > :: recursive_merge_sort( Node < Record > * &head )
{
if ( head != NULL && head -> next != NULL ) {
Node < Record > * second_harf = divide_from( head );
recursive_merge_sort( head );
recursive_merge_sort( second_half ) ;
head = merge ( head, second_half ) ;
}
}
お願いしますm(__)m
0429デフォルトの名無しさん
2005/07/24(日) 22:16:17君も初心者を超越したのなら聞き分けたまえ。
0430デフォルトの名無しさん
2005/07/25(月) 13:59:510431デフォルトの名無しさん
2005/07/25(月) 14:49:34右クリック→宣言へ移動
に相当するショートカットってありますか?
VB6はShift + F2で行けたので、重宝してたのですが・・・
0432デフォルトの名無しさん
2005/07/25(月) 14:53:55設定でいろいろ変えられるが、デフォルトはCtrl+F12 かな。
ツール-オプション-環境-キーボードで検索できる
0433デフォルトの名無しさん
2005/07/25(月) 15:00:50いや、.NETは知らんが、VC6はF12なもんでよ
0434デフォルトの名無しさん
2005/07/25(月) 15:03:15static TCHAR strFile[MAX_PATH];
ofn.lpstrFile = strFile;
を宣言しといて、
GetOpenFileName(&ofn) で strFile にファイルパスを格納。
その後、 VCMP3 の vbmp3_open(const char *, InputInfo *) で
vbmp3_open(strFile, &audioData);
として strFile を再生したいんですが、コンパイラに型が一致しないと蹴られます。
詳しい方おせえてくらさい。
0436デフォルトの名無しさん
2005/07/25(月) 15:11:22そりゃそうだ。
strFileはTCHAR[MAX_PATH]型、配列だからTCHAR *やconst TCHAR *には変換できる。
しかしvbmp3_openの引数はconst char *、どれとも一致していないじゃないか。
ATL::CT2AやCStringを使って変換すればよし。
0437434
2005/07/25(月) 15:19:30VC++ 2005 Express Edition を使っとりまして、 ATL 系は使えないという…。
CString についても知識がありません。
Win32 API で変換できません?
0438デフォルトの名無しさん
2005/07/25(月) 15:24:31そのままビルドすれば動くだろ
動いたやつを真似するだけだ
0439デフォルトの名無しさん
2005/07/25(月) 15:32:55WTLにCStringあったと思うけど
Unicodeでコンパイルしてる?
0440デフォルトの名無しさん
2005/07/25(月) 15:46:07これでコンパイル通らんか?
0441434
2005/07/25(月) 15:48:32WTL とは何でしょーか...?(^^;;
CString でいけるみたいなんで、そっち覚えます。
資料読んでますけど、今ひとつ…。
どなたか簡単なソースを示してもらえません?
0442434
2005/07/25(月) 15:50:44弾かれました…。
0443デフォルトの名無しさん
2005/07/25(月) 15:52:37型は合ってるんじゃないか?
static TCHAR strFile[MAX_PATH];
const char * hoge=strFile;
0444デフォルトの名無しさん
2005/07/25(月) 15:55:00vbmp3_open(CStringT<char>(strFile), &audioData);
>>440>>443
だからUnicodeにしたら駄目なんだって。
0445434
2005/07/25(月) 16:02:05VC++ 2005 Express Edition では、ATL に加えて MFC もないようです。
ちょっと知識がないのであれですが、
MFC が死んでると CString も使えない?
0446デフォルトの名無しさん
2005/07/25(月) 16:08:19CStringはMFCとATLの共用。どっちかがあればいい。
で、VC2005にはどっちもないと。
0447434
2005/07/25(月) 16:14:330448デフォルトの名無しさん
2005/07/25(月) 16:41:100449デフォルトの名無しさん
2005/07/25(月) 16:56:26inline const char *ToCharStr(const char *p)
return p;
}
const char *ToCharStr(const wchar_t *p)
{
static char buf[1024];
WideCharToMulchByte();
return buf;
}
0450デフォルトの名無しさん
2005/07/25(月) 17:10:000451381
2005/07/25(月) 17:10:30VCにて秀丸のような設定ができるコントロールはどうやって作るのでしょうか。
0452デフォルトの名無しさん
2005/07/25(月) 17:20:47普通のツリーコントロール、チェックボックス、ボタンとかですね
特別なコントロールは使ってないはず
0453381
2005/07/25(月) 17:26:00http://www.codeguru.com/Cpp/controls/treeview/misc-advanced/article.php/c727/
>>452回答ありがとうございます。
0454434
2005/07/25(月) 18:36:43char *szName;
szName = (char*)malloc(MAX_PATH);
WideCharToMultiByte(CP_ACP, 0, strFile, -1, szName, 0, NULL, NULL);
MessageBox(NULL, (LPCTSTR)szName, NULL, MB_OK);
としましたが、無意味な文字列が szName に入ります…。
んと…、これ↑は一体何をやってるんでしょうか?
マルチバイト文字への変換が char * 型と関係あるのか分かってません。
0455381
2005/07/25(月) 18:55:38これはさっぱり使えませんでした。
一般的にはツリー型ダイアログというそうですが、サンプルとか
全然無いのに、みなさん実装してますね。
0456381
2005/07/25(月) 19:18:44使ってみます。
http://www.codeproject.com/property/treepropsheet.asp
0457デフォルトの名無しさん
2005/07/25(月) 20:51:38MSDNを100回嫁
0458デフォルトの名無しさん
2005/07/25(月) 21:27:07num=new int[5][5]; ---(2)
(1)(2)は何を行う命令かをおしえてください。
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
System.out.print(num[i][j]+"");
}
System.out.println("");
何を行う命令か教えてください。お願いします。
0459デフォルトの名無しさん
2005/07/25(月) 21:29:21Visual C++と関係ないだろ。
0460デフォルトの名無しさん
2005/07/25(月) 21:40:54まぁまぁ、どこに書いていいか分からないだけかもしれないから
そんなに角立てないで。
(1) int num[][] を行う命令。
(2) num=new int[5][5] を行う命令。
0461デフォルトの名無しさん
2005/07/25(月) 21:58:01C宿題にも来てただろ
0462デフォルトの名無しさん
2005/07/25(月) 22:09:170463デフォルトの名無しさん
2005/07/25(月) 22:35:10そんなに難しくないんだから自分で考えればいいのに。
0464434
2005/07/25(月) 23:13:31WideCharToMultiByte の使い方が分かってなかった...orz
---
char szName[MAX_PATH];
DWORD dwLen = WideCharToMultiByte(CP_ACP, 0, strFile, -1, NULL, 0, NULL, NULL);
WideCharToMultiByte(CP_ACP, 0, strFile, -1, szName, dwLen, NULL, NULL);
szName[dwLen] = '\0';
vbmp3_open(szName, &audioData);
---
皆さん助かりました。どもです^^
0465デフォルトの名無しさん
2005/07/25(月) 23:15:190466434
2005/07/25(月) 23:21:58「UNICODEの定義」ってのは、どういうことなんでしょ?
自分がどの文字コードでコンパイルしてるかはどうすれば分かるんでしょうか。
適当なテキストエディタでソース開いて→UNICODEで保存。
あとは普通にVC++で開いてコンパイル。これでおk?
0467デフォルトの名無しさん
2005/07/25(月) 23:27:08そうじゃなくてTCHARは#define UNICODE(あるいはそれに相当するコンパイラオプション)が書いてあるかどうかで
wchar_tとcharのどっちからtypedefされるのかが切り替わるような仕組みになっている。
で、このUNICODEの定義を消したら……、ということ。
0468デフォルトの名無しさん
2005/07/25(月) 23:29:490469434
2005/07/25(月) 23:34:25今の環境では UNICODE が define されてますけども、
これは何もいじらなければ、ずっとこのままですよね?
特にいじったりする気はないんで問題なさげに見えますが…。
0470434
2005/07/25(月) 23:44:15↓
static LPTSTR strFile;
として直しました。
これで良くなった?
0471デフォルトの名無しさん
2005/07/25(月) 23:51:160472デフォルトの名無しさん
2005/07/26(火) 04:20:13とりあえず思いつくのは
1.グローバル関数をnamespaceでくくる
namespace Hoge {
void Mage();
void Moge();
};
Hoge::Mage();
Hoge::Moge();
たいていクラスで実装してるんであまり使えないかな・・・。
2.適当なグローバルなインタフェースポインタを使う
extern Hoge* g_pHoge;
g_pHoge->Mage();
g_pHoge->Moge();
ポインタ生アクセス嫌なら
Hoge* GetHoge(){ return g_pHoge; }
GetHoge()->Mage();
とかかな。
3.シングルトン使う
Hoge::getInstance()->Mage();
Hoge::getInstance()->Moge();
ちょっとタイプ量が長くなりそ・・・。
なんかこうすればお勧めとか、
アレはこういう欠点が、コレはこういう長所がとかあればご教授ください。
0473デフォルトの名無しさん
2005/07/26(火) 07:51:00// xstring internal header (from <string>)
#if _MSC_VER > 1000
#pragma once
#endif
....
って続くxstringファイルが表示されました。
このあと、どんなスケルトンプログラムをつくってもエラーが多数生じ、
このファイルが表示されるようになってしまったのですが、解決法はないでしょうか。
VC++6.0sp6ですが、再インストールしかないでしょうか?
0474デフォルトの名無しさん
2005/07/26(火) 08:29:50俺だったら1にする。
あるいは普通に作って、「::(最初の数文字)」と打ったり、「(最初の数文字)Ctrl+Space」と打ったりする。
0475デフォルトの名無しさん
2005/07/26(火) 09:21:04一番やらなさそうなのは2
0476デフォルトの名無しさん
2005/07/26(火) 10:25:420477デフォルトの名無しさん
2005/07/26(火) 11:23:220478デフォルトの名無しさん
2005/07/26(火) 12:07:57一括で置換する場合どうやってます?
編集→ファイルから検索で該当ファイルをリストアップし
一つずつ開いて置換してるんですけど、ファイルが多いと大変です。
いい方法ないでしょうか? VC++6.0です。
0479デフォルトの名無しさん
2005/07/26(火) 12:23:00find あるフォルダ -name "*.[ch]*" -type f|xargs grep -l '変数名'|xargs vi
viが起動したら
:%s/変数名/新変数名/gc
0480デフォルトの名無しさん
2005/07/26(火) 12:26:590481デフォルトの名無しさん
2005/07/26(火) 13:55:000482デフォルトの名無しさん
2005/07/26(火) 14:01:080483デフォルトの名無しさん
2005/07/26(火) 14:02:330484デフォルトの名無しさん
2005/07/28(木) 00:58:14単語置換ができるオプションがあるが、動作がまともじゃないとおもう。
0485デフォルトの名無しさん
2005/07/28(木) 18:01:20include ファイルを開けません。'windows.h': No such file or directory
なにこれなんかパスが設定されて無いの…?windows.hってどこにありますか?
0486デフォルトの名無しさん
2005/07/28(木) 18:18:53F3で検索できるだろ。
0487デフォルトの名無しさん
2005/07/28(木) 18:25:360488デフォルトの名無しさん
2005/07/28(木) 18:25:43記憶から完璧に消えてました。ありがとう
0489デフォルトの名無しさん
2005/07/28(木) 18:26:00PlatformSDKが含まれてなかったような気がしないでもない。
-> 別途DLして自前でインスコ
VS2005b2なら同時にインスコされるけど。
0490デフォルトの名無しさん
2005/07/28(木) 18:27:19>>489
さんくす
0491デフォルトの名無しさん
2005/07/28(木) 18:45:59PSDK-amd64.exe
1319 KB
PSDK-ia64.exe
1418 KB
PSDK-x86.exe
1294 KB
すいませんどれですか?
0492デフォルトの名無しさん
2005/07/28(木) 18:50:54環境に合わせろとしか言いようがないなぁ。
上:Athlonの64bit版ならこれ
中:Pen4等の64bit版ならこれ
下:従来の32bitCPUならこれ
0493デフォルトの名無しさん
2005/07/28(木) 18:53:13すみませんありがとうございます。
0494デフォルトの名無しさん
2005/07/28(木) 18:59:07>中:Pen4等の64bit版ならこれ
嘘はいかんよ。
0495デフォルトの名無しさん
2005/07/28(木) 19:08:280496デフォルトの名無しさん
2005/07/28(木) 19:18:59スマン。何も考えずに書いた。
Ita用か
0497デフォルトの名無しさん
2005/07/28(木) 19:52:38手順 2. Microsoft Platform SDK をインストールします。
Platform SDK は、ウェブ上の Platform SDK 更新サイトからインストールすることができます。サイトにアクセスしたら、[Download] をクリックし、リストから Windows SDK、続いて Core SDK を忘れずに選択してください。
手順 3. [オプション] ダイアログ ボックスの [プロジェクトとソリューション] セクションで [Visual C++ フォルダ] を更新します。
このセクションでは、適切なサブセクションにパスを追加します:
Executable ファイル - 「C:\Program Files\Microsoft SDK\Bin」
Include ファイル - 「C:\Program Files\Microsoft SDK\include」
Library ファイル - 「C:\Program Files\Microsoft SDK\lib」
一応この手順3にたどり着いたのですが意味がわかりません。というか手順2の時点で間違っていたのでしょうか?
0498デフォルトの名無しさん
2005/07/28(木) 19:56:320499デフォルトの名無しさん
2005/07/28(木) 19:57:460500デフォルトの名無しさん
2005/07/28(木) 20:56:50インストールしたSDKの方にパスを通すということだ。
0501デフォルトの名無しさん
2005/07/28(木) 22:02:54これって「ツール」→「オプション」で出てくるプロジェクトおよびソリューションのどっかいじれってことですよね?
すいません、よくわからなくて…。って俺は何時間こんなことやったんだ!!!!!!!
0502デフォルトの名無しさん
2005/07/28(木) 22:42:19WIN32APPLICATIONで、
親ウインドウより、ダイアログをCreateDialogで、
ダイアログを表示していますが、ダイアログが、閉じると同時に、
親ウインドウも閉じてしまいます。
親ウインドウは、閉じない方法はありますでしょうか。
0503デフォルトの名無しさん
2005/07/28(木) 22:56:200504デフォルトの名無しさん
2005/07/28(木) 23:00:07VC++6.0 Win2k 非MFCで
ダイアログボックス表示中に他のアプリのウインドウを操作できないようにしたいのですが
何か方法はありますか?
フックとか使えばできるんでしょうか?
(っていうかフックってのがよくわかってないのですが。。)
0505デフォルトの名無しさん
2005/07/28(木) 23:14:32int WINAPI WinMain(HINSTANCE , HINSTANCE,LPSTR,int);
この、第一引数を、
DialogBox(この第一引数にわたしています。)
それから、CreateDialog でなくて、DialogBoxでした。
BOOL CALLBACK dlgproc(HWND,UINT,WPARAM,LPARAM);
この第一引数を
EndDialog(この第一引数にわたしています。);
で答えになっていますか?
0506デフォルトの名無しさん
2005/07/28(木) 23:38:03話すと長くなるけど、
メインウィンドウとダイアログを表示することに関してはHINSTANCEハンドルはどこも同じでいいから、
HWNDハンドルに関して、
CreateWindowの戻り値入れるHWNDハンドルと
DialogBoxのHWNDハンドルと
CALLBACK dlgprocのHWNDハンドルと
EndDialogのHWNDハンドルを
それぞれ1つだけ変えて走らせてみるとおもしろいことが分かるよ(きっと理解が深まる)
それと、HWNDハンドルが複数要った場合、定義する位置も考えて、
すなはち、グローバルにコードの頭でなのか関数の中(例えば、CALLBACK WndProc(?)の中)でなのか
0507デフォルトの名無しさん
2005/07/28(木) 23:55:050508デフォルトの名無しさん
2005/07/29(金) 00:33:41char a[4];
printf("4文字入力");
scanf("%s",a);
のようにして、4文字を一文字づつ読み取るにはどうすばいい?
初心者に教えてください。
0509デフォルトの名無しさん
2005/07/29(金) 00:41:02いた間違えた。
0510デフォルトの名無しさん
2005/07/29(金) 00:41:52フックとか使えばできると思うよ。
0511デフォルトの名無しさん
2005/07/29(金) 01:06:21ググってもマック用のCコンパイラソフトが見つからなかったので、、、
0512デフォルトの名無しさん
2005/07/29(金) 01:12:51デベロッパーツールが入ってるから買う必要はない
0513デフォルトの名無しさん
2005/07/29(金) 01:16:15よりたくさんの数字が表示されますか?
0514どくろべい
2005/07/29(金) 02:12:38DirectXをVC++で使うのにDirectX9.0SDKを
インストールしたのですが、
VC++でプロジェクト新規作成時、
DirectX9 AppWizardが表示されません。
どうやれば表示できるかおしえて〜(><)
0515デフォルトの名無しさん
2005/07/29(金) 02:20:38DirectX SDK Sample Browser
0516デフォルトの名無しさん
2005/07/29(金) 02:34:55取り敢えず%.15gとデモして味噌。
0517デフォルトの名無しさん
2005/07/29(金) 06:23:080518デフォルトの名無しさん
2005/07/29(金) 09:46:39VC++Standard.NET2003を買おうと思うのですが、最適化をするためにtoolkitを使おうと思っています。
そのためには特別な設定が必要なのでしょうか?
また、このコンパイラを使った場合、エラーメッセージ等は英語になってしまうのでしょうか。
VC++を買う前に検討したいと思いました。
0519デフォルトの名無しさん
2005/07/29(金) 10:27:37そのためには特別な設定が必要なのでしょうか? = PC初心者
エラーメッセージ等は英語になってしまうのでしょうか。 = 低学歴
心配ありません
最適化とは無縁です
0520518
2005/07/29(金) 10:52:47初心者ですが、BCC+BCCDevで少し勉強しています。
次のステップに買おうと思っています。
>PC初心者
というかVC++初心者なのでどういう設定が必要なのか教えて下さい。
>低学歴
ということは英語になるという事ですね?
また、初心者で無い人はどのバージョンを買うのも合わせて教えていただけると嬉しいです。
0521デフォルトの名無しさん
2005/07/29(金) 10:56:49会社とかならMSDNとかボリュームライセンスで入手するだろうな。
学生なら初心者かどうかにかかわらず、the Spokeが安くてPro相当だからそれを買えばいい。
0522デフォルトの名無しさん
2005/07/29(金) 11:17:10ありがとうございます!16桁以上がどうしてもでなくて・・・
でもありがとうございました!
0523518
2005/07/29(金) 11:41:46そうですか。どうもありがとうございます。
で、当方学生じゃないし、金額の面でもstandardを買おうと思うのですが、
>>518の質問なのですがどのような設定をするのでしょうか。
「visualC++ standard 最適化 toolkit」なのでググって見たのですが
設定の仕方を解説した記事等が見当たりませんでした。
0524デフォルトの名無しさん
2005/07/29(金) 12:01:00visual c++ toolkit でぐぐったら使い方なんかいくらでも見つかるし、
それ見てわからんのだったらあきらめろ
Standard.からtoolkit使うのはそれができてから考えろ
0525518
2005/07/29(金) 12:32:10>Standard.からtoolkit使うのはそれができてから考えろ
いちいちレスするの面倒だろうし、レス消費ももったいないのでサクっと教えてくれませんか?
0526デフォルトの名無しさん
2005/07/29(金) 12:49:200527デフォルトの名無しさん
2005/07/29(金) 12:58:35↓
A.pro以上を買って下さい。
じゃなくて、Qを教えて下さい。
0528デフォルトの名無しさん
2005/07/29(金) 13:06:09A.自分で調べましょう。それができないなら>526で。
0529518
2005/07/29(金) 13:08:00おまえさぁ・・・このスレにいる意味ないだろ
0530518
2005/07/29(金) 13:16:25が、代弁してくれてありがとうw。
以降、ニセモノ出るかもしれないけど、答えられない人は無駄なレスはしてないでおとなしくしていましょうよ。
自分で調べましょうとか、〜のあとに考えろとか、お前じゃ無理だから心配するなとか、
無意味なアドバイスはいらないです。
0531デフォルトの名無しさん
2005/07/29(金) 13:23:39ああ書いちゃった。
漏れ知らね
0532デフォルトの名無しさん
2005/07/29(金) 13:23:44それできないと質問自体無意味だぞ
0533デフォルトの名無しさん
2005/07/29(金) 13:34:21エラーメッセージ等は英語にならない
0534デフォルトの名無しさん
2005/07/29(金) 13:40:44つ[分相応]
0535デフォルトの名無しさん
2005/07/29(金) 13:47:05つ[ぬるぽ]
0536デフォルトの名無しさん
2005/07/29(金) 15:45:58いいかげん6.0だと無理が出てきたんで乗り換えようと思ったけど
2005はstandardでも最適化できるっぽい・・・悩む
0538初心
2005/07/29(金) 16:34:40どうすれば実行できますか?
0539デフォルトの名無しさん
2005/07/29(金) 16:56:29Windows には UNIX のソケットはありません。
WinSock について調べてみてください。
0540初心
2005/07/29(金) 17:03:080541デフォルトの名無しさん
2005/07/29(金) 19:31:38アホだと思う。
0542デフォルトの名無しさん
2005/07/29(金) 20:07:39>>506さん
>>517さん
いろいろアドバイスいただきまして、ありがとうございました、
ハンドルいろいろ変えて試してみました。
理解が深まってきたと思います。
画面が、すべて閉じてしまったのは、
コマンドイベントの終わりに、break;を入れてないからでした。
みなさまありがとうございました。
0543デフォルトの名無しさん
2005/07/29(金) 20:12:32素直だと思う。
0544デフォルトの名無しさん
2005/07/29(金) 20:59:10初心者スレで裏技質問するなアホ
0545デフォルトの名無しさん
2005/07/29(金) 21:19:11初心者スレで表技質問しろアホ
0546デフォルトの名無しさん
2005/07/29(金) 21:35:070547デフォルトの名無しさん
2005/07/29(金) 22:17:24win環境で実行するにはどうしたらよいのでしょうか?
pthread_create()をそのまま使いたいというわけではなく、
winでも同じ機能を持った関数があればそちらを教えていただきたいと思っています。
VC++.net2003をwin環境でのプログラム用として使っています。
0548デフォルトの名無しさん
2005/07/29(金) 22:17:52_beginthreadex()かな。
0549デフォルトの名無しさん
2005/07/29(金) 22:19:24極秘情報
0550デフォルトの名無しさん
2005/07/29(金) 22:53:55むしろStandardユーザーのためのものです。
0551デフォルトの名無しさん
2005/07/29(金) 23:40:47MSのサポート受けられなくなる時点で裏技。
0552デフォルトの名無しさん
2005/07/29(金) 23:44:33第10引数
HANDLE hInstance, // handle to application instance
は hInstance なのに、ヘルプで HINSTANCE になっているのは
どうしてですか?
GetModuleHandle(0) でパラメータを与えてるソースを見たこと
があるのですが、これは問題ないでしょうか?
0553デフォルトの名無しさん
2005/07/29(金) 23:45:16↓
趣味:VC++2005expressβ(無料、配布OK)
↓
商用:pro以上(10万円以上、商用OK)
0554552
2005/07/29(金) 23:49:29○ヘルプで HINSTANCE になっていないのはどうしてですか?
どっちでも同じなんでしょうけど、悪いのはヘルプという認識でよい??でしょか
0555デフォルトの名無しさん
2005/07/29(金) 23:53:55HANDLEなのはたぶん修正漏れだと思われる。
Win32ではHMODULEとHINSTANCEは同一の扱いだから、GetModuleHandleの戻り値をHINSTANCEとして扱うのは全然問題ない。
そしてGetModuleHandleは引数0だとWinMainの最初の引数のHINSTANCEと同じ値を返す。
(というよりWinMainを呼ぶ側がWinMain(GetModuleHandle(0), ..);としている)
0556デフォルトの名無しさん
2005/07/29(金) 23:58:05おぉ・・・こんなことを実際していたのですか。
ひとつ勉強になりました。ありがとうございます。
0557デフォルトの名無しさん
2005/07/30(土) 03:47:22VC++2005expressβはMFC付いてないだろ。
製品版はいつ発売だ?
0558デフォルトの名無しさん
2005/07/30(土) 05:11:550559デフォルトの名無しさん
2005/07/30(土) 06:15:40Visual Studio 2005 Express Edition よく寄せられる質問
Visual C++ 2005 Express Edition には MFC と ATL が含まれますか。 いいえ、MFC と
ATL は Visual C++ 2005 Express Edition には含まれません。MFC と ATL は、その他
のすべての Visual Studio 2005 エディションに含まれる予定です。 ...
www.microsoft.com/japan/msdn/ vstudio/2005/express/faq/default.aspx - 70k - キャッシュ - 関連ページ
0560デフォルトの名無しさん
2005/07/30(土) 09:22:47過疎スレだったみたいでレスがつきません、誘導させてください。
http://pc8.2ch.net/test/read.cgi/tech/1035653663/359
0561デフォルトの名無しさん
2005/07/30(土) 09:40:26もし、クラスを多appにわたり活用したいとき、
同じプロジェクト内だけですが、
ヘッダーファイルに、class定義を書き込むという方法になるのでしょうか。
hファイルに
class Mocc{
Mocc();
open();
}
このように宣言して、使うのでしょうか。
0562デフォルトの名無しさん
2005/07/30(土) 10:46:06あんな過去からある過疎スレに誘導しないでこっちで仕切りなそうよ。
で、情報量が少ないので追加希望。
・VCのバージョンは?
・DDXのm_ixに関わるコードはどうなっている?
要は、自分のプロジェクト内を問題のメンバ変数名で検索してみろと。
0563デフォルトの名無しさん
2005/07/30(土) 11:01:01すみませんでした。
classの追加でできそうです。
0564デフォルトの名無しさん
2005/07/30(土) 14:24:48>VCのバージョンは?
Ver.は確かsp6だったと思います。
>DDXのm_ixに関わるコードはどうなっている?
すみません、素人なもんで質問の意味がピンときません。
AfxBeginThread近辺のコードと言うことでしょうか?
コードを貼りたいのですが今手元に無いので
月曜日にでも改めてこちらに伺いますのでよろしくお願いします。
0565デフォルトの名無しさん
2005/07/30(土) 14:32:21|
|−プロジェクト1
|
|−プロジェクト2
こういう場合、プロジェクト1のグローバル関数を、プロジェクト2から呼び出すことは出来るのでしょうか?
そのまま呼んでみたら、ビルドで外部参照エラーが出てしまうのですが。
0566デフォルトの名無しさん
2005/07/30(土) 14:47:28簡単にやるんなら片方をdll化しといて、
VSのプロジェクト>設定>リンクで他方からリンク張ってやるのは?
て、やってだめだったのかな
0567デフォルトの名無しさん
2005/07/30(土) 15:20:44クライアント領域の内、bitmapが表示されていない部分の色(背景色?)を変えようとして、
OnEraseBkgndをオーバーライドしてPatBltでクライアント領域全体を塗りつぶし、
OnDraw内で、bitbltでbitmapを結びつけたメモリDCを表画面に転送しているのですが、
OnEraseBkgndよりも先にOnDrawが実行されているのか、bitmapが表示されずに
OnEraseBkgndで指定した色でクライアント領域が塗りつぶされてしまいます。
何か良い方法はないでしょうか?
(OnEraseBkgndを消せばbitmapはちゃんと表示されます)
0568デフォルトの名無しさん
2005/07/30(土) 15:25:12>OnEraseBkgndをオーバーライドしてPatBltでクライアント領域全体を塗りつぶし、
必要な部分だけにして→クライアント領域全体
0569デフォルトの名無しさん
2005/07/30(土) 16:12:44それは試していなかったです。
今、ソース環境がないので後でやってみます。
ありがとうござます。
0570デフォルトの名無しさん
2005/07/30(土) 16:14:03社内(同一ワークスペース)の別プロジェクトに有用なスキル(関数)を持った人材(ソース)がいるのなら、
自分のプロジェクトに参加させればいいじゃない。
但し、人間関係(インクルードなどの依存)に注意で。
0571デフォルトの名無しさん
2005/07/30(土) 16:15:00OnEraseBkgndで上書きしちゃうなら、OnEraseBkgndからOnDrawを呼べばいいじゃない。
0572デフォルトの名無しさん
2005/07/30(土) 16:26:04つまり、bitmap部分を避けて、矩形を二つ塗りつぶせって事でしょうか?
矩形1:(0, bitmap.height, bitmap.width, client.height)
矩形2:(bitmap.width, 0, client.width, client.width)
それとも何かスマートな方法があるのでしょうか?
___________________
| |///////|
| bitmap |///背//|
| |///景//|
|___________|///////|
|///////////////////|
|///////////////////|
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
>>567
そうするとOnDrawが2回実行されて、ちらつきが起きませんかね?
0573デフォルトの名無しさん
2005/07/30(土) 16:54:22今ListCtrl(リストコントロール)を使用して、データーベースから
取ってきたアイテムを、各リストに表示するアプリケーションを作っています。
それで、とってきた文字列の最大長に応じて、リストコントロールの
カラムのサイズを変更したいのですが、何か使える関数ありますでしょうか?
今の段階だと、各列の文字列の最大長をstrlen()関数ではかり、
それに応じてカラムのサイズサイズを変更してるのですが、とても
スマートな方法ではない気がします。
ご存知の方はご教授願います。
0574デフォルトの名無しさん
2005/07/30(土) 17:01:00を発展させて、OnDraw内にフラグを設けてやるのはどうでしょう?
フラグが0なのでbitmap貼らない
↓
OnEraseBkgnd呼び出し
↓
OnEraseBkgnd内でフラグを1にして、OnDraw実行
↓
(もしここで、フラグを0に戻したりすると、延々ループにはまって固まっちゃうかも、
あんまりフラグはCALLBACKルーチンでは禁じ手のような気がするけど)
0575デフォルトの名無しさん
2005/07/30(土) 17:03:55まじかよ。
じゃあ2005待つ理由が無くなったね。
0576デフォルトの名無しさん
2005/07/30(土) 17:15:46というのは、ちょっと言葉足らずだったかもしれないけど、
マウスが動くだけでも再描画でしょう
その時、呼び出される最初のOnDrawはフラグが1でそのままOnDraw終了しないといけない。
だから、フラグを0に戻す場所は非常にシビア
以前、これ試してみて、マウスの動きがガックンガックン固まったことがある
やっぱ禁じ手だろうね。駄レスすんまそん。
0577デフォルトの名無しさん
2005/07/30(土) 17:59:27standardはMFC, ATLが付いて最適化ができるぞ。
いままでのproユーザーがstandardに移る感じ。
0578567
2005/07/30(土) 18:02:59どうもOnDrawの実行後にOnEraseBkgndが上書きしているわけではなさそうでした。
現在OnDrawではbitmapの全体を描画しているわけではなく、
クリッピング領域のみを描画しているのですが、
OnEraseBkgndを書かなければOnDraw実行時にbitmap領域がクリッピングにある為正しく描画されるが、
OnEraseBkgndを書くとOnDraw実行時にはbitmapがクリッピングから消えてしまっており、
描画されなくなってしまうような気がしてきました。
(全然見当違いの可能性もありますが…)
引き続き悩み続けます…。
0579デフォルトの名無しさん
2005/07/30(土) 19:52:45OnEraseBkgndで0を返せ。
0580デフォルトの名無しさん
2005/07/30(土) 20:37:05DeleteAllItemsとしてもアイコン部分だけが残ってしまいます。このアイコン部分も
削除するにはどうしたら良いのでしょうか?。
0581567
2005/07/30(土) 20:58:11ダメでしたorz
ちなみにOnEraseBkgndで0を返すとどんな効果があるんですか?
(特に意味も考えずに試してみましたけど)
何かOnDrawの中のbitbltが失敗するんですよ…。(戻値が0)
bitmapが描画されない直接的原因はここのようです。
OnEraseBkgnd中のpDC->GetSafeHdc()をコメントアウトすると成功するんですけど(戻値が1)、
もうわけわかりません…。
0582デフォルトの名無しさん
2005/07/30(土) 21:14:29`ヽ:: ::´
ヽ ヽ , -‐--、 / /
ヽ \ I:::::::I_ _ / /
ヽ ヽ i,(;;;ノI、;;;)l ,,/ , '
ヽ ` ー 、.,,ゝ´ヮ`,ノュ_, - ' r' うはwwwwww8月17日発売のザ・テレビジョンにHG出演www
` 、_ /::: `山'::::: / 皆で買って一位にしようぜwwwwww
ヽ:::::::::::|::::::::"",r‐' それがHGクオリティ
〉::::::::|::::::::::¨/
/;;;;;;;/;;;;;;;;;;/
/;;;;;;;/:::::::::::《 http://that3.2ch.net/test/read.cgi/event/1122721667/l50
<;;;;;;;《:::::::::::::ヽ http://ex10.2ch.net/test/read.cgi/heaven4vip/1122723881/l50
/ ヽI,r''"""^~ヽ 詳しくはこのスレでwwwwww
/ ,/ ヽ ヽ
0583デフォルトの名無しさん
2005/07/30(土) 21:17:28>何かOnDrawの中のbitbltが失敗するんですよ…。(戻値が0)
NT系ならGetLastError()で原因調べれ。
0584567
2005/07/30(土) 21:31:27もうこれ以上頭を使う元気がないので、
pDC->GetSafeHdc()
::PatBlt()
の使用を諦めて
pDC->FillSolidRect()
を使うことで解決としました。
アドバイスくれた方々、ありがとうございました。
0585デフォルトの名無しさん
2005/07/30(土) 21:35:19マウスで選択してクリップボードにコピーできたらなと思っています。
私の目的には、たまたまCHtmlViewがほぼ理想でOKなのですが、
もっと正統派?な方法(ビューでテキスト選択を実現する方法)って何だろなと気になりました。
テキスト選択をイチから実装するのは難儀でしょうから、CEditViewに画像を表示させたりする
のがいいのかなーと思ったのですが、実際のところどうなのでしょう?
詳しいお兄ちゃん方、教えて頂けないでしょうか?
0586デフォルトの名無しさん
2005/07/30(土) 22:46:21いくら位かわかる?
0587デフォルトの名無しさん
2005/07/30(土) 23:27:11CDC::GetCharABCWidths()
0588デフォルトの名無しさん
2005/07/31(日) 03:24:02ひとつのファイルを無事成功し、
違うファイルを作り、実行しようとすると
コンパイルの時点で「_main はすでに 定義されています」
とでて、そこから先へ進めません。
成功したファイルには「プロジェクトファイル」なるものなどが勝手に作られています。
一つを実行させた後でも、何個も作業を実行するにはどうすればいいのでしょうか?
0589588
2005/07/31(日) 03:28:26ついでにコンパイルとビルドの違いを教えていただけますか?
よろしくお願いします
0590デフォルトの名無しさん
2005/07/31(日) 08:24:03ビルドはプロジェクトをビルドすることだな。
って全然説明になってないよ!
0591デフォルトの名無しさん
2005/07/31(日) 12:06:05ビルド:実行ファイルを作る(リンクまで行う)
0592デフォルトの名無しさん
2005/07/31(日) 12:34:200593デフォルトの名無しさん
2005/07/31(日) 13:02:58できる。
0595デフォルトの名無しさん
2005/07/31(日) 15:19:430596デフォルトの名無しさん
2005/07/31(日) 16:10:04VBでかいた関数をVCから呼び出すことは不可能でしょうか?
0597デフォルトの名無しさん
2005/07/31(日) 16:27:19状況がいまいち理解できないんだけど、
1つのプロジェクトの中にmain関数が2個あるんじゃないの?
コンソールアプリならmain関数は1個じゃないとダメだよ。
あと、その質問の内容だと状況がいまいちわからないので、
長文になっても構わないから、操作手順とかをもう少し詳しく教えてください。
0598デフォルトの名無しさん
2005/07/31(日) 16:45:07不可能です。VC++で書いた関数をVBから呼ことは出来ます。
0599デフォルトの名無しさん
2005/07/31(日) 17:01:32うそ教えるな。できるよ。
0600588
2005/07/31(日) 17:15:52私は超初心者ですので、質問がへたくそだったのは申し訳ありません。
でも本当にどうやって質問したらいいか…
例えば
VISUAL C++を開き、
main()
{
int abc,opq,xyz;
abc = 180;
opq = 200;
xyz = abc + opq ;
printf("xyz:%d",xyz);
}
というのを作成し、成功しますよね。そしてそのままC++を開いたまま
次に
main()
{
int abc = 180, opq = 200, xyz;
xyz = abc + opq;
printf("abc(%d) + opq(%d) = %d",abc,opq,xyz);
}
を実行しようとすると
「_main はすでに定義されています」と出てしまい、実行できないのです。
これで困っているのです。なぜ実行できないのでしょうか?
0601デフォルトの名無しさん
2005/07/31(日) 17:16:510602588
2005/07/31(日) 17:19:44あと「1 つ以上の複数回定義されているシンボルが見つかりました」というのもでます
0603デフォルトの名無しさん
2005/07/31(日) 17:30:330604デフォルトの名無しさん
2005/07/31(日) 17:47:38>>588の理解度を知っておきたい
1) プログラミングについて、どれくらい理解している?
・C言語は知ってる(プログラムを作ったことがある)
・VCは初めて
・何もかも初めて などなど
2) エラーが出るまでの操作手順を最初から教えて
プログラムのソースじゃなくて、VC++の操作。
メニューで新規作成を何を選んでどうのこうの、って感じで
0605デフォルトの名無しさん
2005/07/31(日) 17:52:08ありがとうございます。
それはどうやればできるんでしょうか?
または、推奨の書籍はありますか?
0607デフォルトの名無しさん
2005/07/31(日) 18:20:22会津大学生?
0608デフォルトの名無しさん
2005/07/31(日) 18:20:43C++じゃなくて、VC++を使った経験はあるかって聞いてるんだと思うぞ。
まあその様子じゃ使ったこと無いようだが。
ぶっちゃけプロジェクトとかワークスペースとかソリューションとか、
そういうのが分からないんじゃないかな?
0609588
2005/07/31(日) 18:39:05なぜか知りませんが、学校ではコマンドプロンプトをつかって
コンパイルなどをさせられるのです。
それをそのまま家のPCでやろうとするとソフトが立ち上がってしまうので…
0610デフォルトの名無しさん
2005/07/31(日) 18:51:28- C言語
- Cコンパイラ、リンカ
- 統合開発環境(IDE)
の違いが解ってないっぽいね
0611604
2005/07/31(日) 18:56:46それじゃ、ちょっとだけVC++基礎を説明。
VC++では、プロジェクトという単位でプログラム開発をする。
プロジェクトというのは、プログラムを作るために必要なファイルや情報を
まとめたもの、って考えおけばいいと思う。
ワークスペース(ソリューション)ってのはプロジェクトを管理するための入れ物みたいなもの。
ワークスペース上でプロジェクトをビルドすることで、プログラムが作られる。
尚、ワークスペースやプロジェクトのファイルは、VC++で新規作成したときに自動的に作られる。
で、たぶんココが一番大事だと思うんだけど、
1つのプロジェクトからは1つの実行ファイル(プログラム)しか作れない。
C言語やってるなら、main関数がプログラム本体だってのは知ってると思うけど
1つのプロジェクトの中にmain関数を2個入れたらダメ。
どういう操作をしたかわからないけど、たぶんコレが今回のエラーの原因。
新しくもう1個プロジェクトを作れば、とりあえずは解決すると思う。
長文スマン。
0612デフォルトの名無しさん
2005/07/31(日) 19:12:55でも悪くないから、全然^^
0613デフォルトの名無しさん
2005/07/31(日) 19:16:56必用もないのにVC買ってしまうやつが後をたたない
0614デフォルトの名無しさん
2005/07/31(日) 19:18:460615604
2005/07/31(日) 19:18:54プログラムを作るためには、
ソースコード(C言語)をコンパイラに通して
プログラムコード(実行ファイル)に変換してもらう。
ソースコード中で定義してないprintfとかの関数の
プログラムコードを他から持ってきてくっつけるのがリンクという作業。
これをするをリンカって言うんだけど、大抵はコンパイラが兼業してる。
で、学校ではコマンドプロンプトを使ってコンパイルしてるって言うけど
普通、コンパイラはコマンドラインで動くもの。
VC++のような総合開発環境は、コンパイラの上にGUIをかぶせて、
プログラムの開発を楽にした物とでも考えればわかりいいと思う。
言ってることに間違いがあったらツッコミよろしく。
>>612
ありが�d
0616デフォルトの名無しさん
2005/07/31(日) 19:31:250617588
2005/07/31(日) 19:37:11最近、ネットでは心を傷つけられてばかりいたので、余計にありがたい気持ちです
では本題に戻ると、
新しくまた違うファイルを実行させようとするなら、
新しいプロジェクトを作ればいいのですね。
んで、早速やってみたのですよ。
ですが、「この名前では出来ません」とかでちゃいますし、
名前を入れる欄の左でいくつかあるやつの中から選びますが、
それぞれが何なのか分かりませんし、且つどれを選んだらいいかわかりません。
今度はどなたか、プロジェクトの作り方を教えていただけますか?
聞いてばっかで本当に申し訳ありません。m(__)m
0618デフォルトの名無しさん
2005/07/31(日) 19:39:190619デフォルトの名無しさん
2005/07/31(日) 19:44:390620604
2005/07/31(日) 19:49:33>600のようなソースなら普通はWin32 Consoleでいいと思うけど。
あと、既にある物と同じ名前のプロジェクトは作れないので注意。
VCでの開発の仕方は、「VisualC++」 「VC」 「VC++」 「入門」 「初心者」あたりの
キーワードを組み合わせてググれば、いろいろ出てくるよ。
0621デフォルトの名無しさん
2005/07/31(日) 19:51:05他人の心を慮ることもせずに他人に対して刃を振り翳す者に、
全ての人が慈悲の手を差し伸べるとお思いか?
あなたが傷つけられたと言うその刃は、あなた自身が振り翳したものではないのですか?
0622デフォルトの名無しさん
2005/07/31(日) 20:02:08ネットで傷つくなよw
学校でVC++使ってないなら、まずは学校と同じ環境する事をオススメする。
それでもVC++使いたかったら、本とかネットで勉強しながら並行してやった方がいいよ。
VC++ってツールの使い方を覚えるのもC言語そのものを覚えるのも両方とも難しいものだよ。
0623デフォルトの名無しさん
2005/07/31(日) 20:36:320624デフォルトの名無しさん
2005/07/31(日) 20:37:160625デフォルトの名無しさん
2005/07/31(日) 20:38:27GetSysColorの引数のCOLOR_なんたらを使ってreinterpret_cast<HBRUSH>(COLOR_なんたら + 1)としたり、
Create何とかBrushでブラシを作ってそれをhbrBackgroundに入れたりする。
後者のブラシを作る方法の場合は後でDeleteObject()が必要。
0626デフォルトの名無しさん
2005/07/31(日) 20:47:04光秀の部下は反対しなかったんですか?反対したら殺されるとかいう
こともあったかもしれませんが、誰かがこっそりと信長の所へ光秀の
謀反を報告に行かせるとか、そういうことすら無かったのでしょうか?
そんなに信長は嫌われていたんですかね?
0627588
2005/07/31(日) 20:47:53最初に作る場合は、こっちがプロジェクトを作らなくても
勝手にに作ってしまいますからね、わかりません。
ですが、604さんがWin32 Consoleと教えてくれたので
自分で作るときはそれでやってみたいと思います。
>>621
そうですね、もちろん自分にも責任はあります。
おっしゃるとおりです。人間って、難しいですね。
特に、ネットだと殆どの人が本性丸出しになってなってしまうから…
>>622
上でも書いたのですが、
学校と同じ様にVC++を使わずやろうとしても、ソフトが勝手に立ち上がって
しまうのですよ…
確かに>>618の言うとおり、本を買ったりするなどしてみたいと思います。
皆さんご迷惑を掛けました。そしてありがとうございました。
これを反省して、ネットで安易に人に聞くことをやめようとおもいます。
ご迷惑はかかるし、自分もやな思いするばっかりですしね。
すいませんでした。
0628626
2005/07/31(日) 20:48:25板間違えました。
スミマセング
0629604
2005/07/31(日) 21:03:12もういなくなっちゃったかもしれないけど、
人に教わるよりも、自分で調べて、自力でやったほうがいろいろ身に付くよ。
特にVC++なんてのはその辺にたくさん情報が転がってるしね。
とはいえ、どうしても自分だけではわからないこともあるだろうから、
その時はまた質問においでよ。
読み手にちゃんと内容が伝わるように、要点をまとめて質問すれば
ちゃんと回答してくれる人が出てくるよ。
あと、さっきも言ったけど、コマンドラインでも普通にビルドはできる。
どういう手順でビルドしようとしてるのか、どういうソフトが立ち上がるのか
その辺をちゃんとまとめて質問すれば、対処法が見つかるかもよ?
>>626
素敵な誤爆ですね。
0630デフォルトの名無しさん
2005/07/31(日) 21:08:31ネットで傷つけられたってのは、
C言語なら俺に聞け! Part 111
http://pc8.2ch.net/test/read.cgi/tech/1121657911/
の634以降の話か?
まあ、お前がこの先、言語やツールを学んで理解できるようになったら、
いかにアホな質問をしていたか、気づくと思うよ
まあ、がんばれ!
0631デフォルトの名無しさん
2005/07/31(日) 21:23:23DLL作成する。
0632デフォルトの名無しさん
2005/07/31(日) 21:34:03なによりも、質問がアホな以前にまともに内容を伝える日本語になっていない。
そんな事をうだうだとうらみがましく聞かされたほうがまず不愉快だからなあ。
本性丸出しじゃあんなもんじゃすまないだろう。
自分のことを棚に上げて傷ついたふりをするのも今時は子供の間でも通じないし。
0633デフォルトの名無しさん
2005/07/31(日) 21:49:25そんなことはいいから、ベターCって何さ?
0634デフォルトの名無しさん
2005/07/31(日) 21:55:08エラーの詳細とか操作手順とかわからないと答えようがないし。
0635デフォルトの名無しさん
2005/07/31(日) 22:31:23>学校と同じ様にVC++を使わずやろうとしても、ソフトが勝手に立ち上がって
>しまうのですよ…
VC++の関連付けを外せばいいだけのような…。
勝手に立ち上がるからダメって事はない。
これ説明するのはWindowsの使い方を教える事になるからスレ違い。
0636デフォルトの名無しさん
2005/07/31(日) 22:42:270637デフォルトの名無しさん
2005/07/31(日) 22:47:59例えば、C++でクラスを使わずに、
手続き型のCとして使うようなやり方。
拡張機能をいろいろ使えるから、ただのCより使い勝手が良い。
・・で、あってるんだっけ?
0638デフォルトの名無しさん
2005/07/31(日) 22:58:50俺の思いつくのはこんなもん。
0639デフォルトの名無しさん
2005/07/31(日) 23:00:30STLまでくると流石にC++そのものだな。
0640デフォルトの名無しさん
2005/07/31(日) 23:04:25だから出来ないと言うのに。試しにGoogleかなんかで検索かけてみなよ。
同じような質問をしている人をあちこちでみかけるだろうけど、全部否定
されてるよ。第一、VBの関数作っても、引数の型をどうやって呼び出し時に
VC++のものに変換するんだ?VBの変数型でVC++がサポートしてないものは幾つもあるぞ。
呼び出し方はどうする?extern "VB"なんてのも無いぞ。いっそのことVBで
dllを作るか?でも、それをVC++でも呼び出せるか?逆は出来るぞ。
WinAPIをVBに取り込むのと同じようにすれば良いだけだからな。
結局、こういう制限があるということがVBの限界であるから仕方が無いんだが、
VC++で書き直すことをすすめる。
0641デフォルトの名無しさん
2005/07/31(日) 23:09:21使えないことも無いけど、そういう使い方を望んでいるわけでも
ないんでしょ?
悪いことはイワン。そのVBの関数をVC++で書き直した方が良い。
0642デフォルトの名無しさん
2005/07/31(日) 23:16:29そういう意味か。
全然違う意味かと思ってた。
要するに、基本Cで、C++の使いやすい所を使うって事ね。
ニュアンスは分かった。ありが�d。
0643デフォルトの名無しさん
2005/08/01(月) 00:00:15>いっそのことVBで dllを作るか?でも、それをVC++でも呼び出せるか?逆は出来るぞ。
VBでDLL作ればVC++から呼び出せるけど?
0644デフォルトの名無しさん
2005/08/01(月) 00:22:34俺もコレが気になる。
>第一、VBの関数作っても、引数の型をどうやって呼び出し時に
>VC++のものに変換するんだ?VBの変数型でVC++がサポートしてないものは幾つもあるぞ。
0645デフォルトの名無しさん
2005/08/01(月) 00:31:20いや、>641の戯言は忘れた方がいいと思うのだが。
VBとVCとでお互い擦り合わせのできる型で呼び出せばいいだけだからね。
0646デフォルトの名無しさん
2005/08/01(月) 04:06:12あるダイアログアプリと、そいつから利用されるスタティックライブラリやらDLLやらのプロジェクトが10個くらいあつまったソリューションがありまして、
さらにこのAPにはプロジェクトとしては提供されていないDLLもダイナミックリンクします。(つまりそのDLLのソースは機密なのでDLLファイルだけもらった)
このダイアログAPを起動してある操作をして終了させるとメモリリークが検出されまする。
残念ながらソースの箇所は表示されません。
そこですべてのソースファイルに_malloc_dbg()やfree_dbg()を使うように以下の記述を各ファイルの先頭に追加しました。
(ファイルの先頭に入れとけばよいんですよね?)
#define CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
そしてスタートアッププロジェクトはダイアログアプリにして実行させてみます。
しかし残念ながらメモリリークは検出しますが場所が出ませんでした。
これはやはりプロジェクトとして提供されていないDLLの中でリークしてるのでしょうか?
0647デフォルトの名無しさん
2005/08/01(月) 07:34:480648デフォルトの名無しさん
2005/08/01(月) 07:57:13どの辺の記述がどう変なのか指摘していただかないと。
分っている、としか言いようが無い。
0649デフォルトの名無しさん
2005/08/01(月) 08:22:44その疑わしいDLLを外してやってみればいいじゃん。
DLL関数のところは使わないようにするか、ダミーを作って差し替えればOK
それでメモリリークとやらが起きなければ、お前さんの考えが正しいってこと。
0652デフォルトの名無しさん
2005/08/01(月) 15:48:43win32で
ウインドプロシージャーのなかで、
LRESULT CALLBACK WndProc(HWND hwnd,UINT im, WPARAM wp,LPARAM lp){
switch(im){
case WM_CREATE:
ここを最初に表示するときに通らないのです。
そんなものなのでしょうか。
0653デフォルトの名無しさん
2005/08/01(月) 16:11:32すみません通っていました。
0654デフォルトの名無しさん
2005/08/01(月) 17:00:44CDialog の DoModal() をやって
そのダイアログを見えないようにしたいのですが
そのようなことはできますか?
0655デフォルトの名無しさん
2005/08/01(月) 17:37:43やったことないから推測で言うけど
ダイアログのWS_VISIBLEいじればいいんじゃないの?
しかし・・・DoModalやった後、どうやってそのダイアログを閉じるんだ?
0656デフォルトの名無しさん
2005/08/01(月) 17:39:40ShowWindow使え
0657デフォルトの名無しさん
2005/08/01(月) 17:41:15Arrayの特定のIndexのみに要素を設定する方法が分かりません。
-----------------
ArrayList* ar = new ArrayList();
ar->Add(S"a");
// 間を22個空けたい
ar->set_Item(24, S"z");//Insertでも同様の結果
-----------------
このようにした場合、4行目を実行すると不正な参照として落ちてしまいます。
また、ArrayListをnewする際に要素数を36に指定してみましたが結果は同じでした。
(間を空けるだけならfor文で空白をAddすればいいのですが…)
何か他に上手い方法はありますでしょうか?
0658デフォルトの名無しさん
2005/08/01(月) 17:49:47DoModal() する前では
窓が初期化されておらず
DoModal() してしまうと制御がかえってきません
いつ ShowWindow(SW_HIDE) すればいいのでしょうか?
0659デフォルトの名無しさん
2005/08/01(月) 17:53:35そのDoModalするダイアログ内ですれば?
0660デフォルトの名無しさん
2005/08/01(月) 17:56:45OnInitDialog作ったらダメ?
0661デフォルトの名無しさん
2005/08/01(月) 17:58:07一回表示して
なにかボタンとか押して,という意味でしょうか?
いっさいダイアログを出したくないんです
0662デフォルトの名無しさん
2005/08/01(月) 18:02:26>>660
0663デフォルトの名無しさん
2005/08/01(月) 18:04:51OnInitDialog 内で
ShowWindow(SW_HIDE)
したんですが,
あれ〜普通に表示されますね
なんでだろう…
0664デフォルトの名無しさん
2005/08/01(月) 18:10:09OnInitDialogからユーザメッセージをpostしてそこで非表示にすれば?
0665デフォルトの名無しさん
2005/08/01(月) 18:18:08>ユーザメッセージをpostして
すいません.これがわかりません
どう書けばいいのでしょうか?
0666デフォルトの名無しさん
2005/08/01(月) 18:29:17OnInitDialog()でEndDialog()すれば表示されないけどね(勿論すぐ処理は戻る)。
0667デフォルトの名無しさん
2005/08/01(月) 18:31:51WM_APPでぐぐれ
0668デフォルトの名無しさん
2005/08/01(月) 18:32:11PostMessage関数を使って、自身にメッセージを送る
ダイアログプロシージャの中に、そのメッセージのハンドラを作って
その中でShowDialogをする。
PostMessageだと、今のメッセージの処理が終わった後に
メッセージが送られてくる。
・・・と、ここまで描いてて思ったが、OnDrawじゃダメかな?
0669668
2005/08/01(月) 18:33:40○ShowWindow
疲れてるかもしんない・・・
0670デフォルトの名無しさん
2005/08/01(月) 18:53:47SetWindowPos( &wndTop, 0, 0, 0, 0, SWP_HIDEWINDOW );
してやると表示されなくなりましたが
タスクバーにはこのダイアログの項目が残っています
これをうまく消せないでしょうか?
0671デフォルトの名無しさん
2005/08/01(月) 19:12:08ShowWindow(FindWindow("Shell_TrayWnd", NULL), SW_HIDE);
0672デフォルトの名無しさん
2005/08/01(月) 19:42:260673デフォルトの名無しさん
2005/08/01(月) 21:14:040674デフォルトの名無しさん
2005/08/01(月) 21:18:34やり方が、わかりません。どうか、教えてください。
win32アップリケーションです。
CreateWindowEx(WS_EX_TOOLWINDOW,"ToolBarWindow32",
"ID_TOOLE1",WS_VISIBLE,
CW_USEDEFAULT,0,100,
100,h,NULL,hinstance,NULL);
上記のようにしたのですが、表示されませんでした。
0675デフォルトの名無しさん
2005/08/01(月) 22:13:100676デフォルトの名無しさん
2005/08/01(月) 22:15:410677デフォルトの名無しさん
2005/08/01(月) 22:29:19デバイスコンテキストって完全に一対一対応だと思ってたから、
ツール起動時にメイン画面のを取得してそれを使いまわそうと思ってました。
m_pDC = m_main.GetDC();
m_pDC->m_hDC = m_pDC->GetSafeHdc();
//m_pDCはヘッダでCDC*で宣言
//m_mainはメイン描画部分のハンドル持ち
//以降はm_hDCを使用してOpenGL処理
とやると上手くいきます。しかし、
m_pDC->m_hDC = m_main.GetDC()->GetSafeHdc();
とやると、描画は上手くいくんですが、
ツール終了時にwinhand.cppの251行目、ASSERT部分で怒られます。
何がいけないのでしょうか?見た目、同じように思えるのですが
0678677
2005/08/01(月) 22:36:58677の2,3行目はなしで。で、改めて追加質問。
デバイスコンテキストって完全に一対一対応だと思ってたから、
ツール起動時にメイン画面のを取得してそれを使いまわそうと思ってました。
で、起動時にメイン描画部のをm_pDCに取得して677の場所で使おうと思い、
m_pDC->m_hDC = m_pDC->GetSafeHdc();
とだけやりましたら、描画されませんでした。
ここ以外では取得はしてません。
m_pDCではなく、それぞれの関数内で
CDC* h_pDC
とか作ってそれに取得はしてますが、最初にとったm_pDCはそのままです。
しかし、上記のように、最初に取ったDCが反映?されてません。
677のように取り直すと上手くいくのですが、
最初に取ってそれを何度も使いまわす、といったことはできないのでしょうか?
0679デフォルトの名無しさん
2005/08/01(月) 23:05:00初めてunicode対応をやろうとして、とりあえず
MessageBoxA( NULL, "ANSI test(テスト)", NULL, MB_OK );
MessageBoxW( NULL, L"unicode test(テスト)",NULL, MB_OK );
と続けて実行すると、ANSIの方はうまく表示できますが、
UNICODEの方は「テスト」の部分が文字化けしてしまいます。
フォントが変わってしまっているようなのですが、
unicode対応アプリにするためのコンパイラやリンカのオプション
がたりないのでしょうか。_UNICODEは定義しています。
0680デフォルトの名無しさん
2005/08/01(月) 23:31:02OpenGLスレのほうがいいような気もするが
そもそもm_pDC取得すればm_hDCは取得する必要ないんじゃないか?
>m_pDC->m_hDC = m_pDC->GetSafeHdc();
は
m_pDC->m_hDC = m_pDC->m_hDC;
と大して変わらないような気がする。意味ないような・・・
0681デフォルトの名無しさん
2005/08/02(火) 00:06:30エントリポイントは変更したか?
0682679
2005/08/02(火) 00:11:18エントリポイントもwWinMainCRTStartup に変更したのですが。
0683デフォルトの名無しさん
2005/08/02(火) 00:12:54小出しで書くな。やったこと全部書けよ。
いちいち確認させる気か?
ちなみに漏れは>>679のソースそのままでちゃんと出たんで、あんたのやり方が何かおかしいんだろ。
0684デフォルトの名無しさん
2005/08/02(火) 01:07:38いまCOMを使うアプリでこのCOMをReleaseしているメソッドがあるんですが、こいつを処理中に
メインスレッドが他のイベントを受けて、動いてしまいます。
COMをReleaseするメソッドを処理してから他のイベントを処理してほしい。。
メインスレッドが同時に複数(あるいは同じハンドラ)を処理してしまうことはあるのですか?
0685684
2005/08/02(火) 01:35:19mfc71d.dll!AfxWndProcBase ←ここでメッセージ処理開始
mfc71d.dll!AfxWndProc
mfc71d.dll!AfxCallWndProc
mfc71d.dll!CWnd::WindowProc
mfc71d.dll!CWnd::OnWndMsg
myapp.exe!CMyDlg::OnFoo() ←自分のAPのメッセージハンドラ
mydll.dll!CMyCom::UnInitialize() ←ここではCOMのインタフェースをRelease
quartz.dll!7cfa6e72()
省略
user32.dll!77cf8816()
user32.dll!77cf8734()
mfc71d.dll!AfxWndProcBase ←あれ??またメッセージ処理開始?
mfc71d.dll!AfxWndProc
mfc71d.dll!AfxCallWndProc
mfc71d.dll!CWnd::WindowProc
mfc71d.dll!CWnd::OnWndMsg
myapp.exe!CMyDlg::OnFoo()
です。なぜですか?
0686デフォルトの名無しさん
2005/08/02(火) 03:47:30実はOSが9xとか
0687デフォルトの名無しさん
2005/08/02(火) 08:26:33MessageBoxWは9xでも問題なく使える数少ない関数の1つ。
0688デフォルトの名無しさん
2005/08/02(火) 09:52:46Release内にメッセージループ回す処理があるとか
0689デフォルトの名無しさん
2005/08/02(火) 10:46:47で,CDialog が CWnd を
どのように変更(もしくは追加)しているのを
知る手だてはありますか?
特にどのような引数をあたえて Create しているのか
知る必要があるのです
0690デフォルトの名無しさん
2005/08/02(火) 10:48:33MFCのソース読む
0691デフォルトの名無しさん
2005/08/02(火) 11:20:10それができればいいんですが,
MFCのソースは開発環境についているのでしょうか?
CDialog の部分をどのように
探りあてればいいのでしょうか?
0692デフォルトの名無しさん
2005/08/02(火) 11:21:40先日VCを再インストールしたんですが、
前は関数名の上にカーソルを乗せたら出た
関数の説明(ポップアップ?)が出なくなってしまいました orz
http://49uper.com:8080/html/img-s/69227.jpg
上の絵だと、dwFileSizeの説明は出るのですが、
::GetFileSize() の引数の説明なんかが、一切出なくなってしまったんです。
どなたかご存知の方いらっしゃいましたら、
どうかお願いいたします m(__)m
使ってるのは VisuaC++ 6.0 Standard です。
0693デフォルトの名無しさん
2005/08/02(火) 11:28:06付いてるからインストールしとけ。
CDialog::Createを追っかけてけばわかるんじゃない?
0694デフォルトの名無しさん
2005/08/02(火) 12:01:36MSDNライブラリで探せ
0695デフォルトの名無しさん
2005/08/02(火) 12:22:430696デフォルトの名無しさん
2005/08/02(火) 14:41:09たとえばこんなん書くと同じスレッドIDのダイアログいっぱいでるね
void CTestDlg::OnTimer(UINT nIDEvent) {
CString msg;
msg.Format( "id:%lu", ::GetCurrentThreadId() );
::MessageBox( NULL, msg, msg, MB_OK );
CDialog::OnTimer(nIDEvent);
}
0697デフォルトの名無しさん
2005/08/02(火) 14:59:54ボタンの文字サイズを変えるにはどうしたらいいでしょうか。
ダイアログではなくてウィンドウに貼り付けたボタンですが。
0698デフォルトの名無しさん
2005/08/02(火) 15:08:230699697
2005/08/02(火) 15:43:10子ウィンドウと言うんでしょか。
CreateWindowで作ったボタンに表示される文字のサイズです。
0700デフォルトの名無しさん
2005/08/02(火) 19:09:40CPropertySheetのOnInitDialogをオーバーライドしたのですが、
DoModal()を呼び出してもOnInitDialogが実行されません。
CPropertySheetがCWndから継承してるのも不可解なのですが、
DDXを使うしかないのでしょうか?
0701デフォルトの名無しさん
2005/08/02(火) 19:25:120702700
2005/08/02(火) 19:44:16ありがとうございます。
CPropertyPageのOnInitDialogでコントロールを初期化してこれを
CPropertySheetにAddPageしたところ
CPropertySheetのOnInitDialogが呼び出されました。
コントロールの初期化はサブクラスでやらなきゃいけないのね...
0703デフォルトの名無しさん
2005/08/02(火) 19:46:05例えばCreateProcess()関数を調べたい時、トップページ右上にある検索欄に『CreateProcess』と書いても何も見つかりません。
どうやって調べたらいいのでしょうか?
0704592
2005/08/02(火) 20:07:11ぐぐるのもまた1案
0705名も無き冒険者
2005/08/02(火) 20:08:140706700
2005/08/02(火) 20:56:18702の補足:
AddPageした場合は、
CPropertySheet::OnInitDialogから
各 CPropertyPage::OnInitDialogが呼び出されるという仕組みのようでした。
初期化を遅延しないといけないからこうなってるのかも...
0707679
2005/08/03(水) 00:45:40その後も自分でいろいろやったのですが、
1) bcc 5.5 なら問題ない(文字化けしない)。
2) Lマクロを使わず直接unicode文字列を引数に与えれば文字化けしない。
ちなみに、
unsigned char buf[10];
unsigned char buf2[10];
buf[0] = 0xb5;// 「サ」のユニコード
buf[1] = 0x30;
buf[2] = '\0'; buf[3] = '\0';
buf2[0] = 0xda;// 「サ」の丸囲文字のユニコード
buf2[1] = 0x32;
buf2[2] = '\0'; buf2[3] = '\0';
MessageBoxW(NULL,
(const wchar_t *)buf,
(const wchar_t *)buf2,
MB_OK); // これは正しく表示。丸サも出る。
MessageBoxW(NULL,
L"サ",
L"サ",
MB_OK); // こっちは化ける。
こんなことってあるんでしょうか
0708デフォルトの名無しさん
2005/08/03(水) 01:11:280709デフォルトの名無しさん
2005/08/03(水) 07:06:55そこはこうだろ。とのんきに言ってみるテス
wchar_t buf[2];
buf[0] = 0x30b5; //L'\u30b5';
buf[0] = 0x0; // L'\0';
0710デフォルトの名無しさん
2005/08/03(水) 07:18:29ソースファイルはShift-JISで保存されているから、
その文字コードがそのままバイナリになるってこと?
0711デフォルトの名無しさん
2005/08/03(水) 08:58:580712679
2005/08/03(水) 16:00:27L"サ" がなぜか
0x0192 0x0054 0x0000
になっていました。0x0192 はラテン拡張文字で
そういう意味では文字化けではなく、ちゃんと表示している
だけみたいです。
どうやら私の環境が変で、Lマクロが異常な変換
をしているようです。
お騒がせしました。
でもBCC5.5 だとちゃんと 0x30b5 0x0000 になるのにな。
0713デフォルトの名無しさん
2005/08/03(水) 18:08:14ところでLはマクロではないのだが……。
0714679
2005/08/03(水) 20:56:38L はプリプロセッサで処理されるわけでは
ないですものね。
かといって、実行時関数でもなく、あくまでコンパイル時に
処理されるのですよね。正確にはなんというのでしょう?
ちなみに、L"サ" をアセンブルしたら、
$SG41923 DB092H, 01H, 'T', 00H,
(つまり0x192 0x54)
この段階ですでに変になっていることを確認しました。
0715679
2005/08/03(水) 21:08:10> ちなみに、L"サ" をアセンブルしたら
L"サ" を含むc++ソースをコンパイルしてアセンブリリストファイル
を出力したら、という意味です。
0716デフォルトの名無しさん
2005/08/03(水) 21:20:36尤もX3010/X3014にこう書いているわけではないが。
0717デフォルトの名無しさん
2005/08/04(木) 09:33:56これらをマージするのに便利なソフトウェアとか
「俺はこうやってるよ」みたいな方法論があったら
おしえてください
0718デフォルトの名無しさん
2005/08/04(木) 10:25:180719デフォルトの名無しさん
2005/08/04(木) 11:39:51diff, patch, cvs使用。
或いはエディタで。
>>718
C/C++には二次元配列はありません。
それは配列の配列か、ポインタの配列か、或いはポインタのポインタに過ぎません。
0720デフォルトの名無しさん
2005/08/04(木) 11:47:18じゃあ
int i[10][20];ってやったらこれ二次元配列じゃないの?
0721デフォルトの名無しさん
2005/08/04(木) 11:48:260722デフォルトの名無しさん
2005/08/04(木) 11:51:320723デフォルトの名無しさん
2005/08/04(木) 12:21:58現に、二次元配列を扱える言語では厳密に区別されている。
0724デフォルトの名無しさん
2005/08/04(木) 12:31:02甘すぎ
0725デフォルトの名無しさん
2005/08/04(木) 13:20:26それと同じC言語でも、仮引数がこの形だと
VCやBCCではOKだが、gccではNG聞いた事があるけど、
>>723の原因と同じ所なのかな。
0726デフォルトの名無しさん
2005/08/04(木) 14:25:32仮引き数は配列ではなくポインタでしかないから、配列を渡すことはできない。
つまり、配列へのポインタを渡すことになる。
#或いは配列へのポインタへのポインタか。
0727678
2005/08/04(木) 16:05:15プログラムでも、ましてやコンパイラの問題でもありません
でした。
OSの設定で、地域オプションの数値や通貨の設定がなぜか
英語(米国)になっていて、それを日本語に戻してコンパイルし直す
とすべてうまくいきました。
お騒がせしてすみませんでした。
0728679
2005/08/04(木) 16:08:28申し訳ありません。
0729デフォルトの名無しさん
2005/08/04(木) 16:21:28どうしてこんなにサイズが大きくなければいけないのでしょうか?
最終的に作られる exe や dll の
数十倍から100倍あったりするんですが…
もう馬鹿じゃないかと
いつも思います
なんとか,小さくして
なおかつかわりなく部分コムパイルできないもんでしょうか?
0730デフォルトの名無しさん
2005/08/04(木) 16:40:08馬鹿はお前
0731デフォルトの名無しさん
2005/08/04(木) 16:47:510732デフォルトの名無しさん
2005/08/04(木) 17:02:10言葉が足りないから、>727で間違えたということが判りにくい。
#かつ上げしたのかと思ったよw
0733デフォルトの名無しさん
2005/08/04(木) 17:03:31何故中間ファイルを小さくしたいと思うのかね?
0734729
2005/08/04(木) 17:11:48モードっていうんですかね?
Debug とか Release とか
それだけならまだいいんですけど
どうしてもヴァリエイションをいつくも作る
必要が出てくるわけです
そうすると中間ファイルがとんでもないことになっている
0735デフォルトの名無しさん
2005/08/04(木) 17:17:17ていうかなんで何が不便なの?
0736729
2005/08/04(木) 18:36:350737デフォルトの名無しさん
2005/08/04(木) 18:46:06どうせnyかしゃれのせいでHDDがいっぱいって言うんだろ?
0738デフォルトの名無しさん
2005/08/04(木) 19:25:36つうか整理すれ。
君だって、馬鹿だから机小さくていいだろ、と言われたら困るだろ?
必要な作業域ぐらいおごっといてやれよ、そのほうが無難だ。
0739デフォルトの名無しさん
2005/08/04(木) 20:00:40フォルダ管理ができているなら
*.ilk;*.obj;*.pch;*.pdb;*.idb;*.pdb;*.opt
などで検索してゴミ箱に捨てればいいじゃん
0740デフォルトの名無しさん
2005/08/04(木) 20:06:47つーか、プロジェクトのクリアくらいしとけって。
0741デフォルトの名無しさん
2005/08/05(金) 00:33:45↑をビルド後の処理にいれとけばビルドする度に勝手にやってくれるぞ。
>>717
WinMerge日本語版お勧め。
0742デフォルトの名無しさん
2005/08/05(金) 09:15:25それらの拡張子のファイルは消してしまっても
部分コムパイルできるんですか?
もしそうだとすれば,なんのためにあるんでしょう?
0743デフォルトの名無しさん
2005/08/05(金) 09:31:260744デフォルトの名無しさん
2005/08/05(金) 10:13:49>>729で「中間ファイル」と言ってるじゃないか
0745デフォルトの名無しさん
2005/08/05(金) 13:21:480746デフォルトの名無しさん
2005/08/05(金) 16:59:190747デフォルトの名無しさん
2005/08/05(金) 17:37:55それを選択させて描画行った後そのビットマップを白黒に変換したいのですが、どのようにすればいいですか?
今まではGetDIBitでDIB形式に変換してピクセルデータをいじっていたんですが、処理スピードの関係でそのやり方は没に・・・
他に方法等ありましたらご教授お願いします
0748デフォルトの名無しさん
2005/08/05(金) 22:03:251ビットビットマップを作り、それを元画像で白にしたい部分を(他は黒になる)
その色でSetBkColorし、そのビットマップに元画像を描画すればいい。
0749デフォルトの名無しさん
2005/08/05(金) 22:05:470750デフォルトの名無しさん
2005/08/05(金) 23:43:590751749
2005/08/06(土) 00:19:490752748
2005/08/06(土) 00:33:11そうか。これはまさに、ビットマップを透過する時に
マスク画像の生成に使っていた方法。
だと、その白黒にするというのはどういう事?
例えば、色が指定より明るいか暗いかで変化させるとかかな。
0753デフォルトの名無しさん
2005/08/06(土) 00:35:25まぁそれだろうな。
パレットがあればそれを入れ替えるだけで済むんだが…
0754デフォルトの名無しさん
2005/08/06(土) 00:53:37というのはおいといて。
単純に明るさが閾値より高いか低いかだけでもいいが、
その場合でもRGBを等価に扱うのか真面目に3:6:1にするかが問題になる。
また、ディザ処理をするか、ディザ処理のパターンはどうするかなど、
考えるべき点は山ほどある。
0755748
2005/08/06(土) 08:38:27なるほど。サンクス。
マスク製作さえも覚えたてなので難しい。
方法としては、>>748の方法を使い、複数色を白する感じで、
>>753>>754の条件を満たした色でのマスク画像を複数作り、
それらを白の部分のみ何回も描画する感じかな。
0756747
2005/08/06(土) 10:53:29白黒にするのは2値化でマスク画像作りたかったのでSetBKColorでやってみま。
(=゜ω゜)ノそれでは、ありがとですた
0757デフォルトの名無しさん
2005/08/06(土) 15:26:13> 条件を満たした色でのマスク画像を複数作り、
> それらを白の部分のみ何回も描画する感じかな。
>>747
> 今まではGetDIBitでDIB形式に変換してピクセルデータをいじっていたんですが、
> 処理スピードの関係でそのやり方は没に・・・
755>> のほうが遅い予感
0758デフォルトの名無しさん
2005/08/06(土) 15:28:410759デフォルトの名無しさん
2005/08/07(日) 17:17:29Visual C++ .NET Version 2003 を購入しました。
メッセージハンドラの追加が分からず・・・。
コードを書くのは可能なのですが、簡易な方法はないでしょうか。
例えば MFC を用いているのですが、
クラスビューの CChildView (クラス名)を右クリックすると、
6.0 のときは「メッセージハンドラの追加」という項目があったのですが、
.NET だと「関数の追加」「変数の追加」しか見当たりませんでした。
よろしくお願いします。
0760デフォルトの名無しさん
2005/08/07(日) 17:31:55無かったらクラスを右クリックでプロパティを選べば出る。
そこのタブ(?)の右から2番目がメッセージ一覧になってるから、
追加したいメッセージを探して、その項目の横のリストから
<追加> OnActive
みたいなのを選べば追加できる。
0762デフォルトの名無しさん
2005/08/07(日) 17:56:23.NETではそういうコンポーネントを追加出来無くなったんですか?
自分で全部実装しろと?
0763759
2005/08/07(日) 18:55:35.NET において、MFC のアプリケーションを、ドキュメント・ビューアーキテクチャをはずして構築しました。
クラスビューに C○○○App がなく、手動で C○○○App の InitInstance() を探すと、
6.0 のころにあった 「ここに重要な初期化処理を書きます」 といったコメントがありませんでした。
srand(time(NULL)); や、ImmDisableIME(-1); などはどこで書くのが普通なのでしょうか。
0764デフォルトの名無しさん
2005/08/07(日) 19:05:48あるはずだが。
>手動で
どこでどうやって探したんだ?
>コメントがありませんでした。
まさかCWinAppのInitInstance()見つけたんじゃあるまいな。
あとsageろ。MFC専門はこっち
ttp://pc8.2ch.net/test/read.cgi/tech/1121200124/l50
0765デフォルト名無しさん
2005/08/08(月) 07:49:42API板に記載しようか迷ったのですが、処理的にC++だったのでこちらで質問させていただきます。
プログラム作成の過程で_beginthreadを使うことになったのですが、以下のエラーメッセージが表示されます。
error C2664: '_beginthread' : 1 番目の引数を 'void (unsigned long)' から 'void (__cdecl *)(void *)' に変換できません。 (新しい機能 ; ヘルプを参照)
スコープ内でこの名前を持つ関数でターゲット型に一致するものはありません
調べた限りC++で作成している為Cでコンパイルされた関数を呼び出す為にC++で指示する必要がある、という事は理解できたのですが、いまいち修正の方法が判りません。
下記に関連部分ソースの一部と開発環境を記載します。
どなたかご教授の方よろしくお願いいたします。
開発環境:Visual C++6.0,WINAPIとしてcppファイルで作成中
プロジェクトの設定でランタイムライブラリはマルチスレッドに設定済み。
指定URLに接続するためのスレッドを作成したい
-------------------グローバル一部---------------
DWORD cthread=0; //グローバルで宣言している
addurl[1];
-----------問題の処理WndProc内部(メイン部)---------
addurl[0]=url; //編集したアドレスを貼り付け
cthread=_beginthread(OpenURL,0,0); //ここでエラー
-----------送る先(OpenURL)-------------
void __cdecl OpenURL(DWORD index)
{
BASS_StreamFree(chan); // close old stream
SendMessage(Edit,WM_SETTEXT,0,"connecting...");
if (!(chan=BASS_StreamCreateURL(addurl[index],0,BASS_STREAM_META|BASS_STREAM_STATUS,StatusProc,0))) {
SendMessage(Edit,WM_SETTEXT,0,"not playing");
Error("Can't play the stream");
--------------以下省略---------------
宣言順番はOpenURLのあとにWndProc
base.dllのnetradioのソースを流用して製作しているので、OpenURLをそのまま使える構造にしたいです。
どなたかご教授お願いします・・・
0766デフォルトの名無しさん
2005/08/08(月) 08:09:41OpenURLを、明示的にcastすればいい。
関数型は複雑だから、typedefすれば簡単だろう。
typedef void (__cdecl * ThreadFunc_t)(void *);
_beginthread((ThreadFunc_t) OpenURL, ...
0768765
2005/08/08(月) 09:43:46上記のやりかたでOpenURLへの処理へ送ることはできましたが、想定してた動きとまったく異なってしまいました・・・。
以下に作成過程のデータとサンプルとして使っていたbass.dllに付属してたサンプルを置いておきます
本プログラム
ttp://astria.ddo.jp/data/testpg.zip
参考に使ってたサンプル
ttp://astria.ddo.jp/data/sample.zip
望む動作は以下の通りです・・。
サンプルを参考にし
本プログラム部分のmain.cppの243行目で取得したURLデータを
OpenURLに引っ張り、対象サーバーに接続する。
main.cppの133行目の処理がサンプルプログラムの方と同じ動作で接続処理を行ってくれればなんとかなりそうなのですが・・。
うまくいってくれるのかな・・と思っていますが・・・サンプルがCで記述されているため、格差で頭の中身がぐっちゃになってしまいました・・。
bass.dllを利用したストリーミングプログラムで、サンプルを参照しても良いと課題出されましたが・・・ここまで訳のわからないものになるとは・・・
あつかましい行為だというのは自覚していますが、どなたか助け舟をお願いいたします・・・
0769デフォルトの名無しさん
2005/08/08(月) 10:16:54フリーソフトを知りませんか?
0770デフォルトの名無しさん
2005/08/08(月) 10:57:040771デフォルトの名無しさん
2005/08/08(月) 13:34:55効果的な方法はありますか?
0772デフォルトの名無しさん
2005/08/08(月) 14:01:040773デフォルトの名無しさん
2005/08/08(月) 14:16:15{
char ss[3][9];
int ret = 0;
sprintf(ss[0], "%p", min);
sprintf(ss[1], "%p", foo);
sprintf(ss[2], "%p", max);
ret = ((strcmp(ss[0], ss[1]) <=0) && (strcmp(ss[1], ss[2]) < 0));
return ret;
}
これを随所に埋め込んでみる位しか知らん
0774初心
2005/08/08(月) 15:05:55なんかありませんか?win2000,CV++6.0
よろしくお願いします。
0775初心
2005/08/08(月) 15:08:42正しい VC++
でした。ごめんなさい・
0776デフォルトの名無しさん
2005/08/08(月) 15:11:20_CrtSetAllocHookでMSDN見てみ
0777デフォルトの名無しさん
2005/08/09(火) 02:55:44CV++6.0とは何ぞや?
0778デフォルトの名無しさん
2005/08/09(火) 04:57:29コンパイル情報を送ってるぽいけど。どなたか詳細ご存知ありませんか?
何のデータ送ってるのか気になる。
0779デフォルトの名無しさん
2005/08/09(火) 05:16:03あー、ウイルスに犯されちゃってますね
クラックものはだいたいそうかもね
0780デフォルトの名無しさん
2005/08/09(火) 05:22:07正規版だよ。アカデミックだけど。
なんでもウィルスにすんなよ。素人臭い。
0781デフォルトの名無しさん
2005/08/09(火) 07:12:400782デフォルトの名無しさん
2005/08/09(火) 07:16:06the spokeで具具ってみなはれ
0783デフォルトの名無しさん
2005/08/09(火) 09:26:32エディタ上で http:// から始まる文字列を入力すると
勝手に下線が付いてしまうんですが、これを付けないようにするには
どうすればいいですか?
0784デフォルトの名無しさん
2005/08/09(火) 11:01:41ツール->オプションをよく探せ。
0785デフォルトの名無しさん
2005/08/09(火) 11:33:08すみません。。アカデミックではなくて、the spoke の方でした。。
で、>>778 に答えられる人いますか?
0786デフォルトの名無しさん
2005/08/09(火) 11:57:110788デフォルトの名無しさん
2005/08/09(火) 12:17:04これなんかどうぞ
0789デフォルトの名無しさん
2005/08/09(火) 20:09:33なんでそう思うの?
0790デフォルトの名無しさん
2005/08/09(火) 20:11:32自分で作ったアプリケーションをノンアクティブ状態でジョイパッドを使用できる状態にしたいのですが、どうすれば
よろしいでしょうか?ダイレクトインプットを使えば簡単なのですが、どうも難しすぎて私の手には負えません。
それ以外で方法はないでしょうか?
もう一つ質問があるのですが、自分で作ったアプリケーション以外で新規に起動したアプリのウィンドウハンドルを
取得したいのですが、どうすればいいのですか?
一度に二つも質問してすみません
0791デフォルトの名無しさん
2005/08/09(火) 20:27:160792デフォルトの名無しさん
2005/08/09(火) 20:30:540793デフォルトの名無しさん
2005/08/09(火) 21:11:570794デフォルトの名無しさん
2005/08/09(火) 23:01:53ビルド中に何気なくハブみたら、通信ランプが点滅してて「あれ?」と思ったのがきっかけ。
で、ビルドするたびにルータとハブみてたら、通信してるから、どこの通信してるのかなーって。
気になって・・。
漏れと同じでvisual studio.net the spoke版なら、みんなもそういう風になってるのか気になったものだから。
0795デフォルトの名無しさん
2005/08/09(火) 23:04:04たぶん、おまえが裏で動かしているnyのせい。
0796デフォルトの名無しさん
2005/08/09(火) 23:14:170797デフォルトの名無しさん
2005/08/09(火) 23:43:50ソースは全部コンパイルエラーにしてくれるぞ
0798デフォルトの名無しさん
2005/08/09(火) 23:55:050799デフォルトの名無しさん
2005/08/10(水) 11:09:26ビルド中以外、ってか、VS使ってる時以外にも通信ランプ見てみたか?
0800デフォルトの名無しさん
2005/08/10(水) 12:13:31中身はアカデミックと一緒なんだからそれはない
気になるならパケットでも取ればいい
と、使ってる俺が言ってみる
0801デフォルトの名無しさん
2005/08/10(水) 18:44:10環境は、Visual C++ .NETです。
Unicode文字セットを使用しています。
テキストファイルに文字列を出力したいのですが、日本語文字のところで
止まってしまい全て出力できません。
CStdioFile file;
file;.Open( szFileName, CFile::modeCreate | CFile::modeNoTruncate | CFile::modeWrite | CFile::typeText )
_TCHAR strText[256];
_tcscpy((_TCHAR*)strRow, _T("abcあいう"));
file.WriteString(strRow);
こんな感じなんですが。。。
どうも、WriteString中で2バイト文字が弾かれているみたいなのですが。。。
原因、回避方法があればご教授ください。
0802デフォルトの名無しさん
2005/08/10(水) 19:02:490803801
2005/08/10(水) 19:32:002バイトっていうか、16bitフルに使い表現している文字で
弾かれるみたいなのです。
言い方悪かったですねすいません。
それと訂正です。
_TCHAR strText[256]; −> _TCHAR strRow[256];
でした。
0804デフォルトの名無しさん
2005/08/10(水) 21:41:50が必要なんじゃね?
0805デフォルトの名無しさん
2005/08/10(水) 21:49:490806デフォルトの名無しさん
2005/08/11(木) 03:22:140807デフォルトの名無しさん
2005/08/11(木) 04:58:52新しいPCを買って開発環境を移したいのですが、
そちらにVisualC++.netをまたインストールすると違法になったりするのでしょうか?
前に家族での間でも共有はいけないとどこかで聞いた事がありひっかかってしかたありません・・・
0808デフォルトの名無しさん
2005/08/11(木) 05:03:230809デフォルトの名無しさん
2005/08/11(木) 05:06:30即レスありがとうございます。
これで心置きなく新しいPCが買えます^^
0810デフォルトの名無しさん
2005/08/11(木) 06:30:42アクティベーションはどうするの?
0811デフォルトの名無しさん
2005/08/11(木) 07:30:12もう一度、アクティベーションをするだけだよ。
ライセンスどおりに使っているのだから恥じる必要は無い。
警告が表示されても、どうどうとMicrosoftにTELで「もっかいアクティベーションしたいんだけど」と言えばよい。
0812デフォルトの名無しさん
2005/08/11(木) 08:46:59再インストールもできんのですかと
0813デフォルトの名無しさん
2005/08/11(木) 09:15:08複数のマシンにインスコされているかのチェックもされているのだろうか。
0814801
2005/08/11(木) 10:51:15レスありがとうございます。
どちらを試しても動きました。
今回はUnicodeファイル形式にしようかと思ってましたので
typeBinaryでやることにしました。
ありがとうございました。
0815デフォルトの名無しさん
2005/08/11(木) 11:22:24ウィンドウからフォーカスから外れると、描画が消えてしまいます。
どうすれば消えずに済むのか、よろしければ教えて下さい。
具体的には下記のような感じです。
�@線を描画させる
____
| |
| |
|___|
�A他ウィンドウにフォーカスを移す。
____
| _|_
| | |
|_| |
|__ |
�B他ウィンドウを消してフォーカスを戻す。
(フォーカスが外れた時に見えなくなった描画部分だけ消えてる。)
____
| _|
| |
|_|
0816デフォルトの名無しさん
2005/08/11(木) 12:29:31よし、全くの素人の俺が適当に答えてみる。
WM_PAINTでBeginPaint()とEndPaint()を使って無効領域を再描画すればいいんじゃね?
0817デフォルトの名無しさん
2005/08/11(木) 13:52:12無効領域を再描画というのは消えた部分だけ再描画ということでしょうか?
具体的にどうすればよいのでしょう?
ちなみに現在の線描画処理(MoveToやらLineTo)はOKボタン押下時にしているので、
WM_PAINT(::OnPaint() )の中のコードはプロジェクト生成時のままです。
0818デフォルトの名無しさん
2005/08/11(木) 14:46:21悪いことは言わん、初心者向けの本かサイトを捜して読んでこい。
#勿論、Windowsプログラミングの本ね。できればMFCで。
0819816
2005/08/11(木) 16:43:00さっきも言ったけど俺のレスは信用するな。
ちょうど俺もそこらへんをMFC使わずにAPIの勉強をしている。
てかVC++持ってないからMFCの事はわからん。
で、どうやらそこそこ的を射てるようなので答えるが、プロジェクト生成時のままだったら何も書かれていないんじゃ?
線描画って事はGetDC()でWinMainの中に書いていないかい?
(MFCはWinMainすら隠蔽されてるんだっけ??)
素人考えだけど、オススメはMFCを扱わないWinプログラミングの本を読んだ方がいいと思う。
きっとメッセージループとかを理解していないっぽいから。
0820デフォルトの名無しさん
2005/08/11(木) 17:14:06>>819
まあ、Windowsプログラムの入り口としてMFCからアプローチするのが近道なんじゃないか?
いきなり自力でWindowを作成するのは初心者にはやっぱり難しいよ。
0821デフォルトの名無しさん
2005/08/11(木) 17:17:39WM_PAINTが来たときに線を描画するようにすればいいだけ。
WM_PAINT内でBeginPaint()〜EndPaint()を使えば、それが無効領域の再描画になる。
>>820
MFCはその後がもっと難しいではないかと思う。
0822815
2005/08/11(木) 17:51:03とやらを調べていたら、無効な領域だけを再描画するという方法が載ってるページを見つけました。
ttp://wisdom.sakura.ne.jp/system/winapi/win32/win16.html
これを参考にして出来るかやってみます。
0823デフォルトの名無しさん
2005/08/11(木) 17:51:11別にいいじゃん。そこまで>817がやるかどうかも判らんのだし。
0824デフォルトの名無しさん
2005/08/12(金) 16:32:28exeプログラムの一部の関数をEXPORTする方法を教えてください。
別のプログラムから利用したいという要望が来まして……
それともdllを生成する別プロジェクトを作るしかないのでしょうか。
よろしくお願いします。
0825デフォルトの名無しさん
2005/08/12(金) 16:44:550826デフォルトの名無しさん
2005/08/12(金) 17:05:38エクスポートと同じようにすればOKですよ。例えば、
__declspec(dllexport) void Func();として、exeのソースに書けば
void Func()がエクスポート出来ます。グローバル変数も同様です。
0827デフォルトの名無しさん
2005/08/12(金) 17:10:290828824
2005/08/12(金) 17:41:27何とか解決しました
0829デフォルトの名無しさん
2005/08/12(金) 18:46:01作っていて気付いたのですがタブオーダーがどのダイアログでも効かないのですが
ダイアログはリソースエディタで作ったものでタブストップのプロパティを変えても
tabキーでコントロールの移動が出来ません
なんか変なとこ弄っちゃったのでしょうか?
0830デフォルトの名無しさん
2005/08/12(金) 18:57:51ボタン?
0832デフォルトの名無しさん
2005/08/12(金) 19:01:29空はよくない。
0833829
2005/08/12(金) 19:02:39ありがとうございました。
0834デフォルトの名無しさん
2005/08/12(金) 21:18:20可変長引数マクロでエラーになるのですが、
何か設定がいるのでしょうか?
0835デフォルトの名無しさん
2005/08/12(金) 21:24:40>C99 のリリース時期により、このバージョンの Visual C++ はこの規格に準拠していません。
の記述あり。
0836829
2005/08/12(金) 21:46:36困ったな、別な人が勝手に私の悩み解決してもらっても
私は解決して無いからな^-^;
>>830
ちなみにタブオーダーが効かないのは総てのコントロールです
ダイアログのテストとかではちゃんとタブオーダー効いているのですが
何故か普通に動かすと効かなくて困ってます
0837デフォルトの名無しさん
2005/08/12(金) 23:07:280838デフォルトの名無しさん
2005/08/13(土) 09:40:44size_t size = ::MultiByteToWideChar(
CP_OEMCP
,MB_PRECOMPOSED | MB_ERR_INVALID_CHARS
,error
,-1
,0
,0);
MB_ERR_INVALID_CHARSを有効にするとGetLastErrorが1113を返されます。
(1113:Unicode 文字のマッピングがターゲットのマルチバイト コード ページにありません。)
SJISの漢字は(0x81〜0x9F || 0xE0〜0xFF)+(1BYTE)で大丈夫な気がするのですが、
何が起きているのでしょうか?
0839デフォルトの名無しさん
2005/08/13(土) 16:35:04そのコードの文字が何か分からんけど、Unicodeに対応する文字が無いんじゃないの?
SJISにあるかどうかなんてのは、関係ないだろ。
0840838
2005/08/13(土) 21:34:35どうも、その通りでした。
(CP932の変換テーブルみてみたらなかった)
・mbstowcsは変換エラーを検出するので
MB_ERR_INVALID_CHARSがEnableですね。
・CStringWはMB_ERR_INVALID_CHARSはDisableでした。
標準関数は文字列の一部で変換エラーがあった場合、
どうするんだろう...
0841デフォルトの名無しさん
2005/08/13(土) 23:22:19作成された実行ファイルのアイコンは変わってるんですが
ウィンドウ左上のアイコンが表示されず
黄色い三角形の!アイコンになってしまいます…。
派生した(?)ダイアログではアイコン表示されてるんです。
なんでかわかりませんか?
0842デフォルトの名無しさん
2005/08/14(日) 00:37:230843デフォルトの名無しさん
2005/08/14(日) 00:40:58アイコンエディタの左上のテコンボボックスを標準(32x32)からスモール(16x16)に替えてえて見る。
0844デフォルトの名無しさん
2005/08/14(日) 02:44:18ウィンドウプロシージャにメッセージ定数を書くときに、WM_って書いた時にリストが出てくれたりしますか?
それ以外にも、普通のエディタで書く時と比べて、
リストが出てくれて便利だったりしますか?
0845デフォルトの名無しさん
2005/08/14(日) 03:43:42オートコンプリートでってこと?ならでない。
でもClass PropertyでMessagesを選択するとリストアップしてくれる。
WM_...のとなりのプルダウンメニューからメッセージイベントハンドラを選ぶと、コードを挿入してくれる。
もうすぐVS2005がでるし、しばらくVisual Studio 2005 Team Suit β2版を使っていたら?
MSDN会員でないなら、".NET Expert"などの雑誌にCDがついているよ。
0846デフォルトの名無しさん
2005/08/14(日) 04:20:53そうです!オートコンプリートの事でした。
オートコンプリートではなくて、他の機能でリストアップ(コード挿入)してくれるのですね。
親切にどうもありがとうございます。
VS2005を待つことも考えたのですが、VC++を学習用に使いのですが、(学生ではありません)
2003と2005を価格的に比べても、VC++単品を買った方が安上がりかなと思ってる次第です。
2万円という絶妙な値段ですが、その後で慣れた後に上位バージョン(やstudio)にでも移行しようかなと考えています。
でもとりあえず、薦めていただいたVisual Studio 2005 Team Suit β2版もチェックしてみたいと思います。
0847デフォルトの名無しさん
2005/08/14(日) 09:54:13「猫でも〜」のSDK編の46章で、
case WM_DRAWITEM:
lpDI = (LPDRAWITEMSTRUCT)lParam;
if(lpDI->itemState == ODS_SELECTED)
で場合分けする、という部分があったのですがうまく働きません
プログラムは右クリックでメニュー(オーナードロー)を呼び出して
「選択状態になったら」(ここが効かない)その部分の色を変えて
ボタンを押されたら作業を実行、というものでした
if文が真になるタイミングでWM_DRAWITEMが出ていないようですが、
どうすればいいでしょうか?VC++6.0です
0848デフォルトの名無しさん
2005/08/14(日) 12:48:14自作プログラム中からTerminateThreadを使って他プロセスを終了
させるものをかいていたのですが上の関数を使うとexplorerの場合
勝手に再起動されてしまうのです。タスクマネージャのようにexplorer
を終了させたいのですがどうすればよろしいでしょうか?
環境:BC++
0849デフォルトの名無しさん
2005/08/14(日) 14:43:05関数プロトタイプとかC++だと必要ないと思ってたのに、
書かなきゃ動かなかったりするんですけど…。
クラスとか作ったら勝手にC++のソースになるもんだと思ってるんだけど。。。
0850デフォルトの名無しさん
2005/08/14(日) 15:57:22lpDI->itemState & ODS_SELECTEDぽい。
>>848
TerminateProcess()とかExitWindowsEx()とかじゃ?
>>849
hoge.cpp C++
hoge.c C
じゃない。
0851デフォルトの名無しさん
2005/08/14(日) 15:59:42if(lpDI->itemAction & ODA_SELECT)
か
if(lpDI->itemState & ODS_SELECTED)
どっちかでいければいいな
0852デフォルトの名無しさん
2005/08/14(日) 16:31:35このスレの890-894がVC6++でコンパイルが通りません。
どこに問題があるでしょうか。7では通るようですが、
6でも通るように書き換えるとしたらどのようにしたらよいでしょうか。
0853デフォルトの名無しさん
2005/08/14(日) 18:07:56あと、ExitWindowsEx()はWindowsの終了などを操作するものですよね。
私はexplorerのプロセスを操作したいのです。
0854847
2005/08/14(日) 18:44:39&に変えたらいけました どうもサンクス
0855デフォルトの名無しさん
2005/08/15(月) 13:10:410856デフォルトの名無しさん
2005/08/15(月) 13:17:520857デフォルトの名無しさん
2005/08/15(月) 21:46:100858デフォルトの名無しさん
2005/08/15(月) 22:07:58文字が入力されはじめたことを監視して、適宜の処理をしたいと思っています。
その際に、WndProcとWM_IME_STARTCOMPOSITIONを利用しようと考えています。
0859858
2005/08/15(月) 22:11:49Console.Writelieでm.Msgを監視しても、
一向に、0x010Dが出力されません。
http://www.pinvoke.net/ ←WM_IME_STARTCOMPOSITIONの定義
参考にしたサイト様
http://www.ne.jp/asahi/oh/landd/prog_html/prog64.html
http://www.atmarkit.co.jp/fdotnet/dotnettips/327notitlebardlg/notitlebardlg.html
http://www.microsoft.com/japan/msdn/net/winforms/bettercombobox.asp
http://dobon.net/vb/bbs/log3-11/6224.html
宜しくお願い申し上げます。
0860858
2005/08/15(月) 22:12:49public Form1()
{
InitializeComponent();
}
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_IME_STARTCOMPOSITION)
{
MessageBox.Show("やたー");
return;
}
Console.WriteLine(String.Format("{0,5:X}",m.Msg));
base.WndProc(ref m);
}
0861デフォルトの名無しさん
2005/08/16(火) 00:20:09Winsock2で最初やろうと思ってて
#include <winsock2.h>
をしたら再定義等のエラーが沢山出てきました。
winsock.hが先にインクルードされているからなんだな。
と、なんとなくわかり、
検索もしてwindows.hに含まれている事がわかりました。
自分はwinsock2の機能を使うわけじゃない(というかどう違うのかさえ知らない)ので、
winsock2のインクルードやめたらコンパイル-実行できて。ホッとしたんですが、
この先winsock2の機能を勉強して、使いたくなった時どうすれば良いですか?
windows.hで
#include <winsock.h>→#include <winsock2.h>
にするくらいしか対策は無いんでしょうか?
0862デフォルトの名無しさん
2005/08/16(火) 00:25:05もしそうでないとした場合に自分でUNICODE完全対応にしてソフトを配布するってこと可能ですか?
0863デフォルトの名無しさん
2005/08/16(火) 00:40:30#include <winsock2.h>
#include <windows.h>
とMSDNのサンプルに書いてあったような希ガス。
0864デフォルトの名無しさん
2005/08/16(火) 10:42:11iostreamをincludeしても、
cout が「定義されていない識別子です。」になってしまうのですが
どうしたら直せますでしょうか?
include自体は成功していますし、
cout自体のヘルプに乗っているコードをそのまま使っても
駄目なので、手の打ちようがなく困っています。
0865デフォルトの名無しさん
2005/08/16(火) 10:54:000866デフォルトの名無しさん
2005/08/16(火) 12:29:44というか、内部ではアスキー文字もUNICODEに変換しているので
UNICODEとしてプログラムを作る方が効率がいい、というような
ことがAdvanced Windowsに書いてあった。
VC++のUNICODE対応というのが、UNICODEを扱えるバイナリを
作れるかということなら、作れる。MSDNでUNICODEを検索汁。
もちろん、自分で全部コーディングするならUNICODE対応でも何でも
お好きなやうに。
0867デフォルトの名無しさん
2005/08/16(火) 12:55:25C++を利用するのならnamespaceを勉強しなさい
0868デフォルトの名無しさん
2005/08/16(火) 13:13:43ウインドウ内で画像を移動させたいのですが何度やっても上手くいきません。
色々調べてみましたが結局詰まってしまったのでご助言をお願いします。
以下描画部分(メッセージ処理の一部)を書きますが、それ以外で必要な部分があれば言ってください。
case WM_CREATE:
SetLayeredWindowAttributes(hWnd, RGB(255, 0, 255), 0, LWA_COLORKEY); //紫を透明に
SetTimer(hWnd,1,100,NULL);
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
ExtFloodFill(hdc, 1, 1, RGB(255, 255, 255), FLOODFILLSURFACE);
hbmp = (HBITMAP)LoadImage(hInst, "BITMAP1",IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR);
hdc_mem = CreateCompatibleDC(hdc);
SelectObject(hdc_mem, hbmp);
StretchBlt(hdc, POSX, 0, 100, 100, hdc_mem, 0, 0, 100, 100, SRCCOPY); //POSXは変動
EndPaint(hWnd, &ps);
break;
--続く
0869デフォルトの名無しさん
2005/08/16(火) 13:14:47case WM_TIMER:
hdc = BeginPaint(hWnd, &ps);
ExtFloodFill(hdc, 1, 1, RGB(255, 255, 255), FLOODFILLSURFACE);
hbmp = (HBITMAP)LoadImage(hInst, "BITMAP1",IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR);
hdc_mem = CreateCompatibleDC(hdc);
SelectObject(hdc_mem, hbmp);
StretchBlt(hdc, POSX, 0, 100, 100, hdc_mem, 0, 0, 100, 100, SRCCOPY); //POSXは変動
EndPaint(hWnd, &ps);
break;
紫を透明色にし、ウインドウのメニュー・枠線を消して画像だけを表示させることをしようとしています。
WM_TIMERは何度も通っているのを確認、POSXの値は変わっています。
一度WM_PAINTで描画するとどうやってもウインドウ内の位置は変わらないようです。
環境はWindowsXP VC++.NETです。
0870デフォルトの名無しさん
2005/08/16(火) 13:24:42WM_PAINT時に移動すんじゃね
0871868-869
2005/08/16(火) 13:55:49WM_TIMER(というかWM_PAINT以外)では描画されないのですね。
0872デフォルトの名無しさん
2005/08/16(火) 14:01:24WM_PAINT以外で描画するんならGetDC使え。
0873デフォルトの名無しさん
2005/08/16(火) 14:26:280874デフォルトの名無しさん
2005/08/16(火) 15:34:260875864
2005/08/16(火) 15:56:210876デフォルトの名無しさん
2005/08/16(火) 15:58:17ありがとうございます。
Cと違って標準ライブラリのスコープがはっきり存在するのを
初めて知りました。
0877873
2005/08/16(火) 16:10:130878デフォルトの名無しさん
2005/08/16(火) 16:16:49スクロールバーを使わずに、別にボタンを用意して、
ボタンを押すごとに下に1行ずつスクロールさせるようにしたいのですが、
可能でしょうか?
もし可能であれば方法など教えてください。
いろいろサイト検索したのですが、なかなかみつかりませんでした…orz
0879デフォルトの名無しさん
2005/08/16(火) 16:28:06VC++.NETで作っていますがMicrosoft .NET Frameworkを使用しないexeファイルを作ることは可能なのでしょうか?
0880デフォルトの名無しさん
2005/08/16(火) 16:31:250881デフォルトの名無しさん
2005/08/16(火) 16:58:05>アプリケーションの開発に Visual C++ を使用している場合は、
>Visual StudioR .NET の下でも Visual C++ でアンマネージド アプリケーションを生成することができます
と言うところまでたどり着いているのですが、そこから先がどう調べても出てきませんでした。
現在の.NET Frameworkが必要な(マネージド)環境からアンマネージドに変えるにはどういう設定をすればいいのでしょうか。
0882デフォルトの名無しさん
2005/08/16(火) 17:26:36コマンドラインでよければ。
hoge.cpp のアセンブル結果を見るには
cl /c /Fahoge.s hoge.cpp
とすれば、hoge.s が作れますよ。
0883882
2005/08/16(火) 17:44:22ではなくて、アセンブリリストファイルです。
アセンブル結果じゃバイナリだ…
0884879
2005/08/16(火) 18:18:18881にも書きましたがUnmanagedでの作り方が調べても分からず、
そもそも何をしたら.NET Frameworkが使用される(使用しなくなる)のかも不明・・・。
何方か詳しい方はいませんでしょうか。
0885デフォルトの名無しさん
2005/08/16(火) 18:31:330886デフォルトの名無しさん
2005/08/16(火) 20:08:35もう1つ追加質問、.NET Frameworkを使っているかどうかを既にインストールしている人が調べるには、
一度アンインストールし、exeを開くときにエラー等が出るかで無いかで判断するしかないのでしょうか。
0887デフォルトの名無しさん
2005/08/16(火) 20:23:010888デフォルトの名無しさん
2005/08/16(火) 21:34:56コンソールアプリで.NETを使わないでプログラムした場合は直接実行できると認識していたんだが
違ってたらスマソ
0889デフォルトの名無しさん
2005/08/16(火) 22:34:08あるEXEが.Netを使っているか、Nativeなのか、については、
dependsに食わせてみれば判る。
0890デフォルトの名無しさん
2005/08/16(火) 22:54:30おお、これは便利ですね。
ありがとうございます。
0891デフォルトの名無しさん
2005/08/17(水) 23:37:02プログラムのプロファイルを取りたくて上記のものに行き着いたのですが、
プロファイル結果がどうしても表示されないよ。
nativeなプログラムだと思うので
ツール->DevPartner Profileのinstrument managerでnative用の設定をしてビルド、
更にツール->DevPartner Profile->enable profilingでデバッグ無しで開始をやると
「.xxxxxx」(xxxの内容は忘れてしまいました)というファイルはちゃんとできるんですが、
結果が表示されません。
いろいろと調べてみるとプロファイリングしたいプログラムが終了するとプロファイル結果が
ウィンドウに自動で表示されるらしいのですがその結果が出ないということです。
仕方なくソリューションエクスプローラのDevPartner Profilerの項目で
先程生成された.xxxxxxファイルをダブルクリックで開いて見ると中身は空のようでした。
いろいろ設定を変えてみてもどうもうまくいかないのでDevPartner Profilerを
使っている方がいましたらお知恵をお貸しください。
0892デフォルトの名無しさん
2005/08/18(木) 01:21:49入力の際、スペースの変換の確定のVK_RETURNを取得しない
方法を探しています。
GetWindowLong(hEditBox,GWL_WNDPROC,(LONG)EditProc);
で、エディットボックスのキー操作をフックしています。
EditProc内では
if( wparam==VK_RETURN ) {}内で、文字列を取得しています。
(今のやり方)
初め if( msg==WM_KEYDOWN && wparam==VK_RETURN ) {}で取得を
試みましたが出来ず(WM_KEYDOWNを拾えない)、調べてみると
ダイアログなどでは不適切らしいので、修正しました。
0893デフォルトの名無しさん
2005/08/18(木) 02:01:500894デフォルトの名無しさん
2005/08/18(木) 02:21:56SetWindowPos
0895デフォルトの名無しさん
2005/08/18(木) 02:35:24タイマイベント処理でデータ更新して、終わったら再描画イベント発生させせばいいんでない?
再描画はInvalidRect とかつかって。
0897895
2005/08/18(木) 02:36:110898デフォルトの名無しさん
2005/08/18(木) 22:47:18メタセコイアで使用している色設定のコントロールのようなものを
自前で作成したいのですが、カーソル位置からRGBにどのようにして
変換しているのかわかりません。
あのような色空間はどのような基準で描画すればいいのでしょうか?
カーソル位置からRGBにどのようにして変換すればいいのでしょうか?
0899デフォルトの名無しさん
2005/08/18(木) 23:23:30uintptr_t _beginthreadex(
void *security,
unsigned stack_size,
unsigned ( __stdcall *start_address )( void * ),
void *arglist,
unsigned initflag,
unsigned *thrdaddr
);
この関数の引数stack_sizeの意味がよく分かりません。
stack_sizeというのはどんな代物なんでしょうか
たとえば、
unsigned __stdcall ThreadFunc(void *arg)
{
int i;
char ss[128];
//色々な処理
_endthreadex( 0 );
return 0;
}
こんな関数があるとすると、_beginthreadexでThreadFunc()を
スレッドとして呼び出したい場合、stack_sizeは(sizeof(int)+sizeof(char)*128)を
指定しないといけないと言うことでしょうか?
0900デフォルトの名無しさん
2005/08/18(木) 23:29:21MSDNを見よ。
>また、引数 stack_size に 0 を指定すると、オペレーティング システムはメイン スレッドに対して指定したスタックと同じ値を使用します。
こう書かれている。
0901デフォルトの名無しさん
2005/08/18(木) 23:32:54寡聞にしてメタセコイアが何かは知らぬが、
色相環からrgb値を得たいと言うことかな?
それなら戦略は二つ。
・クリックした座標の画素を拾ってrgb値を得る。
・クリックした座標値からrgb値を算出する。
#これ以上の情報が必要なら画像処理スレ向きかな。
0902デフォルトの名無しさん
2005/08/18(木) 23:48:53関数呼び出しでもスタックを消費するから、そのサイズだと足りない。
まあ0でも指定しとけ。
0903デフォルトの名無しさん
2005/08/19(金) 08:52:01_T(" ")とはどういう機能なのでしょうか。
よろしく願います。
0904デフォルトの名無しさん
2005/08/19(金) 09:14:55具体的にどのようなものなのでしょうか。
0905デフォルトの名無しさん
2005/08/19(金) 09:30:57HINSTANCEと言う型のhInstanceと言う変数の宣言。
詳細はF1を押してMSDNを見るか「宣言へ移動」を使ってインクルードファイルを見よ。
0906デフォルトの名無しさん
2005/08/19(金) 09:44:53ググルで探してみます。
意味を知りたかっただけです。
0907デフォルトの名無しさん
2005/08/19(金) 10:14:55Unicodeビルドか否かで L" " か " " になるマクロ。
0908デフォルトの名無しさん
2005/08/19(金) 11:53:33GetClientRectだと、クライアント座標でのウィンドウ位置が得られますが、left,topは常に0です。
では、子ウィンドウを作成したとして、子ウィンドウが属する親ウィンドウを基準としたleft,topを得たいのですが、どのAPIを使えばいいのでしょうか。
0909デフォルトの名無しさん
2005/08/19(金) 12:28:16GetWindowRectしてScreenToClient
0910デフォルトの名無しさん
2005/08/19(金) 14:38:44何かいい方法はありますか?
0911デフォルトの名無しさん
2005/08/19(金) 15:33:32CTimeクラス、tm構造体、mktime関数あたりを使えばいいと思う。
0913デフォルトの名無しさん
2005/08/19(金) 21:29:29簡単にいうとインスタンスハンドルというハンドル、
もっと砕けていうと、mainが持っているハンドルだよ
非常に荒く言うと、WIN32アプリ(コンソールアプリではない)ではハンドルがないと関数が動かない、ハンドルがないと車動かせないのと一緒
だから、メインウィンドウの初期化であるWNDCLASS(EX)やメインウィンドウ作るCREATEWINDOWはmainからインスタンスハンドルを頂かないと動かない
また、WIN32アプリではHWNDというウィンドウハンドルというのもある(WNDCLASS(EX)でHINSTANCEからCALLBACK関数へ関連付けされる、それと、CREATEWINDOWの戻り値でHINSTANCEから関連付けされる)
これは、メインウィンドウとダイアログとか、2つ以上のウィンドウのハンドルを分けるために存在する
具体的に言うと、メインとダイアログがHWNDハンドル同じ時は、例えばダイアログが開いている間はハンドル奪われて、メインウィンドウは操作できない
逆に、メインとダイアログがHWNDハンドル違うときは、ダイアログが立ち上がっている時でもメインウィンドウを操作できる
MFCになると、これをMODEL(前者)、MODELESS(後者)と言う
MFCにはMODELが標準になっている、そして、MFCではハンドルという概念がほぼ消えている
どういうことかというと、ハンドル分けてってことができないから、MODELESSが難しくなってくる
0914デフォルトの名無しさん
2005/08/19(金) 22:22:49フォルダを選択したい場合にはどうしたらよいのでしょうか?
0915デフォルトの名無しさん
2005/08/19(金) 22:42:56SHBrowseForFolder
0916デフォルトの名無しさん
2005/08/19(金) 23:02:050917デフォルトの名無しさん
2005/08/19(金) 23:33:38できました。ありがとう。
0918デフォルトの名無しさん
2005/08/20(土) 01:55:05インスタンスハンドルはアプリケーションの、
ウィンドウハンドルはウィンドウの、
独特の数値?(IDみたいなもん?)って事かな?
0919デフォルトの名無しさん
2005/08/20(土) 02:16:400920デフォルトの名無しさん
2005/08/20(土) 16:29:09まぁそんなもんだが、>913はほぼ間違ってるので注意。
0921デフォルトの名無しさん
2005/08/20(土) 22:50:54VS.NET2003でMFCを使ったりしてウィザードから作成する際、インクルードの書式が'/'でなくて'\'になってしまいます。
'/'にする方法はありますか?
0922デフォルトの名無しさん
2005/08/20(土) 22:53:120923デフォルトの名無しさん
2005/08/20(土) 22:58:07今はモジュールハンドルと同じ扱いだからそうだよ。
0924デフォルトの名無しさん
2005/08/21(日) 03:50:59インスタンスハンドルの項がないんだけど、
この実行プロセスがインスタンスハンドルを持ってないってことはないの?
0925デフォルトの名無しさん
2005/08/21(日) 04:11:270926デフォルトの名無しさん
2005/08/21(日) 04:18:410927デフォルトの名無しさん
2005/08/21(日) 07:20:32英語フォントを選択する。
0928デフォルトの名無しさん
2005/08/21(日) 09:09:43うん
0929デフォルトの名無しさん
2005/08/21(日) 10:21:32欲しければGetModuleHandle(0)で手に入る。
0930デフォルトの名無しさん
2005/08/22(月) 01:16:510931デフォルトの名無しさん
2005/08/22(月) 09:12:17表示にUNICODEもなにもないだろう。
0932デフォルトの名無しさん
2005/08/22(月) 20:08:49あとファイルから読み込んだ文字列を多次元(forで繰り返せる形)にするやり方教えてください
0933デフォルトの名無しさん
2005/08/22(月) 20:13:29できる
>あとファイル(略
元からChar配列だろ
0934デフォルトの名無しさん
2005/08/22(月) 21:56:29たぶんのUNICODE文字列をcoutとかprintfとかで表示できるか?
という質問じゃないか?
まあ、答えは無理なので、
UnicodeToAnsiとか使ってコンバートした文字列を表示させましょう。
0935デフォルトの名無しさん
2005/08/22(月) 22:02:13printfは%lc, %lsで表示できる。
0936デフォルトの名無しさん
2005/08/22(月) 22:07:32ダイアログベースでした説明不足すまそ
多次元はstrcpy使って出来ました。ありがとうございました。
0937デフォルトの名無しさん
2005/08/22(月) 22:14:29自作の static library 専用のフォルダを作って、相対パスで
pragma しても、うまく結合(?)されませんでした。仕方ないので、
絶対パスで指定していますが、そうする他どうしようもないのでしょうか?
0938デフォルトの名無しさん
2005/08/22(月) 22:31:380939デフォルトの名無しさん
2005/08/22(月) 22:34:52VCのディレクトリ設定に親ディレクトリを追加しろ
0940デフォルトの名無しさん
2005/08/22(月) 23:10:36別にそんなことせずともwcoutとかwprintfがある。
0941デフォルトの名無しさん
2005/08/22(月) 23:32:09できるってだけの話だろw
0942デフォルトの名無しさん
2005/08/22(月) 23:38:05こんなことしたらマッピングできない文字が表示できない。
0943デフォルトの名無しさん
2005/08/22(月) 23:45:290944デフォルトの名無しさん
2005/08/23(火) 00:36:44できれば、gccでも同じ機能の関数を教えてもらいたいです。
0945デフォルトの名無しさん
2005/08/23(火) 00:45:56標準にはないと思う。環境依存でWin32ならSleepとか。
0946デフォルトの名無しさん
2005/08/23(火) 03:50:35デバッグモードでコードをビルドして実行する際、コマンドライン引数を与えるにはどうすればよいのでしょうか?
普段は F5 で開始しているので、引数を与えるタイミングがありません。
よろしくお願いします。
0947デフォルトの名無しさん
2005/08/23(火) 03:58:43プロジェクトのプロパティ。前スレ読め
0948デフォルトの名無しさん
2005/08/23(火) 03:59:240949デフォルトの名無しさん
2005/08/23(火) 04:31:410950デフォルトの名無しさん
2005/08/23(火) 09:29:07「共有DLL 内でMFC」を使う場合は理解できましたが。
#ifdef _AFXDLL
Enable3dControls();// 共有 DLL 内で MFC を使う場合はここをコールしてください。
#else
Enable3dControlsStatic();// MFC と静的にリンクする場合はここをコールしてください。
#endif
0951デフォルトの名無しさん
2005/08/23(火) 09:33:17EXE内にMFCのコードを一緒に入れること。
実行時にMFCのDLLが不要になる。
0952デフォルトの名無しさん
2005/08/23(火) 10:51:59なぜ、const char*の引数名に「lpsz」となずけるのでしょうか?
ポインタなので、「P」をつけるのはわかりますが、
なぜ、「LP」と「L」がつくのでしょうか?
また、Stringなので「s」がつくのはわかりますが、
なぜ、「z」がつくのでしょうか?
0953デフォルトの名無しさん
2005/08/23(火) 11:07:26lpは多分ロングポインタ。nearとかfarがあった16bit時代の名残だと思。
szは"String terminated by Zero”の略かな。
ハンガリアン記法でググレ。
0954デフォルトの名無しさん
2005/08/23(火) 13:00:54ありがと、俺も知らなかった( ´ー`)
0955デフォルトの名無しさん
2005/08/23(火) 15:11:34hoge.exe のリリース版を通常に実行した場合エラーは出ないのですが、
ファイルのドラッグ&ドロップでコマンドライン引数を与えて実行した場合、
if (file.Open(filename, CFile::modeCreate | CFile::modeNoTruncate | CFile::modeRead, &pError) == 0){
CString s;
s.Format("%d", pError.m_cause);
AfxGetApp()->m_pMainWnd->MessageBox(s);
return 1;
}
の部分でファイルのオープンに失敗し、エラー番号 3、つまり CFileException::badPath が返されます。
開こうとしているファイルは、引数とは何の関係もない別のファイルです。
filename は相対パスで指定してあるので、hoge.exe と D&D したファイルでカレントディレクトリが違うのが原因かと思い、
この2つを同じフォルダに入れましたが、だめでした。(同様のエラーが出ました)
なぜ不正パスと言われるのかが見当がつきません。
よろしくお願いします。また、他に必要な情報があればお願いします。
0956デフォルトの名無しさん
2005/08/23(火) 15:15:57Drag&Dropではなく、普通にコマンドラインに引き数つけて起動したらどうなるの?
0958955
2005/08/23(火) 15:36:09コマンドラインならOKで、D&Dだとだめ・・・
0960956
2005/08/23(火) 16:50:29コマンドライン引き数をそのままMessageBoxかなんかで表示して味噌。
Drag&Dropのときは二重引用符で括られて内科医?
そうだとしたら、剥がさないといけないってことになるわけだ。
0961デフォルトの名無しさん
2005/08/23(火) 16:57:51コマンドライン引数を同処理してるのか書いてみ?
0963デフォルトの名無しさん
2005/08/23(火) 17:07:260964955
2005/08/23(火) 17:07:36肝心なことを書き忘れていました・・・。
MFC を使っているので、WinMain は隠蔽されています。
コマンドライン引数の処理については、
char* cmdline = AfxGetApp()->m_lpCmdLine;
file.Open(cmdline, CFile::modeRead | CFile::typeBinary);
といった感じです。ただ、エラーが起きている部分(badPath)は、
引数とは何も関係のないファイルを開いたときに起きています。
上のコードが処理されるよりずっと前に起きています。
0965デフォルトの名無しさん
2005/08/23(火) 18:09:29カレントディレクトリが、exeのある位置じゃなくて
ドラッグ元ファイルのディレクトリなったような気がしないでもない。(違うかも)
その辺りで問題が起きてるとか。
0966デフォルトの名無しさん
2005/08/23(火) 18:18:51GetCurrentDirectory()でアプリの実行ディレクトリを確認してみ
0967955
2005/08/23(火) 18:34:32確認したところ・・・全然別のところに!!
E:\Documents and Settings\(ユーザ名)\デスクトップ\〜\
に、exe およびD&Dしたファイルがおいてありますが、
表示されたカレントディレクトリは
E:\Documents and Settings\(ユーザ名)\
でした。
ファイルがオープンできなかった理由は分かりました。ありがとうございます!
しかし、なぜカレントディレクトリがこのように・・・
0968955
2005/08/23(火) 18:35:130969955
2005/08/23(火) 18:39:48D&Dするとカレントディレクトリは E:\Documents and Settings\(ユーザ名)\ でした。
はて・・・
0970デフォルトの名無しさん
2005/08/23(火) 18:51:55Explororの怪しい仕様。
0971デフォルトの名無しさん
2005/08/23(火) 19:01:210972デフォルトの名無しさん
2005/08/23(火) 19:02:35絶対パスで開くしかないんじゃないか?
0973デフォルトの名無しさん
2005/08/23(火) 19:05:51InitInstance()あたりで以下の処理を行う。
1) GetModuleFileName()でアプリのフルパス(ファイル名含む)を取得
2) それからディレクトリパスを抽出 (末尾から'\\'を探す)
3) SetCurrentDirectory()でディレクトリパスを設定
・・・これでダメかな?
0974955
2005/08/23(火) 19:08:57まじですか・・・
>>972-973
わざわざ詳しくありがとうございます。やってみます。
皆様、長時間ありがとうございました。
0975デフォルトの名無しさん
2005/08/23(火) 20:35:32VC++.NET2003なんですが、右下のプロパティにドッキングしていた
ドキュメントなんたらってものがなくなってしまいました。
どうしたら表示されるのでしょうか。
また、表示を全てデフォルトに戻す方法はあるのでしょうか?
0976デフォルトの名無しさん
2005/08/23(火) 20:37:37しかもダイナミックヘルプだったし^^;
これがデフォルトに戻すやつなんですね。
おさわがせしました。
0977デフォルトの名無しさん
2005/08/23(火) 21:51:11現状で特に不便を感じてないですが、VC++ .NET 2003 は .NET非依存の
ネイティブコード(アンマネージドというのでしょうか)も吐けるそうじゃないですか。
.NET自身に手を出すつもりはまだ無いですが、
・IDEの使い勝手向上(コード編集、ヘルプ、デバッグなど)
・MFCの機能向上
などの恩恵があるなら導入したいなーと思いました。
経験豊富なお兄ちゃん方、こんな私に
「(非.NETの観点から)6 -> .NET 2003でココがイイ!あるいはゴルァ!」
について教えていただけないでしょうか?
0978デフォルトの名無しさん
2005/08/23(火) 22:30:58・インテリセンスの頭が良くなった -> マクロにも対応する
・タブ式エディタ化した点
・boost::lambda が普通に使えるようになった点
・プログラム全体の最適化 /GL が追加された点
-- 悪い点 --
・重くなった
・慣れるまでムカついた
IDEの便利さを求めるのであれば 2005 がより良いんじゃないかと個人的には思う。
0979デフォルトの名無しさん
2005/08/23(火) 22:31:560980デフォルトの名無しさん
2005/08/23(火) 22:36:58曰クリックで折りたたみ
ソースをコピーしてワードパッドに貼り付けると...。
0981デフォルトの名無しさん
2005/08/23(火) 22:42:23あとインストールも遅すぎ。なんでこんな時間かかるんだ?
0982デフォルトの名無しさん
2005/08/23(火) 22:44:23変更しても再起動すると戻ってしまうのは超使いにくい。
クラスウィザードが無くなったので、メンバー変数やメンバ関数を追加するたびに編集画面に
行ってしまうのは使いにくい。反面、6.0ではちゃんと入力補完が効かなかった構造体(TVITEMとか)の
メンバーもちゃんと出るようになったのはありがたい。コンパイラの性能が格段に向上した。スケルトンで
インクルードガードは使われなくなった。代わりに#pragma onceで代用するようになった。
MFC:機能向上したが少しややこしくなった。感動的なのはCStringでTrimLeft()とTrimRight()を一度で行うTrim()が加わったことだ。
MFCのバージョンが上がったわけだが、作ったアプリを再配布する時は、必ずMFCのdllを添付しないといけなくなった。
というのも、XPなどにはMFC70.dllとかはサービスパックにすら含まれていないからだ。つまり、VS.NET以降のMFCアプリは
これまでとは違ってそのまま手軽に再配布というわけにはいかない。古いMFC42.dllとかは元々OSに附いているからVS6.0で作った香具師は
そのまま配布でも何とかなるのにねぇ。
0983デフォルトの名無しさん
2005/08/23(火) 22:48:27プロジェクトを作って後からスプラッシュスクリーンを追加するとかは
出来ない。必要なら全部自分で作成する必要あり。
0984デフォルトの名無しさん
2005/08/23(火) 22:48:380985デフォルトの名無しさん
2005/08/23(火) 22:49:450986デフォルトの名無しさん
2005/08/23(火) 22:50:44良い点:VC++6.0では一部は手打ちだったコンパイラのオプションが
ちゃんとGUIから指定出来るようになったこと。
0987デフォルトの名無しさん
2005/08/23(火) 22:51:530988デフォルトの名無しさん
2005/08/23(火) 22:52:360989デフォルトの名無しさん
2005/08/23(火) 22:59:04一から勉強しなおしだねVC6→VC7の場合は。
0990デフォルトの名無しさん
2005/08/23(火) 23:03:130991デフォルトの名無しさん
2005/08/23(火) 23:04:11が多いんですけど、どうしましょうか。
だから結局、C言語でMS-DOSプロンプトのプログラムを書いて、コマンドラインからコンパ
イルすることばかりになってしまうんやけど。
0992デフォルトの名無しさん
2005/08/23(火) 23:04:42それよりeclipseにある機能を早くつけろ。
0993デフォルトの名無しさん
2005/08/23(火) 23:09:53お前はeclipse使ってろ。
0994デフォルトの名無しさん
2005/08/23(火) 23:12:09http://pc8.2ch.net/test/read.cgi/tech/1124806288/l50
0995デフォルトの名無しさん
2005/08/23(火) 23:27:520996デフォルトの名無しさん
2005/08/23(火) 23:28:360997デフォルトの名無しさん
2005/08/23(火) 23:29:080998デフォルトの名無しさん
2005/08/23(火) 23:29:530999デフォルトの名無しさん
2005/08/23(火) 23:29:591000デフォルトの名無しさん
2005/08/23(火) 23:30:0610011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。