Win 32 API c ++记事本菜单不起作用

时间:2015-10-02 18:17:02

标签: winapi notepad

我在Win32 c ++中编写了一个像Notepad这样的应用程序。但是当我在createWindow()中更改szClassName时,菜单无法正常工作,尽管它在我运行时仍会显示

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;

   hInst = hInstance; // Store instance handle in our global variable


   hMenu = LoadMenu(hInst, MAKEINTRESOURCE(IDC_NOTEPAD));

   hWnd = CreateWindow(L"EDIT", szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, hMenu, hInstance, NULL);

  //SetWindowLong(hWnd, GWL_WNDPROC, (LONG)WndProc);

   if (!hWnd)
   {
      return FALSE;
   }

   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);



   return TRUE;
}

1 个答案:

答案 0 :(得分:1)

CreateWindow()中,hMenu参数是控件ID,但不是菜单句柄。

我建议在添加文本框之前创建主窗口:

WNDCLASSEX wc;
// ...
wc.lpszClassName="window class";
wc.lpszMenuName=hMenu;
// ...
RegisterWindowEx(&wc);
hWnd=CreateWindow("window class", ...);

// When processing WM_CREATE message in WndProc()
hEdit=CreateWindow("EDIT","your textbox", ... /* set hWndParent as hWnd */);

我认为theForger's Win32 API Programming Tutorial也是你开始的好地方。