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


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

★初心者にVisual C++を教えるスレ★ Part18
751 名前:デフォルトの名無しさん :2005/05/10(火) 14:50:26
>>750
Yearを伸ばすことと、国名が出なくなることに直接の関係があるの?

752 名前:サンプルエディットボックスの幅 :2005/05/10(火) 14:55:38
->751
無いと思うのですが、、
例えば Year の 2005 の表示領域が狭いので
200とかなるので、幅を増やしたいだけなのです。
そこはうまくいくのですが、
なぜか直接関係無いはずの国名が消えます。

753 名前:デフォルトの名無しさん :2005/05/10(火) 14:58:36
エディトとかコンボの仕業じゃなく、他にバグがあるんだろうw

754 名前:デフォルトの名無しさん :2005/05/10(火) 15:28:54
>>747
マルチすんな

755 名前:デフォルトの名無しさん :2005/05/10(火) 15:42:02
ttp://81tt78.omn.ne.jp/
おkwwwwwwwwwwwwwwwwwwwっっwwwwww
っうぇっうぇwうぇおkうはっwうぇwww
うはっwwwwwwwwwwwwっうはっwうはっうはっ
wwwwwwwうはっwwwうぇwwwwwwwwwwww

756 名前:デフォルトの名無しさん :2005/05/10(火) 15:56:48
748 755
マルチすんな

757 名前:デフォルトの名無しさん :2005/05/10(火) 16:02:04
急に病気な人が増えた件について

758 名前:デフォルトの名無しさん :2005/05/10(火) 16:07:07
>>754>>756
マルチすんな

759 名前:デフォルトの名無しさん :2005/05/10(火) 16:11:12
ttp://95.89.111.219.dy.bbexcite.jp/
wwwwwwwwwwwwうはっうぇwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwっっ
wwwwwwwwwwうはっうぇうぇwwwうはっwwwwww
wwwっwおkうぇwwwwwwwwwwww


760 名前:デフォルトの名無しさん :2005/05/10(火) 16:14:16
一瞬こっち↓かと思ったぜ・・・

最高に頭悪そうな発言してください in ム板 (V)
http://pc8.2ch.net/test/read.cgi/tech/1115386557/

761 名前:デフォルトの名無しさん :2005/05/10(火) 18:01:10
>>717
これくらい自分で作ろうとも思わないのか。
int _vscprintf(const char *format, va_list argptr) {
    FILE *fp = fopen("NUL", "w");
    if (!fp)
        return 0;
    int ret = fprintf(fp, format, argptr);
    fclose(fp);
    return ret;
}

int _scprintf(const char *format, ...) {
    va_list va;
    va_start(va, format);
    int ret = _vscprintf(format, va);
    va_end(va);
    return ret;
}


762 名前:デフォルトの名無しさん :2005/05/10(火) 18:47:11
自分で作る馬鹿はあんまりいない。
CRTからソースもらってくるだけ

763 名前:デフォルトの名無しさん :2005/05/10(火) 21:10:09
プログラム関係のスレッドにしか病気な人が出現しない件について
(というか特定のスレッド)

764 名前:デフォルトの名無しさん :2005/05/10(火) 21:23:46
>>745>>747>>755>>759
山田ウイルス

765 名前:デフォルトの名無しさん :2005/05/10(火) 22:35:50
ウイルスにしちゃスレが片寄ってるな
上がってるスレが狙われたのかと思ったけどそうでもないし、
ウイルスを真似たコピペかも

766 名前:デフォルトの名無しさん :2005/05/10(火) 22:42:17
書き込むとき、どんな気持ちなのでしょう。
ほくそえんでたりするのでしょうか。

767 名前:デフォルトの名無しさん :2005/05/10(火) 23:53:20
Platform SDK をアップデートしてから、デバッグ・ビルドをすると

shell32.lib(shguid.obj) : fatal error LNK1103: デバッグ情報が壊れています; モジュールを再コンパイルしてください
link.exe の実行エラー

が出てビルドに失敗するようになってしまいました。
再インストールと再アップデートもしてみましたが結果は変わりませんでした。
どう対処すれば良いのか分かりません。
どなたか教えていただけないでしょうか。
環境は VC++ 6.0 です。


768 名前:デフォルトの名無しさん :2005/05/11(水) 01:12:31
運営見てきたけど、特定のスレだけにしか書かれないらしい>山田
15くらいあってしっかりム板が入ってますた
さっき対策入ったから減るかモナー

769 名前:デフォルトの名無しさん :2005/05/11(水) 06:28:32
>>767
プロジェクトのフォルダの中に、壊れたshell32.libが入っていて
それを参照してしまっているのではあるまいか、とか。

770 名前:デフォルトの名無しさん :2005/05/11(水) 09:58:09
>>768
オレの行くとこのほとんどで見かけるからもっと多いかと思ったら
そんなもんなのか・・・

スレそのものは上のほうが狙われます

771 名前:サンプルエディットボックスの幅 :2005/05/11(水) 10:45:57
解決しました。
visualC++ 6.0 で最初に制作されたものを
.netで修正したためにうまくいかなかったようです。

772 名前:デフォルトの名無しさん :2005/05/11(水) 10:49:45
Visual C++ 6.0 で作ったものを Visual C++ .NET でいじっても何の問題もない。

773 名前:デフォルトの名無しさん :2005/05/11(水) 11:04:46
環境変ったら中間ファイル消せよ

774 名前:デフォルトの名無しさん :2005/05/11(水) 12:19:26
VCがさっぱりわかりません。CでのDOSプログラムの経験はあるのですが・・・。
どのように学べばよいのか教えてください。また良書があればそれも教えてください。

775 名前:デフォルトの名無しさん :2005/05/11(水) 12:24:44
さっぱり・・・

776 名前:デフォルトの名無しさん :2005/05/11(水) 12:42:45
>>774
「やってトライ!VisualC++.NETプログラミング」
http://www.amazon.co.jp/exec/obidos/ASIN/479731768X/qid=1115782837/sr=8-4/ref=sr_8_xs_ap_i4_xgl65/250-4479511-9618609

俺が読んだVC関連の書籍で、一番簡単だった
これ読んでもさっぱプーなら、無理

777 名前:デフォルトの名無しさん :2005/05/11(水) 13:17:49
>>776
URL の "qid=" 以降は削れよ。長くてウザイ。

778 名前:デフォルトの名無しさん :2005/05/11(水) 13:29:09
>>777
というと?

779 名前:デフォルトの名無しさん :2005/05/11(水) 13:29:59
DOSの方がわからん

780 名前:デフォルトの名無しさん :2005/05/11(水) 13:33:01
http://books-support.softbank.co.jp/try/try_vcpp.html
ここからサンプル落とせるな
トンカチたたきゲームやったけどぜんぜん点がはいんない。

基本的にMFCでAppとWndのみだから
シルトの「標準講座MFC」みたいなシンプルなソース

781 名前:デフォルトの名無しさん :2005/05/11(水) 13:33:05
>>778
http://www.amazon.co.jp/exec/obidos/ASIN/479731768X/

782 名前:デフォルトの名無しさん :2005/05/11(水) 13:35:36
>>781
なんも表示されないんだが・・・

783 名前:デフォルトの名無しさん :2005/05/11(水) 13:36:02
Windowsプログラムなら
「猫でもわかるプログラミング」で検索すればOK
VCの開発環境なら
プロジェクトにソースファイル(.cファイル。.hは入れても入れなくてもよい)を
追加してから、
[F7]でコンパイル、[Ctrl+F5]でコンパイルしてプログラム実行。
とりあえず、これだけで作れる。


784 名前:デフォルトの名無しさん :2005/05/11(水) 14:37:33
>>782
あなたのブラウザがおかしい。

785 名前:デフォルトの名無しさん :2005/05/11(水) 14:44:23
桜田本はやめようよ。
VC++6.0のStandard版にこの人の本が付いていたけど
はっきり言って良くない。


786 名前:デフォルトの名無しさん :2005/05/11(水) 14:56:59
>>785
その本持ってるけど、どこがよくない?
わりとまともな方だと思うが

787 名前:デフォルトの名無しさん :2005/05/11(水) 19:03:33
まともだと思っているならそれでいい。
それが桜田クオリティ


788 名前:767 :2005/05/11(水) 19:17:52
>>769
>プロジェクトのフォルダの中に、壊れたshell32.libが入っていて
>>773
>環境変ったら中間ファイル消せよ

ありがとうございます。
プロジェクトや中間ファイル等は全て消してソースコードだけからビルドしていますがリンクエラーが出ます。
また、複数のプロジェクトを扱っているのですが、全てのプロジェクトでリンクエラーが起きています。
プロジェクト個別の問題ではなさそうです。

789 名前:デフォルトの名無しさん :2005/05/11(水) 22:11:18
htmlソースからタグを除去し、
ブラウザに表示される文字列のみを抽出したいのですが、
そういった用途のAPIは存在するのでしょうか。

地道にタグを除去するコードを書く必要があるのでしょうか?

790 名前:デフォルトの名無しさん :2005/05/11(水) 22:20:19
何もかも分かりません。
cout:定義されていない識別子です
とでてきます。
iostreamはちゃんとインクルードしています。

791 名前:デフォルトの名無しさん :2005/05/11(水) 22:20:56
そんなAPIはない。

792 名前:デフォルトの名無しさん :2005/05/11(水) 22:28:48
>>790
std::cout

793 名前:デフォルトの名無しさん :2005/05/11(水) 22:55:54
Visual C++ 6.0 で、 F5 + Ctrl 押したら、デバッグ実行になりますよね?
その場合、picture.bmp とか言うのがリソースとして必要だとします。
しかし、picture.bmp は Debug フォルダの中にあります。
そのため、 F5 + Ctrl で実行したら、うまく動作してくれません。
どうにかして、うまく picture.bmp を検出してくれるよう、設定を変える方法
などは存在しますか?

794 名前:デフォルトの名無しさん :2005/05/11(水) 22:57:48
パスを起動当初から、Debug に移すって意味です。
なんか意味わかりにくいですが、どうにか理解できる方、よろしく
お願いします。

795 名前:デフォルトの名無しさん :2005/05/11(水) 23:02:21
>>794
作業用のディレクトリを好きなところに設定したまえ。
プロジェクトの設定は君が思っているよりたくさんの便利な設定が有るぞ。

796 名前:790 :2005/05/11(水) 23:03:56
何故かわからないんですが、できるようになりました。
ありがとうございました。

797 名前:デフォルトの名無しさん :2005/05/11(水) 23:05:20
1・とりあえずFileViewからpicture.bmpのエントリを削除してVC++を終了
2・VC++を再起動し、FileViewのResourceで右クリック
3・そのメニューからファイルをフォルダへ追加を選択
4・Debugディレクトリにあるpicture.bmpを選択して追加

これでプロジェクトに追加されたpicture.bmpはデフォルトのパスが
Debugディレクトリを指すようになる

798 名前:デフォルトの名無しさん :2005/05/11(水) 23:14:51
超FAQだと思うんで、似たような質問探してみた


普通にexeファイルをダブルクリックで実行すると正しくディレクトリ名を
取得できるのですが、他ファイルをドラッグ&ドロップなどで放り込んだり
アプリケーションの関連付けを行って開こうとすると
カレントディレクトリがなぜか C:\ になってしまいます。
exeファイルのあるフォルダをカレントディレクトリにするには
どうしたらよいでしょうか?


GetModuleFileName( )で実行ファイルのフルパスが獲得できます。
ファイル名だけ削除すればパスが得られます。
SetCurrentDirectory( ) でカレントディレクトリを設定できます。

799 名前:デフォルトの名無しさん :2005/05/11(水) 23:33:35
>>797 さんので、四苦八苦しながら何とか出来ました、ありがとうございます。
>>798 さん、すみません、まだVCを始めたばかりで、その辺のことはよくわかりません;;
>>795 さんも、レスありがとうございました。色々設定があるんですね。難しそうです。

皆様、初歩的な質問だったのかもしれませんが、重ね重ね、ありがとうございました。

800 名前:デフォルトの名無しさん :2005/05/12(木) 02:09:23
誰かエロイ人MSNメッセか何かで適当に教えてくれね?
謝礼は毎日メッセサインインしてるヒキの労力でorz

801 名前:デフォルトの名無しさん :2005/05/12(木) 05:43:21
ごめん、君に教えられるほどエロくない。

802 名前:デフォルトの名無しさん :2005/05/12(木) 06:45:23
Visual C++ 6.0を最近インストールして、
Service Pack 6を当てたんですが、確認の為ヘルプからバージョン調べても
Service Pack 6当てる前と同じでSP6とか書いてないんです。
こういうもんなんですかね。何回Service Pack 6を入れなおしても変わらないので…

803 名前:デフォルトの名無しさん :2005/05/12(木) 07:17:52
>>802
そういうものです。
インストールされてるDLLのバージョンを見て判断するしかない。
判断するアプリを開発してみたらいい。

あとは、うちでは動かないけどこれを使うとか。
http://61.195.253.97/cgi-bin/main.cgi?fileopen,madonomoto_01_00,madonomoto\WIN\vc6sp

804 名前:802 :2005/05/12(木) 07:43:29
>>803
ありがとうございます。
Visual C++自体の再インストールが必要かと考えてましたので助かりました。

805 名前:803 :2005/05/12(木) 07:48:16
>>804
VBなんかは起動画面(スプラッシュ)にSPのバージョンも出るのに、
VCは負けてますよね。

806 名前:デフォルトの名無しさん :2005/05/12(木) 09:39:53
はい、VCの完敗です。
VBにはとてもかないませんわ。

807 名前:デフォルトの名無しさん :2005/05/12(木) 09:44:59
VBもVCも同じなんだけど、、、
ってこれはIDEだからか

808 名前:デフォルトの名無しさん :2005/05/12(木) 10:04:48
>>781
もっと削れるよ
詳しくはGoogle Hackを買おう(笑)

809 名前:デフォルトの名無しさん :2005/05/12(木) 10:06:08
ごめ、書名間違えた
要するにoだけで十分なんだ

810 名前:デフォルトの名無しさん :2005/05/12(木) 13:57:47
「ぎれ」で変換したら「ピカチュウ」って出たんだけど。。。


811 名前:デフォルトの名無しさん :2005/05/12(木) 14:09:00
>>810
それは有名

812 名前:デフォルトの名無しさん :2005/05/12(木) 18:21:02
っていうか、なぜ?

813 名前:デフォルトの名無しさん :2005/05/12(木) 18:24:28
関数ポインタへの代入がうまくいきません・・・
クラスを返す関数だと、無理なのでしょうか?

error C2440: '=' : 'CString (__thiscall CGIEView::* )(int)' から 'CString (__cdecl *)(int)' に変換できません。

Cxxx::CString unko(int hoge){
}

CString (*p)(int);
p = unko;       ←ここでエラー




814 名前:デフォルトの名無しさん :2005/05/12(木) 18:25:13
>>812
コピーされたときのチェック用じゃね?

815 名前:デフォルトの名無しさん :2005/05/12(木) 18:34:41
メソッドへのポインタは、関数へのポインタとは型が違う。

コンパイラが言うように、
'CString (*p)(int)'から
'CString (CGIEView::*p )(int)'
に変更しとけ。

816 名前:813 :2005/05/12(木) 18:42:22
>>815
おお!出来ました!
まじサンクス!

817 名前:デフォルトの名無しさん :2005/05/12(木) 19:04:12
次は p(1); がエラーになります、と来ると予想。

818 名前:デフォルトの名無しさん :2005/05/12(木) 19:12:56
質問です。

VC++のVER6.0で、WIN32アプリケーションを
作成しております。(XP−PRO sp2です)

日時指定のコントロールを使用しているのですが、XPでは動くのに
2000やMEではコントロールを置いているダイアログが開かず、
困っております。どなたか、ヒントをお願い致します。


819 名前:デフォルトの名無しさん :2005/05/12(木) 19:15:04
リリースビルドじゃなくて
デバッグビルドでやってごらん
きっとエラーメッセージを出すよ


820 名前:818 :2005/05/12(木) 19:29:40
>>819

デバッグでやっても、エラーは何も出ませんでした。XPならダイアログが
開くのに、2000・MEでは何もおきません。



821 名前:デフォルトの名無しさん :2005/05/12(木) 19:41:21
じゃあ、XPでしかサポートしていないAPIとかActiveXを
使っているとか。必要なdllがインストールされてないとか。


822 名前:デフォルトの名無しさん :2005/05/12(木) 19:44:57
二次元配列を使おうと思いまして
コンストラクタ内で
vector<vector<int> > Array(100, vector<int>(100));
Array[10][10] = 100;
とすれば普通に使えるのですが
クラスのメンバ変数として

class Hoge {
 vector<vector<int> > Array(100, vector<int>(100));
};

とすると
error C2059: 構文エラー : '定数'
error C2143: 構文エラー : ')' が ';' の前にありません。
error C2059: 構文エラー : ')'
とエラーが出てしまいます。
いったい何がいけないのでしょうか・・・?
VC.net Standard です。

823 名前:デフォルトの名無しさん :2005/05/12(木) 20:22:46
すいません、質問です

あるプロジェクトで作ったアプリがあります。win32です。
その中身を、DirectX用に作ったプロジェクトの中に組み込みたいのですが、
どうやればいいんでしょうか?

とりあえず全部既存項目の追加でいれてみたんですけど…

824 名前:デフォルトの名無しさん :2005/05/12(木) 20:35:22
>>823
なんかすげーなw
まるでカレーでもつくっているかのようだ。


825 名前:デフォルトの名無しさん :2005/05/12(木) 20:40:24
やっぱり無理なんですかね
1から書き直さないとダメなんでしょうか。

826 名前:デフォルトの名無しさん :2005/05/12(木) 20:43:56
>>822

class Hoge {
Hoge() : Array(100, vector<int>(100))
{}
vector<vector<int> > Array;
};


827 名前:デフォルトの名無しさん :2005/05/12(木) 20:55:33
VC++じゃなくてC++の話してる馬鹿がいるな

828 名前:デフォルトの名無しさん :2005/05/12(木) 20:55:52
すいません
floatからdoubleにキャストするには何を使えばいいんですか?
逆はどうですか?

829 名前:デフォルトの名無しさん :2005/05/12(木) 21:05:57
Visual C++以外のネタは要りません。

830 名前:813 :2005/05/12(木) 21:32:52
>>817

p(1); エラーになります・・・orz
どうやって関数呼び出せば・・・

× *p(1);
× (*p)(1);
× Cxxx::*p(1);

おたすけてくださいまし・・・


831 名前:813 :2005/05/12(木) 21:46:44
すみません・・・
出来ました

(this->*p)(1);

C++の勉強不足でした。出直してきますm(_ _)m

832 名前:デフォルトの名無しさん :2005/05/12(木) 22:02:28
>>828
static_castね。
float→doubleはキャスト演算子を使わなくても変換してくれると思うけど。

Visual C++以外でも通用するC++の話はC++スレで。

833 名前:822 :2005/05/13(金) 00:27:46
>>826
なるほどそのように書くわけですか。
どうもありがとうございました。
次からC++の話題は該当スレでします。
>>822はgccでも蹴られたし・・・。

834 名前:デフォルトの名無しさん :2005/05/13(金) 00:28:27
Visual C++ 2003 (Pro) Ver.7.1.3091

なんかDebugビルドでrealloc(NULL, …); やると
たまに他の領域壊すんですけど、なにこれ?!

Debugビルドで症状再現率 10%
Releaseビルドだと、症状再現率 0%
malloc(); に書き換えたら、ピタっと治まった

あたいの時間を返せー!!!!


835 名前:デフォルトの名無しさん :2005/05/13(金) 00:50:24
>>834
99.99999999%君のプログラムが悪い。
Releaseではたまたま症状がでないだけで、どっかでバッファオーバーランでもしてるんだろ。

836 名前:デフォルトの名無しさん :2005/05/13(金) 01:43:26
正直初心者には、Visual C++とC++の区別なんざついてないと思われ
スレ違いとか言われてキレるのが目に浮かぶ

837 名前:デフォルトの名無しさん :2005/05/13(金) 01:48:15
やはり、プログラムの不具合見つけるには、
最初はDebugビルドがいいですか?
Debugビルドでデバッグして問題なければ、
Releaseビルドに切り替えたとき、
方向としては更に安定すると思っていいのですか?

838 名前:デフォルトの名無しさん :2005/05/13(金) 01:48:55
>>837
いいえ。

839 名前:デフォルトの名無しさん :2005/05/13(金) 01:50:51
最初どころかずーとDebug
よそにもってってテストするときにRelease
直すときはまたDebug
最後は当然Release
でもその後で修正が入ってDebug

840 名前:デフォルトの名無しさん :2005/05/13(金) 01:52:14
>>837
つーかステップ実行でおっかけたりメモリやメンバの中を覗いたりしないのかよ

841 名前:デフォルトの名無しさん :2005/05/13(金) 02:37:21
ステップ実行でおっかけたりメモリやメンバの中を覗いたりする奴は
ストーカーで手鏡をして逮捕される田代覗き魔の負け組み


842 名前:デフォルトの名無しさん :2005/05/13(金) 02:44:46
>>841はデバッガを使いこなせない低脳

843 名前:デフォルトの名無しさん :2005/05/13(金) 05:21:20
異常終了したときに、通ってきた関数のトレースはみれないのでしょうか?

Java みたいに出てくれると楽なのですが。。。

844 名前:デフォルトの名無しさん :2005/05/13(金) 05:56:11
通ってきた関数はコールスタック見ればわかる。

845 名前:デフォルトの名無しさん :2005/05/13(金) 08:25:44
USHORTで動的確保するとタマにおかしくなる。
それでDWORDにすると、上手くいく。
いつもこれ。わからん

846 名前:デフォルトの名無しさん :2005/05/13(金) 08:47:59
ぶっちゃけVisual C++ってどうなの?

847 名前:デフォルトの名無しさん :2005/05/13(金) 09:01:14
プログラミング初心者にはお勧めしない
最低でもC/C++で実用プログラム作れるぐらいじゃないと

848 名前:デフォルトの名無しさん :2005/05/13(金) 09:21:16
というのは嘘

849 名前:デフォルトの名無しさん :2005/05/13(金) 10:12:12
win32で作ってまして・・。
ダイアログボックスに、エディットボックスを作って、その入力内容に
よって、switch文かif文で処理を変えようとしたのですが、うまくいきません。
文字を読み込んでいるかの確認のため、メッセージボックスで表示させてみたのですが、
これは成功してます。
おそらく、switch文、もしくはif文の後が悪いと思うのですが、何度やってもうまくいきません。
教えてください。

850 名前:デフォルトの名無しさん :2005/05/13(金) 10:14:41
>>849
まずは、どういうコードを書いたのか想像しろと?

851 名前:デフォルトの名無しさん :2005/05/13(金) 10:15:15
超能力者の降臨を待つスレ

852 名前:デフォルトの名無しさん :2005/05/13(金) 10:23:45
デバッガでswitch文、もしくはif文の前で止めて調べる。
デバッガ使えないなら通りそうな所でメッセージボックスだしてみる。

853 名前:849 :2005/05/13(金) 10:38:48
エディットのIDがIDC_EDIT1だと思ってください。
GetDlgItemText(hDlg,IDC_EDIT1,text,100);といった感じで、文字を読み込んで、
そのあと確認のためMessageBox(hWnd,text,"確認",MB_OK);で出力させてます。
その時はちゃんとエディットボックスの入力と同じ表示なのですが・・。
それから、条件判断させようとしても、きちんと指定された処理へいきません。

説明が下手なので申し訳ないのですが、理解してもらえますか?



854 名前:デフォルトの名無しさん :2005/05/13(金) 10:44:53
>>853
CStringは使ってないんだな?
使ったほうがいいと思うが、

char* の内容を比較しようと思ったら
単に swich case や、 == 使うだけじゃ駄目だぞ

855 名前:デフォルトの名無しさん :2005/05/13(金) 10:47:16
とりあえずその文字列の取得からswitch文、if文に至るまでのソースを
ここにコピーしなさいよ。文章だけで説明されてもわけわからんし。
それか実際の例を出さずにこういったものを用意してこういった事を
実現したいってのを文章にして書くか。

856 名前:849 :2005/05/13(金) 11:01:55
GetDlgItemText(hDlg,IDC_EDIT1,text,100);
Ret = MessageBox(hWnd,text,"警告",MB_OK);
if(text == "aaa"){
Ret = MessageBox(hWnd,"同じ","警告",MB_OK);
}else{
Ret = MessageBox(hWnd,"保存","確認",MB_OK);
}

理想としては、エディットボックスを二つにして、両方の入力を比較したいのです。
>>854
 CStringは知りませんでした。調べてみます。


857 名前:デフォルトの名無しさん :2005/05/13(金) 11:10:23
>if(text == "aaa"){
これは、textのアドレスと"aaa"の格納されているアドレスを比較している
違うのはあたりまえ。
if (strcmp(text, "aaa") == 0){
こうすればいい。CStringなら == が使える

858 名前:デフォルトの名無しさん :2005/05/13(金) 11:13:04
VC初心者でも回答できるレベルの問題でした。
パチパチ

859 名前:デフォルトの名無しさん :2005/05/13(金) 11:16:38
この程度なら回答できたのにと思っている>>858に萌え

860 名前:デフォルトの名無しさん :2005/05/13(金) 11:18:02
VC初心者がC/C++を教えるスレ

861 名前:デフォルトの名無しさん :2005/05/13(金) 11:20:40
VCで、テキストをアルファブレンドの効果を持たせて出力したいのですが・・・

862 名前:849 :2005/05/13(金) 11:25:26
>>857
ありがとうございます。動きました。
出来れば、CStringを使った場合の記述を教えてもらいたいです。
それと、もうひとつIDC_EDIT2というIDのエディットボックスと比較したい
場合はどうすれば良いでしょうか?


863 名前:デフォルトの名無しさん :2005/05/13(金) 11:26:24
>>861
ですが、何よ

864 名前:デフォルトの名無しさん :2005/05/13(金) 11:30:13
>>862
フレームワーク使ってるかどうかでだいぶ変わるが、、、
一番単純なのは CString の変数に = でchar* を代入して
==で比較。

2つめのコントロールも同じように取得すればいいのでは

865 名前:デフォルトの名無しさん :2005/05/13(金) 12:07:31
ダイアログに項目追加していくとき、例えばエディットコントロールなら、
そのIDは、IDC_EDIT1,IDC_EDIT2,IDC_EDIT3,...ってしたいのですが、
IDの定義値によっては、IDC_EDIT3が他のIDと重なって定義できなかったりして、
なんかむずむずするときがあります。
こんなとき、うまく順番にID割り振る方法ってあるのでしょうか。

866 名前:デフォルトの名無しさん :2005/05/13(金) 12:14:01
DWORD id[4] = {IDC_EDIT1,IDC_EDIT2,IDC_EDIT3,IDC_EDIT4};

for(DWORD i=0; i<3; i++)
{
DrawEditControl_tekitou( id[i] );
}
みたいな

867 名前:デフォルトの名無しさん :2005/05/13(金) 12:17:28
static const char SS[ ] = "ABC";
static void F( char* S)
{
}
int main( )
{
F(SS);
}
ってやると、
error C2664: 'F' : 1 番目の引数を 'const char [4]' から 'char *' に変換できません。
とエラーメッセージが出ます。型チェックが厳しいのはわかりますが、
致命的エラーになるんですよね。
こういう場合は、その都度いちいちキャストしないといけないのでしょうか。
文字列をconstで使う場面って多いと思うのですが。

868 名前:デフォルトの名無しさん :2005/05/13(金) 12:18:20
>>865
つΨ 孫の手

869 名前:デフォルトの名無しさん :2005/05/13(金) 12:22:05
おれ、あんまりかゆくなるとresouce.h直に編集してしまうw


870 名前:デフォルトの名無しさん :2005/05/13(金) 12:22:52
>>867
F()の引数をconstにすべきでは

871 名前:デフォルトの名無しさん :2005/05/13(金) 12:28:57
>>844

ブレークポイントでコールスタックを見るとちゃんと関数名が見れるのですが;
異常終了したときには関数名がでないんです。。そっちの方がみたいのに。。


872 名前:デフォルトの名無しさん :2005/05/13(金) 12:32:31
>>871
異常終了ってダイアログでない?
そのとき、[再試行]選べば見られるよ

873 名前:デフォルトの名無しさん :2005/05/13(金) 12:34:51
>>842は自分がデバッガを使いこなせないから
他の奴もデバッガを使いこなせないと信じている低脳厨

874 名前:デフォルトの名無しさん :2005/05/13(金) 12:47:00
>>873
と、いうことにしたいのですね : - P

875 名前:デフォルトの名無しさん :2005/05/13(金) 12:57:28
つーか、実際そうだろ。


876 名前:デフォルトの名無しさん :2005/05/13(金) 13:32:34
>>872

コールスタックに アドレスが表示されて、関数名が表示されないんです。

877 名前:デフォルトの名無しさん :2005/05/13(金) 13:56:05
>>876
Debugビルドで?

ReleaseビルドのEXEやDLLはシンボル無ければ表示できないよ

878 名前:デフォルトの名無しさん :2005/05/13(金) 14:05:48
アタッチ

879 名前:デフォルトの名無しさん :2005/05/13(金) 14:06:39
VCで、テキストをアルファブレンドの効果を持たせて出力したいのです


880 名前:デフォルトの名無しさん :2005/05/13(金) 14:16:20
>>879
がんばれ

881 名前:ソース”管理”プロバイダ :2005/05/13(金) 14:16:33
VC++6で制作した.dswをVC++.NETで開くと
プロジェクト MPList.vcproj はソース管理下に存在しているようですが、
ソース管理プロバイダが、このコンピュータにインストールされていません。
このプロジェクトのソース管理の統合は無効になります。

とでてビルドしてもエラーになりますが、どのような対処が
必要なのでしょうか?


882 名前:デフォルトの名無しさん :2005/05/13(金) 14:17:50
ソース管理の警告とビルドエラーは関係ないのでは?

883 名前:デフォルトの名無しさん :2005/05/13(金) 14:28:02
お世話になります。
VC++でコンパイルをしたところ、以下のようなメッセーが出てきて、リビルドできませんでした。
d:\documents and settings\endo\my documents\どきゅめんと\vcpp_dev\klib\KLib.h(17) : fatal error C1083: include ファイルを開けません。'KLibIncludes.h': No such file or directory
d:\documents and settings\endo\my documents\どきゅめんと\vcpp_dev\source\prsearch\stdafx.h(8) : fatal error C1083: include ファイルを開けません。'klib.h': No such file or directory
「klib.h」も「KLibIncludes.h」もプロジェクトの中になります。なぜ、ファイルを開けないのでしょうか?
ご教授願います。
よろしくお願いします。


884 名前:デフォルトの名無しさん :2005/05/13(金) 14:30:12
>>877
Debug Build です。
ブレークポイントを設定した時にはちゃんとでるのですが。。。
異常終了したときには、アドレスだけなんです。。。
一般的には異常終了でも関数のトレースがでるんでしょうか?
(VS6.0 Sp5)

885 名前:デフォルトの名無しさん :2005/05/13(金) 14:43:52
SDIで組んでるのですが
CFormViewを使ったときに
ダイアログベースでOnInitDialogで初期化するように
初期化する処理はどこで行えばよいのですか?

886 名前:デフォルトの名無しさん :2005/05/13(金) 14:47:22
>>885
ウィンドウが必要ならOnCreate()

887 名前:デフォルトの名無しさん :2005/05/13(金) 15:00:43
>>884
DLLなら.pdbファイルも同じとこに置けばいいし
そうでないなら、、、実行はF5でやってる?

888 名前:デフォルトの名無しさん :2005/05/13(金) 15:05:51
>>885
CFormViewか、、ドキュメントによるなら
OnInitialUpdate()がいいのかな

889 名前:デフォルトの名無しさん :2005/05/13(金) 15:11:14
>>843
もしデバッガを入れてない環境なら、Dr.ワトソンを使うべし。

シンボルを入れてなくても、mapファイルとリスティングファイルからソースの該当箇所を割り出し可能。
デフォルトでは、リリースビルドでそれらは生成されないので、必ず設定変更し、バージョン毎に保存・管理すべし。

試しに意図的にNULLポインタの指す先をアクセスして、
予行演習しておいたほうがいいですよ。

プロセスが異常終了するのではなく、例外がthrowされた時に・・・ということであれば、
PlatformSDKのサンプルのDr.ワトソンのソースを参考に、スタックウォークすればOK。

890 名前:885 :2005/05/13(金) 15:12:17
補足です
起動時にエディットボックスに自動的にパスを入力する処理をするのです
ダイアログベースのときはOnInitDialogでできたのですが
今回の場合は>>886のおっしゃるCMainFrameのOnCreateにするということですか?
それとも>>888のC・・・ViewのOnInitUpdateですか?

891 名前:デフォルトの名無しさん :2005/05/13(金) 15:17:05
>>862
初心者のうちは大人しく、MFCでDDXを使ったほうがいいですよ。

GetDlgItemTextとか使わなくたって、
自動的にメンバ変数のCStringに転送してくれますから。

892 名前:デフォルトの名無しさん :2005/05/13(金) 15:20:30
>>884
異常終了するのは、どういうタイミングですか?
また、異常終了した時のコールスタックの内容は?

その時のデバッガの画面のキャプチャを出したほうが、話が早いよ。

893 名前:デフォルトの名無しさん :2005/05/13(金) 15:27:43
>>890
最初に一回だけならOnCreateでいい
OnInitialUpdateならファイルメニューの
新規作成や開くを選ぶたびに呼ばれる

894 名前:ソース”管理”プロバイダ :2005/05/13(金) 15:31:05
>882
なぜかくりかえしビルドしてたら
エラーがなくなりました。

895 名前:893 :2005/05/13(金) 15:32:41
ってSDIか。
まあCDocumentが欲しけりゃOnInitalUpdate

896 名前:885 :2005/05/13(金) 15:58:45
>893
OnInitalUpdateに記述して無事できました
ありがとうございます

C・・・Docクラスに何かしら記述しないといけないのかなぁとか考えてましたが
Viewクラスだけで事足りるのですね

897 名前:884 :2005/05/13(金) 16:59:04
>>887 >>892

ありがとうございます。原因がわかりました。
PageSetupDlg 内で飛んでいました。(そのためコールスタックがでていないようです。)
PageSetupDlg で飛ぶ原因はわからないのですが。。とりあえずインク節約のソフトを抜くと動きました(笑)
他のソフトはインク節約のソフトが入っていても動くので私の使い方がマズイのだとは思います。


898 名前:デフォルトの名無しさん :2005/05/13(金) 17:08:14
地球環境のためにも是非なおしていただきたいw

899 名前:デフォルトの名無しさん :2005/05/13(金) 18:18:53
resource.hを書き換えたらリビルドしよう。
「サポートされてない操作をしようとした」とかおかしなことになってはまる。

900 名前:質問してもいいですか :2005/05/13(金) 20:12:24
CString ss = "AあB";
とssに入っている時、ssから「A」「あ」「B」と順番に取り出すには、どうしたらよいですか?
仮にss.Midでやると、途中に2バイト文字があるので、どこに2バイト文字があるのか
把握してないと上手く取り出せません
やりたい事は、CStringのssを関数に渡し、渡された関数内で、1文字単位に分解したいのです
どうか、お知恵をお貸し下さい

901 名前:デフォルトの名無しさん :2005/05/13(金) 20:36:17
>>900
CStringT<wchar_t>使え。

902 名前:デフォルトの名無しさん :2005/05/13(金) 20:46:03
別にIsMBCSLeadByteで1文字づつ判定してったらいいとおもうが、

903 名前:デフォルトの名無しさん :2005/05/13(金) 21:01:20
>>901 >>902
ありがとうございます

904 名前:デフォルトの名無しさん :2005/05/13(金) 23:16:37
質問です。

Windows XP SP2 の上で VC++ 6.0 で開発しています。
言語は C++ です。

Windows Service から DLL を LoadLibrary して使用しています。

DLL の中にある class の static メンバ変数を使うと、DLL を FreeLibrary すれば
変数領域が解放されてしまいます(という実験結果でした)。

DLL から Serive 側のメモリ管理領域に static な変数領域(FreeLibrary をしても
消えない)を確保するにはどうしたらいいですか?


905 名前:デフォルトの名無しさん :2005/05/13(金) 23:18:28
ここは初心者スレ

906 名前:デフォルトの名無しさん :2005/05/13(金) 23:20:32
訂正:ここは初心者が解答するスレ

907 名前:デフォルトの名無しさん :2005/05/13(金) 23:30:13
FreeLibraryしたあとにそのDLLにあるクラスのインスタンスを参照するのか?
FreeLibraryするのが間違ってるんじゃないのか?

908 名前:904 :2005/05/13(金) 23:41:07
>>907
>FreeLibraryしたあとにそのDLLにあるクラスのインスタンスを参照するのか?

そんなことはしません。
LoadLibrary される度に DLL が参照できる共通領域が欲しいのです。

>>905
自分は数ヶ月しかコード書いてない初心者ですが、これは初心者領域を越える質問なので
すか?

>>906
本当ですか?


909 名前:デフォルトの名無しさん :2005/05/13(金) 23:41:37
FreeLibraryする前に、その変数値を呼び出し側で保存しておけ。

910 名前:デフォルトの名無しさん :2005/05/13(金) 23:46:34
FreeLibraryの実験結果を見たら諦めるしかないよね。
それが嫌なら、自分で何か別な方法を考える。
それも嫌なら、やめる。

911 名前:デフォルトの名無しさん :2005/05/13(金) 23:49:36
>LoadLibrary される度に DLL が参照できる共通領域が欲しいのです。

ファイルに保存して、核DLLから参照したら?

912 名前:904 :2005/05/14(土) 00:03:51
>>909
なるほど! Service 側に static な領域を確保して、そこへ FreeLibrary される前に
DLL が保存したい内容を確保すればいいのですね?
ありがとうございました。

>>910
自分で思いつかないから質問しました。

>>911
ありがとうございます。
いや保存したいないようがクラスなので。クラスもファイルに保存できるのですか?



913 名前:デフォルトの名無しさん :2005/05/14(土) 00:08:48
マジレスすると、サービスの実装なんて初心者はやらないだろうし、VC6++使ってるなら
LoadLibraryなんて使わずにインポートライブラリ使うだろう?
そもそもなんでFreeLibraryする必要があるの?そういう情報を出して質問しないと答え
様がないな。
どういうサービスなのか、どうして毎回Loadする必要があるのか、とかを書いて質問すると
もうちょっとましな回答ができると思うよ。
釣りだったらはずいなw


914 名前:デフォルトの名無しさん :2005/05/14(土) 01:39:51
グループボックスの中に
アイコンを描画したいと考えています。

グループボックスのハンドルをもとに
デバイスコンテキストを取得して、アイコンを描画しました。
アイコンの描画はできたのですが、なぜかグループボックスの枠が消えてしまいました。
原因はなんなのでしょうか?

hdc= BeginPaint (hGroupboxWnd, &ps);
DrawIcon(hdc, 0, 0, hicon);
EndPaint(hWnd, &ps);

SDKで組んでます。

915 名前:デフォルトの名無しさん :2005/05/14(土) 01:41:15
コードまちがえました…
正しくは以下です。

hdc= BeginPaint (hGroupboxWnd, &ps);
DrawIcon(hdc, 0, 0, hicon);
EndPaint((hGroupboxWnd, , &ps);

916 名前:デフォルトの名無しさん :2005/05/14(土) 02:10:20
グループボックスの中に
ピクチャーコントロールを配置して
そこに描画じゃアカンの?

917 名前:デフォルトの名無しさん :2005/05/14(土) 02:58:22
なんか釣られている気がするのは折れだけか。。。

918 名前:914 :2005/05/14(土) 03:04:01
>>916
もちろん、それでもOKなんですが。
直接描画でいければ、それはそれでいいのかな、と思いまして。



919 名前:デフォルトの名無しさん :2005/05/14(土) 08:39:53
なんで最初から 0, 0 にするかな
かぶるかもとか知恵が回らないのだろうか?

920 名前:デフォルトの名無しさん :2005/05/14(土) 08:41:13
グループボックスの枠はグループボックスの内側に描かれている悪寒。

921 名前:904 :2005/05/14(土) 09:50:21
>>913
初心者なんですが、会社に入ってずっと先輩たちのソースコード(本人行方不明)を
メンテナンスさせられてるんです。NT Service については彼らの遺産があるので
必死で Win32 や C++ を勉強しながらここまで入社 2ヶ月、必死なんです。

サービスは HTTP? のサーバーで、有名な apache とかじゃないです。オリジナル。
ドキュメントを読むと、HTTP でつながったら CGI の DLL をロードして処理して
フリーする感じです。各 DLL で行なったことの後始末を HTTP が切れたときに
全部について行ないかったんで、共有領域に書いておいて一気に処理したかったの
でした。
>>909 さんの説明でなんとかなりそうです。ありがとうございました。

では、今日も出勤です。

922 名前:デフォルトの名無しさん :2005/05/14(土) 11:25:00
あのね
給料もらってやってる仕事を無料奉仕で教えてやる馬鹿がいるか?

923 名前:デフォルトの名無しさん :2005/05/14(土) 11:29:49
>>921
他のとこに転職しとけ。で、新しい職場でももがき苦しめ。

924 名前:デフォルトの名無しさん :2005/05/14(土) 11:30:05
かわいそうに、これで>904は「できるやつ」ということでますます面倒なソースを押し付けられる羽目に……

925 名前:デフォルトの名無しさん :2005/05/14(土) 11:47:24
キーボードから入力される100個の整数のうち、
2桁の数がいくつあるかを数えて、その個数を表示する。

こんな問題があったのですが、さっぱり分かりません。
どなたか実際にプログラムを書いて教えてもらえませんか?

926 名前:デフォルトの名無しさん :2005/05/14(土) 11:48:35
>>925
スレ違い。宿題スレへ。

927 名前:925 :2005/05/14(土) 11:53:22
あ、すみませんでした

928 名前:デフォルトの名無しさん :2005/05/14(土) 12:07:50
つーか宿題の答えを人に聞くんじゃねぇ

929 名前:デフォルトの名無しさん :2005/05/14(土) 12:25:57
まぁそうやって思考能力0人間になるのは自業自得なんだから
他人の俺らには関係ないじゃん。

930 名前:デフォルトの名無しさん :2005/05/14(土) 12:47:46
JR西日本は思考能力0人間の集団

931 名前:デフォルトの名無しさん :2005/05/14(土) 13:10:11
for(int i=0; i<100; i++)

932 名前:デフォルトの名無しさん :2005/05/14(土) 13:47:14
std::cout << "ぬるぽ" << std::endl;

933 名前:デフォルトの名無しさん :2005/05/14(土) 14:48:07
std::cout << "ガッ" << std::endl;

934 名前:デフォルトの名無しさん :2005/05/14(土) 14:50:45
残り99回のガッは?

935 名前:デフォルトの名無しさん :2005/05/14(土) 14:53:52
基本的なことだと思うんですが質問させてください。
MSDNのヘルプの記事にはWindows CEと書かれたものが多く含まれています。
時に、CEの記事しかないこともありますが、これはWinXPのような普通のOSでも
同じと考えていいのでしょうか。

なぜCEばかりあるのか不思議に思ってます。

936 名前:デフォルトの名無しさん :2005/05/14(土) 14:54:27
一回のガッで100人を殴る

937 名前:デフォルトの名無しさん :2005/05/14(土) 15:07:18
VC7.1のWin32コンソールアプリで、例えば
int main()
{
  printf("hello world\n");
}
たったこれだけの事をやりたくても
プリコンパイルヘッダを使わないと行けないんだけど
プリコンパイルヘッダを使わなくても済む方法あります?

そのコードをそのまま別の環境(たとえばLinux)に持ってってもコンパイルできるようにしたい
(ただのコマンドラインプログラムなので環境に依存しないものを作りたい)

938 名前:デフォルトの名無しさん :2005/05/14(土) 15:12:11
>>937
コンソールでコンパイルすれば?

939 名前:デフォルトの名無しさん :2005/05/14(土) 15:13:18
7.1は知らんが6.0ではプロジェクトの設定でできた。

940 名前:937 :2005/05/14(土) 15:14:11
>>938
それしかないんかなぁ…
クラスビューとか使えると便利なんだけど

941 名前:デフォルトの名無しさん :2005/05/14(土) 15:33:19
>>939
同じ設定が7.1にもありました。

新規プロジェクトを作る時にはデフォルトでプリコンパイルヘッダを使用する
になっちゃってるけど、これを使用しないに変更して
StdAfx.hと.cppを削除してコンパイル通りました。

942 名前:デフォルトの名無しさん :2005/05/14(土) 15:41:18
「空のプロジェクト」で作成してファイルを追加すればいいじゃないか。

943 名前:デフォルトの名無しさん :2005/05/14(土) 16:31:41
練習問題とかでいちいちプロジェクト作ってると
レジストリにプロジェクト単位でキーができてて
あとから見るとものすごいことになってる。

944 名前:デフォルトの名無しさん :2005/05/14(土) 16:58:07
プロジェクトを一個作って、問題ごとにファイルを入れ替えて使うという考えが無いとは・・・

945 名前:デフォルトの名無しさん :2005/05/14(土) 17:08:55
vcvars32.bat使えよ...

946 名前:デフォルトの名無しさん :2005/05/14(土) 17:17:43
7.1で作ったプロジェクトを前のバージョンで読み込みたいのですが、
バージョンダウンしてプロジェクトの保存とかはできないのですか?
最初から前のバージョンのプロジェクトを作成してもいいのですが。


947 名前:デフォルトの名無しさん :2005/05/14(土) 17:59:02
>>946
.sln/.vcproj を .dsw/.dsp に変換するツールがあるよ。
http://www.google.co.jp/search?q=sln+dsw+converter
http://www.arstdesign.com/articles/prjconverter.html


948 名前:デフォルトの名無しさん :2005/05/14(土) 19:39:03
C++で行列の乗算を作るプログラムを作ってるんですが
なぜかうまくいきません
C=AXB を計算するとき
引数としてA、Bそれぞれの配列のポインタを渡して
Cの配列のポインタをreturnするというものにしてみたんですが
はじめの配列は4*4だったのに返ってくるものはなぜか
16*1のサイズになってしまいます。下に書いたプログラムは乗算の
計算の部分を省いて書いてみたやつなんですがやはり同じ結果に
なってしまいます。どこがまずいですか?また、どうすればいいですか?

float *jouzan(float a[4][4],float b[4][4]){
float c[4][4];
return c;
}
void main(void){
float a[4][4],b[4][4],c[4][4];
c=jouzan(a,b);
}

949 名前:948 :2005/05/14(土) 19:40:54
ちなみに文章中のA、B、Cというのはそれぞれ行列のことです。
Xは行列の乗算の時につかうクロスです。
わかりにくくてすいません。

950 名前:デフォルトの名無しさん :2005/05/14(土) 19:58:33
>>948
それコンパイル通らないだろ。

951 名前:デフォルトの名無しさん :2005/05/14(土) 20:08:50
これじゃ駄目?

#include <stdio.h>

void jouzan(float a[4][4], float b[4][4], float c[4][4])
{
// 行列演算の結果をcへ代入
}

void main(void)
{
float a[4][4], b[4][4], c[4][4];
jouzan(a, b, c);
}

952 名前:948 :2005/05/14(土) 21:30:07
>>951
関数の中で計算結果を引数に代入ってどういう風にすればいいんですか?
たとえば普通にc[1][1]=2;とかやってもだめですよね?

953 名前:デフォルトの名無しさん :2005/05/14(土) 21:33:39
行列の前にCの基礎から勉強し直した方がいいと思うよ。

954 名前:948 :2005/05/14(土) 21:42:59
できますね^^;
ありがとうございました

955 名前:デフォルトの名無しさん :2005/05/14(土) 22:45:03
>>935
CEにしかないAPIはWin32では使えないよ。

956 名前:948 :2005/05/15(日) 00:15:39
たびたびすいません
配列の中身を全部
同じ型の別の変数に代入するにはどうするにはどうしたらいいですか?
for文使っても出来ますけどそれだとながくなっちゃうんで
もっと短く書きたいんですけどぉ。

957 名前:デフォルトの名無しさん :2005/05/15(日) 00:20:30
memcpyとか、std::copyとか。
構造体でくるんで直接代入とか。

958 名前:デフォルトの名無しさん :2005/05/15(日) 00:22:12
>>956
自分で関数を作るとあら不思議。
一行ですむぞ。

959 名前:デフォルトの名無しさん :2005/05/15(日) 00:43:06
template使えばもっと楽になるぞ。

960 名前:デフォルトの名無しさん :2005/05/15(日) 02:02:16
D3DX使えばもっともっと楽に。

961 名前:デフォルトの名無しさん :2005/05/15(日) 10:03:01
すいません。コードの隣に行数を表示させたいんですけど。
教えて下さい

962 名前:デフォルトの名無しさん :2005/05/15(日) 10:08:33
>>961
>>108以降を読め

963 名前:デフォルトの名無しさん :2005/05/15(日) 10:42:02
throwした時にアウトプットに出る、
「例外処理 (初回) は〜〜」ってのを表示しなくすることは出来ますか?
出来れば特定の例外だけ、とか…

ループの中で使ったら凄いことに。

964 名前:デフォルトの名無しさん :2005/05/15(日) 14:29:48
クラスウィザードで追加すると、private, public, 関数, 変数関係なく、
追加された順にヘッダーにもプロトタイプ宣言されて行くのなんとかなりませんか?
ぐちゃぐちゃしてきて、気持ち悪くなりました。
せめて、関数、変数の区分で整理して貰いたいんですけど・・・

965 名前:デフォルトの名無しさん :2005/05/15(日) 14:39:55
>>964
自分で整理する。あ、VC6だと認識できなくなるかな? その場合はVC7に移行しよう。

966 名前:デフォルトの名無しさん :2005/05/15(日) 14:59:49
>>964
つ[ケロリン]

967 名前:デフォルトの名無しさん :2005/05/15(日) 15:42:46
やっぱひなびた温泉の桶はケロリンだよなー

968 名前:デフォルトの名無しさん :2005/05/15(日) 15:49:13
授業で初めてプログラムを体験し、とても楽しかったので家でも勉強しようと、
C言語のソフトを買いにいきました。店員さんに尋ねたところVisualC++.netを薦められました。
C言語とC++言語の違いを簡単に説明していただき、このソフトはどちらの言語も使えると言われたので
C言語の参考書と一緒に購入しました。
使い始めたのですが、プロジェクトの種類など、最初に選択する項目が沢山あってよくわからなかったので
付属のマニュアルどおりに

win32プロジェクト>アプリケーションの設定>コンソールアプリケーションにチェック
>空のプロジェクトにチェック>新しい項目を追加>C++ファイル

で画面にHell,Worldと表示するプログラムを作りました。
これを参考書の通りにC言語の形式で書き直したのですが、問題なく実行できました。
次に、int a に数字を代入してPrintfで画面に表示するプログラムを作成したのですが
表示されるaの値が何を代入しても12477・・・ととても大きな値になってしまいます。
内容は以下の通りです。
#include <stdio.h>
int main()
{
int a;
a=10;
printf("aの値は%dです。\n",&a);
return 0;

}
どなたか助言おねがいします。



969 名前:デフォルトの名無しさん :2005/05/15(日) 15:52:32
printf("aの値は%dです。\n",a);

970 名前:デフォルトの名無しさん :2005/05/15(日) 15:54:36
&はどこで覚えたんだ。scanfあたりか

971 名前:デフォルトの名無しさん :2005/05/15(日) 15:56:08
>>968
それはたぶんC言語だから
Cのスレへどうぞ

972 名前:デフォルトの名無しさん :2005/05/15(日) 15:59:10
C言語なら俺に聞け! Part 106
http://pc8.2ch.net/test/read.cgi/tech/1113102515/
【初心者歓迎】C/C++室 Ver.17【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1115958601/
C言語ならママに聞け
http://pc8.2ch.net/test/read.cgi/tech/1087648569/
C言語のポインタってなんですか?
http://pc8.2ch.net/test/read.cgi/tech/1056082808/
C/C++の宿題を片付けます 43代目
http://pc8.2ch.net/test/read.cgi/tech/1115794784/

973 名前:デフォルトの名無しさん :2005/05/15(日) 16:05:03
C++相談室 part40
http://pc8.2ch.net/test/read.cgi/tech/1113408957/
C統合・質問スレッド
http://pc8.2ch.net/test/read.cgi/tech/1068359871/
C言語の第一歩
http://pc8.2ch.net/test/read.cgi/tech/1031374980/
C言語教室
http://pc8.2ch.net/test/read.cgi/tech/1099552998/
C++は難しすぎ 難易度:2
http://pc8.2ch.net/test/read.cgi/tech/1071697977/
C言語のすばらしい入門書
http://pc8.2ch.net/test/read.cgi/tech/1114004586/
【独習C】本を読んで質問【独習C】
http://pc8.2ch.net/test/read.cgi/tech/1112760409/
Cだけど何か質問ある?
http://pc8.2ch.net/test/read.cgi/tech/1103977418/

974 名前:デフォルトの名無しさん :2005/05/15(日) 16:28:53
>>972-973
無言の圧力

975 名前:デフォルトの名無しさん :2005/05/15(日) 16:54:52
>>968

丁寧な前置きになんかワロス

976 名前:デフォルトの名無しさん :2005/05/15(日) 19:06:56
インモーダルで作ったダイアログボックスに描画したいのですが、どのメッセージに引っ掛ければいいのか分かりません。
OnCreateやOnShowWindowが妥当だと思ったのですが、これらでは描画されません。
OnSizeで描画されるので描画部分がおかしいということはないとおもうのですが、どうしたらいいのでしょう

977 名前:デフォルトの名無しさん :2005/05/15(日) 19:22:10
オーナードローってことなら↓WM_DRAWITEM
DrawItem(LPDRAWITEMSTRUCT lpdis);


978 名前:デフォルトの名無しさん :2005/05/15(日) 20:24:01
>968
一応釣られると。&a→aに直すだけで良いよ。
&aにすると10を格納した変数aのアドレスが表示されるから。

979 名前:976 :2005/05/15(日) 20:48:04
レスありがとうございます。
ダイアログボックス内のピクチャビューに描画するのですが、これはオーナードローになるのでしょうか?
(コントロール自体はリソースエディタで貼り付けているのでオーナードローではないような気もするのですが・・・)

980 名前:デフォルトの名無しさん :2005/05/15(日) 20:52:23
ギコナビのようにウィンドウがいくつかの小窓に分かれていて、
互いのサイズを変えられるようにするにはどうしたらいいのですか?

981 名前:デフォルトの名無しさん :2005/05/15(日) 21:14:36
>>980
CSplitterWnd を使う

982 名前:デフォルトの名無しさん :2005/05/15(日) 21:17:06
>>979
ピクチャービューってSTATICコントロールのやつ?
タイプをオーナードローにすれば親から描くことになるよ
サブクラス化して自分で描かせてもいいけど

983 名前:976 :2005/05/15(日) 21:54:21
>>982
そう、それです。
タイプでオーナードローはチェックしていません。
コードディングでグラデーションをつけているのですが、これがOnShowWindowなどでは動作しないのです。

984 名前:デフォルトの名無しさん :2005/05/15(日) 22:08:21
こんばんは。質問です。

キーボードをhookしてます。
hhook= SetWindowsHookEx (WH_KEYBOARD, (HOOKPROC) cck_hook, hinst, 0);

例えば、キーが押されたときに
240のキーだったら、17のキーにする、といったことが
やりたいのですが、このプログラムだと
(1)で行った変更が反映されません。
どのようにすればよいでしょうか?

LRESULT CALLBACK cck_hook (int msg, WPARAM wp, LPARAM lp)
{
if (wp == 240)
{
wp = 17;// (1)
}
return CallNextHookEx (hhook, msg, wp, lp);
}

985 名前:デフォルトの名無しさん :2005/05/15(日) 22:18:10
次スレ次スレ
そろそろ次スレ↓

986 名前:デフォルトの名無しさん :2005/05/15(日) 22:24:06
CSplitterWndを使ってますが出だしでつまづいてます。
CMainFrame::OnCreateClientで2*2の分割ウィンドウを作っていますが(ウィザードが自動生成)、
CMainFrame::OnShowWindowでサイズを変更しようとしても受付けてもらえません。
(↓のコードで設定をしてそれを読み出していますが、最小値しか反映されません)
このコードで問題ないとおもうのですが何がいけないのでしょうか?

void CMainFrame::OnShowWindow(BOOL bShow, UINT nStatus) 
{
    CFrameWnd::OnShowWindow(bShow, nStatus);
    
    CRect wndRect;
    int a, b;

    GetClientRect( &wndRect);
    m_wndSplitter.SetRowInfo( 0, 100, 100);
    m_wndSplitter.SetRowInfo( 1, 100, 25);
    m_wndSplitter.SetColumnInfo( 0, 100, 100);
    m_wndSplitter.SetColumnInfo( 1, 100, 100);
    m_wndSplitter.GetRowInfo( 0, a, b);
    m_wndSplitter.GetRowInfo( 1, a, b);
    m_wndSplitter.GetColumnInfo( 0, a, b);
    m_wndSplitter.GetColumnInfo( 1, a, b);
    m_wndSplitter.RecalcLayout();
    
}


987 名前:デフォルトの名無しさん :2005/05/15(日) 22:32:41
ウィザードで作ったやつでサイズを確認
任意のサイズに修正
余計な所をいじる必用はない

988 名前:デフォルトの名無しさん :2005/05/15(日) 23:25:26
>>984
NTならWH_KEYBOARD_LLでうまくいった気がする
DirectXには効かないが

989 名前:デフォルトの名無しさん :2005/05/16(月) 01:30:29
>>988
レス、ありがとうございました。
やってみます。

990 名前:デフォルトの名無しさん :2005/05/16(月) 01:35:08
VC++を学びたいのですが、どこから手を突けたらよろしいでしょうか?
体系的に学べて良質なWebサイトがありましたら誘ってください

991 名前:デフォルトの名無しさん :2005/05/16(月) 02:20:31
MSDNとかかなぁ

992 名前:デフォルトの名無しさん :2005/05/16(月) 05:34:27
>>983
コードディング

   コードディング

993 名前:デフォルトの名無しさん :2005/05/16(月) 05:49:23
>>983
サブクラス化したってこと?
それならWM_PAINTでいいよ

994 名前:デフォルトの名無しさん :2005/05/16(月) 10:46:21
行番号を表示しようと思ってログを見たのだが
VC++6.0じゃ表示できないのですか?
.NETでないとだめ?

995 名前:デフォルトの名無しさん :2005/05/16(月) 11:09:55
次スレはどこでしょうか?

996 名前:デフォルトの名無しさん :2005/05/16(月) 11:22:04
>>995
立てました
http://pc8.2ch.net/test/read.cgi/tech/1116209988/l50

997 名前:デフォルトの名無しさん :2005/05/16(月) 11:27:31
>>994
ステータス バーに何行何列と表示される。
errorやwarningが出たら、F4キーを押してエラー箇所に移動できる。
普通の人ならこれで十分だ。

998 名前:デフォルトの名無しさん :2005/05/16(月) 11:30:49
ダブルクリックで移動

999 名前:デフォルトの名無しさん :2005/05/16(月) 11:31:42
初心者がVisual C++を教えるスレ

1000 名前:デフォルトの名無しさん :2005/05/16(月) 11:32:24
ぬるぽ


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