Iwao Dev

気付いたことをメモしています.

この画面は、簡易表示です

2018 / 8月

template でのキャスト

次の様なベクトルの template .

	template <typename T>
	struct	Vector3 {
	//	...
		void	Normalize	(void)	{
			if (Length() > 0) {
				double	s = 1.0f / Length() ;
				x *= s;
				y *= s;
				z *= s;
				}
			}
	//	...
		T	x ;
		T	y ;
		T	z ;
		} ;	

double の時は問題ないが,float だとワーニング.
T(value) として対応.

				double	s = 1.0f / Length() ;
				x = T(x*s) ;
				y = T(y*s) ;
				z = T(z*s) ;	


  にほんブログ村 IT技術ブログへ


システムメニューに項目の追加

あまり使用しないので,メモ.
「ダイアログベース」の AP に「設定」メニューの追加.
コードのサンプルなどは以下の所や,CXxxDlg::OnInitDialog .
MSDN CWnd::GetSystemMenu


IDS_… と IDM_… のリソースを追加.

	pSysMenu->AppendMenu(MF_SEPARATOR);
	pSysMenu->AppendMenu(MF_STRING, IDM_SETTING, _T("設定(&S)...")) ;	

今回は,面倒だったのでメニュー名は文字列として直接指定.


IDM_… の値は 0x0020 など.
CXxxxDlg::OnSysCommand でイベントを受け取る.

	if ((nID & 0xFFF0) == IDM_ABOUTBOX)	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
		}
	else if ((nID & 0xfff0) == IDM_SETTING) {
		OnSetting() ;
		}
	else 	{
		CDialog::OnSysCommand(nID, lParam);
		}	


  にほんブログ村 IT技術ブログへ


pgons.Material::operator=(pgons1)

	d3D_PgonsA	pgsa = c3d.GetPgonsA() ;
	{
		d3D_PgonsA	pa_tri ;
		for (long index=0 ; index<pgsa.GetCount() ; index++) {
			d3D_Pgons1	pgns1 = pgsa[index] ;
			d3D_Pgons1	pgons = pgns1 ;
			{
					pgons = ::Pgons_ToTriangle(pgns1) ;
				//	pgons.SetColor  (pgns1.GetColor  ()) ;
				//	pgons.SetTexture(pgns1.GetTexture()) ;
				//	pgons.SetName   (pgns1.GetName   ()) ;
					pgons.Material::operator=(pgns1) ;
				}
			pa_tri.Add(pgons) ;
			}
		pgsa = pa_tri ;
		}


  にほんブログ村 IT技術ブログへ



    top

    %d人のブロガーが「いいね」をつけました。