1

win32 アプリケーションを作成し、WM_CREATE スイッチ ケースでステータスバー幅変数を初期化しました。

case WM_CREATE:
  {
    int statwidths[] = { 200, -1 };
  }
  break;

プログラム内の残りのウィンドウのサイズを決定するためにその数値が使用されるため、WM_SIZE スイッチの場合に statwidths[ 0 ] にアクセスしたいと思います。

case WM_SIZE:
  {
    int OpenDocumentWidth = statwidths[ 0 ];
  }
  break;

これを行う方法はありますか?これらは両方とも、同じファイル内の同じ switch ステートメントにあります。

4

2 に答える 2

0

ウィンドウ処理用のクラスを次のように作成する必要があります。

class Foo
{
private:
  int* statwidths;
  HWND hwnd;

public:
  Foo(){};
  ~Foo(){};

  bool CreateWindow()
  {
    //some stuff
    hwnd = CreateWindowEx(...);
    SetWindowLongPtr(hwnd  GWLP_USERDATA, reinterpret_cast<LONG_PTR>(this));
    //some stuff
  }

  static LRESULT callback(HWND hwnd, ...)
  {
    Foo* classInfo = reinterpret_cast<Foo *>(GetWindowLongPtr(window, GWLP_USERDATA));
    case WM_CREATE:
    {
      classInfo->statwidths = new int[2];
      classInfo->statwidths[0] = 200;
      classInfo->statwidths[1] = -1;
      break;
    }

    case WM_SIZE:
    {
      int OpenDocumentWidth = classInfo->statwidths[0];
    }

    case WM_CLOSE:
    {
      delete [] classInfo->statwidths;
    }
  }
};

これは必要なコードのほんの一部ですが、ベースとして使用できます。お役に立てば幸いです。

于 2013-10-10T13:10:02.353 に答える