2004年09月28日

关于浮点的运算要注意一点:

一日计算进度条的位置.得到的都是0,甚是奇怪,原来,浮点做怪。

类似:
 for(int x= 0; x<128; x++)
{
     int  pos = (100/127*x);
}
那日计算不小心按照了以前学数学的写法,写下了pos = (100/127*x)。-_-
结果当然是pos = 0;-_-

浮点转整型在做怪。由于转整型是,整型数据会截尾。因此。
100/127 如果直接转整型,自然为0,0*X =0 -_-;

修改成:
double db = (dobule)(100/127);
 for(int x= 0; x<128; x++)
{
     int  pos = (db*x);
}

或者是:
 for(int x= 0; x<128; x++)
{
     int  pos = (100*x/127);
}

基本上就没问题了^_^

还有转型截尾的问题:

double a=1.001;
int aaa;
double g=(double)(a*1000);
如果直接将转:
aaa = g; //aaa = 1000
aaa = (int)(g+0.000001); //aaa = 1001;

关于浮点运算的文章:
浅谈浮点型“(1.1+1.2)!=2.3” http://www.cnblogs.com/oldjacky/archive/2004/06/20/14367.aspx

www.google.com  ^_^

 

2004年09月18日

勿忘国耻     奋斗自强

2004年09月01日

一种全屏显示子窗口的方法:
1:基本想法:
  让子窗口脱离父窗口。用SetWindowPos重新设置窗口的大小。
  还原时重新设置子窗口的父窗口。重新设置窗口的大小
 主要代码如下:
//m_hWnd为子窗口的句柄
     static BOOL m_FullScreen = true;
      HWND hwndParentSave;
                //获得整个屏幕的大小
  int cx = ::GetSystemMetrics(SM_CXSCREEN);
  int cy = ::GetSystemMetrics(SM_CYSCREEN);
               
                //获得子窗口的风格
  long style = ::GetWindowLong(m_hWnd,GWL_STYLE);

                //获得子窗口的父窗口
  HWND hwndparent = ::GetParent(m_hWnd);
             
              //判断其父窗口是否存在。
  if(!::IsWindow(hwndparent))
  {
                  //不存在表示已经全屏,重新设置子窗口的风格(主要是加入了WS_CHILD风格
    ::SetWindowLong(m_hWnd,GWL_STYLE,(style | WS_CHILD));
      //重新设置其父窗口(刚才保存的父窗口 
                   ::SetParent(m_hWnd,hwndParentSave);
  }
  else
  {     //父窗口存在,去掉其子窗口的风格
   style &= ~WS_CHILD;
                     //重新设置要脱离父窗口的子窗口的风格
   ::SetWindowLong(m_hWnd, GWL_STYLE, style);
                     //重新设置子窗口的父窗口为NULL(脱离父窗口)
   ::SetParent(m_hWnd,NULL);
                     //把父窗口保存起来
                  hwndParentSave =hwndparent ;
                     把子窗口的大小保存起来
   ::GetWindowRect(m_hWnd,&rc);    
  }
  if(m_FullScreen)
  { 
                     //全屏设置大小 
   ::SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,cx,cy,0);
   m_FullScreen = false; 
  }
  else
  {
         //还原重新设置大小
   ::MoveWindow(m_hWnd,rc.left,rc.top,rc.Width(),rc.Height(),0);
   m_FullScreen = true;
  }