検索結果 149 件

by Bull
9年前
フォーラム: C言語何でも質問掲示板
トピック: GeyKeyboardState関数について
返信数: 4
閲覧数: 2783

Re: GeyKeyboardState関数について

びせいぶつ さんが書きました:ということは、見るべきは最上位と最下位のbitのみで、それ以外のbitは何が入っているか保証されていない。
という判断でよろしいのでしょうか?
保証されていないと言うか、意味がないと言うことでしょうね。
オフトピック
普通は0になっていと思いますが、まあどっちでもいいんです
by Bull
10年前
フォーラム: C言語何でも質問掲示板
トピック: GeyKeyboardState関数について
返信数: 4
閲覧数: 2783

Re: GeyKeyboardState関数について

これは何が原因なのでしょうか?自分の関数の使い方が間違っているのでしょうか? GetKeyboardState()の返却値の意味を取り違えてい いるようです。GetKeyboardState()は'TRUE'または 'FALSE'を返しますが、関数が正常終了したかどうか を意味します。キー入力が有ろうと無かろうと、普 通はTRUEを返します。keyBufには仮想キーの状態が 格納されますが、キーが押されている場合は最上位 ビットが1になります。 詳細はMSDNで確認してください。 ちょっとしたサンプルです。 #define WIN32_LEAN_AND_MEAN #include <wind...
by Bull
10年前
フォーラム: C言語何でも質問掲示板
トピック: メモリ領域の確保について
返信数: 7
閲覧数: 4434

Re: メモリ領域の確保について

/GSオプションですがVC2008にもあるようで、バッファセキュリティチェックはTrueになっていることを確認しました。 ただそれでもVC2008では実行出来てしまい、VC2012では実行エラーになるのは何故なのでしょうか? なにか/GSの機能がVC2012により厳しくなるようなことがあったのでしょうか? VC++ 2008でエラーにならない理由ですが、前にも書きましたが、最適化すると不正アクセスするコードは実際には生成されません。ですので、main()の最後のセキュリティのチェックに引っかからないという事ですね。最適化をやめるとエラーになります。 では、なぜVC++ 2012でエラーが出る...
by Bull
10年前
フォーラム: C言語何でも質問掲示板
トピック: メモリ領域の確保について
返信数: 7
閲覧数: 4434

Re: メモリ領域の確保について

規格ではオブジェクト(変数・配列)をどのように確保 するかは規定されていませんので、あまり気にする必要 は無いと思います。コンパイラーによって違いが出てく ると思われますが、このような不正アクセスのケースで は、コンパイラーがどのようにオブジェクトを配置する かを把握しているとデバッグがしやすいかも知れません。 VCで例外が発生するのは/GSオプションでセキュリティの チェックが組み込まれているためのようです。コンパイル 結果を見てみると、 str_A[40] = '\0'; /* アクセス違反 */ memcpy(str_A,"01234567890123456789012345678901...
by Bull
10年前
フォーラム: C言語何でも質問掲示板
トピック: Visual C++のバックアップを使うには
返信数: 2
閲覧数: 2715

Re: Visual C++のバックアップを使うには

やはり普段お世話になっていないことは情報が不十分ですね。
Visual Studio 2013の場合ですが、異常終了したあと、再度
起動すると自動的にリカバリーしてくれるようです。
これは今確かめたので、間違いないです。
by Bull
10年前
フォーラム: C言語何でも質問掲示板
トピック: Visual C++のバックアップを使うには
返信数: 2
閲覧数: 2715

Re: Visual C++のバックアップを使うには

私の知る限り、Visual Studioのバックアップは修正を加えたソースを既定のフォルダーに定期的に
保存するだけの機能のようです。また、Visual Studioで保存した時点で、バックアップしたソース
は削除されます。保存しないでVisual Studioが異常終了した時のみ、バックアップしたファイルが
残っています。幸か不幸かまだバックアップの機能に助けられたことがないので、この認識は間違っ
ているかもしれませんが...。
ちなみに、バッグアップされるフォルダーは"Projects"と同じ階層の"Backup Files"です。
by Bull
10年前
フォーラム: C言語何でも質問掲示板
トピック: 同じシグネチャの関数ポインタを返す関数のシグネチャをtypedefしたい
返信数: 4
閲覧数: 3621

Re: 同じシグネチャの関数ポインタを返す関数のシグネチャをtypedefしたい

既に回答がありますが、C/C++ではおそらく出来ないと思われます。 代案として、関数の返却値を適当に定義しておいてキャストしてしまう方法が考えられます。 例えばあまりきれいではありませんが #include <stdio.h> #include <stdlib.h> typedef void (*Handler(int))(int); Handler* func0(int); Handler* func2(int n) { printf("IN func2\n"); if (n <= 0) { return NULL; } else { return (Handler *)func0; } }...
by Bull
10年前
フォーラム: C言語何でも質問掲示板
トピック: ファイル名を変更するシステム
返信数: 29
閲覧数: 13983

Re: ファイル名を変更するシステム

Windows の API には LCMapString() というのがありまして、全角⇔半角の変換 なんかをやってくれるんですが、この場合は使えないようですね(なんかいい 方法があるかもしれませんが)。昔作って某所へ投稿したプログラムを少し、 かえてみました。 //全角カタカナを半角に変換する #define WIN32_LEAN_AND_MEAN #include <windows.h> #include <stdio.h> #include <mbctype.h> #include <mbstring.h> int katakana_han(unsigned char *src, uns...
by Bull
10年前
フォーラム: C言語何でも質問掲示板
トピック: LoadLibraryについて
返信数: 6
閲覧数: 5169

Re: LoadLibraryについて

コンパイラの違いでしょうか? 理由も知りたいので、応えてくださったらうれしいです。 DLLでの関数名はコンパイラーによって違うようです。 VCならご提示のプログラムでうまく行くようです。 @以降は __stdcall 特有でスタックに積むバイト 数をあらわしています。"@0"は引数が無い、"@4" なら4バイトの引数が一つ、"@8"なら4バイトの引 数が二つないしは8バイトの引数が一つであると言 うことです。はっきりとした、理由は分りませんが、 __stdcall にすると、呼び出された関数でスタック ポインタを調整するので間違わないようにするため と、聞いたことがあります。__cdecl(...
by Bull
10年前
フォーラム: C言語何でも質問掲示板
トピック: Windows8.1 での winhlp32.exe について
返信数: 2
閲覧数: 2759

Re: Windows8.1 での winhlp32.exe について

ありがとうございます。
やはり Windows Update の影響でしたか。

いろいろ検索したのですが、Google では引っかかりませんでした。
Microsoft コミュニティはほとんどノーチェックだったので、今後は
たまには、参照しようかと思います。
いいところを紹介していただきました。

ともあれ、原因がわかって良かったです。
by Bull
10年前
フォーラム: C言語何でも質問掲示板
トピック: Windows8.1 での winhlp32.exe について
返信数: 2
閲覧数: 2759

Windows8.1 での winhlp32.exe について

環境は Windows 8.1 64Bit です かつて使われていたヘルプファイル(拡張子が.hlp)は Windows Vista 以降は 標準では表示できません。表示しようとすると、現在サポートされていない旨の メッセージがでて、Microsoft のサイトに誘導されます。そこでダウンロードし てインストールすれば、めでたく古いヘルプファイルも表示できるようになります。 しかし、私のところではうまく表示してくれません。以前は表示できていたよう な記憶があるので(Windows 8.1も公式にファイルが用意されています)、ネット で検索してみても、それらしい情報はありません。唯一海外のブログ...
by Bull
10年前
フォーラム: C言語何でも質問掲示板
トピック: ペイントというアプリケーションへの画像貼り付け
返信数: 1
閲覧数: 1457

Re: ペイントというアプリケーションへの画像貼り付け

ペイントのウィンドウを探して、SendInput()を使用して Ctrl+V を送る、というのはどうでしょうか?
あるいは、WM_PASTE をポストする、という方法もあります。
by Bull
10年前
フォーラム: C言語何でも質問掲示板
トピック: ダイアログウィンドウにメニューバーを作るには?
返信数: 8
閲覧数: 5077

Re: ダイアログウィンドウにメニューバーを作るには?

Visual Studio でビルドする場合は、"{" を "BEGIN" に "}" を "END" に変更してみてください。
基本的には、"{ }" でもコンパイルできるはずなんですが、"BEGIN" と "END" を使う方が
無難ですね。

CreateWindow() あたりのバグは既に指摘されているとおりですね。
by Bull
10年前
フォーラム: C言語何でも質問掲示板
トピック: ダイアログウィンドウにメニューバーを作るには?
返信数: 8
閲覧数: 5077

Re: ダイアログウィンドウにメニューバーを作るには?

akindo さんが書きました:下記のサイトの方法を試してみたのですが、どうやらリソースの書き方が
現在の方式とあっていないようでそのままやるとエラーが出ます。
http://wisdom.sakura.ne.jp/system/winap ... win84.html
リソーススクリプトに

コード:

#include <windows.h>
を加えてみてください。
それで、コンパイルができるようになるはずです。
by Bull
10年前
フォーラム: C言語何でも質問掲示板
トピック: Debugビルド時、GetCurrentDirectory()の返り値がおかしい
返信数: 5
閲覧数: 3237

Re: Debugビルド時、GetCurrentDirectory()の返り値がおかしい

プロジェクトのプロパティでデバッグ/作業ディレクトリはどうなっていますか?
当方ではGetCurrentDirectory()で取得するディレクトリはそこで指定したものと
同じになるようです。デフォルトでは "$(ProjectDir)" ですが、直接指定することも
可能で、へにっくす さんがおっしゃるように Windows は大文字小文字を区別しま
せんので、存在するディレクトリならば、そのまま実行できます。
または、 "$(ProjectDir)" がどうなっているかですね。
by Bull
10年前
フォーラム: C言語何でも質問掲示板
トピック: Debugビルド時、GetCurrentDirectory()の返り値がおかしい
返信数: 5
閲覧数: 3237

Re: Debugビルド時、GetCurrentDirectory()の返り値がおかしい

こちらも質問者さんと同じような環境ですが、現象は再現しません。 現象を再現できる最小限のプログラムを提示することは可能ですか。 こちらで使用したプログラムは以下のようなものです。 #include <windows.h> #include <stdio.h> #include <string.h> int main(void) { const int MAX_LENGTH_PATH = 256; char dir[MAX_LENGTH_PATH]; memset(dir, '\0', sizeof(dir)); GetCurrentDirectory(sizeof(dir), dir); pr...
by Bull
11年前
フォーラム: C言語何でも質問掲示板
トピック: qsortの利用
返信数: 10
閲覧数: 4514

Re: qsortの利用

4 45 55 45 95 1 65 95 90 60 2 65 60 70 70 3 90 80 65 65 としたいです。 こうゆうことでしょうか #include <stdio.h> #include <stdlib.h> int cmp(const void *p, const void *q) { return ((int *)p)[1] - ((int *)q)[1]; } int main(void) { int i; int data[][5] = { { 1, 65, 95, 90, 60, }, { 2, 65, 60, 70, 70, }, { 3, 90, 80, 6...
by Bull
11年前
フォーラム: C言語何でも質問掲示板
トピック: 32bitのwindows 7 のプログラムに64bitのdll
返信数: 8
閲覧数: 9613

Re: 32bitのwindows 7 のプログラムに64bitのdll

ちょっと書き漏らしました。

暗黙的リンクならば Dependency Walker を使用してリンクしている DLL は特定できます。
明示的リンクでも、ある程度は調査できます。
by Bull
11年前
フォーラム: C言語何でも質問掲示板
トピック: 32bitのwindows 7 のプログラムに64bitのdll
返信数: 8
閲覧数: 9613

Re: 32bitのwindows 7 のプログラムに64bitのdll

実行環境が良くわからないのですが、64bit Windows で 32bit Exe を実行する場合と考えてよろしいですか?

まず、DLL のリンクには明示的リンクと暗黙的リンクがあるのはご存じだと思いますが、32bitのEXEから64bit
のDLLをコールしようとした場合、明示的リンクでは、LoadLibrary() でエラーになりますし、暗黙的リンクでは
プログラムの開始時にエラーになると思います。どちらもハングアップすることはないはずです。

プログラムがハングアップするのは別の原因ではないのですか?
by Bull
11年前
フォーラム: C言語何でも質問掲示板
トピック: ファイルの入出力に関して(テキスト)
返信数: 11
閲覧数: 4763

Re: ファイルの入出力に関して(テキスト)

そうですね。そういう理解でいいと思います。
ただファイルの終わりではなく、何らかのエラーを検出した場合も
fgetc()関数は EOF を返します。このときは、feof()関数は0 を返
し、ferror()関数が非0 を返します。
by Bull
11年前
フォーラム: C言語何でも質問掲示板
トピック: ファイルの入出力に関して(テキスト)
返信数: 11
閲覧数: 4763

Re: ファイルの入出力に関して(テキスト)

ちょっと違うかな まず fopen() 関数が返すのは FILE * です。どこかに FILE型の オブジェクト(一般的には構造体)があるわけですが、FILE型には "ファイル位置表示子"と"ファイル終了表示子"が含まれます。 feof() 関数はこのファイル終了表示子を調べているだけです。 ファイルを読み込んで初めてファイルが終了したかどうかわかるの で、ファルを読まないうちにファイル終了表示子がセットされるこ とはありません。 つまり、fgetc()関数が正常終了した場合はファイル終了表示子が セットされることはないです。 ファイル位置表示子はこれから読もうとしている文字の位置が格納 され...
by Bull
11年前
フォーラム: C言語何でも質問掲示板
トピック: C#のコンソールアプリケーションとDXLibでノベルゲームを作ってますが
返信数: 3
閲覧数: 3230

Re: C#のコンソールアプリケーションとDXLibでノベルゲームを作ってますが

ノベルゲームなら、Console.KeyAvailable と Console.ReadKey() で間にあうような気もしますが、 DxLib 風のキー入力関数って、こういうことでしょうか? using System; using System.Threading; using System.Runtime.InteropServices; class prog { [DllImport("user32.dll")] public static extern short GetAsyncKeyState(int key); static void GetHitKeyStateAll(int[]...
by Bull
11年前
フォーラム: C言語何でも質問掲示板
トピック: getchとgetcharにおける改行
返信数: 4
閲覧数: 5770

Re: getchとgetcharにおける改行

サモサ さんが書きました:この他にメリットはあるでしょうか?
メリットと言えるかどうかわかりませんが、getch() は入力をエコーバックしません。
例えば、パスワード入力などの場合 getchar() ではエコーバックしてしまうので、
何らかの処置が必要になります。

コンソール入出力関数のメリットは特別には考えとことがなかったです。
前にも書きましたが、目的が違うので使い分けが肝要ではないでしょうか。
by Bull
11年前
フォーラム: C言語何でも質問掲示板
トピック: getchとgetcharにおける改行
返信数: 4
閲覧数: 5770

Re: getchとgetcharにおける改行

getch() と getchar() では目的が違います。 getch() がコンソール入出力関数であるのに対し getchar() は標準入出力関数です。 getch() がリダイレクトすることは出来ないのに 対し、getchar() はリダイレクトされていれば、 ファイルからの入力も出来ます。 getchar() は文字の入力のための関数で、多くの 場合行単位の入力になります。Enterキーを押した と言うことは、行の終わりを意味するので、改行 (\n) に変換されます。 一方 getch() はそういった変換は一切行われません。 文字の入力と言うよりも、キーの入力といった方が いいかも...
by Bull
11年前
フォーラム: C言語何でも質問掲示板
トピック: たろうXX
返信数: 3
閲覧数: 1662

Re: たろうXX

mecabは使ったことがなかったのですが、興味があったのでダウンロードしてみました。
installすると、sdkというフォルダーができて、その中のヘッダーとライブラリをVisual Studioで
プロジェクトのVC++ディレクトリまたは、C/C++の追加のインクルードディレクトリとリンカーの
追加の依存ファイルに設定すればビルドはできると思います。

実行時にはDLLが必要になるようですので、同じくbinというフォルダーのDLLを実行ファイルと
おなじフォルダーにコピーすればいいと思います。
by Bull
11年前
フォーラム: C言語何でも質問掲示板
トピック: C++builderのファイル入力について
返信数: 8
閲覧数: 5443

Re: C++builderのファイル入力について

MoonGate さんが書きました:using namespace std;

が抜けてるせいだと思うんですがね。
そうすると、"string" ゃ "ifstream" でもエラーになりそうな気がします。
また、"ifstream" を使うときは <fstream> が必要な気がしますが、
その部分はエラーではないんですよね、不思議ですね。
by Bull
11年前
フォーラム: C言語何でも質問掲示板
トピック: SendInputについて
返信数: 4
閲覧数: 3009

Re: SendInputについて

ええ、そうなんですよね。ソースを提示できればいいのですが、ご免なさい今手元のありません。 これだけじゃなんなんで、概要だけでも... INPUT input[] = { { INPUT_MOUSE, 0, 0, 0, MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 0, 0 }, { INPUT_MOUSE, 0, 0, 0, MOUSEEVENTF_RIGHTDOWN, 0, 0 }, { INPUT_MOUSE, 0, 0, 0, MOUSEEVENTF_RIGHTUP, 0, 0 }, }; こんな構造体を用意して、マウスを移動する位置を決めます。 そし...
by Bull
11年前
フォーラム: C言語何でも質問掲示板
トピック: SendInputについて
返信数: 4
閲覧数: 3009

Re: SendInputについて

どのような環境で、どのようなプログラムを実行していますか。
また、キー入力を受け取るアプリケーションは何ですか?

簡単なプログラムを書いて実行したところ、うまくキーを拾えているようです。

当方の環境は
Windows7 Pro 32bit
Visual Studio 2010でコンソールアプリケーションを作成
OS標準のスクリーンキーボードからメモ帳に文字を入力

以上です
by Bull
11年前
フォーラム: C言語何でも質問掲示板
トピック: テキストファイルをリソースとして読み出せない
返信数: 6
閲覧数: 5325

Re: テキストファイルをリソースとして読み出せない

Resource.rc で Resource.h をインクルードしていますか?
リソースコンパイラのメッセージを見ると"TEXT_DATA"が文字列のまま使われているようです。
Core.cppでは"MAKEINTRESOURCE"が使われているので、Resource.h をインクルードしていると思います。
そうするとプログラム(数値)とリソース(文字列)で不整合が起こって読み込めないのでしょう

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