• ベストアンサー

GetWindowTextの使い方

PocketPC2003を使ってアプリを使っているのですが エディットボックスに入力された文字列を 取得する方法が分からず困っております。 エディットボックスに対して、classwizardで CEdit型のm_zip変数を作成しました。 そこで、 CString buf; m_zip.GetWindowText(cs_buf); という所までは分かったのですが、これを char型の文字列にコピーしたいのですがどうすれば よいのでしょうか?。 開発環境は、 eMbedded Visual C++ 4.0です。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

PocketPCってUnicodeじゃなかったでしたっけ? charじゃ無理でしょう。 wchar_tじゃないと

labrakun
質問者

お礼

taka_tetsuさん、いつもありがとうございます。 本当に助かっています。 御教示いただいたとおりでした。 wchar_tで読み込む事ができました。 どうもありがとうございました。

関連するQ&A

  • IMEの入力モードの自動設定の方法

    PocketPC2003上で動作するアプリを eMbedded Visual C++ 4.0 を使用して開発しています。 画面に貼り付けたエディットボックスに 文字を入力するとき、自動で半角英数モード にしたいのですが、それはどのように すれば実現できるのでしょうか? よろしくおねがいいたします。

  • MFCのエディットボックスの値をスピンボタン

    エディットボックスの値をスピンボタンの初期値にしたく、 下記コーディングにしたのですが CString Item; m_Spin->SetPos(((CEdit*)GetDlgItem(IDC_EDIT1))->GetWindowText(Item)); SetPos' : 1 番目の引数を 'void' から 'int' に変換できません。 とのエラーになります。 どのように変更したらよいかお教えください。

  • エディットボックスで複数行入力するには

    スタイルは const DWORD dwStyle = WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_READONLY; 処理は CEdit m_edit; CString buf ; m_edit.GetWindowTextW((LPTSTR)(LPCTSTR)buf, 0); m_edit.SetWindowTextW( buf + mes + _T("\x0d\n")); いろいろためしたのですが、どうしても1行目を書き換えて表示 してしまいます。 文字列を行でどんどん追加していくにはどうすればいいんでしょうか?

  • 検索速度を速くするためには?

    Visual Stdio 2005を使用してダイアログを作成しています。 エディットボックスからキーワードを入力して、テキストファイルから1行ずつ読み込みながら検索して、見付かればリストボックスに追加していますが、もっと検索速度を上げたいと思っています。 ちなみに、ファイルの中身は   1,あいうえお   2,かきくけこ   3,さしすせそ   4,あいうえお という感じで、100000行近くあります。 また、エディットボックスに入力した文字列とテキストファイルから読み込んだ文字列はCString型で、Findを使っています。 検索速度を上げる方法があれば教えて頂きたいです。よろしくお願いします。

  • 検索を1度だけにしたい。

    以前も投稿しましたが、まだわからないので質問します。 現在Visual Stdio 2005を使用してダイアログを作成しています。 エディットボックスからキーワードを入力して、テキストファイルから1行ずつ読み込みながら検索して、見付かればリストボックスに追加しています。 ちなみに、ファイルの中身は   1,あいうえお   2,かきくけこ   3,さしすせそ   4,あいうえお という感じで、100000行近くあります。 そこで、エディットボックスに入力した文字列とテキストファイルから読み込んだ文字列はCString型で、Findを使って読み込んだ文字列に含まれるかをチェックしていますが、全角文字列を検索しようとすると何度も検索されてしまっています。 (例えば検索したい文字列が「あいう」の全角3文字だと、最初は「あいう」、次に「あい」、最後は「あ」と、後ろから1文字ずつ減っていって検索されています。) この検索を最初の1度だけにしたいです。何か良い方法があればお願いします。

  • LineTo,MoveToについて

    MFCのダイアログベースで 変化を表すグラフを作成したのですが 線を描くときに原点復帰してしまいます。 左上のエディットに数値をいれ 実行を押すと座標(200,200)から横にエディットで入力した数値分線を引いていくというものです。 Timerを使い1秒ごとに書かせています。 void CsinDlg::OnTimer(UINT_PTR nIDEvent) { // TODO: ここにメッセージ ハンドラー コードを追加するか、既定の処理を呼び出します。 static int count=0; static double i,x=0; char buf[100]; CString str; /*------描写設定----*/ CWnd* h = GetDlgItem(IDC_BB); CDC* pDC=h->GetDC(); //-----------------------------------// CEdit *edit = (CEdit*)GetDlgItem(IDC_EDIT1); edit->GetWindowText(str); i = atof((const char*)str); x=x+i; sprintf(buf,"%lf",x); siki_edit.SetWindowText(buf); /*---------------------------------------*/ if(count==0) pDC->MoveTo(200,200); // 座標(200,200) に移動 pDC->LineTo(200+x,200); // 座標(200+x,200) まで線を引く count++; h->ReleaseDC(pDC); CDialogEx::OnTimer(nIDEvent); } 実行結果は添付した画像のようになります。 イメージではcountが0の時だけMoveToで動かし、それ以降は座標(200,200)から横に線を引いていきたいのですが。 どのように直せばよいのでしょうか? LineToからLineToの指令ができないということでしょうか?

  • エディッボックスから数字だけを取ってきたいのですが

    エディットボックスに書かれた数字を取るときにGetWindowTextで取ってくるようにしているのですが、それでは文字までとってきてしまいます。そこで数字しか取れないようにするにはどうすれば良いのでしょうか? 教えてください。お願いします。

  • VC6++ char配列の文字列をシリアライズする方法

    入門書には、char配列の文字列をシリアライズで保存する場合は、CStringにキャストして保存するとあったのですが、保存時は ar << (CString)m_char; で保存されているようなのですが、読み出し時はどうすればいいのでしょうか? ar >> (CString)m_char; では読めませんでした。 VC初心者です。よろしくお願いします。

    • ベストアンサー
    • CGI
  • 初回のスピンボタンの挙動

    下記コードを記入し、スピンボタンの増加をクリックすると 最初の一回目に触った時のみ値がマイナスされる現象がでます。 なぜでしょうか? 1)INIファイルから値を読み込みエデットボックスに表示する。 2)スピンボタンの増加をクリックすると、最初の一回目に触った時のみ値がマイナスされる (エデットボックスの値が50だとすると49になる) 3)再度INIファイルから値を読み込みエデットボックスに表示する。 4)二回目からマイナスされない。 (エデットボックスの値が50だとすると51になる) スピンボタンのOnDeltapos UDACCEL stUD; stUD.nSec = 1; stUD.nInc = 1; // ここで変化量設定 CSpinButtonCtrl* m_Spin=(CSpinButtonCtrl*)GetDlgItem(IDC_SPIN1); m_Spin->SetRange32(0,300); //レンジ CString str; ((CEdit*)GetDlgItem(IDC_EDIT1))->GetWindowText(str);//エディットから文字列を int a=atoi(str);//文字列を数字に変換 m_Spin->SetPos(a); //初期値 m_Spin->SetAccel(1,&stUD);//変化量 m_Spin->SetBuddy((CSpinButtonCtrl*)GetDlgItem(IDC_EDIT1));//エディットに関連付け 環境 Windwos XP,Microsoft Visual C++ 6.0

  • MFC:リッチエディットからUnicode文字列を受け取りたい

    MFCのダイアログベースでプロジェクトを作成 ↓ プロジェクトのプロパティで「マルチバイト文字セットを使用する」を「Unicode文字セットを使用する」に変更 ↓ エディットボックスとリッチエディット2.0を適当に配置 ↓ エディットボックスとリッチエディット2.0それぞれにコントロール変数を追加 ↓ InitInstance()内に AfxInitRichEdit2(); を追加 ↓ あとは適当なところでエディットボックスとリッチエディット2.0それぞれにGetWindowText関数を使って、記入内容を取得します。     すると、エディットボックスではUnicodeの文字を入れても文字化けしないのに対し、リッチエディット2.0では文字化けしてしまいます。 例えば“Å”の半角文字を(Unicode紹介サイトからコピペする等して)入力すると、エディットボックスではそのまま“Å”なのに、リッチエディット2.0では“A”になります。   ※入力している段階では“Å”と表示されています。GetWindowText関数で取得すると“A”になってしまいます。     リッチエディット2.0からUnicode文字を正常に受け取れる方法はありませんでしょうか。

専門家に質問してみよう