使用类设置 win32 应用程序的更好方法

Better way to set up win32 application using classes?

本文关键字:更好 方法 应用程序 win32 设置      更新时间:2023-10-16

这是我的第一个项目,我正在做一个类。以前我把所有东西都放在同一个文件下,但现在我正在制作一个需要更多功能的应用程序,它在文件中变得有点拥挤。所以我正在制作一个计算器课程。当我运行程序时,屏幕上的测试按钮一直闪烁。(我的猜测是因为我一直打电话给计算器。主消息循环中的 Initialize() 函数。我将如何解决这个问题?

视窗.cpp:

// Create calculator
Calculator basicCalc(hwnd);
// Main message loop
MSG msg;
ZeroMemory(&msg, sizof(msg));
while(msg.message != WM_QUIT)
{
  if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
  {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }
  else
    basicCalc.Initialize();
}

计算器.h:

#pragma once
#include <Windows.h>
#include <wchar.h>
#include <math.h>
#include "Resource.h"
class Calculator
{
public:
  Calculator(HWND hwnd);
  ~Calculator();
  void Initialize();
private:
  CreateButtons(HWND hwnd);
};

计算器.cpp

void Calculator::Initialize()
{
    CreateButtons(hwnd);
}
void Calculator::CreateButtons(HWND hwnd)
{
    HWND button = CreateWindowEx(0, L"BUTTON", L"L", WS_CHILD | WS_VISIBLE, 30, 30, 50, 50, hwnd, (HMENU)IDC_BACK, NULL, NULL);
    ShowWindow(button, SW_SHOW);
}

在进入循环之前调用Initialize()一次:

// Create calculator
Calculator basicCalc(hwnd);
basicCalc.Initialize();
// Main message loop
MSG msg;
while(GetMessage(&msg, NULL, 0, 0) > 0)
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}