• 締切済み

Windowsプログラミングでのテキスト保存について

Windowsプログラミングでのテキスト保存について WindowsAPIを使ってプログラミングをしているのですがコントロールに入力されたテキストを 保存するときにWindows付属のメモ帳のように保存ダイアログボックス上で保存文字コードを 選択できるようにしたいのですがやり方わかる人いましたらどうか教えてください。お願いします。

みんなの回答

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

カスタムコモンダイアログ…ですかね。 http://hp.vector.co.jp/authors/VA016117/esccd.html など。 このような方法で、コモンダイアログにコントロールを追加できます。 # コントロールの位置を揃えるのは一手間掛かりそうですが……。 ユーザー操作で変更されたコントロールの内容も取得できますので、 後は自分で処理することになります。 文字コード選択したからといってそのままWriteFile()等で書き出しても 文字コード変換はされませんのでお間違えのなきよう。 自分のコードで文字コードを変換して書き出す必要があります。 # Cランタイムの方である程度変換してくれる可能性もあるかも知れませんが。

sonicell39
質問者

お礼

回答ありがとうございます。カスタムコモンダイアログと文字コード変換という方向で すこし試してみようと思います。道筋示していただきありがとうございました。

関連するQ&A

  • Windowsプログラミングでのテキスト保存について

    Windowsプログラミングでのテキスト保存について エディットコントロールに入力された文字列を取得しGlobalAlloc関数などを使いメモリを確保し CreateFile関数、WriteFile関数を使ってテキストファイルを作成するプログラムを書いたのですが マルチバイト文字でコンパイルした場合とUnicode文字でコンパイルした場合とでファイルの中身の 表示結果が異なってしまいます。 例えば ナンバーは 12 34 56 78 です。 日付 00/00 00:00:00(改行)←1行目 ナンバーは 34 56 78 90 です。 日付 00/00 00:00:00(改行)←2行目 とエディットコントロールに入力されていたものをテキストファイルに書き込むと、 Unicode文字でコンパイルしたプログラムの場合 ナンバーは 12 34 56 78 です(改行)などと途中までしか書き込まれていなかったり あるいは2行中初めの1行しか書き込まれていなかったりします。 このプログラムをマルチバイト文字でコンパイルするとエディットコントロールに入力されたとおりに ファイルに書き込まれるようです。コンパイル時どちらも構文エラーはでません。 自分なりに文字の取得方法やメモリ関係やワイド文字関連の事情などをいろいろ試してみたのですが、いまだに解決していません。分かる人がいましたらどうか教えてください。お願いします。 ちなみにエディットコントロールは複数行入力スタイルでEM_SETSEL、EM_REPLACESELで追記されていく、出力のみ可能という設定です。

  • テキストをUTF-8で保存するため

    テキストをUTF-8で保存するため以下に http://madeinpc.blog50.fc2.com/blog-entry-308.html 『•文字コードを指定できるテキストエディタ(Terapadなど)』を使用するように 『「UTF-8」なので、メモ帳でそのまま保存したテキストファイルは使用できません』 との記述があります。 意味がどうも分かりません。Windowsに標準付属しているメモ帳で「名前をつけて保存→文字コード→UTF-8」としてやれば同じことではないかと思うのですが如何でしょう? よろしくお願いします。

  • windowsプログラミング

    "猫でもわかるwindowsプログラミング"を読みながらWin32 APIを勉強しているのですが、なかなかうまくいかないところがあります。 モードレスダイアログボックスを表示してコントロールも問題なく行えているのですが、ダイアログボックスのウィンドウについている赤い閉じるボタンが反応を返しません。 自分で作った閉じるボタンでは正常に閉じるのですが、ウィンドウの閉じるボタンを押しても閉じません… ダイアログボックスのボタン類のIDと同様にウィンドウについている閉じるボタンにもIDは存在するのかと思ったのですが、resource.hを見ても書かれていないのでなさそうですね… メインウィンドウであればWM_CLOSEメッセージが送られてきますが、この場合も何かしらのメッセージが送られてきているのでしょうか? Windows7 , Visual Studio 2010 , C言語で書いています。

  • エディットボックスの数値をテキストファイルとして保存するには?

    プログラム初心者です。 質問させてください! リソース機能を用いて、親ウインドウのメニューバーから子ウインドウのダイアログを作成するプログラムを作りました。 さらにその子ウインドウ上に、エディットボックスのコントロールを作り、それに入力した数値をこの子ウインドウ上に新に設けたボタン(IDC_BUTTON1)が押された時に、この数値をテキストファイルに上書きして名前をつけて保存という形で保存させたいと思っております。 MFCの機能は使っておりません。 このような機能を実現させるためには、 どのような関数を使えばいいのでしょうか。 コモンダイアログボックスを使ってうまくプログラムを書ければと思うのですが・・・ どなたかご教授よろしくお願いいたします。

  • Webページ保存によるテキストボックス内文字の抽出

    次の課題を考えています。初心者ですのでよろしくお願いします。 課題 Excel2007のシートに複数のテキストボックスを作成して、このテキストボックス内の文字(テキスト)をExcelのセルまたはWordにコピーしたいと考えています。OSはWin7です。 方法 Windows XP SP2とワード2003の場合に関して、下記URL http://okwave.jp/qa/q4673231.html に説明があったので、これを参照して 1 Excel2007ファイルを名前をつけて保存 → Webページで保存 2 保存されたhtmlファイルをブラウザで開き、それを名前をつけて保存(テキストファイル選択) しかしながら保存されたテキストファイルをメモ帳で開いてみてもテキストボックス内の文字は保存されていません。 Webページで保存した場合、filesフォルダ内にテキストボックスがそのままイメージで保存されているので、この方法ではむずかしいのかもしれないと思っていますが、なんとかWebページ保存の方法でテキストボックス内の文字を抽出したいと考えていますので、どなたかよろしくお願いします。

  • テキストボックスにフォーカスを当てる?

    こんばんは,すみませんよろしくお願いします。 テキストボックスにフォーカスを当てるには,例えば, TextBox1.SetFocus のようにするんだと思うのですが,テキストボックスに初期値が設定されていたときには,上記のようにすると,初期値のテキストの右側に線のようなポインタがテキストコントロール内にでてきます。 しかし,このような状態では,いったん初期値を消さないと,別の値に書き換えることは出来ません。 テキストコントロール内に初期の値として,何らかのテキストが入力されているとき,文字列が選択された状態になっていれば,即,別の値を入力することが出来ますので,ユーザーフォームをshowしたときに,テキストボックス内の初期値 (例えば,「ここに名前を入力してください」などの文字列) を選択した状態にしたいのです。どのようにすれば良いのでしょうか?何度もすみません。

  • テキストボックス(アクセス)内のテキストの保存

    テキストボックスを設けて、その中に直接文字を入力して、ツールバーの保存ボタンを押しても、入力した文字がどうしても保存されません。自分なりに原因を探してみたのですが、全くわかりません。もし、どなたかご存知でしたら、教えていただけないでしょうか。自分は全くの素人なので、専門用語ではなく、簡単な言葉でわかるように説明していただければ、幸いです。宜しくお願いします。

  • Windowsプログラミングでの質問です

    よろしくお願いします。 windowsのプログラミングを、『猫でもわかるwindowsプログラミング弟2版』と言う本を参考にしながら、C言語で作っています。 2ヶ月ほどがんばってみたのですがどうしてもうまく行きません。 手順です、 1、空のウィンドウを作りメニューバーを作成。 2、メニューに『ファイルと、オプションタブを作る』 3、オプションタブに、ダイアログボックスを『開くと、閉じる』タブ   を作る。 4、『開く』タブをクリックすると、名前を入力するためのダイアログ  ボックスを開く。 と言うプログラムなのですが、作成されたウィンドウから⇒オプションタブ⇒開くをクリックしても、ダイアログボックスが表示されません。 リソースファイルや、ヘッダファイルを開いて、参考にしている本と比べてみたのですが、ほとんど変わっていません。自分では原因が発見できないのですが、詳しい方、ご指摘をお願いします。 5、気になる所では、ソース中で、ウィンドウプロシージャの記述で、  else文に{}が無いので、そこをいじってみたのですが、うまく行きま せんでした。   case WM_PAINT: //描画処理 if(strcmp(szName, "")==0) strcpy(szBuf, "まだ名前の入力はありません"); else wsprintf(szBuf, "入力された名前は%sさんです", szName); hdc = BeginPaint(hWnd, &ps); TextOut(hdc, 10, 10, szBuf, (int)strlen(szBuf)); EndPaint(hWnd, &ps); break; ご指導よろしくお願いします。  

  • テキストファイルとして保存

    テキストボックス内の文字列をテキストファイルとして保存したいのですが。詳しく解説があるサイトやサンプルを紹介していただければ幸いです。 環境 Visual Basic 6.0 Windows 2000

  • Windowsの標準文字コードについて

    標準文字コードはシフトJISとされていますが、 例えば、windowsでメモ帳を使って文字を書いて、保存をした時。 保存する時の文字コードは自由に選択できますよね。 この時点だと、どこにシフトJISコードが使われているのかはサッパリ分かりません。 それで考えたのですが、 文章を保存する時では無く、 メモ帳に書いている時に使われている文字が、 シフトJISなのでしょうか?(その文字を16進数としてみた時にシフトJISの文字コードになっている) つまり、 もともと、windows上でwebページのフォームに文字を入力するとか、 メモ帳で文章を書くと、 シフトJISとして書いている事になるのでしょうか?(シフトJISコードに対応した16進数で書いている) それを、例えばメモ帳ならシフトJISコードを違うコードに変換して保存する機能が付いている ブラウザには、その機能は無いから、フォームからはシフトJISコードとしてのデータしか遅れない。 そう考えると、 windows上では入力する全ての文字がシフトJISコードという事になり、 標準文字コードがシフトJISという言葉にも納得がいくのですが、 上記の理解で正解なのでしょうか? よろしくお願いします。