Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > IP Address не выходит!


Автор: Edik 3.5.2007, 06:00
Вот у меня есть код:
Код

void CIPAddressDlg::OnButton1() 
{
    // TODO: Add your control notification handler code here
    char szIPAddress[40];
    int iIPAddress;
    HWND hIPAddress;
    long int * pdwAddress;

    GetDlgItemText(IDC_IPADDRESS1,szIPAddress,40);
    SetDlgItemText(IDC_EDIT1,szIPAddress);
    
    //GetDlgItem(IDC_IPADDRESS1, &hIPAddress);
    SendMessage(IPM_GETADDRESS,0,(LPARAM)(LPDWORD)&pdwAddress);
                
    iIPAddress=FIRST_IPADDRESS((LPARAM)pdwAddress);
    itoa(iIPAddress,szIPAddress,10);
    SetDlgItemText(IDC_EDIT2,szIPAddress);
    
    iIPAddress=SECOND_IPADDRESS((LPARAM)pdwAddress);
    itoa(iIPAddress,szIPAddress,10);
    SetDlgItemText(IDC_EDIT3,szIPAddress);
            
    iIPAddress=THIRD_IPADDRESS((LPARAM)pdwAddress);
    itoa(iIPAddress,szIPAddress,10);
    SetDlgItemText(IDC_EDIT4,szIPAddress);
                
    iIPAddress=FOURTH_IPADDRESS((LPARAM)pdwAddress);
    itoa(iIPAddress,szIPAddress,10);
    SetDlgItemText(IDC_EDIT5,szIPAddress);
}

который конечно же не работает. Во всех четырех последних EDIT - ах выводит одно и тоже число, не зависимо от IP адреса, введенного в поле IP Address. Я эту прогу взял из своего примерчика по WinAPI- раньше изучал. Как переделать из WinAPI в MFC?

Автор: SenkraD 3.5.2007, 09:41
Чем те методы CIPaddressCtrl не понравились (ты же вродь его используеш)
Код

Retrieves the address values for all four fields in the IP Address Control.    
    
int GetAddress(    
   BYTE& nField0,    
   BYTE& nField1,    
   BYTE& nField2,    
   BYTE& nField3    
);    
int GetAddress(    
   DWORD& dwAddress    
);    
    
Parameters    
nField0    
A reference to the field 0 value from a packed IP address.    
nField1    
A reference to the field 1 value from a packed IP address.    
nField2    
A reference to the field 2 value from a packed IP address.    
nField3    
A reference to the field 3 value from a packed IP address.    
dwAddress    
A reference to the address of a DWORD value that receives the IP address. See Remarks for a table that shows how dwAddress is filled.    

Автор: Edik 3.5.2007, 14:11
Так извини- я новичек, не врубился, как этот код, что ты дал, включить в программу. Что такое DWORD& dwAddress и где его взять. А потом те nField, что они дают? Где результат можно увидеть отдельного nField&

Автор: Edik 3.5.2007, 14:31
Причем, как я прочитал в MSDN эта функция GetAddress просто возвращает число непустых полей IP адреса. А мне надо их значения.

Автор: SenkraD 3.5.2007, 15:28
Edik,  как ты видиш параметры nField0, nField1, nField2, nField4 передаются по ссылке тоесть в них запишутся значения.

Код

BYTE nField0;
BYTE nField1;
BYTE nField2;
BYTE nField3;

int i =  GetAddress(nField0, nField1, nField2, nField3);

CString str;
str.Format("Non empty fields count %d\r\n1 part -  %d\r\n2 part -  %d\r\n3 part -  %d\r\n4 part -  %d",
    i, nField0, nField1, nField2, nField3);
AfxMessageBox(str);


P.S. Кажись так было

Автор: Damarus 3.5.2007, 17:54
Цитата(Edik @  3.5.2007,  14:31 Найти цитируемый пост)
Причем, как я прочитал в MSDN эта функция GetAddress просто возвращает число непустых полей IP адреса. А мне надо их значения. 

Где такое в MSDN написано?

Автор: Edik 6.5.2007, 09:29
Пасиба пацануха!!! Получилось!!! Я просто счастлив до смерти!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)