命名空间的含义是什么Win没有成员“ simpleControl”

时间:2018-07-10 04:24:28

标签: c++ winapi

试图了解Win api编程,但是我遇到了一个问题。在vs 2017中,我无法摆脱错误名称空间,win没有成员'simpleControl'。我已经在网上搜索了一个答案,但找不到与我的特定问题有关的答案。我希望有人可以阐明我的问题。我是否有周期性依赖关系问题,如果可以的话,我该如何解决我的问题?如果有人愿意帮助我,我有一些代码

#pragma once
#ifndef WIN_SIMPLE_CONTROL_H
#define WIN_SIMPLE_CONTROL_H

#include "Controller.h"

namespace Win
{
    class simpleControl: public Controller
    {
    public:
        simpleControl();
        ~simpleControl() {};

        int close();                                
        int command(int id, int cmd, LPARAM msg);   
        int create();                               

     private:

    };
   }

#endif

我的simpleControl继承自controller.h类,该类也是Win的命名空间,我如何在Win命名空间中也拥有simpleControl,我的主要功能如下

 #include <windows.h>
 #include "Window.h"
 #include "controller.h"

 int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR cmdArgs, int 
 cmdShow)
 {
    MSG   Msg;
    char name[] = "Simple Window";
    Win::simpleControl mainCtrl; ->>>>///my problem is here 
    Win::Window mainWin(hInst, name, 0, &mainCtrl);

    mainWin.create();
    mainWin.show();

    /// Process the main window's messages
    while( GetMessage(&Msg, NULL, 0, 0) )
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }

    return 0;
   }

我控制器的头文件如下

 #pragma once

 #ifndef WIN_CONTROLLER_H
 #define WIN_CONTROLLER_H

 #include <Windows.h>

 namespace Win
 {
    class Controller
    {
      public:
        Controller();
        virtual ~Controller();

        //window handle
        void setHandle(HWND handle);

        //WM_CLOSE
        virtual int close();

        virtual int command(int id, int cmd, LPARAM msg);
        virtual int create();
        virtual int destroy();

        protected:
        HWND handle;
    };

    inline void Controller::setHandle(HWND hwnd) { handle = hwnd; }
    inline int Controller::close() { ::DestroyWindow(handle); 
    return 0;
    }
    inline int Controller::command(int id, int cmd, LPARAM msg) {
    return 0;
    }
     inline int Controller::create() { return 0; }
     inline int Controller::destroy() { return 0; }


   }

   #endif

1 个答案:

答案 0 :(得分:-1)

您应该包括定义simpleControl的头文件和名称空间。 谢谢!另外,您应与我们共享Window.h。