• ベストアンサー

うまく表示されない。(API・C言語)

iyomanteの回答

  • iyomante
  • ベストアンサー率60% (14/23)
回答No.1

mux2.vについては前の質問の http://onegaisimasune.web.fc2.com/verilog/mux2.txt を 使用しました。 main6.cについて、こちらでも20回ほどクリックしたらで同様の症状が再現しました。 とりあえずざっと見た部分 ・case WM_XX~ は最後 break; で終える。今WM_LBUTTON~とWM_PAINT はそのまま繋がって実行されています。 ・WM_PAINT もbreak;で終える ・WM_LBUTTON~の1167行付近の return;もbreak; に変える。(WM_CREATE以外は最後にDefWindowProc()を通すようにする) ・hdc と hDCが2種類混在使用してありhDCは値が取得されてない(多分NULL) *描画ロジックの基本的な組み方 -------------------------------------------------------- // 1.描画オブジェクトの生成 hpen = CreatePen(PS_SOLID , 0 , RGB(100 , 0 , 50)); // 2.描画オブジェクトの選択(このとき従前のオブジェクトを保管する) hOldbr = (HBRUSH)SelectObject(hdc , CreateHatchBrush(HS_DIAGCROSS , 0xFF)); hOldpen = (HPEN)SelectObject( hdc, hPen ); // 3.出力処理 TextOut(hdc , 30, 300, "hello", sizeof("hello")); // なんらかの出力処理 // 4.描画オブジェクトを戻す(保管してあったもの) SelectObject( hdc, hOldpen ); SelectObject( hdc, hOldbr ); // 5.Createした描画オブジェクトは消去 DeleteObject(hpen); ※1と5についてはロジックの一番外側でのみ行いキープしていてもよい -------------------------------------------------------------------------------------- 描画が不安定になるのは、描画オブジェクトの生成消去等うまく処理されてないからと思われます。 リソースが不安定になってます。 WM_PAINT内の繰り返し存在する描画部分は、上記のルールに合わせるようにして下さい。

noname#142813
質問者

補足

申し訳ございません、 http://onegaisimasune.web.fc2.com/verilog/mux2.txt で合っています。 質問文のURLは間違いです。 回答ありがとうございます。 ご指摘の点を修正してまた改めて補足させていただきます。 ありがとうございます。

