検索結果 39 件

by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32のCSV読み取りで文字化けする理由が分かりません
返信数: 31
閲覧数: 18500

Re: Win32のCSV読み取りで文字化けする理由が分かりません

そもそも初心者には、 Unicode などの文字コードやwchar_tなどのワイド型などを意識してプログラムすべきと、ある回答者たちが言ったあとで、 なぜ、ANSIコードでエンコードしたテキストファイルの読み取りソースコードでchar型で型宣言したコードを提示するのかさえ、 初心者には、理解できないでしょう。 なぜ、char型で宣言するのかさえ、 理由がまともに説明されておりません。 私は勝手に推測して、 「おそらく、初心者むけのC言語入門書にはchar型のコードが書いてあるし、 Windowsでは標準設定ではchar型でANSIの読み取りをできるから、 なるべく、それを使ってコードを書くのが...
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32のCSV読み取りで文字化けする理由が分かりません
返信数: 31
閲覧数: 18500

Re: Win32のCSV読み取りで文字化けする理由が分かりません

絞り込んでいく作業すら他人にやらせるの? ? やらせてもませんよ? あなた方が、自発的に絞り込んだんですよ? 「絞り込んでください」とは言っておらず、私は最初から、「理由が分かりません」ので 理由を「教えてください」と頼んでいます 。 私から言えば、「理由を教えて」と言ってるのにかかわらず、理由以外の回答をされており、ハッキリいうと、質問内容を無視されてるような感じさえ受けます。 もし理由が分からないなら、まず先に、「私には理由が分からないので、こういう方法で原因を探ってください」というような回答をすべきだと思います。 自発的にボランティア(絞込み)をすること自体は結構なことですが、 感謝を...
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Pythonの実行環境
返信数: 7
閲覧数: 4231

Re: Pythonの実行環境

Pythonを勉強しようとしています。 そう言われますと、Anacondaは特殊のOS以外だと、『必須』となりますね。 誰かが間違いをツッコミするだろうと思って放置しましたが、誰も指摘しなかったので、今、私が指摘しときますね。 macではpythonはプリインストールされています。 macにかぎらず、一般的なデスクトップ向けBSDディストリビューションやデスクトップ向けLinuxディストリビューションでは、pythonがプリインストールされています。 windowsを除けば、pythonの勉強をするだけなら、Anacondaは不要です。 たとえるなら、WindowsでVB script を勉...
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32のCSV読み取りで文字化けする理由が分かりません
返信数: 31
閲覧数: 18500

Re: Win32のCSV読み取りで文字化けする理由が分かりません

ステップ実行も知らずに、やれ表示できないとか、文字化けするとか いろいろと知らないから不具合が起きるので質問を聞いてるんですけど? 質問サイトで質問して、何が悪いんですか? ステップ実行を使いこなして、文字化けの原因を特定できてバグ修正できるなら、そもそも質問をしないと思うですが? あ、皮肉だろうとは思いますけど、皮肉につきあうつもりはありません。 私がわからないことは、私だけが分からないんじゃなくって、私と同様に分からない初心者が多いと思うから、あえて質問を繰り返しています。 いちおう私の手元にソフトバンク「やさしいC」とか、実教出版「プログラミング技術」とか書籍があって、それらでC言語の...
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32のCSV読み取りで文字化けする理由が分かりません
返信数: 31
閲覧数: 18500

Re: Win32のCSV読み取りで文字化けする理由が分かりません

テキストファイルの文字コードを Unicode に変えたままだったので、読み込みできてなかったようです。
ANSIに戻したところ、自動ペインで下記のように値を読み込みました。

kanma_pos 0x0046f81c ",2,2,1,2\n"
str1 0x0046f814 "スライム,2,2,1,2"

しかし、相変わらず、TextOutによる日本語の文字表示ができません。
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32のCSV読み取りで文字化けする理由が分かりません
返信数: 31
閲覧数: 18500

Re: Win32のCSV読み取りで文字化けする理由が分かりません

