[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 03/18 18:44 / Filesize : 201 KB / Number-of Response : 779
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん [2007/01/10(水) 00:00:39 ]
1 : ◆Manna2uCLg :2005/04/15(金) 13:33:14
Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

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

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

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

過去スレ、関連スレなどは>>2-5


560 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 23:26:59 ]
更にプロジェクトのプロパティのリンカの中のどこかに、
追加の入力ファイルという項目があるから、そこにws2_32.libと書く。
そうしてはじめてリンク時にws2_32.libが使われる。

561 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 23:33:39 ]
まだやってたのか
差分とって調べりゃ5分で済んだろうにアホだな

562 名前:516 mailto:sage [2007/02/26(月) 23:46:01 ]
>>560
ありがとうございます。
確認してみます。

>>561
差分ってどうやってだすんですか?
テキストであればツールで簡単に確認できますが、リンカの設定などは
バイナリデータに入ってそうなんですが。

563 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 23:50:44 ]
しかしファイル名はテキストのまま書き込まれている

564 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 01:30:39 ]
大丈夫、VisualStudio2003ならその辺の設定は全部テキストだ。

565 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 04:45:26 ]
*.vcproj をメモ帳で開いて見れ。
さすれば、幸せを手に入れることが出来るだろう。

566 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 10:26:29 ]
>>561
アホとか言うのは控えろよ
ここ初心者スレだぞ
カスが

567 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 11:02:54 ]
MFCダイアログベースで、ヘッダ情報に頼らずにファイルの容量を取得するにはどうすればいいでしょうか。



568 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 11:09:10 ]
GetFileSize()



569 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 11:40:03 ]
唐突にヘッダ情報って?

570 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 17:05:09 ]
VC2005 MFCベースでMDIのアプリですが、追加画面が必要になったので
リソースビューの欄で「Dialogを挿入」を行い画面をデザインしてます。
この画面にボタンを2個配置しました。
Aのボタンは最初は無効状態でBのボタンを押すことによって有効にします。
なのでAのボタンは「メンバー変数追加ウイザード」でメンバー変数m_bt1を追加して
Bのボタンが押されたイベントの中でm_bt1.EnableWindow(TRUE);と記述しました。
しかし、コンパイルは通りますが動作させるとエラーが出ます。
ちなみに
CButton* m_bt1 = (CButton*)GetDlgItem(IDC_BUTTON1);
m_bt1->EnableWindow(TRUE);
と記述すると正常に動作します。
何故メンバー変数追加で操作するとエラーになるのでしょうか?
IDや変数名の重複は無いです。

571 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 17:11:38 ]
別に問題ないと思うけど
あとは簡単なテストプログラム作って試すぐらいだから自分でやってみれば?

572 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 17:14:50 ]
追加したダイアロクじゃなくて
新しく簡単なサンプル作ってやってみれば?ということね

573 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 18:02:36 ]
m_bt1は有効だった?NULLだったりしないか?

574 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 18:03:29 ]
つか、メンバのほうか
m_bt1.m_hWndは有効な値だった?

575 名前:570 mailto:sage [2007/02/27(火) 18:32:01 ]
>>574
カーソルを当てて見てみたところメンバー変数を定義した変数のm_hWndは0x00000000です。
CButton* m_bt1 = (CButton*)GetDlgItem(IDC_BUTTON1);
m_bt1->EnableWindow(TRUE);
としてm_bt1のh_Wndを見ると0x00090beeです。

576 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 18:43:02 ]
んじゃIDがおかしいとかかな。
変数定義もっかいやりなおしてみたら。
何回やってもダメならその手順書いてみな

577 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 18:44:27 ]
メンバ変数の登録がちゃんとできてない。
もう一度やり直してみるといい。
対象のボタンを右クリックして「メンバ変数の追加」、
んでコントロール変数として適当なのを追加。

578 名前:570 mailto:sage [2007/02/27(火) 18:52:14 ]
>>576
>>577
了解しました。
もう一度見直してみます。



579 名前:デフォルトの名無しさん [2007/02/27(火) 19:50:05 ]
roopoutには確実にFALSEがはいっているのに

if(roopout==FALSE)
break;
else
....

が機能しませんが環境によってそういうことがあるのですか?
デバッグしながら確実に中にはいってるものを確かめましたがelseのほうにいきます

580 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 19:56:06 ]
FALSEとfalseは違うんじゃなかったっけ
if (!roopout) とか書いた方が安全

581 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 19:57:12 ]
それかifの後ろのどっかに変なセミコロンが紛れ込んでいて
条件式が真の場合にただの空行を実行してるとか

582 名前:デフォルトの名無しさん [2007/02/27(火) 19:57:24 ]
やってみます

583 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 20:03:07 ]
ifとelseの間がbreakだけなので、ステップ実行で確認したときあたかも素通りしたように
見えるだけなんじゃない?

584 名前:デフォルトの名無しさん [2007/02/27(火) 20:06:22 ]
ではなぜelseの処理に

585 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 20:06:35 ]
2005から始めた初心者はかなりきつい状態だろうな
本もサイトも全然ないもんな……

586 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 20:21:12 ]
実は
if(roopout=FALSE)
と書いていた。

587 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 20:23:05 ]
それに気付かなくてえらい苦労をした経験から、
条件文は必ず定数を先に書くことにしてる
if(200 == myIQ) みたいな

588 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 20:29:16 ]
今時それくらいは警告を出すから、わざわざナンセンスな書き方をする必要など無い。



589 名前:デフォルトの名無しさん [2007/02/27(火) 20:39:44 ]
そんな書き方してません
再起動したりしたら動きました

590 名前:516 mailto:sage [2007/02/27(火) 21:44:56 ]
ありがとうございました。
テキストファイルを見比べてみて同じようにすれば出来ました。

VC++6.0のSDKのときはライブラリをリンクして winsock2.h をインクルードして
たんですが、今回、2003のMFCの場合、ヘッダをインクルードして後はちょこちょこっと
関数を呼び出しているだけでライブラリのリンクは特にしていないように思えました。
良く分からなかったのですが、とにかく出来ました。

591 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 01:23:13 ]
>>588
VCだと警告されない罠。
gccでは文句言われるので、そっちに合わせた書き方してるけど。

592 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 01:51:43 ]
warning C4706: 条件式の比較値は、代入の結果になっています。

593 名前:591 mailto:sage [2007/02/28(水) 02:46:30 ]
ありゃ、見逃してた。ひゃくにんいっちゅの所為かorz
安全性考えると、pragmaか/wオプションでレベル下げとくのもありかなあ。

594 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 14:56:39 ]
if(FALSE == flag)
みたいに定数を先に書くソースを見ると身震いするほど嫌悪感を抱くのは俺だけ?

595 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 15:09:53 ]
一度精神科を受診することをオススメする。

596 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 15:43:04 ]
>>594
初めて見た。

597 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 17:00:54 ]
>>594
オレも。

598 名前:594 mailto:sage [2007/02/28(水) 17:09:35 ]
>>595
ちょっと受診してくるから良い病院を紹介してくれ



599 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 23:18:59 ]
www.kouno.jp/home/c_faq/c17.html#4

600 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 00:39:08 ]
打ちそこねで=を一つ落とすことはあっても
うっかりしてリテラルと変数を逆に書くなんてことはない。

601 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 08:11:35 ]
>>600
そりゃいないだろ
わざと逆にやってんだから

602 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 10:24:23 ]
プログラムを文章として読むと、それが気持ち悪いんだよね。
文章のように読めるプログラムを理想としてるのがわるいのかなあ。

603 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 11:20:23 ]
>>602
そうそう。たとえば、
if( a == 100 )
だと、頭の中で「a は 100 か」と読める。

でも
if( 100 == a )
だと、「100 は a か」と読んでしまう。
主題が a ではなくなってしまい、思考が後戻りしてしまう感覚が
あってなんかイラッとする。

604 名前:デフォルトの名無しさん [2007/03/01(木) 11:27:04 ]
デバッグの停止ボタンを押すとデバッグ中のプログラムは停止しますが
解放処理等はちゃんと行われているのでしょうか?

605 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 12:04:11 ]
>>604
行なわれるものと行なわれないものがある。

606 名前:デフォルトの名無しさん [2007/03/01(木) 12:09:02 ]
C言語で
#include <stdio.h>

int main(void)
{
printf("こんにちは\n");
return 0;
}

って書いたプログラムってそのままC++で実行できる?
それとも
#include <iostream>
using namespace std;

int main()
{
cout << "こんにちは" << endl;
}
って書かなきゃだめ?

607 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 12:10:41 ]
そのままできるのがC++の強み

608 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 12:16:52 ]
正しくは#include <cstdio>



609 名前:デフォルトの名無しさん [2007/03/01(木) 12:18:10 ]
>>607
そうなんですか〜 ありがとうございます。
はじめたばかりの初心者ですみません。

610 名前:デフォルトの名無しさん [2007/03/01(木) 12:21:24 ]
#include <cstdio> ですか。間違えました。

611 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 12:42:34 ]
<cstdio>を使うならprintfではなく、std::printfと書かなければいけないぞ。

612 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 13:01:53 ]
C++だからといって、cin,coutに拘る必要は無い。
とか思う俺は年寄りなんだろうな……

613 名前:デフォルトの名無しさん [2007/03/01(木) 13:15:26 ]
すみません。もうひとつ。

#include <stdio.h>

int main(void)
{
printf("こんにちは\n");
return 0;
}

マイクロソフトのVisual C++でやってみたところ
画面が一瞬出てからすぐ消えちゃうんですがどうすればいいでしょうか?

614 名前:デフォルトの名無しさん [2007/03/01(木) 13:16:41 ]
こんにちは→helloに変更します。

615 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 13:22:56 ]
>>613
Visual Studioのバージョンによるが「デバッグなしで開始」するか、
コマンドプロンプトを開いてそこから実行する。

616 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 14:15:45 ]
>>613
何回も何回も出るな、その質問。
>>615でいいけど、デバッグしたいなら
rerturn にブレークポイント置くか、その前に getchar(); でも入れとけば。

617 名前:デフォルトの名無しさん [2007/03/01(木) 14:23:07 ]
>>615-616
ありがとうございます。

618 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 15:07:29 ]
C++をCコンパイラとして使うのはやめた方が良くないか?
それは強みというより、自分の首を自分で絞めているようなもののような気がする。
stdioなんて使わずに、がんばってC++のライブラリを使用すべきなんじゃないか。
論じる次元が違うかもだけど、構造化プログラミングというパラダイムとオブジェクト
指向というパラダイムを同時に使っているような気がして、なんか嫌だ。
C++がますます煙たがれ、衰退するような気がする。



619 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 16:19:30 ]
>>618
話が飛躍しすぎ

620 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 16:32:13 ]
>>618
C++はそういう複数のパラダイムを使えることが強みだと
C++の作者Stroustrupも自著D&Eで言っている。

621 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 16:37:20 ]
質問があります。
afxwin.hをインクルードしているのにも関わらず、CWndを使うと
error C2061: 構文エラー : 識別子 'CWnd'
というのが出ます。
CWndを使用するためにはafxwin.hをインクルードするだけでは足りないのでしょうか?


622 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 18:44:42 ]
そのエラーの行を、前後数行含めてコピペしてみ

623 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 19:24:24 ]
>>622
返答ありがとうございます。

この行が先頭に出て、他にエラーは出ません。

624 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 21:06:01 ]
afxwin.hがあればいい

625 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 21:14:14 ]
つまりそれ以外の原因を疑えということ

626 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 22:31:17 ]
俺としてはcinとかcoutってそんなにいいものなのかねって思う。
C言語に変なもの持ち込んでC++を作りやがってとすら思っている。

627 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 03:05:26 ]
> 俺としてはcinとかcoutってそんなにいいものなのかねって思う
実に便利だと思う。STLと絡めると特に。

628 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 08:40:14 ]
ユーザ定義型を組込型と同じように入出力できるのはいいと思う。



629 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 08:46:27 ]
VCじゃなくてC/C++の話になると書き込みが増えるのは
VCの話には参加できなくてROMってる初心者が多いということか

630 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 08:56:49 ]
俺もストリームだけは便利さがいまだに分からん。
まあテキスト入出力自体あまりしないからかもしれん、
作るのは GUI アプリばっかだからコンソールは使わないし、
、データ保存はもっぱらバイナリだし、
設定ファイルは WritePrivateProfileString だからなあ

631 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 12:18:27 ]
>>629
C/C++の話の方がdeepな感じがするが

632 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 13:25:30 ]
VC6使ってる初心者が多いしVCは万年初心者が多いのか?
C/C++のベテランでも挫折するという話だし

633 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 17:22:29 ]
いつまでたっても初心者だ

634 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 19:53:59 ]
完全VCオンリーで語ることなんかあるのか?

635 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 20:27:38 ]
VC固有の動作、CRTの独自拡張、MFCやATLとか

636 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 21:55:11 ]
VCという道具について語るのが目的か?
VCという道具を使ってWindowsプログラミングをするのが目的だろ

637 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 22:58:37 ]
API直打ちしている人はC言語のfgetsみたいにファイルから
テキストを一行取得するようなことをしたい場合は
ReadFileとかで適当なバイト数読み出して
行末を見つけて抜き出す、のようにやっているんですか?


638 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 23:38:21 ]
人によるだろう



639 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 01:38:18 ]
>>637
そうだよ。SDKだけでやるならね。

640 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 05:34:28 ]
ちなみに CRT は内部で
>>637 が言ってることをやってるよ。

641 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 09:13:46 ]
SDKオンリーだろうかCランタイムだろうがVBランタイムだろうが
自前でやるか、呼び出す関数・メソッドが内部でやるか
ただそれだけのことでしかないわな

642 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 11:49:44 ]
641って馬鹿?意味を全く理解してないw

643 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 13:59:09 ]
たぶんCでべたに書くのが一番効率がいい。
けど安全性とか汎用性とかもあるから既存のライブラリを使う場合もある。
どれが一番いいのか?といわれたら
自分で何種類か書いて実際試してみるしかないだろうな
自分で試さずに人に聞いたり脳内でやってるやつは使いものにならない。

644 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 18:20:21 ]
質問です。
プロパティウィンドウからコントロールのフォントや色を変えたいのですが、
それらしい項目が見つかりません。
使っているVCのバージョンは2005なのですが、昔のバージョンは
それっぽいのがあったと思ったのですが・・・
どうやったら変更できますでしょうか?

645 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 18:30:45 ]
もともとネェヨ

646 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 18:32:59 ]
いちばん肝心な情報が抜けてるから

647 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 23:49:02 ]
>>644
それはVBだ

648 名前:デフォルトの名無しさん [2007/03/06(火) 08:50:44 ]
VC++ やっと2003から2005に上げられたんですけど
メニューのイベント・ハンドラが変・・・・


2003ではメニューのアイテムから
イベントハンドラの追加を選ぶと、
『追加して編集』と『コードを編集』ってボタンがあって

すでにイベントハンドラがある場合は、
『コードを編集』を押すと、
ソースのその関数に飛んでくれたんだけど

2005では『追加して編集』しかないんです

これって使用なんですか?
『コードを編集』はなくなって、自分で関数を探すしかないんでしょうか?




649 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 10:19:47 ]
「コードを編集」はある。見えないだけだろう
タブで進めてリターン押してみ
IEのバージョンは?

650 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 10:23:51 ]
確かにIE7だと見えない。
>>649 の言うように、タブで移動して押すしかないな。

651 名前:デフォルトの名無しさん [2007/03/06(火) 12:37:22 ]
>>649
>>650

確かにIE7です

『追加して編集』と『キャンセル』の間が開いてて
タブで移動していって適当なところでリターンしたら『コード編集』できました

とりあえず、ありがとうございます

だけど、コード編集ボタンを直接見たり、押すことはできないんですか?

IEのバージョンを6とかに戻せばいいんでしょうか?
(戻せるのかどうかわかりませんが・・・・)

652 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 12:45:29 ]
>>644を見て思ったんだけど
unixのmotifなんかだとあらゆるコンポーネントにほとんど同一のメンバを追加することができる。
windowsのgui開発言語もそうなればいいのに。


653 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 13:42:57 ]
windowsのgui開発といってもVCに限定してもいろいろあるし

654 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 13:55:30 ]
リソースエディタはリソースを編集するエディタだから、
リソースの仕様に含まれていない以上、できなくて当然とも言えるな。

655 名前:デフォルトの名無しさん [2007/03/06(火) 14:16:21 ]
すいません、質問があります。

MS VC++.NET2003なのですが、
画面をキャプチャする方法をどなたかご存知でしょうか。

画面全体でなくてもいいのですが、
(マウスカーソルの部分の1ドットだけでいいんですが)、
キャプチャしてそこからマウスカーソルの部分の色情報を取得したいと考えています。

よろしくお願いします。

656 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 14:27:16 ]
マウスのイベントかなんかで
指定された座標のピクセルの RGB (赤、緑、青) 値を取得

657 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 14:38:18 ]
デスクトップのDC取得してGetPixel

658 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 16:31:25 ]
どうしてもうまくいかんので質問すま。

wwwdoi.elec.nara-k.ac.jp/html/jisyu/dxm/cap2/index.html
のソースを参考にDirector用のXtraを作成中なのです。
んで、ソース中の
BITMAPINFO BitmapInfo;
をヘッダに書くとその直後のCopyMemoryの箇所で落ちるのです。
何故?

ちなみに開発環境はWindowsXP+VC6.0です。



659 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 17:20:03 ]
> 何故?
コードがおかしいから

660 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 17:30:33 ]
ドコガオカシインダロウ・・・(;´д`)






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<201KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef