С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/27: Рейтинг темы: голосов - 27, средняя оценка - 4.89
216 / 216 / 33
Регистрация: 26.12.2010
Сообщений: 691

Afx.h

29.12.2010, 16:16. Показов 5358. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
добрый день. подскажите пожалуйста. делаю
C++
1
2
#define _AFXDLL
#include <afx.h>
в консольном приложении все работает без нарекний, но вот в форме при подключении к пустому проекту вылетает куча ошибок и предупреждений. (107 ошибок и 258 предупреждений).
в чем проблема знает кто? visual studio 2008 professional.
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.12.2010, 16:16
Ответы с готовыми решениями:

windows.h and afx.h
Добрый вечер! Есть проект, где используются винапишные функции и следовательно подключена windows.h. Встала необходимость использовать...

Программа перестает компилироваться после подключения библиотеки <Afx.h>
#include &quot;stdafx.h&quot; #include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;Afx.h&gt; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
29.12.2010, 17:09
где ошибки? хоть часть.
0
216 / 216 / 33
Регистрация: 26.12.2010
Сообщений: 691
29.12.2010, 17:20  [ТС]
C++
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
C:\MV studia 2008\VC\atlmfc\include\afxv_w32.h(247) : error C3641: DrawState: недопустимое соглашение вызова "__stdcall " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\afxv_w32.h(265) : error C3641: DrawStatusText: недопустимое соглашение вызова "__stdcall " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
E:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winbase.h(2534) : error C3641: FreeResource: недопустимое соглашение вызова "__stdcall " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\afxv_w32.h(279) : error C3641: UnlockResource: недопустимое соглашение вызова "__stdcall " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\afx.h(506) : error C3641: Afx_clearerr_s: недопустимое соглашение вызова "__cdecl " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlconv.h(90) : error C3641: InterlockedExchangePointer: недопустимое соглашение вызова "__stdcall " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlconv.h(102) : error C3641: ATL::_AtlGetConversionACP: недопустимое соглашение вызова "__stdcall " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlconv.h(535) : error C3641: AtlA2WHelper: недопустимое соглашение вызова "__stdcall " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlconv.h(554) : error C3641: AtlW2AHelper: недопустимое соглашение вызова "__stdcall " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlconv.h(572) : error C3641: AtlA2WHelper: недопустимое соглашение вызова "__stdcall " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlconv.h(577) : error C3641: AtlW2AHelper: недопустимое соглашение вызова "__stdcall " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlconv.h(530) : error C3641: AtlDevModeW2A: недопустимое соглашение вызова "__stdcall " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlexcept.h(62) : error C3641: ATL::AtlThrowImpl: недопустимое соглашение вызова "__stdcall " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlexcept.h(81) : error C3641: ATL::AtlThrowLastWin32: недопустимое соглашение вызова "__stdcall " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlalloc.h(227) : error C3641: ATL::Checked::memcpy_s: недопустимое соглашение вызова "__cdecl " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlchecked.h(68) : error C3641: ATL::Checked::wmemcpy_s: недопустимое соглашение вызова "__cdecl " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlchecked.h(73) : error C3641: ATL::Checked::memmove_s: недопустимое соглашение вызова "__cdecl " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlchecked.h(78) : error C3641: ATL::Checked::strcpy_s: недопустимое соглашение вызова "__cdecl " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlchecked.h(83) : error C3641: ATL::Checked::wcscpy_s: недопустимое соглашение вызова "__cdecl " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlchecked.h(88) : error C3641: ATL::Checked::tcscpy_s: недопустимое соглашение вызова "__cdecl " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlchecked.h(93) : error C3641: ATL::Checked::strncpy_s: недопустимое соглашение вызова "__cdecl " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlchecked.h(98) : error C3641: ATL::Checked::wcsncpy_s: недопустимое соглашение вызова "__cdecl " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlchecked.h(103) : error C3641: ATL::Checked::tcsncpy_s: недопустимое соглашение вызова "__cdecl " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlchecked.h(108) : error C3641: ATL::Checked::strcat_s: недопустимое соглашение вызова "__cdecl " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlchecked.h(113) : error C3641: ATL::Checked::wcscat_s: недопустимое соглашение вызова "__cdecl " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
я так понял что то с библиотеками, как исправить?
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
29.12.2010, 17:25
ясно-же, русским языком, написано:
Цитата Сообщение от NiRamz Посмотреть сообщение
недопустимое соглашение вызова "__stdcall " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
параметры компиляции надо поменять.
а то, в таком режиме он не может сделать исполняемый файл.
0
216 / 216 / 33
Регистрация: 26.12.2010
Сообщений: 691
29.12.2010, 17:37  [ТС]
а можно поподробнее пожалуйста. я просто только начинаю ..
это режимы debug и releasе? правильно я понимаю? просто эти ошибки в релизе идут. попробывал сейчас сменить не дебаг вышло поменьше, но смысл тот же ..

C++
1
2
3
4
5
6
7
8
9
10
11
C:\MV studia 2008\VC\atlmfc\include\afxv_w32.h(247) : error C3641: DrawState: недопустимое соглашение вызова "__stdcall " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\afxv_w32.h(265) : error C3641: DrawStatusText: недопустимое соглашение вызова "__stdcall " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
E:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winbase.h(2534) : error C3641: FreeResource: недопустимое соглашение вызова "__stdcall " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\afxv_w32.h(279) : error C3641: UnlockResource: недопустимое соглашение вызова "__stdcall " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlconv.h(90) : error C3641: InterlockedExchangePointer: недопустимое соглашение вызова "__stdcall " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlconv.h(102) : error C3641: ATL::_AtlGetConversionACP: недопустимое соглашение вызова "__stdcall " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlconv.h(535) : error C3641: AtlA2WHelper: недопустимое соглашение вызова "__stdcall " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlconv.h(554) : error C3641: AtlW2AHelper: недопустимое соглашение вызова "__stdcall " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlconv.h(572) : error C3641: AtlA2WHelper: недопустимое соглашение вызова "__stdcall " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlconv.h(577) : error C3641: AtlW2AHelper: недопустимое соглашение вызова "__stdcall " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
C:\MV studia 2008\VC\atlmfc\include\atlconv.h(530) : error C3641: AtlDevModeW2A: недопустимое соглашение вызова "__stdcall " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
29.12.2010, 17:53
Цитата Сообщение от NiRamz Посмотреть сообщение
это режимы debug и releasе?
нет, это параметр компилятора /clr
написано-же.
ищи в настройках проекта.
Установка параметра компилятора в Visual Studio

1.

Щелкните правой кнопкой мыши имя проекта в обозревателе решений и выберите пункт Свойства, чтобы открыть диалоговое окно Страницы свойств проекта.
2.

Выберите папку Свойства конфигурации.
3.

На странице свойств Общие измените свойство Поддержка среды CLR.
ПримечаниеПримечание

Если в диалоговом окне Страницы свойств проекта включен параметр /clr, свойства параметров компилятора, несовместимые с /clr, также будут настроены соответствующим образом.Например, если используется параметр /RTC, а затем включается /clr, то параметр /RTC будет отключен.

Аналогичным образом при отладке приложения, созданного с помощью /clr, задайте для свойства Тип отладчика значение Смешанный или Только управляемый код.Дополнительные сведения см. в разделе Параметры проекта для конфигурации отладки C++.
3
216 / 216 / 33
Регистрация: 26.12.2010
Сообщений: 691
29.12.2010, 18:11  [ТС]
спасибо большое)
1
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
29.12.2010, 18:48
да пожалуйста.
а вообще, обычно быстрее самому поискать в MSDN, чем ждать ответа на форуме.
чаще всего, все заняты.
http://msdn.microsoft.com/ru-r... fault.aspx
0
216 / 216 / 33
Регистрация: 26.12.2010
Сообщений: 691
29.12.2010, 19:33  [ТС]
форум был крайним вариантом. пролазил в течении все что смог, так не найдя проблемы(
есть еще вопрос, если возможно ответьте.

C++
1
2
                    finder.GetFileName();
                    finder.GetFilePath();
я так понял они возвращают имя и путь в cstring'e, а что бы добавить в listbox->items->add() необходимо object. я правильно понимаю?
если да можете ли подтолкнуть в нужную сторону, в какую копать мне)
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
29.12.2010, 19:44
а кто такой finder?
CFile? CFileFind? CFileDialog? или еще кто из десятка классов?
и кто тaкой listbox?
возможны варианты: listbox->AddText(), listbox->AddString()

и вообще, ты на чем пишешь? ATL? WindowForms?
0
216 / 216 / 33
Регистрация: 26.12.2010
Сообщений: 691
29.12.2010, 19:50  [ТС]
CFileFind finder;
на windowForms там компонент listbox ..
извиняюсь за нубство(
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
29.12.2010, 20:07
Цитата Сообщение от NiRamz Посмотреть сообщение
на windowForms там компонент listbox ..
фактически, там ДВА компонента:
ListBox - класс (System.Windows.Forms)
ListBox - класс (System.Windows.Controls)
разные они.
впрочем, не суть важно.
Цитата Сообщение от NiRamz Посмотреть сообщение
а что бы добавить в listbox->items->add() необходимо object.
смысл не вполне понял.
нужен объект типа string. или CString, если это MFC.
хотя, как ты совмещаешь в одном проекте WindowForms и MFC(ведь CFileFind - это класс MFC) я понятия не имею. у меня такое совмещение категорически не получается.
0
216 / 216 / 33
Регистрация: 26.12.2010
Сообщений: 691
29.12.2010, 20:16  [ТС]
вот и у меня не получается. сначало пробывал с помощью findfirstfile ...
примерно такая же ситуация получилась. сейчас вот попробывал с помощью cfilefind..

что мне надо.. найти все файлы с указанным разрешением в каталоге что мы выбрали и я хочу что бы пользователю выводился список их.. ищу изображения, если это имеет значение.. просто спрашивал на форуме уже тут, мне ответили что надо копать в эту сторону)
если не трудно пните ))

может для картинок есть что то конкретное?
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
29.12.2010, 20:30
Цитата Сообщение от NiRamz Посмотреть сообщение
может для картинок есть что то конкретное?
что конкретное? функции поиска? нет, они от формата файла не зависят.

лучше код покажи.
хоть пойму, на чем пишешь.
0
216 / 216 / 33
Регистрация: 26.12.2010
Сообщений: 691
29.12.2010, 20:38  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#define _AFXDLL
#include <afx.h>
 
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                            
                CFileFind finder;
                BOOL bWorking;
                CString tert = "c:\\*.jpg";
    
                
                bWorking = finder.FindFile(_T(tert));
                while (bWorking)
                {
                    bWorking = finder.FindNextFile();
                    //TRACE(_T("%s\n"), (LPCTSTR)finder.GetFileName());
                    //finder.GetFileName();
                    listBox1->Items->Add(finder.GetFilePath());
                }
             }
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
29.12.2010, 20:42
круто. невообразимый гибрид.
попробуй написать так:
C++
1
listBox1->Items->Add(string(LPCSTR(finder.GetFilePath())));
0
216 / 216 / 33
Регистрация: 26.12.2010
Сообщений: 691
29.12.2010, 20:55  [ТС]
C++
1
error C2664: System::Windows::Forms::ListBox::ObjectCollection::Add: невозможно преобразовать параметр 1 из 'System::String' в 'System::Object ^'
вот ошибка вылезает какая. пробывал переводить в char. тоже такой же результат.)
listBox1->Items->Add (Convert::ToString(LPCSTR(finder.GetFile Path())));
вот так ошибки не вылазиет, но и в листбокс заносится не адрес файла, а true..
вот как то так.
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
29.12.2010, 21:04
ах, да! CLI-же...
я на такой мути не пишу.
надо что-то вроде
C++
1
listBox1->Items->Add(gcnew string(LPCSTR(finder.GetFilePath())));
1
216 / 216 / 33
Регистрация: 26.12.2010
Сообщений: 691
29.12.2010, 21:23  [ТС]
спасибо. все заработало)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru