Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.09.2008, 17:03   #1
st1q
 
Регистрация: 12.09.2008
Сообщений: 3
По умолчанию Проблема с созданием CButton

Заранее извеняюсь за глупый вопрос, я только новичок.
Вообщем создаю кнопки, а они появляются только после нажатия по ним.
Код:
CButton* pBtn1 = new CButton;
CButton* pBtn2 = new CButton;
CButton* pBtn3 = new CButton;
pBtn1->Create(L"xxx",WS_VISIBLE|WS_CHILD, 
   CRect(0,0,100,50), this, 1);
pBtn2->Create(L"xxx",WS_VISIBLE|WS_CHILD, 
   CRect(0,50,100,100), this, 2);
pBtn3->Create(L"xxx",WS_VISIBLE|WS_CHILD, 
   CRect(0,100,100,150), this, 3);
Вот код. Сама функция создания кнопок объявлена в OnSize.

Заранее спс за помощь!!!

Последний раз редактировалось st1q; 12.09.2008 в 17:07.
st1q вне форума Ответить с цитированием
Старый 13.09.2008, 14:50   #2
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Хм... у меня, на VS2005, все нормально работает. То есть все кнопки видно сразу, при запуске программы (только L пришлось убрать - ругается).
Один вопросик: почему в OnSize?
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 13.09.2008, 15:54   #3
st1q
 
Регистрация: 12.09.2008
Сообщений: 3
По умолчанию VS2005

Да пробовал на версии 2005 и 2008.
Я бы не спрашивал, еслиб до этого не работало всё нормально.
После перестановки vs такая байда.
Обидно , что изза этой ерунды не могу задачу доделать.

В первом посте у меня ошибка, у меня функция создания кнопок объявлена в конструкторе вот так:
Код:
CMyMainWnd::CMyMainWnd(){
 this->Create(NULL,L"GEditor");
this->CreateMenu();
  this->Button1();
}
Кнопки появляются при изменении размера окна. =(

Последний раз редактировалось st1q; 13.09.2008 в 17:04.
st1q вне форума Ответить с цитированием
Старый 13.09.2008, 21:36   #4
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Слушай, я не телепат. Может, кинешь весь код сюда?
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 13.09.2008, 21:45   #5
st1q
 
Регистрация: 12.09.2008
Сообщений: 3
По умолчанию Ок

Код:
#include <afxwin.h>
int nelem=1;
class CMyMainWnd : public CFrameWnd{
public:
    CMyMainWnd();
	~CMyMainWnd();

	CMenu pMenu;
	void Button1();
	void Options();
	void OnSize(UINT,int cx,int cy);
	void CreateMenu();
	void draw();
	void OnPaint();
	void ellipsebutton();
	void squarebutton();
	int OnCreate(LPCREATESTRUCT lpCreateStruct);
	void rectbutton();
	void CreateButtons();
	void OnLButtonDown(UINT, CPoint);
	void OnToolsOptions();
	DECLARE_MESSAGE_MAP();

	
};
void CMyMainWnd::OnSize(UINT,int cx,int cy)
{






}

void CMyMainWnd::CreateMenu(){

}
void CMyMainWnd::Button1(){
CButton* pBtn1 = new CButton;
CButton* pBtn2 = new CButton;
CButton* pBtn3 = new CButton;
pBtn1->Create(L"xxx",WS_VISIBLE|WS_CHILD, 
   CRect(0,0,100,50), this, 1);
pBtn2->Create(L"xxx",WS_VISIBLE|WS_CHILD, 
   CRect(0,50,100,100), this, 2);
pBtn3->Create(L"xxx",WS_VISIBLE|WS_CHILD, 
   CRect(0,100,100,150), this, 3);
}


CMyMainWnd::CMyMainWnd(){
 this->Create(NULL,L"GEditor");
this->CreateMenu();
  this->Button1();
}

CMyMainWnd::~CMyMainWnd()
{




}
int CMyMainWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{

return 0;
}
class CMyApp : public CWinApp{
public:
    CMyApp(){}; // конструктор
    virtual BOOL InitInstance(){
        m_pMainWnd=new CMyMainWnd();
        m_pMainWnd->ShowWindow(SW_SHOW);
        return TRUE;
    }
};

void CMyMainWnd::OnLButtonDown(UINT, CPoint xpoint)
{
CDC* pDC=this->GetDC();
if(nelem==1)
{
pDC->Ellipse(CRect(xpoint,CSize(100,100)));
}
if(nelem==2)
{
pDC->Rectangle(CRect(xpoint,CSize(100,100)));
}
if(nelem==3)
{
pDC->Rectangle(CRect(xpoint,CSize(100,100)));
}




}

void CMyMainWnd::OnPaint()
{



}
void CMyMainWnd::ellipsebutton()
{
nelem=1;



}
void CMyMainWnd::squarebutton()
{
nelem=2;



}
void CMyMainWnd::rectbutton()
{
nelem=3;



}

CMyApp theApp;









BEGIN_MESSAGE_MAP(CMyMainWnd, CFrameWnd)
ON_WM_LBUTTONDOWN()
ON_WM_PAINT()
ON_WM_SIZE()
ON_WM_CREATE()
ON_BN_CLICKED(1,ellipsebutton)
ON_BN_CLICKED(2,squarebutton)
ON_BN_CLICKED(3,rectbutton)
END_MESSAGE_MAP()
Вот код, я тут самое ненужное убрал.
st1q вне форума Ответить с цитированием
Старый 14.09.2008, 13:57   #6
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Тебе надо добавить строчку в InitInstance:

Код:
class CMyApp : public CWinApp{
public:
    CMyApp(){}; // конструктор
    virtual BOOL InitInstance(){
        m_pMainWnd=new CMyMainWnd();
        m_pMainWnd->ShowWindow(SW_SHOW);
        m_pMainWnd->UpdateWindow();
        return TRUE;
    }
};
И все будет сразу показываться
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi: Проблема с созданием объектов Omedus Помощь студентам 4 08.08.2008 18:42
Проблема с созданием компонентов dr.Chas Общие вопросы Delphi 4 25.04.2008 20:12
Возникла проблема с созданием таблиц баз данных. Plastik-X БД в Delphi 1 10.12.2007 12:25
Проблема с созданием файла справки belochka Общие вопросы Delphi 5 05.11.2007 18:24