★初心者にVisual C++を教えるスレ★ Part5
タイトルのとおり、
Visual C++ 初心者用スレッドです。
前スレ・関連スレは、
>>2 ぐらい。
4 :
デフォルトの名無しさん :03/03/27 04:06
5 :
デフォルトの名無しさん :03/03/27 06:16
乙
7 :
デフォルトの名無しさん :03/03/27 20:33
NGなのは藻前様の方だ!
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >_∧∩
_/し' //. V`Д´)/ ←
>>6 (_フ彡 /
8 :
デフォルトの名無しさん :03/03/27 20:51
C++初心者です、始めたばかりです、よろしくお願いします。 C言語自体初めてで、質問があります。 PERLの =~ s/hoge/ahya/; のように文字列を置換するにはどのようにしたらいいんでしょうか? 必要なヘッダファイルと、関数を教えていただけたらありがたいです。
そんなもんあるのか?
boost::regex かね。
11 :
デフォルトの名無しさん :03/03/27 21:25
>>8 その正規表現ならCStringクラスできるぞ。
CString::Replace("hoge","ahya");
- 完
12 :
デフォルトの名無しさん :03/03/27 21:41
>>11 ありがとうございました......
来年から授業とる予定なのでやっぱVC++買った方がいいかもですね......
13 :
デフォルトの名無しさん :03/03/27 21:51
MSDN >派生クラスのオーバーライド関数を基本クラスの仮想関数から >戻り値の型だけ変更して再定義することはできません。 とありますが、戻り値も引数も全く同じなのにこのエラーが発生しました。
なんとか原因突き止めました。 >とありますが、戻り値も引数も全く同じなのにこのエラーが発生しました。 嘘でした(汗 class LObject { private: public: LObject(){} ~LObject(){} virtual void print(std::ostream& a_ost) const; // ↓コイツのせい virtual const LBoolean& operator= (const LNil& a_nil); }; class LNil : public LObject { private: public: LNil(){} ~LNil(){} void print(std::ostream& a_ost) const{ a_ost << "nil" << std::endl; } // ↓こんなのが暗黙の内に入れられるのかな // const LNil& operator= (const LNil& a_nil); }; LNil::operator=は勝手にオーバーライドされてしまうのですね。 LNilではoperator=不要なので、どうにかなりませんかね?
>>15 正しくは
LNil& operator= (const LNil& a_nil);
が勝手に作られてるはず。
使わない場合は private メンバで宣言だけしとくのが定石。
ただ、この場合の問題は LObject の定義にある気がする。
operator==() と間違えてるんじゃない?
>>16 ありがとうございます。
>正しくは
>LNil& operator= (const LNil& a_nil);
ちとボケてました(^^;
>使わない場合は private メンバで宣言だけしとくのが定石。
なるほど。
>ただ、この場合の問題は LObject の定義にある気がする。
確かに・・・
かなり馬鹿な事やって穴に嵌ってしまいました。
別に==と間違えていたわけではありません。(^^;
18 :
デフォルトの名無しさん :03/03/28 08:54
すみません。ド素人すぎてどう質問していいかもよくわかんないんですが 例えば、CDialogを基底にしたクラスの中でSendMessageを使おうとすると CWndのSendMessage SendMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0 ); が呼ばれるんですよねぇ? それじゃなくってAPIのSendMessage SendMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam ); を呼び出すことってできないんでしょうか?
今VCを勉強しています。 私はよくエクセルを使うのですが、 VCでdll作って、それをエクセルから呼び出して使用することをできますか? 可能ならば、どのようにすればいいか、あるいはどのような書籍を読めばよいか 教えていただけませんか。
>>18 ::SendMessage
じゃ駄目なのか?
>>20 あ、そうやればいいんですか!
ありがとうございました!('-'*)アリガト♪
VC++6.0のスタンダードエディションで作成したソフトはフリーソフトとして公開してもよいですか?
よい。
25 :
デフォルトの名無しさん :03/03/28 13:11
VC++.NETはDelphiのようにRAD風ツールになったと聞いたのですが コンポーネントもつくれますか?
>>25 答える前に確認しておきたい。
誰に聞いたの?
>>24 調べてみました。MFCがスタティックリンクできないみたいですね。
まあ、使わないからいいけど。
WinXP + VC6で リンク中... LINK : fatal error LNK1212: プログラム データベースを開く際のエラーです、ファイルは使用中です link.exe の実行エラー といわれたのですが、何が悪いのでしょうか? どうすれば直りますか?
>>26 じゃあその坂田さんとは、
ロリ画像をもらうだけの付き合いにした方が良いよ。
たぶんC#と勘違いしている。
>>29 生成するexeファイルが実行中なのでは?
>>29 ファイルの排他アクセスに引っかかったんじゃないかな。
VCで使うファイル(ソースや中間ファイルなど)が他で使われているからlink.exeが使えないってことでしょ。
再起動すりゃ直る。
>>31-32 サンクスです。
>生成するexeファイルが実行中なのでは?
プログラムは終了してます。
>再起動すりゃ直る。
そのとおりでした。この現象はたまにおこるだけなのですが、そのたびに再起動は
めんどくさいです。
34 :
デフォルトの名無しさん :03/03/29 00:51
>>33 XPだとよくある現象。気にせず再起動しる。
XP から 2000 にする事をバージョンアップといいます。
プロはバージョナップと言います
39 :
デフォルトの名無しさん :03/03/29 12:30
MAKEINTRESOURCE(i) ですが、 #define MAKEINTRESOURCE(i) (LPTSTR) ((DWORD) ((WORD) (i))) と定義されています。 RegisterClassExのメニューリソースの指定などで使用する場合、 文字列へのポインタの上位ワードがNULLの場合に、それが 文字列へのポインタではなく、リソースIDだと判断するようなので すが、通常のポインタは上位ワードがNULLではないと保証 されているのでしょうか?
40 :
デフォルトの名無しさん :03/03/29 20:34
三日ほど前にC言語を勉強し始めた者ですが、 実際に書いたソースを動作させてみたくなりました。 ちなみに参考書として林晴比彦の「改訂 新C言語入門 スーパービギナー編」 を使っていて、半分まで進みました。 VC++.NETが12800円で売っていたんですが、これを買って問題ないでしょうか? アカデミーパックとは書いてなかった……学生です。
>>40 問題はないがまずはフリーのコンパイラでじゅうぶんだろ。
アカデミックならもっと安いけどな。
>>41 アカデミック版はフリーのコンパイラよりも安いのか?
ただより高いものはない?
仰る通り。
>40 まずはあなたのOSがNT系列である事を確認する事。95系列には.NETは対応してないからね。 ただ、Cをやるだけなら、別にVC.NETを買う必要はないかと。 LSI-C試食版とかBorlandのとかフリーのはいっぱいあるから、 とりあえずそれで試してみたら?
遅れました。XPです。 フリーのを使ってみようと思ってBorlandをダウンしたんですが、 インストールがわからず(^^;;; もうちょっと色々フリーを見てみます。 ありがとうございました。
あ、違った。後々使うのはXPで、今使っているのは98だ。 てかメモ帳でcfgファイルを作るってのがよくわかりません。 「すべてのファイル」で保存しても何故かtxtの拡張子が付くんですけど。
49 :
デフォルトの名無しさん :03/03/30 09:16
>>48 それはメモ帳のアホ仕様。
Cやるなら、メモ帳じゃなくて、フリーのエディタ使え。
50 :
デフォルトの名無しさん :03/03/30 09:59
caseの次は字下げしたいのに・・・
51 :
◆sZMOg20d0E :03/03/30 10:53
とりあえず、林晴比古についての参考
http://www.pro.or.jp/~fuji/computerbooks/c/index.html これでも読んでくれ。
漏れも初心者の時 こやつの本買って失敗した。
本のとおりやっても動かんものができたよ。
CG目指してるやつに その本くれてやったが、
そいつからも苦情が漏れに来た。
「本のとおりやっても 動かんぞ ゴラァ!!」ってな。
なんかシリーズ化しているみたいだけど みんな泣き寝入りなのかな?
ちなみにその本は手元にないからどの本かはもう覚えていない。
いっぱいだしてるしな。特定できんよ。
なんか最近VC++をやってるとよく飛ぶんだけど。しかもOSごと… Windows2000+SP3の組み合わせが悪いのか・・・
おかしいと思ったらまずmemtest86
55 :
デフォルトの名無しさん :03/03/30 15:18
>>47 初心者ならVC++の方が設定周りが楽だと思うよ。
VC++.NET Standard って6000円くらいで売ってたと思ったけど違った?
56 :
デフォルトの名無しさん :03/03/30 15:22
そういや、 if ( .... ) { } っていうスタイルが一般的だけど、漏れは if ( ... ) { } の方が読みやすくて良いと思った。最初の方は 一見スマートだけど、コードの中にあると、カッコ の対応が分かりづらくて苦労する。
>>56 コーディングスタイル論争やりたいなら他逝けハゲ。
ワークスペースウィンドウとか、アウトプットウィンドウとか、 ツールバーとかって、動かないように固定できないのでしょうか。
Borlandでたぶん設定できました。ありがとうございます。
exeファイルができたんですが、実行してもパッとMSDOSウィンドウが出るだけなんです。
「面積は12.566360です」っていう文章が実行結果として出ると
参考書に書いてあるソースを作ったはずなんですが。。。
>>55 スタンダードがどうか見るのを忘れました。もう少ししたら買おうかな……。
VC++.NET standard でインラインアセンブルはできますか?
>>60 表示した後に getch() や scanf() で何か入力を求めると一時的に止まるよ。
>>62-63 う……すいません、どちらも理解不能です。
一瞬しか現れないので入力する間がありません……普通こういうものなんでしょうか?
65 :
デフォルトの名無しさん :03/03/30 21:30
>>64 DOSプロンプトを開いて、そこから実行すればいい。
コーディング論争は宗教論争になるからね スレは盛りあがるけど荒れる可能性もある両刃の剣 素人には(ry
DOSプロンプトってみんな未だに16ビットアプリを作ってるのか?
ココは初心者スレだぞ。 C/C++の練習で使っていても何も問題あるまい。
デ…デキタ─wwヘ√レvv~(゚∀゚)─wwヘ√レvv~─ !!! 出来ました! きっちりと「面積は12.566360です」と出た! おお〜感動〜。一体これに何の意味があるのかわからないけどw ありがとうございました!
>>68 DOSプロンプトなら32ビットアプリだろ
76 :
デフォルトの名無しさん :03/03/31 01:44
私もCの勉強を始めたばかりで
>>40 さんと同じ参考書を使用してます。
その中の「Visual C++を利用してCコンパイラを使う方法」を試しているのですが
プロンプトで「edit smp.1(ファイル名)」を入力すればWindows付属のEDITエディタが起動するはずが
同じ通りにやってるのに認識してくれません。
一体何故なのでしょうか?
ちなみにOSはXPでVisual C++.NETを使用してます。
そもそもXPにedit.exeなんかあるのか?
78 :
デフォルトの名無しさん :03/03/31 02:55
>>77 検索したら「EDIT.EXE」ありますた。
>>76 メモ帖でやれば?
editの代わりにnotepadで。
82 :
デフォルトの名無しさん :03/03/31 11:44
☆ チン マチクタビレタ〜 マチクタビレタ〜 ☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ヽ ___\(\・∀・) < ServicePack6まだ〜? \_/⊂ ⊂_ ) \_____________ / ̄ ̄ ̄ ̄ ̄ ̄ /| | ̄ ̄ ̄ ̄ ̄ ̄ ̄| | | たけのこの里 |/
84 :
名前は開発中のものです :03/03/31 16:00
Cの基本はわかるんで、そろそろC++やってみようと思うんですけど 早いですか?それと習得(あいまいな言い方ですみません)には、どのくらい 時間かかりますか?
ももくり3年かき8年
>>84 決まりなんて無いんだからやる気があるなら今すぐやれ。
>>84 84さん次第。構造体,malloc,freeを使いこなせるのであれば
同様にclass,new,deleteを使いこなせるように進めれば。
もちろんそれだけではないけど。
ネットワークプログラムを組もうと思い 参考になりそうなサイトを色々と探しましたが もし皆さんが参考になったサイトがあったら 教えてください。
90 :
名前は開発中のものです :03/03/31 16:25
みなさんお返事ありがとうございます。86さんのリンクページ読んだら、Cに慣れすぎて しまうと、オブジェクト指向で挫折する人が多いと書いてあったの ので、Cに慣れすぎてしまう前に移行しようと思います
91 :
デフォルトの名無しさん :03/03/31 16:30
やはりインターネット上のデータより 書籍のほうが勝ってるのでしょうか?
どっちもどっち 両方活用すれ
今日から仕事の都合でVCを使い始めた初心者です。 質問がありカキコしました。 他のエディタでEUCの文字コードで作成したソースファイルを、 VCで開くと文字化けしてしまうのですが、どうすれば改善するのでしょうか? どこかに開くファイルは必ずEUCの文字形式で開くような設定はあるのでしょうか? どなたかご存じでした教えて下さい。 よろしくお願い致します。
>>96 やっぱりシフトJIS等に一度変換しないとダメなのでしょうか?
納品でEUC形式で行うように統一しているので、
VC上でソースを編集する時もEUC形式で表示されたものを編集したいです。
どうしても無理であれば仕方ない事なのですがね。
了解しました。 仕方が無いので、EUC形式が正しく表示出来る違うエディタで編集して、 編集が終わったらVCでコンパイルする事にします。 質問に答えて頂きありがとうございました。
>>94 おぉ。いいスレですね。
ありがとうございます。
101 :
デフォルトの名無しさん :03/03/31 23:15
vc++.net でcursesライブラリを使うにはどうするんでしょうか?
102 :
デフォルトの名無しさん :03/04/01 00:10
なんだかCの参考書って難しくてさっぱりです。 この意味わかる方教えてください 某参考書の一節 #ifがよく使われるのは、ヘッダファイルの二重include防止です。 #if ANYHEADER_H #define ANYHEADER_H ・ ・ ・ #endif
何が分からないのか分からん
と思ったがそれじゃまともに動かないじゃん
106 :
デフォルトの名無しさん :03/04/01 00:21
構文の例みたいなもんなんですが、二重includeって なんですか?
107 :
デフォルトの名無しさん :03/04/01 00:26
二重includeとはなんですか?
#if ANYHEADER_H じゃなくて #ifndef ANYHEADER_H じゃね。
二重にincludeすることです
110 :
デフォルトの名無しさん :03/04/01 00:34
>108 そうでした。108さんの言うとおり。 すみません、そちらの方でお願いします
現代人は #pragma once を使います。
113 :
デフォルトの名無しさん :03/04/01 00:37
どこで二重にincludeしてるかよくわかんないんです。 低レベルな話だと思いますがよろしくお願いします
115 :
デフォルトの名無しさん :03/04/01 00:48
vc++.net でcursesライブラリを使うにはどうするんでしょうか?
117 :
デフォルトの名無しさん :03/04/01 00:56
釣られてあげよう。でも、この後のレスはないので念のため。 ひとつのファイルをコンパイルするのに 同じファイルを何回もインクルードするのは無駄。 だから、コンパイラが読み込みを省略してくれることもあるし、 万が一、2度読み込まれても構文解析が読み飛ばしてくれるように、 #ifndef ANYHEADER_H #define ANYHEADER_H ・ ・ ・ #endif と書いておく。 stdio.hみたいなファイルは、 ありとあらゆるヘッダーにかかれているから、 コンパイル時間の節約になるし、 同じ宣言が重複するエラーも出ない。 さらばじゃ。
118 :
デフォルトの名無しさん :03/04/01 01:02
119 :
デフォルトの名無しさん :03/04/01 01:04
>どこで二重にincludeしてるかよくわかんないんです。 いいところに気がついたじゃないか。 プログラマのほとんどは、どこで二重にincludeしてしまうのか わかってないんだよ。だけど、その呪文を書いておけば、 どこで二重にincludeしてしまっても気にする必要がないんだよ。 どーだ楽ちんだろ。
#ifndef ANYHEADER_H #define ANYHEADER_H #pragma once ・ ・ ・ #endif まぁあれだ 『おまじない』だと思ってこれは必ず入れて置けと
>>122 VC++.NETが使えるのは2000/XP→2000/XPではエスケープシーケンス無理
→がんばれない。
124 :
デフォルトの名無しさん :03/04/02 09:17
VC++.NET 使ってる人にお尋ねしますが、これにも MSDN Library が付属してると思うんですが、これの Platform SDKの解説は相変わらず大部分英語ですか? それとも完全に日本語訳になったでしょうか? VC++6.0使ってるんですが、翻訳がホントに一部だけで WNDCLASS構造体の解説ですら英語という状況なので 完全に訳されているなら.NETに移行しようかと思ってる んですが。
125 :
デフォルトの名無しさん :03/04/02 09:42
COleVariant オブジェクトにCHAR型の文字ををセットするのには どうすればよいのでしょうか?
126 :
bloom :03/04/02 10:01
>>125 char c;
COleVariant v(CString(c));
ヘルプの英文に英語の知識はほとんどいらない
130 :
デフォルトの名無しさん :03/04/02 15:10
#include <stdio.h> int main() { int a, b; printf("a, bを入力してください\n"); scanf("%d, %d", &a, &b); printf("a = %d b = %d\n", a, b); printf("何かキーを押してください"); getchar(); printf("end"); return 0; } 実行するとgetchar()の入力待ちが起きずに終了してしまうんですが なぜでしょうか。コンパイラはvc++.netです。
scanfでデータを取りこぼしているから
132 :
デフォルトの名無しさん :03/04/02 23:22
<<127 ありがとうございます。
133 :
デフォルトの名無しさん :03/04/02 23:49
VC++.NETを使ってますが、先日までは自分が記述したプログラムだけ ステップインしてデバッグ出来ていたのですが、先ほどやってみると strcpy,strncpy,starcat,CString等他の関数の中身(アセンブリ?) までステップインしてしまってます。 きっとどこかの設定を触ってしまいこうなったのだと思いオプション 設定を見直したのですが、わかりませんでした。 教えてください。
134 :
デフォルトの名無しさん :03/04/03 06:22
>>133 ステップアウト (関数から抜け出る)
ステップオーバー (次の関数へ)
のボタンないですか?
135 :
デフォルトの名無しさん :03/04/03 09:28
<<134 ありがとうございました! ステップアウトでできました。以前はF8ステップインだけを押して いてそんな事してなかったと思ったのですが。。 これでデバッグがまたはかどります。 ステップインって必要ないじゃん!
>>135 んなこたーない。
自分の書いた関数の呼び出しもトレースしなくなるぞ。
本に載ってたソースを元にファイル出力をしてみようと ↓のコードを書いたのですが if(GetAsyncKeyState(VK_TAB) & 0x8000) { HANDLE hmap; char *map; PDWORD bite=0; map=(char *)bData; hmap =CreateFile("C:\\map.txt",GENERIC_READ|GENERIC_WRITE,0,NULL,CREATE_ALWAYS,NULL,NULL); if(hmap != INVALID_HANDLE_VALUE){ WriteFile(hmap,map,lstrlen(map),bite,NULL); CloseHandle(hmap); } } WriteFileができず 「ハンドルされていない例外 は Sample11.exe (KERNEL32.DLL) にあります: 0xC0000005: Access Violation。」 とでてしまいます。 どうすれば書き込むことができるのでしょうか?
VC++6.0 を使ってます
>>137 >PDWORD bite=0;
これはないでしょう。
「第四引数は実際に書き込まれたBITE数が代入されるだけ」 と書いてあったので適当に初期化してみたのですが まずかったでしょうか。 どう直せばよいのでしょう。
つまりアドレス0に代入されていることになるが・・・
Σ(゚Д゚ PDWORDなんてものがあるなんて知らなかった…。
mallocなどでメモリ領域を確保してそのアドレスを入れればよいのでしょうか?
あるある、俺も以前間違えた。 MSDNにも素直にFoo(HOGE* hoge);って書いてくれればいいのに Foo(LPHOGE hoge);って出てたりするし。
>>143 答えから言えば
DWORD dwBit;
としといて関数に&dwBitを渡す。
たぶんMSDNにも「第四引数は〜へのポインタ」みたいなこと書いてあると思う。
ありがとうございます。 やってみます。
できました。 Pはポインタを示す冠詞のようなものなのですね。 初めてしりました。
LPとP両方定義されている物、 片方しか定義されていない物、 まったく存在しない物、 16bit時代の名残を引きずっているとはいえ、 M$の定義はいい加減すぎる
すいません。 Directxを使ってクライアント領域に描写しているのですが ダイアログのようなエディットボックスで 文字入力したいのです。 どのようにすればよいでしょうか。
151 :
デフォルトの名無しさん :03/04/03 20:12
VCでC++じゃなくてCをコンパイルするのて、 簡単に出来るんですか?
152 :
デフォルトの名無しさん :03/04/03 20:15
153 :
デフォルトの名無しさん :03/04/03 20:39
ありがとうございます。 助かりました。
ダイアログウィンドウって子ウィンドウ作れますか?
解決しました
>>156 つーか子ウィンドウの作れないウィンドウってあるか?
VRAMの表示バンク切り替えやクリッピング無しの描画によって見えなくなることはある いくらでも対策はあるけど
VC++6.0をWin2kProで使用でのことについて質問です。 以前まで(今回の再インストール)は、VCの「ファイル、編集・・」などある あのメニューから、ツールバーのカスタマイズをするときに引用できたのですが、 なぜかできなくなりました、ためしに完全インストールや上書きインストールなど やってみましたが無理でした。 やりたいことは、 ツール→カスタマイズで、ファイル→ワークスペースを開く を ツールバーに追加したいのですが、このメニューが何か違うのです、左端につまみ がないメニューに(表現悪くてすいません)なっていて、 編集メニュー項目とかにアイコン付で項目があると思うのですが全ての項目に アイコンがついてません、アイコンが描画される幅がない感じで狭いです。 友人から試しに上述のカスタム状態のレジストリをもらって上書きすると、一応 できたのですが、メニュー項目のアイコンなどは復帰しないです。 どなたかご教授下さい、わかりにくければ再度説明します。お願いします。
>>159 わかりにくいのでもう一度お願いします。
>>159 >ツール→カスタマイズで、ファイル→ワークスペースを開く を
>ツールバーに追加したいのですが
そんなに何度も使うものじゃないのにツールバーに必要ですか?
>>161 私は結構つかうので…。まぁなくても不便とまではいかないかも
しれませんが、できなくなったのが一番嫌なことでしょうか。
>>162 えっと、ツール→カスタマイズ、でツールバーに
ファイル→ワークスペースを開く をD&Dしたら、ツールバーに
同じ機能のボタンが生成できるんですが、その機能ができなく
なったのです。
カスタマイズ設定時でのメニューの項目が全てグレーになって
しまっています。
そのほかの見える現象としては、メニューがWin95時代(?)の
感じみたいになっていて、IE5とかのように左の端につまみがなく
なっています。
IEですとお気に入りのなかの項目にアイコンがあると思います。
プログラムだとオーナードローする技法のやつです。
VC6.0のメニューもそういった感じだったはずが、上述のとおり
Win95チックになってしまっています。
画面をみてもらえばいいのですが、そういうわけにも
いかないですね。
文字で表現するのが難しい、どうか宜しくお願いします。
>>159 >今回の再インストール
これが謎だけど、単にIEのバージョンが古いというのではあるまいな?
>>164 IEは5.5SP2です、正確には今回のWindows2000Proインストール
以来ずっとこの現象が残っているのです。
あれはIEコンポーネント関連と考えてIE6にしたり(今はけしました)
しても無理でした、VCの再インストールも無理でしたし。
以前まではWinインスト後まっさきにVCインストールでも、
正常になっていました、Winまた再インストールすればよい気も
するんですがこれだけの為にするのにも手間がかかるから敬遠してます。
どこか自由に画像アップロードできるところがあればいいのですが、
検索の仕方が悪いのかいまいちでてこない…。
他何か足りない情報ありますでしょうか?
今ちょっと思いついたのでレジストリを完全削除してVC起動してみます…。
(これでうまくいかないかなぁ)
レジストリを完全削除したらOSが起動不能になるが
>>166 あ、もちろんVcのです、やってみましたが無理でした。
猫のところで画像があったので説明します。
ttp://www.kumei.ne.jp/c_lang/setvc.htm ここにページにある画像の「||ファイル|編集・・・」や
プロジェクト→プロジェクト追加→[アイコン]ファイル
となってますが、これの
メニューは、ちょうどメモ帳のメニューのようになって一番左のCのアイコン無し
メニューポップアップはアイコンが一切ないです。
これでもっと分かりやすくなったでしょうか…。
(´-`).。oO(あきらめてくれよ頼むから)
うーん、2chにすら同じ症状でた人いないみたいですねぇ。
それともあほすぎる質問なのかな。
まぁ開発には直接影響ないので
>>168 さんの言う通り
諦めることにします。
再三の書き込み失礼致しました。
自分のスキルアップに繋がる質問なら モチベーションあがるんだけどね〜。
>>170 スレタイがスレタイだけにそりゃ難しいだろ。
>>159 ツール -> オプション -> ワークスペース -> 画面読み取り互換メニューを使用
ぢゃないか?
AfxRegisterWndClass ( NULL, AfxGetApp ()->LoadStandardCursor ( IDC_ARROW ) って関数があったんだけどAfxGetApp()->の文法で関数の後にアロー演算子って どんな意味があったっけ、一度みたような気がしたんだけど 調べるキーワードおせーてください
条件が関数の後だと思っている辺り、Cの基礎をやり直した方がいいと思われる
条件がCだと思っている辺り、C++の基礎をやり直した方がいいと思われる
ネットと参考書ひらけたが構造体とオブジェクトでの 文法しかのってない、もう少しヒントを、、、
178 :
デフォルトの名無しさん :03/04/05 23:03
C言語でも可能な記述。ただしアローの先が関数ってのは有り得ないけど 構造体のポインタを返す関数に対して使える。 よって175の指摘どおりCの基礎をやり直すべき。
>アローの先が関数ってのは有り得ないけど ん? typedef struct { HRESULT (*LoadStandardCursor)(int); } func_struct; func_struct *AfxGetApp(); AfxGetApp()->LoadStandardCursor( IDC_ARROW);
あ、なるほど。 そのままだったね 基礎たりないね >アローの先が関数ってのは有り得ないけど これはありえると思うんだけど、てかメソッドか?
181 :
デフォルトの名無しさん :03/04/05 23:15
構造体内の関数ってC言語の規格だっけ? 細かい所はぐちゃぐちゃなのでスマソ...
182 :
デフォルトの名無しさん :03/04/05 23:17
失礼良く見てなかった。 関数ポインタね。さらにスマソ...
>構造体のポインタを返す関数に対して使える。 ということでいいですね 動作テストははぶいちゃいます
軽いプログラムをつくっているのですが 1 API 2 MFC 3 ウィザード この内どれで作るかまよってます モノはアナログ時計でリージョン使おうと思ってます ウィザードが安定してそうなんですが、ウィンドウを 作る前にオーバーライドするのってどうしてます?
>>184 手軽に作るならMFCが楽ぢゃない?
ウィザードってよく分からんが。
申し訳ない、、 全力で説明してるんだが、なんとか読み取ってくれないかの〜 ウィザードつかったときにもうすでにフレームとユーザビュー が完成されてるんで、なんとかリージョンをかますことができんか 考えてます、、、
すんませんがリージョンってなんですか?
>>184 MFCはMFCウィザード使わないでという意味です
ウィザードはMFCウィザードを使うという意味です
MFCのみだとCWndクラスをそのまま継承してリージョンが
できるが手作りだと不安定なきがしました、メッセージ関係とか特に
>>187 SDIで作成すると白い背景のウインドウ
1つだけじゃない? そこにごちゃごちゃ
追加していけばいいのでは?
昔のEmi Clock みたいなの作りたいのかな? 丸いウインドウ。
>>188 リージョンはウィンドウのスタイルを自由な形で利用する意味で
書きました^^;
普通だとダイアログかSDIの矩形なので面白くないと思って、、
で、今回は時計なので楕円です
>>192 漏れもそういうのは作り方わかんないから、他の人の
アドバイスきぼんぬ。
>>190 SDIにごちゃごちゃ書くときに
ウィンドウの形を変えるには
ViewのPreCreateWindowメソッドに書いたらええですか?
Frameはほっといたらいいよね?
>>191 そう
>>194 なるほど、こりゃええわ
でも、APIやな
MFCウィザードやったらFrameクラスいじったらええみたいや
なんとかできそうや、ほな
>>188 DVDで使われている地域コードのこと。
198 :
デフォルトの名無しさん :03/04/06 00:34
あるCSVファイルを読み込んで、 中にある値を2倍して 新しいCSVファイルに出力 するプログラムを作りたいのですが、 現在難航しています。 そこで質問なのですが、 CSVファイルのデータは全て 文字列データ型なのでしょうか? atof()関数で文字列を数値型に変換しようと ソースに記述するとシンタックスエラーとか 言われます。 このあたりで何かヒントがあればお願いします。
>>198 >CSVファイルのデータは全て
>文字列データ型なのでしょうか?
CSVファイルのデータは全て
文字列データ型なのでしょうか?
>>198 シンタックスエラーが出ている時点で
CSVファイルの構造がどんなものであろうがそれ以前の問題
>>198 エクセルかなんかで吐いたデータだろうが、
数値型で入れてくださいと言っても、入れてくれるとは限らんぞ。
文字列で受け取って、その後数値かどうか判定してからatof()しないと。。。
レスありがとうございます。 現在の状況としてはおおよそ↓のように なっているのですが、なにか突っ込むところが あればお願いします。 (突込みどころ満載かもしれませんが、ネタじゃないです) ch→char型変数 ddt,ddr→double型変数 if(isdigit(ch)==false){ /* 入力文字が数値以外のものだったら実行 */ fout.put(ch); } else if /* 文字列を数値に変換、×2演算 */ ddt=atof(ch); /*ここでシンタックスエラー*/ ddr=ddt*2; fout.put(ddr);
203 :
デフォルトの名無しさん :03/04/06 01:18
たしかに言われてみれば考えていなかったです。 っつーことはchを char ch[80]; にしたらよいのでしょうか? 試しにやってみると エラーが2行出てしまいました。 「引数を 'char [300]' から 'char &' に変換できません。」 て言われます。 どこが悪いのでしょうか? getlineとか使うんですかね? とりあえずやってみます。
>>202 普通は、
if(sscanf(str, "%f", &ddr) == 1){
fout.printf("%f", 2*ddr);
} else {
fout.printf("%s", str);
}
こんな感じになるんじゃないか?
>>202 は、CSVファイルをちゃんとParse出来ているんだろうな。。。?
まさか、一行一フィールドとして処理してないだろうな。。。
最近 Visual C++ に手を出した元 Visual Basic ユーザーです。 そこで質問なんですが、 Visual C++ のコントロール(フォームベースのやつ)と VB のコントロールって つまりは何が違うんですか。扱う上で。 お絵かきソフトっぽくしようとしてピクチャ貼り付けたらどうも上手くいかない・・・。 VB だったらピクチャーコントロール貼り付けて MOUSEMOVE にコード書けば OKなんですが。。。 うーん。なんかよくわかりません。
VBライクに組みたいなら、Builderの方がいいかもね。
あのう、VCで VBのピクチャコントロールに相当するものって ピクチャってやつですよね? あそこに MouseMove の処理を書きたいときってどうすればいいんですか?
VBで〜したのをVCではどうすれば良いって聞くよりは、VCで〜をしたいと書いた方がいいと思うが。
うむ。ピクチャコントロールとか言われても何のことか わからん。
俺はピクチャと言われてもピンとこん。
VBのピクチャコントロールとは PictureBox のことと見た。
BMP画像を貼りつけて、その上にマウスカーソルが あるかどうかを感知したいんですかね?
>>215 単純にグラフィックしたいだけかも知れんぞ。
それなら、そのままFormに描けばいい。
あと、Messageについて勉強することだな。
>>184-189 まだ読んでるかな?
VC++のウィザードってのは、あれはたんっっっっなる
ソースコード生成ツールだからその点よろしく。
でもMFCを使うならウィザードが作るコードを骨組みに
するのがお勧め。
>>216 そうです。その通りです。
Form に描画の処理書く方法もあるんですが、ピクチャボックスっぽい外観を
付けたい場合はどうすればいいんでしょう?
(左半分に描画域、右半分にボタン類を付けたい)
CView クラスをそのまま継承すれば描画処理は簡単に作れると思いますけど、
どうしてもフォームベースで作ってみたいんです。
スレ違いのような気もするのですが…教えてください。 VC++でフリーソフト作って公開するに当たって、 中には「動作環境」を記載しているサイトもありますが あれはロウスペックのPCに入れて動くか動かないかを 徐々に試していくしか方法はないのでしょうか? それともPCの動作を制限し、その上でexeファイルを動かせるような ソフトがあるのでしょうか?
222 :
デフォルトの名無しさん :03/04/08 13:35
ウインアプリでウインドウを作る時に myProg.hbrBackground=GetStockObject(WHITE_BRUSH);//背景 の所に error C2440: '=' : 'void *' から 'struct HBRUSH__ *' に変換することはできません。 と言うエラーが出るのですが、解決方法を教えてください。
myProg.hbrBackground= (HBRUSH)GetStockObject(WHITE_BRUSH);//背景
>>222 これは良く出るエラーだな。型をしっかり指定すればOK!
>>220 「CPU:最低400MHz」とかいうの?
ゲームとかでヨッポドタイムクリティカルなものでもなければ、意外と適当と思われ。
自分のPCで、クロックダウンして動かしてみるとか(w
226 :
デフォルトの名無しさん :03/04/08 15:50
今まで、ボーランドのフリーの使ってましたが、ここを読んで、勢いあまってVC++.NET購入したんですけど、使い方が全然分からないです。 とりあえずプログラム動かしたいんですけど、どうすればいいんすか? 誰か丁寧に教えてくだしい。
>>226 「Windowsプログラミングの基礎知識」 柏原 (ascii)
おすすめ。
>>225 クロックダウン…なるほど…
危険そうな言葉ですが頭には入れておきます。
どうもありがとう!
230 :
デフォルトの名無しさん :03/04/08 18:14
COM コンポーネント作ってみたんですけど、全体的に作り直したいんで、 全部削除して最初からやり直したいんです。 COM って作った時点でレジストリに登録されますよね? ですから、作業フォルダだけ消したら問題が生じると思うんですが。。。 レジストリから削除するにはどうすればいいんですか?
regeditで削除すりゃいいじゃん。
232 :
デフォルトの名無しさん :03/04/08 18:22
Windows2000で、通常使用するプリンタを任意に 切り替えるプログラムを作成したいのですが…。 SetPrinterが失敗してしまって、切り替えることができません。 なにか方法はありますでしょうか?
233 :
デフォルトの名無しさん :03/04/08 18:33
>>220 =229
最低限のクロック周波数なんてみんな結構いい加減だよ。
「責任逃れ」な値を書いておけば大丈夫(笑)
それよりもプラットフォーム(98/Me/NT4.0 等)の心配したほうがよろし。
234 :
bloom :03/04/08 18:36
>>233 あれって、手持ちにあるPCの中でも低スペックのもので動作させて、
満足行くような処理が出来たらそれが最低環境っていう風に決めてんじゃないの?
236 :
デフォルトの名無しさん :03/04/08 20:09
超初心者は何やったらいいんだろう・・・ とりあえず箱を抱いて寝ています。
237 :
デフォルトの名無しさん :03/04/08 20:11
デバッグ実行後メモリリーク(解放忘れ)があった場合、 そのことがアウトプットに表示されるようにするには どうすればいいのでしょうか? 知人が表示させているのを見たことがあるのですが、 どこで設定すればそうなるのかわかりません。
>>237 デバッグ環境だと普通に表示されると思うが。。。
>>238 それが、WinMainで
char *p = new char[ 100 ];
を実行して、そのままdeleteせずに
終了しても何も表示されません。
ひょっとして、何かincludeしなければ
いけないとかいうことなのでしょうか?
>>239 単にデバッグ版を実行してるだけじゃなくて?
>>239 非MFC環境の場合であれば
#include <crtdbg.h>
_CrtSetDbgFlag()
これらに関連する関数等を調べていけば、
何かわかってくるかと。
俺の場合はAfxBiginThreadで起動したスレッドの先頭でCString msg;として その中でmsg.Format云々を使ったりするとメモリリークになるんですが。
>>241 その関数を実行することで
リークが表示されるようになりました。
ありがとうございます。
>>242 TerminateThread使ってない?
246 :
デフォルトの名無しさん :03/04/09 03:27
ハンドルをグローバル変数にするのはだめですか?1回1回引数で渡すより 早いような気がして。後々問題とか出てきそうですけど。
Java厨じゃないんだから グローバル=悪なんて固定観念 持つ必要はない ライフタイムがプロセスと同一とか 終始アクセスが発生するとか 必要なら使えばいい
>>249 Javaだと駄目なのか?使ったこと無いから知らん。
分かりました。ありがとうございました。
visualc++で、ボタンを押すと新しいフォルダを作成するようにさせるには どうしたらいいですか??
253 :
デフォルトの名無しさん :03/04/09 15:02
while(GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } のどこから LRESULT CALLBACK WndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) を呼び出しているのですか?うまく質問できないのですが、教えてください。
DispatchMessage(&msg);
>>253 CALLBACKの付いた関数はソースからではなく、
ウインドウズ(OS)から呼び出されるんですよ。
>>252 何か1冊初心者向けの本を読んだほうが良いと思われ。
フォルダの作成と、ボタンに反応する関数の作り方では
アドバイスが異なります。
>>245 使ってないっす(´Д`;)
そのスレッドの中でWaitForSingleObjectでループしてるんですが
そのループ内で宣言してあげたら何故かメモリリークが取れました。
・・・なぜ・・・?
// formatting (using wsprintf style formatting) void AFX_CDECL CString::Format(LPCTSTR lpszFormat, ...) { ASSERT(AfxIsValidString(lpszFormat)); va_list argList; va_start(argList, lpszFormat); FormatV(lpszFormat, argList); va_end(argList); } void AFX_CDECL CString::Format(UINT nFormatID, ...) { CString strFormat; VERIFY(strFormat.LoadString(nFormatID) != 0); va_list argList; va_start(argList, nFormatID); FormatV(strFormat, argList); va_end(argList); }
>>258 シングルスレッド用のライブラリになってない?
261 :
デフォルトの名無しさん :03/04/10 07:23
ウインアプリで、何もイベント(キーが押された、マウスが動いた等)が起こって いないのに、表示したりできますか?できるなら教えてください。 #include <stdio.h> #include <stdlib.h> #include <conio.h> int main(void) { for(;!kbhit();)printf("%8d",rand()); return 0; } コンソールで書くと、こんな感じです。
乱数を使ってタイマーを設定すればよろしいかと。
もまいらのおすすめの文献をおしえr・・・教えて下さい! 始めたばかりの初心者にぴったりな文献を、どうか、お願いしまつ。 Windowsプログラムより先に、MS-DOSのプログラムを先に 勉強した方がいいんでつか? 初心者的質問スマソ(´Д⊂
266 :
デフォルトの名無しさん :03/04/10 13:58
マイクロソフトのC++でソフトを作りたいのですが 販売しているパッケージがいろいろあってどれを使えば買えばいいのか 分かりません、以下の用途の場合どのパッケージを買ったらいいのでしょうか? ・C/C++はまったくの初心者で使いながら学習していきたい ・画像ビューアを作りたい、GV,Susie,IrfanViewのようなもの
>>266 standard で十分と思ふ。
お金に余裕があるなら Professional を
購入してもいいと思うけど。
Win98なら、VC++6.0しか選択肢なし。
Win2000/XPなら、VC++.NETも使える。
.NETは良く分からんので、他の人に聞いとくれ。
>>266 一番高いのを買っておけば間違いはないよ
VC++を買うなら最低Pro。Standard買うぐらいならbccなりgcc(Migw/Dev-C++)で充分。 もっとも.netの場合VC++.netはstandard版しかないので自動的にVisual Studioになるが。 ちなみにアカデミック版VS.netはVS 2003への無償アップグレードの対象外らしいので注意。
270 :
デフォルトの名無しさん :03/04/10 18:07
VC++ Pro と Std の違いは Standard -> MFC のみ Professional -> MFC + ATL だと思ったのですが、ATLってのはそんなに便利なんですかね? 自分はVC++6.0 Pro持ってるんですが、ATLは使ったこと無いので、 MFC + Platform SDK で十分かなぁと思ったもので。
わざわざ金払って最適化もできないコンパイラが欲しいなら止めないが。
つーか舞糞よ いいかげんVisualC++.net Pro出せ Stdなんか買うがボケが
>>272 はげどう。
でも漏れは2003赤出身苦を待つけどなー。
>>270 >ATLってのはそんなに便利なんですかね?
人による。俺はATL+WTLの組み合わせが大好きだがね。
いずれにせよStdにもATLは付いているとは思うが。
おすすめは Pro のようですね 単品でのProはやっぱりないのですね、Standardしかないからおかしいと 思ってました・・・ ついでといってはなんですが、でた話で聞きたいことが 今購入すると2003への無償アップグレードが可能なのですか? 2003はいつごろ発売予定なのでしょうか? ちょっとスレと離れてきてすいません
276 :
デフォルトの名無しさん :03/04/10 23:16
すいません。 ソース打ち込んでるときに"cout"(もちろんこの他も)と打ち込みビルドすると、 Unicode識別子はサポートされていません となり、エラーが起こってしまいます。 どうしたらよいでしょうか?
>>276 全角で打ち込んでないか?
スペースとか。
あれからこの板に来てなくて今見にきたらレスがあったので
返答を…古い書き込みに対してのレスですいません。
>>172 大当たりでした!!まさにそのとおりです。
おかげさまでワークスペースを開くをボタンイメージにして、
開くの横に設定できました。こんなチェックボックス今までいじったこと
ないのになぜだったんだろう…?
でも、治って(思い通り)嬉しいです、ありがとうございました。
そして私の書き込みに対して返答してくれた方もありがとうございました。
279 :
デフォルトの名無しさん :03/04/11 00:57
質問です。 DLL内で自分で発行したWM_TIMERを受け取るには ウィンドウ作るしかないんでしょうか。
スタティックコントロールって MOUSEMOVE イベントは受信できないんですか? 追加する方法ってあるんですか?
281 :
デフォルトの名無しさん :03/04/11 15:19
cout << "ゲームオーバー" << end; ↑を打ち込んでビルドしたら、 error C2297:'<<':無効な右オペレントです。 と言われますた。 どうすればいいんですか?
282 :
デフォルトの名無しさん :03/04/11 15:28
>>281 endじゃなくてendl
エルがつくの。
>>282 そうなんですかw
ありがとうございます。
ぶっちゃけ、end1;と打ってました(w
すいませんでした。
cout << "ゲームオーバー" << endl; 上を打ち込んでビルドしても、 error C2297:'<<':無効な右オペレントです。 と言われますた。。。 どうしたらいいでしょう。。
>>284 #include <iostream>
using namespace std;は?
こんな感じです。
>>285 #include <iostream>
#include <time.h>
#include <math.h>
#include <stdlib.h>
void main()
{
//変数宣言
int ans, myans, score;
bool bContinue = true;
char res;
//ゲームのループ
while(bContinue){
cout << "***** 数当てゲーム *****" << end1
<< "こちらが考えている0-99の範囲の数を当ててください" << endl;
score = 0;
srand((unsigned)time(NULL));
ans = rand() % 100;
//プレイ中のループ while(1){ cout <<"数値を入力してください" << endl; cin >> myAns; // 正否判定 if(myAns == ans) break; //程度判定 if(abs(myAns - ans) > 30){ cout << "かなり"; }else{ cout << "少々"; } // 大小判定 if(myAns > ans){ cout << "大きいです。" << endl; }else{ cout << "小さいです。"<< endl; } score++; } //プレイ終了処理 cout <<"正解です!"<< end1 <<"あなたは、"<< score <<"で正解しました!"<< endl;
cout << "リプレイしますか?(y/n)"; cin >> res; if( res != 'y' && res !='y') bContinue = false; } //ゲーム終了処理 cout << "ゲームオーバー" << endl; }
>>286 main()の上にでもusing namespace std;と書くか、coutやendlにstd::をつける。
>>289 using namespace std;と入れたところ、エラーが激減しました。
ありがとうございます。
あと、エラーふたつあるんですが、
//プレイ中のループ
while(1){
cout << "数値を入力してください" << endl;
cin >> myAns;
の三行目に対し、
error C2065:'myAns':定義されていない識別子です。
error C2593:'operator >>'があいまいです。
となってしまいました。
>>290 C++では識別子は大文字と小文字を区別する。
>cout << "***** 数当てゲーム *****" << end1 ・・・
>>291 A→aにしたところ、識別子エラーがなくなりました。
>>292 全角スペースを半角にしました。
お二方ありがとうございます。
また、エラーが発生しました。
error: LNK2019:未解決外部シンボル_WinMain@16関数_WinMainCRTStartupで参照されました。
fatal error:LNK1120:外部参照1が未解決です。
と表示されますた。
>>293 Win32 Console Applicationでプロジェクト作り直してみて。
>>294 出来ました!
ありがとうございます。
いろいろご教授してもらい、皆様、誠にありがとうございました。。
296 :
デフォルトの名無しさん :03/04/11 17:45
>>280 スタティックコントロールの背景のウインドウ(親ウインドウ)
にMOUSEMOVEイベント送られて来てないですか?
ペゾルトによるとスタティックコントロール上でマウスの移動や
クリックがあると、コントロールが親ウインドウに WM_NCHITTEST
を送って、DefWindowsProc がこれをクライアント領域の
マウスメッセージに変換するそうです。
クライアント領域で自分でマウスの位置を計算するか、コントロールを
サブクラス化するしかないんじゃないでしょうか。
297 :
デフォルトの名無しさん :03/04/11 17:46
ところで HTTRANSPARENT ってなんですっけ? どこかで見た記憶があるんですが、関数なのか パラメータ値なのか、メッセージなのか忘れてしまった。
WM_NCHITTESTの返り値。 In a window currently covered by another window in the same thread (the message will be sent to underlying windows in the same thread until one of them returns a code that is not HTTRANSPARENT) だそうだ。
300 :
デフォルトの名無しさん :03/04/11 18:29
301 :
デフォルトの名無しさん :03/04/11 18:40
>>298 あー 発見しました。
WM_NCHITTESTの返り値でしたか。
>>299 MSDNのキーワードで検索してますた。^^;
303 :
デフォルトの名無しさん :03/04/11 21:50
音楽再生機能を持たせたいのだが参考になるものないかなぁ・?
VC++でボタンなどにビジュアルスタイルを対応させるためのソースコード教えて下さい。
305 :
デフォルトの名無しさん :03/04/11 22:45
インスタンスハンドルからウインドウハンドルを取得したいのですが、 何かいい方法はありますか?
306 :
デフォルトの名無しさん :03/04/11 23:02
308 :
デフォルトの名無しさん :03/04/11 23:22
>302 どもです!ちょっと試してみます。
>306 どもです!ちょっと試してみます。
C++難しいっすね・・・。かなり疲れました。 無事リストを描けたんですがリストにアイテムを追加 するにはどうすればよいんですか?コントロールの変数しか 追加できないんですが・・・。
312 :
デフォルトの名無しさん :03/04/12 05:08
コンソールアプリ+外字エディタの将棋をウインアプリに作り直したいと 思っているのですが、CONの思考中(再起呼び出し中)落ちたりしませんか?
>>312 あんたがヘタレだから落ちます。絶対に。
>>312 落ちるかどうかはどうプログラムを組むかによるだろ。
313に同意。
>>311 MSDN見ろ
いや見たんですけど分からなくて。。。 もっかい見てみます。
↑300の間違いです
MSDNのDirectXのヘルプはわかりやすかったが、 VisualC++関係のヘルプの日本語が理解できないです。 助けてください。
>>313-314 強さは激指1三段の2枚落ちと互角です。そこそこだと思うのですが。
コンソールアプリだと永久ループでキー入力を待っています。CONの思考中の時は
再起呼び出し中から抜けるボタンを用意しています。ただウインアプリはイベント
トリブン方式(始めから永久ループが用意されている)なのでどうかなと。
思考中に小分けにWinMainの永久ループに戻すみたいなことをすればいいの
ですかね。
永久ループ→CONの手番→CONの思考
↑ ↓
← ← ← 抜けるボタン(中断など)を押した∨思考終了
>>318 いやアンタのアルゴリズムが強いか弱いかじゃなくて……
スレッドつくってそっちに任せたほうがいいんじゃないか。
320 :
デフォルトの名無しさん :03/04/12 10:03
321 :
デフォルトの名無しさん :03/04/12 11:25
>>305 ウインドウハンドルからインスタンスハンドルはできますけど、
逆はできるんですかねぇ。俺も知りたいところですが。
>>321 出来たとしても使ってるウインド全部引き連れてくるんじゃないの。
323 :
デフォルトの名無しさん :03/04/12 13:08
当方の使ってるソフトがvisual C++.net で、 参考書(古い奴)通りにやると、古いとか何とかがでるんだけど(ビルド時じゃなくて)、 新しい参考書買ったほうがいいのかな?
>323 CやC++の本の勉強をVCでやろうとしてる?
>>323 どうせANSI以前の本でも借りてきたんだろ
大人しくVC++.NETの本を買っとけ
どうせANSI準拠の本買ってもコンパイラ通るか怪しいんだから
>>327 ソースとエラーメッセージをうざく無い、程度に書きこんでみるのが吉。
誰か親切な方が、それなりに答えてくれますよ。
329 :
デフォルトの名無しさん :03/04/12 22:01
>>322 そうですね。
やっぱりできないのかな。複数のウインドウハンドルが
返って来ても、どれが欲しいハンドルなのか判別できないような
気がする。
>>329 結局何がやりたいのか相談したら?
別のもっといい方法があると思うが。。。
クラスのメンバ関数を呼び出すのはオブジェクトを定義しないとむりですか?
>>332 static関数にすれば呼べるが、クラス設計に注意汁。
仮想関数だから無理だボケ!って言われました。。。 もうちっと勉強してきます
■ VisualC++(MFC限定)相談室 MFC7.dll■から誘導されてきました。 質問なんですが あるcppファイルから他のヘッダを取り込んで 他のヘッダにあるクラスでオブジェクトを宣言しようとすると、 コンストラクタ関数を呼び出したことになってしまいます。 オブジェクトを新たに宣言できないんですがどうすればいいですか?
>>335 イマイチ言ってる意味がわからんのだが。
あるクラスのインスタンスを宣言したらコンストラクタは必ず呼び出される。
プログラム開始時に呼びたくないのであればポインタで宣言して好きなときにnewしる
>>335 クラスの構成がこんな感じになってたりするとか?
--A.h--
#include "B.h"
class A{ ... B testB; };
------
--B.h--
#include "C.h"
class B{... C testC };
------
--C.h--
#include "A.h"
class C{... A testA };
------
>>335 MFCスレをみてきたけど……
正直、もう少しC++について調べる必要があると思われ。
知識なさすぎ。
……人に聞くのは「調べる」って言わないからね。念のため。
>>335 VisualC++の初心者向けの本とか買ったのか?
それ見ながらいろいろ試してやっていきなさい
>336 どもです。それは分かるんですが、インスタンスを宣言した ということにならず、そのくらすのコンストラクタを呼び出したことに なっちまうんです。 newに関してはよく知らんですが見てみます。 >337 そうではないです。 そういう構成は何か支障があるんですか? >338 正直自分でも痛感です。全然進まないし。。。 >339 参考書買おうと思っても、.NETの参考書って なかなかないんすよね。VC++6の参考書で大丈夫ですか? ってかそもそもC++の知識がままならないっすね・・・。
341 :
デフォルトの名無しさん :03/04/14 07:21
VC++.netでDirectX使う場合なんですが DirectXのテンプレート使わないでライブラリの設定をするには どうやるんでしょうか?
342 :
デフォルトの名無しさん :03/04/14 14:18
グローバル変数を "testglobal.h" で定義して それを CTest1 や CTest1Dlg で使いたいんですが 両方の cpp の先頭に include "testglobal.h" ってやると Test1 error LNK2005: "int abc" (?abc@@3HA) は既に Test1.obj で定義されています。 って感じにリンクエラーになります。 CTest1 のヘッダだけに include を入れても同様のエラーになってしまいます。 どうすれば CTest1 でも CTest1Dlg でも使えるようになるんでしょうか?
>>342 1. グローバル変数は使用するべきではない。設計を見直すこと
2. どうしてもそれがムリな場合、Singletonの採用を考えること。
3. それもむりならグローバル変数の宣言部にexternをつけること。
>>342 >>343 の言っていることが普通だが、3.のテクニックとして。
--testglobal.h--
#if _AS_MAIN_
int abc;
#else
extern int abc;
#endif
--main.cpp--
#define _AS_MAIN_ ←その他のソースでははずす。
#include "testglobal.h"
main()
{
....
}
とすると間違い起こりにくいのだが。
なるべく使わないにこしたことはなし。
345 :
デフォルトの名無しさん :03/04/14 16:21
VC6.0 のことで質問なんですけどで 不正処理でダウンした後、 ワークスペースを新規作成したときに プロジェクトの設定 >source files(等) > 一般 の 「 このファイルをビルドしない 」 の項目に チェックが常に付くようになって、いちいちチェックはずすのめんどくさいんですけど どこのオプションをいじれば、元のように戻るでしょうか?
CFileDialogで詳細表示の項目にオリジナルの項目を追加したいのですが どうすれば宜しいでしょうか?ご指導願います(名前、サイズ とか表示されているところです)
348 :
デフォルトの名無しさん :03/04/14 17:44
static LPBYTE lpBuf; static WAVEHDR wh; wh.lpData=lpBuf;//エラーの場所 error C2440: '=' : 'unsigned char *' から 'char *' に変換することはできません。(新しい動作 ; ヘルプを参照) 指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。 このエラーの解決法を教えてください。
>>348 明示的なキャストが必要。(char*)lpBuf
>347 違いますよ。。。エラーの内容も違うし。
352 :
デフォルトの名無しさん :03/04/14 19:12
CreateMutex で MUTEX を作成して、アプリの多重起動を防ぐ方法はわかりました。 ところで、自分で作成したアプリならMUTEXの文字列はわかりますが、 そうでないアプリのMUTEX文字列がわかりません。 これを調べるのにはどんな方法がありますでしょうか?
>>352 それは俺も知りたいなぁ
まぁ名前をできるだけ長くしておけば大丈夫だと思う
アプリケーション名、作者名、開発環境、ジャンルなどで
例:test_exe__Nanashisan__Microsoft_VisualC__GameProgram
邪道なやり方だけど多重起動を防ぐ他の方法としては
実行ファイルから多重起動防止用のファイル(test.dat)を排他モードで開きっぱなしにする
実行ファイル終了時自動的にクローズされる(実際にやったことないけど
名前はGUID使えばよし
355 :
デフォルトの名無しさん :03/04/14 20:07
最近VBからVCに移ってきた者です。おながいします。m(__)m VCで自作のクラスを作り、hファイルとcppファイルに分けて 保存し、それを別プロジェクトで取り込んだのですが、コンパイル時 に「**.hファイルがありません。」と言われます。 そのプロジェクトでしかインクルードしないので、オプションの設定で インクルードファイルのパスとして登録したくないのですが、 どうしたらいいのでしょうか?
絶対パスで指定する。相対パスで指定する。プロジェクトの設定でインクルードパスを追加する。
357 :
デフォルトの名無しさん :03/04/14 20:25
ムハハハッハハハハッハハハッハ!!!!!!!!!!!!!!!!!!!!
>>356 早速ありがとうございます。m(__)m
プロジェクトの設定のリソースタブのインクルードファイルのパス
でそのファイルのパスを指定したのですがやはりダメでした。。。
359 :
デフォルトの名無しさん :03/04/14 20:33
データムハハハッハッハハ!!
>>358 まさか
#include <ファイル名>
と言う風に開いているのではあるまいな?
361 :
355=358 :03/04/14 21:29
>>360 いえ、#include "ファイル名" です。
パス指定すればコンパイルできたのですが。。。
(´-`).。oO(日本語ファイル名とか……
>>362 いえ、普通の英語名です。なんでだろう。。。
とりあえずパス指定でコンパイルできたので(356さんありがとう)
それで進みます。
みなさんお騒がせしてすみません。。。
364 :
デフォルトの名無しさん :03/04/14 21:54
>>358 まさかとは思うがファイルそのもののパスを指定していないだろうな?
ファイルのパスではなく、インクルードファイルが格納されているフォルダを指定するんだぞ
>>364 すいません...(TT)
いえ、インクルードファイルのパスというエディットボックスに
ちゃんとフォルダのパスを入れてるんですよぉ(C:\省略\Control\Common)。
366 :
デフォルトの名無しさん :03/04/14 22:24
マウス系のイベント欲しくて stdafx.h に #define _WIN32_WINNT 0x0400 付け加えたらデバッグでは動くのに リリースでは落ちてしまいます。 何か原因考えられますか?
#define _WIN32_WINNT 0x0400 のせいじゃないと思う、なんとなく。適当でスマソ。
>>365 つーかちゃんとプロジェクトのワークスペースのファイルビューでソースとヘッダを追加してるか?
>>368 してます、してます(TT)。
でも初心者的な質問なのですが、ファイルを追加した時点でVCはどのファイルが
インクルードされてるかわかっているのに、なんでインクルードファイルの
フォルダを指定しないといけないのか理解できないのですが。。。
これだとあるa.hというヘッダをインクルードしてもフォルダ参照にされてなくて
もし参照されているフォルダに同名のa.hが存在したらPGするとき混乱するような
気が。。。VC歴が数ヶ月なのでアホな質問だったらすみません。VBだとファイルを
追加したらそのパスがプロジェクトファイルに書かれているのですが、
確かにVCのプロジェクトファイルには取り込んでいるファイルのパスは書かれて
いない(ファイル名のみ)ですね。
あくまで参照するフォルダを指定する必要があるんですね。。。
そのソースとヘッダはプロジェクトファイルと同じ場所にあるの?
>>370 いえ汎用なので別のフォルダに両方とも入っています。
>>371 >>369 をしっかり読んでなかったよスマソ。
つーかやっぱりこの場合はフォルダ指定しなきゃ駄目なんじゃないかね。
あ、適当なこと書いてしまいました。 VCのプロジェクトファイル(dsp)も別フォルダから取り込んだファイルの パスを相対パスでちゃんと管理していますね。 だとしたら余計インクルードパスを指定する必要がわからない。。。(TT)
>>372 何度もすみません。
VCというよりC++コンパイラの仕様なんでしょうかね。
仕様ならしようがないので納得します。
こんなオチですみません。。。
>>374 プロジェクトの設定⇒タブ:C/C++⇒カテゴリ:プリプロセッサ⇒インクルードファイルのパス(N)
なら相対or絶対パスでも大丈夫。
>>376 てめーこそ良く見やがれ。糞が。
>358 名前:355[] 投稿日:03/04/14 20:28
>
>>356 >早速ありがとうございます。m(__)m
>プロジェクトの設定のリソースタブのインクルードファイルのパス
>でそのファイルのパスを指定したのですがやはりダメでした。。。
リソースタブで指定してるからおかしいってんだ。
ボケ、氏ネ。
>>375 ありがとうございます!
で、できました!!!
>>376 いえ、僕の間違いでした。
リソースタブでインクルードファイル指定してました。
お騒がせしてほんとにすみません。
初心者なので許してください...m(__)m >レス下さったみなさん
逝ってきます。(TT)
>>377 いえ僕の文章もだらだらと読みづらかったのですんまそん。
またいろいろ教えてくださいね。ではでは。。。
最後はマターリとしました!
382 :
デフォルトの名無しさん :03/04/15 00:10
VisualC++勉強したいけど近所の本屋にはVisualC#.NETの本しかない・・・。(TAT)
ちょっと大きい本屋行けばまだまだあるよ。 わかり易いかどうかは別だけど。
384 :
デフォルトの名無しさん :03/04/15 00:18
385 :
デフォルトの名無しさん :03/04/15 00:22
>>340 コンストラクタを呼び出されたら、クラスのインスタンスは必ずあるはずだが?
そもそもコンストラクタが呼び出されると何か問題があるの?
newも解らないようじゃ…
.NETとかVCではなくC++の参考書でも読んで勉強し直してきた方がいいですね。
ejanaika ejanaika
>>354 >名前はGUID使えばよし
ありがとうございます。GUIDってなんでしょうか?
390 :
デフォルトの名無しさん :03/04/15 02:03
392 :
デフォルトの名無しさん :03/04/15 02:19
すいません。教えてください。 CFont m_Font; LOGFONT lf; m_Font.GetLogFont(&lf); 上記は正常に動くのですが、lf をポインタで宣言して、 CFont m_Font; LOGFONT* lf; m_Font.GetLogFont(lf); と変えるとm_Font.GetLogFont(lf);の行でエラー 「値が割り当てられていないローカルな変数 'lf' に対して参照が行われました。」 が出るのはなぜなのでしょうか?
>>392 ちょっと考えれば当たり前だと思うけど……
GetLogFontは、与えられたポインタが指し示すメモリにフォント情報を格納するのね。
上の場合はlfという変数の領域に格納するから問題なし。
下の場合はいったいどこにフォント情報を格納すればいいのでしょうか?
394 :
デフォルトの名無しさん :03/04/15 02:58
>>392 エラーメッセージのそのまんまの意味。
lfが有効な値になっていない(実体を指していない)から。
つかこんなんC言語の基礎中の基礎だが大丈夫か?
型さえ合っていればいい、っていう考え方なんだろうね。 その関数がどんな動きをするか考えようともしない。
ちょ〜素人だけどフ゜ログラマーカメラ電波機械全般に詳しい人探したいけど、どうしたらいいのおちえて?
397 :
デフォルトの名無しさん :03/04/15 04:50
外国の方が来られたようです。
|\ ┌──────────┘- \ │ 外国の方が \ │ / └──────────┐- / ヽ(´ー`).ノ |/ ( へ) く - = ≡三 |\ - = ≡三 ┌──────────┘- \ _ = ≡三 │ \  ̄ = ≡三 │ いらっしゃいます / - = ≡三 └──────────┐- / (´ー`) - = ≡三 |/ ( ヽ ヽ) / >
>>343-344 すみません。調べたんですが難しすぎてよくわかんないです。
もっと簡単なもんかと思ってたんですが…
でも、グローバル変数は普通使っちゃいけないんですね。
ド素人なもんでそんな事もしりませんでした。
一番わかりやすそうな
CTestApp のメンバ変数にして 他のクラスからは
AfxGetApp で取る事にしようと思います。
ありがとうございました。
>>347 ???
>>346 です。CFileDialogを拡張して
hList = GetListViewInner();// リストビューのハンドル確保
hHead = ::GetWindow(hList, GW_CHILD);// そのヘッダーのハンドル確保
LV_COLUMNを利用して項目を追加するも詳細表示の表示項目その他を選択すると
落ちてしまいます。どなたかよきアドバイスをお願いします。
やはり1から作成するしかないのでしょうか?
402 :
デフォルトの名無しさん :03/04/15 12:47
#include <stdio.h> #include <windows.h> int main(void) { char c; char a[3]={3,4,5}; char b[3]={3,4,5}; c=strcmp(a,b); printf("c=%d\n",c); c=lstrcmp(a,b); printf("c=%d\n",c); } aとbを比較するとき、等しい場合は0が返ってくると思うのですが何故か c=1 c=-1 になってしまいます。何故でしょうか?
文字列を比較する関数を使っているからです
404 :
デフォルトの名無しさん :03/04/15 12:59
>>402 文字列になっていない(終端文字がない)から
>>403 レスありがとうございます。おっしゃる通りでした。
406 :
デフォルトの名無しさん :03/04/15 18:09
すいません。教えてください。あるサンプルを見ていたのですが、 CString strHtmlPath = _T("C:\\tmp.html"); の _T はどういう処理をしているのでしょうか? MSDNで調べると「データ型のマッピング」と書かれているのですが データ型のマッピングという言葉の意味がわかりません。 _T というものはどう言うときに使うものなのでしょうか? それから、その後に、 Navigate2(strHtmlPath, NULL, NULL); となっているのですが、MSDNでNavigate2メンバ関数を調べると、3つにオーバーロード されていて、どれも第一引数がポインタとなっています。 が、上記strHtmlPathは前述の通りCString型の実体として宣言されています。 これはどう言うことなのでしょうか?CString型ということが何かカギなのでしょうか?
>>406 MSDNにも書かれていますが、
_Tは文字列がUnicodeで記述されている場合に、
L"文字列"に置き換えて、その他の場合には
単に削除されるようです。文字列がUnicodeの場合には
L"文字列"というように最初にL(longのL)を書かないと
ダメらしい。
>>406 後者は
CString::operator LPCTSTR
が呼び出されているのでしょう。つまりキャストです。
しかし2番目と3番目、どっちが呼び出されているのですかね。
参照はNULLを取らないから、2番目だと思うのですが、
2番目だとすると第2、第3引数は不要ではないですかね?
409 :
デフォルトの名無しさん :03/04/15 18:42
>>393-395 レスありがとうございました。
ポインタを宣言してもそのポインタが指し示すアドレスがわからないという
ことですね。
410 :
デフォルトの名無しさん :03/04/15 19:00
>>407 レスありがとうございます。
C:\\ という記号の辺りがデータ型によっては特殊文字になってしまうのかな?
そこらへんが関係するのですね。調べてみます。
>>408 レスありがとうございます。
MSDNをみたら operator LPCTSTR が載っていました。
試しに
Navigate2((LPCSTR)strHtmlPath, NULL, NULL);
と記述しても動きました。
どうもありがとうございました。
411 :
デフォルトの名無しさん :03/04/15 19:02
>>408 あ、それからNavigate2は2番目の関数のようです。
いわれる通り、第一引数だけで残りを省略しても動作しました。
414 :
デフォルトの名無しさん :03/04/16 03:09
メッセージループをメインループにすると時間系の関数などを使いやすくなります が、デメリットはありますか?
415 :
デフォルトの名無しさん :03/04/16 09:43
>414 デメリットはネタに見えることです。
416 :
デフォルトの名無しさん :03/04/16 12:21
Windowsを再インストールすることになり、 いままで使ってきた Visual C++ の環境の設定を保存しておきたいのですが、 設定を保存しているファイルとかあるのでしょうか? もしくは、レジストリでしょうか? どなたか ご存知でしたら おしえていただくとありがたいです。 (黒字に白文字でないと、目がつかれたり、また その他ショートカット なども専用に設定しているので、また、設定をする手間が省けるので、 今後のためにも 教えてください。)
>416 俺は↓のレジストリから必要な部分だけを reg ファイルにして保存してる [HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0]
>>416 そういうのはすべてレジストリだと思われ。
インストールフォルダ以下をざっと探ってみたけどそれらしきものは見つからなかった。
白地に黒、って疲れるよね。
俺は画面のプロパティでウィンドウの背景色を白から薄緑にしてるよ。
他のところまで変わるのはご愛嬌……
答えが得られなかったので、他のスレで質問させていただきます。
始めたばかりの超初心者なのですがどうしてもエラーの場所がわかりません どなたか教えていただけないでしょうか? #include<stdlib.h> #include<GL/glut.h> #include<GL/gl.h> #include<math.h> #define PAI 3.1415926536 void display(void) { int x=0.5*cos(2.0*PAI*(float)/(float)10); int y=0.5*sin(2.0*PAI*(float)/(float)10); int z=0.0; glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0,1.0,1.0); glBegin(GL_LINE_LOOP); glVertex3f(x,y,z); glEnd(); glFlush(); }
>>421 あなたは何故エラーメッセージを書かないのですか?
>>422 良くわかっていないもので・・・
エラー2 警告0とかいうのは出るんですが
Visual C++ と関係ないのでは?
VC++コンパイラの使い方がわかっていないようだが >エラー2 警告0 の書かれている所の右側にスクロールバーが無いか?
どこからコピペしたかしらんが、main()もないし#include<GL/glut.h> や #include<GL/gl.h> がちゃんとインクルードできるのかも謎。
floatを掛けて割っているのが原因だと思うが 出力されるエラーメッセージを見ることすら出来ないのは問題外 言語以前にWindowsの基本操作からやり直した方がいい
>>421 エラーの場所はたぶん1桁か2桁ぐらいの数値で表示されてると思います
そしてそれは行数です
あなたに何行目でエラーが発生しているか教えてくれるでしょう
さらにエラーメッセージをダブルクリックするとそのエラーが発生した行を
反転表示してくれると期待できます
430 :
デフォルトの名無しさん :03/04/16 19:12
ゲーム等でマップを作る時なぜ、StretchDIBitsとSetPixselVではなぜスピードが 大きく違うのですか?グラフィックは点の集まりなのだから、同じでもいいと思う のですが。
>430 問。 たらい一杯ぶんの水を井戸から汲み上げようと思います。 1)コップをつかって何度も何度もくみなおす 2)たらい並の容積のいれものでいっぺんに汲む 無駄なく早いのはどっち。
>>432 スレタイが読めない文盲の方ですか?( ´ー`)y-~~
なんつーか何かに例えたがるよな、プログラマって。
>>435 物を教える時に例え話って使うだろ。
プログラミングに限らず。
てか、
>>432 の意味がマジでワカランかったの?
不条理な逆ギレイクナイ!
437 :
デフォルトの名無しさん :03/04/17 00:12
>>430 関数のオーバーヘッドがある、最適化し難い(メモリ転送命令が使えない)等…
>>432 はなかなか良い例えだと思うが…
いや、問返しはカコワルイよ。
分かりました。ありがとうございました。後、StretchDIBitsでマップをスクロール する場合、一度半マス移動分のを表示してから、1マス移動を表示したいのですが、 マイナスの座標から表示しても(16ピクセルのセルなら8ピクセルずらし、通常17×17 セルなら18×18セルをずらして表示)大丈夫なのですか?また、他の方法があるなら 教えてください。
StretchDIBitsって使ったこと内や CreateDIBSection→BitBlt, StretchBltでやってる
443 :
デフォルトの名無しさん :03/04/17 02:04
LPVOID test; (DWORD) test; (UINT) test; (WORD) test; (BYTE) test; -- (DWORD) test; だけ型キャストの警告がでます。どうしてでしょうか? VC7使ってます。 お願いします。
>>443 どんなキャストの警告が出る?
VC6では出なかった。
もしもこういうコードを書いているなら当然だが……
LPVOID test;
DWORD test2 = (DWORD) test;
UINT test3 = (UINT) test;
WORD test4=(WORD) test;
BYTE test5=(BYTE) test;
(testが初期化されていないから値が不定。)
445 :
デフォルトの名無しさん :03/04/17 05:41
>>417 ,418
返事遅くなりましたが、どうもありがとうございました。
クリーンインストールするんで、レジストリでもなんでも 強気でいじれるので、
いろいろいじってみたいと思います。
どうも ありがとございました。
>>444 どうも
'型キャスト' : ポインタを 'LPVOID' から 'DWORD' へ切り詰めます。
ってエラーです。
sizeof で LPVOID と DWORD を調べても、両方4byteで問題ないはずなんですよね。
むしろ問題であるはずのBYTE と WORD のキャストには無警告なんですよ。
おそらくVC7だと64bitアドレスもサポートしてるんで、その性だとおもうんですが、
だとしたら、なんでBYTEとWORDへのキャストには無警告なんでしょうね・・・
やっぱり警告は64ビット対応が原因でした。 UINT型とDWORD型のみへの警告は恐らく、旧来の手法に対する警告ってことでしょうね。 #include <windows.h> #include <stdio.h> void main( ) { DWORD d; UINTui; WORD w;BYTE b;LPVOID p; p = &d; d = (DWORD) p; ui = (UINT) p; w = (WORD) p; b = (BYTE) p; printf( "LPVOID = %d\n", sizeof( LPVOID ) ); printf( "DWORD = %d\n", sizeof( DWORD ) ); printf( "UINT = %d\n", sizeof( UINT ) ); printf( "WORD = %d\n", sizeof( WORD ) ); printf( "BYTE = %d\n", sizeof( BYTE ) ); } 結果:LPVOID = 4,DWORD = 4,UINT = 4,WORD = 2,BYTE 1 warning C4311: '型キャスト' : ポインタを 'LPVOID' から 'DWORD' へ切り詰めます。 d = (DWORD) p; warning C4311: '型キャスト' : ポインタを 'LPVOID' から 'UINT' へ切り詰めます。 ui = (UINT) p;
450 :
デフォルトの名無しさん :03/04/17 09:41
ツールバー上のボタンの文字列を あらかじめ設定した文字列から イベント取得時に変更したいのですが どうやればいいんでしょうか?
オーナードロー
警告やな、エラーではないな。 了解。
453 :
bloom :03/04/17 13:12
454 :
デフォルトの名無しさん :03/04/17 13:48
テンプレートのデフォルトパラメータにvoidを使用できないのですが c++の決まりですか?VCの決まりですか? template < typename T = void > class hoge 〜 template < typename T > class hoge 〜 にたいして hoge < void > foo;は可能な様です。
(^^)
456 :
デフォルトの名無しさん :03/04/17 16:14
次からテンプレでMFC使ってるかどうかを書くように促して欲しい
ちなみにVC6のコンパイラの話です エラーメッセージ↓ error C2182: '__formal' : 'void' 型を使って宣言されました。
俺できなかったな 仕方ないのでintにしてる void *はできるかな? やってないけど
>>458 レスどうもです。
その他この他いろんな疑問(VCの不具合?)がでてきたので自分で調べる環境を整えます。
CGI作って遊んだっきりのcygwinが役に立ちそうです・・・
とりあえず立ち上げて・・・即exit。全く使い方覚えていない・・・
VCの不具合って、。。。まず自分のなコードを疑った方がいいよ。
ん〜 void* ならともかく void って実態ないでしょ。 そんなコード作る意義あるんですかね。
>>460 テンプレートについてはかなり不充分らしいです。(特にVC6)
実際ちょっとした実験コードを書いたらすぐに壁にぶち当たりました。
んで,なれないg++で実験してみました。
メンバ関数テンプレートで
class Foo {
template <typename T> void bar(){...}
}
Foo foo;
foo.bar<hoge>();
において「<hoge>が不用です」なんて言われるのです。
g++だとOKでした。
引数でとる場合はOKなんですけどね。
class Foo {
template <typename T> void bar( T& t ){...}
}
Foo foo;
foo.bar<hoge>();
int i;
foo.bar(i)
でも自分が間違っている気がします。
>>461 Modern C++ Design の第11章マルチメソッドに一つの例があります。
てゆうかこれを実験してみたかっただけなんですが。
LokiPortVC6版がホスィ。
>>457 つべこべ言わずにVisualStudio .NET 2003を待て。もうすぐ発売だ。
ANSI準拠度がかなり上がっているぞ。
準拠度98%だっけ?99%?
466 :
デフォルトの名無しさん :03/04/18 10:35
BITMAPINFO BmInfo; BmInfoHed.biPlanes=1; BmInfoHed.biBitCount=24; for(a=0;a<16*16;a++) { r=rand()%64; lpBMP[a*3]=r/16*85; lpBMP[a*3+1]=r/4%4*85; lpBMP[a*3+2]=r%4*85; } 色のバイトの所を8にするとうまく色が表示されないのですが(6で足りるはずなのに)、 どうすればよいのでしょう。
>>466 色のバイトのところってなんじゃい。
ビットマップの構造として幅が8*nドットになるようにダミーデータが入るのと関係あるのだろうか
>>467 色のバイトの所とはBmInfoHed.biBitCount=24の所です。
再び調べてみた所、24(フルカラー)以外の場合は予め色を登録しておかなければ
ならないようです。初心者なので、質問もうまくできませんでしたが、
お答えありがとうございました。もう少し勉強してきます。
469 :
フルタワーが机の下に入らん :03/04/18 14:37
BMP ファイルの幅は 4の倍数になるようになってます。 これは x86系の CPU が 4 の倍数を計算するときだけ微妙に速くなるからです。
>これは x86系の CPU が 4 の倍数を計算するときだけ微妙に速くなるからです。 なんか大嘘をぶっこいている奴がいるんだがどうしよう メモリのバス幅の問題とアーキテクチャの問題の近藤君がいるよ
初心者だ、見逃してやれ
472 :
デフォルトの名無しさん :03/04/18 16:00
>>468 たとえば 8 ビットカラーの場合、BITMAPINFO hoge; じゃあなくて、
LPBITMAPINFO bi = new BYTE[sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD)*256];
てな感じで clut の分も確保して、bi->bmiColors[0...255] にそれぞれの色を入れて、
bi->bmiHeader.biClrUsed = 256; とかする。
>>466 ヘルプを見る。
ちゃんと全部かいてある。
その 6ではいけない理由もな。
466の突込みどころはそれだけじゃないような lpBMP[a*3]=r/16*85; lpBMP[a*3+1]=r/4%4*85; lpBMP[a*3+2]=r%4*85; の部分 p = lpBMP; ... *p++ =r/16*85; *p++ =r/4%4*85; *p++ =r%4*85; みたいにするほうがいいよ こっちの方が速いはず
たいした違いはない。
476 :
デフォルトの名無しさん :03/04/18 20:17
シンボルってなんですか? VisualStudio6.0をセットアップする時にもWindowsNT Symbol Setup が どうのこうのというメッセージが出ますが、これをするとどうなるのですか、 しないとどうなるのですか? OSはWindows2000です。私はVBしか使った事がなくて、これからVCをやってみようかと 思っているのですが・・・
>476 VisualC++でデバッグをするときにちょっと便利になる。 ディスク容量に余裕があるならセットアップしとけ。 …でも使ってるOSに対する正しいシンボル情報は 別途入手する必要があるかも。 まあ分からなかったら今はまだ気にしなくていい。
479 :
デフォルトの名無しさん :03/04/19 00:32
ペゾルド読んでます。 Win98/NTではすべてのスレッドが、それぞれのメッセージキューを持つ らしいのですが、作成したスレッドにメッセージを送るにはどうしたら いいんですか? DWORD WINAPI ThreadFunc (LPVOID Param); ↑この関数内部で GetMessage すると、このスレッドのメッセージキューから メッセージをGetできるってことですよね? int WINAPI WinMain (); の場合は hInstance を使って CreateWindow() したウインドウに対して メッセージを送ることで、WinMain のメッセージキューに送られるみたい ですが。 またWinMainじゃない、作成したスレッドでCreateWindow する場合は WinMain の hInstance を使えばいいのでしょうか?
>>479 そんなあなたに WaitForSingleObject
いまなら CreateEvent が、もれなくついてきます。
481 :
デフォルトの名無しさん :03/04/19 01:31
>>479 PostThreadMessage()で送ってGetMessage()かPeekMessage()で受け取る。
この時に気を付けなければならないのは送信先スレッドにメッセージキューが
無いとPostThreadMessage()は失敗する。
CreateMessageQueue()みたいな関数は存在しないので注意。
詳しくはヘルプ参照。
別スレッドでも基本的にWinMainのhInstanceを使用する。
482 :
デフォルトの名無しさん :03/04/19 03:36
>>481 PostThreadMessage なんてのがあるんですね。
メッセージキューってすべてのスレッドで自動的に
作られるんじゃないんですか?
>>480 どうもです。こっちはペゾルドにも書いてありますた。
>>482 それは失礼しますた。
ちょっと強引だが、
Windowsでは、プロセスに自動的にメッセージが「送られて」くるが
それを 「受け取る」&「中身を見る」のは、プログラマの仕事です。
あくまでイメージね。
484 :
デフォルトの名無しさん :03/04/19 08:58
>>482 メッセージキューは自動的に作成されるが、
スレッドを生成したら自動的にメッセージキューが作成されるわけではないので注意。
ヘルプとか見ると受け取りスレッド側でAPI関数を呼べば自動的に作成されるようだが、
全てのAPI関数がそうなのかはよくわからん(藁)
一番確実なのは受け取りスレッド側でPeekMessage()を呼べはメッセージキューが作成される。
個人的にはPostThreadMessageはお勧めしない。 見えないウィンドウを作ってそのウィンドウにPostMessage する方が紛れがない。 思わぬAPIがスレッドのメインウィンドウの存在を前提に してたりする、んじゃなかったかな。
486 :
デフォルトの名無しさん :03/04/19 20:43
>>485 なるほど。つまりメッセージでコントロールするなら、
わざわざ新規スレッドで作る必要は無いってこと
なのかな。
それとも新スレ作ってもhInstanceで何かのウインドウを
作るべきってこと?
>>485 あ、すんません。理解しました。
ウインドウ作ると SendMessageが使えるってことですね。
最近プログラミング覚えようとおもったものです。 Visual Studio 6.0はあるんですが、Visual Studio NETって買う必要ありますか?
無いです。もうすぐVisualStudio.NET2003が出ます。
>>489 VisualStudio.NET2003は買ったほうがいいということでしょうか。
491 :
デフォルトの名無しさん :03/04/19 23:09
プログラミング覚えるならVS6.0で充分
というか覚えようと思ってる段階なのにVS6.0をすでに持ってるってのが怪しい
>>486-487 新規スレッドの先頭でCreateWindowするってこと。
まあ面倒だし、PostThreadMessageってのは
そういう面倒なことをなくすためのAPIじゃないのかって
話もあるだろうけどね。
待てよ。そこまで気にするならイベントオブジェクトを
使って自前でキューを実装した方がいいかも。
うん、そうだ。その方がいい。
他のプログラムの起動とともに処理を開始して、終了したら処理をとめるような プログラムを組みたいのですが、この場合グローバルフック使ってメッセージを 監視するのでいいのでしょうか? 他にもっと簡単な方法はありますか? 諸先輩方、アドバイスお願いします。
∧_∧ ( ^^ )< ぬるぽ(^^)
∧_∧ ( ^^ )< ぬるぽ(^^)
厨な質問ですが、 m=objFolder.SubFolders.Count としたとき、mにはフォルダの個数がはいるのですが、 m=objFolder.SubFolders ならmにはなにがはいるんでしょう?
>>498 ほんとに厨だな。
objFolderの型情報さえも書いてない。
MSDN調べろよ。
>>498 ちゃんとした参考書を1冊こなせば、
そういう質問はでてこないはず。
Visual C++6.0を日本橋まで意気揚揚と買いに行ったら プロフェショナルしか売ってなかった・・・・・(しかも一店だけ)。ヽ(`Д´)ノウワァァァァン 早く.NETが使える環境になりてぇ・・・(;_;)
.NETなんか(゚听)イラネ
Professionalでいいじゃん……
managedはイラネけどVC++.NET2003はホスィ。
MFCって進化してるの?
漏前らに質問があります。 まずは何でも良いからフォルダを開きます。 アドレスバーにはデスクトップ、マイコンピュータ、3.5インチFD、、、 と続いていますが、ここでデスクトップを選びます。 このデスクトップをプログラムで開く方法を教えて下さい。 ちなみに C:\Documents and Settings\administrator\デスクトップ などではありません。 環境:Win2000Pro、VisualC++6.0
>アドレスバーにはデスクトップ、マイコンピュータ、3.5インチFD、、、 >と続いていますが 続いていません 〜終了〜
>>507-508 ではCドライブを開いてから、Backspaceキーを2回押してください。
デスクトップが開かれるはずです。その事です。
>>509 >何でも良いから
とりあえずここから修正しろ
SHGetDesktopFolderの事か?
512 :
C言語GW宿題 :03/04/23 20:07
下記の入園料金を計算するプログラムを作成しなさい。 ユーザーに大人の人数と子供の人数を入力してもらい、 大人は一人1000円、子供は300円で合計を算出し、結果を表示する。
ShellExecuteで "start C:\Documents and Settings\administrator\デスクトップ " とかそういうのじゃないだろうなあ。 厨房様は何が言いたいのかさっぱりわからん。
515 :
デフォルトの名無しさん :03/04/23 20:11
517 :
デフォルトの名無しさん :03/04/24 00:38
VC++6でSTLを使っているのですが、コンパイル時に デバッグ情報で識別子が 255 文字に切り捨てられました。 というwarningがいくつもでて煩わしく思ってます。 このwarningだけ表示させないようにすることはできないでしょうか?
256文字以上もある識別子?あほですか?
//stdafx.h #ifdef NDEBUG #undef _STLP_DEBUG #undef _STLP_DEBUG_ALLOC #else #pragma warning(disable:4786) #define _STLP_DEBUG 1 #define _STLP_DEBUG_ALLOC 1 //or #undef #endif
つーか、単なるSTLなら_STLP関係いらねーや。
おまいら、C++を使うなら STL(STLPort) ぐらい嫉妬家!
>>519 それらを埋め込むことで表示されなくなりました。
ありがとうございます。
俺も517と同じ警告出てた リリースモードではでないけど 519のコード埋めればいいんだね? STLPortは知らんかった ちょっと調べてみようかな
517のコード入れてみたけど相変わらず警告が 何がいけないのやら・・・
>>528 stdafx.hの上の方に入れてみろ。
#pragma warning(disable:4786)の一行だけでいいと思うけど。
MFCアプリケーションウィザードで作った SDIのCEditViewを使ってプログラムしてるんですが 何かちょっと編集して×ボタンを押すと 「Save changes to Untitled?」 っていうメッセージボックスがでるんですが そのメッセージを出さないようにするには どうすればいいんでしょうか?
>>532 ただログをEditViewにダラダラ出してくだけなんで
セーブの警告なんていらないんです。
よろしくお願いします。
534 :
デフォルトの名無しさん :03/04/24 13:27
>>533 Doc-View使ってる?だとすれば、
とりあえず↓のようにCDcoument::SetModified()をオーバーライドすればできる。
やったことないから、もしかしたら他にいい方法あるかも。
BOOL CHogeDoc::SaveModified()
{
return TRUE;
}
>>534 ありがとうございました!
できました!
536 :
デフォルトの名無しさん :03/04/24 15:10
別アプリケーションの、 特定のウィンドウにフォーカスを変更したいのですが、 どうすればいいのでしょうか?
別アプリのウィンドウのフォーカス取得 ↓ SetFocus
540 :
デフォルトの名無しさん :03/04/24 17:39
APIの SendKeys や keybd_event は Win2000、XPではNumLockやEnterキー押下に問題があるのでしょうか? SendInput を使えということですが....
542 :
デフォルトの名無しさん :03/04/24 18:29
536ぢゃないけど・・
>>537 これウインドウハンドルが必要でしょ。
ウインドウクラス名とかまで分かっていれば探すことも
できるけど、ソースの分からないアプリの場合は
どうすればできるのかな。
Use Spy++.
544 :
デフォルトの名無しさん :03/04/24 19:15
アプリA 他人が作った普通のWinアプリ アプリB 他人が作ったゲームなどDirectXフルスクリーン(排他) 自作アプリC アプリBを「フォアグラウンドのまま」、自作アプリCからキーフックを使ってアプリAのダイアログにメッセージを送っています。(SendMessage,,,WM_SETTEXTで) さらにアプリBが「フォアグラウンドのまま」そのアプリAのダイアログでリターンキーを押したいのですがこれは可能でしょうか?
1ダイアログに255個以上のコントロールが貼り付けられないのですが仕様ですか?
DirectInput等つかってなければ、可能ナリ。
547 :
デフォルトの名無しさん :03/04/24 21:27
すいません。教えてください。 BOOL型のメンバ変数m_Tempを追加したのですが、 ソースにカーソルを当てると、ポップアップで int CTestView::m_Temp とINT型で表示されるのですが、BOOL型なのになぜINTなのでしょうか? 例えば、 if(m_Temp == true){ ・・・ と記述すると以下の警告がでます。 「warning C4805: '==' : 演算中の 'int' 型と 'const bool' 型の混用は安全ではありません」 #define TRUE 1 が、Afxstd.hで宣言されてるので、 if(m_Temp == TRUE){・・・ と記述すれば警告はでなくなるのですが なんか胸の中がすっきりしません。どういう事なのでしょうか?
ちょっと訂正します 誤 #define TRUE 1 が、Afxstd.hで宣言されてるので、 正 #define TRUE 1 が、AFX.Hで宣言されてるので、
>>547 bool = 1bit
BOOL = int = 32bit
という説明でよろしいか?
>>549 ありがとうございます!!!なるほど納得&警告でなくなりました!
551 :
デフォルトの名無しさん :03/04/24 21:41
気持ちわかる↓ >なんか胸の中がすっきりしません BOOLをboolする関数でも組めば? inline bool BOOL2bool(BOOL f) { return (f == TRUE) ? true : false; } inline BOOL bool2BOOL(bool f) { return (f == true) ? TRUE : FALSE; }
552 :
デフォルトの名無しさん :03/04/24 21:42
>>544 Aのダイアログにメッセージが送れるなら、Aのダイアログのボタンで生成
されるメッセージをそのまま送るわけにはイカんのですか?
>>551 レスどうもです。そういうやり方もあるんですね。参考になりました。
554 :
本7 ◆HON7/awDa. :03/04/24 22:20
金ないんでVC++4.0でがんばってます。 winsockでTCPソケット通信でtelnetサーバを作りたいです。 ソケットを起動(っていうんですか?)して > 接続要求待ち > 要求があれば > サーバの紹介文を送りログインを求める > パスワードが照合すればクライアントにDOS画面を送る というのはどういう流れにすればよいですか?関数とかも挙げて説 明頂けるとありがたいです。よろしくお願いします。
>>554 とりあえず、それ用の本買うことをお勧めする。
ここで聞いて理解できるようなら、たぶんで作成できるだろうし・・・。
金ないならネットで検索しとけー。
レス1つや2つで終わるような話じゃないと思うぞー。
なんせ、それだけで本1冊かけるしな。
ネットワーク質問スレの過去ログ全部読んでみるのもいいのでは?
558 :
本7 ◆HON7/awDa. :03/04/24 22:59
ありがとうございます。いろいろ試してがんばまります。
>>551 >return (f == TRUE) ? true : false;
( ´_ゝ`) フーン
ってか両方とも==で比較しなくていいよね
ってかキャストでいいよね
562 :
名無し@沢村 :03/04/25 01:35
「BOOLはint」って話の流れで「f == TRUE」は無いよね
564 :
デフォルトの名無しさん :03/04/25 01:46
つか、 true と TRUE を使い分ければ良い話でわ? わざわざ変換関数必要なん?
>>564 STLとか使って普通にWindowsプログラミングをしていたら必要になってくるだろ、ボケ。
>>565 簡単な例出してみ。総ツッコミ入るだろうけど。
>>565 簡単な例出してみ(ゲラ 総ツッコミ入るだろうけど(嘲笑激藁
教訓:ここは初心者に教えるスレであって、初心者が知ったかするスレではない。
全然Visual C++関係ないじゃないか・・・
>>566 std::bitset<10> aho;
aho.set(0, ::IsWindowEnabled(hWnd));
さあ、ツッコミ入れろ。vector<BOOL>にしろとか言うなよ。
唐突ですみませんがgetmemoryってどういうことなんでしょうか?
>>570 ツッコミも何もそのコード自身、変換関数なんて使ってないじゃん。
今までの流れ
>>564 「わざわざbool<->BOOL変換関数必要なん?」
↓
>>565 「STLとか使って普通にWindowsプログラミングしてたら変換関数が必要だろボケ」
↓
>>566 「変換関数が必要になる例出してみ」
↓
>>570 「std::bitset<10> aho; aho.set(0, ::IsWindowEnabled(hWnd));」
↓
>>572 「どこにも変換関数使って無いじゃん(;´Д`)」
574 :
ドアフォ。 :03/04/25 15:01
あんのー、Visual BasicとBasicだけ微妙に触ったことある程度のド素人なんだけど、 せっかくMicrosoft Visual C++ 6.0も入ってるのに学校ではやらないそうなんです。 で、個人的に勉強してみようとあっちこっちの初心者向け回ってるんですが、 どうやったらプログラム作り始められるかがわかりません!!w とりあえずファイル>新規作成>Win32 Console ApplicationでDOS窓用、 Win32 ApplicationでWindowsプログラムってのはなんとなくわかったんだけど・・・ File ViewでSource Filesって書いてあるのがコード書いたのを保存するフォルダ? あーわけワカメ。
576 :
デフォルトの名無しさん :03/04/25 16:21
warning C4805 を出したくないだけでしょ。
577 :
デフォルトの名無しさん :03/04/25 16:27
>>560 会社だと
bool fHantei = 判定関数;
:
:
:
if(!fHantei){ //←ここ
:
}
こういう書き方はダメなところが多いと思うけど。
C#でもこういう書き方はErrorになるはず。
==TRUEはもっとダメ。
漏れの同僚に #define NULLPO 0 HANDLE *pHandle = GetHandle(); if(pHandle == NULLPO){ MessageBox("ぬるぽ!"); exit(0); } ってやるやつがいます。
外出みたいだけどもう一度 BOOL型を返す関数でFALSEがエラー FALSE以外が正常ってのがあったような気がするから BOOL B; ... if(B == TRUE)はやってはいけないと やるなら if(B == FALSE) if(B != FALSE) みたいに
ガイシュツのものをなぜわざわざもう一度書くのだろうか?
そもそも比較する必要がない
皆それぞれ言いたいことはあるだろうが、ここは一つ
>>551 は糞ってことで収めないかね。
if(hoge==FALSE)するかどうかはコーディングスタイルや会社の規約に関わってくるから
水掛け論にしかならんだろうし。
顔がチンコに?!
顔の人はチンコだったか
>>587 /⌒\
( )
| | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| |< 呼んだー?
( ・∀・) \_________
) (
(__Y_)
>>589 読んでねーよ、氏ねや
ああ、イライラする
まだフィッシングかよ……
int main(){
if(
>>551 == true )
{
cout <<" /⌒\ "<< endl;
cout <<" ( ) "<< endl;
cout <<" | | "<< endl;
cout <<" | | "<< endl;
cout <<" ( ・∀・) "<< endl;
cout <<" ) ( "<< endl;
cout <<" (__Y_) "<< endl;
return 0;
}
return -1;
}
だいたいここ初心者向けのスレなのに あの程度のミスでなんで糞呼ばわりされなきゃならないんだ? 初心者なんだから仕方ないだろう? それともあんたらはプログラム初めてそういうミス一度もしたことないのか?
教える側がミスしちゃいかんだろ。
595 :
デフォルトの名無しさん :03/04/25 23:11
BOOL型==TRUE ってだめなの?
596 :
デフォルトの名無しさん :03/04/25 23:19
あ〜なるほどねわかった気がした
初心者スレだから叩く 人間叩かれて大きくなるんだYO! でも変な所を大きくしないでね
>>593 おまえだけが間違うのは勝手だが初心者を巻き込むな
599 :
デフォルトの名無しさん :03/04/25 23:25
BOOLを使わなければいいのでは?
intでやれよな。
大は小をかねる。
つーかこんな事で喧嘩すんなよ互いに(w
楽しけりゃいいじゃん!!
>>592 みたいなのってendlでフラッシュするじゃん
たぶんそこがネックになって速度が落ちると思うのね
もっとフラッシュを抑制する方法ってないかしらん?
嘘を教えちゃいけないよね
606 :
Are you OK ?? :03/04/26 00:37
#include <iostream> #include <windows.h> using namespace std; inline bool BOOL2bool(BOOL f){ return (f == TRUE) ? true : false; } inline bool bool2BOOL(bool f){ return (f == true) ? TRUE : false; } int main() { for(int i=0;i<3;i++){ BOOL fB = (BOOL)i; bool fb = (bool)i; cout << "(BOOL)" << i << " = " << fB << " , BOOL2bool((BOOL)" << i << ") = " << BOOL2bool(fB) << endl; cout << "(bool)" << i << " = " << fb << " , bool2BOOL((bool)" << i << ") = " << bool2BOOL(fb) << endl; cout << "\n"; } return 0; } (BOOL)0 = 0 , BOOL2bool((BOOL)0) = 0 (bool)0 = 0 , bool2BOOL((bool)0) = 0 (BOOL)1 = 1 , BOOL2bool((BOOL)1) = 1 (bool)1 = 1 , bool2BOOL((bool)1) = 1 (BOOL)2 = 2 , BOOL2bool((BOOL)2) = 0 (bool)2 = 1 , bool2BOOL((bool)2) = 1
まだやってんの(;´Д`)
これで完結じゃないの。実例出たからみんな納得するだろう。
ていうかすでに納得してんのに何を粘着に(ry
>>609 いや、個人的に気になったから
普段からBOOLなんて使わんしさ
>>610 なんでWindowsプログラミングをしていないのにこのスレにいるの?
612 :
デフォルトの名無しさん :03/04/26 02:29
なぜか急にクラスビューに1つのクラスだけが表示されなくなってしまいました。 どうすれば直りますか?
>>612 引っ込み思案な性格を、カウンセリングで直せ。
>>604 endl のかわりに \0 代入して
表示するさいに std::finish とかってどうよ?
>>611 まだCを勉強して間もない初心者なんじゃないの?
初心者を初心者と見抜けないと (初心者スレで回答を得るのは)難しい。
617 :
デフォルトの名無しさん :03/04/26 17:12
>>546 >>552 大変遅くなりましたができました。ありがとうございました。ちなみにこのような感じです。
SendMessage(HWND,WM_KEYDOWN,(WPARAM) VK_RETURN, 0);
SetFocus(HWND);
SendMessage(HWND,WM_KEYUP,(WPARAM) VK_RETURN, 0);
>>612 VC終了して拡張子clw,aps,opt,ncbのファイルを消してVC起動して「表示」→「ClassWizard」で
なんか聞いてくるから「はい」選択。変なダイアログ表示されるから「全て選択」ボタン押してからOK。
>>618 ありがとうございます。ちゃんと表示されるようになりましたヽ(´ー`)ノ
そんなことしなくても当該クラスのヘッダーファイルを変更すれば 表示されるよ。変更はスペースでもコメントでもOK.そのあと元に戻せばOK
子ウインドウの取得に関しての質問です メモ帳をスパイで見ると "無題 - メモ帳" Notepad └""Edit となっており、クラス名Editのハンドル取得は以下のようにして行うことができました。 FindWindowEx(FindWindow("Notepad", NULL),NULL,"Edit",NULL) ここで質問なのですが、 "Titlehoge" Clshoge └""Edit └"Edit2" └""Edit └"Edit3" の場合、クラス名Edit3のハンドル取得はどのように行えば良いのでしょうか?
622 :
デフォルトの名無しさん :03/04/27 11:27
hです。 制すうちを入力しshort型の変数に格納した後 この変数の内部表現をビット列で表示するプログラムを作成せよ・・・ という課題がでました。 integer=>1 0000000000000001 integer=>-2 1111111111111110 といった感じで表示するってとこまでは分かったけど・・・ 実際のプログラムが分かりません。どうしよう・・・tt
624 :
デフォルトの名無しさん :03/04/27 11:44
ボーランドC++ビルダーコンパイラのインストール手順(readme)内に、 a. 既存のパスに "c:\Borland\Bcc55\bin" を追加します。 と記載されているのですが、いきなり意味がわかりません。 これは、どういうことをするのですか? インストールしたところは、 D¥program files\borland\bcc55 としますた。
今日のフラワーCの勝ち馬がわかりません。 誰か教えてください。
>628
Microsoft VisualC++ 6.0 Enterprise で開発してるんですけど。 ブレークポイントを追加してから、デバッグすると かなりの確立でフリーズするんですけど・・・ ずっと昔からこの状態が続いているんですよ。同じ現象の方いらっしゃいませんか? 環境は WindowsXP ProfessionalとWindows Me(どちらでも同じ現象) CPU AthlonXP1600+ Memory DDR256MB
633 :
デフォルトの名無しさん :03/04/27 14:23
VCがフリーズ→ Alt + F4で強制終了がきかない→ Alt + Ctrl + Delでタスクマネージャーを呼び出せない→ 死亡。 なぜにタスクマネージャーさえも呼び出せないのかが不明! マウスは動きます。キーボードも動作してます。 あとたまにビルド中でVCのみフリーズすることがあります。 Meのときは、一時その状態にしとくと、OSもフリーズしました。 XPのときは、そのままにしておくと、どうもなりません。
.NETに切り替えろという意味では。
>>635 そんな無茶な。
というか、結構前からこの症状でてマシタ。
637 :
デフォルトの名無しさん :03/04/27 14:34
監査は,女体監査 しめつけ性,しゃぶなめ性,こしふり性を監査 上シスは,上級尻刺す ゴムがうんこだらけ,でもやみつき 被監査対象 監査持ってるが仕事がない人事教育のオールドミスに食われました。ぐいぐいと。 しかも,一生懸命奉仕したため,オールドミス仲間や最近ごぶさたの孫持ちおばはんの同僚たちにも回され,徹底的に姦さされました。 この年ではじめて3Pしましたが,相手2人の合計はぼくの年のほぼ4倍です。 助けてほしいですが,気持ちよくて,そんな自分が許せないのです。どうしたらいいでしょうか。 監査技法 バイブを使いなさい,伝統的な技法では通用しません。 上がシースルー を上シスと呼びます 電算室でSEXすると,いくらはりきっても汗が出ません。 アナルスト え,まだ前からやってるの? 坊や,まだまだ子供ね ぶす 松嶋奈々子 図体はともかく顔でかすぎ 田中麗奈 爬虫類? 広末涼子 あざらし 藤本美貴 AVエロ顔 こんなので抜けるの? 本上まなみ 地味ぶす 男の方がましかも 最近の女,ぶすばっか くさいし ばかだし すぐやらせちゃって病気もちだし 疥癬だし 腋臭だし エステ通ってるおばちゃんか,男のほうがいいな
>>636 その症状が出るようになった頃にインストールしたソフトは何?
Meの頃も発生していたんで、インストールしたソフトは関係ないと 思われます。 SPはわかりません・・バージョン情報で確認できませんでした。 というか、SPをインストールしたことはないのでSPは入ってないのかな? Coperight (c) 1994-98 って書いてあるんで、更新されてないと思います。
>>641 SPは入れておこうよ。
まあインストールしたことにより新たな不具合が発生することもあるけど(^^;
同じ症状の人いたんですね^^ って喜んでいいのか・・・ Nortonの仕業かもしれません。 Norton2002を入れてるんですが、Norton2003だったときは 正常に動いていた気がします・・・ 皆様ありがとうございました。
Nortonは極悪ソフトとして有名
>>641 うぃ。ダウンロードしてきます^^
マイクロソフト・・・新たな不具合発生したら意味ないじゃん!
>>644 そうなんですか?
少し聞いたことがありますけど・・・
Nortonに代わるものって・・・Nortonをぱくったようなやつが
雑誌に載ってたかも。なんでしたっけ?
647 :
デフォルトの名無しさん :03/04/27 14:51
☆ チン マチクタビレタ〜 マチクタビレタ〜 ☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ヽ ___\(\#・∀・) < ServicePack6まだ〜? \_/⊂ ⊂_ ) \_____________ / ̄ ̄ ̄ ̄ ̄ ̄ /| | ̄ ̄ ̄ ̄ ̄ ̄ ̄| | | お茶漬けの素 |/
俺の環境 Windows2000 & (VC++6.0 + SP2 +SP5)でも起こった。 とりあえずSP3&SP4をインストールしたら、デバック時のフリーズはなくなったが、 アプリケーションが不正終了したときに出るダイアログでキャンセルを選ぶとフリーズする現象がまだ直っていない。 そうかIMEが悪さしている可能性があるのか。 試してみるよ。
650 :
デフォルトの名無しさん :03/04/27 19:57
VC++6.0のプリントアウト機能って拡張できないの? 文字がデカすぎて紙がもったいねー。 いちいち別のエディタでソース開いて印刷するのもメンドイし。
あ、書き忘れましたが環境は、 Win2K (5.00.2195) SP2 です。
ソースを印刷するヤツ、素人
仕事だとどうしても必要になるときはあるよな>印刷
印刷したほうがコスト面で有利、環境にやさしい、見渡せる範囲が広い、注釈をつけやすい、目にやさしい
>>649 ディスクの空き容量が足りないとかそんなんじゃないのか?
>>649 ためしにソース(*.cpp,*.h,と*.dsp、*.dsw、*.rc等)以外のファイル消してみな。
直ることがあるぞ。
657 :
デフォルトの名無しさん :03/04/27 20:28
>>655-656 ありがとうございます。でも、
> ディスクの空き容量が足りないとかそんなんじゃないのか?
とりあえずドライブは2つあって、システムドライブ側の空きが2GB、もう一つの方
(ページファイルを置いている)は3GB空いているんですが、とても足りないとか言う
感じでは無いです。なので、
> ためしにソース(*.cpp,*.h,と*.dsp、*.dsw、*.rc等)以外のファイル消してみな。
を、試してみる事にします。
【解決】結局 MSのKB(236092)にあった > The ComSpec environment variable may be incorrectly defined. がポイントだったようです。 [マイコンピュータ]→[プロパティ]→[詳細]→[環境変数]に ComSpec=C:\WINNT\SYSTEM32\CMD.EXE (Cドライブの場合)を 追加して起動→ビルド、また削除して起動→ビルドで動作に違いが現れました。 #でも、これ一度試したんだけど、その時は何も変わらなかったような....なんで今になって? もし似たような症状が出ている方がいらっしゃいましたら、お試しください。
662 :
デフォルトの名無しさん :03/04/28 19:54
>>661 EnumChildWindowsで検索すると有用な情報をたくさん見つけることができました。
ありがとうございます
663 :
◆bYHudLsQLw :03/04/30 03:51
ツールバーで ボタンの右にくっついていて 「▼」のマークをしているものを 良く見かけるのですが、あれはなんという名前でどのように表示しているのでしょうか?
664 :
名無し@沢村 :03/04/30 05:35
665 :
名無し@沢村 :03/04/30 05:39
>>664 は、IEのツールバーの一番右に出てくる奴だ。
関係なかったな。
666 :
名無し@沢村 :03/04/30 05:45
667 :
動画直リン :03/04/30 06:26
668 :
デフォルトの名無しさん :03/04/30 06:32
669 :
デフォルトの名無しさん :03/04/30 13:44
VC++で\x1b[とかエスケープシーケンスがまったく 動作しないんですけど、仕様でしょうか? borand c++ で試しても同じ結果でした。
670 :
デフォルトの名無しさん :03/04/30 13:47
C++相談室から誘導されてきました… MSVC++6.0使用中なのですが、DLしたソースをコンパイルしようとしても、 「インクルードファイル「stdafx.h」がありません」エラーが出ます。 で、こいつについて調べ、プリコンパイル済ヘッダってコトまではわかったのですが、 どの資料を見ても、「自動で生成される」と、書いてありました。 で、VC++の設定いじってみて、「プリコンパイル済ヘッダを使用」にチェックも入れてみたのですが、コンパイルできません… どなたか、対処法を教授ください…
>>670 メンドクサイからstdafx.hが無いのなら作成して(中は空っぽでいいと思う)
すべての.cppファイル(または.c)の最初の行に
#include "stdafx.h"
を追加してコンパイルしてみ
ダイアログボックスのタイトルバーをドラッグしても動かせないんですが どうやれば動くようになりますか?
>669 w2k系と、ANSY.sys(だっけな)がはいってない環境だと動かないらしいよ。 最近DOS窓でリバーシ作ったのでDOS窓で動いてるのは確認しました。(CPPじゃないけど。)
ANSI.sysでした。(名前間違ってただけで動く確証は・・・。) #define locate(x,y) printf("\x1b[%02d;%02dH",y,x) 上のはリバーシの時に使ったマクロの一部。名前はBASIC使ってたときの名残です。 環境はME。
676 :
デフォルトの名無しさん :03/04/30 17:10
ウインドウに現れた画像結果の画像をファイルに書き出して 保存したいのですけどどうやってすればいいのでしょうか? BITMAPINFOHEADERなるものを使うと思いますが よくわかりません・・・
エラー 「msvcrtd.lib(crtexe.obj) : error LNK2001: 外部シンボル "_main" は未解決です」 こいつの消し方を教えてくだしゃい…
>>678 Win32 Cosole Applicationではなく、Win32 Applicationを選択する。
>>679 即レスサンクス
さっそくやってみまつっ!!
Cのこともほとんど分かってない僕がVCを買ってしまって 全く意味が分からないんですが、CとVCは別物と考えていいんですか? 学校ではCをやっているので、VCを買ったのですが何もできなくて困ってます^^; VCってCのコンパイラとして使えるのでしょうか。 とりあえずCとVC併行してやっていこうと思ってるのですが。 馬鹿げた質問ですが教えてください^^; お願いします。
よくわからないものをよく買う気になるなぁ
いいテンプレだな〜
>>681 VCは、Cとして使えるよ。
イメージ的には、VC=C and C++ and Visual開発環境。
DOS窓で、コンパイルすると以下のような感じ。
C:\cl test.c <ret>
C:\Temp>cl test.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
test.c
Microsoft (R) Incremental Linker Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
/out:test.exe
test.obj
C:\>
↑、ニュアンスで理解してください。
>>682 早い話、馬鹿なので(゚Д゚;)
>>684 ありがとうございます。
しばらくCのコンパイラになりそうです^^;<VC
Cコンパイラだけなら無料で手に入るのにね
>>687 ですよねぇ・・。
調べもせずに買ってしまったので。
無知って恐ろしい。
名言:利口な客は金にならない。
690 :
デフォルトの名無しさん :03/04/30 18:14
CFrameWndで作ったフレームがアクティヴかどうか調べる方法はありますか?
691 :
デフォルトの名無しさん :03/04/30 18:36
CButtonのキャプションを設定する方法を教えて下さい
できました!ありがとうございました。
>>690 CWnd::IsWindowEnabled
695 :
デフォルトの名無しさん :03/04/30 18:50
>>693 ありがとうございます
CButton *b2 = (CButton *)GetDlgItem( IDC_BUTTON2 );
b2->SetWindowText( _T("ggg") );
とこんな感じで書いてるのですが表示されなくて・・
因みにOSはWindowsCEです。
>>695 コードはあってると思う。
1、記述する場所を間違えてる
2、WindowsCEが原因 のどっちかかな
697 :
デフォルトの名無しさん :03/05/01 06:03
BMPについての質問です。うまく質問できませんが、教えてください。 1、16*16*17*17サイズを表示する場合、DIBはそのサイズのを一つ用意すればよい のですか。それとも16*16サイズを17*17個用意すればよいのですか。 2、BMP読み込みで一つ読み込んで一つ表示は分かるのですが、例えば3X3のフィー ルドマップに1箇所ずつランダムで読み込むとしてそれが分かりません。 1がどちらであるかによって違ってくると思いますが。 3、今はBMP読み込みができないので、コードの配列に絵のデータを書いてやっていて、 lpBMP[(73712-(y*17*16*16+y2*17*16)+x*16+x2)*3]=m%4*85; lpBMP[(73712-(y*17*16*16+y2*17*16)+x*16+x2)*3+1]=m/4%4*85; lpBMP[(73712-(y*17*16*16+y2*17*16)+x*16+x2)*3+2]=m/16*85; 見たいにやっているのですが、BMPも同じ感覚なのですか。 4、3のはlpBMP=(LPBYTE)GlobalAlloc(GPTR,16*16*3*17*17);とやってから そうしているのですが、これは3byte-1670万色使うと言うことだと思いますが、 lpBMPの打ち分けはどうなっているのでしょうか。3byteなら[0]B、[1]G、[2]R [3]B、[4]G、[5]Rだと思うのですが、色数の変化によりどうなるのですか。
3、4は解決できました。3は同じ感覚です。例えば16*16sizeの256色のbmp を読み込むとlpBMPのサイズは256バイトになります。16色なら128バイトで 1670万色なら768バイトです。全部緑の16*16sizeで256色のbmpを取り込み、 lpBMP[0]=0;なんかをやるとその部分だけ黒くなります。なお位置に注意 しなければならなく、[0]は左上が普通ですが、lpBMPは特殊で左下になります。 [0]左下→右下→左上→右上[255]です。4も3のが使えるので解決できました。 3byteの時の順番はB→G→Rのようです。これも逆のようですね。 1はたぶん前者ですね。後者だとすごく遅くなりました。2は1が前者の場合 3のを使えば自力でできそうです。ただ、逆であるためにlpBMP[(73712- みたいにしないといけないが嫌ですね。
699 :
デフォルトの名無しさん :03/05/01 08:23
質問です。 sdkの方のSetWindowPosを使いたいんですが、 コンパイルするとmfcのSetWindowPosをコンパ イルしているらしく、引数の違いのため、コンパ イルできません。 sdkのほうをコンパイルするにはどうすればいい んですか?
700 :
bloom :03/05/01 08:26
解決しました。 ::SetWindowPosでいけました。
自作自演ウザイ。
704 :
デフォルトの名無しさん :03/05/01 14:55
256色以上のビットマップ画像をリソースエディタで表示することは不可能ですか?
705 :
デフォルトの名無しさん :03/05/01 17:06
メモ帳とかに、キーボードを使わずに文字列を表示させることはできるんでしょうか? 思い誤ってSetWindowText()を使ったりしたら、ウィンドウのタイトルが変更されてしまったり…。 どうか助けてください。
>>705 メモ帳のビューそのものにSetWindowTextすればいけるんじゃないかい?
レスありがとうございます。 >メモ帳のビューそのものにSetWindowTextすればいけるんじゃないかい? これはどういう意味でしょうか? メモ帳のハンドルという意味ですか?
>>705 HWND hwnd;
hwnd=FindWindowEx(FindWindow("Notepad", NULL),NULL,"Edit",NULL);
SendMessage(hwnd,WM_SETTEXT,0, (LPARAM) "( ´∀`)");
という方法もあります
>>707 分からんのだったらkeybd_eventでも使えば?
710 :
デフォルトの名無しさん :03/05/01 22:06
すいません。ラジオボタンを作って 一回作りました。 そのあとラジオボタンの数を増やそうと思って そのラジオボタンをコピーして それから貼り付けてボタン1、ボタン2と いうコントロールIDに変更しました。 そしたら実行するとラジオボタンが2つともチェックされてしまい ラジオボタンのチェックが一つに限定されることが できなくなりました。どこがおかしいのでしょうか
714 :
デフォルトの名無しさん :03/05/01 22:43
VC++は2つのワークスペースを同時に表示させる事はできますか? 右側に別のワークスペースを表示して参考にしながら 現在のワークスペースをコーディングとか。
715 :
デフォルトの名無しさん :03/05/02 00:44
すいません、ウインドウ内に 色のラインを引きたいのですが それはプログラムで書くしかできないのでしょうか。 それともスタティックテキストみたいに 簡単にラインを引くことはできるのでしょうか
あの〜、718も私じゃないです。 煽りはいらないので早くレスください。
722 :
デフォルトの名無しさん :03/05/02 15:10
メイン文で構造体をポインタで宣言して、mallocした後で関数に渡しました。 その後メイン文でそれを使うにはどうすればよいですか? typedef struct{ int a; int b; }KOUZOUTAI; main() { KOUZOUTAI *K; int i; K = malloc(i * sizeof(KOUZOUTAI)); printf("%d", k[0].a ); ↑ここに何を入れればKOUZOUTAIの中身をプリントできますか? どうも自分&とか*の使い方がいまいちです。教えてください。
723 :
bloom :03/05/02 15:13
>>722 iの値が不定なので正常にメモリーを確保できません
さらにポインタがキャストされていないので、
エラーが出てコンパイルも出来ないことでしょう
中身を出力したければ確保したぶんだけループでまわして
メンバ一つ一つを指定してください
Cスレ行った方がいいと思うよ
>724 すばやいレスthx。ちょっと書き方が不十分でしたのでもう一度。 typedef struct{ int a; int b; }KOUZOUTAI; main() { KOUZOUTAI *K; int i = 3; K = malloc(i * sizeof(KOUZOUTAI)); kansuu(K); ←何かの関数をよんでると思ってください。 printf("%d", k[0].a ); それと、キャストって何ですか?お願いします。
略 int j; 略 K = (KOUZOUTAI*)malloc(i * sizeof(KOUZOUTAI)); 略 for(j=0;j<i;j++) printf("%d %d\n",k[j].a,k[j].b);
728 :
デフォルトの名無しさん :03/05/02 15:40
領域確保してるけど何もコピーしてないね
研究室にVC++が落ちてるんだけど勝手にインストールしちゃまずいかな?
>>730 ライセンスの種類によっては可能だったと思われ。
隊長、馬鹿(
>>730 )を発見しました!
いかがいたしましょう?
733 :
デフォルトの名無しさん :03/05/03 22:49
VC++ 6.0でADOを使用してAccessのテーブルから 該当件数を表示するものを作りたいのですが、 レコードセットの値を変換して取得する方法がわかりません。 お助けください。 _ConnectionPtr pCn; _CommandPtr pCm; _RecordsetPtr pRs; ::CoInitialize(NULL); pCn.CreateInstance(__uuidof(Connection)); pCm.CreateInstance(__uuidof(Command)); pRs.CreateInstance(__uuidof(Recordset)); pCn->Open(L"Provider=Microsoft.Jet.OLEDB.4.0; Data Source =test.mdb", L"",L"",adOpenUnspecified); pCm->ActiveConnection = pCn; pCm->CommandText = "SELECT COUNT(*) FROM 帳票 WHERE 担当 LIKE '%佐藤%'";pRs = pCm->Execute(NULL,NULL,adCmdText); ここからどうすれば良いでしょうか?
申し訳ない。 何とかなりそうです。 _variant_t vIndex = (long)0; _variant_t vCount = pRs->GetCollect(vIndex); long l = vCount.lVal;
735 :
デフォルトの名無しさん :03/05/04 23:23
STLの事を質問しようと思ってタイトル検索したら 鳥嶋宇宙科学技術研究所(TSTL)どんな研究所? ■▼■各放送局STL周波数【スタジオ⇔アンテナ】 がイパーイ出てきました。鬱です
VisualC++.NETでVC++6.0同様にプロジェクトにリソーステンプレートぶちこんで テンプレートにダイアログぶち込んだのにリソースのヘッダーファイルが 作られていませんでした。そのためかDialogBoxを使っても キャラ配列で名前を指定したり、MAKEINTRESORCEでダイアログ ボックスのIDを生でぶちこんだりしても、IDを認識していないのか ダイアログボックスを作れません。だれか対応策教えてください。
>>736 ぶ、ぶちこむって、あんまり連呼しないで〜(*´д`*)
>>650 ,653 宛
バ グ 込 み の ソ ー ス を プ リ ン ト ア ウ ト し て も
次 の 日 に は も う 使 い 物 に な ら ん だ ろ ( 爆 笑
740 :
デフォルトの名無しさん :03/05/05 04:09
背景の透過の仕方が分かりません。SetBkColorを使うのは分かるのですが。教えてください。
741 :
名無し@沢村 :03/05/05 04:30
>>740 SetLayeredWindowAttributes()
742 :
デフォルトの名無しさん :03/05/05 10:59
windws + vc+++ os XP VCでプログラムを実行したあと、右上の×ボタンでウインドを消去 その後再びコンパイルしようとすると、LINK ERR 対象のファイルが使用中..... これは終了処理が正しく行われていないからだと思われるのですが、 なにをしていない場合おこるのでしょうか? windowsクラスは破棄しているのですが、それ以外にも defwndprocに何か渡さないといけないのでしょうか?
743 :
デフォルトの名無しさん :03/05/05 12:26
>>742 自己解決しました。
windowsクラスが破棄できていませんでした。
744 :
デフォルトの名無しさん :03/05/05 12:35
オススメの書籍教えて ちなみに超絶初心者です
745 :
デフォルトの名無しさん :03/05/05 12:41
ねこぷー
>>740 SetBkColor使うと真っ白(真っ黒だっけ?)の
モノクロビットマップにBitBltしたときに
設定した色の部分だけ色が変わるのです。(確か黒)
そのモノクロビットマップをマスクに使って
転送するのです。
748 :
デフォルトの名無しさん :03/05/05 19:41
最近C++始めたんですが、エディットボックス1〜10(m_ed1〜10)を配列に収集するのに、 for文で10回ループさせようと思ってるんですが、メンバ名にカウント変数[i]を反映させるにはどうしたら(・∀・)イイ? int dat[10]; for(i=0;i<10;i++) { dat[i] = m_ed[i] ←こんなことがしたい… } 厨でスマソ…
コントロールのIDを連番にして GetDlgItem(ID + i, ・・・・・・)とか
datにコントロールのポインタを必要なだけ入れておけばいいだけでは?
>>750 いや、それをループでやりたいってことだろ
>>749 ,750
レスthx!!
750さんの方が簡単にできそうなので、さっそく逝ってきまつ♪
>>751 いや、正直、収集できたらなんでもいいんで、さっそくやってみまつ…
ポインタ、見過ごしてました…(汗)
え、もしかして CEdit arrayEdit[10]; arrayEdit[0] = &m_ed1; arrayEdit[1] = &m_ed2; : : int dat[10]; for(i=0;i<10;i++) { dat[i] = arrayEdit[i]->GetLineCount(); } みたいなことでいいのか?てっきり最初の arrayEdit[0] = &m_ed1;の部分をループでやりたいのだと思って・・・
CEdit* だった。ま、いいか。
>748 DDXつかっての話だったら、 DDX_Text(pDX, IDC_EDIT_NUM0, m_iNum0); DDX_Text(pDX, IDC_EDIT_NUM1, m_iNum1); みたいに自動生成されるところで DDX_Text(pDX, IDC_EDIT_NUM0, m_iNum[0]); DDX_Text(pDX, IDC_EDIT_NUM1, m_iNum[1]); と手動で書く。 と漏れはやってる。 力尽く主義なら 更新関数とかで const int* pT[]= { &m_ed1, &m_ed2, ... }; for(int i=0;i<MAXNUM;i++) dat[i] = *pT[i]; てな方針を提案。
えっと…厨なんで、難しい記述はできないんですが、 int *dat[10]={&m_ed1,&m_ed2…} の一行だけで、すべてはかたずきました… ループは、その後のプログラムで使うんで、データ収集も、そのまんまそのループ内に入れようとしてただけなんですわ… なにぶん、独学で本読みながら学んでるんで、まだまだわからないことだらけです… (ノД`)シクシク
>>756 Σ(゜Д゜;≡;゜д゜)
も、漏れがやったのは、力づくなのか?そうなのか?(汗)
Σ(;´Д`)あ いや 変数名いまさら変えたくないYO! という場合はこちら みたいな ニュアンスでな… 正直スマソ
DDXに頼り杉。EDITのIDを連番にして↓が最適解だと思う。 for(int i=0; i<10; ++i) dat[i] = this->GetDlgItemInt(ID_FIRST_EDIT + i);
何をもって過ぎることになるんだ。使えるなら使えばいいじゃないか。
わたしも760のようにいつも書いているのですが 書きながら、IDが連番であることを仮定したコードを書くのは 論理的に美しくないような気がして(´・ω・`)ショボーン となってしまいます。
763 :
デフォルトの名無しさん :03/05/05 22:20
初めまして、最近VC++を始めたばかりのプログラム初心者です。このたびは質問があって、「すれ立てるまでもない質問スレ」のほうから移動して書きこみさせていただきました。 Visual Studio.NET Standard Version2002を使ってManaged C++アプリケーションのコードを練習していて、いざコードを書き終わってビルドしたところ 「fatal error C1102:次の初期化が出来ません:クラスが登録されていません」というエラーがタスクに表示されました。そこをダブルクリックしたらstdafx.cppというところに飛ばされたのですが、 当方初心者のため、そこで何をしたらいいのかわからなくて問題を解決できないでいます。この問題を解決するにはどうしたらよいのでしょうか? 私の使っているOSはWindowsXPで教本には「ステップバイステップで学ぶVisualC++.NET実践講座Vol.1基礎編」を使っています。ステップ2の「animals」というプログラムを作っているときにこの問題が発生しました。 どうかご存知の方いたらよろしくお願いします。
764 :
デフォルトの名無しさん :03/05/06 00:55
>>763 VC++Ver6しか持ってないので細かいとこが違うかもしれんが。
プロジェクト→プロジェクトへ追加→コンポーネント及びコントロール(P)
あたりで追加コントロールが必要なのかもね。
766 :
デフォルトの名無しさん :03/05/06 02:37
>>763 「ステップバイステップで学ぶVisualC++.NET実践講座Vol.1基礎編」が
いかなるものか、わからないけど、プリコンパイルヘッダを使用しないとかにしてみる。
>>764 すみません、書くべきソースがわかりません・・・
>>765 とりあえず一般C++のクラスを追加をいじってみたら「新しい構文要素を読み出すのに失敗しました構文エラーが考えられます」というエラーメッセージが出てきました。
>>766 プリコンパイルヘッダはどのようにして使用しないようにするのでしょうか?
結局勉強不足で、質問ばかりになってすみません・・・もっと勉強してきます。
>>760 等
クリンナップ時に、resource.hをExcelでソートしたりする香具師もいると思うが、ID_DLG1_EDIT1みたいな名前を付けとけば連番が崩れなくて安全だ。
漏れはDDX近辺にASSERT(ID_EDIT_1+1 == ID_EDIT_2);みたいなアホなチェックも入れて、厨房が壊したら本人が気付くようにしているぞ。
(自慢なのか?)
用途にもよるが、俺だったら連続なエディットならリストビューを使うことを検討する。
動的にコントロールを作ればいいだけのような気がするけど
>>763 プリコンパイルヘッダは、コンパイルの高速化のために
コンパイルの途中結果をファイル化しておくもの。
ソースの一部変更などであればそのまま使えるが
ヘッダやソースの大幅変更した場合は破棄されて
再び作成される。
リビルドすれば、まっさらな状態からコンパイルできる。
もしかしたら、プロジェクトの作成方法がおかしいかもしれないので、
プロジェクトだけ別名で作成して、既に打ち込んだソースは別のところに
バックアップして、新しいプロジェクトのソースに貼り付けて見るといいかも。
772 :
デフォルトの名無しさん :03/05/06 15:32
ダイアログのオーナードローコントロールなんですけど、描画関数の中で使う フォントについて。 ↓は合法なのでしょうか。 HFONT hOldFont = (HFONT) SelectObject(hDC, GetParent() -> GetFont() -> m_hObject); ↓は結構目にするんですが。 LOGFONT lf; GetParent() -> GetFont() -> GetLogFont(&lf); HFONT hFont = CreateFontIndirect(&lf); HFONT hOldFont = (HFONT) SelectObject(hDC, hFont);
基本的なことなんですがお尋ねしたいことがあります。 オーバーロードの利便性とはどのようなことなんでしょうか? また、オーバーロードすることにより起こりえる問題点などありましたら教えていただきたいです。
まずはオーバーロードについて勉強しろ。 勉強すれば自ずと分かるはずだから。
システムモーダルなCFrameWndのフレームってどうやればいいですか?
776 :
デフォルトの名無しさん :03/05/06 17:16
今までMFCを用いてプログラムを行っていましたが SDKを用いたプログラムを勉強することにしました。 2つばかり質問させてください。 やはりゲームなどで用いる画像処理の効率は SDKの方がいくらか高速になるのでしょうか? あとSDKでのプログラミングでは ClassWizardが使えないのですが 様々なサイトを調べても あまりクラスを使って説明している人はいません。 SDKでクラスを用いるのは一般的でないのでしょうか?
>やはりゲームなどで用いる画像処理の効率は どう比較するの? ゲーム用の画像処理用のクラスがMFCにあるという前提? だったら >今までMFCを用いてプログラムを行っていましたが いままで何もやっていないのと一緒
778 :
デフォルトの名無しさん :03/05/06 17:31
CStringの"123.4"などをfloatに変換する方法を教えて下さい。
>>771 その方法を試みましたが結果は変わりませんでした。
「ステップバイステップで学ぶvisual C++.NET実践講座」には各ステップごとのプログラムの見本のプログラムが入ったCD−ROMがあるのですが、
その見本のプログラムをビルドしようとしても同じエラーが起こりました。Visual C++.NET Standard自体を再セットアップしたほうがいいでしょうか?
>>779 CD−ROMのサンプルをプロジェクトディレクトリごとLZHかZIPにでも
アーカイブしてどっかにうpしたらいかが?
それと、エラーメッセージをコピー&ペーストで書き込んだほうが良い。
エラーメッセージの種類(コード)がそれでわかる。
それと、ほんの最初のほうにでもプロジェクトの作成方法みたいなのが
書いてないの?
782 :
デフォルトの名無しさん :03/05/06 20:25
↑コメントに763と書いてあるやつでZIPです。
784 :
デフォルトの名無しさん :03/05/06 20:35
VC++Proはアクティベーションのリミットが10回しかないのでしょうか? もしリミットを超えたら新しく買いなおさないといけないのでしょうか? 2〜3ヶ月に1度は再インストールするので、ものすごく不安なんです。
VC++にアクティべーションがあるの?.NET?
787 :
デフォルトの名無しさん :03/05/06 20:47
WindowsのVC++で、 マウスカーソルの座標をセットする命令って何でしたっけ・・・?
789 :
デフォルトの名無しさん :03/05/06 20:56
現在.NETを使っているのですが、 参考書の問題で「新規作成」→「リソーススクリプト」を作成して〜 とあるのですが、その本は古めなので.NETが載ってません。 .NETではどうやればよろしいのでしょうか? リソーステンプレートというのを選んでもフォルダらしいものができるだけですし、 他も.rcらしいものは作成できなそうです。 ヘルプを見てもそれらしいものは見つけられません。 どなたかご教授お願いいたします。
SetCursorPos()で、座標数値を与えても、カーソルがモニター上の左上で固まってしまうのです。 なぜだろう・・・
SetCursorPosに与える引数が両方とも0以下ではないか、と憶測してみるてすと。
ためにし、SetCursorPos(400,300)とかして、 OnMouseMoveから呼び出して、 マウスクリックしている間、マウスを動かしてもカーソルが動かないようにしたいのですが、 プログラム自体が停止してしまうような挙動をします・・・。
マウスクリックでマウスカーソル座標Aを取得 そのままマウスクリック中、OnMouseMove内で、 SetCursorPosに座標Aを与えると、無限ループになるのかな・・・?
他の方法をかんがえます・・・・・・
>>793 試してないからわからんが、
LButtonDownでGetCapture()して、キャプチャー中はWM_MOUSE_MOVEメッセージを
破棄というのはどうだろう?
最近VC++.NETの質問増えてきたねぇ。みんな乗り換えてんのかな。
>>782 ごめん、やっぱ、.netは全然違う。
.netが手元にないのでちょっとお手上げかも。
.net持っている人、ヘルプ782です。
>>782 .NET2003からだけど問題なくコンパイルできた
800 :
763.782 :03/05/06 23:20
>>798 1.プロジェクトの [プロパティ ページ] ダイアログ ボックスを開く。
2.[構成プロパティ] フォルダをクリック。
3.[全般] プロパティ ページをクリック。
4.[マネージ拡張] プロパティを変更。
というMSDNに書いていた手順で変更すればよいのでしょうか?
だとしたら私のVisualC++.NETでは4番の[マネージ拡張]プロパティというのが出てこないのですが・・・
>>799 コンパイルできましたか・・・ご報告ありがとうございました。
801 :
デフォルトの名無しさん :03/05/06 23:31
C#ってC言語よりもVBに近いんですか?
803 :
763.782 :03/05/07 00:33
>>802 問題が発生しているのは、まさにその「Managed C++アプリケーション」っていうやつで作っているプロジェクトなんですけど4.は出てこないです。
>>776 ゲームってのはVBでもそうだけど基本的にイベントドリブンじゃなくて、
メインループを作ってその中をぐるぐる回すパターンが多い。
メインループとかいじるとMFCの意味無いじゃん。
だから必然的にSDKでやっちゃう。てかゲーム作成サイトなんてみんなそうでしょ。
まあ、最初MFCで作ってみるといいよ。みんなMFCで最初作ってあれこれ悩んで
SDKに移ったクチが多いと思うから。
こことかゲームの基本的な作り方の参考になると思うよ。
http://www.edit.ne.jp/~skyfox/axis/ 上記HPの[AXIS ROOM] の [AXISゲーム製作入門(シューティング編)] てとこ。
今、ライブラリはDLできないけど、読めばなんとなくわかると思うです。
>>803 とりあえずC1102をMSDNで調べてみたら?
クラスというのがanimalクラスを指すのか、別のものを指すのか分からん。
>>805 高度な検索というヤツにC1102をかけてきましたが0件でした・・・
誰か、常に最前面にCFrameWndを置く方法教えてくだされ〜
809 :
名無し@沢村 :03/05/07 12:20
>>806 付属のMSDN Libraryで調べた?
812 :
デフォルトの名無しさん :03/05/07 22:10
VBから最近移ってきた初心者です。 よろしこおながいします。m(__)m 自作のcppとhファイルをコンパイルして、いくつかのプロジェクトで 使いまわしたいのですが、プロジェクトでヘッダだけインクルードしても 「実装がない」といってビルドできません。(cppをファイルに追加すれば もちろんいけるのですが...) MFCとかはヘッダだけのインクルードでいいのになんで自作のだと ダメなのでしょうか?
813 :
デフォルトの名無しさん :03/05/07 22:43
>>812 多分、リンカでバイナリのファイルを指定してやらないと
ダメなんでしょうけど、詳しくは他の方に。(w
MFCの場合はその辺が自動的に設定されていると思われ。
>>812 VC側から見ると、MFCは実装がどこにあるかわかってるけど、
君が作ったものはどこにあるかわからないから。
>>813 ,814
レスありがとうございます。
納得できました^^
またよろしくおながいします。。。
763です。このたびVisualC++.NETを再インストールしたところ問題が解決しました。 これで明日から安心してVC++を学べます。けっきょく詳しい原因はわかりませんでした。 板の皆様、問題解決にご協力いただき本当にありがとうございました。 いつか皆さんのように他人に教えられるくらいになってきます。 それでは失礼しました。ではでは・・・
817 :
新入社員@インターフェイス開発 :03/05/08 02:29
Cはちらっとだけやったことがある、新入社員です。 いきなり仕事を渡されて〜〜 わかんないからCと同じようにズラズラとmainに文を書こうとしたら、main()がないでやんの。 VC++の場合はどこから読めばいいんですか? 先輩に質問したら「一応、最初に読むインスタンスはあるけど、オブジェクト指向がわかってたら別にmainから関数を読まなくても、モジュールを読めばいいだけ」 見たいに言われたんですけど、オブジェクト指向ではモジュールを読んだらmain()に何かの値を返さなくてもいいんですか? モジュールからモジュールを読んでたら、いつ、どうやって終了するんだ? 見たいな疑問があるんですけど・・・・
818 :
デフォルトの名無しさん :03/05/08 02:50
>>817 Windowsプログラミングの場合は、WinMain() がエントリになります。
でもVC++の場合は、プロジェクトによっては WinMain もインクルード
ファイルの中に隠されてしまってるかも。
819 :
デフォルトの名無しさん :03/05/08 03:34
/*** *crtexe.c - Initialization for client EXE using CRT DLL (Win32, Dosx32) * * Copyright (c) 1991-1997, Microsoft Corporation. All rights reserved. * *Purpose: * Set up call to client's main() or WinMain(). * *******************************************************************************/
あのー。とってもくだらないんですけど。 ドッキングツールバーのつまみのとこが白くてかっちょ悪いんですけど なんかちがう感じにできないですか?
VCでコンパイルしてもエラーメッセージがでないんですがなぜでしょうか。 エラー1 警告0 などはでるんですが。 他のスレで親切な方に再インストしてみと言われたのでしてみたのですが、 JINT35.DLL、VBAR332.DLL、MSXBSE35.DLLというファイルが開くことができませんでしたとでました。 無視するとそのままインストールできるんですが、最後にシンボルファイルをセットアップするようにとでてきます。 それをセットアップしないとデバッカは呼び出し関数のコンテキストを決定できませんと・・。 セットアップするアイコンをクリックしてセットアップしようと思ったんですが このマシン上の対応するdllファイルとマッチしませんとでて、 最後にすべてのシンボルファイルはシステム上へ正しくインストールされませんとでます・・。 これはエラーメッセージがでないのに関係あるんでしょうか。 向こうのスレではスレ違いだったのでこっちにきました。 分かる方いましたら教えてくださいお願いします。
824 :
デフォルトの名無しさん :03/05/08 20:44
>>823 とりあえずOSとVCのバージョンを教えてください。
825 :
デフォルトの名無しさん :03/05/08 20:53
参考書でやってるDLL作成の項での質問です。 VC6以前で「新規作成」→「Win32 Dynamic-Link Library」→「シンボルをエクスポートするDLL」と なっているものは.NETではどうやればよろしいのでしょうか? 「新規作成」→「MFC DLL」とは思うのですが、その後の 「DLLの種類」でどれを選べばよいのかがわかりません。 アドバイスよろしくお願いします。
>>824 OSはXP
VCのバージョンは6.0です。
827 :
デフォルトの名無しさん :03/05/08 23:59
VC6で質問させてください。 あるポインタに構造体を連続して連結コピーする方法を教えてください std::vector<stScreen4_1> _stScreen4_1; LPDIRECT3DVERTEXBUFFER8 pVB; void* pVertices; if( FAILED( pVB->Lock( 0, sizeof(stScreen4_1)*_Ten, (BYTE**)&pVertices, 0 ) ) ) return E_FAIL; //イメージとしてはこんな感じの事がしたいのですがコンパイルできません(´Д`) for (i=0;i<_Ten;i++){ memcpy( pVertices+sizeof(stScreen4_1)*i ) ,&_stScreen4_1.at(i) ,sizeof(stScreen4_1) ); } stScreen4_1 は構造体宣言されています。 こうすると void*が型宣言されていないとでます。 かといってvoid* pVertices;を stScreen4_1* pVertices 代えると危険な香りがします。 なぜなら構造体の要素数が増えたり減ったいするからです。(大丈夫なのかなぁ?) 分かる方、アドバイスお願いします。
>>823 まずなによりも、もうちょっと自分のやった手順と結果をきちんと
整理して説明できるようになった方がいい。
本題については済まないがよく分からない。
実はadministrator権限のないユーザーでやってるとか、
WindowsXP Home Editionだったとか…?
>>827 コンパイラがやってることとは違うかもしれないけどこんな感じかな?
pVertices + sizeof(stScreen4_1)*i ) という式だと、
pVertices に (voidのサイズ(!) × sizeof(stScreen4_1)*i ) )を足そうとするが、
voidのサイズなんてものは無いので困る、と。
BYTE* pVertices;
にしてみたらどうだろう?
829 :
デフォルトの名無しさん :03/05/09 00:19
>>828 先生! ありがとう!うまくいきました。
1時間はまってました 感謝感激です。
830 :
新入社員@インターフェイス開発 :03/05/09 00:29
>820 そのサイトを見るたびに俺は猫以下なのかって鬱になるんですけど。
そんなことはないから安心汁 猫未満
832 :
デフォルトの名無しさん :03/05/09 09:29
先生教えて! 1500以上のポイントのポリゴンを印刷するコードを書きました。 この処理は動的DLL内で行っています。 しかし無茶苦茶遅いのです。約7秒も掛かる。 試しに静的DLL内で行ってみると処理に1秒も掛からない。 因みにデバッガで Polygon(hdc, ppoint, npoint); 関数のみ計測したのです。 こんなもんなのでしょうか? なんか特別なお呪いが必要なのでしょうか??
それ以前に静的DLLというのが意味不明
834 :
デフォルトの名無しさん :03/05/09 09:49
>>833 あぅ、、、
以下の意味と捉えてください。
静的DLL=MFC 拡張 DLL
動的DLL=MFC と動的にリンクするレギュラー DLL
お願いします。
静的はスタティックリンクのことじゃなかったっけ?
836 :
デフォルトの名無しさん :03/05/09 10:17
ひぇ〜ごめんなさい。 静的DLLをMFC拡張DLLに読み直してください。
837 :
デフォルトの名無しさん :03/05/09 17:59
http://member.nifty.ne.jp/~masumoto/embed/wio/ のラッパクラスCWioを使って組んでるんですが、
いまいち使い方がわかりません…
公開メソッドにおいて
m_wio.ReadPort(BYTE &,Word);
との記述があり、まんま呼び出して使おうとしてるのですが、、
BYTE &←この&はいったいどういった意味なのでしょうか?
BYTE byte;
m_wio.ReadPort(byte,0x2b);
といった記述で実行してるんですが、とりあえずエラーは吐かないんですが、
肝心の実行結果が思い通りに出ません…
WIN上で直接I/O叩くのはあまり行儀よくないらしいですが、
もしよろしければ教えてください…
838 :
デフォルトの名無しさん :03/05/09 18:20
マジで初心者丸出しの質問で申し訳ないんですが、ウィンドウの分割をしたいんですが 横に分割はできるんですが縦に分割ができません。 縦に分割する方法はありますか? ディスプレイが横長のノートPC使ってるんで縦に分割できるとありがたいんです。
>>838 バージョンとかも書いてないからよくわからんが、
マニュアルみればいいんとちゃうん?
それとも割れ厨ですか?
そんな、手取り足取りメニューのコマンド1つ1つをすべて解説したマニュアルなんて パッケージについてくるわけないじゃないですか。 ツールバーのウィンドウに、横分割しかないので縦分割はできないのかな、と思ったんです。 バージョンはVS.NET アカデミックです。 これは書いてなかった私の落ち度です、すいません。
スレ立てるまでもない質問スレいってきます。 おさわがせしますた。
843 :
デフォルトの名無しさん :03/05/10 11:38
今、職場で.netって使われてますか? それとも6.0ですか? これから言語を買おうと思うのですが、6.0は発売終了で手に入らなくて.netしか売ってない・・・。 どうしよう。 .netだけで勉強しても差し支えないですか?
まず言語の勉強以前に、製品を比較する勉強が先 当たり前に身に付いているはずのことを いまさら勉強しなければならない時点で、 人生をやり直した方が良さそうだが
845 :
デフォルトの名無しさん :03/05/10 11:51
>>844 これからプログラムを勉強するのです。
職場ではどうなってるのでしょうか。
6.0は近いうち.NETに取って代わられそうでしょうか。
>>844 言語の勉強以前に、製品を正しく比較できると思ったら大間違い。
847 :
デフォルトの名無しさん :03/05/10 12:01
いろいろ調べてるんだが、マジでわかりません。 .netだけで勉強して、6.0が使われてる職場で対応できるのでしょうか。
>>843 両方使ってる。
6.0が欲しけりゃVS2003 with MSDNを買ってMSDNで6.0を落とせ。
>>845 職場による
>>847 知らん
>>847 .netと6.0が両方使われている職場を考慮したまえ。
.NET買ってももMCを使わなければいいだけの話だろ アホか?
851 :
デフォルトの名無しさん :03/05/10 13:25
そのMCというものが、.NET特有の機能のうちのひとつだということですか? 6.0+MCの機能≒.NET ですか?
852 :
デフォルトの名無しさん :03/05/10 14:28
プログラム実行時に、無限ループを任意で抜け出して(ボタンかなんかを設定して)、 次のプログラムに進むことはできますか? たとえば、円周率を求めてる途中でボタンを押したら、そこまで求めた 値を使って円の面積を求めるとかです。
raiseでシグナルを送る
>>852 マルチスレッドを使うとかそういうのじゃねーの?
GetPriorityClassでプロセスのハンドルが必要ですが 自身のプロセスの場合はwinmain関数の引数にあるhInstanceが プロセスのハンドルになるんでしょうか?
CStringクラスを利用するときについて、 int型をLPCTSTR型に変換は a.Format("%d",〜); でできますが、その逆の LPCTSTR型をint型に変換 はどうやるんでしょうか? 自分で関数作るしかないですか?
atoi
_ttoi
860 :
デフォルトの名無しさん :03/05/11 06:36
くだ質で流されてしまったのでこちらで質問させていただきます。 現在VC++.NETを使って勉強しています。 ですが、参考書などは.NET以前(VC++5〜6)のものが多く、例題通りにできないこともしばしばです。 それで質問なのですが、.NETは6以前のものをすべて含んでいると考えてもよろしいのでしょうか? .NETになってから一気にプロジェクトの作り方などが変わっているので疑問に思いました。 一応6も持っているので6以前の参考書では6を使った方がイイ、などとかはありますか? .NETと6以前は別物と考えた方がいいのでしょうか。
なんで勉強段階の人が6と.NETの両方持ってるんだ? 6は何の為に持ってたの?割れ物?
>>860 MS好きなら.NET使えばいいじゃん。
勉強で.NET持っていてわざわざVer6つか必要もないと思うが。
864 :
デフォルトの名無しさん :03/05/11 13:16
文字をTextout関数で書きたいんですけど 色を指定することはできないのでしょうか・ 今のところ黒でしか表現できなくて・・ SelectObject関数を使うのでしょうか
>>864 文字はSetTextColor、背景はSetBkColor。
>>863 ありがとうございます。
860で書いた通り、ちょっと例題通りにいかなかったりで勉強がしにくかったので、
ver6を使った方が効率いいのか、などと思ったもので。
今後のためにも.NETで慣れて行こうと思います。
>>861 6を手に入れたのが2000年初期でして、
その時はゲームを作りたく、知り合いに聞いてみたところVCで簡単に作れるぞ、と。
それで当時高校生だったからアカデミックを手に入れ、VCの本を買い、勉強を始めたところ、
3日で挫折。そりゃC,C++もできなきゃサパーリ。
PC関係ではない専門学校へ進んだのですが、中退し、去年の暮れ近くから
Cの勉強を本格的に始めたワケでして…現在VCをば。
869 :
デフォルトの名無しさん :03/05/11 15:43
アカデミックバージョンだと、シェアウェアとして公開できないのですか?
>>867 そんなレベルなら6の参考書は6でやっとけ。
>>869 大丈夫
そのレベルの質問をしている時点で、
レジストしてもらえるソフトを作るのは不可能だから、悩む必要など無い
>>869 安心汁!
誰もお前が作ったソフトになんかレジストしないから。
874 :
デフォルトの名無しさん :03/05/11 16:03
アカデミックバージョンだと、シェアウェアとして公開できないのですか?
875 :
デフォルトの名無しさん :03/05/11 16:04
老いた頭の回転の悪い貧乏リーマンは先が無くて大変だな。
876 :
デフォルトの名無しさん :03/05/11 16:04
土方として、どうやって生活していこうと思ってるんだ?あ?
>>874 むかしはできなかってkど、今は制限なしだよ。
アカデミック版でもOK!
>>874 大丈夫
そのレベルの質問をしている時点で、
レジストしてもらえるソフトを作るのは不可能だから、悩む必要など無い
>>874 安心汁!
誰もお前が作ったソフトになんかレジストしないから。
デジャブ?!
デジャヴ
ヒデブ
883 :
デフォルトの名無しさん :03/05/11 17:28
OSのファイル/ファイルシステムに拡張情報を埋め込むことって できないものですかね。 特にmp3などの管理を想定しているのですが、漢字ファイルネーム の他に、ふりがな情報を埋め込めると管理や検索が楽になると 思うんですよね。他にはmp3に限りませんがCRC情報なども管理 できるといいと思うのですが。 ファイルのお尻に埋め込むことも可能だと思いますが、これだと Winampなんかで再生できるのかどうか。各フォルダに隠しファイル を置いて、管理する方法も考えてみましたが、エクスプローラで ファイルを移動させたときに整合性を取るのが面倒だなと。 なんか良い方法ないもんですかねぇ。
mp3のフォーマット自体に情報を埋め込むためのタグがある
>>883 IPropertySetStorage
IPropertyStorage
おせてくださーい! シェルでDSWファイルをダブクリするとVCが立ち上がりますが、既存の VCが閉じられてしまいます。別のプロセスとして立ち上げたいのですが 方法はあるのでしょうか?
889 :
名無し@沢村 :03/05/11 19:56
>>888 ヌヒよ、VCを立ち上げてからプロジェクトを開けばいいだけだと思うが
沢村に教えてもらうとは… プログラムをやめることを考えた方がいいかもよ
>>889 シェルからじゃ無理なんですかね。
オプションで「別のプロセスとして起動する」とかありそうな
気がしたのですがなさそうなので。。。
あるプロジェクト内で作ったクラスを、また別のプロジェクトで利用するには、 どんな手順でやればできるのでしょうか?
>>892 クラスのcppとhをその別のプロジェクトに含めれば良いだけじゃん?
894 :
デフォルトの名無しさん :03/05/11 20:40
>>888 =
>>891 当方、Win98・VC6ですが、以下のようにして出来ました。
(なんで出来るのかは理由はわかりませんが)
1)エクスプローラーでメニューから[表示]-[フォルダオプション]を選択
2)[ファイルの種類]のタブを開く
3)リストから「プロジェクトワークスペース」というのを選択して[編集]ボタンを押す
4)アクションの「MSDEVで開く」を選択して[編集]ボタンを押す
5)[DDEを使用する]のチェックを外す
※注意
チェックを外すと、デフォルトの文字列が消えてしまいます。
一応メモっておいてから外してください。
っていうか、自分が元に戻せなくなってしまいました
「DDEメッセージ」
「アプリケーション」
「DDEアプリケーションを実行していないとき」
「トピック」
のデフォルトの文字列を教えてください。
(;´Д`)…
897 :
デフォルトの名無しさん :03/05/11 20:49
VC++.NETはC99に対応していますか?
2003は対応してる
マテゴルァ-
>>888 ! /\
ヽ(`Д´)ノ \/\
(894) \/\
/\< ヽ \ / \/\
/ \ | \ |\ / \/\
|\ / .| \ |\ / \ /\
/ \ \/ | \ |\ / \/\
/ \ | .| ( ´_ゝ`)フーン \ |\ / \/\
|\ /| | ./ (∩∩ ) \|\ / \
| \ //\ |\ /| \ / \
| |/ \ | \ / .| ウワァン!/\ >
| \ /| | | | ヽ(`Д´)ノ / \ / .|
| \ //\ | / (888) \ \ / |
| |/ \ /\ / < ヽミ3 \ /| / |
| \ /| /\/ \ \ /| / |
| \ //\/ \ \ /| / |
| |/ \ \ / | / |
| \ \ / | / .|
| \ /| / .|
| \ / |
| .| |
2002年発売の製品なのに1999年の規格に対応していないんだ(;´Д`)
>>894 どうもありがとう。
僕のはXpなのですが同じようなダイアログが出ました。
下がDDEを使うにチェックが付いているときの状態です。
結果はまた報告しますネ。
すんまそーん。
・DDEメッセージ(D);
Open("%1")
・アプリケーション(C);
msdev
・DDEアプリケーションが実行していないとき(N)
・トピック(T)
system
>>902 戻ったよ。これで、おあいこ。
一応出来るけど、他の影響があるかもしれないから
元に戻せるようにしておいた方がいいですよ。
>>893 その含め方なんですが、cppとhを利用したいプロジェクトのフォルダ内に
入れた後がわからないんです。
例えば、A.cppとA.hというのがあってそれを、B.cppで利用したいときは、
B.cppで、#include "A.h"と書くだけでは、CAクラスはまだ使えないですよね?
プロジェクト -> プロジェクトへ追加 -> ファイル
>>894 お手数かけさしてしまってすんませんでした。m(__)m
VS6.0とVS2002が両方入ってて今設定中です。
(楽しいAAも)どうもありがとう。。。
909 :
デフォルトの名無しさん :03/05/11 22:31
VC++でTCPを利用して通信をしようとしています。 socket(PF_INET, SOCK_STREAM, 0); でソケットを生成してread待ちするサーバを作成しているのですが、 相手先をANYにしている為相手のIPアドレスがわかりません。 受信したデータのIPアドレスを知る方法はありますか? 又、VCでソケット通信するコーディングは合っていますか? もっと単純にTCPで通信する方法などあったら教えて下さい。
getsocknameとか。
>>910 これって自局IPアドレスを取得するだけではないのですか?
912 :
デフォルトの名無しさん :03/05/11 23:30
WinMXの検索ウィンドウのリストビューって+クリックで展開できますよね? あれどういう方法で実装するんでしょうか?
getpeername
別にMXじゃなくても展開できるだろ
>>913 どうもありがとう。
でも、なんか調べるとCSocket(?)というのがあるみたいですね。
これは使い易いのでしょうか?
当方UNIX系のソケットプログラミングしかしたことないもので…。
MFCのCSocketなら、捨てとけ。
エディットボックスm_ed1内に記入された値を16進データとして吸い出すにはどうしたらよいのでしょう?? BYTE dat=static_cast<BYTE>(m_ed1) でいいんですかね??
BYTE型に16進などという定義はない
920 :
デフォルトの名無しさん :03/05/12 16:25
std::runtime_errorを派生したいんですが、 なんかコンパイルエラーの嵐です。 サンプルきぼんぬ。
921 :
デフォルトの名無しさん :03/05/12 16:26
922 :
デフォルトの名無しさん :03/05/12 16:33
Ctrl+Alt+Delを押して出るタスクマネージャのアプリケーションに表示されるような 項目一覧を取得したいのですが、どうすればいいのでしょうか? EnumWindowsとEnumWindowsProcを使用して試してみると、 なんか予想外にたくさんのウインドウが列挙されて困っています。
923 :
デフォルトの名無しさん :03/05/12 17:00
#include <stdio.h> #include <ctype.h> #define UP_T 0 #define LOW_T 1 #define DIG_T 2 #define PUN_T 3 int main() { char *str = "HkJn(4Nk59gL/=s"; char buf[4][20], *bp[4]; bp[UP_T] = buf[UP_T]; bp[LOW_T] = buf[LOW_T]; bp[DIG_T] = buf[DIG_T]; bp[PUN_T] = buf[PUN_T];
924 :
デフォルトの名無しさん :03/05/12 17:01
printf("初期値:\t%s\n\n", str); for (; *str; str++) { if (islower(*str)) *bp[UP_T]++ = *str - 'a' + 'A'; else if (isupper(*str)) *bp[LOW_T]++ = *str - 'A' + 'a'; else if (isdigit(*str)) *bp[DIG_T]++ = *str; else if (ispunct(*str)) *bp[PUN_T]++ = *str; } *bp[UP_T] = '\0'; *bp[LOW_T] = '\0'; *bp[DIG_T] = '\0'; *bp[PUN_T] = '\0'; printf("大文字:\t%s\n", buf[UP_T]); printf("小文字:\t%s\n", buf[LOW_T]); printf("数字:\t%s\n", buf[DIG_T]); printf("記号:\t%s\n", buf[PUN_T]); return 0; } 突っ込みどころがあれば突っ込んでちょ☆
925 :
デフォルトの名無しさん :03/05/12 18:03
>>925 レスありがとうございます。
プロセスではなくタスクマネージャのアプリケーションタブの方の一覧を
取得したいのです。
具体的に言えば、Windowsを稼動させるといろいろなプログラムが起動、常駐すると
思いますがその中でアプリケーションとして稼動しているものです。
そのアプリケーションのWidowTextと窓ハンドルを取得したいと思ってます。
どうやればいいのか、、、。・゚・(ノД`)・゚・。
少し前のMSDNmagazineに載ってたような気がするけどもう書店には無いだろうしなぁ。 ウィンドウを列挙して、ある条件を満たすものだけ抜き出す。 条件は可視で、タイトル文字列数が0でなく、オーナーを持ってなく、とあとなんだっけ。
>>926 目的のウインドウのウインドウクラスや周辺特徴の確認
一致するウインドウを検索
そしてウインドウ配下のコントロールへウインドウメッセージを送りアイテムを取得
文字列を受け取る場合はプロセス間メモリ共有を使う必要がある
>>927-928 レスありがとうございます。
なるほど、一発で列挙するAPIなどはなく、列挙したウインドウの中から搾ると
いうやり方なのですね。ありがとうございました。
930 :
デフォルトの名無しさん :03/05/12 23:21
窓ハンドルを取得して画面に表示しました。 そしてボタンを押すと、その窓ハンドルの対応するウインドウを最前面に出すように しようと思っています。 画面に表示された窓ハンドルをCString文字列として取得しました。 ::BringWindowToTop(HWND hWnd)を使用したいのですが、 CString文字列で取得した窓ハンドル(200CCとか)を HWNDにするにはどうすればいいのでしょうか?
文字列を数値に直せば?
933 :
デフォルトの名無しさん :03/05/13 15:30
初歩的な質問です <include>"tt.h" std::vector< rFont > cFONTTYPE; std::vector< rText > cTEXTOBJ; cTEXTOBJ[0].Init(&cFONTTYPE); //-------------tt.h class rFont { func() //略 } class rText :public classBase{ void* pFTYPE;// <----ここと public: void Init (void* pP )// <----;ここは }; どういう宣言をすればいいのでしょうか? rTextの関数の中でこういうことがしたいのですが....voidのままでは使えないし pFTYPE(2).func(); よろしくお願いします
934 :
デフォルトの名無しさん :03/05/13 15:41
935 :
デフォルトの名無しさん :03/05/13 15:42
ちょっと質問ですが、CStaticコントロールにラインとか描画できますか? ソースはこんな感じで書いてます。 CStatic *s = (CStatic *)GetDlgItem( IDC_STATIC ); CDC *cdc = s->GetDC( ); cdc->MoveTo( 0, 0 ); cdc->LineTo( 40, 15 ); 開発ツール:Microsoft eMbedded Visual C++ 3.0 開発環境:Windows98SE 動作環境:CASSIOPEIA PocketPC
>>935 拡張メタファイルを設定できるみたいだから図を拡張メタファイルにして
SetEnhMetaFile()で設定すれば(CEはしらんけど)
>>936 お答えどうもです。
SetEnhMetaFileの引数って静的コントロールに描画される拡張メタファイルのハンドルらしいのですが
何を設定すればいいのでしょうか?
>>936 CStaticの派生クラスを作って
そのOnPaint()をオーバーライドして描画とか。
940 :
デフォルトの名無しさん :03/05/13 16:08
SetTimer(111, 500, NULL) とした場合、プログラム終了、もしくはKillTimerが使われない限り ずっと500ミリ秒おきにWM_TIMERが送られてるということなんでしょうか?
941 :
デフォルトの名無しさん :03/05/13 16:17
942 :
デフォルトの名無しさん :03/05/13 16:27
クラスウィザードで例えばCStaticを継承するCStaticExなるクラスを作成した時に フォームにCStaticExを貼り付けるにはどうしたらいいのでしょうか?
>>937 固定の図形なら
>>936 でいいですが、動的ならだめです。
プログラムで拡張メタファイルつくるなら
CMetaFileDC mdc ;
HENHMETAFILE hemf ;
CClientDC dc(hwnd) ;
CRect rect(0, 0, 500, -500) ;
mdc.CreateEnhanced(&dc, NULL, &rect, "MyApp") ;
mdc.MoveTo( 0, 0 );
mdc.LineTo( 40, 15 );
hemf = mdc.CloseEnhanced() ;
こんな感じ。この例ではローカルにhemfを宣言してるけど
グローバルか、MFCならCxxxAppのメンバー変数にしたほうがよいです。
CxxxApp::InitInstance()の中でm_pMainWndを作った後に
CClientDC dc(m_pMainWnd) ;
でCreateEnhanced()に渡すdcを作ってメタファイルを作るのがいいタイミング。
CxxxApp::ExitInstance()をオーバーライドして
DeleteEnhMetaFile(hemf) でメタファイルを破棄する
リソースにメタファイルを含めることもできたはずだけどやり方忘れた。
>>943 ご丁寧にソースを書いていただき有難うございます。
早速試してみます!
>>944 忘れてたけど拡張メタファイルはマップモードが基本的にMM_HIMETRICなので
mdc.SetMapMode(MM_HIMETRIC) ;
がいるかも。rect(0, 0, 500, -500)の4つめがマイナスになってるのは
このせい、MM_HIMETRICにしないならプラスでもいいかも。
動作しているのに描画されないときはこのへんが原因になることが多い。
946 :
デフォルトの名無しさん :03/05/13 16:50
>>933 自己レス
void Init (std::vector< rFont >* pP )
こういう書き方ができるようです。
C++って偉大だな。
;
>>942 ヘッダでCStaticで宣言されているところをCStaticExに変える
949 :
デフォルトの名無しさん :03/05/13 18:01
>>948 ヘッダって貼り付けたいフォームのヘッダーファイルですよね?
CStaticはフォームに貼ってるのですが、CStatic宣言はないのですが・・
いつからC++は宣言が無くてもコンパイルが通るようになったんだ?
951 :
デフォルトの名無しさん :03/05/13 18:17
ヘッダのどの辺にCStaticの宣言があるか教えて下さい フォームに10個並べてるから定義も10個あるんですよね? 違います?
953 :
デフォルトの名無しさん :03/05/13 18:48
出力結果が 一つ目==>○ーーーーーーscanf()で 二つ目==>□ーーーーーーscanf()で ○+□=△ーーーーーーーー△は2進数で表示 を作りたいのですがサッパリです。 #include <stdio.h> int main() {
>>953 #include <stdio.h>
int main()
{
printf("一つ目==>○ーーーーーーscanf()で\n");
printf("二つ目==>□ーーーーーーscanf()で\n");
printf("○+□=△ーーーーーーーー△は2進数で表示\n");
return 0;
}
955 :
デフォルトの名無しさん :03/05/13 18:59
void main(void) { char x='A'; int a=5,b=32; printf("@",x); printf("%d+%d=(A)x\n",B) printf("%dC%d=%d\n",D); printf("変数%cの初期値は%dです\n",x+E,a); } 実行結果 変数xの初期値はAです 5+32=(0025)x 32%5=2 変数aの初期値は5です Eの答えがわかりません
よーし、俺がマジレスしちゃうぞ。 mainの戻り値の型はint
printf("%d+%d=%d\n",a,b,c); cを二進数で
#include <stdio.h> int main(void) { int a,b; printf("1つ目\n"); scanf("%d",&a); printf("2つ目\n"); scanf("%d",&b); printf("\n\t\t演算結果\n"); printf("\t\t%d + %d=%d\n",a,b,a+b); printf("\t\t%d - %d=%d\n",a,b,a-b); printf("\t\t%d * %d=%d\n",a,b,a*b); if( b==0 ){ printf("\t\t%d / %d0では割れません。\n\t\t%d %% %d0では割れません\n",a,b,a,b); } else{ printf("\t\t%d / %d=%d\n",a,b,a/b); printf("\t\t%d %% %d=%d\n",a,b,a%b); } return 0; } どうかえりゃ
959 :
デフォルトの名無しさん :03/05/13 21:19
Visual C++ .NETでの質問です。 「変数の追加」では配列は追加できないのでしょうか? でてくる画面で変数名の部分に test[30] と入れるとエラーになりますし、 変数の種類のところで int [30] とやりましたら一応は作成できたっぽいのですが、 コンパイル時に配列初期化失敗みたいなエラーになりました。 アドバイスお願いいたします。
960 :
デフォルトの名無しさん :03/05/13 21:49
VC++6.0とVC++.NET、どちらを買おうか迷ってます。 どうしたらよいでしょうか。
>>960 迷うと言うことは両方を比較検討したはずだが、
まず自分の調べた範囲を挙げてみてくれ
話はそれからだ
>>962 同意!
でも面倒だから.NET>960
あ、やっぱり今は買わないで2003買う。
全部買う。何でも買う。
966 :
デフォルトの名無しさん :03/05/14 00:28
>>959 STLを使おう
STLでぐぐれ
変数どころかクラスも追加できるよ。
.NET って良くしらないんだけどSTL使えるの使えないの?
>>966 そういう意味の質問じゃないと思うよ。IDEの使い方(または仕様)を聞いてるんだと思う。
968 :
デフォルトの名無しさん :03/05/14 02:26
C++を勉強しようと思い、.netを購入したまではよいが 一般的なテキストに書いてある構文を書きながら 覚えていきたいとおもっているのだが、起動させてから 何をどこに書けばいいのかわからん・・・・ こんな超初心者なオイラはどうすりゃいいんですか? 親切な皆さん、おすすめテキストやら解説サイトがあったら 教えてください。よろしくお願い致します〜
>>968 intとかelseとか入力すると色が変わるところがあるでしょ。そこに。
970 :
デフォルトの名無しさん :03/05/14 02:35
>>968 とりあえず新規作成で*.cppファイルを作って、
サンプルのプログラム打ち込んで、ビルドしてみたら
どうですか?
ビルドの際に、プロジェクトも自動生成されると
思ったけど。(VC++6.0の話)
971 :
デフォルトの名無しさん :03/05/14 02:36
>>968 とりあえず、参考書の購入でも検討してみては?
どれが適してるかは人それぞれだが、
個人的には林晴比古氏の著書とかがわかりやすいと思う。
973 :
デフォルトの名無しさん :03/05/14 04:08
>>968 嘘書くなアホ
マニュアル読め
購入したんだろ?
ワレザーは消えろ
セットアップガイドならあったけど、使い方を書いたマニュアルなんてあったかなぁ。 ちなみに6.0の話。
975 :
デフォルトの名無しさん :03/05/14 10:08
976 :
デフォルトの名無しさん :03/05/14 10:49
>>974 MSDNだからねぇ。
内容が多すぎて、逆に初心者には使いにくい。
977 :
デフォルトの名無しさん :03/05/14 11:00
スタンダードなら入門書ついてくるんじゃねーの?
>977 当方VC++.NETstanderdとVS.NETPro所持 どっちも中身は皆さんご存知の使いどころが微妙なポスターキットと 異様にインストールが長い五枚のCDROM。以上。
979 :
デフォルトの名無しさん :03/05/14 14:34
タン10個あってこのボタンのクリックイベントを1箇所で処理したいのですが どうやってやるのでしょうか?
カー、ぺっ。カー、ぺっ。 カー、ぺっ。カー、ぺっ。 カー、ぺっ。カー、ぺっ。 カー、ぺっ。カー、ぺっ。 カー、ぺっ。カー、ぺっ。 タン10個消去しました。
>>968 BCC5.5+BCC developer+猫でもわかるのサイト
で、プロジェクト設定をwinアプリにした上で
猫でもわかるのSDKコードをひたすら打ち込む
MFCは簡単なSDKで一通りのメッセージハンドラを
理解できたかなと思ってから手をだす
>>979 ON_CONTROL_RANGEとかON_COMMAND_RANGE
>979 ヘッダ afx_msg void OnBtnClicked( UINT nID ); ソース BEGIN_MESSAGE_MAP(..., ...) ON_CONTROL_RANGE(BN_CLICKED, IDC_BUTTON1, IDC_BUTTON10, OnBtnClicked) END_MESSAGE_MAP() ... void OnBtnClicked( UINT nID ) { switch ( nID ) { case IDC_BUTTON1: case IDC_BUTTON2: ... case IDC_BUTTON10: } }
984 :
デフォルトの名無しさん :03/05/14 16:30
もう調べるのも限界 SDKで、int型の数値を表示する方法教えて char型はhelloサンプルでくさるほどあるけど intはない、MFCだとOnDrawで、pDCでTextOutに渡す みたいなやり方してるけど int型はCStringでcharに変換てのもあったけど、やったら玉砕したし SDKで、ウィンドウにint i=10;のiを表示する簡単なコード教えて SDKで数値計算プログラムつくろうとしたら、ここでつまって まったく先に進めません・・・
>>984 僕もint型を表示する方法は知りませんが、文字列変換にて。
int i=10;char s[256];
sprintf(s,"%d",i);
TextOut(hdc,x,y,s,s(strlen));
988 :
デフォルトの名無しさん :03/05/14 18:27
CStaticってクリックイベントとれないのでしょうか?
990 :
デフォルトの名無しさん :03/05/14 20:41
VCでapiのpeekmessage()を使って押された、 キーコードを2文字以上を、 同時に取れる事で出来るんですか? また方法を教えていただけますでしょうか
>>988 通知のチェックいれるかSS_NOTIFY指定するか
昨日の夜ここに書き込んだものです。 バカにされて終わりだと覚悟していたのに・・ こんなに多くの人にアドバイスいただけて光栄です。 昨日は軽いノリで書き込んだのに今日は感激!! みなさん、ありがとう。これから頑張ります。
993 :
動画直リン :03/05/14 21:13
>>986 sprintfはよく使うから(存在を)覚えておくといいと思われ
995 :
デフォルトの名無しさん :03/05/14 23:02
MFCのダイアログベースで作成しています。VC++6.0 OnpaintとOnCtlColorを使用してOnpaintでビットマップの描画、 OnCtlColorでスタティックテキストの文字色を描画しています。 これをInvalidate();でコールしてやると、数分経つとハンドルエラーを起こします。 どうやらデバイスコンテキストのpDC.m_hDCが0クリアされているのが原因でアサート してるみたいですが、そうなる原因がわかりません。 どなたかアドバイスください。
996 :
デフォルトの名無しさん :03/05/14 23:19
>>986 MFCでのCDC関数使った場合は
それで問題ないんだけど
SDKだとあかんのです
SDKの場合のやり方教えて
次スレをたてないうちに埋め立てるぞゴルァ!!
おーーーー!!!!!!!!!!!!!
勝手にやれよ
は
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。