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

このエントリーをはてなブックマークに追加
MSDNライブラリがMFCマンセー仕様になってる気がするのは気のせいでしょうか?
>>952
何をいまさら。(w
>>952
そのためのMSDNです!
955デフォルトの名無しさん:03/09/04 22:23
Visual C++ 6.0
Visual C++ .NET Standard
Visual C++ .NET Standard 2003

ってあるけど
やっぱ新しいほうがいいの?
>>949
排他&追加モードってどういうこと?
>>955
>やっぱ新しいほうがいいの?
.net 2002は使ったことないがバグだらけという噂。
2003は漏れの感じでは良く出来てるかと。(ただし、重たい)
>>949
CreateFileじゃだめなの?
↓次スレハ マカスィタ!!
↓  ↑
└→┘
猫でもわかるプログラミング(ttp://www.kumei.ne.jp/c_lang/index.html)

のC言語編第57章のプログラムがエラーになるのですが、どうすればよいのでしょうか?

-------エラーメッセージ----------
'WinMain' : 関数はオーバーロードできません。
--------以下ソース---------------
#include <windows.h>

int WINAPI WinMain( HANDLE hInstance ,
HANDLE hPrevInstance , LPSTR lpCmdLine , int nCmdShow )
{
MessageBox(NULL,
(LPCSTR)"メッセージ・ボックスのテストです。",
(LPCSTR)"猫でもわかるプログラミング",
MB_OK);
return 0;
}
---------------------------------


>>961
HANDLE → HINSTANCE に置換。

大昔のVCではHANDLEでも通ったのだが。今は型がより厳密になった。
いい加減、時代遅れな猫を参考にするのはやめよう。
>>963
だな。あそこは修正すべきだよな。
VC++4.0だったよな。確か。
もうそんな骨董品使ってる椰子いねーよな。
>>962
お〜!!できました。どうもありがとうございました。

>>963-964
確かに…今までも結構苦労しながら読んできたんですよ…

ここ以外にお奨めのサイトとかってありますかね?

966デフォルトの名無しさん:03/09/05 20:24
すいません。。
Platform SDK
っていったいなんですか?
968デフォルトの名無しさん:03/09/05 22:02
猫ねえ・・・
たまに関数や構造体をど忘れした時に、リファレンス的に見ることはある。
ていうか検索かけると上位に出てくることが多い。
あそこで勉強するのはさすがに勧められないな。
969デフォルトの名無しさん:03/09/05 22:13
>>968
ではどこで勉強したらいいでしょうか?
本買え。
MFCからはじめろ。MFCわからなけりゃ他の言語にしな。
MFCはVisualC++に初心者向けの本がくっついてきただろ?読むならそれで十分だ。
972デフォルトの名無しさん:03/09/06 19:14
EngBitBlt というのがよくわかりません。
おしえてください。
973デフォルトの名無しさん:03/09/07 04:14
Win32Applicationで最小化して戻した時など再描画の処理を入れて
文字などが消えないようにしますが、コンソールみたいにウインドウに焼き付ける
みたいな方法で同じ事がしたいのですが、その方法があるなら教えてください。
>>973
WM_PAINT もしくは、 OnDrawで描画するようにする。
Winプログラマの常識。
975973:03/09/07 05:04
>>974
ありがとうございます。

いつもはWM_PAINTでやっているのですが、ゲームを作っていて、
マップ、コマンド、アイテムなどユーザーに選択させながら表示させている
のですが、それを再表示するとなると、又選択させないといけないのです。
表示と選択処理は別にするのが普通だと思うのですが、マップは攻撃範囲に
よって表示するものが変わり、コマンドだと所持しているアイテムに
よって変わるなど、その地点では必要ないデータを渡すのが
ごちゃごちゃして嫌だったので楽な方法が無いかと質問しました。

OnDrawは始めて聞きました。調べてみます。
>>975
Doc/View使ってないならWM_PAINTで描画すればよろしかと。

>表示と選択処理は別にするのが普通だと思うのですが
常に、そうするべきと思われ。

なんだか、設計に問題ありなような気がするなあ。
977973:03/09/07 07:05
>>946
ありがとうございます。

>Doc/View使ってないならWM_PAINTで描画すればよろしかと。
始めて聞いた言葉なので調べてみます。

>常に、そうするべきと思われ。
>なんだか、設計に問題ありなような気がするなあ。
とにかく楽に作る事を考えていたので、これ以外の拡張の時もすごく大変
でした。ゲームを作りながらプログラムを勉強しているので、行き当たり
ばったりなのもあると思いますが。もう一度1からやりなおします。
>>975
普通はCreateCompatibleBitmapを使うだろ。
>>978
ありがとうございます。それも調べてみます。
AdvancedWindows 買おうと思ったけど
たけーーーーーーーーーーーーーーーー!!!

買って損しないか心配
ゲームならOnDrawで描画するより、タイマーで割り込みをかけてOnTimerで描画した方がいい。
というかゲームのプログラムはそれが普通。
こうすれば常に描画を更新しているから、再描画を指示する必要はない。
一冊ゲームプログラミングの本を買うことをおすすめするよ。
慣れてきたらDirectXとマルチメディアタイマーに切り替えな。OnTimerは精度悪いから。
>>981
おぉ、そうなのか。
なんかおすすめのゲーム製作本はある?
>>982
このサイトの本なんかはよさげ。本は持っていないが、このサイトでよく勉強してる。
http://www.sm.rim.or.jp/~shishido/index.html
984デフォルトの名無しさん:03/09/08 14:55
あるボタンを押してその関数内の処理を
強制終了させるためのボタンを作りたいので
すがボタン内の処理を強制終了させる関数、
方法はありませんか
ボタンのイベント処理を別スレッドでやってるだろうから、
その、イベント処理をやってるスレッドに WM_QUIT でも投げてやればよし。
そのイベント処理をやるスレッドが
while( 0 < GetMessage( ... ) ) {
}
って感じじゃない時は、
グローバルな変数をつかう。たとえばグローバルなスコープに
volatile static int haltButtonProcess = 0;
などと書いておいて、
イベントハンドラ側に if( haltButtonProcess ) return;
ってな記述をちりばめておく。
外部から haltButtonProcess = 1; とかってやると、強制終了できる。
>>984
ボタンに中の関数なんてありませんよ。
ボタン内の関数・・・何となくVBっぽい感覚だな。
強制的に別のスレッドを終了させるには、TreminateThread()という関数がある。
でもこれは危険だから使わない方がいいよ。
何かグローバル変数を用意しておいて、終了ボタンを押したらグローバル変数をtrueにして、
作業してるスレッド内ではループのどこかでグローバル変数を調べて、
フラグが立っていたらExitThread()をする、という方法がある。こちらの方が安全。
グローバル変数よりも、メンバ変数のほうが良くないか?
↓今度こそ次スレをマカスィタ!!!
>>988
別スレッドにオブジェクトを渡すと構成がデバッグの時assertで落ちます。リリースなら通るんですがね。
コールバックの引数にオブジェクトのポインタを渡そうとしたら、そういうエラーが出て、
停止位置のMFCのソース読んだらオブジェクト渡すなというようなことが書かれていました。
埋め
>>991
別にオブジェクト渡すなんていってないよ。
MFCだとマルチスレッドもクラスだから、そのクラスのメンバに変数を追加して、
メンバ関数でその変数を書き換えるようにすればいい。
>>984が作ってるのは CWinThread派生のUIスレッドじゃなくて、
ワーカスレッドっしょ?多分。
Microsoft Platform SDKはどこにあるのでしょう?
MicrosoftのDownloadサイトでPlatform SDKを検索しても
Pentablet用とかしか命中しません・・・
October 2002が欲しいんですが・・・。
>>996
ttp://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
ココなんだが、February 2003になってる
(スクリプト切ってるとダウンロードできないよ)
ほいさっさ。
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/

October 2002とかって昔の奴はDLできないんでないの?
ケコーンついでに
1000げとスザー
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。