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


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

★初心者にVisual C++を教えるスレ★ Part22
501 名前:デフォルトの名無しさん :2006/01/14(土) 22:38:42
VC++.NETです
DLLを作成するプロジェクトから出力されたhoge.libを
別のプロジェクトで#pragma comment( lib, "hoge.lib")したのですが
『fatal error LNK1104: コンパイラは、ファイル 'hoge.lib' を開くことができません。』
になってしまいました・・・
環境変数LIBはちゃんと書き換えました、PCの再起動もしました
hoge.libのアクセス権が問題なのかと思い同じソリューションで動かしていた
DLLを作成する側のプロジェクトをソリューションから削除して再起動しましたが、
同じエラーがやはり発生してしまいます。
どなたかご教示お願いしますです

502 名前:デフォルトの名無しさん :2006/01/15(日) 00:10:16
>>501
もう1度絶対パスで指定してみては?

503 名前:デフォルトの名無しさん :2006/01/15(日) 02:44:53
>>502
絶対パスのときはうまくいきました。
環境変数の書き方は
D:\Hoge_a\Lib\;D:\Hoge_b\Lib\;
見たいな書き方でいいはずですよね…
あ、OSはXPです。

504 名前:デフォルトの名無しさん :2006/01/15(日) 07:52:37
>>503
パスの最後の円マークはいらんようような希ガス

505 名前:デフォルトの名無しさん :2006/01/15(日) 11:03:22
ツール>オプション>project>VC++ディレクトリ>ライブラリファイル
でいけました
LIB書きかえるだけじゃだめなんですね・・・

506 名前:デフォルトの名無しさん :2006/01/15(日) 13:34:51
classって便利?

507 名前:デフォルトの名無しさん :2006/01/15(日) 15:51:24
>>506
そんなこと聞いてるようじゃ便利には使えない。

508 名前:デフォルトの名無しさん :2006/01/17(火) 07:20:05
>>507
なぜ?

509 名前:デフォルトの名無しさん :2006/01/17(火) 08:10:08
>>508
そんなこと聞いてるようじゃ便利には使えない。

510 名前:デフォルトの名無しさん :2006/01/17(火) 15:26:34
ぜな?

511 名前:デフォルトの名無しさん :2006/01/17(火) 16:18:13
ぜ〜な、ぜ〜な、ぜ〜ながっ効くー

512 名前:デフォルトの名無しさん :2006/01/19(木) 20:41:58
ビットマップファイルのRGB値を見るような関数ってあるんでしょうか?
教えてください。

513 名前:デフォルトの名無しさん :2006/01/19(木) 20:57:29
あるよ。

514 名前:デフォルトの名無しさん :2006/01/19(木) 21:08:38
ありがとうございます。
できれば具体的な関数を教えてもらえないでしょうか。
ぐぐってみたり、ランゲージリファレンスを調べてみたんですが、
わかりませんでした。
宜しくお願いします。


515 名前:デフォルトの名無しさん :2006/01/19(木) 23:29:46
http://www.google.co.jp/search?num=50&hl=ja&q=%E3%83%93%E3%83%83%E3%83%88%E3%83%9E%E3%83%83%E3%83%97+%E3%83%94%E3%82%AF%E3%82%BB%E3%83%AB+%E8%89%B2+%E5%8F%96%E5%BE%97&lr=lang_ja

516 名前:デフォルトの名無しさん :2006/01/19(木) 23:52:09
ありがとうございます。
グーグルの検索も参考になりました。
本当にありがとうございました。
がんばってRGB値ゲッツします。

517 名前:デフォルトの名無しさん :2006/01/20(金) 01:05:39
常駐するDLLって作れるのでしょうか。
と言うのは、DLLに定義した関数をコールしたときに、
内部でrand()を使いたいのですが、どこでsrand()して
よいか分からないので、DLLを常駐プログラムのように
できれば解決するのかなと思ったからです。

518 名前:デフォルトの名無しさん :2006/01/20(金) 01:06:33
関数の頭でsrandすりゃいいじゃん

519 名前:デフォルトの名無しさん :2006/01/20(金) 01:11:19
>>518
srand(time(NULL))とかsrand(GetTickCount())とかは
入れてみたのですが、1秒以内や1m秒以内にDLLが
呼ばれるとrand()の値が同じになってしまうので、それを
なんとか回避したいのです。

520 名前:デフォルトの名無しさん :2006/01/20(金) 01:24:46
よく分からんがstatic付けたらどうなる?

521 名前:デフォルトの名無しさん :2006/01/20(金) 01:26:43
>>520
本当に分かっていない。

522 名前:デフォルトの名無しさん :2006/01/20(金) 01:28:32
>>520
色んなプログラムから呼ばれるDLLなので(?)
関係なさそうです。

523 名前:デフォルトの名無しさん :2006/01/20(金) 01:33:52
つまり複数のアプリケーションから呼ばれるわけ?
DllMainでGetTickCountでもして乱数の種を一回だけ設定すればどう?


524 名前:デフォルトの名無しさん :2006/01/20(金) 07:21:58
>>523
やってみました!
結局プロセス毎にDllMainが呼ばれてしまうので、
srand()が1回だけ、というのはムリみたいです。

MMFを使ったりとか別の方法を考えてみます。

525 名前:デフォルトの名無しさん :2006/01/20(金) 08:52:50
>>524
おまえは一ミリ秒毎にプロセスからアタッチするのか?

526 名前:デフォルトの名無しさん :2006/01/20(金) 12:43:36
もうQueryPerformanceCounter()でも何でも好きなもの使え。

527 名前:デフォルトの名無しさん :2006/01/20(金) 18:01:16
>>524
DLLでは全プロセスで共有されるグローバル変数を作れる。

528 名前:デフォルトの名無しさん :2006/01/20(金) 18:22:16
別々のプロセスで同じ乱数系列になるのが不都合な理由がわからん。
そんな変わったことしたいなら自分で乱数関数作れば?

529 名前:デフォルトの名無しさん :2006/01/20(金) 19:14:21
乱数 = 適当な値でありゃいいんだから、
各プロセスが、srand(::GetTickCount()) すりゃ事足りると思うんだが。

530 名前:デフォルトの名無しさん :2006/01/20(金) 19:46:15
#pragma data_seg()
SECTIONS SHARED
辺りが肝かも。

531 名前:デフォルトの名無しさん :2006/01/21(土) 01:57:04
なんだ。srandを一回だけしか呼びたくないのか。


532 名前:デフォルトの名無しさん :2006/01/21(土) 09:39:02
>>528
マシンスペックが高くなったら動かなくなるかもしれない
プログラムで満足なあなたは気にしなければいいでしょう。

533 名前:デフォルトの名無しさん :2006/01/21(土) 10:32:55
>>532
イミフメイw

534 名前:デフォルトの名無しさん :2006/01/21(土) 10:59:39
>>532
そんなの作れるのか
ぜひ見せてほしい

535 名前:デフォルトの名無しさん :2006/01/22(日) 16:58:25
>>533-534
え?まじで言ってる?

536 名前:デフォルトの名無しさん :2006/01/22(日) 18:06:35
>>535
まじなのでばかな>>533>>534>>536に説明してやってください。

537 名前:534 :2006/01/22(日) 18:45:56
>>535
>マシンスペックが高くなったら動かなくなるかもしれないプログラム
まじです。どうやったら作れるのか教えてください。お願いします。

538 名前:デフォルトの名無しさん :2006/01/22(日) 19:00:14
ttp://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/mt.html
乱数って言えば、コレ使ってみてる?


