■過去ログ置き場に戻る■
1-
前250
最新50
[memo]
"9999999999_00.html#R20"
という感じで、URLの最後に "#R
レスNo
" を追加すると幸せになれます。
★初心者にVisual C++を教えるスレ★ Part10
751
名前:
デフォルトの名無しさん
:04/02/21 12:33
>>749
コントロールのやつなら、
やはり
>>750
のツールバータブで
「コントロール」をチェックすると表示されますた。
752
名前:
デフォルトの名無しさん
:04/02/21 12:34
>>750
表示されました。本当にありがとうございました。
753
名前:
デフォルトの名無しさん
:04/02/21 13:08
>>745
デフォルトでは多重宣言になるよ。
しかし、この拡張機能だけをOFFにすることができる。
ほかにも、特定の警告をOFFに出来たりする。
便利。
つか、可能ならさっさと乗り換えた方がいいと思うが。
>>747
Cでも最新ならできるんじゃないのか?
754
名前:
デフォルトの名無しさん
:04/02/21 13:14
>>753
>Cでも最新ならできるんじゃないのか?
ブロックの先頭以外の変数定義って駄目じゃ無かった?
755
名前:
753
:04/02/21 13:39
>>754
C99で参照前なら先頭でなくても良くなった。
今手元に規格書無くて正確なソースが示せないが。
ま、Cスレネタだな。
VCなら.cでも以前から通るだろ?
756
名前:
デフォルトの名無しさん
:04/02/21 13:40
>>753
多重宣言ってコンパイルエラーってこと?
stroustrupも認めている書き方なのに
デフォルトで使えないとはねぇ。
乗り換えたいけど金が厳しいのも事実。
VS,NET Pro 10万円は高いよー。
757
名前:
デフォルトの名無しさん
:04/02/21 13:51
>>755
( ・∀・)つ〃∩ ヘェ〜ヘェ〜
>VCなら.cでも以前から通るだろ?
通らない。
758
名前:
753
:04/02/21 14:30
>>756
そう。
VC6だとMS拡張をOFFすれば、規格通りになったんだっけ?
まー、自社の旧Verとの互換性の方が大事だからデフォルトで拡張が有効なのは当然といえば当然。
ループを抜けた後でカウンタを参照するのに便利だからってことらしいんだけど、
ブロック先頭でしか宣言できなかったCからの流れだとそれが自然に出来てたから、その流れなのかも。
>>757
( ・∀・)つ〃∩ ヘェ〜ヘェ〜
.cでも//コメントとか使えるのにな。
759
名前:
デフォルトの名無しさん
:04/02/21 15:05
>>758
> .cでも//コメントとか使えるのにな。
// 形式のコメントは使えても、ソースの意味が変わらない (例外あるか ?) からいいけど、for(int i 〜) はプログラムの意味が変わってしまうことがあるからな。
static int i;
static void foo()
{
for(int i = 0; i < 10; i++){ 〜 }
if(i == 0){ 〜 }
}
常にコンパイルエラーになるなら、被害は少ないんだが...。
760
名前:
貧乏紙
:04/02/21 17:43
VC++でDDXだっけ?ダイアログの値を持ってくるやつ。
UpdateData(true);
UpdateData(false);
のやつで、グローバル変数のint配列に入れてSerialize(CArchive& ar)で読みたいのですが
ダイアログのボタン押して配列にセットまではできたのですが、Serialize(CArchive& ar)から
みると値が入っていないんですよ。
僕の考えではMFCのオブジェクト(○○Appクラスの唯一のオブジェクト)ができた時点の値しか
みえてない。つまり、グローバル変数をプログラム実行中に変えたとしても
Serialize(CArchive& ar)の中では変わってない。と考えてます。どうでしょう。
ちなみのダイアログベースのプログラムに仮想関数の実装でSerialize(CArchive& ar)
を実装してます。
761
名前:
デフォルトの名無しさん
:04/02/21 18:18
>>666
おながい。
これが出た後、1回終了して、
もう1度実行しようとすると、エラーが出て出来ないんですよ。
なぜ?
762
名前:
761
:04/02/21 18:22
ちなみにVisual C++6.0で、ブレークポイントなんぞ入れてないし、
スケルトンプログラムを実行するだけで、ほんとーうに時々だけど出るのでエス。
763
名前:
デフォルトの名無しさん
:04/02/21 18:45
>>761
VCじゃなくて、自作アプリケーションのタイトルバーに
[停止]って出るの? スケルトンでも?
764
名前:
761
:04/02/21 18:49
>>763
あ、VCの方です。
いつもは「プロジェクト名 Microsoft Visual C++ [実行]」って
出てるところです。それの[実行]が[停止]になるとです。
スケルトンすらおかしいのかしらん。
765
名前:
デフォルトの名無しさん
:04/02/21 19:08
デバッガから起動しておいて止まると何が問題なのか?
766
名前:
デフォルトの名無しさん
:04/02/21 20:27
>>764
ビルド > 実行
で実行してる?
「デバッグの開始」で実行してないよね?
767
名前:
761
:04/02/21 21:00
え?最近はじめたばかりなんでよー分からんのですが、
F7押したあとF5押してまつ。これだめ?
768
名前:
デフォルトの名無しさん
:04/02/21 21:33
たまによくわからんけど混合モードとかで停止する事はあるね。
まあ気にしないで、またF5押せば先進むしw
769
名前:
デフォルトの名無しさん
:04/02/21 21:38
>>767
F7 -> ビルド
F5 -> デバックの開始
ですね。
通常は「実行」で「停止」はなんらかの原因で
デバッグ中のアプリケーションの実行が停止
した状態です。
どういう原因で停止したか、までは分かりませんが。
デバッグ無しの実行の場合は
ビルド > 実行
もしくは ctrl + F5 です。
770
名前:
デフォルトの名無しさん
:04/02/22 08:43
>>767
普段はデバッグ実行でいいんじゃないかと。
止まったらコールスタック表示してどの関数で止まったか確認すれば?
771
名前:
デフォルトの名無しさん
:04/02/22 08:44
バグが発生してプログラムが思うように進まなくなると
彼女とHして現実逃避してます
全然進みません
どうしたらいいのでしょうか?
772
名前:
デフォルトの名無しさん
:04/02/22 08:52
現実逃避に使われる彼女が可哀想なので別れてください
773
名前:
761
:04/02/22 10:14
あー、なんでなんだろう、もう1回スケルトン書き直してみようかなぁ。
それでも出るようだったら、気にしないようにします。
みなさんテンキュ!
774
名前:
デフォルトの名無しさん
:04/02/22 10:37
エディットボックスの中で正しく改行をする方法を教えて下さい。
ダイアログの中にエディットボックスを作り、次のようにして初期の文字列を
設定していますが、改行コードが文字化けして上手く改行してくれません。
CEdit m_ctrlEdit;
m_ctrlEdit.SetWindowText( "\nTest\nTest\nTest");
リソースエディタでエディットボックスのプロパティもいじり、
「スタイル」タブにおいて、「改行を許可」と「複数行」にもチェックを入れて
あります。
誰かわかる方はいませんでしょうか?
775
名前:
デフォルトの名無しさん
:04/02/22 11:52
\r\nで。
776
名前:
774
:04/02/22 12:04
>>775
ありがとうございます。解決です!
777
名前:
デフォルトの名無しさん
:04/02/22 13:46
VC.NET2003のMSDNの日本語化の具合はどんなですか?
VC6は、英語ドキュメントが多すぎて
辟易してるんですが。
778
名前:
デフォルトの名無しさん
:04/02/22 13:48
>>777
日本語化されている部分とされていない部分があります。
779
名前:
デフォルトの名無しさん
:04/02/22 14:11
>>777
進んでるところも有るが、全体としてはあんまり変わらない気がするな。
C/C++言語規約部分が英語のままなのはちょっとショック。
フィルタを日本語ドキュメントで検索してたら出てこなくて慌てた。
780
名前:
デフォルトの名無しさん
:04/02/22 14:31
>>778-779
ありがとうございます。
有料でもいいから完全日本語版が欲しいです。
781
名前:
デフォルトの名無しさん
:04/02/22 16:57
>>780
全文訳業者に発注したら?
金が出せるなら引き受けてくれるだろ
782
名前:
デフォルトの名無しさん
:04/02/22 17:06
メニューに新しい項目を作ってそのハンドラを作ったのですが何故かハンドラが呼ばれなかったので
調べて見るとResource.hで自分が宣言したIDに割り当てられている数字が小さいのが原因でした。
× #define ID_TEST_PROGRESS 0
○ #define ID_TEST_PROGRESS 131
・ID(コマンド?)に割り当てられる数値の範囲が決まってると推測したのですが
そのへんのいいドキュメントはありませんか?
・メニューを作るときにID名を決める、Resource.hを編集するという2stepを踏んでるのですが
正しくはどうやってメニューエディタでIDを割り当てればいいのでしょう?
VC.NETを使っています。
よろしくお願いします。
783
名前:
デフォルトの名無しさん
:04/02/22 17:34
>>782
VCではResource.hを自分の手で編集するというようなことはほとんどしないよ。
それを自動でやってもらうためのVCなんだし。
リソースのプロパティやなんかでIDを設定すれば適当な値が設定されるはずだが。
784
名前:
デフォルトの名無しさん
:04/02/22 17:46
>>781
1万までは出すけど、それ以上は出せない。
785
名前:
デフォルトの名無しさん
:04/02/22 17:49
ハァ?
そんなんじゃVC++.NET Stdすらも買えないじゃねーかよ
786
名前:
782
:04/02/22 17:52
>>783
わたしもそう思ってたし、そうできてた気がするんですが
なんで0が設定されるんだろう・・・_| ̄|○
787
名前:
デフォルトの名無しさん
:04/02/22 17:52
>>782
ウインドウメッセージなら WM_USER + ???? で指定するんだけど、
メニューコマンドも制限あったかな?
788
名前:
デフォルトの名無しさん
:04/02/22 17:53
>>785
翻訳に1万ってことだって。
文脈で分かりそうなものだが・・・。
789
名前:
デフォルトの名無しさん
:04/02/22 17:58
>>788
一万程度でできるならさ
MSがやってVCに標準で付けると思わない?
文脈以前の常識の話
790
名前:
デフォルトの名無しさん
:04/02/22 18:28
>>786
リソースID設定するときに、=0つけちゃったんじゃないの?
791
名前:
デフォルトの名無しさん
:04/02/22 18:46
IDの話ついでに
VC7には「シンボルブラウザ」というやつがないのかな?
見当たらないんだが
792
名前:
デフォルトの名無しさん
:04/02/22 19:33
>>789
そういうもんかな。
俺はまたMSが嫌がらせでやってるのかといぶかしんでるが。(w
一人1万でもユーザー1万人くらいはいるだろ?
そうすると1億程度の収入にはなるはずだが。
793
名前:
デフォルトの名無しさん
:04/02/22 21:06
MSDNの日本語化パッチを
シェアウェアにしていいですか?
794
名前:
デフォルトの名無しさん
:04/02/22 21:17
>>793
著作権の問題がありそう。
795
名前:
デフォルトの名無しさん
:04/02/22 21:21
例えば
C:\WINDOWS\デスクトップ\application.exe
とパスを入力するとapplication.exeが起動するようにするには
どうしたら良いでしょうか?
796
名前:
デフォルトの名無しさん
:04/02/22 21:32
VC++でダイアログにコンボボックスを配置してプログラムを組みました。
コンボボックスのアイテムはSendMessageを使って追加するようにしました。
いざ実行してみたのですが、コンボボックスの右の▼のところをクリックしても
下にリストは出てきません。
どういう風にすれば、リストを表示できるのか教えてください。
環境はVisual C++6.0です。お願いします。
797
名前:
デフォルトの名無しさん
:04/02/22 21:36
>>795
クリエイトプロセスAPIかウインエグゼックAPI
798
名前:
デフォルトの名無しさん
:04/02/22 21:40
>>796
ちゃんとリストに追加されているかデバッグして確認しなさい
799
名前:
796
:04/02/22 21:42
>>798
追加はちゃんとされてます。
上下ボタンを押すことでアイテムを選べますので。
800
名前:
デフォルトの名無しさん
:04/02/22 21:49
>>796
ドロップダウンリストかな?
リソースエディタを使ってるなら、エディタで
コンボボックスの右側の▼を押すと、ドロップ
ダウンしたときのサイズが表示されるので、
このサイズを拡張すればいいはず。
801
名前:
デフォルトの名無しさん
:04/02/22 21:52
>>800
あのインターフェースよくないよ。
と言うか、ディフォルトで適当なサイズが表示されるようになっていれば、こういう質問も減ると思うのだが。
802
名前:
796
:04/02/22 21:52
>>800
できました。
コントロール自体のサイズを大きくしなければならなかったんですね…。
VBから移行したのでそんな概念全くありませんでした。
ありがとうございました。
803
名前:
デフォルトの名無しさん
:04/02/22 21:57
>>801
それは同意。
初め、俺もかなり悩んだ。
804
名前:
デフォルトの名無しさん
:04/02/22 22:15
ダイアログエディタ上でコンボボックスの高さは変えられないんですか?
フォントに依存?
805
名前:
デフォルトの名無しさん
:04/02/22 22:19
>>804
普通に変えられるだろ?
フォントの差異によってサイズに影響が出るのはどのコントロールもおなじ
806
名前:
795
:04/02/22 22:38
パスにc:\\windows\デスクトップ\test.txtを入力すると
C:\Windows\デスクトップ\Vc++\Filerun\main.cpp(31) : warning C4129:
'テ' : エスケープ シーケンスとして正しく認識されませんでした。
と出るんですがこれはどういう意味でしょうか?
807
名前:
デフォルトの名無しさん
:04/02/22 22:39
\が1つ足りん
808
名前:
デフォルトの名無しさん
:04/02/22 22:41
>>806
Cの基礎
「エスケープ文字」について調べてみよう
809
名前:
795
:04/02/22 22:43
>>807
出来ました。ありがとうございます
>>797
すいません。お礼を言うのを忘れてました。
ありがとうございます。
810
名前:
795
:04/02/22 23:11
CreateProcess(NULL,"notepad.exe c:\\windows\\デスクトップ\\test.txt",NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
こう記述するとc:\\windows\\デスクトップ\\上のtest.txtがnotepad.exeで起動するわけですが
普通の実行ファイルだった場合(例えばsleipnir.exe等)はどうすればよいですか?
811
名前:
デフォルトの名無しさん
:04/02/22 23:14
>>810
ん? そこまで分かってってなんでワカランの?
CreateProcess(NULL,"sleipnir.exe",NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
812
名前:
デフォルトの名無しさん
:04/02/22 23:14
フルパスで指定汁
813
名前:
デフォルトの名無しさん
:04/02/22 23:21
>>810
起動するだけならこちらの方が分かりやすいだろう
CString AppStr = _T("C:\\Program Files\\Internet Explorer\\iexplore.exe"); //パス
CString OptionStr = _T(""); //起動オプション文字列
ShellExecute(m_hWnd, _T("open"), AppStr, OptionStr, NULL, SW_SHOW);
ShellExecuteは実行ファイルパス以外なら関連づけを元に設定されている
実行ファイルでそのファイルを開く。URL(
http://
)ならブラウザとか。
814
名前:
デフォルトの名無しさん
:04/02/22 23:27
便乗質問すいません。
_T って無いとまずいんですか
815
名前:
デフォルトの名無しさん
:04/02/22 23:30
_Tはウニコード以外だとプリプロセッサにあぼーんされる。
Shift_JISだとイラン
816
名前:
795
:04/02/22 23:31
>>813
すいません。MFCはあまり使い方等が分からないもので…。
>>812
フルパスってことは
CreateProcess(NULL,"c:\\windows/デスクトップ/sleipnir.exe",NULL,NULL,FALSE,0,NULL,NULL,&si,&pi)
と指定しろってことですか?実行しても無反応だったのですが・・・
817
名前:
デフォルトの名無しさん
:04/02/22 23:33
釣り?
818
名前:
デフォルトの名無しさん
:04/02/22 23:33
>>816
CreateProcessの戻り値くらい見ろよー。
"c:\\windows\\デスクトップ\\sleipnir.exe"
819
名前:
795
:04/02/22 23:41
>>818
はぁ〜出来ました。お騒がせしました。
すいません最後に…ショートカットはどうすれば良いでしょうか?
"c:\\windows\\デスクトップ\\sleipnir.lnk"では無理ですた
820
名前:
デフォルトの名無しさん
:04/02/22 23:43
>>819
ShellExecute だと動くんでねーのか?
やったことは無いけど。
821
名前:
デフォルトの名無しさん
:04/02/22 23:44
>>819
どぞー
http://www.google.co.jp/search?q=vc+%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%80%80%E3%83%AA%E3%83%B3%E3%82%AF%E5%85%88%E3%80%80%E5%8F%96%E5%BE%97&ie=UTF-8&oe=UTF-8&hl=ja&lr=
822
名前:
デフォルトの名無しさん
:04/02/22 23:44
>>814
_Tマクロは文字コードの互換性をもたせるために付けておくもの
コンパイルされたときに適切なコードの方にしてくれる
もし将来ユニコードでコンパイルし直す必要が出たとしても
コードの書き直しをする必要がなくなる
Tの付く文字列も同じ
TCHAR < CHAR
LPTSTR < LPSTR
823
名前:
デフォルトの名無しさん
:04/02/22 23:46
だからCreateProcessなんてややこしいもの使わずにShellExecute使えよ
必要ないんだろ?
824
名前:
795
:04/02/22 23:48
>>820
、822、823
アドバイスありがとうございました。
本当にお世話になりました。
825
名前:
795
:04/02/22 23:48
822→821ですた
826
名前:
デフォルトの名無しさん
:04/02/22 23:53
>>795
のコードだと CreateProcess がメモリーリークしていそうな予感。
827
名前:
デフォルトの名無しさん
:04/02/23 00:03
>>822
_Tマクロを律儀に使ってるヤシって居るのか?
828
名前:
デフォルトの名無しさん
:04/02/23 00:16
うにこーど 使うことないしなー どんなときに使うのよ
829
名前:
デフォルトの名無しさん
:04/02/23 00:30
プロのPGで_Tマクロを使わない奴は、明らかに低レベルPGだろ。
830
名前:
デフォルトの名無しさん
:04/02/23 01:09
んなぁこたぁない。
831
名前:
デフォルトの名無しさん
:04/02/23 01:15
そもそも_Tを使う場面のほうが限られすぎてるな
832
名前:
デフォルトの名無しさん
:04/02/23 01:33
>>828
そういうキミこそ使うべき。そう思っていて適当にやっていると、ある時既存のコードを
ユニコードでコンパイルし直す必要が出て困ることになる。プロジェクト自体は使わない
としても、部分コードを使い回すこともあるだろうし、全体にきれいなコードを書くクセ
をつけておいた方がベターだと思うよ。
別にそれがあったからって問題になるわけじゃなし、文字列に_T付けるだけなんだから
クセにして統一しておく。
833
名前:
デフォルトの名無しさん
:04/02/23 01:45
>ある時既存のコードをユニコードでコンパイルし直す必要が出て困ることになる
そんなこと絶対にない。
むしろVCやWindowsの中途半端なunicode対応による弊害の方がずっと大きくなる。
unicode対応が必要なら専用の処理をきっちり書き上げるべき。
〜W関数を使うかどうか程度の差しかないんだから。
834
名前:
デフォルトの名無しさん
:04/02/23 06:15
「絶対にない」 と言い切ってるところがすごいな…
将来が見えるのか…
> 〜W関数を使うかどうか程度の差しかないんだから
UNICODE, _UNICODE 定義すれば、
勝手に 〜A 〜W を変えてくれるんだけどなぁ…
ライブラリなんかは、将来どうなるかわからんのだから
特に _T( ) で囲っておいたほうが良いだろうな。
835
名前:
デフォルトの名無しさん
:04/02/23 06:46
そもそも_T()しておいてコンパイルターゲット変えただけのアプリに意味があるとは思えないけど
実際どうなんだろう
836
名前:
デフォルトの名無しさん
:04/02/23 08:00
>>835
意味があるから使ってんだよ
837
名前:
デフォルトの名無しさん
:04/02/23 08:03
最近は95/98系非サポートでもいいのが増えてきたから
UNICODEビルドを多用してるな。
838
名前:
デフォルトの名無しさん
:04/02/23 10:14
Unicode <-> Shift-JIS の変換APIってあるんだっけ?
内部でUnicodeで処理しても、出力はShift-JISにしたい
ってことはわりとあると思うんだが。
839
名前:
デフォルトの名無しさん
:04/02/23 10:51
>>838
あるか?
840
名前:
デフォルトの名無しさん
:04/02/23 11:08
あるよ
841
名前:
840
:04/02/23 11:11
あるっつったのはAPIの方ね
WideCharToMultiByte() と MultiByteToWideChar()
842
名前:
デフォルトの名無しさん
:04/02/23 12:36
main関数とclassの宣言・定義を別のファイルに分けて書きたいととき、
ヘッダファイルの中身&各ファイルのプリプロセッサ制御文はどうすればいいのでしょう?
誰か教えて
843
名前:
デフォルトの名無しさん
:04/02/23 13:02
>>842
好きにすればいいと思うけど
844
名前:
デフォルトの名無しさん
:04/02/23 13:57
vbとvcの違いを教えてくれ
845
名前:
デフォルトの名無しさん
:04/02/23 13:58
>>844
vcってなんですか?
846
名前:
デフォルトの名無しさん
:04/02/23 14:03
>>844
文字コード
847
名前:
デフォルトの名無しさん
:04/02/23 15:04
現在ニューヨーク在住で、
IT関連で職を探しています。
面接の時、マイクロソフトの
純粋なプログラミングでアプリケーション
作ったことありますか? と、聞かれ…
はい、MFCを使ってと答えたら怒られました。
どういうことですか?
848
名前:
デフォルトの名無しさん
:04/02/23 15:09
int データを char に変換して出力したいのですが、どう書いたらいいでしょうか?
849
名前:
デフォルトの名無しさん
:04/02/23 15:10
「API直書きでWindowsアプリを書いたことがあるか」
という意味だったと思われ。
850
名前:
デフォルトの名無しさん
:04/02/23 15:43
int i;
(char)i;
851
名前:
デフォルトの名無しさん
:04/02/23 15:49
>>847
その質問はした香具師もよく分かってなさそうだな
やめて正解では?
852
名前:
通行人A
:04/02/23 16:02
>>847
,849
pure=混ざりもの無し=ライブラリ無し=WIN32API only ってことですかな。
ふーむ。
853
名前:
デフォルトの名無しさん
:04/02/23 16:15
MFCも純粋なMS製ライブラリだけどな。
「MSの純粋なプログラミング」なんて初めて聞く表現だ。
854
名前:
デフォルトの名無しさん
:04/02/23 16:34
>>847
つっこんで欲しかったんじゃないの?
・・・んなこたーない
855
名前:
デフォルトの名無しさん
:04/02/23 16:48
>>854
そうだと思うよ。
856
名前:
デフォルトの名無しさん
:04/02/23 16:57
顧客からの要求で不明瞭な表現があった場合、確認できるかどうか
を問う面接だった可能性も無いことも無いけど
そうなるともうこのスレというか板の範疇では無いね。
857
名前:
デフォルトの名無しさん
:04/02/23 17:19
VC++ .NET 2003について教えてください。
例えば、FormのWndProcをオーバーライドする場合、Form1.hとかに
直接void WndProc… とか書かないといけないのでしょうか?
デザイナとかから簡単にはできないのでしょうか?
あと、VC++6でいうところのClassWizardみたいなのはないのでしょうか?
メッセージのやりとりとかすごく不便…
858
名前:
デフォルトの名無しさん
:04/02/23 17:35
カーソルの状態変化をリアルタイムに取得→描画するソースを
作ったのですが同じカーソル画像(Arrow)しか描画できませんでした
VC++.NETのSDKです
hCurNow = GetCursor();
bRet = GetIconInfo(hCurNow, &iconInfo);
//略 ここで座標をちょこちょこいじった
if (iconinfo.hbmMask) DeleteObject(iconinfo.hbmMask);
if (iconinfo.hbmColor) DeleteObject(iconinfo.hbmColor);
DrawIcon(hdcMem, x, y, hCurNow);
上記ロジックをぐるぐる回して描画してるのですが、
「I」な表示とか「+」な表示が出てこないのです
どなたかヒントを授けてくださいませんかm(_ _)m
859
名前:
デフォルトの名無しさん
:04/02/23 20:25
>>836-837
意味があるって、だったらUNICODEビルドだけでよくない?
まったく同じで使用APIが変わるだけのアプリにどんな意味が?
860
名前:
デフォルトの名無しさん
:04/02/23 20:50
Unicode対応については各自AdvancedWindowsでも読んで納得しておけ。
絶対にUnicodeが必要ない奴は使わなくてもいいんだからそう熱くなるな。
861
名前:
デフォルトの名無しさん
:04/02/23 21:03
Debug実行すると
'C:\WINNT\system32\NTDLL.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません
という感じの情報がたくさん出てTRACEの出力が見にくいです。
デバッグ情報を見やすくするよい解決方法はないでしょうか?
862
名前:
デフォルトの名無しさん
:04/02/23 21:09
かなり環境依存の話になってしまいますが、解る方がいたら教えて下さい。
VC5.0においてDLLをデバッグするとき、プロジェクトの設定において
「追加するDLL」に特に指定しなくともシンボル情報を読み込むDLLと読み込まない
DLLがあります。シンボルがなければブレークポイントが設定できないので、ヘルプ
の記述通りにすべてのDLLを明示してシンボルを読み込むようにしてやると、今度は
ブレークポイントが無視されてしまいます。これではまともにデバッグできません。
しかも、解らないのは、デスクトップとノート、二つの機体にVCをインストールして
開発を行っていますが、デスクトップの方は特に明示せずともすべてのDLLのシンボル
情報を読み込み、デバッグ作業に問題はありません。ですが、同じプログラムを
中間ファイルを含めてノートにコピーしてデバッグを行おうとしても、最初に必ず
一度「全てのファイルを開くことはできません」との警告が発生し、他の作業は
問題なく行えるのですが、シンボルは読み込んでくれないのです。リビルドを
何度か繰り返してみてもダメでした。
わかりにくい説明で申し訳ないのですが、どなたか助けてください。
863
名前:
デフォルトの名無しさん
:04/02/23 21:15
>>861
シンボルファイルをインストールする
詳細はヘルプから「システム デバッグ シンボルのインストール」を参照
864
名前:
デフォルトの名無しさん
:04/02/23 21:17
>>862
同じディレクトリにpdbファイル置いてもだめなの?
865
名前:
デフォルトの名無しさん
:04/02/23 21:18
>>857
その辺のほとんどの部分はプロパティウィンドウに
移った模様。プロパティを隅々まで見れ
866
名前:
861
:04/02/23 21:56
>>863
ありがd。
インスコしてみます。
ttp://www.microsoft.com/whdc/ddk/debugging/symbols.mspx
867
名前:
861
:04/02/23 23:09
>>863
インストールしてみましたb
'C:\WINNT\system32\NTDLL.DLL' を読み込みました。シンボルが読み込まれました。
に、変わりました。
これが邪魔でTRACE等のデバッグ情報が見にくいです。
こいつをフィルタして表示しないようにしたいです。
もう少しキーワードプリーズ。
868
名前:
デフォルトの名無しさん
:04/02/24 00:51
これもかよ・・右クリックでいちいち消しては
869
名前:
デフォルトの名無しさん
:04/02/24 15:24
>>865
ありがとです
そうおもってプロパティウィンドウとクラスビューもチェックしたんだけど
オーバーライドとメッセージのところに何も表示されないのはなんでなんだろう…
ただの1行も表示されたことない
何か表示される/されないの条件があるんでしょうか?
870
名前:
デフォルトの名無しさん
:04/02/24 15:26
プロパティウィンドウの上にボタンがあって、
プロパティ・オーバーライド・イベント
が切り替えられなかったっけか?
871
名前:
870
:04/02/24 15:29
ゴメン。
アホだ。
それはもう表示できてたのね・・・。
それでも見れないのか・・・。
ちゃんとクラスを(あるいはフォームエディタでフォームを)選択してから表示してる。
872
名前:
デフォルトの名無しさん
:04/02/24 15:56
>>870
,871
ありがとです。
書き忘れてたのですがFrameworkを使ってます。
プロパティやイベントはちゃんと追加・変更できます。
クラスビューやオブジェクトブラウザでForm1とかを選択すると
プロパティのところにオーバーライドやメッセージのボタンがでます。
これを押して表示される画面が常に真っ白なのです。
もしかしてFrameworkではオーバーライドとかは手動で追加・削除が
基本でしょうか?(MFCではちゃんと表示されました)
873
名前:
デフォルトの名無しさん
:04/02/24 16:52
プロファイル、ってデバッグとリリースのどちらで行うべきでしょうか?
インクリメンタルリンク時に、プロファイルが出来ないのは何故でしょうか?
874
名前:
デフォルトの名無しさん
:04/02/24 20:42
ボタンにビットマップとテキスト両方表示させたいのですが、うまくいきません。
アドバイスお願いします。
875
名前:
デフォルトの名無しさん
:04/02/24 20:53
>>874
テキストをビットマップでのせたらダメなんか?
876
名前:
デフォルトの名無しさん
:04/02/24 21:42
>>874
メモリDCにビットマップを展開してその上からDrawTextとかで文字書いて
それをボタン上に表示させる。
877
名前:
デフォルトの名無しさん
:04/02/25 01:30
今度から
>>1
に 「うまくいきません」は放置っていうの付け加えませんか?
878
名前:
いずみんせんせぇ
:04/02/25 01:58
こんばんはぁ。VC.NETで常駐プログラムを作ったのですが
シャットダウン時にアプリケーションを終了するプログレスバーのウィンドウが
表示されてしまいます。シャットダウン時にウィンドウを表示させない方法教えて下さい〜
OSは2000です。
879
名前:
デフォルトの名無しさん
:04/02/25 02:11
WM_QUERYENDSESSIONとかそんなの
880
名前:
デフォルトの名無しさん
:04/02/25 02:13
もしかしてWindow作ってないとか?
見えないウィンドウでメッセージ受けられるようにして
WM_QUERYENDSESSION や、WM_ENDSESSION 、WM_QUITなどに
反応すればいいと思う
881
名前:
いずみんせんせぇ
:04/02/25 02:17
880
そぉなんですぅ。
ウィンドウ非表示なんです。
882
名前:
いずみんせんせぇ
:04/02/25 02:19
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CREATE:
OnCreate(hWnd, (LPCREATESTRUCT)lParam);
break;
case WM_TIMER:
OnTimer(hWnd, wParam);
break;
case WM_DESTROY:
OnDestroy(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
883
名前:
デフォルトの名無しさん
:04/02/25 02:38
>>881
表示非表示無関係
884
名前:
デフォルトの名無しさん
:04/02/25 09:59
うまくいきません
885
名前:
デフォルトの名無しさん
:04/02/25 12:18
>>884
人生がですか?
886
名前:
デフォルトの名無しさん
:04/02/25 15:57
カメラからイメージをキャプチャして表示するプログラムを作りたいのですが、
まったくわかりません。
よいサンプルはないでしょうか?
887
名前:
デフォルトの名無しさん
:04/02/25 16:38
>>886
CCamera camera->Caputer( "富士山" );
CFile file << camera;
888
名前:
デフォルトの名無しさん
:04/02/25 16:41
>>887
気持ちはわかるが
Caputerってなんだよ
せっかくネタ入れるならスペルくらいチェックしろよ
889
名前:
デフォルトの名無しさん
:04/02/25 16:49
>>886
DirectX9 SDKのDirectShowのサンプルが一番楽。
890
名前:
デフォルトの名無しさん
:04/02/25 17:22
>>889
サンプル見ました。
一番簡単そうなのが、PlayCapっいうのなんですが、
コンパイルが通りません。
strmbasd.libが開けないと言われます。
891
名前:
デフォルトの名無しさん
:04/02/25 17:31
strmbasd.libが開けない問題は解決できたのですが、
エラーが増えました。
外部シンボル何たらは未解決です、といわれます。
どうしたらいいでしょう?
892
名前:
デフォルトの名無しさん
:04/02/25 18:37
他のウィンドウを操作したいので、FindWindow("クラス名", NULL);でハンドルを取得しました。
しかし、目的のプログラムが起動してないときは戻り値がNULLとなると思うんですが、
そこがうまくいきません。
HWND hHandle
hHandle = NULL;
hHandle = FindWindow("#32770", NULL);
if(hHandle == NULL)
DestroyWindow(hWnd); //hWndはプログラム自身です。
else
SetWindowText(hHandle, "jacked!");
break;
こういう風に書いたのですが、どこがおかしいのでしょうか。
知恵を貸してください。
環境はVC6です。お願いします。
893
名前:
バズー
:04/02/25 18:40
Caputerはほんとうにあるんだ!
894
名前:
デフォルトの名無しさん
:04/02/25 18:41
>>892
#32770がいくつあると思ってんだ
Spy++で観察することをお勧めします
895
名前:
892
:04/02/25 18:46
>>894
なるほど…。常駐ソフトのタイトルがjacked!になってました…。
このようなプログラムのハンドルを取得したいときはどうすればいいのでしょうか。
ウィンドウタイトルは不定なのでFindWindow以外に何か使えばいいのでしょうか?
896
名前:
デフォルトの名無しさん
:04/02/25 18:58
>>895
ちょっと複雑になるが、普通のWindowを不可視状態で作り
それとやり取りするというのを昔やったことがある。
897
名前:
デフォルトの名無しさん
:04/02/25 19:02
>>895
具体的に対象は何であるか(不定でない要素が何か)を書くと良いかも
898
名前:
デフォルトの名無しさん
:04/02/25 19:02
あとは、、不可視のコントロール貼り付けて
#32770の子ウィンドウを順番にEnumWindowsして
貼り付けたコントロールのタイトルを探すとか
899
名前:
デフォルトの名無しさん
:04/02/25 20:48
はじめまして.
CreateWindowで作成したエディットコントロールの文字カーソル(「|」こんな)の位置を取得したいのですが,
どうすればよいのでしょうか? 教えてください.
900
名前:
デフォルトの名無しさん
:04/02/25 21:15
GetCaretPos()かな、使ったこと無いけど
901
名前:
899
:04/02/25 21:29
ありがとうございます.うまくいきました.
POINT構造体で結果が返ってきますが,X,Y座標はそれぞれフォントの幅と高さで割ることで
列と行が取得できました.
902
名前:
デフォルトの名無しさん
:04/02/25 21:36
>>901
スクロールやプロポーショナルフォントのときはどうする気だ。
903
名前:
デフォルトの名無しさん
:04/02/25 21:46
MFCなら
DWORD CEdit::GetSel()
を使うんだが・・・
904
名前:
デフォルトの名無しさん
:04/02/25 22:19
EM_GETSEL
SendMessage(
(HWND) hWnd, // handle to destination window
EM_GETSEL, // message to send
(WPARAM) wParam, // starting position (LPDWORD)
(LPARAM) lParam // ending position (LPDWORD)
);
MFCじゃないときはコレ使うのかな?
905
名前:
デフォルトの名無しさん
:04/02/25 23:31
いままで VC++6.0使ってて、
ついに VS.NET 2003 を買ったんだけど、
今回のMSDNって英語ドキュメントでまとめられている
部分ないのかな? なんか英語と日本語が混在してて
情報も重複しているみたいで分かりづらいんだけど。
906
名前:
デフォルトの名無しさん
:04/02/25 23:44
いままでもそうだったと思うが
907
名前:
デフォルトの名無しさん
:04/02/25 23:59
>>906
VC++6.0のときは
プラットフォームSDK
と
Platform SDK
で完全に分かれていたと思うんだけど。
新しいのは例えば
MSDNライブラリ > グラフィックおよびマルチメディア
> グラフィックおよびマルチメディア
MSDNライブラリ > グラフィックおよびマルチメディア
> Graphics and Multimedia (英語)
と深い階層で別れている。しかも「VC++ドキュメント」で
フィルタをかけると、英語の方が消えてしまう。
日本語の方は全部翻訳されていないのだから、
英語ドキュメントも含めてくれないと困るのだが。
908
名前:
デフォルトの名無しさん
:04/02/26 00:08
>>907
"DevLang" = "C" OR "DevLang" = "C++" OR "Product" = "VC" OR "DocSet" = "PSDK" OR "DocSet" = "NETFramework" OR ("DocSet" = "kbmsdn" AND "ProductVers" = "kbVC700") AND ("Locale"="kbJapanese" OR "Locale" = "kbEnglish")
Visual C++フィルタを変更して、英語も含めたら
英語ドキュメントも表示されるようになりますた。
909
名前:
デフォルトの名無しさん
:04/02/26 06:37
エディットボックスにテキスト入力してそれを
txtで保存したいんですけど、参考になるサイトありませんか?
おねがいします。
あと、ダイアログベースで作っています
910
名前:
デフォルトの名無しさん
:04/02/26 06:48
アプリケーションウィザードでSDIまたはMDIを選択。
ビューの種類にCEditViewを選択。
OKをクリック。
完成。
ダイアログベース?知らん。
911
名前:
デフォルトの名無しさん
:04/02/26 07:37
80bit/64bitの演算精度の切り替えってできますか?
あと丸めモードの切り替えはできるのでしょうか?
VC熟練者の方おねがいします.
912
名前:
デフォルトの名無しさん
:04/02/26 08:08
>>909
GetWindowText
fprintf
913
名前:
デフォルトの名無しさん
:04/02/26 08:36
>>909
GetDlgItemText
でテキストを取得した後
fputsでも使って書き出しとけ
914
名前:
デフォルトの名無しさん
:04/02/26 10:14
>>911
CPU,コンパイラ次第じゃないの?
あと、それを汲み取ってくれるOS
なんでシラネ
915
名前:
デフォルトの名無しさん
:04/02/26 11:46
>>858
です
このマウスポインタの、カーソル変動について
どなたかヒントだけでも下さいませんか(ノT.Tノ
916
名前:
デフォルトの名無しさん
:04/02/26 11:59
DrawIcon(hdcMem, x, y, hCurNow);
なんでこんなことしてんの?
しかも、カーソルのイメージ削除してるし
917
名前:
デフォルトの名無しさん
:04/02/26 13:45
>>911
>80
bit/64bitの演算精度の切り替え
Microsoft ランタイム ライブラリは数値演算コプロセッサ (またはエミュレータ) の
デフォルトの内部精度を 64 ビットに設定します。プログラムを LIB/FP10.OBJ と
リンクすることでこのデフォルトをオーバーライドし、チップ (またはエミュレータ) の
精度を 80 ビットに戻すことができます。FP10.OBJ は、リンカのコマンドラインで
LIBC.LIB、LIBCMT.LIB、および MSVCRT.LIB より前に指定する必要があります。
>丸めモードの切り替え
_control87 / _controlfp
918
名前:
デフォルトの名無しさん
:04/02/26 14:04
char文字列をstringへ変換したくて
string str = pChar;
のようにしたところ、charが16文字以上の場合、
失敗してしまうようで困っています。
(VS.net 2002を使っています。)
どのように変換すればよいのでしょうか?
919
名前:
デフォルトの名無しさん
:04/02/26 14:22
>>918
string str(pChar);
920
名前:
デフォルトの名無しさん
:04/02/26 14:43
すみません、ちょっと教えて下さい。
VC++で簡易データベースソフト、入力した各項目データを
ファイルにセーブしたり出来る、追加修正削除も可能なソフトを
作ろうと思っています。
何処か参考になる様なページ、サンプルソースは有りませんでしょうか?
921
名前:
918
:04/02/26 14:51
>>919
その方法でも16文字以上は無理なんです・・。
922
名前:
デフォルトの名無しさん
:04/02/26 15:05
こんなことを聞いてよいものか、ちょっと申し訳ないようなことなんですが、
ダイアログのリソース作る時に使う、
ボタンとかエディットボックスなどの基本的なコントロールが入った
ウィンドウが、なにやら知らないうちに消えてしまいました。
どこを見ても表示/非表示設定などが無いっぽいのですが、
どうしたら表示できるかご存知の方がおられましたら教えてください。
visualc++ 6.0を使っています。。よろしくお願いします。
923
名前:
デフォルトの名無しさん
:04/02/26 15:22
>>921
ほんとかよ?
ちゃんとヌルターミネートしてる?
924
名前:
デフォルトの名無しさん
:04/02/26 15:26
>>922
ダイアログ編集画面を表示した状態で
ツールバーのあたりを右クリックして
[コントロール]にチェックを入れる。
925
名前:
922
:04/02/26 15:28
すいません、何も無い所で右クリしたら出てきました。
926
名前:
922
:04/02/26 15:33
>>924
入れ違いだったみたいですいません。
ありがとうございました。解決できました。
927
名前:
918
:04/02/26 16:28
>>923
してます。
string st;
char c[17];
for(int i = 0; i <16; i++)
{
c[i] = 'a';
}
c[16] = 0;
st = c;
↑このようなコードでstに値が入らないんです。
928
名前:
デフォルトの名無しさん
:04/02/26 16:58
include文とかも含めてテストプログラム全体をアップしてみろ
ちなみにstの中身はどうやって確認した?
929
名前:
デフォルトの名無しさん
:04/02/26 18:13
printf( "%s\n", st );
ってやってないか?
printf( "%s\n", st.c_str() );
だぞ
930
名前:
デフォルトの名無しさん
:04/02/26 18:22
>>929
がクリティカルヒットの予感
931
名前:
918
:04/02/26 19:08
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
string st;
int num = 16;
char c[17];
for(int i = 0; i<num; i++)
{
c[i] = 'a';
}
c[num] = 0;
st = c;
return 0 ;
}
です。
確認は、returnの直前にブレークポイントを入れて
自動変数を見ています。
932
名前:
デフォルトの名無しさん
:04/02/26 19:12
printf( "%s\n", st.c_str() );
で出力してみれ
933
名前:
デフォルトの名無しさん
:04/02/26 19:23
つーかcが17に固定なのにnumを変更する意味があるのか。
934
名前:
デフォルトの名無しさん
:04/02/26 20:07
char c[17];の次の行に、
char d[1000];を入れたら動きまつか?
935
名前:
918
:04/02/26 20:11
>>932
あれ、確かにできてますね・・。
デバッガでは、単に文字量の違いから表示が変わっていただけみたいです。
バグを探していて、その原因がstringの代入ミスだと思っていた
のですが、おかげさまでそうではないことが分かりました。
ありがとうございました。
936
名前:
デフォルトの名無しさん
:04/02/26 20:21
釣りだったんじゃないだろうな・・w
937
名前:
デフォルトの名無しさん
:04/02/26 20:27
まあ、初心者は結構あのウォッチ画面にはまるんじゃないだろうか。
どうしても出力したくなきゃ、メモリの方で文字列バッファの先頭アドレスぶちんこんで直接見た方が良いんだよ。
938
名前:
デフォルトの名無しさん
:04/02/26 22:38
MFCでアイコンをプッシュボタンに表示したいのですが、アイコンが縮小?されて表示されてしまいます。
(アイコンファイルをプレビューで見たサイズより小さく表示される)
拡大して表示する方法はあるのでしょうか?
939
名前:
デフォルトの名無しさん
:04/02/26 23:29
>>938
ビットマップにすると良い
それで初期化でこんな感じにする
m_Bitmap.LoadBitmap(IDB_BITMAP1);
((CButton*)GetDlgItem(IDC_BUTTON1))->SetBitmap(HBITMAP(m_Bitmap));
940
名前:
デフォルトの名無しさん
:04/02/27 03:20
最近VS.NETを入手していじってみたんだけど、フォームのコンポーネントの
外観がかっこわるい。Win3.1から変わってないような感じ。
最近のWinXPとか、MacOSXみたいなカコイーコンポーネント無いですか?
できれば無料で。
941
名前:
デフォルトの名無しさん
:04/02/27 03:41
WinXP は、かっこえぇのかッ……!?
942
名前:
デフォルトの名無しさん
:04/02/27 03:58
VS.NETがコントロールの外観を決めていると勘違いしているアフォを発見!
943
名前:
909
:04/02/27 07:00
おくれてすいません。
ありがとうございます、今からやってみます
944
名前:
デフォルトの名無しさん
:04/02/27 08:29
>>940
OSは何をお使いで?
945
名前:
デフォルトの名無しさん
:04/02/27 19:14
割れとか言う答えをしそう
946
名前:
デフォルトの名無しさん
:04/02/27 22:36
我、OS選ばず
947
名前:
デフォルトの名無しさん
:04/02/27 22:59
♂を選ばず。 = 「やらないか?」
_| ̄|○ ォェ…
948
名前:
貧乏紙
:04/02/27 23:49
VC++5スタジオ使ってますが、ヘッダーファイルに変数とか配列をいっぱい
宣言するとコンパイルエラーにはならないが、起動しても瞬間に終了してしまいますが
これは、正規版を買えということでしょうか?
949
名前:
デフォルトの名無しさん
:04/02/27 23:54
VC++5スタジオ???????
950
名前:
デフォルトの名無しさん
:04/02/27 23:54
( ゚Д゚)ハァ?
951
名前:
デフォルトの名無しさん
:04/02/27 23:58
>>948
どういうバージョンにしろそういう制限はないよ
952
名前:
デフォルトの名無しさん
:04/02/28 00:12
>>948
わけわからん。
953
名前:
デフォルトの名無しさん
:04/02/28 01:23
正規版じゃないとウィルスしか作れません
954
名前:
デフォルトの名無しさん
:04/02/28 01:53
>>953
それはある意味スゴイ
955
名前:
デフォルトの名無しさん
:04/02/28 08:26
朝暇だから、携帯からC++勉強できるとこってない?
956
名前:
デフォルトの名無しさん
:04/02/28 08:28
>>955
そんなサイトがあるのかどうかは知らないが、
....本でも読んでりゃ良いじゃねーか
957
名前:
デフォルトの名無しさん
:04/02/28 08:45
本で勉強するという感覚のないのが最近ちょっと多いね
958
名前:
955
:04/02/28 08:59
電車だから、今日みたいな休日は空いてるから本でもいいんだけど、
平日は満員で本なんか読めないんだよ。
959
名前:
デフォルトの名無しさん
:04/02/28 10:06
>>958
PDA使えば?
960
名前:
デフォルトの名無しさん
:04/02/28 11:08
>>958
そんな満員の状態だと携帯も見れんと思うが?
961
名前:
デフォルトの名無しさん
:04/02/28 11:33
好きなサイト、コピペして
携帯にメールでも送っとけ
962
名前:
958
:04/02/28 12:41
>>959
何それ。
>>960
C++の本はでかいだろ。
>>961
今度猫のやつをコピーしてみる。
963
名前:
デフォルトの名無しさん
:04/02/28 12:54
なんとなく
>>958
の人物像を想定できる俺はスーパーハカー
964
名前:
デフォルトの名無しさん
:04/02/28 13:39
>>962
釣り?
一応マジレスしておくと、NotePCと携帯電話の中間程度の大きさと使い勝手の情報端末。
ここでも見れば見当つくだろ。
http://pc3.2ch.net/test/read.cgi/mobile/1077028872/
965
名前:
958
:04/02/28 14:06
>>962
高い。
やっぱPCからメールで送るのが一番良さそうだな。
966
名前:
デフォルトの名無しさん
:04/02/28 14:52
>>962
>C++の本はでかいだろ。
お前には俺の言わんとすることが理解出来んようだな。
屑だな。
967
名前:
デフォルトの名無しさん
:04/02/28 14:55
>>955
印刷しとけ
紙1枚ぐらいなら邪魔にならないし紛失しても問題ないだろ
968
名前:
デフォルトの名無しさん
:04/02/28 15:06
Visual C++って、どこがvisualなんですか?
969
名前:
デフォルトの名無しさん
:04/02/28 15:08
Windowが
970
名前:
デフォルトの名無しさん
:04/02/28 15:17
>>968
できあがったものがvisualっぽい
971
名前:
958
:04/02/28 15:39
>>966
お前が屑。
>>967
それだ。
紙なら折ったりできるしな。
972
名前:
デフォルトの名無しさん
:04/02/28 15:50
なんかすげー頭悪そう
973
名前:
デフォルトの名無しさん
:04/02/28 16:33
958は莫迦。
そういう性格じゃプログラムなんか止めとけ。
工房か?
974
名前:
デフォルトの名無しさん
:04/02/28 16:45
>>971
>966
は密着状態で携帯電話を使用するなと言いたいわけだ。
そんなことも判らないお前はプログラマにはなれても上流工程には一生近づけないよ。
975
名前:
デフォルトの名無しさん
:04/02/28 16:58
さて、頭の悪い人はほっといてそろそろ新スレですね
976
名前:
デフォルトの名無しさん
:04/02/28 17:16
おれのは
!?
でかいぜよ?
977
名前:
デフォルトの名無しさん
:04/02/28 19:49
次スレ
http://pc2.2ch.net/test/read.cgi/tech/1077965179/
978
名前:
デフォルトの名無しさん
:04/02/29 01:18
case WM_PAINT:
{
HDC hDC;
PAINTSTRUCT ps;
LPCSTR str = "test";
hDC = BeginPaint(hWnd, &ps);
SetTextColor(hDC, RGB( 0, 0, 255));
SetBkMode(hDC, TRANSPARENT);
TextOut(hDC, 100,100, str, lstrlen(str));
EndPaint(hWnd, &ps);
}
return 0L;
↑はウィンドウプロシジャ内のメッセージのケース文なんですが、
この「中カッコ」を外すとコンパイルできないのはなぜですか?
「strの初期化がcaseラベルによって行われませんでした」
というエラーがでて、次のcase文のところで引っかかってるみたいです。。。
979
名前:
デフォルトの名無しさん
:04/02/29 01:27
>>978
caseラベルの中で変数の宣言はできまへん。
switchをC++で使うときのマンドクサイところ。
980
名前:
デフォルトの名無しさん
:04/02/29 01:41
本当は出来ないけど中カッコでcase内全部囲っとけばできるってことなんですかね。
謎な仕様ですね。。。
助かりました。ありがとうございます。
981
名前:
デフォルトの名無しさん
:04/02/29 01:45
>>980
{ } で囲むと、変数の生存範囲が
{ } の中に限られるので、大丈夫なんでしょう。
こういうスタイルが適切かどうかは分からない。
普段はMFC使ってるから。
982
名前:
デフォルトの名無しさん
:04/02/29 01:57
VC.Net だとこんなコードも通ってしまう分けなんだが。。。
switch (int a = 1)
{
case 1:
int b = 2;
}
983
名前:
978
:04/02/29 01:58
なるほどそういうことですか。
そういうもんだと覚えとくことにします。
ありがとうございました。
984
名前:
デフォルトの名無しさん
:04/02/29 02:03
C++ の言語仕様だと変数の書ける所だと殆どの所で変数定義も出来るらしい。
そんな事を厨にやられた日にゃ。(ry
985
名前:
デフォルトの名無しさん
:04/02/29 02:08
>>983
次のようなコードだと n = 2 のときに
宣言無しで a が使われちゃうから
問題なんでしょう。
switch ( n )
{
case 1:
int a = 0;
cout << a;
case 2:
a++;
cout << a;
}
986
名前:
デフォルトの名無しさん
:04/02/29 02:13
>>985
error C2360: 'a' の初期化が 'case' ラベルによって行われませんでした。
987
名前:
デフォルトの名無しさん
:04/02/29 02:16
>978
ちゃんとエラーメッセージを読め。読みとれ。理解しようとしろ。
>「strの初期化がcaseラベルによって行われませんでした」
別のcaseラベルを通ったときでも、そこより下の位置なら、
strを参照することができてしまうが、初期化部分を通らないから初期化できない。
>982
その初期化式の下に一つでもcaseを作れば、直ちにエラーになる。
って、もう書かれたか。
ええぃ埋めついでに書き込んでやる。
■過去ログ置き場に戻る■
1-
前250
最新50
DAT2HTML
0.33f Converted.