Dodonpa2 の回答履歴

全46件中1~20件表示
  • MFCダイアログの終了判定

    開発環境:VC++2008 MFCダイアログ プロジェクト作成名:test 簡単なMFCの処理内容を勉強しています。 画像のようなダイアログベースで処理を行っており、 処理の流れは以下です。 1. "参照"で実行ファイルを選択 2. "エディットコントロール"で読み込んだディレクトリの絶対パスを表示 3. "起動"で実行を行う。 上記のプログラムにINIでの保存/読み込みを追加し、(iniは本プログラムと同階層に) 毎回、参照から読み込まなくても、次回以降は自動で変数に読み込まれるようにしようと思ってます。 そこで分からないことが2つあります。  ・質問1: test.cppで閉じるボタンが押されたときに処理を行う方法  ・質問2: INIの同ディレクトリに保存をtestDlg.cpp側で行う方法 質問1補足:  以下のようなOK/キャンセル処理が最初からありますが、  これらのような形式でtest.cpp側で終了判定を行いたいです。 --------------------------------------- INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: ダイアログが <OK> で消された時のコードを // 記述してください。 } else if (nResponse == IDCANCEL) { // TODO: ダイアログが <キャンセル> で消された時のコードを // 記述してください。 } --------------------------------------- ですが、私のプログラムではOK/キャンセルは使っていないので 閉じるボタンを押したとき、上記のような処理をさせることはできないでしょうか? できるならば、そこにINIの保存処理を入れたいと思います。 質問2補足:  test.cppのCtestApp::InitInstance()にて --------------------------------------- TCHAR path[_MAX_PATH+1]; GetModuleFileName( NULL, path, _MAX_PATH ); PathRenameExtension( path, TEXT(".ini") ); free((void*)m_pszProfileName); m_pszProfileName=_tcsdup(path); --------------------------------------- "本プログラムを実行したときと同じディレクトリにINIを保存する" ようにしているので testDlg.cppでボタンを押したときに保存する処理を行うと、 保存される場所がWINDOWSファイルの方に行ってしまうため、 どうしていいかわからない状況です。 初歩的な質問ですが、何卒宜しくお願いします。

  • 別スレッドのデータを受信できない

    VC6 MFCです。 よく調べない無精な質問ですがご容赦ください。 別(受信)スレッド中にあるデータをWindowsメインスレッドで受信できません。 public: unsigned long data; HWND hWnd; 受信スレッド: while(1){ ・・・・・・・ ::PostMessageA(hWnd, data, 0, 0); //::SetMessageExtraInfo( data ); ・・・・・・・ } メインスレッド FormView クラス: hWnd = GetSafeHwnd(); MSG msg; while(1){ ・・・・・・・ ::GetMessage( &msg, NULL, 0, 0 ); //data = ::GetMessageExtraInfo(); ・・・・・・・ } これでmsg.messageを観測すると10回に1回データが来ているようです。それとは別のメッセージも含まれ、メッセージキューの格納順序がわからないため『正しい』データの切り出しができません。 **MessageExtraInfo()で付加情報として取得できないかとも考えたのですが、これも失敗しました。 非常に遅くもなります。 ::PostMessageA, ::GetMessageの組み合わせ以外を考えた方がいいのかもしれませんが、メインスレッドのIDを取得する方法が分かりません。 Linuxでは両スレッドのIDが簡単に取得でき、msgsnd, msgrcvで目的のdataが得られたのですが、Windowsではそうはいきませんでした。 メッセージ周りに関する基本理解を欠いておりますが、とにかく結果だけだしたくご教示願えれば幸いです。

  • 別スレッドのデータを受信できない

    VC6 MFCです。 よく調べない無精な質問ですがご容赦ください。 別(受信)スレッド中にあるデータをWindowsメインスレッドで受信できません。 public: unsigned long data; HWND hWnd; 受信スレッド: while(1){ ・・・・・・・ ::PostMessageA(hWnd, data, 0, 0); //::SetMessageExtraInfo( data ); ・・・・・・・ } メインスレッド FormView クラス: hWnd = GetSafeHwnd(); MSG msg; while(1){ ・・・・・・・ ::GetMessage( &msg, NULL, 0, 0 ); //data = ::GetMessageExtraInfo(); ・・・・・・・ } これでmsg.messageを観測すると10回に1回データが来ているようです。それとは別のメッセージも含まれ、メッセージキューの格納順序がわからないため『正しい』データの切り出しができません。 **MessageExtraInfo()で付加情報として取得できないかとも考えたのですが、これも失敗しました。 非常に遅くもなります。 ::PostMessageA, ::GetMessageの組み合わせ以外を考えた方がいいのかもしれませんが、メインスレッドのIDを取得する方法が分かりません。 Linuxでは両スレッドのIDが簡単に取得でき、msgsnd, msgrcvで目的のdataが得られたのですが、Windowsではそうはいきませんでした。 メッセージ周りに関する基本理解を欠いておりますが、とにかく結果だけだしたくご教示願えれば幸いです。

  • 別スレッドのデータを受信できない

    VC6 MFCです。 よく調べない無精な質問ですがご容赦ください。 別(受信)スレッド中にあるデータをWindowsメインスレッドで受信できません。 public: unsigned long data; HWND hWnd; 受信スレッド: while(1){ ・・・・・・・ ::PostMessageA(hWnd, data, 0, 0); //::SetMessageExtraInfo( data ); ・・・・・・・ } メインスレッド FormView クラス: hWnd = GetSafeHwnd(); MSG msg; while(1){ ・・・・・・・ ::GetMessage( &msg, NULL, 0, 0 ); //data = ::GetMessageExtraInfo(); ・・・・・・・ } これでmsg.messageを観測すると10回に1回データが来ているようです。それとは別のメッセージも含まれ、メッセージキューの格納順序がわからないため『正しい』データの切り出しができません。 **MessageExtraInfo()で付加情報として取得できないかとも考えたのですが、これも失敗しました。 非常に遅くもなります。 ::PostMessageA, ::GetMessageの組み合わせ以外を考えた方がいいのかもしれませんが、メインスレッドのIDを取得する方法が分かりません。 Linuxでは両スレッドのIDが簡単に取得でき、msgsnd, msgrcvで目的のdataが得られたのですが、Windowsではそうはいきませんでした。 メッセージ周りに関する基本理解を欠いておりますが、とにかく結果だけだしたくご教示願えれば幸いです。

  • 別スレッドのデータを受信できない

    VC6 MFCです。 よく調べない無精な質問ですがご容赦ください。 別(受信)スレッド中にあるデータをWindowsメインスレッドで受信できません。 public: unsigned long data; HWND hWnd; 受信スレッド: while(1){ ・・・・・・・ ::PostMessageA(hWnd, data, 0, 0); //::SetMessageExtraInfo( data ); ・・・・・・・ } メインスレッド FormView クラス: hWnd = GetSafeHwnd(); MSG msg; while(1){ ・・・・・・・ ::GetMessage( &msg, NULL, 0, 0 ); //data = ::GetMessageExtraInfo(); ・・・・・・・ } これでmsg.messageを観測すると10回に1回データが来ているようです。それとは別のメッセージも含まれ、メッセージキューの格納順序がわからないため『正しい』データの切り出しができません。 **MessageExtraInfo()で付加情報として取得できないかとも考えたのですが、これも失敗しました。 非常に遅くもなります。 ::PostMessageA, ::GetMessageの組み合わせ以外を考えた方がいいのかもしれませんが、メインスレッドのIDを取得する方法が分かりません。 Linuxでは両スレッドのIDが簡単に取得でき、msgsnd, msgrcvで目的のdataが得られたのですが、Windowsではそうはいきませんでした。 メッセージ周りに関する基本理解を欠いておりますが、とにかく結果だけだしたくご教示願えれば幸いです。

  • 別スレッドのデータを受信できない

    VC6 MFCです。 よく調べない無精な質問ですがご容赦ください。 別(受信)スレッド中にあるデータをWindowsメインスレッドで受信できません。 public: unsigned long data; HWND hWnd; 受信スレッド: while(1){ ・・・・・・・ ::PostMessageA(hWnd, data, 0, 0); //::SetMessageExtraInfo( data ); ・・・・・・・ } メインスレッド FormView クラス: hWnd = GetSafeHwnd(); MSG msg; while(1){ ・・・・・・・ ::GetMessage( &msg, NULL, 0, 0 ); //data = ::GetMessageExtraInfo(); ・・・・・・・ } これでmsg.messageを観測すると10回に1回データが来ているようです。それとは別のメッセージも含まれ、メッセージキューの格納順序がわからないため『正しい』データの切り出しができません。 **MessageExtraInfo()で付加情報として取得できないかとも考えたのですが、これも失敗しました。 非常に遅くもなります。 ::PostMessageA, ::GetMessageの組み合わせ以外を考えた方がいいのかもしれませんが、メインスレッドのIDを取得する方法が分かりません。 Linuxでは両スレッドのIDが簡単に取得でき、msgsnd, msgrcvで目的のdataが得られたのですが、Windowsではそうはいきませんでした。 メッセージ周りに関する基本理解を欠いておりますが、とにかく結果だけだしたくご教示願えれば幸いです。

  • クリティカルセクションの使用箇所について

    スレッドAで通常読み書きを行っている、非常に関係性の深い変数が複数あり、それらは書き換えられる場合、同一関数内などでほぼ同時に書き換えられるとき スレッドBからは全く書き換えは行わず、読み取り専用のアクセスのみをするとし 一つのCRITICAL_SECTIONでそれらを全て保護するとすれば Aで書き換えを行う(或いはそのための計算)部分は全てを囲み (つまり全ての変数を囲う) また、それらの変数がスレッドBから参照される部分は囲む これでスレッドセーフになり、それ以外は囲う必要はない。 (例えばスレッドAから単に読み取り専用のアクセスをされる場合などは普通にシングルスレッドと同様の考え方で良い) という考えで問題ないでしょうか? また、スレッドAからしか書き換えを行わなければ いくつ読み取り専用の別スレッドが出来たとしても 同様に Aで書き換えを行う部分と スレッドCやスレッドD・・・ から参照される部分さえ囲んでおけばスレッドセーフになる という考えで問題ないでしょうか?

  • 別スレッドのデータを受信できない

    VC6 MFCです。 よく調べない無精な質問ですがご容赦ください。 別(受信)スレッド中にあるデータをWindowsメインスレッドで受信できません。 public: unsigned long data; HWND hWnd; 受信スレッド: while(1){ ・・・・・・・ ::PostMessageA(hWnd, data, 0, 0); //::SetMessageExtraInfo( data ); ・・・・・・・ } メインスレッド FormView クラス: hWnd = GetSafeHwnd(); MSG msg; while(1){ ・・・・・・・ ::GetMessage( &msg, NULL, 0, 0 ); //data = ::GetMessageExtraInfo(); ・・・・・・・ } これでmsg.messageを観測すると10回に1回データが来ているようです。それとは別のメッセージも含まれ、メッセージキューの格納順序がわからないため『正しい』データの切り出しができません。 **MessageExtraInfo()で付加情報として取得できないかとも考えたのですが、これも失敗しました。 非常に遅くもなります。 ::PostMessageA, ::GetMessageの組み合わせ以外を考えた方がいいのかもしれませんが、メインスレッドのIDを取得する方法が分かりません。 Linuxでは両スレッドのIDが簡単に取得でき、msgsnd, msgrcvで目的のdataが得られたのですが、Windowsではそうはいきませんでした。 メッセージ周りに関する基本理解を欠いておりますが、とにかく結果だけだしたくご教示願えれば幸いです。

  • コントロールリスト(CListCtrl)非表示行

    C++でのFORM部品のコントロールリスト(CListCtrl)において、登録済みの複数アイテムのうち、特定アイテム(行)のみを、アイテムを削除せずに非表示に設定することは可能でしょうか? やりたいのは特定カラムの格納値でフィルタリング設定を行い、特定の値をもつ行のみを選択表示したいでのすが、アイテム削除や別リストでの表示ではなく、あくまでもひとつのコントロールリスト内のアイテム設定で行いたいです。 アイテム別の状態設定としては SetItemState 関数がありますが、非表示にする機能は見当たりませんでした。

  • C言語でpostgresコネクションプールするには

    C言語でpostgresqlを利用する際に、データベースへの接続をキープしたい場合、 どのように記述すればよいのでしょうか。

    • ベストアンサー
    • noname#259979
    • C・C++・C#
    • 回答数2
  • C言語でpostgresコネクションプールするには

    C言語でpostgresqlを利用する際に、データベースへの接続をキープしたい場合、 どのように記述すればよいのでしょうか。

    • ベストアンサー
    • noname#259979
    • C・C++・C#
    • 回答数2
  • Windows XP にPostgeSQL8.4.4をインストールしま

    Windows XP にPostgeSQL8.4.4をインストールしました。 問題なくインストールできたのでコマンドプロンプトからpsqlコマンドで接続して「\l」を実行したら文字化けして以下のように表示されました。 データベ ース一覧 \x96\xBC\x91O | \x8F\x8A\x97L\x8E | \x83G\x83\x93\x83R\x81[\x83f\x83B\x83\x93\x 83O | \x8Fニ構x87\x8F\x87\x8F\x98 | Ctype(\x95マ浬xB7\x89\x89\x8EZ\x8Eq) | \x83A\x 83N\x83Z\x83X\x8C\xA0 ---------------+-------------------+-------------------------------------------- ----+---------------------------+------------------------------------+---------- -------------------- ちゃんと表示されるようにするにはどうしたらいいのでしょうか。 ご存知の方がいましたらアドバイス、宜しくお願いします。

  • SQLServer からのデータ移行(varbinary)

    SQLServer からのデータ移行(varbinary) SQLServer 2000 から PostgreSQL 8.4.3 へデータ移行を考えているのですが、 つまずいて困っています。 ご存知の方がいらっしゃいましたら教えていただけないでしょうか。 あるテーブル上にvarbinary(32)の項目があり、 クエリアナライザで見ると「0x11223344・・・」という値が入っているのですが、 PostgreSQL側ではこの項目のデータ型はどう定義したらよいでしょうか。 character varying(32)としてみましたが、 定義がふさわしくないのか、SQLがまずいのか、思うようにINSERTができませんでした。 たとえば、 insert into ... values(0x1122334455667788990011223344556677889900112233445566778899001122, ...) とすると --- NOTICE: 識別子"x1122334455667788990011223344556677889900112233445566778899001122"を"x11223344556677889900112233445566778899001122334455667788990011"に切り詰めます SQLステート:42601 --- が返りますし insert into ... values(x'1122334455667788990011223344556677889900112233445566778899001122', ...) では --- ERROR: 値は型character varying(32)としては長すぎます SQLステート:22001 --- が返ります。 実際は、.Net C# のプログラムにてDataTableにSQLServerからデータをFillして、それを元にINSERT文を作成しています。 デバッグすると、Byte配列に[0]17,[1]34... という具合に入ってくるので if ((col.DataType == typeof(String)) || (col.DataType == typeof(DateTime)) ||(col.DataType == typeof(Decimal)) ) { valueColumns.AppendFormat("'{0}',", row[col.ColumnName].ToString()); } else if(col.DataType == typeof(Byte[])) { string tmp = ""; for (int i = 0; i < ((Byte[])row[col.ColumnName]).Length; i++) { tmp += (string.Format("{0:X2}", ((Byte[])row[col.ColumnName])[i])); } valueColumns.AppendFormat("x'{0}',", tmp); } else { valueColumns.AppendFormat("{0},", row[col.ColumnName].ToString()); } のようにDataType別に振り分けて、上記else ifが通るようにコーディングしています。 よろしくお願いいたします。

  • ワークテーブル(ローカル)からDBサーバーへの更新について

    Access2003+PostgreSQLにて販売管理システムを構築しています。 レコードを見る・更新する時はサーバーのレコードを ワークテーブル(ローカルのmdbファイル内のテーブル)にコピーし 値を変更後、ローカルからサーバーにデータを戻す、といった処理をしたいと考えています。 サーバーからレコードをコピーする際は、ODBC接続&ADOにて サーバーのレコードを一旦レコードセットに格納し 「CurrentProject.Connection.Execute SQL文」で ワークテーブルにINSERTしています。 ここで質問なのが、ワークテーブルからサーバーにレコードを戻す際は ワークテーブル・サーバーへはそれぞれどの方法で接続すればいいでしょうか。 例えばサーバーへODBC&ADOで接続した場合、ワークテーブルの取扱方法(接続方法)が分かりません。 サーバー:ADO、ワーク:DAO、みたいな事するのでしょうか。 スマートな方法がお分かりの方は教えて下さい。 宜しくお願い申し上げます。

  • PostgreSQL 7.2.8 異なるデータベース間のテーブル

    こんにちは。かなり困っています、よろしくお願いします>< PostgreSQL 7.2.8 を使用しています。 一つのユーザーで、二つのデータベースがあります。 それぞれ同じカラムを持つ同じ名前のテーブルがあります。 中のデータは違います。 db1 - tableT db2 - tableT 条件を付けて、db1のtableTのデータを db2のtableTへコピーするにはどのような方法がありますか? 例えば select * from db1.tableT tbl1, db2.tableT tbl2 where tbl1.title = tbl2.title; のようにしてとりあえずselectで試してみましたがダメでした。 やはりスキーマとデータベースは違うんですね>< ドットが認識されませんでした。 どなたか解決法をご存知の方、よろしくお願いします。

    • ベストアンサー
    • noname#106387
    • PostgreSQL
    • 回答数2
  • PostgreSQLが再インストールできないのですが・・・

    失礼します。 実は最近、授業で必要だということでPostgreSQLの8.3.7を インストールしたのですが、1度目は上手く起動したのは いいのですが、2度目から、なぜかパスワードが全く合わず PostgreSQL Database Sever8.3に接続することができなくなりました。 (パスワードは外部に接続しないということなので 忘れないように「password」にするようにとのことだったので パスワードが間違っていることはまずありえません。) どこかのサイトでpg_hbaファイルの最後にあるmd5をtrustに 変えればできるとあり、やってみたのですが、上書き自体不可能 でした。 とりあえず、再インストールしようとして、1度削除し、 インストールしなおそうと思ったら、インストール画面で ユーザー名、パスワードを入れる欄があり、何度やっても、 「パスワード」が間違っています、と表示され、先に進めません。 (何も入力しなくても、passwordと入力しても先に進めません。) 教授やスタッフに聞いてみたのですが、日本語が読めないため 助けられないと結局、放置されています。 ただ、授業でどうしても必要らしくできることならば、 もう1度インストールして使用したいのですが、 何か手があるならば教えて頂きたく、 質問させて頂いたのですが・・・ もし、よろしければ、ご回答お願いします。

  • libpqについて

    現在C言語でPostgeSQLを扱えるようにしているんですが、上手くできません。 プログラムはこんな感じで作っているんですが、 res=PQexec(con,SQL文1); PQclear(res); res=PQexec(con,SQL文2); PQclear(res); res=PQexec(con,SQL文3); PQclear(res); この時、SQL文1しか実行されません。最初のPQexecをコメントアウト するとSQL文2しか実行されません。 目標としてはSQL文で順番に問い合わせするようにしたいんですが、 何かいい方法があれば教えてください。よろしくお願いします。

  • プログラムよりファンクションで結果を取得したい

    お世話になります。 vb.net+PostgreSQLでプログラムを作成しております。 接続は「Npgsql.dll」を使用してます。 そこで、プログラムよりファンクションをコールし、 引数で渡した値に一致する結果の取得をしたいのですが、 パターン(2)の様に引数の記述を行うと結果の取得ができません。 どなたか引数で指定した値に一致した結果を取得する方法を お教え頂ければと思います。 【パターン(1)】正常に結果の取得ができた CREATE OR REPLACE FUNCTION pr_select_ok() RETURNS SETOF refcursor AS $BODY$declare cur refcursor; 条件 numeric; begin 条件 := 999; open cur for select 列01, 列02, 列03, 列04 from テーブル where 列01 = 条件 ; return next cur; return; end$BODY$ LANGUAGE 'plpgsql' VOLATILE 【パターン(2)】結果の取得ができない CREATE OR REPLACE FUNCTION pr_select_ok(条件 numeric) RETURNS SETOF refcursor AS $BODY$declare cur refcursor; begin open cur for select 列01, 列02, 列03, 列04 from テーブル where 列01 = 条件 ; return next cur; return; end$BODY$ LANGUAGE 'plpgsql' VOLATILE 以上、よろしくお願い致します。

  • Npgsqlを用いて接続を行いたいのですが…

    C♯、PostgresSQL 8.3.7環境です。 クライアント側からDBへの接続が出来なくて困っています。 「Npgsql2.0.5-bin-ms.net」をダウンロードし、VisualStudioより Npgsql.dllの参照を追加しました。 DB接続を行うクラスにて、 using System.Data; using Npgsql; を記述、下記のようにコネクションを開いて閉じるだけのコードを 書いてみました。 //接続のテスト NpgsqlConnection conn = new NpgsqlConnection("Server=xxx.xxx.xx.xx;Port=5432;User Id=xxxx;Password=xxxx;Database=xxxx;"); conn.Open(); conn.Close(); しかし、conn.Openの段階で、添付画像のエラーが出ます。 (IOException) サーバ側の設定はノータッチなのですが、担当者はlisten_addresses = '*' は しているとのことでした。 修正、確認すべき箇所をご教授いただけないでしょうか。 宜しくお願いします。

  • csvファイルのデータを既存のデータと比較して重複なし登録

    タイトルのままなのですが、 csvファイルのデータを既存のデータと比較して重複なしで登録する方法を教えて下さい。 重複というのは、商品IDみたいなものです。