Win32API質問箱 Build88

このエントリーをはてなブックマークに追加
952949:2010/08/20(金) 22:41:58
いや、ネタでこんな長文書きません。誤解があったらすいません。
ただ、PC-9821上のWin95/Win98(SE)/WinNT4で共通して動く
コードを書きたいのです。当時のアプリで優秀なものが結構ありながら、
しかしソースコードが公開されていないために、
「なら自分で組んでやるぜ」と思った次第です。

DirectXの描画に関しては、基本的にはver. 6.1を基準にしていきたいです。
普段のデバッグは、自作のPhenom II x4 955BE (C2)/4GB DDR3/500GB+1TB SATA/
GA-MA785GT-UD3H/WinXP SP3のほうで同じコンパイラでやってます。

新しすぎる参考書(2001年以降くらい〜)とか、コンパイラだと、
そっちプロパーの解説になっちゃうので(猫本とかはどうなんでしょうか?)。勝手ですいません。
VC++ 2005 EE?が無償で使えるのは耳にしたことがあります。でも、とりあえず
手持ちのVC++ 4.0やBorland C++ 4.52時代のもので完結できたらいいな、と思ってます。
PC-9821で動かすのがポイントです。でなきゃ、Windows Programmingはやってなかったと思います。
953949:2010/08/20(金) 22:44:35
連投すいません。今まではPC-9801でx86アセンブラ、OpenWatcom C + FASMで
自作描画ライブラリを作ったり、サウンドやEMSメモリをいじったりしてました。
954デフォルトの名無しさん:2010/08/20(金) 23:08:55
>ただ、PC-9821上のWin95/Win98(SE)/WinNT4で共通して動く
>コードを書きたいのです。当時のアプリで優秀なものが結構ありながら、
>しかしソースコードが公開されていないために、

嘘を書くな
しかも何でいまさらWin9x/NT4なんだ
955デフォルトの名無しさん:2010/08/20(金) 23:11:26
>「なら自分で組んでやるぜ」と思った次第です。

