有没有关于c++窗口编程的书籍推荐

问一下有没有利用c++自带的原版标准库进行窗口编程,窗口,按钮,图片显示什么的书籍呀

标准库没有图形界面的库啊。
常见的有 Win32SDK、MFC、QT、VCL,都不是标准库。

c++没有图形库

【以下回答由 ChatGPT 生成】

回答:

我推荐《Programming Windows》这本书,它是一本经典的 Windows 窗口编程书籍,可以帮助你使用C++自带的原版标准库进行窗口编程,包括窗口、按钮和图片显示等方面的内容。这本书详细介绍了 Window API 的使用方法,并提供了大量的示例代码和实践项目,可以帮助你快速入门和掌握窗口编程。

以下是该书的一些章节的简要介绍和示例代码:

  1. 第一章: Windows 窗口基础
  2. 窗口创建、显示和关闭
  3. 消息处理和事件响应
#include <Windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
  // 注册窗口类
  WNDCLASS wc = {0};
  wc.lpfnWndProc = WindowProc;
  wc.hInstance = hInstance;
  wc.lpszClassName = L"MyWindowClass";
  RegisterClass(&wc);

  // 创建窗口
  HWND hWnd = CreateWindowEx(0, L"MyWindowClass", L"My Window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);

  // 显示窗口
  ShowWindow(hWnd, nCmdShow);
  UpdateWindow(hWnd);

  // 消息循环
  MSG msg;
  while (GetMessage(&msg, NULL, 0, 0)) {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }

  return msg.wParam;
}

LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
  switch (message) {
    case WM_DESTROY:
      PostQuitMessage(0);
      return 0;
    default:
      return DefWindowProc(hWnd, message, wParam, lParam);
  }
}
  1. 第二章: 窗口控件和消息
  2. 添加按钮和其他控件
  3. 处理按钮点击事件
// 窗口过程中的按钮点击事件处理
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
  switch (message) {
    case WM_COMMAND:
      switch (LOWORD(wParam)) {
        case ID_BUTTON:
          // 处理按钮点击事件
          MessageBox(hWnd, L"Button Clicked!", L"Message", MB_OK);
          return 0;
      }
      break;
    case WM_DESTROY:
      PostQuitMessage(0);
      return 0;
  }
  return DefWindowProc(hWnd, message, wParam, lParam);
}

// 创建按钮
HWND hButton = CreateWindow(L"BUTTON", L"Click Me", WS_VISIBLE | WS_CHILD, 10, 10, 100, 30, hWnd, (HMENU)ID_BUTTON, NULL, NULL);
  1. 第三章: 图片显示和处理
  2. 加载和显示图片
  3. 图片处理和动画效果
// 加载图片
HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, L"path_to_image.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);

// 显示图片
HDC hdc = GetDC(hWnd);
HDC hdcMem = CreateCompatibleDC(hdc);
SelectObject(hdcMem, hBitmap);
BitBlt(hdc, 0, 0, imageWidth, imageHeight, hdcMem, 0, 0, SRCCOPY);
DeleteDC(hdcMem);
ReleaseDC(hWnd, hdc);

除了《Programming Windows》之外,还有一些其他的书籍也可以作为参考: - 《Windows System Programming》 - 《Windows GUI Programming with C/C++》 - 《Windows Graphics Programming: Win32 GDI and DirectDraw》

希望这些书籍能够帮助到你,祝你学习进步!如果还有其他问题,请随时提问。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^