• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:不思議な現象が起こるプログラムで悩んでいます。)

不思議な現象が起こるメモ帳プログラム

このQ&Aのポイント
  • 「猫でもわかる第2版」を参考にして作成したメモ帳プログラムで、不思議な現象が発生しています。メニューを付けない場合には直接入力や漢字変換が可能ですが、メニューを付けると直接入力ができず、入力した文字が消えてしまう問題が発生しています。
  • また、コーディングしていないのに右クリックでポップアップメニューが表示され、切り取りや削除、貼り付けなどの操作ができる不具合も発生しています。
  • この現象はBCCとVC++の両方でテストした結果も同様であり、解決策が見つかっていません。詳しい方にアドバイスをお願いします。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

ご使用のIMEは MS-IMEでしょうか? MS-IMEなら『互換性』タブの『詳細なテキストサービスを使用する』をオンにしてみてください コンテキストメニューはwidnowsが標準で準備しているものだったように思います これを抑制したいなら エディットコントロールのウィンドウプロシージャを自作してWM_RBUTTONDOWNメッセージなどを破棄しましょう メインウィンドウのWM_CREATEでエディットコントロールを作成してから GetWindowLongでWNDPROCを取得し SetWindowLongで自作WndProcを設定します 外部変数として 元々のEditコントロールのプロシージャを覚えておく変数を宣言します WNDPROC lpPrevProc; 新しいEditコントロールのプロシージャのプロトタイプ宣言 LRESULT CALLBACK EditProc(HWND, UINT, WPARAM,LPARAM); 新しいEditコントロールのプロシージャ LRESULT CALLBACK EditProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {   switch( uMsg ) {     case WM_RBUTTONDOWN:       break;     default:       // 元々のプロシージャを呼び出す       CallWindowProc( lpPrevProc, hWnd, uMsg, wParam, lParam );   }   return 0; } WM_CERATEメッセージで // Editコントロールのプロシージャを取得 lpPrevProc = GetWindowLong( hEdit, GWL_WNDPROC ); // Editコントロールの新プロシージャを設定 SetWindowLong( hEdit, GWL_WNDPROC, (LONG)EditProc ); といった具合です

noname#220054
質問者

お礼

御礼が遅れてすみません。 今、アドバイスを参考にしながら手直しをしているところです、まだ解決できていませんが、もう少しがんばってみたいと思います。 有難うございました。

noname#220054
質問者

補足

詳しいアドバイス有難うございます。 先ず、IMEの設定をご指摘のように変えてテストしてみましたが、 『メニュー無し、メニュー有り』ともに変化はありませんでした。 『メニュー無し』のプログラムで右クリックが使える原因は、アドバイスにより、理解できました。 メニューを付けるのは大変そうですが、作成してみたいと思います。

その他の回答 (1)

  • master000
  • ベストアンサー率33% (16/48)
回答No.2

今の時代になぜWindowsAPIでプログラムするのかがわからん(ーー;) C++の勉強をしたいのであれば、VC++/CLIから入って楽しさを学んで、MFCで本格的にプログラミングすることをお勧めします。

noname#220054
質問者

お礼

回答有難うございます。 >今の時代になぜWindowsAPIでプログラムするのかがわからん(ーー;) 最初に入手した参考書が、C言語のものだったのです。 C++は、これから順に学習賞とは思っています。

関連するQ&A