WindowsXP VC.netでプログラミングしているのですが、
PostMessageでコールされる関数のWPARAMを
publicで宣言した変数に代入しても、
値が更新されないんです。。。
public:
WPARAM m_wWP;
とヘッダで定義して、
WPARAMの値が10であった時、
long testclass::PostCallFunc(
WPARAM wparam, LPARAM lparam)
{
m_wWP = wparam;
}
とやってもm_wWPが10にならないんです。。。
とっても困っています。
ご存知の方がいらっしゃいましたらご教授ください。
よろしくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
補足の質問に回答するのは簡単なのですが、その前に・・・No.1の回答での指摘は合っていたのでしょうか。
それとも的外れだったのでしょうか。この回答への補足
Windowsの仕組みから考えて、PostMessageしたあと、
メッセージプロシージャがコールされた時、
WPARAM、LPARAMの値が確定(更新?)されない場合が
あるとは、考えにくいと思います。
現に、
(1)AからBにPostMessage
(この度質問した例)
(2)AからCにPostMessage
(3)AからDにPostMessage
(同様の処理を行う別のモジュール)
とあった場合、
(2)と(3)はまったく問題なく処理できているのに、
(1)はできなかったのです。
また、質問した後、リビルドしたら現象が起きなくなりました。
よって、PostMessageした後、値が更新されていない可能性がある、というのは、ちょっと該当しないと思われます。
No.2
- 回答日時:
testclass::PostCallFunc関数はlong型になっているのに、
戻り値が無いのはタイプミスですか?
No.1
- 回答日時:
ひょっとして
(1) testclassにPostMessage()する
(2) PostMessage()から帰ってくる
(3) testclass::m_wWPの値を見る
(4) 変化していない!?
という手順で変数の値を確認していませんか?
この例で変数の値を確認する正しい手順は
(1) m_wWP = wparam;の行にブレークポイントを置く(あるいはデバッグ用メッセージ出力を置く)
(2) testclassにPostMessage()する
(3) ブレークポイントに到達するのを待つ(あるいはデバッグ用メッセージが表示あれるのを待つ)
(4) (ブレークの場合はブレーク行をステップ実行してから)変数の値を確認する
です。
PostMessageで送ったウィンドウメッセージは、PostMessage()から帰ってきた時点ではまだ処理されていない可能性が高いので、PostMessage()から帰ってきた直後は変数の値が変化していない可能性もまた高くなります。
この回答への補足
回答ありがとうございます!
お礼が遅れて申し訳ありません!!
回答の中で「PostMessageで送ったウィンドウメッセージは、PostMessage()から帰ってきた時点ではまだ処理されていない可能性が高い」とありますが、なぜなんでしょうか・・・?
ウィンドウメッセージ(WM_CREATEやWM_PAINTなど)を使用しても値が更新されないような問題は発生していません。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vba Sleep関数について教えてください 1 2023/01/18 10:18
- JavaScript useStateの分割代入について 1 2022/05/06 10:02
- Visual Basic(VBA) VBA リボンののリカバリーでオーバーフローエラーになります 2 2023/07/04 19:07
- Visual Basic(VBA) マクロについて教えてください。 4 2023/06/06 09:06
- Excel(エクセル) Excel 数式がわかりません、答えが導かれる数式を教えていただけませんか? 2 2023/07/24 22:41
- C言語・C++・C# 変数の初期化について 5 2022/10/02 08:55
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Excel(エクセル) エクセルVBA、ファイル名をセルの値で保存の方法を教えてください。 おそれいります。こちらで数々のエ 6 2023/06/30 22:17
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
別のフォームで記述している関数を実行するには?C#
C言語・C++・C#
-
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
VBのReturnの使い方
Visual Basic(VBA)
-
-
4
フォームの再読み込み
Visual Basic(VBA)
-
5
C# フォームを閉じてもプログラムが終了しない
C言語・C++・C#
-
6
インスタンス参照でアクセスできない。代わりに型名?
C言語・C++・C#
-
7
【VB.NET】App.configにファイルパスを設定して読み込みたい
Microsoft ASP
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vbaの繰り返しで求める最大値に...
-
VB.NETでコンボボックスの1行目...
-
[VB.net] DataGridViewのコンボ...
-
テキストボックスのvalueとtext...
-
pingを行うプログラム
-
【ASP.NET】 DataTextFieldの値...
-
マクロ 特定のセル値のみクリ...
-
VBA ドロップダウンリストを残...
-
PL/SQLでのTO_DATEの時間取得に...
-
値を返さないコード パス
-
sin(π)が0にならないです
-
代入したのに値が更新されない...
-
VB初心者。小数点以下の表示で...
-
Excel VBAのリストボックスの値...
-
SqlParameterとSqlCommandの使...
-
VBAでWEB上の入力項目に値をい...
-
テキストボックスの設定。
-
変数に代入してある数値を表示...
-
Matlabで複数のデータから最大...
-
コンボボックスの幅の変更について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスのvalueとtext...
-
ハッシュテーブル(連想配列)が...
-
Excel VBAのリストボックスの値...
-
マクロ 特定のセル値のみクリ...
-
PysimpleGUIでデータベースを作る
-
VB.NETでコンボボックスの1行目...
-
変数名の取得
-
power BI クエリエディター 〇...
-
VB初心者。小数点以下の表示で...
-
PL/SQLでのTO_DATEの時間取得に...
-
【C++/CLI.NET】コンボボックス...
-
値を返さないコード パス
-
Powershellのparamについて
-
Excel VBA 複数選択したリスト...
-
DataTableに対するLINQについて
-
ユーザーフォームのテキストボ...
-
C# get set
-
変数に代入してある数値を表示...
-
VBAでWEB上の入力項目に値をい...
-
VB.NETでアクティブなformを知...
おすすめ情報