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

» Вопросы по программированию на C/С++

Автор: Abs62
Дата сообщения: 11.02.2007 20:59
CrystalIT

Цитата:
да честно говоря это я знаю, и это не сложно, но в этой функции второй параметр не может быть int, там может быть только указатель на буфер, в этом то вся и проблема.

Это как раз не проблема.

Код: WriteFile(hFile, &cr, 2, &dwBytes, NULL);
Автор: veronica b
Дата сообщения: 11.02.2007 22:06
CrystalIT
Я делал так. У тебя есть буфер cTmpBuff, который ты записываешь в файл. Но вначале запишы все в буфер, используя функцию
sprintf(cTmpBuff, форматная строка\n", сисок аргументов)
Если сделаешь правильно, то все работает без проблем!
Автор: rain87
Дата сообщения: 11.02.2007 22:40
с буфером я тупанул конечно &
Цитата:
unresolved external symbol(вроде правильно написал).  

Цитата:
#include <stdio.h>
по идее хедер подключен, иначе б он ругался на то, что нужен прототип
Автор: Lyrik
Дата сообщения: 11.02.2007 22:52
Abs62
rain87 прав!
CrystalIT
Для решения попробуй написать:

Код: #pragma comment( lib, "msvcrt" )
Автор: Abs62
Дата сообщения: 11.02.2007 23:00

Цитата:
rain87 прав!

Да, действительно.

Цитата:
#pragma comment( lib, "msvcrt" )

Или покопаться в опциях линкера в настройках проекта.
Автор: CrystalIT
Дата сообщения: 12.02.2007 13:36
большое спасибо вам всем, стоило подключить либу и теперь можно работать с файлом стандартными функциями, и линкер не трындит.
rain87, veronica b ваши методы тоже работают.
спасибо.
Автор: NNS
Дата сообщения: 12.02.2007 18:11
Создавал тему, ее прикрыли и послали сюды... Вот вопрос:
Вот кусок кода:

Цитата:

#include "stdafx.h"
#include "resource.h"

class CMyMainWnd : public CFrameWnd{
public:
CMyMainWnd(){
Create(NULL,"ddd");
};
};

class CMyApp : public CWinApp{
public:
CMyApp(){}; // конструктор
virtual BOOL InitInstance(){
m_pMainWnd=new CMyMainWnd();
m_pMainWnd->ShowWindow(SW_SHOW);
return TRUE;
}
};
CMyApp theApp;


Должно, по идее, появлятся окно с заголовком "ddd", но компилятор (VS 2005) выдает ошибку:
error C2664: 'CFrameWnd::Create' : cannot convert parameter 2 from 'const char [4]' to 'LPCTSTR'

В чем проблема и как ее исправить?
Автор: RedLord
Дата сообщения: 12.02.2007 18:36
NNS
Unicode? Попробуй L"ddd"
Автор: NNS
Дата сообщения: 12.02.2007 18:53
RedLord
ВОТ!!!! Огромное спасибо! а то я уже голову поломал, пытаясь это разрешить! Я ведь и забыл, что проект идет с поддержкой уникода!!!

ЗЫ Еще раз огромное спасибо! Очень выручил!
Автор: RedLord
Дата сообщения: 13.02.2007 00:10
NNS
а лучше юзать _T("ddd")

_T - макрос мелкомягких, который для юникода и добавит L
Автор: veronica b
Дата сообщения: 13.02.2007 21:06
Года три-четыре тому назад я наткнулся вот на этот сайт, почитал с интересом, а потом потерял. Сейчас я наткнулся снова и думаю, что для программиста эти статьи имеют интерес и сейчас
http://russian.joelonsoftware.com/Articles/FireAndMotion.html
Автор: Sarge1978
Дата сообщения: 17.02.2007 18:42
Доброго времени суток!
Подскажите, пожалуйста, если кто-нибудь знает.
Есть MDI приложение. Почему могут не обрабатываться системные акселераторы типа Ctrl+N, Ctrl+O? Причем, что я создавал свой акселератор в таблице акчелераторов, что убирал его - они не обрабатываются.

Автор: Lyrik
Дата сообщения: 17.02.2007 23:10
Sarge1978
А на чем кодишь? какая студия?
если не трудно выложи проект(или его часть), посмотрю.
Автор: Vastey
Дата сообщения: 17.02.2007 23:33
MSVC++ 6.0
Есть проект написан с использованием stl. Надо добавить функционал, юзающий mfc... Это вообще возможно? Ковыряюсь самыми извращенными методами уже 2 недели...
Автор: Abs62
Дата сообщения: 17.02.2007 23:45
Vastey
Скорее всего, возможно. Но за отсутствием телепатов очень не помешало бы, если бы ты задал конкретные вопросы. Что именно не получается? Почему нельзя использовать stl?
Автор: WiseAlex
Дата сообщения: 18.02.2007 00:23
veronica b
отличная статья - бальзам на душу, а то уж я думал это только у меня такие тормоза бывают
Да и смысл верный - главное вперед
Автор: Vastey
Дата сообщения: 18.02.2007 01:00
Abs62, надо юзать mfc по требованию заказчика.
Не получается подключить библиотеку, содержащую описание класса CStringArray, который _должен_ использоваться в коде. Выдает ошибку LNK2001 (вроде бы, щас не помню). Ошибка линковки, мол невозможно создать obj ибо такой уже есть. Что-то в этом духе.
Автор: veronica b
Дата сообщения: 18.02.2007 07:58
Sarge1978

Цитата:
Есть MDI приложение. Почему могут не обрабатываться системные акселераторы типа Ctrl+N, Ctrl+O? Причем, что я создавал свой акселератор в таблице акчелераторов, что убирал его - они не обрабатываются.

При программировании в WIN API нужно в функции WinMain исполь LoadAccelerators(...). Если вы используете MFC то там надо поступить анологично.
WiseAlex

Цитата:
Да и смысл верный - главное вперед

Не только движение вперед, но и огонь!

Автор: Sarge1978
Дата сообщения: 18.02.2007 12:41
2 Lyrik
Извините, но проект выложить не могу по разным причинам.
Visual Studio 7.1.

veronica b
LoadAccelerators() насколько я помню, используется только если есть таблица акселераторов. А если ее нет - должны выполняться системные акселераторы. Или я не прав?
Но суть не в этом. В проекте, присутствует LoadAccelerators(), которая подгружает таблицу, созданную в ресурсах. Дело в том, что сообщение о нажатии Ctrl+N не доходит ещё даже до MFC-шного PretranslateMessage...
Вот я и подумал, может кто-то с таким сталкивался?
Автор: NNS
Дата сообщения: 20.02.2007 20:23
У меня вот такой вопрос. Имеется n чекбоксов, которые обрабатываются одной функцией. Так вот, при связи этих чекбоксов в MESSAGE_MAP'е, можно ли как то уоротить вот такое связывание:
ON_COMMAND(1, func)
ON_COMMAND(2, func)
ON_COMMAND(3, func)
ON_COMMAND(4, func)

.....

ON_COMMAND(n, func)
Автор: Zyava
Дата сообщения: 20.02.2007 20:44

Цитата:
можно ли как то уоротить вот такое связывание:


ON_COMMAND_RANGE( id1, id2, memberFxn )

Соотвественно ID у чекбоксов должны быть последовательные, а не в разброс.
Автор: NNS
Дата сообщения: 20.02.2007 21:06
Zyava
thx! а если, допустим, мне неизвестно точное кол-во чекбоксов, то как можно ID туды закинуть? т.е. ID присваиваются во время создания, вот как связать именно столько чекбоксов, сколько нужно.
Автор: Lyrik
Дата сообщения: 20.02.2007 23:54
NNS
имхо, если не ошибаюсь, ID должны быть в файле Resource.h Вашего проекта.
Автор: Sarge1978
Дата сообщения: 21.02.2007 10:42
2 NNS
Никак. ON_COMMAND_RANGE( id1, id2, memberFxn ) используется только при фиксированном количестве. Иначе - ON_COMMAND...
Автор: Labutin
Дата сообщения: 21.02.2007 13:18
Вопрос уже я тут поднимал, но нормального ответа на него не получил
Итак: как контролировать ввод данных при использовании cin ?
Что мне хочется получить.
Допустим от пользователя требуется ввести целое значение в переменную целого типа. Необходимо в случае ввода всяких символов (не цифровых) или слишком большого целого значения отловить проблему и переспросить пользователя еще раз. И так до тех пор, пока он не введет нормальное целое число.
Кто-нибудь с помощью cin это сможет написать?
Автор: veronica b
Дата сообщения: 21.02.2007 15:45
Labutin
Что, принципиально надо использовать cin ? Функция scanf() не подойдет?
Автор: Labutin
Дата сообщения: 21.02.2007 15:57
veronica b
Да, принципиально cin.
Автор: veronica b
Дата сообщения: 21.02.2007 16:47
Labutin

Цитата:
Да, принципиально cin.

Хорошо, я вечером посмотрю в книгах и завтра по утряне дам вам ответ, устраивает?

Автор: NNS
Дата сообщения: 21.02.2007 17:09
Lyrik
Не обязательно, ID можно задать во время вызова Create.
Например:
myCheckBox.Create(_T("My CheckBox"), WS_VISIBLE|WS_CHILD|BS_AUTOCHECKBOX,
CRect(10,10,100,30), this, 1001);
Sarge1978
Ну, тогда как мне вызвать ON_COMMAND столько раз, сколько записанно в файле? Т.е. в файле записанно число, я его оттуда должен взять и создать именно столько чекбоксов..
Автор: RedLord
Дата сообщения: 21.02.2007 17:35
Вопрос по перегрузке


struct B
{
    operator short()
    {
        return 1;
    }    
};

struct A
{
    A(B)
    {
        
    }
};

void test(int) // (1)
{

}

void test(A) // (2)
{

}

int main()
{
    B x;
    test(x);
    return 0;
}

Разрешение перегрузки

для test(1)
1. определяемое пользователем преобразование B -> short
2. продвижение short->int

для test(2)
1. определяемое пользователем преобразование B -> A


IMHO: test(2) - есть предпочтительнее
Так ли это? или я что-то пропустил в цепочках разрешения перегрузки.
Вопрос возник потому что, компиляторы ведут себя по разному:


Intel C++ 8.1 - ok, call test(2)
MS VC++ 6.0 SP6 - fail, ambiguous call
Comeau online test - fail, ambiguous call
MC VC++ 2003 (7.1) - fail, ambiguous call
MC VC++ 2005 (8.0) - fail, ambiguous call

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


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