でも static の意味は判りません(キリ
956デフォルトの名無しさん:2010/08/20(金) 23:17:53
おちょくるなアホ
957デフォルトの名無しさん:2010/08/20(金) 23:21:45
static → private
extern → public
958949:2010/08/20(金) 23:35:29
Win32APIの質問だったら、ここしかないと思って質問したんですが、
なんで釣りとか嘘を書いてるとか、云われるんでしょうか…?

当時優秀だったフリーウェアで、ソースコード非公開のものは結構ありますよ。
それを自分である程度再現して、たとえばGPLv2とかBSDライセンスで公開したいというのは、
あるでしょうが。

それに、いまさらもなにも、Win95〜NT4〜W2k〜XPまで、すくなくとも
共通したコードで書けるわけで、プラットフォームの差異を異端視する必要は
ないと思います。PC-9821後期モデルであれ、古いFMVノートであれ、同じでしょう。

staticの意味は分かりますが、世のWin32APIの解説サイトや参考書で、
staticを付けているコードがほとんど無いし、WndProc関数にしても、
long FAR PASCAL _export WndProcとしているのはあまり見ません。
そこに何か意味・論理上の差はあるのか?とお聞きした次第です。

でも、どうも嫌われてしまったみたいなので、すみません。
959デフォルトの名無しさん:2010/08/20(金) 23:37:44
あまりレガシー環境にこだわってる人見るとアホに見えてくるんで
おちょくりたくなって来るんですよ

これは俺の意見じゃなく、からかってる人達の意見な
960デフォルトの名無しさん:2010/08/20(金) 23:51:54
>それに、いまさらもなにも、Win95〜NT4〜W2k〜XPまで、すくなくとも
>共通したコードで書けるわけで、プラットフォームの差異を異端視する必要は

だから嘘を書くなってw
961デフォルトの名無しさん:2010/08/20(金) 23:56:05
他人をおちょくるためなら平気で長文書くし自虐や自演を使うオナニー変態がいる
コレ豆知識な
962デフォルトの名無しさん:2010/08/20(金) 23:57:50
FARなんて、16bit時代の遺物
PASCAL規約なんて、3.1以前の遺物
_exportは知らん
963デフォルトの名無しさん:2010/08/20(金) 23:59:15
>>949
世代をまず伺いたい。(A:10代 B:20代 C:30代 D:40代 E:それ以上)
PC-9821はどうやって入手したの?(A:昔買ったのをずっと使ってる
B:中古 )
BCC+4.0はいつ買ったの


とか
964デフォルトの名無しさん:2010/08/21(土) 00:00:25
>>961
つまりおちょくってるのは949で959はその自演と
965デフォルトの名無しさん:2010/08/21(土) 00:01:27
俺はちげーよw
966デフォルトの名無しさん:2010/08/21(土) 00:03:11
とりあえず、
long FAR PASCAL _export WindowProc(HWND, unsigned, UINT, LONG);

LRESULT CALLBACK WindowProc(HWND,UINT,WPARAM,LPARAM);
の方が良いだろう。
967949:2010/08/21(土) 00:32:27
>>962
ありがとうございます。FARとかは不必要なんですね。素直にWINAPIでやると。
OpenWatcomに付属のサンプルコードは、Win32/Win16両方で走るように、
プロジェクトと#ifdefで分かれてて、かつその差異を吸収するwin1632.hという
インクルードファイルがあったりします。普通の入門書どおりで差し支えない、と。

世代は20代後半、PC-9821は中古購入です。PC-9801でC + アセンブラをやってましたが、
一段落した(多少の描画機能の実装とか、各種ROMの吸出し、FDイメージ化とか)ので、
目先を変えてWin32プログラミングでもしてみようかなと思って。
NetBSDでのGtk2がGUIプログラミングとしては初めて。
昔部活でPC-9801VXでN88 DISK-BASIC(86)をやっていた、ギリギリの世代です。
Borland C++ 4.52はebayで先月輸入しました。OpenWatcom v1.9と比較するためです。
TASM 4.0もebayで買ったな。

>>966
ありがとうございます。やはりCALLBACKがよさそうですね。OpenWatcom付属のソースは、
かなり後方互換性を重視している感じなので(DOS/Win3.1/Win32対応コンパイラ)、記述をわざと
古めにしてるのかもしれません。IDEも古めかしい感じですし。
ちょうどアレですかね、昔のCコンパイラでint main(void){を受け付けるのに、
80年代の参考書はmain(){ で解説しているとか、そういうノリですかね。
968デフォルトの名無しさん:2010/08/21(土) 00:40:01
♪君の行く道は♪
♪果てしない悪路♪
♪やがてきっと♪
♪泥沼にはまり♪
♪そこを抜け出し♪
♪老いたプログラマ♪
969デフォルトの名無しさん:2010/08/21(土) 01:24:22
OSの新旧はともかく、その当時のWin32のコードはたいていVC++4〜6がベースになっている。
なのでOpenWatcomのソースでstaticがついているというのは、その処理系独特の作法ともいえる。
今の環境でその優秀なプログラムとやらを勉強したいのなら、Win32APIだけじゃなくて処理系別の特性の違いも覚えていく必要がある。
ある処理系では必要な宣言でも別の処理系で不必要で、間違って記述したために動作しないという可能性も当然あるからな。

まあ遠回りすることを咎めたりはしないが。

_exportというのはたぶんVC++の__declspec(dllexport)のことじゃないかな
970デフォルトの名無しさん:2010/08/21(土) 01:38:11
もうひとつ気になったが、

>>ちょうどアレですかね、昔のCコンパイラでint main(void){を受け付けるのに、
>>80年代の参考書はmain(){ で解説しているとか、そういうノリですかね。

これはノリとかではなくCの規格でどっちの記法も許されている。
ちなみにC++では後者の書き方は不可。

古い参考書を使う場合、今の規格では非推奨となっているような記述も当然あると思うので
そういったC/C++規格やAPI仕様の変遷も全部勉強すべし。
971デフォルトの名無しさん:2010/08/21(土) 01:45:21
むしろ古い規格のコンパイラなんだから新しいものに合わせる必要ないんじゃあ…
972デフォルトの名無しさん:2010/08/21(土) 01:49:37
Delphiの出番だな
973デフォルトの名無しさん:2010/08/21(土) 02:01:59
夏だな
974デフォルトの名無しさん:2010/08/21(土) 12:43:12
>>967
>世代は20代後半、PC-9821は中古購入です。PC-9801でC + アセンブラをやってましたが、

これが嘘じゃないなら病院へ逝った方が良い
冗談抜きで
975デフォルトの名無しさん:2010/08/21(土) 13:08:39
たしかに正気を疑う。
40代後半なら話はわかるが・・・いや今更PC-9821ってさっぱりわかんね。
昔のPC板いった方がいいだろ。
976デフォルトの名無しさん:2010/08/21(土) 13:42:49
>>969
_exportもWin16の遺物
Win32ではWndProcなどのアプリケーションが用意するコールバック関数に
付ける必要はなくなった

つーかstaticの意味が分からないというのはWin32 API以前の問題だってことが
わからないならC言語入門のスレから出なおせとしか
977デフォルトの名無しさん:2010/08/21(土) 13:44:10
> VC++ 2005 EE
ではWin95で動くバイナリは作れない
978デフォルトの名無しさん:2010/08/21(土) 13:45:59
95にWin32s入れれば動くんじゃないかな。
試したこともないけど。Win32sとか懐かしい。
979デフォルトの名無しさん:2010/08/21(土) 13:49:00
ごめん適当なこと書いたわ、32sはWin3.1用だた
980デフォルトの名無しさん:2010/08/21(土) 14:00:48
>>949
無い。

C++でprotected/privateにするような感じで、
static修飾した方が美しいから、そうしているだけ。
981デフォルトの名無しさん:2010/08/21(土) 14:56:20
ttp://hongliang.seesaa.net/article/7539988.html
こちらのソースを参考にSetWindowsHookExを実装しているのですが
64bitプロセスをアクティブにすると反応しなくなります。
64bitプロセスに対して動作させるためには、どのようにすればいいでしょうか。
982デフォルトの名無しさん:2010/08/21(土) 15:23:45
64bitで書け
983デフォルトの名無しさん:2010/08/21(土) 16:06:42
次スレの季節
984デフォルトの名無しさん:2010/08/21(土) 16:09:24
まだ慌てる時間じゃない
985デフォルトの名無しさん:2010/08/21(土) 17:07:45
>>981
プロアクティブに今すぐお電話
986949:2010/08/21(土) 18:41:44
>>980
ありがとうございます。やっぱりstaticをつけたほうが、コード的には
美しいものになるんですね!

僕はカーニハン先生とパイク先生の「プログラミング作法」や、
藤原氏の「Cプログラミング診断室」を熟読していまして、きれいで洗練されたコードを
目指しています。だから、staticをつけるほうがイイ!のであれば、できるだけ
それに準じたかったのです。あまりにも無意味であれば、その限りではなかったんです。

>>974
いやホント、5インチフロッピーを部室で渡された、最後の世代ですよ。
今部屋にあるVX、UV、DA、それに当時手の届かなかったA-Matehがあるのは壮観だなぁ。
987デフォルトの名無しさん:2010/08/21(土) 18:46:35
だからさっさと病院逝けよ
988デフォルトの名無しさん:2010/08/21(土) 18:47:58
staticの意味とかwin32api関係ないじゃん
Cの入門書くらい読んでからプログラム板に書き込めよ
989949:2010/08/21(土) 19:04:10
いえ、staticの意味くらい分かります。そうではなくて、ほとんどの入門書・サイトで
初期化関数や実体化関数の宣言でstatic BOOLとしていないし、
static char szAppNameとかしていないので、疑問に思ったんです。

でも、美しいコードを目指します。
990デフォルトの名無しさん:2010/08/21(土) 19:09:45
きれいかどうかではなく、必要かどうかで考えるべき
991デフォルトの名無しさん:2010/08/21(土) 19:15:11
staticの意味分かってて疑問に思うなら向いてない
992デフォルトの名無しさん:2010/08/21(土) 20:04:24
なんでもかんでも明示的にしたら最適化が効かなくなるんじゃね?
993デフォルトの名無しさん:2010/08/21(土) 20:08:31
そういう問題じゃないだろ
994デフォルトの名無しさん:2010/08/21(土) 21:16:39
WM_ENDSESSIONでファイルに書き出すのが駄目って本当?
995デフォルトの名無しさん:2010/08/21(土) 21:30:18
やってみりゃいいよ
996デフォルトの名無しさん:2010/08/21(土) 22:03:45
やったけど問題なく動く。でも終了間際に書き込むのはなんちゃらって見た
997デフォルトの名無しさん:2010/08/21(土) 23:29:23
staticの意味がわかるのに
必要かどうか分からないとかきれいかどうかで決めるとかマジで病院行け
998デフォルトの名無しさん:2010/08/22(日) 00:18:18
999デフォルトの名無しさん:2010/08/22(日) 00:35:48
999gets
1000デフォルトの名無しさん:2010/08/22(日) 00:38:54
>>998
>998 名前: デフォルトの名無しさん Mail: sage 投稿日: 2010/08/22(日) 00:18:18
>お前らマジ次スレ行け
>http://hibari.2ch.net/test/read.cgi/tech/1282403810/
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。