Лучший способ настроить приложение win32 с использованием классов?

0

Это мой первый проект, в котором я занимаюсь классом. Раньше у меня было все под одним и тем же файлом, но теперь, когда я создаю приложение, которое требует гораздо больше функций, оно немного переполнено в файле. Поэтому я занимаюсь разработкой класса калькулятора. Когда я запускаю свою программу, тестовая кнопка, которую я на экране продолжает мигать. (думаю, потому, что я продолжаю вызывать функцию calc.Initialize() в главном контуре сообщения. Как я могу исправить эту проблему?

Windows.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();
}

calculator.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);
};

Calculator.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);
}
Теги:
class
visual-studio
initialization
winapi

1 ответ

1

Вызовите Initialize() один раз перед входом в цикл:

// Create calculator
Calculator basicCalc(hwnd);
basicCalc.Initialize();

// Main message loop
MSG msg;
while(GetMessage(&msg, NULL, 0, 0) > 0)
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню