ui 드가 대강 이름이랑 복잡도는 좀 다르지만 대강 이렇습니다.
생각나는데로 적었고 허접이니 코드가 좀 이상해보여도 이해를..
typedef void (InitDataFunc *)(void *data);
class ButtonFuncClass
{
private:
struct commonData { /* DATA */ };
public:
union data { struct _imageData { /* IMAGE DATA */ } imageData; struct _textData { /* TEXT DATA */ } textData; .... };
public:
virtual void func(InitDataFunc initDataFunc);
};
void InitImageDataFunc(void *data) // 질문의 요지는 이걸 사용하지않고 클래스안에서 깔끔하게 초기화시키는 코드를 넣을수 있는지가 궁금합니다..
{
ButtonFuncClass::data::_imageData *image = data;
/* 데이터 초기화 */
}
class ImageButtonFuncClass : public ButtonFuncClass
{
public: virtual func(InitDataFunc initDataFunc) {InitDataFunc(this.data.imageData); /* 이미지 데이터로 이미지처리 */ };
};
void DrawImageButtonClass::ButtonKlick(ButtonFuncClass funcInstance)
{
funcInstance.func(InitImageDataFunc);
}
EOF
InitImageDataFunc가 필요한 이유가 클래스를 ButtonFuncClass를 상속받아서 계속새로만드는게 아니라
ImageButtonFuncClass를 데이터만 바꿔서 재사용하려니 함수포인터로 콜백하는 뻘짓을 하게되네요.
ImageButtonFuncClass클래스만 넘기고 ImageButtonFuncClass클래스안에서 데이터를 다르게 초기화하는 방법이 없을까요.
DrawImageButtonClass도 매번 새로 클래스를 짤수없는 상황입니다.
허접한질문 읽어주셔서 감사합니다.
옹 꼼꼼한 사람이구나 : ) 코드 이제 보려는 중.
감사
내가 이해한게 맞는지 적어 볼게.
지금 런타임 30시간이 넘어서 좀 힘들걸랑.
1. ButtonClass 를 클래스 작성 없이 우려먹고 싶다. new 로 퐁퐁 찍어서.
2. ImageButtonClass 는 일반 버튼과 차별화 한 이미지가 그려지는 버튼을 생각한것 같은데... (Func 는 사족이라 빼버림)
3. 데이타 초기화가 문제라 콜백을 쓰고 있다?
4. DrawClass 도 따로 있다?
음 이거 설계 자체가 총체적 난국 같은데 ㅋㅋ
UI 가 윈도우 GDI 를 이용한 UI 가 아닌가보지?
GDI 로 그려지는 UI 는 맞아?
대답이 없길래 그냥 글을 써 볼게
Gdi는아니에요
내일 노가다해야되서 전 이만 글은 내일 볼게요
감사
참고로 진짜 몸쓰는 노가다라서 자둬야댐
ㅠㅠ
좀더생각해보니까 상속을 한번 더하면 될거같네요 -_-;