| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Как лучше перекомпилить код из console v MFC |
| Автор: XSonicX 22.12.2008, 14:45 | ||
| Всем добрый вечер. До настоящего момента писал console приложения для Виндовса, теперь перешел на MFC. Столкнулся с морем проблем, на одну из которых я не нашёл ответа. 1)Имеется код для консоли:(выводит значение дискриминанта, попутно выводя на экран промежуточные значения)
Мои познания в MFC пока довольно малы, и пока что, для единственного способа, которым можно сделать тоже самое, но в MFC понадобится целая куча разных переменных и боксов типа Static Text для каждого значения, чередуя их тип от CString до double... 2) вот у мну есть три Text edit после ввода в последнюю и нажатия энтер на настоящий момент моя прога закрывается, я хотел спросить как сделать так, что бы при нажатии на энтер прога как бы нажимала на опред. кнопку и выполняла ее действие? 3) у меня есть много статик текста, я хочу что бы при нажатии на одну копку все эти окна скрывались, а при нажатии на другую появлялись, как мне это притворить в жизнь? Я уверен, что есть более целесообразный способ, как решить эту проблемму и надеюсь на вашу помощь, спасибо) |
| Автор: dizzy1984 22.12.2008, 16:28 |
| 1. Ну смотря что ты хочешь сделать, для вывода как в консоли можно, например, использовать Edit Control с флагом Multiline. Для каждого неизвестного, конечно, нужно отдельное поле для ввода. 2. Я использовал решение из http://www.codeproject.com/KB/dialog/DisableReturnEsc.aspx и у меня работало. 3. Ты можешь записать идентификаторы статиков в массив и ходить по нему в обеих функциях. |
| Автор: XSonicX 23.12.2008, 00:43 |
| 1 вобщем нет никакого универсального типа переменной, что бы можно было выводить текст и переменные в одной строке? ну типа "a=" a "b=" b ; ? 2 объясните пожалста поподробнее) я могу сделать например что бы при потере фокуса с третьего эдит бокса запускалась кнопка, но нужно тоже самое, тока по нажатию на энтер в томже боксе 3 есть у мну большой кусок статик текста, который закрывает то, что я пока не хочу показывать, у него тип CString control (может быть надо другой) название переменной ekran , сейчас она видима, т.е все что я хочу скрыть скрывается, но если я хочу допустим при нажатии на кнопку скрыть этот элемент и показать необходимый текст мод ним, как мне добраться до свойства behavior, visible этого элемента и изменить true na false ? спасибо зарание) сейчасс уточнил вопрос,вроде бы очень легко, но одному не разгрести ( |
| Автор: voov 23.12.2008, 12:02 |
| 1. Есть класс CString, а у него есть метод Format. + есть мсдн 2. Не совсем понятно, что должно получиться и зачем такое нужно. Потому неясно, что лучше посоветовать. Если это поможет, то у кнопки есть свойство DefaultButton. На диалоге может быть только одна кнопка с установленым свойством DefaultButton. При нажатии Enter на диалоге срабатывает эта кнопка. 3. Любой контол является в первую очередь окном (CWnd), а у окна есть метод ShowWindow(int nCmdShow). + мсдн |
| Автор: XSonicX 24.12.2008, 14:38 |
| voov, спасибо большое, 2 и 3 получилось |
| Автор: dizzy1984 24.12.2008, 15:27 | ||
Как на счет
|
| Автор: XSonicX 24.12.2008, 16:50 |
| все спасибо большое еще раз, со всем справился )) осталась одна проблемка, есть у мну Static text у него переменная c_d типа control, как можно изменить в нем программно значение border с false na true? вообще, что бы закрепить и больше не спрашивать, как можно добираться до этих значений? enable, border, default button, color и т.д(кароч все которые в свойствах элемента) ? на счет border весь мсдн перерыл, нифига, есть тока на создание окна ( спасибо зарание) |
| Автор: XSonicX 24.12.2008, 19:32 |
| все, и первое у меня тоже получилось dizzy1984, способ просто офигенный )) тока если бы можно было бы вывести это в поле не с помощью MessageBox, т.к он мне тут совершенно неуместен( это реально вообще? Earnest, спасибо за ответ В таком случае как можно программно выделить static text (может быть цвет, жирность(я хотел рамкой |
| Автор: Earnest 24.12.2008, 19:45 | ||
| Можно - я уже написала - изменением стиля. На MFC это будет так:
Вдавленность - это расширенные стили - см. символы WS_EX_... и функцию ModifyStyleEx У каждого типа контрола, кроме общих (WS_), есть специализированные стили. Например, у статика это константы SS_... Короче смотри в MSDN. Почти любой флаг можно добавить через изменение стилей. Но не все - некоторые как установлены при создании, так и будут. Дефолт баттон - это тоже стиль, но это лучше станавливать соответствующей функцией диалога, т.к. нужно снять это свойство с предыдущей Deafaul Button. |
| Автор: XSonicX 24.12.2008, 21:10 | ||||
| Earnest, аааа спасибо большоеее!!! и если можно, последний вопрос на сегодня есть такая штучка
очень хочу узнать, что означет вот этот участок
я не знаю как это называется , но путем подбора втыкал, что эта штука управляет кол-ом знаков после запятой... скажите пожалуйста, что это такое, какие они бывают и где можно их найти А также самое главное, как сделать, чтобы оно не писало 4.0000(4.9000, 4.0500 и т.д) , если стоит определение %.4f, ну т.е отбрасывало последние нули, как это обычно делаем мы ?) огромное спасибо заранее ) |
| Автор: voov 25.12.2008, 15:11 | ||
| XSonicX, все описано в мсдн. строка формата как в printf A format specification, which consists of optional and required fields, has the following form: %[flags] [width] [.precision] [{h | l | ll | I | I32 | I64}]type В случае, когда type = f : The precision value specifies the number of digits after the decimal point. If a decimal point appears, at least one digit appears before it. The value is rounded to the appropriate number of digits. Default precision is 6; if precision is 0, or if the period (.) appears without a number following it, no decimal point is printed. т.е. так задается кол-во символов после запятой (последняя цыфра округляется). %.4f - 4 знака %f - 6 знаков %.f - без десятичной точки (только целая часть) нули средствами Format убрать нельзя, но так как это у нас строка, то можно сделать так
|
| Автор: XSonicX 25.12.2008, 19:31 |
| voov, спасибо, но к сожалению если знак, который необходимо убрать находится по средине строки(допустим в скобках) то он его не убирает( пришлось сравнивать с (int)и в зависимости от результата писать %.4f or %.f, но все равно спасибо) пока что вопросов нет, помечаю как решенный |
| Автор: Bukmop 26.12.2008, 14:53 | ||
|