539 名前:デフォルトの名無しさん :2006/01/22(日) 19:55:22
>>538
使ってみない。

>>537
教えてやってもいいけど、「そんなのこうすればいいじゃん」って
反論はなしだぜ。お前はどうやったら作れるのか、って聞いてるんだから。


ここまでヒントを出してもお前には作れないか?

540 名前:デフォルトの名無しさん :2006/01/22(日) 19:56:33
>>537
アホ?Sleepでムリヤリタイミングずらして動かしてるプログラムとか
srand(GetTickCount())と1ミリ秒以上かかることを前提とした
ロジックの組み合わせとか、考えりゃいくらでもできるでしょ。

541 名前:デフォルトの名無しさん :2006/01/22(日) 20:53:59
>>540
Sleepのほうはなんとなくだが理解できる。

でもsrand(GetTickCount())のほうはやっぱりわからない。
DllMainに置けば十分としか思えない。
そんな頻繁にロード・アンロードされるほうこそ異常だ。

542 名前:デフォルトの名無しさん :2006/01/22(日) 22:34:58
そもそも複数のプロセスで同じ乱数系列になることの不都合が分からん

543 名前:デフォルトの名無しさん :2006/01/22(日) 22:58:26
528の指摘もそれだったんだが、532は真性のアフォなので噛み合わんわけだ
もう放置しようぜタコな質問しておいて上から物を言える奴にまともなやつは居らん

544 名前:デフォルトの名無しさん :2006/01/23(月) 02:54:45
std::vector v;の中身をウォッチウィンドウで見るには
v._Myfirst,5
とやればいいと知ったのですが、mapやsetも同じように
簡単に見る方法はないでしょうか?

545 名前:デフォルトの名無しさん :2006/01/23(月) 22:34:14
>>541
どしてDllMainに置けば十分なの?

546 名前:デフォルトの名無しさん :2006/01/23(月) 22:35:47
>>543
>>534のように話をすりかえた人に丁寧にご対応して差し上げているわけです。
あなたはただ単に話しについていけていないようなので、
書き込むのをやめるのは正解です。

547 名前:デフォルトの名無しさん :2006/01/23(月) 22:49:56
VCってプロジェクト配下のディスク容量があまりにも大食いするじゃないか。
それにIDEでデバッグ実行できずに固まるし。
自分の会社のOS上の製品なのに、何でこんなぼろい物になるのかね。
他のどのベンダーよりも、OSを開発した会社自身が一番OSを知り尽くしてるから、
一番まともな物を作れて当たり前なのに。

548 名前:デフォルトの名無しさん :2006/01/23(月) 23:02:54
>>547
ここで言っても意味ないですけど。同意すればいいの?

549 名前:デフォルトの名無しさん :2006/01/23(月) 23:05:28
ただの一時ファイルだから気にするな
パソコン初心者スレじゃないんだし

550 名前:デフォルトの名無しさん :2006/01/23(月) 23:08:09
>>547
自社のOSを知り尽くしていないと作れないようなソフトを自社で作ると
独禁法的に司法省から睨まれてしまうんだろう。
15年以上前からそう言われている。

MSのソフトはある程度のバグをわざと入れているとしても全く驚くに値しないね。

551 名前:デフォルトの名無しさん :2006/01/23(月) 23:13:36
ステップ実行中にOSごと飛ぶのもわざとか。やるな。

552 名前:デフォルトの名無しさん :2006/01/24(火) 00:01:03
>>550
同意すればいいの?

553 名前:デフォルトの名無しさん :2006/01/24(火) 00:09:34
>>546
そりゃそうだよ脳タリンの糞話についていってやる気は無いスキにしろや

554 名前:デフォルトの名無しさん :2006/01/24(火) 00:24:21
>>552
同意しなくていいからC++ BuilderかDelphiに移行すればいいのかも試練。

555 名前:デフォルトの名無しさん :2006/01/24(火) 00:48:46
>>553
書き込むのをやめるのが正解だったのに。本格的な脳タリンさんですねw

556 名前:デフォルトの名無しさん :2006/01/24(火) 01:13:11
VC++.netのダイアログベースで画像を撮影するソフトを作っています。
現在、撮影ボタンを押すとカメラに写っている画像を1枚だけ保存します。
これを、ボタンを押したら1秒毎に自動で保存し、停止ボタンを押したら、
保存するのを終了させたいと思っています。
しかし、ボタンを押して自動保存し、停止を押すと終了のしかたがわかりません。
どうやったら、いいでしょうか?

557 名前:デフォルトの名無しさん :2006/01/24(火) 01:25:32
>>556
タイマー使う。
詳細はぐぐれ。

558 名前:デフォルトの名無しさん :2006/01/24(火) 02:19:01
VC2005Expressでステップ実行にてスレッドを使っているプログラムをデバックすると
高頻度でハングアップしたような状態になります。
解決方法はありますでしょうか?
OSはMCE2002sp2です。
コード自体に問題があるのかと思い簡単なものにして見たのですが
やはり同じ現状が起きました。スレッドを使用しないプログラムでは
まったくその現象は起きないようです。
スレッドは_beginthreadexを使用してます。

解決方法があればよろしくお願いします。

559 名前:556 :2006/01/24(火) 04:18:27
言葉足らずですみません。
タイマーを使えば1秒間ずつ、というのはわかるのですが、
停止を押すまで同じ処理を繰り返す方法、および停止させる方法が
わからないのです。
whileなどでループさせると、ループしている間はボタンが押せない状態
となってしまいますし・・・・

560 名前:デフォルトの名無しさん :2006/01/24(火) 07:34:18
そのボタンで、タイマの起動、終了をすればいいんだろ。
whileでループさせる必要は無い。

561 名前:デフォルトの名無しさん :2006/01/24(火) 08:29:48
タイマーが解って無い希ガス

562 名前:デフォルトの名無しさん :2006/01/24(火) 08:33:54
>>556
SetTimer

563 名前:デフォルトの名無しさん :2006/01/24(火) 19:27:34
>>545
srandは1度だけ呼べば良い。
DllMainはDLLのロード時に呼ばれるからちょうど良い。

564 名前:デフォルトの名無しさん :2006/01/24(火) 19:42:34
すみません。今学校でVC.net使ってる房ですが、win32プロジェクトで作った
データ上で(画像切り替えとかそんなレベル)Formで作った別のプログラムを
別ウィンドウで起動させたいのですが、呼び出し?とかリンク?の仕方がわかりません
何冊か参考書を見たのですがわからないので詳しい方、ご教授お願いできませんか?

565 名前:デフォルトの名無しさん :2006/01/24(火) 19:53:10
何冊も参考書みてわからない奴に教える自身は無い。

566 名前:デフォルトの名無しさん :2006/01/24(火) 20:06:21
何冊か見てわからない。というより、「該当する項目がわからない」
もしくは「そう言った技術が乗ってない(確認できた範囲で)くらい
初級の本」だったりするので、お手数ですが、ご教授お願いします


567 名前:デフォルトの名無しさん :2006/01/24(火) 21:49:27
学校で習ってるんなら先生に聞けよ。

568 名前:デフォルトの名無しさん :2006/01/24(火) 21:57:30
外部プログラムの起動でいいのか?
それだったら簡単だから誰か教えてくれるはず。

569 名前:デフォルトの名無しさん :2006/01/24(火) 22:04:49
>>564
CreateProcessかな

570 名前:デフォルトの名無しさん :2006/01/24(火) 22:17:12
COM interopと言う話なのかもしれない

571 名前:デフォルトの名無しさん :2006/01/24(火) 23:15:14
>>563
アホか

572 名前:デフォルトの名無しさん :2006/01/24(火) 23:42:30
アホか
って言うのは簡単だけど具体的に何がアホなのかを説明しないのは
やっぱりほころびが出るのを恐れてるから?


573 名前:デフォルトの名無しさん :2006/01/25(水) 00:00:06
>>572
この場合さすがに説明するのもアホらしいってだけじゃないかな?

574 名前:デフォルトの名無しさん :2006/01/25(水) 01:20:17
VCの右クリック−>定義位置の表示などで使う、.bscファイルをコピーするプログラムが作りたいのですが、
読み込むことすら出来ません。
普通のテキストとは違うような感じなんのですが、
何かヒントをいただけないでしょうか?
やりたいことは、単にコピーの練習なのですが。
間違っているだけで、普通にできるのでしょうか?

int c;
if ((fp = fopen("E:\\Exercise\\BDDownVer\\Debug\\BDDownVer.bsc", "r")) == NULL) {
printf("file open error!!\n");
exit(1);
}
if((fout = fopen("E:\\Exercise\\BDDownVer\\Debug\\out.bsc","w")) == NULL){
printf("file open error!!\n");
exit(1);
}
while (c = fgetc(fp) != EOF) {
fputc(c,fout);
}
fclose(fp);
fclose(fout);

こんな感じでやってみたのですが・・・。

575 名前:デフォルトの名無しさん :2006/01/25(水) 02:13:46
MSDNに加入するとCD-Rが送られてくるけど
オンラインドキュメントと内容は違うの??

576 名前:デフォルトの名無しさん :2006/01/25(水) 02:31:08
>>574
バイナリモードで開け。
あと、もしかしたらプロジェクトを開いている間はVC++がファイルを排他アクセスしていて、
他のプログラムは読み書きできないようになっているかもしれない。

577 名前:デフォルトの名無しさん :2006/01/25(水) 04:12:10
>>574
> while (c = fgetc(fp) != EOF) { 
これをもう一度確認すること。


ちなみに CopyFile でぐぐると幸せかもしれん。

578 名前:デフォルトの名無しさん :2006/01/25(水) 07:14:44
>>572
「やっぱり」の使い方が意味不明だし、そこまで的をはずしてると
反論しにくいよね。うまい!

579 名前:デフォルトの名無しさん :2006/01/25(水) 07:16:28
>>563

DllMain()
srand(〜)

func()
rand()

しても意味ないでしょ?ってこと。

580 名前:デフォルトの名無しさん :2006/01/25(水) 10:36:54
(゚д゚;;;;;;)

581 名前:デフォルトの名無しさん :2006/01/25(水) 13:31:08
VC++6.0で質問です。
非常に初歩的なことなんですが、VBでフォームに部品を貼り付けていくように
VC++でウィンドウに部品(ボタンなど)を貼り付けるにはメインウィンドウの
他にダイアログを作成すれば良いようですが、ダイアログを作成せずにメイン
ウィンドウ1枚のみで同じことをするにはどうすれば良いのでしょうか?

582 名前:デフォルトの名無しさん :2006/01/25(水) 13:34:50
メインウィンドウをダイアログで作成すればよい

583 名前:デフォルトの名無しさん :2006/01/25(水) 13:58:29
そんな簡単な方法があったとは・・・
今メインの環境が壊れてて復元中なので後で試してみます。
ありがとう。

584 名前:583 :2006/01/25(水) 15:56:42
駄目だぁ、やっぱりわからん・・・
ネット見ても欲しい情報がまったく見つからない。

Windows3.1+MS-CでWindowsアプリ作った経験が有って
VB5〜VB.netの開発環境に慣れてる人間は、どんな本を
読めば参考になるでしょうか?
MSDNでは何の役にも立ちそうに無いです。。。

585 名前:デフォルトの名無しさん :2006/01/25(水) 16:04:09
本屋行けよ

586 名前:デフォルトの名無しさん :2006/01/25(水) 16:17:13
>>584
MFCならプロジェクトの作成のときにウィザードでダイアログアプリが(ry

587 名前:デフォルトの名無しさん :2006/01/25(水) 16:20:11
もちろん本屋には探しに行きますが、
近所の本屋にはろくな本が無かったので2時間かけて大きな
本屋に行くつもりですが、似たような境遇の方が居れば
どの本が良いかアドバイスいただきたいと思いまして。
最悪、本屋で1日粘ることになりそうですね。

588 名前:デフォルトの名無しさん :2006/01/25(水) 16:37:39
Winmainから直接ダイアログ出すだけ
他になにもいらない

589 名前:デフォルトの名無しさん :2006/01/25(水) 16:54:18
>>586
ありがとう。何とか取っ掛かりが掴めました。
MFCについては本買って読んでみます。

>>588
MS-CではWinmainとイベントループでプログラミングしてたと
思いますが、VBの様にGUI環境で部品の微調整をしたかったんです。

590 名前:デフォルトの名無しさん :2006/01/25(水) 17:13:32
質問ですが、親ウィンドウの外に出ない子供ウィンドウをアクティブにし、アクティブ状態のバーの色に出来ないのでしょうか?

http://www.kumei.ne.jp/c_lang/sdk/sdk_50.htm
猫などのページを見ても非アクティブになっています。

591 名前:デフォルトの名無しさん :2006/01/25(水) 17:19:31
excelとかMDIのアプリならアクティブになるだろ
MFCでMDIのやつ作ってもなるし

592 名前::デフォルトの名無しさん :2006/01/25(水) 17:23:14
DISC2をいれてみたのですが「現在CDにあるファイル」
とでてでうすればいかわかりません

593 名前::デフォルトの名無しさん :2006/01/25(水) 17:38:01
すいません、わかりました592



594 名前:デフォルトの名無しさん :2006/01/25(水) 22:16:38
CWndBaseという、有名らしいお決まりの書き方をしているのですが、モーダレスダイアログの場合はどう使ったら良いのでしょうか?

ここのCWndBaseを見てます
http://techtips.belution.com/ja/vc/0009/

モーダルじゃないとLPARAMに値が入らず、Attach出来ません。
どーしたらいいんですかあああああ

595 名前:デフォルトの名無しさん :2006/01/25(水) 23:33:16
>>579は通じたのかな。>>563

596 名前:デフォルトの名無しさん :2006/01/26(木) 00:14:44
>>577
今もういちど見てみました。
ボケていました。while( (c=fgetc(fp) !=EOF )ですね。
やってみたところ問題なくコピーできました。
ありがとうございました。

597 名前:デフォルトの名無しさん :2006/01/26(木) 00:15:22
ああ、while( (c=fgetc(fp))!= EOF)の間違いです。

598 名前:デフォルトの名無しさん :2006/01/28(土) 14:10:25
VCのアウトラインを制御したいんだけど、例えばC#でいうところの#regionみたいなやつ。
いい方法ありませんか?
あんまりいじらない部分のソースを簡単に折り畳みたい。
クラス毎に折り畳んだりしたいのよ。

599 名前:デフォルトの名無しさん :2006/01/28(土) 20:54:24
簡単に折り畳めるけど
C#知らんし何言ってんだか意味不明

600 名前:デフォルトの名無しさん :2006/01/28(土) 21:11:06
クラス毎に折りたたむって普通に出来るだろ
まぁ#region使えば便利だとは思うがな

601 名前:デフォルトの名無しさん :2006/01/28(土) 23:20:13
SQLExecDirectで複数行をUPDATEするSQLを実行させて
コミットしているのだけど、なぜかDBに反映されない。
デバッグモードだとうまく実行される。


これってコミット完了前にプログラムが終了してしまうと
ダメってことなんだろうか。対策あるのかな。Sleep?

602 名前:598 :2006/01/29(日) 00:25:39
>>599-600
自分の「好きな範囲で」折り畳みたいんだ。
例えば

class A {
#region
 class A(){};
 void hoge();
public:
#endregion
 // アクセッサ
getA();
 setA();
}
という感じで書いて折り畳むと
class A {
+...
 // アクセッサ
getA();
 setA();
}
という感じで見ることができるんだ。よく使う機能だけを表示させたりできる。
調べた限りではC#とVBにはあるがVC++にはねーな(´・ω・`)

603 名前:デフォルトの名無しさん :2006/01/29(日) 00:35:24
プログラマー板から誘導されてきました

VisualC++ ExpressEditionをダウソして、本を読みつつ勉強しているのですが
VisualC++6.0用の教材なせいかerrorが発生してしまいサンプルソースのビルドができないです。
エロイ人いたら解決法を教えてくださいです

<ソース>
#include "windows.h"

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
SYSTEMTIME tm;
char s[80];
int iRet;

GetLocalTime(&tm);

if ((tm.wHour >= 0) && (tm.wHour < 12)) {
lstrcpy(s, "おはようございます");
} else if (tm.wHour < 17) {
lstrcpy(s, "こんにちは");
} else {
lstrcpy(s, "こんばんは");
}

iRet = MessageBox(NULL,s,"MsgBox",MB_OK);

return 0;
}

604 名前:603 :2006/01/29(日) 00:36:31
<エラー>

------ ビルド開始: プロジェクト: Vc, 構成: Debug Win32 ------
コンパイルしています...
Msg.cpp
e:\program\winapp\vc\msg.cpp(15) : error C2664: 'lstrcpyW' : 1 番目の引数を 'char [80]' から 'LPWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
e:\program\winapp\vc\msg.cpp(17) : error C2664: 'lstrcpyW' : 1 番目の引数を 'char [80]' から 'LPWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
e:\program\winapp\vc\msg.cpp(19) : error C2664: 'lstrcpyW' : 1 番目の引数を 'char [80]' から 'LPWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
e:\program\winapp\vc\msg.cpp(22) : error C2664: 'MessageBoxW' : 2 番目の引数を 'char [80]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
ビルドログは "file://e:\program\winapp\Vc\Debug\BuildLog.htm" に保存されました。
Vc - エラー 4、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========


こんな感じです。

605 名前:デフォルトの名無しさん :2006/01/29(日) 00:47:03
>>603
プロジェクトのプロパティで
「構成プロパティ」を選びプロジェクトの既定値「文字セット」を”マルチバイト文字セットを使用する”


606 名前:603 :2006/01/29(日) 00:53:55
>>605

即レス感謝です。
無事ビルドすることができました。
本当に親切にどうもありがとう

607 名前:デフォルトの名無しさん :2006/01/29(日) 01:05:01
クラスライブラリをリンクさせようとして
外部シンボルが未解決と言われて
エラーになっています。

ライブラリ側が上手く作成されていない為に
メソッドがリンクされないと思うのですが、
ライブラリ(.lib)内のメソッドを参照する方法は
ありませんか?(unixのnmみたいなの)

環境はwin2k、VC++6.0です。よろしくお願いします。

608 名前:デフォルトの名無しさん :2006/01/29(日) 07:56:09
>>598
-適当に選択範囲を作る
-右クリック -> アウトライン
-選択範囲を非表示

609 名前:607 :2006/01/29(日) 11:34:31
追記、ライブラリにダイアログを1つ持たせているのですが、
ダイアログのないクラスライブラリではリンクできています。
ダイアログをライブラリに持たせられないのでしょうか...
アドバイスありましたらよろしくお願いします。

610 名前:デフォルトの名無しさん :2006/01/29(日) 11:59:53
つまり自作のダイアログを含むクラスをlibにしてリンクしたら
なにやらリンクエラーがでて、ダイアログをはずしてlibを作ってみたら
リンクエラーがでないってこと?
エラーメッセージを書いたほうがいい。


611 名前:デフォルトの名無しさん :2006/01/29(日) 12:07:02
>>601みたいな現象って俺だけかな。
ちなみにDBはMSDE2000で
開発環境は
Windows2000、Visual C++ 6.0

612 名前:デフォルトの名無しさん :2006/01/29(日) 12:27:58
>>607
libはリソースをもてない。
dllにしろ。

613 名前:デフォルトの名無しさん :2006/01/29(日) 13:58:38
WINVER not defined. Defaulting to 0x0501 (Windows XP and Windows .NET Server)
って出るんですけどどういう意味ですか?
またどのようにwarningを消すのが正しいのですか?

614 名前:デフォルトの名無しさん :2006/01/29(日) 14:06:57
>>613
Windowsプログラミングの際にはWindowsのどのバージョンを
想定しているかを指定してやる必要がある。
それがないのでふざけんじゃねぇデフォルトにあわせっぞゴルァといっている。
怖くてガクブルならwindows.hをincludeする前にWINVERを適切な値でdefineする。

615 名前:デフォルトの名無しさん :2006/01/29(日) 15:08:08
>>614
アプリを動かすターゲットのWindowsのバージョンをコンパイラに教えてあげるんですね。
ありがとうございます。
大変よくわかりました。

616 名前:デフォルトの名無しさん :2006/01/29(日) 20:44:40
2005で作られたMPCを.NET2003でビルドしたらエラーが出ますた

MainFrm.cpp(180) : error C2440: 'static_cast' : 'LRESULT (__thiscall CMainFrame:
:* )(CPoint)' から 'UINT (__thiscall CWnd::* )(CPoint)' に変換できません。
スコープ内でこの名前を持つ関数でターゲット型に一致するものはありません。

エラーはこれだけっぽいのですがへるぷみぃ

617 名前:デフォルトの名無しさん :2006/01/30(月) 17:10:21
共通関数(dll)はどう呼び出すのですか?

618 名前:デフォルトの名無しさん :2006/01/30(月) 17:24:06
>>617
配布されているDLLならヘッダーとインポートライブラリがあるだろ。
自分で作ったのならインポートライブラリはDLLのリンク時に作られているはず。
ヘッダーがなければ__declspec(dllimport)をつけて関数宣言すればよい。
インポートライブラリはリンカに渡してやればよい。
あるいは明示的リンクと言う方法もある。

ActiveXやCOMのDLLなら#import、.NetのDLLなら#using。

これ以上詳しく知りたければお前も詳しく書け。

619 名前:デフォルトの名無しさん :2006/01/30(月) 20:10:49
超初心者です
VisualC++ ExpressEdition2005のCLRって
Common Language Runtimeのことですか?
だとしたら.NETってことでつか?

620 名前:デフォルトの名無しさん :2006/01/30(月) 21:28:26
>>619
Yes

621 名前:デフォルトの名無しさん :2006/01/30(月) 21:31:49
なんか面白いこと書こうと思ったら、
>>620 が素で答えやがった。氏ね

622 名前:デフォルトの名無しさん :2006/01/30(月) 21:48:56
もしかして、SQLExecDirectで実行できるSQL文の長さって
制限ありますか?

623 名前:デフォルトの名無しさん :2006/01/31(火) 02:12:03
Visual C++ Express Edition 2005

クラス"class"のメンバに
char string[30+1];
と宣言すると

'string' をマネージ 'class' のメンバとして定義できません。混合型はサポートされていません
とコンパイル時に警告が出ます。
何がいけないのでしょうか・・・

624 名前:デフォルトの名無しさん :2006/01/31(火) 02:23:20
バカばかりだな

625 名前:デフォルトの名無しさん :2006/01/31(火) 19:03:50
VisualC++ ExpressEdition2005入れたんですけどコンパイルするとwindows.hがないって怒られます
MinGWのwindows.hを引っ張ってきてもいいですか?

626 名前:デフォルトの名無しさん :2006/01/31(火) 19:13:42
根本的に解決しなくても良いならどうぞ。

627 名前:デフォルトの名無しさん :2006/01/31(火) 21:12:38
>>625
SDK入れろや

628 名前:デフォルトの名無しさん :2006/01/31(火) 21:25:25
自己解決しましたPlatform SDK入れればいいようです

629 名前:デフォルトの名無しさん :2006/02/01(水) 17:44:35
Visual Studio .NET 2003 で C++ の勉強しているのですが質問です。
System::Stringクラスを使って2つの文字列結合したいのですが
やり方がどうにもわかりません。
joinメソッドが臭いのですがMSDNみても難しくてわかりません・・・
ご教授をお願いします。

630 名前:デフォルトの名無しさん :2006/02/01(水) 18:07:14
C++の勉強するんなら.NET Framework使わんと、アンマネージドでやれ

631 名前:デフォルトの名無しさん :2006/02/01(水) 18:37:23
>>629
String.Concat (Object, Object) 指定した 2 つのオブジェクトの String 形式を連結します。

思いっきり書いてあるじゃねーか
つーか、MSDNが難しいなんて言うような奴には向いてないだろ
回線切って首吊って氏ね

632 名前:デフォルトの名無しさん :2006/02/01(水) 18:43:32
×MSDNみても難しくてわかりません
○MSDNみるのがめんどくさいです

633 名前:デフォルトの名無しさん :2006/02/01(水) 18:50:28
それを言っちゃお終いよ

634 名前:デフォルトの名無しさん :2006/02/01(水) 18:53:35
実際>>629はいろいろと終わってる。

635 名前:デフォルトの名無しさん :2006/02/01(水) 19:31:27
なんで C++ なのに std::string つかわないんだ?

636 名前:デフォルトの名無しさん :2006/02/01(水) 19:32:00
もしかして、 C++ と C++/CLI の区別を理解してないとか。

637 名前:デフォルトの名無しさん :2006/02/01(水) 19:36:05
C♯から適当に乗り換えたリア厨だな

638 名前:デフォルトの名無しさん :2006/02/01(水) 20:05:51
なんでお前らはそんなに必死こいて.netの存在を否定してんだ?w

639 名前:デフォルトの名無しさん :2006/02/01(水) 20:08:25
この内容で.netの存在を否定してると言えるなんてすげーなw

640 名前:デフォルトの名無しさん :2006/02/01(水) 21:13:11
ソフト屋は性格悪いの多いというのは俺の思い込みだろうか

641 名前:デフォルトの名無しさん :2006/02/01(水) 21:14:34
>>640
オマイ性格悪いな

642 名前:デフォルトの名無しさん :2006/02/01(水) 21:21:06
ソフト屋は性格悪いの多いというのは俺の思い込みだろうか

643 名前:デフォルトの名無しさん :2006/02/01(水) 21:27:32
>>642
オマイ思い込み激しいな

644 名前:デフォルトの名無しさん :2006/02/01(水) 22:24:42
>>631
まず、俺は君みたいに頭が良くないのは確実だが、超低脳というほどではなく、ごく標準的
なレベルだと思っています(思い込みかも知れんが)。
MSDNって一度本や何かで勉強したことのある関数ならば非常に分かりやすいと思うけど、
いきなりMSDNだけで使用方法を編み出そうとすると難解なもの(というか簡単なんだけど回
答にたどり着けないもの)が数多く存在するように感じます。
MSDNってそんなに分かりやすいですか?

645 名前:デフォルトの名無しさん :2006/02/01(水) 22:29:14
>使用方法を編み出そうとすると
何故編み出す必要が?

646 名前:デフォルトの名無しさん :2006/02/01(水) 22:34:40
すごく卑近な例ですが、少し前に下記の仕様の関数を作成する必要がありました。
 現在実行されているスレッドの内、ウインドウを持つスレッドをピックアップして表示する。
これをMSDNから得られる情報だけで実装できる人は俺の想像を超えますね。

647 名前:デフォルトの名無しさん :2006/02/01(水) 22:45:51
MSDNはリファレンスだろ?
実装が載ってるわけが無い。

それに、使用してるクラスのメソッドを検索するなり順番に見ていくなりすれば見つかる。
頭なんてつかわない。
オマイはその手間を惜しんだだけ。

648 名前:デフォルトの名無しさん :2006/02/01(水) 22:49:41
>>647
あなたは646の関数をMSDN以外を見ることなく実装できるタイプの人ですか?
もしそうであればあなたはかなり限られた頭のいい人の部類だと思いますよ。

649 名前:デフォルトの名無しさん :2006/02/01(水) 22:51:58
>

650 名前:デフォルトの名無しさん :2006/02/01(水) 22:52:56
誤爆した・・シツレイ

>System::Stringクラスを使って2つの文字列結合したいのですが
なんでこれが、>>646になるんだw

651 名前:デフォルトの名無しさん :2006/02/01(水) 22:59:34
  ∩∩
  ( ・(x)・) < 出番?

652 名前:デフォルトの名無しさん :2006/02/01(水) 23:00:35
>つーか、MSDNが難しいなんて言うような奴には向いてないだろ
というコメントに対する反論です。
「難しい」という表現が何を意味するかは分かりませんが、普通は
やりたいことが先にあって、それを調べるためにドキュメントは存
在すると思います。
やりたいことを実現する関数を知っていて、それのリファレンスを
調べるという意味ではMSDNは分かりやすいですが、やりたいこと
を実現するために何が必要かを調べるという意味ではMSDNは難
解だと思います。
俺は629ではないですが、629は「2つの文字列結合したい」というや
りたいことがあって、それを実現するには何が必要か分かっていな
い状況です。そういう人物にとって「MSDNみても難しくてわかりませ
ん」というのは当然だと思うのです。

653 名前:デフォルトの名無しさん :2006/02/01(水) 23:03:38
> Visual Studio .NET 2003 で C++ の勉強しているのですが質問です。
> System::Stringクラスを使って2つの文字列結合したいのですが
> やり方がどうにもわかりません。

MSDNみりゃいいじゃん

654 名前:デフォルトの名無しさん :2006/02/01(水) 23:13:12
>>652
もちつけ。
> System::Stringクラスを使って2つの文字列結合したいのですが
これだけわかっているなら、MSDNは有効じゃろ?

655 名前:デフォルトの名無しさん :2006/02/01(水) 23:13:31
>>652
MSDNをいきなり読んでも分からないのは当然。
それを読めるように努力する気の無い奴は、あきらかに向いて無いでしょ。
唯一の公式リファレンスなんだから。

MSDNみても難しくてわかりません

誰か教えて

というのは当然だと?

656 名前:644 :2006/02/01(水) 23:37:28
白いものを黒というディベートの練習です。
ちと失敗か・・・

657 名前:デフォルトの名無しさん :2006/02/01(水) 23:46:17
MSDNだけでプロセス列挙できたよ。

658 名前:デフォルトの名無しさん :2006/02/02(木) 00:31:15
>>630
意味が分かりません。筋が通るように説明するか
死んでください。

659 名前:デフォルトの名無しさん :2006/02/02(木) 00:36:38
>>652
既に>>653が書いてくれてるのが全てだが
System::Stringを使って2つの文字列を結合したいと分かってるなら
MSDNのSystem::Stringクラスのメンバを見るなんてのは
至極当然の発想だし、またそれをすれば見つからない筈がない
だって書いてあるんだから

メンバ一覧を見るというのが思いつかないならどうしようもない低脳だな

660 名前:デフォルトの名無しさん :2006/02/02(木) 04:50:46
>>658 なんで筋が通らないの?
C++ を勉強したいのに、
C++/CLI のコードを書こうとしているから、
>>630 はそういってるだけじゃん。

661 名前:デフォルトの名無しさん :2006/02/02(木) 07:16:20
>>660
意味が分かりません。筋が通るように説明するか
死んでください。

662 名前:661 :2006/02/02(木) 07:17:23
もしレスするなら、どの部分が筋が通っていないかをよーく
考えてからレスしてください。全く的がはずれています。
分からないならレスしないでください。

663 名前:デフォルトの名無しさん :2006/02/02(木) 07:44:34
>>662
「Visual Studio .NET 2003 で C++ の勉強している」
って書いているのに std::string を使わずに
「System::Stringクラスを使って2つの文字列結合したい」
って言っているから、>>630 はそれは C++ じゃなくて
マネージドC++でしょ、って指摘している。
C++ の勉強するならマネージドC++を前提に勉強するのは
あまり賢いとは言えないよ、って親切に指摘してくれているだけ。

それにマネージドC++ はすでに C++/CLI に置き換えられて
いるので、マネージドC++に慣れることにはあまり意味がない。

664 名前:661 :2006/02/02(木) 07:51:29
>>663
言ってる事が分かりません。
訳の分からないレスはやめて!

665 名前:デフォルトの名無しさん :2006/02/02(木) 08:12:20
>>664 分からないなら死ねよ、低能

666 名前:デフォルトの名無しさん :2006/02/02(木) 08:24:15
>>664
意味が分かりません。筋が通るように説明するか
死んでください。

667 名前:デフォルトの名無しさん :2006/02/02(木) 08:58:04
ようするにSystem::Stringクラスは過去の遺物だし
あんまり使われなかったから考古学的な価値もない。

668 名前:デフォルトの名無しさん :2006/02/02(木) 14:52:46
おまいらやさしいな。
よくつき合ってられるな。

669 名前:デフォルトの名無しさん :2006/02/02(木) 16:52:15
C/C++のお薦めの解説本ないでしょうか?

670 名前:デフォルトの名無しさん :2006/02/02(木) 17:07:07
スレ違いだ

671 名前:デフォルトの名無しさん :2006/02/02(木) 18:17:30
超初心者です。ご教授願えますか?
昔作られたシステムを、新たに作り変える事になりました。
VBで作られた元ソースがあり、なるべくそれ本体には触れずに
呼び出されているOCXやDLLを作り変えようとしております。

VBのソースを見ていると、OCXからユーザが独自で作ったイベントが発行され
VBがそのイベントをキャッチして処理が行われている箇所が
あります。

VC++(もしくはC)で、OCXをつくり、同様の名称を持つ
イベントを発生させて、VB側でキャッチできるようにしたいのですが
ネットで調べても、調べきれておりません。
(VBでは、RaiseEventという関数を使って、外側にイベントを発生させておりました)

何かサンプルになるHPなどありましたら
ご教授願います。

672 名前:デフォルトの名無しさん :2006/02/02(木) 18:40:55
>>671
超初心者ならそんな作り変えをするべきではない。

673 名前:デフォルトの名無しさん :2006/02/02(木) 19:03:32
StyleをWS_POPUP | WS_VISIBLEにして、
CreateWindow()を呼んでいるのですが、
ウィンドウがタスクバーに表示されてしまいます。
CreateWindowEx()の拡張スタイルでWS_EX_TOOLWINDOWをつければ
タスクバーに表示させないようにすることは可能なのですが、この方法ですと細いタイトルバーができてしまいます。
タイトルバーを表示させたくないのでポップアップウィンドウとして作りたいのです。
環境はVC++6、MFCは使っていません。


674 名前:デフォルトの名無しさん :2006/02/02(木) 19:13:39
>>673
お話はわかりました。それで?

675 名前:デフォルトの名無しさん :2006/02/02(木) 19:15:33
>>674
チラシに向かって何話しかけてんだ?オマイ・・・

676 名前:673 :2006/02/02(木) 19:34:39
すみません。肝心な質問が抜けていました。

タイトルバーを表示させずにタスクバーに表示されないようなウィンドウをつくりにはどのような方法があるのでしょうか。

どなたかご教授くださいませ。


677 名前:デフォルトの名無しさん :2006/02/02(木) 19:38:22
WS_CAPTION付けずにCreateWindowしなさい

678 名前:デフォルトの名無しさん :2006/02/02(木) 19:40:30
そのようなウィンドウをつくりにはWS_EX_TOOLWINDOWを指定しなければいいだけでは?

679 名前:デフォルトの名無しさん :2006/02/02(木) 20:02:52
hWnd = CreateWindowEx(WS_EX_TOOLWINDOW, szWindowClass, szTitle, WS_POPUP | WS_VISIBLE,CW_USEDEFAULT,
0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
とCreateWindowExを呼んでみたところ、タイトルバーなし、タスクバーに非表示が実現できました。
お騒がせして申し訳ありません。
レスをくださった方々、ありがとうございました。


680 名前:デフォルトの名無しさん :2006/02/02(木) 22:09:15
なんでWIM32APIを使おうとすると
こんなに殺伐とするのか、あぁーマンドクサイ


681 名前:デフォルトの名無しさん :2006/02/02(木) 22:10:56
×  WIM32API
○  WIN32API

682 名前:デフォルトの名無しさん :2006/02/02(木) 22:40:09
>>676
ちなみに「ご教示」な。

683 名前:デフォルトの名無しさん :2006/02/02(木) 23:35:25
>>663>>665>>666が死ねば解決するよ。

684 名前:デフォルトの名無しさん :2006/02/02(木) 23:36:00
>>682
ここにもアホがいる。ご教授でもいいんだよ。
本読めよな。

685 名前:デフォルトの名無しさん :2006/02/02(木) 23:53:39
>>683
いや、683が癒されることなど永遠にないだろう

686 名前:デフォルトの名無しさん :2006/02/03(金) 00:04:54
>>685
でも根拠とかはないんだよね。

687 名前:デフォルトの名無しさん :2006/02/03(金) 01:15:22
>>686
いらないねそんなもん

688 名前:根拠とかw :2006/02/03(金) 01:19:04
>>687
だって、癒されないのは本人の問題でしかないからね。ここでそんなもん議論する必要は無い。
(しかし、683は粘着を繰り返す、それだけのことだよ)



689 名前:デフォルトの名無しさん :2006/02/03(金) 07:14:43
>>688の後半は正解
>>687-688
でも根拠とかはないんだよね。

690 名前:デフォルトの名無しさん :2006/02/03(金) 20:32:29
>>689
>>687

以下スタックが溢れるまで再帰しましょうw

691 名前:デフォルトの名無しさん :2006/02/03(金) 21:03:28
そろそろスタックが溢れそうです

692 名前:デフォルトの名無しさん :2006/02/03(金) 21:05:43
なんだかよくわかりませんが、とりあえずスタックポインタをリセットしておきますね。

693 名前:デフォルトの名無しさん :2006/02/03(金) 21:06:45
>>690
アホ

694 名前:デフォルトの名無しさん :2006/02/03(金) 21:19:45
>690
ざんねん。末尾再帰が最適化されてしまった。

695 名前:デフォルトの名無しさん :2006/02/04(土) 08:49:39
>>694 じゃ、無限ループだな。

696 名前:デフォルトの名無しさん :2006/02/04(土) 09:20:59
693=689

697 名前:デフォルトの名無しさん :2006/02/04(土) 13:25:52
>>696
違うけど?

698 名前:デフォルトの名無しさん :2006/02/06(月) 18:26:35
---終了---
次の質問者どうぞ

699 名前:デフォルトの名無しさん :2006/02/07(火) 19:41:13
始めまして。
本当に初心者です。
Visual Studio .NET 2003の入門本を片手にVisual Studio .NET 2005の勉強を
本日始めました。
本の通りにやってみたのですが、ビルドするとエラーが出てしまいます。
【ソース】
void Cvcsmp1View::OnDraw(CDC* pDC)
{
Cvcsmp1Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pDC->TextOut(0,0,"1111");
if (!pDoc)
return;
// TODO: この場所にネイティブ データ用の描画コードを追加します。
}
【エラー】
BOOL CDC::TextOutW(int,int,LPCTSTR,int)' : 3 番目の引数を 'const char [5]'
から 'LPCTSTR' に変換できません。(新しい機能 ; ヘルプを参照)

【MFCアプリケーション】でプロジェクト作成後「pDC->TextOutW(0,0,"1111");」
以外は一切変更していません。
最初の1歩目ですので自力解決の道筋さえ見えない状況です。
どなたかご教授ください。


700 名前:デフォルトの名無しさん :2006/02/07(火) 20:03:02
L

701 名前:デフォルトの名無しさん :2006/02/07(火) 20:11:45
>>699
"1111"をTEXT("1111")にする。

702 名前:デフォルトの名無しさん :2006/02/07(火) 20:24:43
>>701
ありがとうございます。
解決しましたm(._.)m

ちなみに>>605の方法でもうまく動きました。
このあたりの意味合いは、これから勉強してみます。
ありがとうございましたm(._.)m

703 名前:デフォルトの名無しさん :2006/02/08(水) 11:59:14
ダイアログのスタティックテキストに変数を割り当て、
プログラム中でその変数を書き換え、UpdateData(FALSE) を行っています。

一応、書き換えること自体はできたのですが、高速で書き換えると、文字が点滅してしまうのです。

理想としては、ダイアログ上で数値が10000から0までキレイにカウントダウンしてほしいのですが、
書き換えるたびにチカチカして、どうしても汚いんです。

対処法はあるのでしょうか。よろしくお願いします。


704 名前:デフォルトの名無しさん :2006/02/08(水) 12:43:28
>>703
DDXに頼らず自分で変えたら?

705 名前:仕様書無しさん :2006/02/08(水) 13:54:09
>>703-704
DDX使う/使わないに関係なく、SetDlgItemText(IDC_TEXT1,strText);等、
を使っても、画面のリフレッシュレートと非同期に頻繁に描画すれば、
ちらつきが見えてしまうのは当然のこと。

706 名前:デフォルトの名無しさん :2006/02/08(水) 15:45:25
始めまして
>>699の方と同じように、2003の入門書で2005の勉強を始めましたが、本の通りに
書いていきなりエラーが出ました。・゚・(ノд`)・゚・。
<ソース>
String *name = textName->Text;
<エラー>
error C3699: '*' : この間接指定を型 'System::String' で使用できません
コンパイラは、解析を続行するために '*' を '^' で置き換えます。

textNameというテキストボックスのTextプロパティをnameというポインタに
入れると理解していますが、なぜエラーになるかわかれば教えてください。
Windowsフォームアプリケーションでプロジェクトを作成しています。

本では「.NET」の中の「Windowsフォームアプリケーション」と書かれていましたが
「.NET」が無かったので、「CLR」にあった同名で作成しています。
長文で申し訳ありませんm(._.)m

707 名前:デフォルトの名無しさん :2006/02/08(水) 15:50:01
>>706
使いたい言語は C++ ?
それとも C++/CLI ?
まずはそれをはっきりさせないと。
見ている本はおそらく managed C++ の本だと思われ。
この3つの違いがもし分からなければ、
その辺調べてからの方がいいと思われる。

708 名前:デフォルトの名無しさん :2006/02/08(水) 15:56:53
>>703
結論、無理

709 名前:デフォルトの名無しさん :2006/02/08(水) 16:15:10
>>703
どうしても実現したければ、
メモリデバイスコンテキストに描画して、それをWM_PAINTのタイミングでダイアログ上にコピー

710 名前:デフォルトの名無しさん :2006/02/08(水) 16:16:02
俗に言うダブルバッファリングという手法です

711 名前:706 :2006/02/08(水) 16:23:31
>>707
VC.NETにはネイティブとマネージがあって、今回わたしが使おうとしているのは
マネージの方だと思ってます。
またマネージの方はCLR上で動作すると説明があったので「CLR」からプロジェクト
を作成しました。

Windowsアプリを作成したいと思っているので、マネージの方を勉強して行けば良いのかな?
と思ってますが、間違えでしょうか・・・


712 名前:デフォルトの名無しさん :2006/02/08(水) 17:30:58
>>711 間違いです。
managed C++ は C++ の文法に違反しないように配慮しつつ
なんとか CLR 上で動く安全なコードを書けるように
拡張しようという試みです。しかしこれには限界があったため
C++ の文法を変更してあらたな言語 C++/CLI が出来ました。
Visual Studio 2005 からは C++/CLI を使います。
managed C++ はもはや使うべきではありません。

C++/CLI は新たな言語ですから、C++ には無い演算子
やキーワードなどもあります。例えば単項演算子^ や
gcnew がその例です。

というわけで、managed C++ は C++/CLI が生まれるための
あだ花だったと思い、あきらめてその本はポイしましょう。
managed C++ も C++/CLI も、CLR上で動くという点では
「マネージド」なので騙されがちです。
混乱しないようにしましょう。

713 名前:デフォルトの名無しさん :2006/02/08(水) 17:32:35
>>711
ManagedC++ ≠ C++/CLI
オプションでManagedC++も使えるはず。

>Windowsアプリを作成したいと思っているので
NativeでもWindowsプログラミングは可能。


714 名前:デフォルトの名無しさん :2006/02/08(水) 17:33:50
俺が書くよりはるかに簡潔でわかりやすい説明がありました。
http://ja.wikipedia.org/wiki/Microsoft_Visual_C++

あと、Windows アプリを作りたいということだったら、
純粋に C++ と MFC & Windows API でシコシコ作るという手も。
って、これはたぶん >>711 が望んでいることじゃないよね。

715 名前:デフォルトの名無しさん :2006/02/08(水) 17:34:32
>>713 が先に書いてた orz

716 名前:706 :2006/02/08(水) 18:00:27
みなさんありがとうございます。
皆さんの説明でよく分かりましたm(._.)m
初歩的な質問で申し訳ありませんでした。

>>714さんがおっしゃってる方法はきっと手間がかかるんですよね?
それでも将来的に沢山の機能が実現できるのであれば、ネイティブ
を頑張ってみるつもりですが、とりあえず2005の本が出るまではVB
やVC#で勉強することも検討してみようと思います。

717 名前:デフォルトの名無しさん :2006/02/08(水) 18:09:59
>>716 なんだ、C# が嫌じゃないんなら、
とりあえず C# で遊んでおけば無駄にはならないよ。
C# で使えるクラスはそっくり C++/CLI でも使えるわけだから。

俺は VB はほとんど使ったことないから
そっちはおすすめも止めもしない。

718 名前:706 :2006/02/08(水) 18:20:45
>>717
アドバイスありがとうございます。
VC#嫌いじゃないので、考えて見ます^−^

719 名前:デフォルトの名無しさん :2006/02/08(水) 19:49:11
ちと質問なんですけど
■環境:vc++6.0 SDI

ウィンドウ背景色を設定するために
OnEraseBkgndとOnDestroyをオーバーライドして
背景色をプライベートで以下のように宣言しました。
といってもあるサイトのコピーなんですけど。

CBrush m_BkgndBrush;//背景色を保持するブラシ
HBRUSH m_hOldBkgndBrush;//以前の背景色のバックアップ

HELP->キーワードからグラフィック オブジェクトを見たんですけど
CBrushとHBRUSHの違いがよく意味わからんですたい。

720 名前:デフォルトの名無しさん :2006/02/08(水) 20:40:02
HBRUSHはGDIオブジェクトのブラシをWin32APIで扱う識別子
CBrushはそれらの関連する(であろう)Win32APIをラッピングして
使いやすく?したMFCのクラス。

721 名前:デフォルトの名無しさん :2006/02/08(水) 21:50:19
VS2003を使用していいます

CWindowというクラスを作り、そのメソッドとして下記のようにCreateWindowを定義しました
それをコンパイルすると、ヘッダのその定義のところで「error C2059: 構文エラー: '定数'」が発生します
何もエラーになるようなことはしてないと思うのですが、サッパリわかりません

virtual BOOL CreateWindow( LPCTSTR lpszClass,
  LPCTSTR lpszTitle,
  DWORD dwStyle,
  int x = 0,
  int y = 0,
  int nWidth = 640,
  int nHeight = 480,
  HWND hWndParent = NULL,
  HMENU hMenu = NULL);


722 名前:デフォルトの名無しさん :2006/02/08(水) 23:46:19
あっそ

723 名前:デフォルトの名無しさん :2006/02/09(木) 02:00:50
>>721
いまいちだな。

724 名前:721 :2006/02/09(木) 08:21:32
>>722
うん、そう

725 名前:デフォルトの名無しさん :2006/02/09(木) 09:40:22
CreateWindow がどう定義されてるか調べてみれ

726 名前:デフォルトの名無しさん :2006/02/09(木) 09:44:22
HWND CreateWindow(LPCTSTR, LPCTSTR, DWORD, int, int, int, int, HWND, HMENU,, HINSTANCE, LPVOID);
ですが、それが何か?

727 名前:721 :2006/02/09(木) 09:44:52
ええ、あなた程度でも思いつくような事はさすがにやってます^^;;;

728 名前:デフォルトの名無しさん :2006/02/09(木) 10:04:17
CreateWindowって存在しないのな。

729 名前:デフォルトの名無しさん :2006/02/09(木) 13:01:43
関数名変えれば通る。CreateWndとか。

730 名前:デフォルトの名無しさん :2006/02/09(木) 13:03:46
ええ、あなた程度でも思いつくような事はさすがにやってます^^;;;

731 名前:デフォルトの名無しさん :2006/02/09(木) 13:38:45
ほんまや・・・
CreateWindowってマクロだったんか・・・

732 名前:デフォルトの名無しさん :2006/02/09(木) 13:41:13
user32.dll覗いたけどマジでないでやんの。

733 名前:デフォルトの名無しさん :2006/02/09(木) 13:47:49
マクロなら、MSDNにマクロだって書いとけよMSめ・・・

734 名前:デフォルトの名無しさん :2006/02/09(木) 14:14:23
構文エラーならその前にエラーがあるんじゃないの?

735 名前:デフォルトの名無しさん :2006/02/09(木) 14:19:14
ええ、あなた程度でも思いつくような事はさすがにやってます^^;;;


736 名前:デフォルトの名無しさん :2006/02/09(木) 14:20:17
で、本当の721はまだいるの?
WinUser.hの中で、CreateWindowはマクロとして定義されているので、
コンパイル時にはCreateWindow[AW]に置き換えられてしまうのがエラーの原因。
だから関数の名前変えなきゃだめ。

737 名前:デフォルトの名無しさん :2006/02/09(木) 14:25:28
CreateWindowEx[AW]に置き換えるための、引数あわせでトラぶってるんじゃないの?

738 名前:デフォルトの名無しさん :2006/02/09(木) 15:27:39
BCBを使い続けてきました
Borlandは見捨てるそうです
そんな僕に、やさしくVisual C++を教えて下さい
教えてくれるのなら、移行の決心が付きます

739 名前:デフォルトの名無しさん :2006/02/09(木) 15:30:09
まずはExpressをDLしてみては。
今なら1年限定でただだから。

740 名前:738 :2006/02/09(木) 15:31:53
ありがとうございます
早速調べてきます

741 名前:デフォルトの名無しさん :2006/02/09(木) 16:53:15
VC6なんですけど、
#define PRINT(...) (printf("%s:%d ", __FILE__, __LINE__), printf(__VA_ARGS__))
こんな感じでデバッグマクロを定義したいんですけど、
「...」の部分でコンパイルエラーになります。
VC6だとマクロに可変長引数は使えないんですか?

742 名前:デフォルトの名無しさん :2006/02/09(木) 17:16:50
>>741
はい。C99対応コンパイラじゃないと使えません。
レガシーなCコンパイラで似たようなことがしたいなら、
PRINT(("%d", 10))のように二重に囲むこと前提で
#define PRINT(x) printf x
とするくらいしかありません。

743 名前:デフォルトの名無しさん :2006/02/09(木) 17:21:35
>>742
そーなのですか。。残念です。
ファイル名、ライン番号入れるのはすっぱりあきらめます。

744 名前:デフォルトの名無しさん :2006/02/09(木) 18:26:33
.netで猫でもわかるのVC++のスクリーンセイバーのプログラムをコンパイルするのに
・scrnsave.lib
・comctl32.lib
をリンクした訳ですが。以下のエラーが出て上手くいきません。

エラー1 error LNK2019: 未解決の外部シンボル _DefScreenSaverProc@16 が関数 _ScreenSaverProc@16 で参照されました。screen.obj
エラー2 error LNK2001: 外部シンボル "_hMainInstance" は未解決です。screen.obj
エラー3 error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。MSVCRTD.lib
エラー4 fatal error LNK1120: 外部参照 3 が未解決です。C:\Documents and Settings\Owner\My Documents\Visual Studio 2005\Projects\screen\Debug\screen.exe

環境はVS2005です orz助けてください

745 名前:デフォルトの名無しさん :2006/02/09(木) 18:37:57
猫はいつの間にか、VC2005のマネージドにまで手を伸ばしていたのか・・・

746 名前:デフォルトの名無しさん :2006/02/09(木) 18:59:36
#include <scrnsave.h>

747 名前:デフォルトの名無しさん :2006/02/09(木) 19:09:23
ヘッダファイルをインクルードしても駄目でした

748 名前:デフォルトの名無しさん :2006/02/09(木) 19:26:09
エラー3 error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。MSVCRTD.lib

WinMainすらエラーじゃないか
アホか

749 名前:デフォルトの名無しさん :2006/02/09(木) 19:29:29
>>748
猫見てこい

750 名前:デフォルトの名無しさん :2006/02/09(木) 19:30:34
scrnsave.libが正常にリンカに渡ってないような反応だなー。


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