Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Visual C++

Автор: distance
Дата сообщения: 25.03.2008 20:24
AKRAS
пошарь по этой теме или в соседней, было неоднократно.
Автор: marrow1
Дата сообщения: 27.03.2008 19:12
всем привет. Visual Studio 2005 C++

на диалоговом окне у меня есть по несколько контролов radio, check, edit.
Сделать нужно так, что когда выбираю RADIO1 то нужно чтобы у CHECK1 параметр Disabled установился в значение False , так как я его по умолчанию задал true, так как нужно его сначала отключить. Также сделать потм проверку, что если CHECK1 отмечен на окне, то аналогично предыдущему включить EDIT1. И последнее, сделать условие типа if (выбран RADIO1), то выполнить подсчет. Помогите, пожалуйста, а то я в 2005 студии не работал практически, да и в самом Visual C++ чуть работал, давно.
Автор: distance
Дата сообщения: 28.03.2008 13:09
marrow1
на диалоге выбираешь контрол, вызываешь контекстное меню, там Add Variable.
уазываешь тип переменной Control, тогда контрол на диалоге будет "обёрнут" в соответствующий класс. Далее смотришь msdn какие функции надо вызывать.
Например для отключения контрола => EnableWindow(FALSE);
Автор: marrow1
Дата сообщения: 28.03.2008 17:00
distance
а какого контрола брать? того действие которого нужно отследить или же того который мне нужно ключать или отключать? Можете хоть приблизительный пример дать так например отключить контрол CHECK1 когда задействовали контрол RADIO1 Извините за сильное расспрашивание, но очень нужно, вчера просто долго долюался и ничего не выходило.
Автор: marrow1
Дата сообщения: 29.03.2008 00:37
спасибо, уже разобрался. а какой функцией можно проверить состояние контрола Check1, типа отмечен он или нет (Checked, Unchecked), чтобы я мог написать типа:

if (IDC_CHECK1.isChecked=true)

{
действие
}

и аналогично сделать проверку состояния для контрола Radio1.

а то в MSDN туго и не нашел.
Автор: marrow1
Дата сообщения: 30.03.2008 16:27
distance
Спасибо огромное. Вы мне реально помогли. Разобрался со всем этим и понял принцып. Сейчас же проблема у меня реально посложнее и нужен соыет того кто знает.
К примеру вот есть у меня вот такой подсчет(реально их несколько, но я тут я взял для примера один только):

if (k1<257&k1>0) {p=a1; r=b1; s=c1; t=d1;
                u=a1; v=b1; w=c1;
                e1=255; f1=255; g1=255;
                if (k1<8&k1>3){h1=252; l2=30; m=2; t=t&h1; z=t+3;}
                if (k<16&k1>7){h1=248; l2=29; m=6; t=t&h1; z=t+7;}
                if (k1<32&k1>15){h1=240; l2=28; m=14; t=t&h1; z=t+15;}
                if (k1<64&k1>31){h1=224; l2=27; m=30; t=t&h1; z=t+31;}
                if (k1<128&k1>63){h1=192; l2=26; m=62; t=t&h1; z=t+63;}
                if (k1<256&k1>127){h1=128; l2=25; m=126; t=t&h1; z=t+127;}
                if (k1<257&k1>255){h1=0; l2=24; m=254; t=t&h1; z=t+255;}
                
        }

есть еще переменная k отдельно от k1. Данный фрагмент кода, что я привел считатет новые значения p,r,s,t,u,v,w,z . И этих меременных будет не по 1, а столько сколько нам будет задано значение k, т.е. нужно сделать цикл, чтобы программа считала значения p1,r1,s1,t1,u1,v1,w1,z1, потом считала p2,r2,s2,t2,u2,v2,w2,z2 и т.д., столько раз сколько у нас будет равно k. И чтобы потом можно было эти же данные вывести. Т.е. мы наперед не можем знать сколько у нас будет разных значений переменных p,r,s,t,u,v,w,z, и они все нам нужны. Как это можно реализовать? Помогите пожалуйста.
Автор: NoAngel777
Дата сообщения: 30.03.2008 19:25
marrow1
http://forum.ru-board.com/topic.cgi?forum=33&topic=3174&start=2140#20
Автор: marrow1
Дата сообщения: 03.04.2008 00:35
Всем доброго времени суток! У меня в Visual C++ 2005 есть на диалоговом окне контрол типа IP Address controll. Он используеться для введения значения IP адреса или маски. Контрол дает переменную типа DWORD. Для тех кто не знает, то скажу, что адрес сети - 4 числа по одному байту (т.е. получаеться 32 бита), каждое разделено точкой, и значение каждого байта возможно от 0 до 255. Как мне из переменной, т.е. из данного контрола вытянуть отдельнозначения каждого из 4-х байтов, в 10-тичном коде. Очень нужно, а я не очень уж программер. Помогите пожалуйста.
Автор: NoAngel777
Дата сообщения: 03.04.2008 20:39
marrow1


Код:
...

//--------------------------------------------------------------------------

#include <stdio.h>

unsigned int ip_addr_4b=IP Address controll->nan_toka_property(?); //enter it here(I don't know)

...

unsigned char betsu_betsu_baito[4];

for(int i=0;i<4;++i)
{
betsu_betsu_baito[i]=(unsigned char)(ip_addr_4b & 0x000000ff);
ip_addr_4b>>=8;
}

printf("%u.%u.%u.%u\n",betsu_betsu_baito[3],betsu_betsu_baito[2],betsu_betsu_baito[1],betsu_betsu_baito[0]);

//--------------------------------------------------------------------------

...
Автор: marrow1
Дата сообщения: 04.04.2008 15:24
NoAngel777
спасибо. разобрался.

теперь проблема состоит в селдюющем. Подщет и сохранени данных я сделал, ух записывает построчно в текстовый файл. В данный момент нахожусь в диалоговом окне (NETDlg.cpp), после подщета мне нужно вывести содерщимое файла в другое диалоговое окно (NETDlg1.cpp), контрол Edit1 на нем.
файл читаю вот таким методом


Код:
FILE *stream;
char line[100];

if( fopen_s( &stream, "netcalc.txt", "r" ) == 0 )
{
if( fgets( line, 100, stream ) == NULL)
printf( "fgets error\n" );
else
printf( "%s", line);
fclose( stream );
}
Автор: susuman
Дата сообщения: 06.04.2008 06:05
marrow1

Цитата:
значение каждого байта возможно от 0 до 255. Как мне из переменной, т.е. из данного контрола вытянуть отдельнозначения каждого из 4-х байтов, в 10-тичном коде. Очень нужно, а я не очень уж программер. Помогите пожалуйста.


Через union это делается и быстрее и проще. Скажу больше уже
все сделано
#include <winsock2.h>
....
in_addr addr;
addr.S_un.S_addr = 0x12345678;
char a1 = addr.S_un.S_un_b.s_b1;
char a2 = addr.S_un.S_un_b.s_b2;
...

Или ещё проще:
in_addr addr;
addr.s_addr = 0x12345678;
CString inetaddr(inet_ntoa(addr));
- получите готовый стринг с адресом.
Автор: AlexeyN2
Дата сообщения: 09.04.2008 13:42
Может кто-нибудь программирует на NXOpen С++ для Unigraphics? Есть задача: построить скругление 3-х сплайнов. Программа сплайны строит, а скругление нет. Ошибок и предупреждений нет. Помогите пожалуйста, всю голову разбил... Вот код:

#ifdef WIN32
#define USE_MFC
#endif

#ifdef USE_MFC
#include <afxdlgs.h>
#include <afx.h>
#endif

#include <NXOpen/Session.hxx>
#include <NXOpen/Part.hxx>
#include <NXOpen/PartCollection.hxx>
#include <NXOpen/Point.hxx>
#include <NXOpen/PointCollection.hxx>
#include <NXOpen/Curve.hxx>
#include <NXOpen/Spline.hxx>
#include <NXOpen/Sketch.hxx>
#include <NXOpen/SketchCollection.hxx>
#include <NXOpen/NXObjectManager.hxx>
#include <NXOpen/Arc.hxx>
#include <NXOpen/CurveCollection.hxx>

#include <Ug_spline.hxx>

#include <fstream>

/*****************************************************************************
** Activation Methods
*****************************************************************************/
/* Explicit Activation
** This entry point is used to activate the application explicitly, as in
** "File->Execute UG/Open->User Function..." */
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
{
    int i;
    bool is_periodic=false;
//    double param[5];
/* Initialize the API environment */
int errorCode = UF_initialize();

    NXOpen::Session *theSession = NXOpen::Session::GetSession();

    NXOpen::Part *workPart = theSession->Parts()->Work();
if ( workPart == NULL )
workPart = theSession->Parts()->NewDisplay("File2Points", NXOpen::Part::UnitsMillimeters);


    const UgObject* part_or_obj=UgSession::getWorkPart();
    int N=5;
    double delta;
    std::vector <double> knots(9);
delta = 1.0/((double)(N-4+1));
    for(i = 0; i < 4; i++)
knots[i]=0;

for(i = 4; i < N ; i++)
knots[i] = (i-4+1)*delta;

for(i = N; i < N + 4; i++)
knots[i] = 1;
std::vector <Point4> points4(5);
std::vector <Point4> points4_1(5);
std::vector <Point4> points4_2(5);
for(i = 0; i < N ; i++)
     points4[i] = Point4::Point4(i,i,i,1);
for(i = 0; i < N ; i++)
     points4_1[i] = Point4::Point4(0.2*i,0,0,1);
for(i = 0; i < N ; i++)
     points4_2[i] = Point4::Point4(i+0.8,i,i,1);

UgSpline *spline=UgSpline::create(4,knots,points4,part_or_obj);
UgSpline *spline1=UgSpline::create(4,knots,points4_1,part_or_obj);
UgSpline *spline2=UgSpline::create(4,knots,points4_2,part_or_obj);
NXOpen::Spline *s1 = (NXOpen::Spline*)NXOpen::NXObjectManager::Get(spline->getTag());
NXOpen::Spline *s2 = (NXOpen::Spline*)NXOpen::NXObjectManager::Get(spline1->getTag());
NXOpen::Spline *s3 = (NXOpen::Spline*)NXOpen::NXObjectManager::Get(spline2->getTag());
NXOpen::Point3d p1(0,0,0);
NXOpen::Point3d p2(0.8,0,0);
NXOpen::Point3d p3(0.8,0,0);
NXOpen::Point *point1;
point1 = workPart->Points()->CreatePoint(p1);
NXOpen::Point *point2;
point2 = workPart->Points()->CreatePoint(p2);
NXOpen::Point *point3;
point3 = workPart->Points()->CreatePoint(p3);
                
                std::vector <NXOpen::SketchConstraint*> c;
double rad=1;

    NXOpen::Sketch *s;
NXOpen::SketchCollection *sc;
sc=workPart->GetSketches();    
s=sc->GetOwningSketch(s2);
    std::vector <NXOpen::Arc *> Fillet1=s->Fillet(
    s1,s2,s3,
    p1,p2,p3,
    rad,
NXOpen::Sketch::TrimInputOptionTrue,
    NXOpen::Sketch::DeleteThirdCurveOptionTrue,
    NXOpen::Sketch::CreateDimensionOptionTrue,
    NXOpen::Sketch::AlternateSolutionOptionTrue,
    c);

/* Terminate the API environment */
errorCode = UF_terminate();
}

extern int ufusr_ask_unload( void )
{
return(UF_UNLOAD_IMMEDIATELY);
}
Автор: marrow1
Дата сообщения: 09.04.2008 17:46
Вот что у меня вышло по поводу сохранения файла (копирования)

void CNETApp::OnSave1()
{
CFileDialog fileDialog(FALSE,NULL,_T("*.txt"),NULL,_T("Text"));
if (fileDialog.DoModal()==IDOK)
{
LPCTSTR sfile=_T("netcalc.txt");
CopyFile(sfile,(fileDialog.GetPathName()),TRUE);
}
}

работает но не совсем так как нужно. Если файл сохраняю(копирую с другим именем) в текущюю директорию, то копирует без проблем, а вот если хоть только на уровень выше или еще чего, то уже не сохраняет файл (не копирует). В чем проблема? Помогите плиз.
Автор: Lyrik
Дата сообщения: 12.04.2008 14:51
marrow1
код покажи, как копируешь на уровень выше. все должно нормально работать.
Автор: marrow1
Дата сообщения: 13.04.2008 21:00
Lyrik
что именно из кода показать? только в данный каталог копирует нормально, а на уровень и больше уже не копирует. Спасибо. Уже решил проблему. Пришлось сделать чтобы прога преобразовывала сама относительный путь исходного файла в полный и тогда копирувала.
Автор: Lyrik
Дата сообщения: 13.04.2008 23:10
marrow1
странно как-то. у меня все нормально так работает:

Код: CopyFile( _T("1.txt"), _T("..\\2.txt"), TRUE );
Автор: euheny
Дата сообщения: 29.04.2008 07:51
Собрался я тут С++ изучать(VS2003).

Может кто-нибудь даст ссылки на уроки для начинающих ?
Автор: psys6
Дата сообщения: 20.05.2008 02:35
сори за нубство, тока начал изучать.

проблема:

стоит VS2008
делаю форму обычную, CLR-> Windows Forms Application
на полученную форму кидаю кнопку.

на нажатие кнопки, беру пример работы с файлом - и на включенный файл stdio.h выдает кучу ошибок.

Код:
    private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
                 #include <stdio.h>
                    void main()
                    {
                    int a, b;
                    scanf("%d", &a);
                    printf("Last digit: %d\n", a%10);

                    b = 0;
                    }
    };
Автор: OdesitVadim
Дата сообщения: 20.05.2008 15:45
psys6
если работаем с .NET/CLR, так и используем соответсвующие функции. а то и намешали...
#include не употребляется для этого типа приложений.

Вам нужен тип Win32 Console, правда не знаю, есть ли там такой. В 2005 студии точно есть.
Автор: NoAngel777
Дата сообщения: 24.05.2008 18:26
psys6

Код:
using namespace System;

int main(array<System::String ^> ^args)
{
int a, b;
    {
        String ^s=Console::ReadLine();
        a=Convert::ToInt32(s);
    }
    Console::WriteLine("Last digit: {0}\n", a%10);

b = 0;

}
Автор: SergeyZX
Дата сообщения: 01.06.2008 10:35
Добрый день. Решил я научиться в Visual Studio создавать оконные приложения. Скачал себе Visual Studio 2005 Express С++. И только после этого обнаружил, странные пояснения к пакету, теперь возникли вопросы по данному пакету:
- есть сама среда IDE, или нет?
- разработку оконных приложений поддерживает, работает с MFC, если ее просто нет в составе, то можно ли загрузить и подключить? Откуда это можно сделать?
- почему в составе нет MASM?
- Что там еще урезано?

Вообще я на данный пакет смотрел, как на лицензионную среду разработки для начинающих и учащихся. Но если она до такой степени урезана, то непонятно, как в ней учиться? Если она действительно урезана, что можно найти в качестве замены? Лицензионное есть что-нибудь?
Автор: yar
Дата сообщения: 01.06.2008 15:28
Ну если ты только начал изучать Visual Studio, то скачай уже сразу 2008 версию.
IDE конечно есть
В состав Visual Studio Express Edition не входит MFC это платная вещь так сказать.
Если ты хочешь создавать окннные приложения на "библиотеки выского уровня" в VS, юзай wxWidgets или Qt.
MASM есть но его надо качать отдельно
http://www.microsoft.com/downloads/details.aspx?FamilyId=7A1C9DA0-0510-44A2-B042-7EF370530C64&displaylang=en
А вообще в VS EE конечно много чего "почикано".
Автор: sysxxx
Дата сообщения: 15.06.2008 14:24
срочно понадобилось программировать на visual c++ 6.0
хочу взять bmp-ку и вывести в picture

CBitmap* bitmap = new CBitmap();
bitmap->LoadBitmap("c://bitmap.bmp");
m_Image.SetBitmap((HBITMAP)bitmap);// m_Image - CStatic

не работает .
Автор: Lyrik
Дата сообщения: 15.06.2008 15:50
sysxxx
читайте внимательно МСДН по поводу LoadBitmap. попробуйте так:

Код:     HANDLE hImage = LoadImage( NULL, _T("c:\\bitmap.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );
    SetWindowLong( m_image.GetSafeHwnd(), GWL_STYLE, GetWindowLong( m_image.GetSafeHwnd(), GWL_STYLE )|SS_BITMAP );
    m_image.SetBitmap( (HBITMAP)hImage );
    CloseHandle( hImage );
Автор: sysxxx
Дата сообщения: 16.06.2008 14:09
еще вопрос.
создаю и запускаю поток при нажатии на кнопку
// второй поток
UINT Thread(LPVOID pParam)
{
...
HBITMAP hbitmap = IplImage2DIB(Image);
CVcOpenCVDlg::m_Image.SetBitmap(hbitmap); // m_Image - CStatic
...
}
// нажатие на кнопку
void CVcOpenCVDlg::OnOK()
{
HWND hSingle = GetSafeHwnd();
CWinThread* PWinThread;
PWinThread = AfxBeginThread(Thread, hSingle, THREAD_PRIORITY_NORMAL, 0, 0 , NULL );
}

error C2228: left of '.SetBitmap' must have class/struct/union type
?
Автор: yar
Дата сообщения: 21.06.2008 13:43
делай так

Код:
UINT Thread(CVcOpenCVDlg *pDialog) {
...
HWND hSingle = pDialog->GetSafeHwnd();
HBITMAP hbitmap = IplImage2DIB(Image);
pDialog->m_Image->SetBitmap(hbitmap); // m_Image - CStatic public
...
}

// нажатие на кнопку
void CVcOpenCVDlg::OnOK() {
CWinThread* thread = AfxBeginThread(Thread, this, THREAD_PRIORITY_NORMAL, 0, 0 , NULL );
}
Автор: JannLee
Дата сообщения: 28.06.2008 23:54
Усть ли версия Visual C++ отвязанная от установки или просто компилятор для С++. Мне нужно програмировать а прав админа нет, установить не могу. Хочу записать компилятор на флешку и носить с собой.
Автор: WiseAlex
Дата сообщения: 01.07.2008 15:44
JannLee
компилятор должен работать без установки. Можно взять Microsoft Visual C++ Toolkit 2003 - там компилятор с++ 2003 студии
Автор: JannLee
Дата сообщения: 01.07.2008 22:55
WiseAlex
Да MVC++ Toolkit 2003 заработал без установки. Вот тут комплект
Класть в папку C:\Program Files\Microsoft Visual C++ Toolkit 2003
Из другой папки может не запускаться. Установка и регист. библиотек в реестре не требуется, только скачать, распаковать и работать.
http://rapidshare.com/files/126392207/Microsof_VisualC__Toolkit2003.zip.html
Ксли ссылка не работате. обращайтесь через личку помогу если будет.
Автор: Vinterfresh
Дата сообщения: 07.07.2008 12:03
Ребят, выручайте. Никто не знает как можно определить список всех доступных шрифтов системы? На делфях все делалось одной строкой, как то же самое провернуть в вижуале не знаю

Страницы: 123456789

Предыдущая тема: MSAgent - как получить указатель на MS Balloon?


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.