2

単純なアプリを作成するために、プレーンなWin32 API(つまり、MFCはありません)を使用しています。MSDNで指定されているとおりに使用CreateWindowExSTATUSCLASSNAMEますが、返されるハンドルはですNULL。示されているように電話をかけましたInitCommonControlsExが、それは戻りますFALSE!それがバーが作成されない理由だと思います。どうしたの?助けてください。

私はWindows764ビットを使用しています。

hStatusBar = ::CreateWindowExW(
  0,
  L"STATUSCLASSNAME",
  L"",
  WS_VISIBLE|WS_CHILD|WS_BORDER,
  0,0,0,0, hWnd, 0, hInstance, NULL
);
4

2 に答える 2

4

コードに1つの簡単な間違いがあります。STATUSCLASSNAMEは値ではありません。これはからの定数です< commctrl.h >。したがって、コードは実際には次のようになります。

 #include <commctrl.h>
 .
 .
 .
 hStatusBar = ::CreateWindowExW(
 0,
 STATUSCLASSNAME,
 L"",
 WS_VISIBLE|WS_CHILD|WS_BORDER,
 0,0,0,0, hWnd, 0, hInstance, NULL
);

このhttp://msdn.microsoft.com/en-us/library/bb775491%28v=VS.85%29.aspx#STATUSCLASSNAMEを調べていたと思いますが、指定されているように、左側の列には値ではなく定数があります

于 2011-05-20T20:44:52.797 に答える
1

W(ワイド)文字と関数を使用している場合は、定数名を変更する必要があります(内部を参照 commcrtl.h)。私が使用した:

status = CreateWindowExW(0, STATUSCLASSNAMEW,
    L"Spec.chars fine - Czech=Česky", WS_VISIBLE | WS_CHILD | WS_BORDER,
    0, 0, 0, 0, hwnd, 0, NULL, NULL);

そして大丈夫のようです。

于 2017-01-15T23:47:17.033 に答える