Satish Prattipati Ответов: 1

Как динамически создавать флажки, которые будут размещаться в строках и столбцах?


Привет,

Я пытаюсь динамически создавать checkboxs, где это будет размещаться в строках и столбцах, я борюсь с этим в течение нескольких дней, и у меня полностью заканчиваются новые идеи...
Эта часть программы работает, но это не совсем то, что я хотел получить:

Что-то вроде этого выравнивания:



ch01 ch02 ch03 ch04
ch11 ch12 ch13 ch14
ch21 ch22 ch23 ch24

Что я уже пробовал:

const int tx =5;
		const int rx =8;
		int H1,L1;
		CRect rect;
		GetClientRect(&rect);
		H1 = rect.bottom/tx;
		L1 = rect.right/rx;

		for (int i=0;i<tx;i++)

		for (int j=0; j<rx; j++)
		{ 
		CPoint p;
		p.SetPoint(j*L1,i*H1);
		CButton* testbutton= new CButton();
		testbutton->Create(NULL, WS_VISIBLE | BS_AUTOCHECKBOX, CRect(10+p.x,10+p.y,H1+p.x,L1+p.y),this ,IDC_CHECK+(i+1)*(j+1)-1);
		
                q = IDC_CHECK+(i+1)*(j+1)-1;

		GetDlgItem(IDC_CHECK)->ShowWindow(SW_HIDE);
		testButton->GetCheck()==0;
		UpdateWindow();

0x01AA

- но это не совсем то, что я хотел получить.... А что именно вы хотели бы получить?

Satish Prattipati

создавайте флажки или кнопки в строках и столбцах.

Stefan_Lang

Я понятия не имею, помогает ли это, но во втором цикле for вы всегда сбрасываете j, k и q в 0 перед созданием кнопки - это означает, что все кнопки находятся в одном и том же месте. Вероятно, вам нужно переместить эту инициализацию за пределы цикла.

Satish Prattipati

да, спасибо

1 Ответов

Рейтинг:
2

Richard MacCutchan

Это зависит от того, где выполняется этот код. Но одна из вещей, которые вам нужно сделать (если вы еще этого не сделали), - это справиться с WM_SIZE сообщение и правильное расположение каждой из кнопок.