質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

3387閲覧

win32APIの文字入力に関しての質問です

makino

総合スコア32

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

1クリップ

投稿2015/10/19 11:06

編集2015/10/19 12:38

win32APIについて質問です。お願い致します。

テキストファイルを読み込み、そこに文字を入力して、
再度テキストファイルに保存するプログラムを考えています。

現在は動かすと、テキストファイルの文字は出てくるのですが、
これにどうやって追加していいのかわからず困っています。

TranslateMessage関数を使うと、色々なサイトに書かれてますがどうも使い方がわからず、
動いても1文字だけ出て消えるような感じになってしまいます。

宜しければ、最初の文字の入力方法だけでも教えて頂けたら幸いです。

【追記】
メモ帳のようなもの、をエディタを使わずに作りたいと思っています。

//ファイルのオープン FILE *fp; int i; //カウンター char buf[10][20]; if ((fp = fopen("test.txt", "r")) == NULL){ printf("エラーメッセージを表示する\n"); exit(1); } i = 0; while ((fgets(buf[i], 256, fp)) != NULL){ i++; } fclose(fp);

これで、テキストを開き、ここに文字を入力して、
再度保存したいと考えています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KoichiSugiyama

2015/10/19 12:11

具体的にやりたい内容を書いてみてはどうでしょうか?例えばエディタのようなものを作りたい。テキストファイルに保存されている設定値を読み込み、GUIで表示して、修正されたものを保存する、など。目的によってアドバイスする内容が違ってくるかもしれません。
makino

2015/10/19 12:32

アドバイスありがとうございます。 少し質問を編集します。
guest

回答3

0

勘違いしてるかもしれませんが・・・ReadFileとWriteFileじゃないのでしょうか?
で、ReadFileで読み込んで読み込んだテキストを加工してWriteFileで書き出すのでは?
同じファイル名で書き出そうとすると不具合が起きる(途中までしか読み込んでないと読み込んでいない部分が上書きされてしまう)可能性があるので、書き出すのは別ファイルにして処理が終わったら元のファイルを消して、新しいファイルをリネームするのがいいと思います。いっぺんに読み込むことが出来れば、同じファイル名で書き出してもOKですが・・・
参考までに・・・ファイル読み書き

投稿2015/10/19 11:43

編集2015/10/19 11:45
cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

makino

2015/10/19 12:39

ReadFileとWriteFileですね。 ありがとうございます。 すぐに貼って頂いたサイトで確認してきます。
cateye

2015/10/19 13:10 編集

WinAPIでメモ帳(?)を作るのでしたら、下記サイトが役に立つかも? http://bituse.info/winapi/ ・・・エディットボックスの作成
guest

0

自力でメモ帳を作成するにはかなりのWindowsの知識が必要と考えます。

TranslateMessage関数を使うと、色々なサイトに書かれてますがどうも使い方がわからず、
引用テキスト動いても1文字だけ出て消えるような感じになってしまいます。

上記の質問から判断して、失礼ですが、あまりWin32APIの知識がないようですが…。
適切な文字の表示を行うには、フォントサイズから文字の幅を計算したり、高さを計算したりと大変です。

質問からは、Windowsであらかじめ用意されているコントロールを使用するのか、使用しないのか判断できませんが、エディトコントロールの使用から初めてはどうでしょうか。

具体的にどのWin32Apiを使って、文字を表示しようとしている等の情報があれば、もう少しお力になることができるかもしませんが…

投稿2015/10/19 14:40

akiruno-oneone

総合スコア815

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

参考に挙げられたソースを見ると、テキストファイルの読み込みまではできているようですね。
TranslateMessage関数を使用している、との記述がありますので、エディットコントロール等を使わずに自力で読み込んだテキストをウィンドウに出力して、ウィンドウ上のキー入力を判別しようとされている、と考えてよろしいですか?

だとしたら、次のように考えていけばいいのではないでしょうか。

1)メッセージから入力された文字を取得
2)画面上の入力位置を取得(画面上の入力位置から文字配列のどの文字に当たるか計算)
4)挿入だった場合、文字配列上の該当する位置に一文字挿入
上書きだった場合、文字配列上の該当する位置の文字を書き換え
挿入・上書きの区別なしの場合、どちらかお好きな処理をすればよいです。
5)新しい文字配列で画面上の文字を更新。
6)保存する際にはcateyeさんが書かれている通り一旦別ファイルに保持している文字配列の内容を全部書き出して、元ファイルを削除し、新ファイルを元ファイル名にリネーム

基本的にはこんな感じでエディタが作れると思います。

投稿2015/10/19 13:21

KoichiSugiyama

総合スコア3041

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

makino

2015/10/22 10:45

ありがとうございました 無事に文字も入力できて、少しはメモ帳らしくなったかと思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問