2013-07-19 3 views
0

вот код, который этот код предназначен для поддержания соотношения сторон изображения, с которым он падает, когда элемент управления переходит к int WindowRatio = WidthOfPreviewPane/HeightOfPreviewPane; может кто-нибудь дать идею, почему ???соотношение сторон изображения сбой программы

int WidthOfPreviewPane = RECTWIDTH(m_rcParent); 
int HeightOfPreviewPane = RECTHEIGHT(m_rcParent) ; 

int ImageRatio = WidthOfImage/HeightOfImage; 
int WindowRatio = WidthOfPreviewPane/HeightOfPreviewPane; 

if (WindowRatio > ImageRatio && WidthOfPreviewPane< WidthOfImage) 
{ 
    m_iFinalHeight = HeightOfPreviewPane; 
    m_iFinalWidth = m_iFinalHeight * ImageRatio; 
    MessageBox(NULL, L"1",L"Error", 
      MB_ICONERROR | MB_OK); 
} 
else if (WindowRatio < ImageRatio && WidthOfPreviewPane< WidthOfImage) 
{ 
    m_iFinalWidth = WidthOfPreviewPane; 
    m_iFinalHeight = m_iFinalWidth/ImageRatio; 
     MessageBox(NULL, L"2",L"Error", 
      MB_ICONERROR | MB_OK); 
} 
else if(WindowRatio > ImageRatio && WidthOfPreviewPane> WidthOfImage) 
{ 
    m_iFinalHeight = HeightOfImage; 
    m_iFinalWidth = WidthOfImage; 
     MessageBox(NULL, L"3",L"Error", 
      MB_ICONERROR | MB_OK); 

} 
else if(WindowRatio < ImageRatio && WidthOfPreviewPane> WidthOfImage) 
{ 
    m_iFinalHeight = HeightOfImage; 
    m_iFinalWidth = WidthOfImage; 
     MessageBox(NULL, L"4",L"Error", 
      MB_ICONERROR | MB_OK); 

} 
+0

Предполагая, что окна? Вы пытались запустить код в отладчике? Является ли окно (m_rcParent) видимым, в противном случае размер равен 0, вызывающий devisionbyzero – dmaij

+0

, чтобы узнать, что такое значение 'HeightOfPreviewPane' перед запуском проблемной строки. –

+2

-' HeightOfPreviewPane' '0'? Проверь это. –

ответ

0

логик этого алгоритма правильно, наконец, я нашел, что WidthOfPreviewPane и HeightOfPreviewPane = 0 его, так как функция, в которой я написал этот код инициализации наконец так что эти два не были инициализированы, что время, когда я отлажено их и я избежал проблемы, поставив их в условие if, которое позволит управлению войти внутрь, если их значение не равно 0, и это сработало хорошо. см this-

if(WidthOfPreviewPane!= 0 && HeightOfPreviewPane!=0) 
      { 
        conditions here...... 

      } 

и то решаемые.