|
|
|
Только не смейтесь...
|
|||
|---|---|---|---|
|
#18+
Я впервый раз сел за c++. Хорошо знаком с C#, однако не помогает... Создал DialogBased Application, понатыкал кнопок с edit-ами. Вопрос. А как сделать так, чтоб по нажатию на кнопку в edit-е появилась надпись "надпись"? (а может надо было не DialogBased Application?) Ниже в исходнике уже есть обработчик события click. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2005, 19:22 |
|
||
|
Только не смейтесь...
|
|||
|---|---|---|---|
|
#18+
Да, кстати... VisualStudio .Net (7.1...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2005, 19:30 |
|
||
|
Только не смейтесь...
|
|||
|---|---|---|---|
|
#18+
В просто винде пришлось бы искать хэндл контрола и вызывать Set\GetWindowText. А тут mfc. Главное удобство- с контролом (типа того же едита) можно связать переменную двух типов- 1)Класса Элемента управления , 2) Класса данных. Вот в Вашем случае удобно сопоставить с едитом переменную класса CString. Делается это по правой кнопке на элементе упр-я, в дизайнере формы- выбираем "Add Variable...". Там в Category и выбираем тип класса- Value. В Variable Type оставляем CString. Ну и Variable name- имя. Терь самое главное- mfc не синхронизирует значения этих "навязанных" переменных, и то, что есть в эл-тах упр-я на самом деле. Этот момент определяется разработчиком. Чтобы установить текст в едите- надо сделать так(пусть переменную назвали m_editSalut): m_editSalut="Salut!"; this->UpdateData(FALSE); // СИНХРОНИЗАЦИЯ переменная->контрол Тут this - для ясности- указатель на объект диалога. Ну а чтоб получить из контрола: this->UpdateData(TRUE); И в m_editSalut будет то, что в контроле на форме. Дааа, это не шарп :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2005, 21:19 |
|
||
|
Только не смейтесь...
|
|||
|---|---|---|---|
|
#18+
2valhala :) А вообще как на c++ пишут GUI, неужели везде и всюду CreateWindow(...)? Зачем? Почему не использовать визуальное средство, как в Borland-е? Я так понял, DialogBasedApplication - это не серьёзно. В отличии от C#, Pascal, Delphi, VB etc., я чего-то логику вообще не понимаю... Например в дизайнере форм в Dialog-е я кнопке даю Caption, ну например "Вася_Пупкин", потом начинаю поиском по проекту (по всем документам проекта) искать словосочетание "Вася_Пупкин" и... не нахожу :-0 ?!?!? Куда девается? И вообще посоветуйте, с чего начать, а то я как полный идиот уже 2 дня за VS сижу и ничего не понимаю, что страшно - ЛОГИКУ не понимаю, сам синтаксис-то и алфавит не проблема, но вот СУТЬ не понимаю. Книги напокупал - ответов нет. Чувствую так мне с этого места не уйти. :-( Помогите ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2005, 22:05 |
|
||
|
Только не смейтесь...
|
|||
|---|---|---|---|
|
#18+
Да, при работе с ms VC++ надо держать в голове понимание как работает gui(и не только) винды. Все, что мы имеем в голом сишнике и винде- это хэндлы объектов, которые создаём в операционке и список функций, которые на входе имеют эти хэндлы (грубо так сказал;). ms VC++ в виде mfc- это всего лишь классы c++ (именно так, и это даёт нам много хорошего- от этих плюсов:), которые внутри и хранят (инкапсулируют- о как:) хэндлы объектов ОС. Кажется, что всё слишком сложно..., но, когда немного вкупаешься, понимаешь, какая это свобода :)). Хотя, конечно, писать прогу, в которой нет "шаг_вправо/влево", в студии может быть не так удобно, как в, например шарпе или дельфи-билдере, НО, можно творить всё, что хочешь! :) (хотя, многие поспорят, что и там это всё можно- согласен, но там, это не родное). ... Вот. Про то, что DialogBasedApplication не серьёзно- так это смотря что надо. Там в mfc есть реализация mdi/sdi, и в качестве отображения имееца view, построенный на диалоге. ... То, что Вася_Пупкин не ищется- так тут снова надо вспомнить, что мы имеем дело с ресурсами (!) диалога. Так в винде в .exe (и .dll тоже) хранится это всё- внутри проги, но отдельно от кода (есть ещё и String Tables- удобная штука поддерживать интернациональность:). Для интереса можете посмотреть формат PE. ... То, что не понимаете- все (очень имхо! :) через это проходили, редко удаётся нахрапом взять :). ... Что-то книжек особенно хороших припомнить не могу (везде по-немногу). Важно туда смотреть, когда капнёте глубже- типа какие где макросы объявить, чтоб класс поддерживал сериализацию, и т.п. ... Да, и ещё, многие не считают, что mfc хорошая библиотека, но другого особо и нету (была когда-то у борланда owl, да кончилась уже давно). ... И вот встречный вопрос- а зачем писать на c++? Такое жёсткое тз? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 01:17 |
|
||
|
Только не смейтесь...
|
|||
|---|---|---|---|
|
#18+
smathcopmА вообще как на c++ пишут GUI, неужели везде и всюду CreateWindow(...)? Зачем? Нет, везде и всюду CreateWindow() если пишут на чистом WinAPI. В нормальной ситуации используют библиотеки в которых все уже сделано. В тех же Delphi такой библиотекой является VCL. MS VC++ предлагает в качестве стандартной библиотеки, библиотеку классов MFC. При желании можно все писать на ней. А если не нравится MFC (я ее ненавижу :)) То можно взять что-нибудь другое, например QT от Trolltech (www.trolltech.com), лучшая на сегодня GUI библиотека как мне кажется. smathcopmПочему не использовать визуальное средство, как в Borland-е? Я так понял, DialogBasedApplication - это не серьёзно. Ну почему же несерьезно? Все зависит от задачи. Например когда задача состоит на 99% из обработки данных, а визуальная часть ограничивается одним окном с парой-тройкой контролов (окно отчета, прогресс-бар и кнопка отмены) можно послать все библиотеки нафиг и пользоваться одними только CreateWindow() Получится все очень просто и легко. smathcopmВ отличии от C#, Pascal, Delphi, VB etc., я чего-то логику вообще не понимаю... Например в дизайнере форм в Dialog-е я кнопке даю Caption, ну например "Вася_Пупкин", потом начинаю поиском по проекту (по всем документам проекта) искать словосочетание "Вася_Пупкин" и... не нахожу :-0 ?!?!? Куда девается? Ну во первых, нету такого понятия как "документ проекта", есть "исходные файлы" :) Скорее всего этот текст на кнопке лежит внутри одного из *.rc файлов Плюс учти в какой кодировке ты этот текст писал... smathcopmИ вообще посоветуйте, с чего начать, а то я как полный идиот уже 2 дня за VS сижу и ничего не понимаю, что страшно - ЛОГИКУ не понимаю, сам синтаксис-то и алфавит не проблема, но вот СУТЬ не понимаю. Книги напокупал - ответов нет. Чувствую так мне с этого места не уйти. :-( Помогите Ты не понимаешь суть C++ или GUI от Windows? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 01:46 |
|
||
|
Только не смейтесь...
|
|||
|---|---|---|---|
|
#18+
2White Owl: Скорее с++, точно c++. 2valhala: Да вот, когда-то, решил для себя, что надо бы язык программирования выучить для решения математических задач, коих было выше крыши (и осталось), так первое, что попалось c++ :) ... он меня так напугал, что ещё полтора года у меня вообще всякое желание отпало (я ни с чем кроме HTML vs JavaScript vs CSS vs Apache знаком не был). Вторая попытка привела меня к Sharp-у и засасало (о его плюсах могу часами говорить). Ну а там... многое пробывал, мучал asm (точнее он меня). Но вдруг появилась возможность устроиться на работу программистом, но на... vs.net cpp! (Повезло же ;-)) Такой шанс! Ну... и... вот... Не знаю как там с работай (таких не берут в космонавты!), но познакомиться с c++ хочется уже из принципа. Пока сплошные разочарования: 1) Русский на кнопках не отображается - проблемы с локализацией; 2) Нет встроенного контрола таблицы - идём к неповоротливым сторонним разработкам; 3) Второй час пытаюсь сконвертировать float в string (_ecvt(),_gcvt() - у них куча непонятных аргументов) - то ли я дурак, то ли... на этом мысль остнавливается; 4) В MSDN всё о .Net, но мало о mfc - плохо; 5) Какие-то глюки в среде с Undo/Redo - совсем плохо; 6) Поначалу рассмешило Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. - В жизни бы не догодался каждому контролу присваивать id-шники, а потом использовать их в качестве ссылки на него. Одно радует, Ваши valhala наставления оОочень мне помогли. Правда. Спасибо. Но это не конец с вопросами... * Кстати, а можно в c++ использоать низкоуровневые включения? * А библиотеки, написаные на билдере полностью совместимы со студией? P.S.: Да и кстати программу для работы с матрицами с полным графическим решением и его распечаткой (горжусь), я всё-таки сделал на шарпе, не зря видать мучался... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 02:28 |
|
||
|
Только не смейтесь...
|
|||
|---|---|---|---|
|
#18+
smathcopm * А библиотеки, написаные на билдере полностью совместимы со студией? Смотря что это за библиотеки: если lib-ы, то нет; если dll-ки, то (обычно) да... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 10:50 |
|
||
|
Только не смейтесь...
|
|||
|---|---|---|---|
|
#18+
smathcopm2White Owl: Скорее с++, точно c++. Тогда забудь о С++ и возьми С. Научись работать с ним сначала, потом имея базу из С и С# будет намного легче разобраться с C++. Забудь на время про окошки, кнопочки и диалоги. Поиграйся с чисто расчетными задачами. Научись работать с указателями. С++ это дикая мешанина из процедурного и объектного типа языков, использовать его можно только тогда когда четко понимаешь в каком месте объекты, а где низкоуровневые указатели. smathcopm* Кстати, а можно в c++ использоать низкоуровневые включения? Если под "низкоуровневыми включениями" понимать куски ассемблерного кода вставленые прямо в исходный текст - да, на некоторых компиляторах это возможно, на некоторых невозможно. И это никогда не нужно :) smathcopm* А библиотеки, написаные на билдере полностью совместимы со студией? Смотря какие :) Библиотеки классов в исходниках частично совместимы. В некоторых местах прийдется делать правки. Сам С++ одинаков, но команды управляющие процессом компиляции и линковки разные. Откомпилированные библиотеки (*.obj и *.lib) не совместимы вообще. А динамические (*.dll) обычно совместимы, но их с легкостью можно сделать несовместимыми. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 18:04 |
|
||
|
Только не смейтесь...
|
|||
|---|---|---|---|
|
#18+
За принципиальность- решпект :) Знание с++ никогда не повредит. Из того, что используется на рынке, он наверное самый мощный (я не беру в расчёт какие-нить SmallTalk или PL1) Шарп- эт уже новое поколение. Тут даже не столько язык важен, а сам .net framework. А вобще, обычно люди идут с++ -> шарп - грубо говоря, от более трудоёмкого, к более удобному. У Вас же наоборот- кого хочешь такое может напугать. Но, ещё раз повторюсь- всё окупится. Даже просто небольшой опыт работы в с++, но уверенное его знание даст Вам более чёткое понимание того же дот нета. А основное там (как верно Вам тут выше подсказали) это указатели, классы (разберитесь полностью, такого в шарпе не найдёте), шаблоны- лучшая книга- Страуструп. Но это долго. >1) Русский на кнопках не отображается - проблемы с локализацией; Да, у меня это тоже глюка есть- во время создания проекта надо указать locale (у меня вобще китайский становится по-дефолту). Можно изменить и в уже созданом проекте- по-моему- правая мышь на ресурсе диалога- свойства. Ну там разберётесь. >2) Нет встроенного контрола таблицы - идём к неповоротливым сторонним >разработкам; Эт да :)) Но, вобще-то, есть COM- но пользовать Вам его сейчас будет, наверное, трудновато. Кстати, вот что ещё даёт mfc. То есть это обёртки не только над гуи, но и над много ещё чем. >3) Второй час пытаюсь сконвертировать float в string (_ecvt(),_gcvt() - у них >куча непонятных аргументов) - то ли я дурак, то ли... на этом мысль >остнавливается; Есть такие ф-ции (правда сишные) itoa/ltoa - всё в строку, первая из int, вторая- из float. >4) В MSDN всё о .Net, но мало о mfc - плохо; Можно где-нить надыбать старый msdn- там было хорошо :)) Из сайтов был не плох codeguru.com (может есть русский аналог, не знаю) 5) Какие-то глюки в среде с Undo/Redo - совсем плохо; >6) Поначалу рассмешило >В жизни бы не догодался каждому контролу присваивать id-шники, а потом >использовать их в качестве ссылки на него. Да, дельфи-шарпы всё это скрывают, но тем не менее оно всё равно работает именно так :)) Но хорошо, что уже Вас это не пугает. Не бойтесь- прыгайте туда с головой, будет трудно, но оооочень интересно :)) Приятно помочь людям из Питера ;)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2005, 13:21 |
|
||
|
Только не смейтесь...
|
|||
|---|---|---|---|
|
#18+
угумс, тоже знакомился с шарпом после сишника. Глянул ихний helloworld, почесал репу, подумал: "Ох, нихсебе халява". В сишнике для меня самое трудное было преобразование типов, но достаточно было разобрать сильно навороченный пример из книжки Страуструпа (только она синенькая, тоненькая, много слов, мало кода, очень понравилась) и всё стало понятно. С мфц знакомился по сайту firststeps, там написано, как прогать под мфц лапками, а если по-умному, обработчики и переменные гуёв вешаются мышкой. В общем, первых шагов мне хватило, чтобы с грехом пополам быстро написать своё первое приложение на мфц. 3) Второй час пытаюсь сконвертировать float в string (_ecvt(),_gcvt() - у них куча непонятных аргументов) Странно, всю жизнь sprintf юзал - достаточно универсальная вещь. 1) Русский на кнопках не отображается - проблемы с локализацией; хммм... у меня такого не было, но по-умному следует юзать юникод wchar_t*, если не ошибаюсь. Чтобы прога не зависела от кривых региональных настроек винды (типа как у тебя). ------------------ - А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2005, 15:38 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33085992&tid=2033239]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 240ms |
| total: | 389ms |

| 0 / 0 |
