7 / 7 / 1
Регистрация: 22.03.2010
Сообщений: 84
|
|
1 | |
Создание окна из - под консоли12.04.2010, 08:47. Просмотров 11003. Ответов 19
Метки нет Все метки)
(
Здравствуйте.
Нас тут озадачили в универе надеванием штанов через голову. Суть: программа выполняет там некоторые операции, в результате которых имеет две строки - одна с цифрами, другая с буквами. Но это не самое страшное.. Вот она должна их вывести в двух новых разных окнах, а делается всё это исключительно в консоли. При этом не допускается запуск новых экзешников - это должна быть одна программа. Вот, собственно, и вопрос: подскажите, кто знает, в чём глубинный смысл создания консольного окна, как это делать, и как одно из созданных (ну это уже из интереса) убить. Заранее спасибо.. =_)
0
|
|
12.04.2010, 08:47 | |
Создание окна в консоли Создание дочернего окна в консоли
Создание тени под TextBlock, которая перемещается при изменении размера окна и масштабирования |
|
10 / 10 / 5
Регистрация: 08.07.2009
Сообщений: 34
|
|
12.04.2010, 08:59 | 2 |
интересная штука. тоже хочется знать. пойду ковырятся.
0
|
Модератор
![]() ![]() ![]() ![]() 10875 / 6763 / 1619
Регистрация: 25.07.2009
Сообщений: 12,483
|
|
12.04.2010, 09:47 | 3 |
Leonidus, если можно Qt использовать, то в принципе не проблема. Вот незатейливый пример... Опять же если нужно просто результат в окошках вывести, в WinAPI есть функция MessageBox() которую вполне можно из консольной программы вызывать...
1
|
7 / 7 / 1
Регистрация: 22.03.2010
Сообщений: 84
|
|
12.04.2010, 18:10 [ТС] | 4 |
easybudda, я только делаю первые шаги в программировании. Что такое Qt щас погуглю, а вот как вызвать WinAPI функцию я пока не знаю. Например, тот же MessageBox(). Буду премногоблагодарен, если подскажете..)
0
|
![]() 1661 / 1033 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
12.04.2010, 19:12 | 5 |
Чтобы вызывать функции WinAPI, надо подключить <windows.h>. Чтобы создать новую консоль, надо раскопать справку по функции того же WinAPI под названием AllocConsole и разобраться с тем, как работают с консолями.
0
|
Модератор
![]() ![]() ![]() ![]() 10875 / 6763 / 1619
Регистрация: 25.07.2009
Сообщений: 12,483
|
||||||
12.04.2010, 20:16 | 6 | |||||
Leonidus, программа по сути бестолковая, но показывает, как можно MessageBox() использовать
0
|
7 / 7 / 1
Регистрация: 22.03.2010
Сообщений: 84
|
|
16.04.2010, 09:54 [ТС] | 7 |
С боксами вот такая лажа..(((
1>.\Lab_7.cpp(1) : warning C4627: #include <stdio.h>: пропущен при поиске использования предкомпилированного заголовка 1> Добавление директивы в "stdafx.h" или перестройка предкомпилированного заголовка 1>.\Lab_7.cpp(2) : warning C4627: #include <stdlib.h>: пропущен при поиске использования предкомпилированного заголовка 1> Добавление директивы в "stdafx.h" или перестройка предкомпилированного заголовка 1>.\Lab_7.cpp(3) : warning C4627: #include <windows.h>: пропущен при поиске использования предкомпилированного заголовка 1> Добавление директивы в "stdafx.h" или перестройка предкомпилированного заголовка 1>.\Lab_7.cpp(13) : error C3861: printf: идентификатор не найден 1>.\Lab_7.cpp(14) : error C2065: stdin: необъявленный идентификатор 1>.\Lab_7.cpp(14) : error C3861: fgets: идентификатор не найден 1>.\Lab_7.cpp(15) : error C3861: exit: идентификатор не найден 1>.\Lab_7.cpp(16) : error C3861: printf: идентификатор не найден 1>.\Lab_7.cpp(17) : error C3861: scanf: идентификатор не найден 1>.\Lab_7.cpp(18) : error C3861: exit: идентификатор не найден 1>.\Lab_7.cpp(20) : error C2065: NULL: необъявленный идентификатор 1>.\Lab_7.cpp(20) : error C2065: MB_OK: необъявленный идентификатор 1>.\Lab_7.cpp(20) : error C3861: MessageBox: идентификатор не найден 1>.\Lab_7.cpp(21) : error C3861: sprintf: идентификатор не найден 1>.\Lab_7.cpp(22) : error C2065: NULL: необъявленный идентификатор 1>.\Lab_7.cpp(22) : error C2065: MB_OK: необъявленный идентификатор 1>.\Lab_7.cpp(22) : error C3861: MessageBox: идентификатор не найден 1>.\Lab_7.cpp(24) : error C3861: exit: идентификатор не найден
0
|
23 / 23 / 5
Регистрация: 31.10.2009
Сообщений: 199
|
|
16.04.2010, 10:27 | 8 |
Leonidus, если ты пишешь на висуал студии то тебе скорей всего надо в самое начало сунуть
0
|
7 / 7 / 1
Регистрация: 22.03.2010
Сообщений: 84
|
|
16.04.2010, 10:32 [ТС] | 9 |
Сунул.. Это с ним вместе..
Добавлено через 16 секунд GAME, а у тебя компилируется нормально? Добавлено через 1 минуту Ололо.. Сунул его в сааамое начало: 1>------ Построение начато: проект: Lab_7, Конфигурация: Debug Win32 ------ 1>Компиляция... 1>Lab_7.cpp 1>.\Lab_7.cpp(19) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> C:\Program Files\Microsoft Visual Studio 9.0\VC\include\stdio.h(306): см. объявление 'scanf' 1>.\Lab_7.cpp(22) : error C2664: MessageBox: невозможно преобразовать параметр 2 из 'char [128]' в 'LPCTSTR' 1> Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции 1>.\Lab_7.cpp(24) : error C2664: MessageBox: невозможно преобразовать параметр 2 из 'char [128]' в 'LPCTSTR' 1> Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции Добавлено через 14 секунд #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <windows.h>
0
|
23 / 23 / 5
Регистрация: 31.10.2009
Сообщений: 199
|
|||||||||||
16.04.2010, 10:38 | 10 | ||||||||||
Ну это ошибки из за разных кодировок.
Тут есть 2 варианта. 1й. Зайти в обозреватель решений,тыркнуть правой кнопкой по твоему проэкту (скорей всего 2я сверху строка ) и поменять набор знаков на многодайтовый. 2й. Просто поставь в тех местах , где ошибки
пример
0
|
Модератор
![]() ![]() ![]() ![]() 10875 / 6763 / 1619
Регистрация: 25.07.2009
Сообщений: 12,483
|
|
16.04.2010, 11:17 | 11 |
Это не с "боксами лажа" это с MSVS не разобрались... Скопируйте и сохраните текст в любом текстовом редакторе в файл с расширением ".c". Откройте консоль студийную ( у меня оно так выглядит: пуск -> Все программы -> Microsoft Visual Studio 2005 -> Visual Studio Tools -> Visual Studio 2005 Command Prompt ), а дальше, как на картинках, путь только к папке с файлом свой укажите...
0
|
7 / 7 / 1
Регистрация: 22.03.2010
Сообщений: 84
|
||||||
17.04.2010, 09:40 [ТС] | 12 | |||||
1>Компиляция... 1>Lab_7.cpp 1>.\Lab_7.cpp(19) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> C:\Program Files\Microsoft Visual Studio 9.0\VC\include\stdio.h(306): см. объявление 'scanf' 1>.\Lab_7.cpp(22) : error C2664: MessageBox: невозможно преобразовать параметр 3 из 'const char [13]' в 'LPCTSTR' 1> Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции 1>.\Lab_7.cpp(24) : error C2664: MessageBox: невозможно преобразовать параметр 3 из 'const char [10]' в 'LPCTSTR' 1> Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции Оно надо мной издевается..( Через изменение на многобайтовую кодировку: 1>Компиляция... 1>stdafx.cpp 1>Компиляция... 1>Lab_7.cpp 1>.\Lab_7.cpp(19) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> C:\Program Files\Microsoft Visual Studio 9.0\VC\include\stdio.h(306): см. объявление 'scanf' 1>.\Lab_7.cpp(23) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> C:\Program Files\Microsoft Visual Studio 9.0\VC\include\stdio.h(366): см. объявление 'sprintf' 1>AssemblyInfo.cpp 1>Создание кода... 1>Компиляция ресурсов... 1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1 1>Copyright (C) Microsoft Corporation. All rights reserved. 1>Компоновка... 1>Lab_7.obj : error LNK2028: ссылка на неразрешенную лексему (0A000020) "extern "C" int __stdcall MessageBoxA(struct HWND__ *,char const *,char const *,unsigned int)" (?MessageBoxA@@$$J216YGHPAUHWND__@@PBD1I@Z) в функции "extern "C" int __cdecl MessageBox(struct HWND__ *,char const *,char const *,unsigned int)" (?MessageBox@@$$J0YAHPAUHWND__@@PBD1I@Z) 1>Lab_7.obj : error LNK2019: ссылка на неразрешенный внешний символ "extern "C" int __stdcall MessageBoxA(struct HWND__ *,char const *,char const *,unsigned int)" (?MessageBoxA@@$$J216YGHPAUHWND__@@PBD1I@Z) в функции "extern "C" int __cdecl MessageBox(struct HWND__ *,char const *,char const *,unsigned int)" (?MessageBox@@$$J0YAHPAUHWND__@@PBD1I@Z) 1>E:\Visual c++\Lab_7\Debug\Lab_7.exe : fatal error LNK1120: 2 неразрешенных внешних элементов
0
|
7 / 7 / 1
Регистрация: 22.03.2010
Сообщений: 84
|
|
17.04.2010, 10:04 [ТС] | 13 |
0
|
7 / 7 / 1
Регистрация: 22.03.2010
Сообщений: 84
|
|
17.04.2010, 11:40 [ТС] | 14 |
Ладно.. Помогите тогда вывести простое предложение в одном месс боксе, пожалуйста..)
Точнее как оно строиться.. Нашёл вот такой вариант: MessageBoxA(NULL, buf, "Message title", MB_OK); Что такое NULL (чего там нету или чего там ноль)? buf, как я понял, это выводимые данные в массиве, так..? "Message title" - заголовок? MB_OK - эт что..?) Добавлено через 54 минуты Ладно.. Помогите тогда вывести простое предложение в одном месс боксе, пожалуйста..) Точнее как оно строиться.. Нашёл вот такой вариант: MessageBoxA(NULL, buf, "Message title", MB_OK); Что такое NULL (чего там нету или чего там ноль)? buf, как я понял, это выводимые данные в массиве, так..? "Message title" - заголовок? MB_OK - эт что..?)
0
|
Модератор
![]() ![]() ![]() ![]() 10875 / 6763 / 1619
Регистрация: 25.07.2009
Сообщений: 12,483
|
|
17.04.2010, 13:29 | 15 |
Leonidus, Внимательнее читаем! Написал же - путь к папке с файлом свой укажите. Вот так:
Код
e: cd cpp cl lab7.c comctl32.lib user32.lib gdi32.lib Не по теме: Вот, блин, молодёжь... Консоли, как чёрт ладана, боятся... :) Добавлено через 4 минуты Тут хендл родительского окна должен быть. Если не лень, ищите в MSDN, как хендл консоли получить. Но окошки и так создадутся...
0
|
23 / 23 / 5
Регистрация: 31.10.2009
Сообщений: 199
|
||||||
17.04.2010, 13:30 | 16 | |||||
первый параметр - что-то наподобии окна-родителя.
второй - собственно сам текст третий - заголовок четвёртый - стиль окна. MB_OK - окно с кнопкой ОК , их много , можешь на мсдн посмотреть. Leonidus, насчёт ошибок, извини , забыл ещё кое-что : когда ты посылаешь строки в кавычках надо делать так
0
|
Модератор
![]() ![]() ![]() ![]() 10875 / 6763 / 1619
Регистрация: 25.07.2009
Сообщений: 12,483
|
|
17.04.2010, 13:32 | 17 |
указатель на строку, которую вывести надо.
да а на что похоже? кнопка Ok
0
|
7 / 7 / 1
Регистрация: 22.03.2010
Сообщений: 84
|
|
18.04.2010, 11:21 [ТС] | 18 |
GAME, ну что..?_)
Блин, ну ничего не выходит.. я уже пытаюсь просто тупо вывести строку и чтобы оно в студии скомпилилось.. хоть бы хны.. =(
0
|
23 / 23 / 5
Регистрация: 31.10.2009
Сообщений: 199
|
|
18.04.2010, 15:05 | 19 |
0
|
![]() |
|
18.04.2010, 17:11 | 20 |
0
|
18.04.2010, 17:11 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь. Как избавится от родительского консольного окна при создание WinAPI окна Создание невидимого окна поверх окна другой программы Создание модального диалогового окна поверх окна родителя
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |