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

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

■ このスレッドは過去ログ倉庫に格納されています
0001987NGNG
タイトルのとおり、
Visual C++ 初心者用スレッドです。

前スレ・関連スレは、>>2 ぐらい。
0519デフォルトの名無しさんNGNG
//stdafx.h
#ifdef NDEBUG
#undef _STLP_DEBUG
#undef _STLP_DEBUG_ALLOC
#else
#pragma warning(disable:4786)
#define _STLP_DEBUG 1
#define _STLP_DEBUG_ALLOC 1 //or #undef
#endif
0520デフォルトの名無しさんNGNG
つーか、単なるSTLなら_STLP関係いらねーや。
0521デフォルトの名無しさんNGNG
>>517
どんな識別子使ってるんだ?
0522デフォルトの名無しさんNGNG
>>518
あほ発見
0523デフォルトの名無しさんNGNG
>>521
STLがソースの中で使ってるんだよ。
0524デフォルトの名無しさんNGNG
世の中って想像以上にあほが多いんだな
>>518 >>521
0525デフォルトの名無しさんNGNG
おまいら、C++を使うなら STL(STLPort) ぐらい嫉妬家!
0526517NGNG
>>519
それらを埋め込むことで表示されなくなりました。
ありがとうございます。
0527デフォルトの名無しさんNGNG
俺も517と同じ警告出てた
リリースモードではでないけど

519のコード埋めればいいんだね?

STLPortは知らんかった
ちょっと調べてみようかな
0528デフォルトの名無しさんNGNG
517のコード入れてみたけど相変わらず警告が
何がいけないのやら・・・
0529デフォルトの名無しさんNGNG
>>528
stdafx.hの上の方に入れてみろ。
#pragma warning(disable:4786)の一行だけでいいと思うけど。
0530デフォルトの名無しさんNGNG
>>528
何の警告よ
0531デフォルトの名無しさんNGNG
MFCアプリケーションウィザードで作った
SDIのCEditViewを使ってプログラムしてるんですが
何かちょっと編集して×ボタンを押すと
「Save changes to Untitled?」
っていうメッセージボックスがでるんですが
そのメッセージを出さないようにするには
どうすればいいんでしょうか?

0532デフォルトの名無しさんNGNG
>>531
セーブしなくて良いってこと?

0533531NGNG
>>532
ただログをEditViewにダラダラ出してくだけなんで
セーブの警告なんていらないんです。
よろしくお願いします。
0534デフォルトの名無しさんNGNG
>>533
Doc-View使ってる?だとすれば、
とりあえず↓のようにCDcoument::SetModified()をオーバーライドすればできる。
やったことないから、もしかしたら他にいい方法あるかも。

BOOL CHogeDoc::SaveModified()
{
return TRUE;
}
0535531NGNG
>>534
ありがとうございました!
できました!
0536デフォルトの名無しさんNGNG
別アプリケーションの、
特定のウィンドウにフォーカスを変更したいのですが、
どうすればいいのでしょうか?
0537デフォルトの名無しさんNGNG
別アプリのウィンドウのフォーカス取得
↓
SetFocus
0538デフォルトの名無しさんNGNG
>>530
黙れ
0539デフォルトの名無しさんNGNG
>>518=>>521=>>530なのかな
0540デフォルトの名無しさんNGNG
APIの SendKeys や keybd_event は Win2000、XPではNumLockやEnterキー押下に問題があるのでしょうか?

SendInput を使えということですが....
0541540NGNG
>>540
すみません
誤爆です
0542デフォルトの名無しさんNGNG
536ぢゃないけど・・

>>537
これウインドウハンドルが必要でしょ。
ウインドウクラス名とかまで分かっていれば探すことも
できるけど、ソースの分からないアプリの場合は
どうすればできるのかな。

0543デフォルトの名無しさんNGNG
Use Spy++.
0544デフォルトの名無しさんNGNG
アプリA 他人が作った普通のWinアプリ
アプリB 他人が作ったゲームなどDirectXフルスクリーン(排他)
自作アプリC

アプリBを「フォアグラウンドのまま」、自作アプリCからキーフックを使ってアプリAのダイアログにメッセージを送っています。(SendMessage,,,WM_SETTEXTで)

さらにアプリBが「フォアグラウンドのまま」そのアプリAのダイアログでリターンキーを押したいのですがこれは可能でしょうか?
0545デフォルトの名無しさんNGNG
1ダイアログに255個以上のコントロールが貼り付けられないのですが仕様ですか?
0546デフォルトの名無しさんNGNG
DirectInput等つかってなければ、可能ナリ。
0547デフォルトの名無しさんNGNG
すいません。教えてください。

BOOL型のメンバ変数m_Tempを追加したのですが、
ソースにカーソルを当てると、ポップアップで
int CTestView::m_Temp
とINT型で表示されるのですが、BOOL型なのになぜINTなのでしょうか?

例えば、
if(m_Temp == true){ ・・・ と記述すると以下の警告がでます。
「warning C4805: '==' : 演算中の 'int' 型と 'const bool' 型の混用は安全ではありません」

#define TRUE 1 が、Afxstd.hで宣言されてるので、
if(m_Temp == TRUE){・・・ と記述すれば警告はでなくなるのですが
なんか胸の中がすっきりしません。どういう事なのでしょうか?
0548547NGNG
ちょっと訂正します
誤 #define TRUE 1 が、Afxstd.hで宣言されてるので、
正 #define TRUE 1 が、AFX.Hで宣言されてるので、
0549デフォルトの名無しさんNGNG
>>547
bool = 1bit
BOOL = int = 32bit

という説明でよろしいか?
0550デフォルトの名無しさんNGNG
>>549
ありがとうございます!!!なるほど納得&警告でなくなりました!
0551デフォルトの名無しさんNGNG
気持ちわかる↓
>なんか胸の中がすっきりしません

BOOLをboolする関数でも組めば?

inline bool BOOL2bool(BOOL f)
{
  return (f == TRUE) ? true : false;
}

inline BOOL bool2BOOL(bool f)
{
  return (f == true) ? TRUE : FALSE;
}
0552デフォルトの名無しさんNGNG
>>544
Aのダイアログにメッセージが送れるなら、Aのダイアログのボタンで生成
されるメッセージをそのまま送るわけにはイカんのですか?

0553デフォルトの名無しさんNGNG
>>551
レスどうもです。そういうやり方もあるんですね。参考になりました。
0554本7 ◆HON7/awDa. NGNG
金ないんでVC++4.0でがんばってます。
winsockでTCPソケット通信でtelnetサーバを作りたいです。
ソケットを起動(っていうんですか?)して > 接続要求待ち >
要求があれば > サーバの紹介文を送りログインを求める  >
パスワードが照合すればクライアントにDOS画面を送る

というのはどういう流れにすればよいですか?関数とかも挙げて説
明頂けるとありがたいです。よろしくお願いします。
0555デフォルトの名無しさんNGNG
>>545
仕様。
自前でCreateしる。
0556デフォルトの名無しさんNGNG
>>554
とりあえず、それ用の本買うことをお勧めする。
ここで聞いて理解できるようなら、たぶんで作成できるだろうし・・・。

金ないならネットで検索しとけー。
レス1つや2つで終わるような話じゃないと思うぞー。
なんせ、それだけで本1冊かけるしな。

ネットワーク質問スレの過去ログ全部読んでみるのもいいのでは?
0557デフォルトの名無しさんNGNG
ttp://www.google.co.jp/search?hl=ja&inlang=ja&ie=Shift_JIS&q=winsock%83v%83%8D%83O%83%89%83%7E%83%93%83O&lr=
0558本7 ◆HON7/awDa. NGNG
ありがとうございます。いろいろ試してがんばまります。
0559デフォルトの名無しさんNGNG
>>551
>return (f == TRUE) ? true : false;
( ´_ゝ`) フーン
0560デフォルトの名無しさんNGNG
ってか両方とも==で比較しなくていいよね
0561デフォルトの名無しさんNGNG
ってかキャストでいいよね
0562名無し@沢村NGNG
>>551
そのコード、バグの温床だな。
0563デフォルトの名無しさんNGNG
「BOOLはint」って話の流れで「f == TRUE」は無いよね
0564デフォルトの名無しさんNGNG

つか、 true と TRUE を使い分ければ良い話でわ?
わざわざ変換関数必要なん?

0565デフォルトの名無しさんNGNG
>>564
STLとか使って普通にWindowsプログラミングをしていたら必要になってくるだろ、ボケ。
0566デフォルトの名無しさんNGNG
>>565
簡単な例出してみ。総ツッコミ入るだろうけど。
0567デフォルトの名無しさんNGNG
>>565
簡単な例出してみ(ゲラ 総ツッコミ入るだろうけど(嘲笑激藁
0568デフォルトの名無しさんNGNG
教訓:ここは初心者に教えるスレであって、初心者が知ったかするスレではない。
0569デフォルトの名無しさんNGNG
全然Visual C++関係ないじゃないか・・・
0570デフォルトの名無しさんNGNG
>>566

std::bitset<10> aho;
aho.set(0, ::IsWindowEnabled(hWnd));

さあ、ツッコミ入れろ。vector<BOOL>にしろとか言うなよ。
0571デフォルトの名無しさんNGNG
唐突ですみませんがgetmemoryってどういうことなんでしょうか?
0572デフォルトの名無しさんNGNG
>>570
ツッコミも何もそのコード自身、変換関数なんて使ってないじゃん。
0573デフォルトの名無しさんNGNG
今までの流れ
>>564「わざわざbool<->BOOL変換関数必要なん?」
  ↓
>>565「STLとか使って普通にWindowsプログラミングしてたら変換関数が必要だろボケ」
  ↓
>>566「変換関数が必要になる例出してみ」
  ↓
>>570「std::bitset<10> aho; aho.set(0, ::IsWindowEnabled(hWnd));」
  ↓
>>572「どこにも変換関数使って無いじゃん(;´Д`)」
0574ドアフォ。NGNG
あんのー、Visual BasicとBasicだけ微妙に触ったことある程度のド素人なんだけど、
せっかくMicrosoft Visual C++ 6.0も入ってるのに学校ではやらないそうなんです。
で、個人的に勉強してみようとあっちこっちの初心者向け回ってるんですが、
どうやったらプログラム作り始められるかがわかりません!!w

とりあえずファイル>新規作成>Win32 Console ApplicationでDOS窓用、
Win32 ApplicationでWindowsプログラムってのはなんとなくわかったんだけど・・・
File ViewでSource Filesって書いてあるのがコード書いたのを保存するフォルダ?
あーわけワカメ。
0575デフォルトの名無しさんNGNG
>>574
本買え
0576デフォルトの名無しさんNGNG
warning C4805

を出したくないだけでしょ。
0577デフォルトの名無しさんNGNG
>>560

会社だと

bool fHantei = 判定関数;
:
:
:
if(!fHantei){ //←ここ
:
}

こういう書き方はダメなところが多いと思うけど。
C#でもこういう書き方はErrorになるはず。
0578デフォルトの名無しさんNGNG
==TRUEはもっとダメ。
0579デフォルトの名無しさんNGNG
漏れの同僚に

#define NULLPO 0

HANDLE *pHandle = GetHandle();
if(pHandle == NULLPO){
 MessageBox("ぬるぽ!");
 exit(0);
}

ってやるやつがいます。
0580デフォルトの名無しさんNGNG
外出みたいだけどもう一度

BOOL型を返す関数でFALSEがエラー
FALSE以外が正常ってのがあったような気がするから

BOOL B;
...
if(B == TRUE)はやってはいけないと
やるなら
if(B == FALSE)
if(B != FALSE)
みたいに
0581デフォルトの名無しさんNGNG
ガイシュツのものをなぜわざわざもう一度書くのだろうか?
0582デフォルトの名無しさんNGNG
そもそも比較する必要がない
0583デフォルトの名無しさんNGNG
皆それぞれ言いたいことはあるだろうが、ここは一つ>>551は糞ってことで収めないかね。
if(hoge==FALSE)するかどうかはコーディングスタイルや会社の規約に関わってくるから
水掛け論にしかならんだろうし。
0584デフォルトの名無しさんNGNG
もう >>551の顔の火も、鎮火しただろーよ
0585デフォルトの名無しさんNGNG
顔がチンコに?!
0586デフォルトの名無しさんNGNG
>>585
よく読め。「顔の火」がチンコだ。
0587デフォルトの名無しさんNGNG
>>585
どんな生命体だよ・・・
0588デフォルトの名無しさんNGNG
顔の人はチンコだったか
0589デフォルトの名無しさんNGNG
>>587
  /⌒\
 (    )
 |   |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 |   |<  呼んだー?
 ( ・∀・)  \_________
  )   (
 (__Y_)
0590551NGNG
>>589
読んでねーよ、氏ねや



ああ、イライラする
0591デフォルトの名無しさんNGNG
まだフィッシングかよ……
0592デフォルトの名無しさんNGNG
int main(){
if( >>551 == true )
{
cout <<"  /⌒\   "<< endl;
cout <<"  (    ) "<< endl;
cout <<"  |   | "<< endl; 
cout <<"  |   | "<< endl;
cout <<"  ( ・∀・) "<< endl;
cout <<"   )   ( "<< endl;
cout <<"  (__Y_) "<< endl;
return 0;
}

return -1;
}
0593551NGNG
だいたいここ初心者向けのスレなのに
あの程度のミスでなんで糞呼ばわりされなきゃならないんだ?
初心者なんだから仕方ないだろう?
それともあんたらはプログラム初めてそういうミス一度もしたことないのか?
0594デフォルトの名無しさんNGNG
教える側がミスしちゃいかんだろ。
0595デフォルトの名無しさんNGNG
BOOL型==TRUE ってだめなの?
0596デフォルトの名無しさんNGNG
あ〜なるほどねわかった気がした
0597デフォルトの名無しさんNGNG
初心者スレだから叩く
人間叩かれて大きくなるんだYO!
でも変な所を大きくしないでね
0598デフォルトの名無しさんNGNG
>>593
おまえだけが間違うのは勝手だが初心者を巻き込むな
0599デフォルトの名無しさんNGNG
BOOLを使わなければいいのでは?
0600デフォルトの名無しさんNGNG
intでやれよな。
0601デフォルトの名無しさんNGNG
大は小をかねる。
0602デフォルトの名無しさんNGNG
つーかこんな事で喧嘩すんなよ互いに(w
0603デフォルトの名無しさんNGNG
楽しけりゃいいじゃん!!
0604デフォルトの名無しさんNGNG
>>592みたいなのってendlでフラッシュするじゃん
たぶんそこがネックになって速度が落ちると思うのね
もっとフラッシュを抑制する方法ってないかしらん?
0605デフォルトの名無しさんNGNG
嘘を教えちゃいけないよね
0606Are you OK ??NGNG
#include <iostream>
#include <windows.h>

using namespace std;

inline bool BOOL2bool(BOOL f){ return (f == TRUE) ? true : false; }
inline bool bool2BOOL(bool f){ return (f == true) ? TRUE : false; }

int main()
{
   for(int i=0;i<3;i++){
      BOOL fB = (BOOL)i;
      bool fb = (bool)i;
      cout << "(BOOL)" << i << " = " << fB << " , BOOL2bool((BOOL)" << i << ") = " << BOOL2bool(fB) << endl;
      cout << "(bool)" << i << " = " << fb << " , bool2BOOL((bool)" << i << ") = " << bool2BOOL(fb) << endl;
      cout << "\n";
   }
   return 0;
}


(BOOL)0 = 0 , BOOL2bool((BOOL)0) = 0
(bool)0 = 0 , bool2BOOL((bool)0) = 0

(BOOL)1 = 1 , BOOL2bool((BOOL)1) = 1
(bool)1 = 1 , bool2BOOL((bool)1) = 1

(BOOL)2 = 2 , BOOL2bool((BOOL)2) = 0
(bool)2 = 1 , bool2BOOL((bool)2) = 1
0607デフォルトの名無しさんNGNG
まだやってんの(;´Д`)
0608デフォルトの名無しさんNGNG
これで完結じゃないの。実例出たからみんな納得するだろう。
0609デフォルトの名無しさんNGNG
ていうかすでに納得してんのに何を粘着に(ry
0610606NGNG
>>609 いや、個人的に気になったから
普段からBOOLなんて使わんしさ
0611デフォルトの名無しさんNGNG
>>610
なんでWindowsプログラミングをしていないのにこのスレにいるの?
0612デフォルトの名無しさんNGNG
なぜか急にクラスビューに1つのクラスだけが表示されなくなってしまいました。
どうすれば直りますか?
0613デフォルトの名無しさんNGNG
>>612
引っ込み思案な性格を、カウンセリングで直せ。
0614デフォルトの名無しさんNGNG
>>604
endl のかわりに \0 代入して
表示するさいに std::finish とかってどうよ?
0615デフォルトの名無しさんNGNG
>>611
まだCを勉強して間もない初心者なんじゃないの?
0616デフォルトの名無しさんNGNG
初心者を初心者と見抜けないと
(初心者スレで回答を得るのは)難しい。
0617デフォルトの名無しさんNGNG
>>546
>>552
大変遅くなりましたができました。ありがとうございました。ちなみにこのような感じです。

SendMessage(HWND,WM_KEYDOWN,(WPARAM) VK_RETURN, 0);
SetFocus(HWND);
SendMessage(HWND,WM_KEYUP,(WPARAM) VK_RETURN, 0);

0618デフォルトの名無しさんNGNG
>>612
VC終了して拡張子clw,aps,opt,ncbのファイルを消してVC起動して「表示」→「ClassWizard」で
なんか聞いてくるから「はい」選択。変なダイアログ表示されるから「全て選択」ボタン押してからOK。
■ このスレッドは過去ログ倉庫に格納されています