• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ダイアログ内の文字列取得)

ダイアログ内の文字列取得

このQ&Aのポイント
  • Visual C++ 2008 Express Editionを使用して、ダイアログ内のテキストボックスに入力された文字列を取得する方法を教えてください。
  • デバッグに表示されない問題を解決する方法を教えてください。
  • リソースファイルとcppファイルを使用して、文字列を取得するプログラムを作成する方法を教えてください。

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

  • ベストアンサー
回答No.1

 こんにちは。  文字列バッファの受け取りサイズ指定が誤っている為、文字列の受け取りに失敗しているのでは。 ×GetDlgItemText(hnd, IDC_XS , Lptdtr10, sizeof(Lptdtr10)); ○GetDlgItemText(hnd, IDC_XS , Lptdtr10, sizeof(char) * 32768);

9oo_001
質問者

お礼

返答遅れて申し訳ありませんでした。 ご指摘されたことをやったところ、デバッグで表示されました。 本当にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • テキストボックスに文字列を入れる

    開発環境 XP Home Edtion Microsoft Visual C++ 2008 Express Edition Microsoft SQL Server 2003 Express Edition SQL文で1から5までのNoIDを取得してそれをダイアログのテキストボックスIDC_XS1からIDC_XS5の場所に入れようとしています。 int i=1; String^ str; char* dstChar2; LPSTR dstLPSTR2; SqlConnection^ sqlConn = gcnew SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\SOUTUKEN\\test.mdf;Integrated Security=True;User Instance=True"); while(i<=5){ sqlConn->Open(); str= "SELECT * FROM Table1 WHERE NoID='"+i+"'"; SqlCommand^ sqlCmd = gcnew SqlCommand(str,sqlConn); SqlDataReader^ exeReader = sqlCmd->ExecuteReader(); while(exeReader->Read()){ str=exeReader["nyuryoku"]->ToString(); dstChar2 = (char*)(void*)Marshal::StringToHGlobalAnsi(str); dstLPSTR2 = (LPCSTR)dstChar2; #define IDC_XS IDC_XS##i        //iの内容をIDC_XSに連結させたいのですがなかなかできないのです。 SetDlgItemText(hWnd,IDC_XS,dstLPSTR2); i++; } sqlConn->Close(); どのようにしたらテキストボックス5つの中にSQL文の結果が入るのでしょうか。何卒よろしくおねがいします。

  • リッチエディットのやり方が解りません

    リッチエディットのやり方が解りません  相談するのは2回目です。今回は書籍『猫でもわかるWindowsプログラミング』について不明な点があるので、相談に伺いしました。当方の環境はBCC Developerなのですが、第14章のデスクトップアクセサリのプログラムをすべて打ち込んだのに実行できないのです。エラーメッセージと該当箇所は以下の通りです。 (1)エラーメッセージ Error desktop01t.rc 52 27: Expecting control window style ** error 20018 ** deleting Debug\desktop01t.res (2)該当箇所(リソース) 38|MYDLG DIALOGEX 0, 0, 131, 218 39|STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | 40| WS_POPUP | WS_CAPTION | WS_SYSMENU 41|CAPTION "予定表" 42|FONT 9, "MS ゴシック", 400, 0//, 0x80 43|BEGIN 44| EDITTEXT IDC_EDIT1,7,121,117,14,ES_AUTOHSCROLL 45| EDITTEXT IDC_EDIT2,7,135,117,14,ES_AUTOHSCROLL 46| EDITTEXT IDC_EDIT3,7,149,117,14,ES_AUTOHSCROLL 47| EDITTEXT IDC_EDIT4,7,163,117,14,ES_AUTOHSCROLL 48| EDITTEXT IDC_EDIT5,7,177,117,14,ES_AUTOHSCROLL 49| DEFPUSHBUTTON "記入",IDOK,7,197,50,14 50| PUSHBUTTON "閉じる",IDCANCEL,74,197,50,14 51| CONTROL "",IDC_MONTHCALENDER1, 52| "SysMonthCal32",MCS_NOTODAY | 53| MCS_NOTODAYCIRCLE | WS_TABSTOP,7,7,117,89 54| LTEXT "",IDC_MYSTATIC,7,103,83,11 55| PUSHBUTTON "本日",IDC_TODAY,98,100,26,19 56|END  情報を漁ってみて<a href="http://questionbox.jp.msn.com/qa5414346.html ">richedit.hを追加すべきという情報</a>を見つけたのでプログラムの方で、 #include <windows.h> #include <windowsx.h> #include <commctrl.h> #include <richedit.h> #include "resource.h" としたのですがエラー内容は変わりません。そもそもBCC Developerではライブラリファイルしかリンクできないので、必要とされるriched32.dllを手動で無い方法でプログラムに取り込む方法が解らないのです。手動であればサイトの方の<a href="http://www.kumei.ne.jp/c_lang/sdk2/sdk_122.htm">「猫でも」の第122章</a>が該当するようですが、riched32.dllは提供されているダイナミックリンクライブラリなので方法があると思うのです。どうか取り込み方のご教授をお願いいたします。なおライブラリファイルしかリンクできないと思ったので、当初はriched20.libをリンクしてエラーを出しておりました。

  • VC++2005でのリソースコンパイルエラーについて

    よろしくお願いします。 猫でもわかる…… を参考にしながら、C言語でスクリーンセイバーを作成しています。 BCCForm and Skelton で作成したリソースをVC++2005で利用してます。 『設定のためのダイアログボックスを表示しないスクリーンセイバー』 はうまく行ったのですが、 『設定用ダイアログボックスを表示させるプログラム』 ではエラーが出てしまいます。 WS_EX_DLGMODALFRAME  この部分が良くないらしいのですが、コメントアウトしてみたり、 削除してみたり、記述を変えたりしたのですが、うまくコンパイルしてくれません。 詳しい方、アドバイスをお願いします。 //----------------------------------------- // BCCForm Ver 2.41 // An Easy Resource Editor for BCC // Copyright (c) February 2002 by ysama //----------------------------------------- #include "Resscreensav.h" //---------------------------------- // ダイアログ (DLG_SCRNSAVECONFIGURE) //---------------------------------- DLG_SCRNSAVECONFIGURE DIALOG DISCARDABLE 0, 0, 270, 180 EXSTYLE WS_EX_DLGMODALFRAME | WS_EX_APPWINDOW STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX CAPTION "設定" FONT 8, "MS 明朝" { CONTROL "表示間隔", IDC_STATIC, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 24, 18, 63, 15 CONTROL "表示文字列", IDC_STATIC, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 24, 54, 63, 15 CONTROL "表示回数", IDC_STATIC, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 27, 93, 63, 15 CONTROL "", IDC_EDIT1, "EDIT", WS_CHILD | WS_DLGFRAME | WS_VISIBLE | ES_AUTOHSCROLL, 102, 18, 102, 15 CONTROL "", IDC_EDIT2, "EDIT", WS_CHILD | WS_DLGFRAME | WS_VISIBLE | ES_AUTOHSCROLL, 102, 51, 102, 15 CONTROL "", IDC_EDIT3, "EDIT", WS_CHILD | WS_DLGFRAME | WS_VISIBLE | ES_AUTOHSCROLL | ES_LEFT, 105, 90, 102, 15 CONTROL "OK", IDOK, "BUTTON", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 18, 144, 69, 15 CONTROL "キャンセル", IDCANCEL, "BUTTON", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 165, 144, 69, 15 } //-------------------------- // イメージ(MYBMP) //-------------------------- MYBMP BITMAP DISCARDABLE "C:\My Pictures\scan1\scan5.bmp" //-------------------------- // イメージ(ID_APP) //-------------------------- ID_APP DISCARDABLE "icon1.ico" //----------------------------------------- // BCCForm Ver 2.41 // Header File for Resource Script File // Copyright (c) February 2002 by ysama //----------------------------------------- //--------------------- // ダイアログリソース //--------------------- // ダイアログ DLG_SCRNSAVECONFIGURE #define IDC_STATIC 100 #define IDC_EDIT1 103 #define IDC_EDIT2 104 #define IDC_EDIT3 105 #define DLG_SCRNSAVECONFIGURE 2003 //--------------------- // メニューリソース //--------------------- //--------------------- // イメージリソース //--------------------- //#define MYBMP 200 //#define ID_APP 100 //--------------------- // ストリングテーブル //--------------------- //-------------------- // アクセラレーター //-------------------- //------------------ // ヴァージョン情報 //------------------ ------ ビルド開始: プロジェクト: screensav, 構成: Release Win32 ------ リソースをコンパイルしています... ..\..\..\..\Bitmap\screensav\screensav.rc(12) : error RC2104 : undefined keyword or key name: WS_EX_DLGMODALFRAME ビルドログは "file://c:\Visual Studio 2005\Projects\screensav\screensav\Release\BuildLog.htm" に保存されました。 screensav - エラー 1、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========

  • BCC5.5でコンパイル、BCCFormで作成した実行ファイルが実行できません。

    当方、只今C言語でWin32APIを呼び出し、Windowsアプリを開発中です。 そこで質問なのですが、以下の手順で作業した場合、抽出される実行ファイルが実行できません。 どなたかお分かりになる方、助言の方よろしくお願いします。 1.名前、住所をリッチテキストに入力し、OKボタンを押下後、メッセージボックス  にて”○○さんの住所は○○です”と表示されるソースコードを"bcc32 -W source.cpp"でコンパイル。 2.BCCFormで作成したリソースファイルを"brc32 dialog.rc source.exe"で結合。 3.source.exeを実行するが、動作しない。 ちなみに環境はWindowsXPSP3です。 下記にまず、ソースコードを表示します。 /* ソース */ /* ファイル名 source.cpp */ #if 1 /* ダイアログボックスを出す */ #include <windows.h> #include "Resdialog.h" BOOL CALLBACK MyDlgProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain( HINSTANCE hCurInst, HINSTANCE hPrevInst, LPSTR lpsCmdLine, int nCmdShow) { DialogBox(hCurInst, "MYDLG", NULL, (DLGPROC)MyDlgProc); return 0; } BOOL CALLBACK MyDlgProc(HWND hDlg, UINT msg, WPARAM wp, LPARAM lp) { char szBuf[128], szBuf1[64], szBuf2[64]; switch(msg){ case WM_COMMAND: switch (LOWORD(wp)){ case IDCANCEL: EndDialog(hDlg, IDCANCEL); return TRUE; case IDOK: GetDlgItemText(hDlg, IDC_RICHEDIT102, szBuf1, (int)sizeof(szBuf1)); GetDlgItemText(hDlg, IDC_RICHEDIT103, szBuf2, (int)sizeof(szBuf2)); wsprintf(szBuf, "あなたの住所は%sで、氏名は%sです", szBuf1, szBuf2); MessageBox(hDlg, szBuf, "ダイアログボックス", MB_OK); return TRUE; } return FALSE; } return FALSE; } #endif そして、リソーススクリプトです。 /* リソーススクリプト */ /* ファイル名 dialog.rc */ //----------------------------------------- // BCCForm Ver 2.41 // An Easy Resource Editor for BCC // Copyright (c) February 2002 by ysama //----------------------------------------- #include "Resdialog.h" //---------------------------------- // ダイアログ (MYDLG) //---------------------------------- MYDLG DIALOG DISCARDABLE 0, 0, 270, 117 EXSTYLE WS_EX_DLGMODALFRAME STYLE WS_POPUP | WS_THICKFRAME | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | DS_SETFONT CAPTION "Form" FONT 8, "MS 明朝" { CONTROL "名前", IDC_LABEL100, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 10, 10, 46, 18 CONTROL "住所", IDC_LABEL101, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 10, 41, 47, 17 CONTROL "", IDC_RICHEDIT102, "RICHEDIT", WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_WANTRETURN | ES_AUTOVSCROLL | ES_AUTOHSCROLL, 88, 8, 159, 25 CONTROL "", IDC_RICHEDIT103, "RICHEDIT", WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_WANTRETURN | ES_AUTOVSCROLL | ES_AUTOHSCROLL, 88, 40, 160, 24 CONTROL "OK", IDOK, "BUTTON", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 49, 85, 61, 18 CONTROL "Cancell", IDCANCELL, "BUTTON", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 165, 84, 56, 18 } そして、リソースヘッダです。 /* リソースヘッダ */ /* ファイル名Resdialog.h */ //----------------------------------------- // BCCForm Ver 2.41 // Header File for Resource Script File // Copyright (c) February 2002 by ysama //----------------------------------------- //--------------------- // ダイアログリソース //--------------------- // ダイアログ MYDLG #define IDC_LABEL100 100 #define IDC_LABEL101 101 #define IDC_RICHEDIT102 102 #define IDC_RICHEDIT103 103 #define IDCANCELL 105 //--------------------- // メニューリソース //--------------------- //--------------------- // イメージリソース //--------------------- //--------------------- // ストリングテーブル //--------------------- //-------------------- // アクセラレーター //--------------------

  • メインダイアログのデータをウィンドウに反映させたい

    メインダイアログからウィンドウを生成しています ダイアログの値を GetDlgItemText()関数で取るまではいいのですが それから、値をウィンドウに反映できません。 メンバ値を遣うと思うのですが、どうすればいいのでしょうか? プログラムを添付します ///////////////////////////////////////////////////////// // dlg.rc #include "resource.h" #include "afxres.h" ///////////////////////////////////////////////////////////////////////////// // // Dialog // MYDLG DIALOG DISCARDABLE 0, 0, 134, 80 STYLE DS_MODALFRAME | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "ダイアログからウィンドウ" FONT 9, "MS Pゴシック" BEGIN DEFPUSHBUTTON "OK",IDOK,15,55,50,14 PUSHBUTTON "キャンセル",IDCANCEL,65,55,50,14 EDITTEXT IDC_EDIT1,15,10,100,35,ES_AUTOHSCROLL END ////////////////////////////////////////////////// // resource.h #define IDC_EDIT1 1000 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 101 #define _APS_NEXT_COMMAND_VALUE 40001 #define _APS_NEXT_CONTROL_VALUE 1000 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif //////////////////////////////////////////////////////// // dlg.h //アプリケーション class CMyApp : public CWinApp { public: virtual BOOL InitInstance(); }; //ウィンドウ class CMyWindow : public CFrameWnd { private: CString MyMainStr; protected: afx_msg void OnPaint(); DECLARE_MESSAGE_MAP() }; //メインダイアログ class CMyDlg : public CDialog { public: CString m_MyStr; CMyDlg(CWnd *pParentWnd=NULL); CMyWindow* m_pMyWnd; protected: virtual void OnOK(); virtual void OnCancel(); }; ///////////////////////////////////////////// // DlgWnd.cpp #include <afxwin.h> #include <afxdlgs.h> #include <string.h> #include "dlg.h" #include "resource.h" CMyApp myApp; BOOL CMyApp::InitInstance(){ m_pMainWnd = new CMyDlg; m_pMainWnd ->ShowWindow(m_nCmdShow); m_pMainWnd ->UpdateWindow(); return TRUE; } CMyDlg::CMyDlg(CWnd* pParent /*=NULL*/):m_pMyWnd(NULL) //イニシャライザでポインタをNULLに初期化 { Create("MYDLG"); } BEGIN_MESSAGE_MAP(CMyWindow, CFrameWnd) ON_WM_PAINT() END_MESSAGE_MAP() void CMyDlg::OnOK() { GetDlgItemText(IDC_EDIT1, m_MyStr); const RECT rc = {10, 10, 320, 240}; m_pMyWnd = new CMyWindow(); m_pMyWnd->Create( NULL, "ダイアログから起動", WS_OVERLAPPEDWINDOW, rc, this,NULL); m_pMyWnd->ShowWindow(SW_SHOW); } void CMyDlg::OnCancel() { DestroyWindow(); } void CMyWindow::OnPaint() { CPaintDC dc(this); CMyDlg dlg; MyMainStr = dlg.m_MyStr; dc.TextOut(0, 0, MyMainStr); } よろしく御願いします

  • BCC5.5とBCCFormを使用し、実行ファイルを作成したが、実行できません。

    当方、只今C言語でWin32APIを呼び出し、Windowsアプリを開発中です。 そこで質問なのですが、以下の手順で作業した場合、抽出される実行ファイルが実行できません。 どなたかお分かりになる方、助言の方よろしくお願いします。 1.名前、住所をリッチテキストに入力し、OKボタンを押下後、メッセージボックス  にて”○○さんの住所は○○です”と表示されるソースコードを"bcc32 -W source.cpp"でコンパイル。 2.BCCFormで作成したリソースファイルを"brc32 dialog.rc source.exe"で結合。 3.source.exeを実行するが、動作しない。 ちなみに環境はWindowsXPSP3です。 下記にまず、ソースコードを表示します。 /* ソース */ /* ファイル名 source.cpp */ #if 1 /* ダイアログボックスを出す */ #include <windows.h> #include "Resdialog.h" BOOL CALLBACK MyDlgProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain( HINSTANCE hCurInst, HINSTANCE hPrevInst, LPSTR lpsCmdLine, int nCmdShow) { DialogBox(hCurInst, "MYDLG", NULL, (DLGPROC)MyDlgProc); return 0; } BOOL CALLBACK MyDlgProc(HWND hDlg, UINT msg, WPARAM wp, LPARAM lp) { char szBuf[128], szBuf1[64], szBuf2[64]; switch(msg){ case WM_COMMAND: switch (LOWORD(wp)){ case IDCANCEL: EndDialog(hDlg, IDCANCEL); return TRUE; case IDOK: GetDlgItemText(hDlg, IDC_RICHEDIT102, szBuf1, (int)sizeof(szBuf1)); GetDlgItemText(hDlg, IDC_RICHEDIT103, szBuf2, (int)sizeof(szBuf2)); wsprintf(szBuf, "あなたの住所は%sで、氏名は%sです", szBuf1, szBuf2); MessageBox(hDlg, szBuf, "ダイアログボックス", MB_OK); return TRUE; } return FALSE; } return FALSE; } #endif そして、リソーススクリプトです。 /* リソーススクリプト */ /* ファイル名 dialog.rc */ //----------------------------------------- // BCCForm Ver 2.41 // An Easy Resource Editor for BCC // Copyright (c) February 2002 by ysama //----------------------------------------- #include "Resdialog.h" //---------------------------------- // ダイアログ (MYDLG) //---------------------------------- MYDLG DIALOG DISCARDABLE 0, 0, 270, 117 EXSTYLE WS_EX_DLGMODALFRAME STYLE WS_POPUP | WS_THICKFRAME | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | DS_SETFONT CAPTION "Form" FONT 8, "MS 明朝" { CONTROL "名前", IDC_LABEL100, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 10, 10, 46, 18 CONTROL "住所", IDC_LABEL101, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 10, 41, 47, 17 CONTROL "", IDC_RICHEDIT102, "RICHEDIT", WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_WANTRETURN | ES_AUTOVSCROLL | ES_AUTOHSCROLL, 88, 8, 159, 25 CONTROL "", IDC_RICHEDIT103, "RICHEDIT", WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_WANTRETURN | ES_AUTOVSCROLL | ES_AUTOHSCROLL, 88, 40, 160, 24 CONTROL "OK", IDOK, "BUTTON", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 49, 85, 61, 18 CONTROL "Cancell", IDCANCELL, "BUTTON", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 165, 84, 56, 18 } そして、リソースヘッダです。 /* リソースヘッダ */ /* ファイル名Resdialog.h */ //----------------------------------------- // BCCForm Ver 2.41 // Header File for Resource Script File // Copyright (c) February 2002 by ysama //----------------------------------------- //--------------------- // ダイアログリソース //--------------------- // ダイアログ MYDLG #define IDC_LABEL100 100 #define IDC_LABEL101 101 #define IDC_RICHEDIT102 102 #define IDC_RICHEDIT103 103 #define IDCANCELL 105 //--------------------- // メニューリソース //--------------------- //--------------------- // イメージリソース //--------------------- //--------------------- // ストリングテーブル //--------------------- //-------------------- // アクセラレーター //-------------------- //------------------ // ヴァージョン情報 //------------------ 上記のようになってます。 どうかご教授の方、宜しくお願いします。

  • windowsプログラミンで質問です

    EDITコントロールを一度クリックすると、そこにフォーカスが当たり  | ←こんな感じの棒が点滅します。 そのコントロールにフォーカスが当たったことを知らせてくれるメッセージは無いですか? 別の WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU を持つ親ウィンドウをクリックしても ずっとこのEDITコントロールにフォーカスが当たりっぱなしなので質問しました。 もしそんなメッセージが無いならば、ESCボタンが押されたらSetFocus関数で強制的にフォーカスを外そうかなとも考えたのですがEDITコントロールにフォーカスがあたっていると WM_CHARではメッセージを受け取ることが出来ませんでした。 どうすればよいのでしょうか?

  • 文字列の連結について

    開発環境 XP Home Edtion SQL Server2005 Express Edtion DBから選択してきたその値に .png という文字列を繋げて対応する画像を表示を反映させたいのですがどのようにすればよいですか? String^ str; SqlConnection^ sqlConn = gcnew SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\SOUTUKEN\\TEST.mdf;Integrated Security=True;User Instance=True"); sqlConn->Open(); str = "SELECT gazou FROM table1 WHERE gazou=1"; SqlCommand^ sqlCmd = gcnew SqlCommand(str,sqlConn); SqlDataReader^ exeReader = sqlCmd->ExecuteReader(); while(exeReader->Read() ) { str3=exeReader["gazou"]->ToString(); System::Diagnostics::Debug::WriteLine(str3); HDC hMdc; char* dstChar3; dstChar3 = (char*)(void*)Marshal::StringToHGlobalAnsi(str3); LPCSTR dstLPCSTR3; dstLPCSTR3 = (LPCSTR)dstChar3; LPCSTR name = "'"+dstLPCSTR3+"'.png"; HBITMAP hbmp = (HBITMAP)LoadImage( NULL, name, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION ); hMdc= CreateCompatibleDC(hdc ); SelectObject(hMdc, hbmp ); BitBlt(hdc, 0, 0, 2000, 5000, hMdc, 0, 0, SRCCOPY); DeleteDC(hMdc); DeleteObject(hbmp); } sqlConn->Close(); なにとぞよろしくお願いします。

  • Win32APIでのエディットボックスの文字化け

    Win32APIでウィンドウズプログラムを組んでいます。 以下のコードで、エディットボックスへの文字列表示が文字化けします。 <エディットボックスの作成> hWndEdit = CreateWindowEx( WS_EX_CLIENTEDGE, _T("EDIT"), NULL, ES_LEFT | ES_AUTOHSCROLL | ES_MULTILINE | ES_READONLY | ES_AUTOHSCROLL | WS_TABSTOP | WS_VISIBLE | WS_CHILD, (int)(WINDOW_W * 0.01), 30, (int)(WINDOW_W * 0.8), (clientRect.bottom-clientRect.top) - 35, hWndMain, (HMENU)IDC_EDITLOG, hInstance, NULL ); <フォントの設定> HFONT hFont = (HFONT)GetStockObject(DEFAULT_GUI_FONT); SendMessage( hWndEdit, WM_SETFONT, (WPARAM)hFont, TRUE ); <出力文字列の設定> std::ostringstream stream; stream << "************ Start TEST ************\n"; std::string strOut = stream.str(); <出力> SetWindowText( hWndEdit, (LPCTSTR)(strOut.c_str()) ); デバッガでの、strOutは、文字化けせずに表示されます。(strOut[0] が、'*'となっている) どこか確認したらよい場所をアドバイスいただけますか?

  • C言語でのEDITコントロールからの数字の取得について質問があります。

    C言語でのEDITコントロールからの数字の取得について質問があります。 case WM_CREATE: hwndTempo = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("EDIT") , TEXT("120") , WS_CHILD | WS_VISIBLE | ES_LEFT | ES_NUMBER , 0 , 0 , 200 , 30 , hWnd, (HMENU)3, (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE) , NULL); break; このようにEDITコントロールを作成したとき、どのように書かれている数字(初期設定では120)を取得することができるのでしょうか? ためしに文字型で取得してから変換しようと思い、 ボタンを押した時の処理として char szEdit1[128]; GetDlgItemText(hWnd, hwndTempo, szEdit1,64); と入力してみたのですが、 「error C2664: 'GetDlgItemTextW' : 2 番目の引数を 'HWND' から 'int' に変換できません。」 となってしまいました。 最近始めたばかりでインスタンスやウィンドウハンドルの指定などが間違っているのではないかと思いますが、いまひとつよくわかりません。 「GetDlgItemText」の行をコメントアウトすればエディットとボタンコントロールは正常に表示されます。 開発環境がVisual C++ 2008 Express Editionであるため、リソースエディタは使っていません。 サンプルの多くがIDC_EDIT1を使っているのでどう参考にすればよいか良く見えません。 この方法を学習したら「GetDlgItemInt」を使って直接取得してみる予定です。 出来れば単純なサンプルソースを提示していただけると助かります。 ではよろしくお願いします。