ステップインをクリックしてください。 現在の行を 1ステップだけ実行し、次の行で停止します。 kanma_pos が変化し、",2,2,1,2\n" と赤く表示されます。 ステップインを1回クリックすると、次の行としてか, string.h が表示されます。 _Check_return_ inline char* __CRTDECL strchr(_In_z_ char* const _String, _In_ int const _Ch) { 4ミリ秒経過 return const_cast<char*>(strchr(static_cast<char const*>(_String), ...
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32のCSV読み取りで文字化けする理由が分かりません
返信数: 31
閲覧数: 18500

Re: Win32のCSV読み取りで文字化けする理由が分かりません

次のように修正すると改善するでしょう。
試してみましたが、相変わらず日本語だけ文字化けします。

テキストファイルの文字コードはANSIで試しています。
なおテキストファイルの文字コードをUnicodeにすると、TextOutしても何も表示されません。

プロジェクトのプロパティの文字コードは、Visual Studioの標準設定のまま、Unicodeにしています。

シングルステップ実行で、
変数の値の変化を丁寧に見ないのはなぜですか?
今初めて「シングルステップ実行」という言葉を知りました。具体的な方法が分かりません。
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32のCSV読み取りで文字化けする理由が分かりません
返信数: 31
閲覧数: 18500

Win32のCSV読み取りで文字化けする理由が分かりません

結論から言うと、CSVの英数字を読み取れるファイルを作りましたが、しかし日本語が読み取れず、(私が)困っており、私に教えてください。 なお、ReadFileは用いていないので、前トピックのReadFileのトピックとは別に、新規のトピックを作成しました。 下記のようなCSVファイルを作成しました。 test.txt 名前,最大HP,素早さ,ゴールド,経験値 slime,2,2,1,2 コボルト,12,6,10,5 これを読み取ろうと、まず、2行目1列目のモンスター名「slime」を読み取るつもりのプログラムを書きました。(slimeだけモンスター名が英語なのは、日本語にすると表示がバグるから。...
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32API の ReadFile の使い方が分からない
返信数: 18
閲覧数: 13968

Re: Win32API の ReadFile の使い方が分からない

ANSIにするとtest.txtの最初の1行だけ表示されますね。期待どおりの動作です。ご指導、ありがとうございます。
Shift-JIS(ANSI) に戻してください。

なぜだか分かりますか?
たぶん

コード:

char str1[100];
で宣言してるから、ANSI以外は入らないのだろうと解釈しました。

どうしてもUnicodeをファイル読み取りしたい場合、
たぶん、fgetsではなくfgetwsなどで読み取る必要があるのだろうと思いますが、
私の現在の能力を越えてます。
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32API の ReadFile の使い方が分からない
返信数: 18
閲覧数: 13968

Re: Win32API の ReadFile の使い方が分からない

n2 = mbstowcs(wbuf2 , str1 ,100); の行に
ブレークポイントを設定するとどうなりますか?
str1の値は

0x0021f3fc <文字列中に無効な文字があります。>

と表示されます。
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: プログラムの書き方:『計算グラフ』的と非『計算グラフ』的
返信数: 10
閲覧数: 6157

Re: プログラムの書き方:『計算グラフ』的と非『計算グラフ』的

具体例を説明してと求められてるのに、Wikipediaにも「計算グラフ」という記事もない時点にかかわらず、「一般性のある技術」と言って説明拒否するのは、まず日本語として、どうかと思いますし、対人能力にも疑問を感じます。 グラフ理論の一分野かと思いましたが、 私が所有してる数学書で、槙書店の『グラフ論要説』(浜田隆資、秋山仁 共著)がありますが(初版は1980年代と古いですが)、その本を読んでも「計算グラフ」という用語はありません。 「計算グラフ」でグーグル検索すると、ニューラルネットワークのサイトが出ますが、 少なくとも現時点においてプログラミング業界では、ニューラルネットワーク技術は一般的に...
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32API の ReadFile の使い方が分からない
返信数: 18
閲覧数: 13968

Re: Win32API の ReadFile の使い方が分からない

ブレークポイントの設定後に、
Visual Studio の左下にあるウィンドウのタブ「自動」、「ローカル」、「ウォッチ」のどれに切り変えて表示される変数の一覧を見ても、
そもそも str1 と str2 がないです。
一方、n2やwbuf2は一覧中に存在しています。

なお
n2 の値は 4294967295 で種類は unsigned int
wbuf2 の値は 0x00c0a2d8 L"" で種類は wchar_t[100]
です
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32API の ReadFile の使い方が分からない
返信数: 18
閲覧数: 13968

Re: Win32API の ReadFile の使い方が分からない

私の環境の場合、すでに作ったファイルがwWinMainを使ってますので、 それに合わせた書き方をしたら、 画面に文字が表示されません。(コンパイル自体は出来る。) wWinmainの箇所のコードでは、setlocaleの記述位置を、 // TODO: ここにコードを挿入してください。 setlocale(LC_ALL, ""); // for mbstowcs のように書いています。 wWinmain全体を書くと、 int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPW...
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32API の ReadFile の使い方が分からない
返信数: 18
閲覧数: 13968

Re: Win32API の ReadFile の使い方が分からない

とりあえずtest.txtから1行だけ読み取って画面に表示するプログラムを作るため、fgetsを使おうと思い、下記のコードを書きましたが、文字化けしていまいます。 // TODO: HDC を使用する描画コードをここに追加してください... FILE *fp2; char str1[100]; char str2[100]; fopen_s(&fp2, "test.txt", "r"); fgets(str1, 100 - 1, fp2); fgets(str2, 100 - 1, fp2); wchar_t wbuf2[100]; mbstowcs(wbuf2 , str1 ,100); T...
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32API の ReadFile の使い方が分からない
返信数: 18
閲覧数: 13968

Re: Win32API の ReadFile の使い方が分からない

吉里吉里zがたしかWin32APIを使ってたような記憶があったので、
吉里吉里zのソースコードを見てみたら、CreateFileとwfopenの両方を使っていますね。
基本はCreateFileでファイルオープンをするけど、fgetsを呼び出す際にはwfopenを使っているようです。

私も、このやり方を真似ようと思います。
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32API の ReadFile の使い方が分からない
返信数: 18
閲覧数: 13968

Re: Win32API の ReadFile の使い方が分からない

TextOut API は改行文字は使えません。あきらめましょう。 質問があります。 今後の、ファイル操作のプログラムを作る上で、私の取るべき方向性を、皆様に教えていただきたいと思います。 私の都合ですが、最終的にゲームに適用するため、CSVファイルのように、データを1行ずつ解釈できるようにしたいと思っています。 名前,最大HP,素早さ,ゴールド,経験値 スライム,2,2,1,2 コボルト,12,6,10,5 こういう感じで、ゲーム用データベース的な感じのCSVファイルを作ろうと思っています。 なのでファイルを1行ずつ読み取る機能、もしくは、いっぺんにファイル全体を読み取った後に1行ごとに文...
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32API の ReadFile の使い方が分からない
返信数: 18
閲覧数: 13968

Re: Win32API の ReadFile の使い方が分からない

DrawTextで正しく表示されました。DrawText の件は解決しました(※ 下記に追加の質問があります)。 ありがとうございます。 追加の質問なのですが、 ゲームでTextOutも使いたいので(私は普段、DrawTextよりもTextOutのほうを使っている)、 TextOutでも同様にテキストファイルtest.txtから読み取った文字列を画面表示してみたいと思い、 テストのため WM_PAINT のTODO以下を次の書き換え、 TextOutのテストコード // TODO: HDC を使用する描画コードをここに追加してください... TCHAR buf[100]; _stprintf_...
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32API の ReadFile の使い方が分からない
返信数: 18
閲覧数: 13968

Re: Win32API の ReadFile の使い方が分からない

とりあえずWindowsアクセサリのメモ帳で、「名前をつけて保存」を使って、 test.txt を Unicode に変換して試したところ、

コード:

This is test of reading.
test, test, test.■■te■■■■B5(文字化け)■g■g部f■f (文字化け)gcg ■gc
のように、末尾に十数個くらいの■と、謎の文字列が表示されます。

とりあえずテキスト本文の英文(This is test of reading.)は読めるようになりましたが、
まだ何か、オカシイようです。
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32API の ReadFile の使い方が分からない
返信数: 18
閲覧数: 13968

Win32API の ReadFile の使い方が分からない

最終目的としてRPG用のデータファイル(マップデータやアイテムデータなど)のテキストファイル(もしくはCSV)を読み取る機能を作りたいと思い、 ReadFile について練習していますが、次の事がわからず、困っています。 ReadFile はその性質上、LPVOID 型でしか、読み取ったデータを保管できないと思います。 しかし、Win32APIで文字列を扱う際には、TCHAR などの文字列型でないと、TEXTOUTなどが使用できません。 なので、TEXTOUTなどがうまく行かず、読み取り内容の表示方法および確認方法が分からずに困っています。 いったい、どうすればよいのでしょうか? 書いたコード...
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: 実行ファイルを作れる実行ファイルの作り方を教えて欲しい
返信数: 2
閲覧数: 2692

Re: 実行ファイルを作れる実行ファイルの作り方を教えて欲しい

なるほど、PEフォーマットというのがあったのですね。 情報、とても助かり、ありがとうございます。 Nscripterのように「中間コードを実行するプログラム(固定)」と「実行する中間コード(可変)」の組を出力する、というのではダメでしょうか? (Nscripterでは中間コードではなくテキストのスクリプトを直接実行していますが) おっしゃる通り、ご提案なされた方法をしようと思います(当分は先ですが・・・)。 言われてみて、ツクール(RPGツクールや格闘ツクール)やウディタなどのゲーム作品の挙動を調べなおし、ゲームの実行ファイルだけを別のフォルダに移して起動するか調べなおしてみたら、案の上、起動...
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: 実行ファイルを作れる実行ファイルの作り方を教えて欲しい
返信数: 2
閲覧数: 2692

実行ファイルを作れる実行ファイルの作り方を教えて欲しい

たびたび、すいません。 私は現在、RPGゲームのゲームエンジンもどきのようなものを開発したいと思っており、そのために知りたいことがいくつかあります。 今回、知りたいのは、Visual Stuido を使わないで実行ファイルを作るための実行ファイルを作る方法です。 念頭に置いているのは、ゲーム作品用の実行ファイルを作るための、ゲームエンジンの実行ファイルのつくりかたです。 一般に、RPGツクールやウディタなどのゲーム開発エンジンを使った開発では、ユーザーはVisual Stuidoを必要としないと思います。 なので、このような Visual Stuido を使わないでゲーム用の実行ファイルを作る...
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32APIでの画像のダブルバッファが分からない
返信数: 19
閲覧数: 9155

Re: Win32APIでの画像のダブルバッファが分からない

配列 p は、p[255]までしか ないので、maptable の先頭の数十バイトが破壊されます。 私の理解を確認したいと思います。 _stprintf_sの誤った使い方によって引き起こされた一種のオーバフローによって、マップ用データが破壊されたという理解で、よろしいでしょうか? マップ描画の関数では配列pは用いてないはずなので、つまり、配列pのオーバーフローが、配列maptableのメモリを上書きしてしまったって事でしょうか? なお _stprintf_s の第二引数をMAX_LENGTHに統一したところ、バグは発生しなくなりました。 (つまり _stprintf_s(p, MAX_LEN...
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32APIのSetTimerでコンパイルエラーが出てしまう
返信数: 1
閲覧数: 1617

Re: Win32APIのSetTimerでコンパイルエラーが出てしまう

申し訳ございません。

単に私が、Win32デバッグ用のファイルと間違えてコンソール画面デバッグ用のファイルでデバッグしてただけのミスのようです。
Win32用のファイルを作り直したところ、上記のサイトのコードで正常に起動するようになりました。
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32APIでの画像のダブルバッファが分からない
返信数: 19
閲覧数: 9155

Re: Win32APIでの画像のダブルバッファが分からない

最低限のコードではないですが、 GitHubに製作中のゲームのコードがあります。 https://github.com/sujiniku/sujinikuRpgRuntimeCppWin32/blob/master/sujinikuRpgRuntimeCppWin32/sujinikuRpgRuntimeCppWin32/sujinikuRpgRuntimeCppWin32.cpp 最低限のコードを特定するのは、時間が掛かりますので、とりあえずコレで簡便してください。 153行目あたりに、マップ描画用の関数 void Draw_map(HDC hdc) があります。(行数は掲示板への投稿日のも...
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32APIのSetTimerでコンパイルエラーが出てしまう
返信数: 1
閲覧数: 1617

Win32APIのSetTimerでコンパイルエラーが出てしまう

自作中のRPGで、コマンド入力後に1秒おきに戦闘の自動進行する処理を入れようと思い、そのため、タイマーの勉強をしようとしましたが、 ネット上にあるWin32APIの講座を見てソースコードをコンパイルしてみても、エラー LNK2019「未解決の外部シンボル '_main' が関数 "int __cdect invoke_main(void)" (?invoke_main@@YAHXZ) が発生してしまい、動作確認ができないために、勉強そのものを開始できません。 例えばWisdomソフト様のサイトにあるタイマーのコードを実行してみても、 http://wisdom.sakura.ne.jp/sys...
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32APIでの画像のダブルバッファが分からない
返信数: 19
閲覧数: 9155

Re: Win32APIでの画像のダブルバッファが分からない

ちらつきではないのですが、先日の相談の後、メニュー画面(道具、装備、などのコマンド画面)を作ってみまして、
メニュー画面からキャンセルボタン(Xキー)を押してマップ画面に戻ると、
なぜか、マップの上2段くらいがバグってるというバグに遭遇しました。
マップの上2段に、マップの最下段が横1マスずれて表示されるというバグです。

読者の方は、もし上述のコードで、バグ発生原因が分かりましたら、ぜひ報告してくださると、助かります。
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Pythonの実行環境
返信数: 7
閲覧数: 4231

Re: Pythonの実行環境

>numpy 知ってんのに Anaconda 知らないのか。どうやって python 勉強した ?

余談ですが、Linux使うと、Anacondaを使わずにPython勉強できますよ
少なくともfedora(ディストリビューションのひとつ)にPythonが標準インストールされてますから。
(ubuntuは使ってないので、どうだか知らない。)
そもそも、私自身、その口でpythonを勉強しましたので、Anacondaの使い方を知りません。

というか、LinuxでAnacondaといえば、Fedoraのインストーラーが同名です。
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32APIのTextOutで変数を表示する方法が分かりません
返信数: 13
閲覧数: 8672

Re: Win32APIのTextOutで変数を表示する方法が分かりません

_itot_s で下記コードで動作する事も確認しました。

コード:

_itot_s(your_money , p, 200, 10);
TextOut(hdc, 420, 280, TEXT("所持金"), lstrlen( TEXT("所持金") ));
TextOut(hdc, 420, 320, p, lstrlen(p));
ここら辺の話題、当掲示板での質問前にはググッテも私にはなかなかヒントが見つからなかったので、皆様の解説、ほんと役立ちます。
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32APIのTextOutで変数を表示する方法が分かりません
返信数: 13
閲覧数: 8672

Re: Win32APIのTextOutで変数を表示する方法が分かりません

皆様、解説、ありがとうございます。 とりあえず、下記のコードを試したところ、変数を文字表示することに成功しました。 _stprintf_s(p, 200,TEXT("money = %d"), your_money); TextOut(hdc, 420, 320, p, lstrlen(p)); なお変数 p の宣言は TCHAR p[MAX_LENGTH] = TEXT("はじめから"); で事前に初期化して宣言してあります。 なお、ずっと将来のハナシですが、完成後にはソース公開&無料配布などをしたいので、 個人的な都合ですが、なるべくVisual Studio の設定に依存する処理は使いた...
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32APIのTextOutで変数を表示する方法が分かりません
返信数: 13
閲覧数: 8672

Re: Win32APIのTextOutで変数を表示する方法が分かりません

Net Framework うんぬんってのは、単に私の知識レベルを説明しただけです。誤解させて申し訳ございません。

なお、作成したいゲームはコンソールアプリではなく、GUIウィンドウのアプリです。
C言語のprintfでコンソールに変数表示する方法なら、私でも知ってますので。
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32APIのTextOutで変数を表示する方法が分かりません
返信数: 13
閲覧数: 8672

Re: Win32APIのTextOutで変数を表示する方法が分かりません

RPGの主人公の所持金が最初は100ゴールドだとして、それがゲーム中に増減して(例えば宝箱からお金を獲得して)200Gになったり(買い物による出費で所持金が減り)30Gになったりする事になるのですが、 その所持金を例えば買い物などの際に、「現在の所持金 100」みたいに画面表示したいのです。 所持金は増減するので、変数であらわす必要があると考えています。 C#のNetFrameworkならToStringで変換できるのは知ってますが、しかし私が現在開発しようとしているのはwin32 API で動作するアプリなので、Net Framework のメソッドは使えません。 現在、取り掛かってるのは所...
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32APIのTextOutで変数を表示する方法が分かりません
返信数: 13
閲覧数: 8672

Win32APIのTextOutで変数を表示する方法が分かりません

ゲームプログラミングで、RPGで、所持金などのパラメーターを画面表示させたいのですが、変数をウィンドウ内に文字表示する方法が分かりません。Win32 APIを用いて開発しています。 _stprintf(p, TEXT("money = %d"), your_money); TextOut(hdc, 420, 320, p , lstrlen(p)); 上のコードだと、Visual Studio のエラー一覧で 「 '_swprintf': This function or variable may be unsafe. 」 と出てしまい、コンパイルエラーになってしまいます。 一方、 _itoa...
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32APIでの画像のダブルバッファが分からない
返信数: 19
閲覧数: 9155

Re: Win32APIでの画像のダブルバッファが分からない

hbmp = CreateCompatibleBitmap(hdc, 640, 480); を使うことにより、背景画像を読み込むのを止めてみたら、 つまり hbmp = (HBITMAP)LoadImage(NULL, TEXT("mudai.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION); を削除してみたら、リークが大幅に減りました。 こうして、偶然、メモリリークは解決しましたが、理由・仕組みが、まだ私に理解できません。 そのほか、各所に DeleteObject(hbmp); を追加してみたら、とりあえず...
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32APIでの画像のダブルバッファが分からない
返信数: 19
閲覧数: 9155

Re: Win32APIでの画像のダブルバッファが分からない

とりあえず、For文ブロック内の最後にDeleteObjectを追加してみt、hbmpを消すつもりのコードを入れました。 for (int x = 0; x <= 9; ++x) { for (int y = 0; y <= 6; ++y) { switch (maptable[y][x]) { case (0): hbmp = (HBITMAP)LoadImage(NULL, TEXT("mapchip_grass.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION); break; case (1): hbmp ...
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32APIでの画像のダブルバッファが分からない
返信数: 19
閲覧数: 9155

Re: Win32APIでの画像のダブルバッファが分からない

上記の私のコードには無い部分ですが、再描画命令 InvalidateRect の第三引数の意味を、今やっと理解しました。 InvalidateRect(hWnd, NULL, FALSE); 上記のように第三引数をFALSEにして修正し、ちらつきは無くなりました。 でも、まだメモリリークが無くならず、私は困っています。もし、よろしければ、助けてください。メモリリークの原因を指摘してくだされば、さいわいです。 // マップの定義。1は壁。0は通行可能な草原。 int maptable[7][10] = { { 1,1,1,1,1,1,1,1,1,1 }, //0 x { 1,0,0,0,0,0,...
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32APIでの画像のダブルバッファが分からない
返信数: 19
閲覧数: 9155

Re: Win32APIでの画像のダブルバッファが分からない

前の投稿で書き忘れましたが、(前投稿で最初のSelectObjectでhCDCと関連づけさせた)画像 "mudai.bmp" はサイズ640×480の白色画像です。無題.bmp を拡大してファイル名を書き換えただけのものです。ウィンドウサイズを640×480の対応を予定しているので、とりあえず、この白色画像だけ作りました。
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32APIでの画像のダブルバッファが分からない
返信数: 19
閲覧数: 9155

Re: Win32APIでの画像のダブルバッファが分からない

下記のコードで、画像全体が表示されるようになりました。 ただし、このコードでは、まだ、画面がちらつきます。また、メモリリークもあるままです。 static HDC hCDC; hCDC = CreateCompatibleDC(hdc); static HDC hMdc; HBITMAP hbmp; // マップ背景用サイズのビットマップ画像を読み込む hbmp = (HBITMAP)LoadImage(NULL, TEXT("mudai.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION); SelectObjec...
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32APIでの画像のダブルバッファが分からない
返信数: 19
閲覧数: 9155

Re: Win32APIでの画像のダブルバッファが分からない

//SelectObject(hdc, hCDC); のように、2個目のbitbltの前のSelectOutをコメントアウトしてみましたが、問題事例と同様に、マップ1マスぶんしか表示されません。また、hCDCの代わりにhbmpを引数にしてみましたが、同様にマップ1マスぶんしか表示されません。 ダブルバッファを試みてないコードの場合での、For文ブロック内にある1つめのSelectObjectおよび1つめのbitbltまでの場合では SelectObject(hMdc, hbmp); というふうにhbmpと関連づけても最終的にマップ全マスが表示されるのに、 一方で、なぜ2つめのSelectOu...
by sujiniku
5年前
フォーラム: C言語何でも質問掲示板
トピック: Win32APIでの画像のダブルバッファが分からない
返信数: 19
閲覧数: 9155

Win32APIでの画像のダブルバッファが分からない

私は現在、RPGゲームの初歩的なゲームエンジンもどきの作成をしようとしており、 Win32APIを用いたソフト中で、主人公がマップ中を移動した際のゲームマップ表示のためにダブルバッファをしようとしております。 現在、下記のプログラムまでは書けていますが、このままでは画面が、ちらついてしまいます。 なお、下記コード中のhCDCは、裏画面のつもりです。また、マップチップ1マスあたりのサイズは32ピクセルです。マップサイズが現在7×10なので、それに相当する配列を用意しており、下記コードのFor文で、マップ読み込みをしています。 static HDC hCDC; hCDC = CreateCompa...

詳細検索ページへ移動する