- Win32API質問箱 Build124
51 :デフォルトの名無しさん[sage]:2017/12/01(金) 05:40:43.29 ID:k0FZtccS - バグだらけのひどいコードだな!
>>47よ!動かないの当たり前だ! まず、グローバル変数で、HANDLE hFileを共有する設計前提で作ってるの? 51行目からのint WINAPI WinMain内でのバグっぽいの発見! 55行目:HANDLE hFile; ローカル変数で定義だと…? ローカル変数で定義するなら、そのコード内でhFileをCloseHandle();なぜしていないの? hFileをグローバル変数で使いまわすなら、55行目のHANDLE hFile;のローカル変数の定義は不要じゃねーの? まずは、55行目を削除しろ! グローバル変数と、ローカル変数をちゃんと理解して使いましょう! 9行目からの LRESULT CALLBACK WndProc内でのバグ 14行目:int WIDTH = 0; アプリケーションが終了するまで、イベントごとに毎回ウインドメッセージを処理する意味で、このプロシージャー呼ばれることは理解してるよな? 仮に、ローカル変数を確保はいいとして、case WM_PAINTでWIDTHは常に0なんだけど? 24行目〜のWM_CREATE内で一度だけ初期化して値をずっと保ちたいなら14行目は、static int WIDTH=0;じゃねーの? そもそもCALLBACK WndProcの仕組み理解してる? 24行目 WIDTH = 4 * ((bmpInfo.bmiHeader.biWidth * bmpInfo.bmiHeader.biBitCount) + 31 / 32); はぁ…なんで意味不明な計算してるの? WIDTH = 4 * ((bmpInfo.bmiHeader.biWidth * bmpInfo.bmiHeader.biBitCount + 31)/ 32); こっちが正しいんじゃね?これどういう意図で計算しているかわかってる? 猫のページ見てるならまずは、動くコードをコピペして動かせよ!手打ちでバグ作ってどーする! コード見てて、ローカル変数の使い方や、ウィンドウプロシージャの仕組みがちゃんと理解できていないように見えるので、 直ちに、ウィンドウプロシージャでググってコールバック関数とはなにかを理解することを勧める。 猫のページの7〜10ざっくりみたけどウインドメッセージとウィンドウプロシージャの詳しい説明してないので別のとこ探して読んだほうがいいぞ。
|
|