トップページ⇒tech
1001コメント324KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

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

  質問の仕方については次のページが大変参考になります。
  http://www.hyuki.com/writing/techask.html
  http://www.geocities.co.jp/Beautycare/4965/public/template.html

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

前スレ
★初心者にVisual C++を教えるスレ★ Part13
http://pc5.2ch.net/test/read.cgi/tech/1089011118/l50
0446デフォルトの名無しさんNGNG
>>445
それは構造体じゃないし、そこで関数使う必用ないし、スレ違い
0447デフォルトの名無しさんNGNG
>>445
state == SET_A ? 0 : state == SET_B ? 1 : state == SET_C ? 2 : -1;
0448デフォルトの名無しさんNGNG
>>445
enumは0から順番に値を割り当てるんじゃなかったっけ?
0449デフォルトの名無しさんNGNG
DDV 機能を利用してエディットボックスの数値入力範囲を設定しているのですが、
入力範囲を 0 〜 int の最大値2147483648を指定し、入力すると範囲外の数値として
再入力を求められてしまいます。

何が間違っているのか教えていただけませんでしょうか?
環境はVS2002です
0450デフォルトの名無しさんNGNG
MS固有の__declspec(selectany)はどのバージョンから対応しているとか
そういう情報はどこかに載ってないでしょうか?
例えばクラスを作るとヘッダに自動的に挿入されるこれ。

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

1000より新しいバージョンで対応してるんだなとわかります。
selectanyは_MSC_VERがいくつ以上なら対応しているんでしょうか?
0451デフォルトの名無しさんNGNG
>>449
数字いろいろ変えてやってみろ
0452デフォルトの名無しさんNGNG
>>449
intの最大値は2147483647だ。
0453デフォルトの名無しさんNGNG
>>448
しかも最初の一個だけ明示的に与えてやれば、
あとはインクリ
0454デフォルトの名無しさんNGNG
0-2147483647までの
2147483648個
0455デフォルトの名無しさんNGNG
金enum元大統領
0456デフォルトの名無しさんNGNG
なんでINT_MAXを使わないの?
しかもintは実装依存…もしVC++以外にソースを持っていくような事が
あったら困ることがあるから最大値ぎりぎりまで使うならlong intに
した方がよいです
0457デフォルトの名無しさんNGNG
もしくはint32_t
0458デフォルトの名無しさんNGNG
DDV使ってるソースを、VC以外に持っていくことはないだろ w
0459デフォルトの名無しさんNGNG
>>451 >>452 >>454

ありがとうございました、個数と最大値を見間違えていました・・・

>>456

うう、知りませんでした
ご指摘ありがとうございます
0460デフォルトの名無しさんNGNG
>>458
将来VC++のintのビット長が変わる、なんていうことないとも限らないし、
もしそうなったら、それだけで多くの箇所を変更しなければならなくなる。
少しでも危険が考えられることは、簡単な事であればなるべく安全な物に
置き換えるのがよい。
0461デフォルトの名無しさんNGNG
64bit環境でもVC++のintは32bitだからなあ。
そう心配すんなよ。
0462デフォルトの名無しさんNGNG
そもそもマジックナンバーは良くない。
0463デフォルトの名無しさんNGNG
互換性よりintの最大値ということをアッピールするためにINT_MAXを使う
という意味の方が重要かもしれん。
0464デフォルトの名無しさんNGNG
>>462
DDX/DDVの設定ダイアログで、最大値・最小値にマジックナンバー以外を
入力出来るのかい?
0465デフォルトの名無しさんNGNG
>>464
出来なくても適当な値入れて手作業で修正すればよかろう。
0466デフォルトの名無しさんNGNG
>>465
ここは初心者スレだぞ。
偉そうなことだけ言ってないで、何処を修正すればいいか教えてやれよ。
0467デフォルトの名無しさんNGNG
>>466
DoDataExchangeメンバ関数のDDV_MinMaxIntのところ。
0468デフォルトの名無しさんNGNG
>>466
いくら初心者でも分かりそうなもんだが
0469デフォルトの名無しさんNGNG
CXxxDoc 内で定義したメンバ変数 y に
((CXxxDoc*)GetDocument())->y
でアクセスできるのはなぜですか?
メモリ的にどうなってるんですか?
0470デフォルトの名無しさんNGNG
なぜなぜな〜に?
0471デフォルトの名無しさんNGNG
最近、BorlandのつかえないコンパイラからVCに乗り換えた初心者です。
Viewについての質問です。
Viewは基底クラスをいくつかのViewから選択できますよね
ですが、エクセル見たいな入力可能なGridをViewに選択することは
できないのですか?
0472デフォルトの名無しさんNGNG
ListViewでがんがるか、ActivXとかでMSDBGridを使う
0473デフォルトの名無しさんNGNG
いまウインドなしのdllからウインドを生成したいのですが、
WNDCLASSにセットするHINSTANCEはどうすれば取れるのでしょう?
そもそもこれは何のためにセットするのでしょうか?
あとでアイコンとか取得したいときに必要になるからGetWindowLongで取得できるように
WNDCLASS作成時にセットするだけですか?もし使う予定がないならNULLでよいですか?
それとも必要ですか?もしそうならdllのようにクライアントアプリケーションのプロセス内にロードされる
場合、クライアントアプリケーションのHINSTANCEを使っても良いのですか?

いろいろお聞きしますがよろしくお願いします。
0474デフォルトの名無しさんNGNG
>>473
DLL側のHINSTANE/HMODULE。
これの意義はウィンドウクラスの所有権を把握するために使うのだったと思う。
(WindowsはEXEがアンロードされるときにそこが所有するウィンドウクラスを自動的に破棄するようになっている。DLLのクラスは9x系だけ自動破棄)

>WNDCLASSにセットするHINSTANCEはどうすれば取れるのでしょう?
取り方はDllMainでグローバル変数にコピーしておくか、あるいはDllMainでウィンドウクラスを作るのが一般的だと思う。
0475デフォルトの名無しさん NGNG
質問 VC6.0を使用しているのですが、
templateのアロー演算子のoperatrorのオーバーロード
がうまくいきません。
そういうものなのでしょうか?
template <class T>
class Hoge
{
public:
T* operator->() { return m_p; }
private:
T*m_p;
};
0476475NGNG
”の”がいっぱい。。
0477デフォルトの名無しさんNGNG
CreateCompatibleDC(NULL)と
CreateCompatibleDC(hdc)とでは具体的にどう違いますか?
0478デフォルトの名無しさんNGNG
>>475
どう上手くいかないんだ?
0479デフォルトの名無しさんNGNG
>>477
hdcがプリンタDCだったり情報DCだったりしたときに出来上がるDCの形式が違う
0480デフォルトの名無しさんNGNG
そもそもCreateCompatibleDC(NULL)
って、どんな DC が作られるの?
何のコンパチを作るのよ?
0481デフォルトの名無しさんNGNG
>>480
ヘルプも読んでないくせに態度がでかいぞ。
0482デフォルトの名無しさんNGNG
BOOL CxxxDlg::PreTranslateMessage(MSG* pMsg)
          :
   char d=(TCHAR)pMsg->wParam;
   if (d == 'A') …
   if (d == ??)

バックスペースが押されたか判断したいんですが、
??の部分はどの様に記述すれば良いのでしょうか?

0483デフォルトの名無しさんNGNG
"BS" もしくは "BackSpace"
キーボードによって違うから気をつけろ
0484デフォルトの名無しさんNGNG
VK_BACK
0485482NGNG
ありがとうございます
0486デフォルトの名無しさんNGNG
http://www.comrade.co.jp/ftp/pg1/manual/VKeys.htm
0487デフォルトの名無しさんNGNG
>>486
お気に入りに登録しました
0488デフォルトの名無しさんNGNG
>482
if (d == 'A') … <- 右親指を立ててる顔に見えなくもない。
0489テストNGNG
d='A';
0490デフォルトの名無しさんNGNG
d=(^ _^)
0491テストNGNG
d=(T_T);
0492デフォルトの名無しさんNGNG
d(^-^)b
0493テストNGNG
q=('A');
0494デフォルトの名無しさんNGNG
UTF-8でXMLファイルを出力したいんですがどうしたらいいんでしょうか?

fp=fopen("〜.xml","a");
char * pstr = sjisToUtf8("変換する文字");
fput(pstr,fp);

ってな感じでやってます。
0495デフォルトの名無しさんNGNG
,"a")オイオイマジカヨ
0496473NGNG
>>474
ありがとうございました。助かりました。
0497デフォルトの名無しさんNGNG
vc++6です。
友人から、「WinProcって何?」と訊かれて言葉に詰まってしまいました。
どのように説明すれば良いのでしょうか?
よろしくお願いします。
0498デフォルトの名無しさんNGNG
qsort()に渡すような感じで
RegisterClass()に渡すためのもの
0499デフォルトの名無しさんNGNG
自分のIPアドレスを取得したいんですけど、
自分のIPアドレスを取得する関数って何ですか?

よろしくお願いします。
0500デフォルトの名無しさんNGNG
>>499
逝ってよしです
0501デフォルトの名無しさんNGNG
またこの質問か
0502デフォルトの名無しさんNGNG
GetIpAddress()
0503デフォルトの名無しさんNGNG
>>494
MultiByteToWideChar() で SJIS -> UTF-16
WideCharToMultiByte() で UTF-16 -> UTF-8
0504デフォルトの名無しさんNGNG
それって文字コードを変換するやつとちゃうんか?
>503
0505デフォルトの名無しさんNGNG
>>504
そうですが何か?
0506デフォルトの名無しさんNGNG
コンボボックスのストリング型をchar型に直したんだけど、
このchar型をさらに16進表示にしたいのです。

CString writeblock;
m_COMBO_writeblock.GetWindowText(writeblock);
char wb[1];
strcpy(wb, writeblock);
char Write[13] = {・・,・・,〜, wb[1], ・・, ・・,}

こんな感じで
例えば、コンボボックスの04を0x04といった感じでwbに入れてやりたい
んですが、今のままだと、34となってしまいます。
wb[1]に04となるようにしたいのですが、分かりません。
どなたか良い方法教えてください。
0507デフォルトの名無しさんNGNG
about:blank
これがエクスフローラ開くとどうしても最初に立ち上がってしまう
これって治せるのかな?
0508デフォルトの名無しさんNGNG
>>507
とりあえず"エクスフローラ"の作者かサポートに質問
0509デフォルトの名無しさんNGNG
VC++6を使っています

質問なのですが、実行結果をテキストファイルに出力するには
どうしたらよいでしょうか?
100万個ほどの数値の統計を取りたいのですが、
DOSプロンプト上には最後の1000個ほどの結果しか残らないので
困っています。

初心者な質問ですが、よろしくお願いします。
0510デフォルトの名無しさんNGNG
こりゃまたずいぶん
0511デフォルトの名無しさんNGNG
stdout=fopen(hogehoge);
0512デフォルトの名無しさんNGNG
>>509
それだとメモリを増設しないといけないな。
スレ違いなのでここまで。
0513デフォルトの名無しさんNGNG
>>509
とりあえずデータがテキストファイルになれば良いのだったらリダイレクトが簡単.
例えばhoge.exeってプログラム名だったら
hoge.exe > hage.txt
って感じで入力すると,画面に出力されてたものがhage.txtに出力できますよ.
0514デフォルトの名無しさんNGNG
>>513
それはスレ違い。
ここはVC++のスレ。
0515509NGNG
こんなに早く質問に答えていただいてありがとうございます。
とりあえず>>513の方法で出来たので、しばらくはそれでいこうと思います。

何分、Cを始めたばかりの未熟者ゆえ・・・。変な質問しちゃって
すいませんでした。とても助かりました。
0516デフォルトの名無しさんNGNG
>>513
それは承知.ただまぁ509が解決する際の選択肢になればいいからね.
0517516NGNG
516は514へです.

>>515
使い難さを感じたら511あたりも検討してください.
0518デフォルトの名無しさんNGNG
>>514
VC++でリダイレクトを使ったらいけないのか?
0519デフォルトの名無しさんNGNG
VC++でソケット使えるからソケットプログラミングの話もここでいいですか?
0520デフォルトの名無しさんNGNG
>>518
リダイレクトはシェルの機能。
シェルスレでやれ。
0521デフォルトの名無しさんNGNG
>>519
ネットワークプログラミング相談室 Port10
http://pc5.2ch.net/test/read.cgi/tech/1090385857/l50
0522デフォルトの名無しさんNGNG
>>520
解決方法がスレ違いの内容だからって一言もそれに触れなかったら
質問者はいつまでたっても回答を得られないぞ。バカジャネーノ。
0523デフォルトの名無しさんNGNG
質問の解決を第一に考えようよ.(なんか,みなさん縦割好きだね.行政みたいだ.)
509に513は問題ないでしょ?
そのあと更に509さんがリダイレクトについて質問してきて
長くなりそうだったら誘導すればいいんだし.
0524デフォルトの名無しさんNGNG
プログラミング始める前にパソコンの使い方ぐらい覚えろよ。
CUIのプログラム作っててCUIが使えないんじゃ話しにならん。
0525デフォルトの名無しさんNGNG
そうだぞ、
ダブルクイックも出来ないで
プログラミングなんて100年早いわ。
0526デフォルトの名無しさんNGNG
>>524は初心者に対して偉そうにしたいだけ w
0527デフォルトの名無しさんNGNG
ダブルクィックって何?聞いたこと無いんだが…
0528デフォルトの名無しさんNGNG
ダブルクイック
ディスクトップ
ワーニング
アップリケーション
0529デフォルトの名無しさんNGNG
スッタク
0530デフォルトの名無しさんNGNG
VisualC++で.NETアプリケーションの開発をやるメリットって何かあります?
0531デフォルトの名無しさんNGNG
.NET対応アプリケーションを作れるというのが
メリットでは?
0532デフォルトの名無しさんNGNG
MC++ってSTL使えますか?
std::vector<CView*> VecView;
なんて書いたら怒られました
0533デフォルトの名無しさんNGNG
MC++ってなんだよ
VC++なら使えるぞ
0534デフォルトの名無しさんNGNG
ManagedC++だろ
0535デフォルトの名無しさんNGNG
Microsoft C++ に決まってるだろ。
0536デフォルトの名無しさんNGNG
クズばっか(w
0537デフォルトの名無しさんNGNG
俺様用のメモ

C言語なら俺に聞け! Part 91
http://pc5.2ch.net/test/read.cgi/tech/1095180315/l50
C++相談室 part35
http://pc5.2ch.net/test/read.cgi/tech/1093958200/l50
【初心者歓迎】C/C++室 Ver.9【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1094494997/l50
ぼるじょあがC/C++の宿題を片づけますYO! 31代目
http://pc5.2ch.net/test/read.cgi/tech/1095075678/l50
0538デフォルトの名無しさんNGNG
WM_COMMANDのwParamの上位ビットには何が記録されているのでしょうか?
入門書では下位ビットにコントロールやメニュー項目などの識別子が入っているとあるのですが上位ビットについては省かれていて非常に気になります。
0539デフォルトの名無しさんNGNG
>>538
The high-order word specifies the notification code if the message is from a control.
If the message is from an accelerator, this value is 1.
If the message is from a menu, this value is zero.
0540デフォルトの名無しさんNGNG
>>538
素でMSDN知らなそう
http://msdn.microsoft.com/library/
0541デフォルトの名無しさんNGNG
VC++.NET 2005 のβ版いれたらVC6.0のファイルの関連付けが全部ぶっ飛んでしまったのですが、
2005をアンインストールしても直りませんでした。
元通りにもどすにはVC6.0を再インストするか、手動で一つ一つ関連付けしていくしかないのでしょうか?
0542デフォルトの名無しさんNGNG
>>540
素でMSDNってどういうものなんでしょう。。。
0543デフォルトの名無しさんNGNG
Win32SDKの日本語に翻訳したお勧めの書籍を教えてください
0544デフォルトの名無しさんNGNG
>>506です。誰か教えてぇぇ
0545デフォルトの名無しさんNGNG
>>544
wb[1] = atoi(writeblock);
■ このスレッドは過去ログ倉庫に格納されています