関連するQ&A

  • ウィンドウを動かして端に追いやると文字が消える(API・C言語)

    C言語でWindows APIのプログラミングをしているものです。 プログラムができたのですが、ウィンドウを動かし、 端に追いやるとウィンドウ上の文字や図形が消えてしまいます。 なぜでしょうか・・・。 結構チェックはしたもののわからずじまいです。 アドバイスお願い致します。 こちらです。 http://onegaisimasune.web.fc2.com/main5.txt

  • 四角形と線との関係(C言語・API)

    C言語にてWINDOWS APIのプログラミングをしています。 そこでちょっとわからないのですが、 このソースをご覧いただけますか。 http://onegaisimasune.web.fc2.com/main7.txt このソースは、ウィンドウ上に四角形があり、 また、クリックで線も引けるというものですが、 四角形の上から線を引くと、線が四角形の下に かぶさってしまいます。 何とか四角形の上に持ってくる方法はありませんでしょうか。 宜しくお願い致します。

  • 不具合が発生(API・C言語)

    WINDOWS APIをc言語でプログラムしているものです。 こちらのプログラムを書いたのですが、 http://onegaisimasune.web.fc2.com/main8.txt 左クリックで線を引くのですが、 線を引いていると普通の文字は消えないのですが、 ある操作をした整数を表示させるようにすると、 その整数が変わってしまいます。 どうしたら直るのでしょうか。 宜しくお願い致します。

  • 二回目の右クリックで正しく表示(C言語・API)

    C言語にて、Windows APIのプログラミングをしております。 現在ウィンドウを作成して、右クリックでファイルパスを 読み込み、そのテキストファイルからある文字の数を数えて その数だけ長方形にして表示させるプログラムを作成しております。 そこで、一回目の右クリックでファイルパスの読み込みは成功 したのですが、二回目以降、うまく行きません。 ファイルパスの表示は、何回もファイルパスを呼び出しても、 うまく表示されます。 長方形がうまく表示されないのですが、なぜでしょうか。 ソースはこちらになります。コンパイラはBorland C++ のフリーのものを使用しております。 http://onegaisimasune.web.fc2.com/main4.txt

  • ファイルパスの二回目の読み込み(API・C言語)

    ウィンドウから右クリックでファイルダイアログを開き、 ファイルパスを取得、ある操作をさせて ウィンドウ上に表示させると言うプログラムを、 C言語、コンパイラはBorland C++、Windows APIにて 作成しております。 そこで、一回目、右クリックしてパスを読み込み、 表示させる事には成功したのですが、 二回目、同じようにウィンドウ上で右クリックして、 パスを読み込むと、おかしな表示となってしまいます。 二回目も一回目と同じような表示にさせるにはどうしたら いいでしょうか。 アドバイス宜しくお願い致します。 ソースはこちらです。 http://onegaisimasune.web.fc2.com/main3.txt

  • C言語でWin32API

    C言語を使ってWin32APIを呼び出すような、Windowsプログラミングを始めたいんですが、何かよい本やサイトはご存知ないでしょうか。 Visual C++6.0はあるんで、それを使えばいいと思うんです。 C言語はわかるんですが、Windowsプログラミングに関する知識はほとんどないので、ごく基本的なことから知りたいんです。 WinMain関数というのを書くようなんですが、その書き方すら知りません。  スケルトン(出来れば、それよりもっと基本的なこと)から書いてあるようなものです。

  • APIはプログラミング言語?

    基本的な事がわからないので教えていただきたいのですが APIと言うのは、Parlやjavaのような 「プログラミング言語」なのでしょうか? そして、APIを理解することで windowsプログラミングと言うのができるのでしょうか?

  • JAVA API を他の言語からの利用するには?

    データマイニングツール WekaのAPIでの利用について、 http://www.cs.waikato.ac.nz/~ml/index.html を見るとJavaから操作できる様ですが 他の言語から操作する事もできるのでしょうか APIの使い方ついては、知識はありませんがこれから 勉強して「日本語プログラミング言語なでしこ」 http://nadesi.com/ と言う言語から利用したいのですが、 他のの言語からAPI利用するにはどのように すれば良いでしょうか? Javaを使われている方でしたらお解かりになられるかと 思いこちらに投稿させていただきました。 投稿カテゴリが不適切でしたら申し訳ありません。

    • ベストアンサー
    • Java
  • c言語ネットワークプログラミングのAPIを乗せているwebページないですか?

    現在私はC言語でソケット通信を使って サーバとクライアントでメッセージのやり取りをおこなってみたいと思っているのですが どのライブラリのどの関数を使って通信できるのか全くわかりません。 (例えば、readの返り値ってなにを返すんだろう?とか) できればunix上(SunOS)でのc言語ネットワークプログラミングに関する APIが乗っているURLを教えていただけないでしょうか?(できれば日本語のwebページがいいです。)

  • C++ API 全般 APIの概要は

    独学にてプログラミングを勉強しているのですが、いきづまってしまったので質問お願いします。 ※Visual Studio 2008 Express Editionsを使用しています。 まだプログラミングに関しての勉強を始めて1ヶ月程度で、最初はVB.NETから始めて、最近C++に乗り換えました。 趣味の範囲でのゲームを作ろうと思っていて、C++とDirectXでの開発を予定しています。(しかし、最終的にはゲームに限らずプログラミングの技術と知識を習得することを目標にしています。)(DirectXに関してはまだ手をつけていません。) まったく1からのスタートで、現在win32コンソールアプリケーションにてコードの勉強をしているところです。 勉強に使っている参考文献は ・VisualC++.NET逆引き大全500の極意 ・ゲームプログラマになる前に覚えて起きたい技術(これを買うには早すぎたようです…。第一章も半分くらいしか理解できません…。) サイトは ・主に「0からのゲームプログラミング」というサイトです。 http://www.plustarnet.com/aspil/Programming/ 本題の質問ですが、APIというものがいまいち理解できません。 (1)上記のような目的で使用するAPIは、標準 Windows APIというものでいいのでしょうか? (2)win32コンソールアプリケーションでは実行できるのに、win32プロジェクトでは実行できないのはなぜでしょうか? #include<windows.h> int WINAPI WinMain( HINSTANCE hInstance , HINSTANCE hPrevInstance , PSTR lpCmdLine , int nCmdShow ) { MessageBox(NULL , TEXT("Hello Wold!") , TEXT("メッセージボックス") , MB_OK); return 0; } (3)http://www.plustarnet.com/aspil/Programming/CConsole.htm このURLのコンソールAPIというのは、一般的に使われているものでしょうか?それともこのサイトのオリジナルのものでしょうか?win32コンソールアプリケーションでAPIを使うには、このURLのCConsoleクラスとうものをインクルードしないといけないのでしょうか?#include<windows.h>と宣言することによって気軽に使いたいものを使うことはできないのでしょうか? (4)#include<windows.h> とした場合、作るものが「win32コンソールアプリケーション」だったり「win32プロジェクト」だったり「windowsフォームアプリケーション」だったりで、使用方法などがまったく別になってしまうのでしょうか? (5)そもそも、上記の目的の場合APIを勉強する必要はあるでしょうか? (6)勉強をしたほうが後々に役立つ場合、どのAPIを勉強するのがいいのでしょうか?(APIといっても様々なものがあるんだなと思い質問しました。もし勘違いでAPIというものは一つしかないとしたらすみません。) なぜAPIに関してかというと、単純に上記のサイトで言語編の一番上から順に見ていったからです。 初心者すぎて質問が的外れかもしれませんがよろしくお願いします。