• ベストアンサー

もう一歩進んだWindowsメッセージ処理は???

haniriitoの回答

  • haniriito
  • ベストアンサー率57% (12/21)
回答No.2

>一覧表も見ないで皆さま方はあの煩雑なメッセージ処理をどのようにして取得されたのでしょうか? >ぜひこの辺りのノウハウをお教え頂ければ幸いです 「取得」→「習得」というご質問として回答します。 正直なところ、ウィンドウメッセージをすべて覚えている人はいないと思います。また、全部覚えても意味はないでしょう。おおよそどんなメッセージがあるか(ありそうか)だけをおぼろげながら記憶していて、あとはその都度MSDNへヘルプで調べたりしながら書いていくものだと思います。 ウィンドウやキーボード/マウス関係に関する一般的なメッセージと、基本的なコントロール(editやリストコントロールなど)のメッセージ(特にMFCを使うなら通知メッセージ)だけ覚えていれば、あとはその都度ヘルプ参照で十分事足りると思います。ですので、メッセージの一覧表が欲しいと思ったことはありませんね。 同じように考えれば、質問者様は「Win32 APIの全関数リファレンスが欲しい」とか考えたりしますか?それこそメッセージの比にならないくらい膨大な数の関数がありますから、全部「習得」することなんてムリです。その都度調べて、使えそうなものを使う、の繰り返しです。 それとも、もしかして「WM_」で始まるメッセージの綴りが覚えられない、どうやって覚えるのか?というご質問ですか?そうであれば、基本的なメッセージハンドラなどはVisualStudioのウィザードで入力できますし、手打ちする場合でも最初の"WM_"くらいだけ入れといてCTRL+spaceを押せばインテリセンスが候補を表示してくれるから、それこそ覚えなくても済みます。 >もう一歩踏み込んだ事例などが見つかりません 質問者様のいう「もう一歩踏み込んだ事例」というのは、メッセージの一覧のことばかりじゃないですよね。 あなたが足りない、知りたいと思うことを整理して質問されると、回答も得やすいと思います。

sato-may
質問者

お礼

ありがとうございます Windowsプログラミングに深いご造詣をお持ちに方は達観されておいででしょうが、初心者は焦るばかりです 次々に分からない事象が発生して、その解決に時間がかかってしまいます 『あなたが足りない、知りたいと思うことを整理して質問されると、回答も得やすいと思います』は御もっともとは思いますが、その余裕がありません 毎日ジタバタしております ありがとうございました

関連するQ&A

  • VC++ 6.0 でJPEGをBMPに変換したい…

    VC++ 6.0を用いて画像処理のプログラミングをしています。 プログラムでJPEGを読み込んで、BMPに変換して画像処理をした後、JPEGもしくはBMP、どちらでも保存できるようにできればいいと思い、Webをいろいろ探してみたところ、IJGのjpeg-6bというものを見つけました。これをコンパイルして、libjpeg.libほか、多数の実行ファイルにすることができたのですが、ここからVC++ 6.0で使う方法がまったくわかりません。そもそもライブラリとは何なのか分かっていません。VC++を始めて数ヶ月ですので具体的に教えてください。また、もっといい方法があればそちらの方も教えてください。

  • Windows8+OpenGLで未処理の例外エラー

    Windows8 Pro のマシンで OpenGL を使うため、glut をインストールし、 簡単なサンプルをコンパイルして実行したところ、 「ユーザーコールバック中に未処理の例外エラーが発生しました」 というエラーを吐いて止まってしまいました。 統合環境は Visual C++2010 Express を利用しています。 サンプルプログラムは、以下の通りです。 #include <GL/glut.h> void display(void) { glClearColor(1.0, 1.0, 1.0, 1.0); glClear(GL_COLOR_BUFFER_BIT); glFlush(); } int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGBA); glutInitWindowSize(640,480); glutCreateWindow(”window”); glutDisplayFunc(display); glutMainLoop(); return 0; } glut は様々なサイトで紹介されている方法通りに、 公式ページにて必要なファイル (32bit版) をダウンロードし、 glut.h を C:\Program Files (x86)\Microsoft Visual Stdio 10.0\VC\include\GL\ に、 glut32.lib を C:\Progma Files (x86)\Microsoft Visual Stdio 10.0\VC\lib\ に glut32.dll を C:\Windows\SysWOW64\ にコピーしました。 glut の代わりに freeglut も試してみたのですが、同様のエラーで止まってしまいました。 使用しているマシンは Surface Pro で ディスプレイアダプターは、 Intel(R) HD Graphics 4000 です。 ネットでいろいろ調べて Windows8 にインストールしている事例もちらほら見かけたので、 Windows8 でも動くとは思うんですが、どうにもうまくいきません。 dll が Windows8 に対応していないのか、Surface だから駄目なのか、検討がつきません。 原因をご存知の方がいましたら、どうか詳しく教えていただけないでしょうか? よろしくお願いします。

  • ドラッグ&ドロップの極意

    CreateWindow で作成されたウインドウに対し、メッセージループ内で case WM_CREATE 以下に、 DragAcceptFiles を指定、case WM_DROPFILES にて ShellExecute なりの処理を書けば、メモ帳などが 開くのはわかるのですが、その際、中身のテキスト文字を全部配列変数に入れるとして、 効率のいいプログラミングサンプルはないでしょうか。 ドロップしたら、ファイル名とパス名を取得して、fopen などで、頭から一行ずつ読むのが一般的 なんでしょうか。 例えば、 abc.txt に以下のように続くとします。 000000000 082394099 111553021 339400191 498585000 333399999 280839000  ・  ・  ・  ・ スマートなプログラミングって教えてほしいです。 環境は VC++ Ver6 SDK です。

  • メールを整理する方法を教えてください

    オークションに出品を多数すると、いろいろな人からメールがきてややこしくなります。 メールに書いてもらった連絡先と名前などを、落札した品物ごとに整理して、一時的に一覧表にしておくにはどうすればいいのでしょうか? 初心者のため、キーボードなども苦手ですので、できれば送ってもらった住所などをそのままコピーできればいいのですがわかりません。 また、多数の人に同じメッセージを同時にではなく、そのたびに送りたいのですが、元のメッセージをどこに作ればいいのか教えてください。

  • Windowsメールの 「メッセージが見つかりません」大変困っています。取り戻したいのですが、方法をお教えください。

    Windowsメールの「メッセージが見つかりません」大変困っています。取り戻したいのですが、方法をお教えください。 Windowsメールの受信トレイと送信済みトレイのメッセージが見つからないものが多数発生しました。 送信済みトレイの今年4月16日以前の全て、インポート分も含め約10年分のすべて。受信トレイは、インポート分の全て(8年分)と今年の4月16日以前の2年分の約半数のメールのメッセージが見つかりません。受信メールの2年分の約半数のメールはトビトビにランダムに完全な形で残っています。 メッセージの見つからないメールの状況は次のとおりです。 差出人欄・・・・・受信メール、送信済みメール共、「差出人が指定されていませ        ん」となっています。 日時・・・・・全て完全に残っています。 宛先・・・・・アドレスの前の名前は残っています。アドレスは大部分が消えていま       すが、残っているものもわずかですが、あります。なお、メールの一覧       表では、差出人、当方からの差し出し先は表示されています。 件名・・・・・全て完全に残っています。 メッセージ欄・・・・・i メッセージが見つかりません。              このメッセージのコンテンツが見つかりません。              Windowsメール        と表示されています。 なお、今年4月17日以降はメッセージの見つからないメールは発生していませんでしたが、先日、Windowsメールの受信トレイを開いて、放置していたときに、メッセージを消している現場を発見しました。そのときの様子は次のとおりです。 パソコン画面の上部に「メッセージを取り消しています」というメッセージが出て、 その下に長方形の枠に、取り消しの進行状況を示す表示がありました。あわてて作業を停止しました。せっせとパソコンは取り消し作業をしていました。枠内の表示は正確に覚えていません。 以上のような状況です。大切に保存していた手紙を読めなくして、大変困っています。パソコンメーカー、PCサポートに問い合わせても、そのような前例はないので、わからないとのことです。どなたか回復方法をお教えください。 なお、当方のパソコンは、Vistaです。                  

  • ループを使わずに、特定時間にイベントを発生させたい

    VC2005で、MFCアプリを作成しています。 ループを使わずに、ある指定時間もしくは、1時間後など設定した時間にイベントが発生し、その中で処理を入れる(例えば、時間が来ましたなどのメッセージ)を表示させるプログラムが書きたいです。 一回だけで終わるのではなく、イベント発生後、今度は2時間後にイベントを発生させるようなこともしたいです。 何かわかりやすいサンプルでもありましたら、助かります。

  • ダイアログのスクロールバー

    VC++6.0 MFC お世話になります。 メニューからモードレスダイアログを発生させてそこに文字列を書き出しているのですが、文字列が多い場合、入りきれません。そこでダイアログリソースに標準スクロールバーを付加させました。しかし、ソースが煩雑になっていきます。 調べてみれば、ウィンドウでは基本クラスをCScrollViewにすることにより、スクロールバーのメッセージ処理コードのを大半を肩代わりしてくれることを知りました。 そこで、ダイアログでもこのように便利なことはできないかと質問をした次第です。 できるのであれば、方針などを教えてください。 よろしくお願いします。

  • EXCEL VBA シートのコピー後処理?

    EXCEL2013使用にてフォーム内ボタンより 下記、受注一覧表シートをコピー→一番左に配置して 処理シートに名前を変更して J列基準の昇順に並び変えようとしていますが ActiveSheet.Name = "処理シート"で コードの実行が中断されましたメッセージが出ます。 ActiveSheet.Name = "処理シート"にブレークポイントを置いて F8で進めていきますと処理実行します。 ユーザーフォームは UserForm1.Show 0で開いております。 どの箇所の修正を行えばいいのか ご教示時お願いいたします。 Private Sub CommandButton1_Click() Worksheets("受注一覧表").Copy Before:=Worksheets(1) ActiveSheet.Name = "処理シート" Worksheets("処理シート").Select Rows("8:2328").Select Range("B8").Activate ActiveWorkbook.Worksheets("処理シート").Sort.SortFields.Clear ActiveWorkbook.Worksheets("処理シート").Sort.SortFields.Add Key:=Range("J9:J2328") _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("処理シート").Sort .SetRange Range("B8:L2328") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("B8").Select End Sub

  • gccプログラミングでtwitter投稿

    gccのプログラミングでtwitterサーバーに自動でログインして、数分ごとに何か自動でメッセージを投稿するようなサンプルプログラムを教えて頂けませんでしょうか? また、この前ハルロックという電子工作漫画で劇中に出てきたtwitterの検索機能で”ぼっち”という言葉を発見したらArduinoでLEDを点灯させるというのがありましたが、そのようなプログラムをgccとかでも作成することは可能でしょうか? どうぞ、ご教示頂きますようお願い致します。

  • エクセルによる期限管理

    処理する期日が決められている多数の案件についてエクセルで一覧表を作成し管理しています。一覧表は左の列から順に、「受注日」「内容」「所定処理日数」「期日」としています。「期日」については、「受注日」に「所定処理日数」の数値を加算して表示させています。 そこで、さらに、例えば、期日の3日前に該当する案件については、その行を緑色に変色させ、2日前だと黄色に変色させ、前日だと赤色に変色させる、といったことを考えています。 これを実現するにはおそらくエクセルの「条件付書式」を使うのだろうな、とは思っているのですが、実際のところどうすればよいのかわかりません。エクセルに強い方お助けください。宜しくお願い致します。