Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2010, 23:45   #1
_ILYA_
Пользователь
 
Аватар для _ILYA_
 
Регистрация: 12.10.2010
Сообщений: 79
По умолчанию Что означает "__stdcall " ??

Что означает "__stdcall " и как с этим боротся

stdafx.h
Код:
#include "String.h"
#include "windows.h"
#include "ddeml.h"
MyWord.h
Код:
#include "stdafx.h"

class MyWord {
private:
	DWORD idInst;
	UINT iReturn;
public:
	void Com (DWORD, HCONV, char* );
	void Write (DWORD, HCONV, char*, char* );
	void DDEPoke (DWORD, HCONV, char*, char* );
	HDDEDATA CALLBACK DdeCallback( UINT, UINT, HCONV, HSZ, HSZ,
		HDDEDATA, DWORD, DWORD );
	MyWord ();
	~MyWord ();
};
MyWord.cpp
Код:
#include "StdAfx.h"
#include "MyWord.h"

HDDEDATA CALLBACK MyWord::DdeCallback(
    UINT uType,     // Transaction type.
    UINT uFmt,      // Clipboard data format.
    HCONV hconv,    // Handle to the conversation.
    HSZ hsz1,       // Handle to a string.
    HSZ hsz2,       // Handle to a string.
    HDDEDATA hdata, // Handle to a global memory object.
    DWORD dwData1,  // Transaction-specific data.
    DWORD dwData2)  // Transaction-specific data.
{
    return 0;
};

MyWord::MyWord () {
	DWORD idInst=0;
	iReturn = DdeInitialize(&idInst, (PFNCALLBACK)DdeCallback, 
		APPCLASS_STANDARD | APPCMD_CLIENTONLY, 0 );
};

~MyWord::MyWord () {
	DdeUninitialize(idInst);
};

void MyWord::Com(DWORD idInst, HCONV hConv, char* szCommand)
{
    HDDEDATA hData = DdeCreateDataHandle(idInst, (LPBYTE)szCommand,
                               lstrlen(L"szCommand")+1, 0, NULL, CF_TEXT, 0);
    if (hData==NULL)   {


    }
    else    {
        DdeClientTransaction((LPBYTE)hData, 0xFFFFFFFF, hConv, 0L, 0,
                             XTYP_EXECUTE, TIMEOUT_ASYNC, NULL);
    }
};

void MyWord::Write (DWORD idInst, HCONV hConv, char* szItem, char* sDesc)
{
    HSZ hszItem = DdeCreateStringHandle(idInst, L"WINWORD", 0);
    HDDEDATA hData = DdeClientTransaction(NULL,0,hConv,hszItem,CF_TEXT, 
                                 XTYP_REQUEST,5000 , NULL);
    if (hData==NULL)
    {


    }
    else
    {
        char szResult[255];
        DdeGetData(hData, (unsigned char *)szResult, 255, 0);
    }
};

void MyWord::DDEPoke(DWORD idInst, HCONV hConv, char* szItem, char* szData)
{
    HSZ hszItem = DdeCreateStringHandle(idInst, L"WINWORD", 0);
	DdeClientTransaction((LPBYTE)szData, (DWORD)(lstrlen(L"szData")+1),
                          hConv, hszItem, CF_TEXT,
                          XTYP_POKE, 3000, NULL);
    DdeFreeStringHandle(idInst, hszItem);
};
Код HTML:
1>------ Построение начато: проект: second, Конфигурация: Debug Win32 ------
1>Построение начато 21.10.2010 23:38:01.
1>InitializeBuildStatus:
1>  Обращение к "Debug\second.unsuccessfulbuild".
1>GenerateTargetFrameworkMonikerAttribute:
1>Целевой объект "GenerateTargetFrameworkMonikerAttribute" пропускается, так как все выходные файлы актуальны по отношению к входным.
1>ClCompile:
1>  Для всех выходных данных обновления не требуется.
1>  MyWord.cpp
1>c:\users\_ilya_\documents\visual studio 2010\projects\second\second\MyWord.h(11): error C3641: MyWord::DdeCallback: недопустимое соглашение вызова "__stdcall " для функции, скомпилированной с параметрами /clr:pure или /clr:safe
1>MyWord.cpp(19): error C2440: приведение типов: невозможно преобразовать "overloaded-function" в "PFNCALLBACK"
1>          Конечному типу не соответствует ни одной функции с данным именем в области видимости
1>MyWord.cpp(23): error C2061: синтаксическая ошибка: идентификатор "{ctor}"
1>MyWord.cpp(23): error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>MyWord.cpp(23): error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
1>  raschet.cpp
1>  second.cpp
1>second.cpp(3): warning C4627: #include "raschet.h": пропущен при поиске использования предкомпилированного заголовка
1>          Добавление директивы в "StdAfx.h" или перестройка предкомпилированного заголовка
1>  Создание кода...
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:00.73
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Имею хитрый план по личному обогащению

Последний раз редактировалось _ILYA_; 21.10.2010 в 23:47. Причина: думаю медленно
_ILYA_ вне форума Ответить с цитированием
Старый 21.10.2010, 23:52   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

http://ru.wikipedia.org/wiki/Соглашение_вызова
про stdcall там есть.
Код:
#include "raschet.h"
у вас этого инклюда нет случаем?
если есть то похоже что он написан до #include "stdafx.h" а надо после.

и еще вопрос, зачем вы в каждый свой файл включаете stdafx?(в вашем cpp файле этого уже не надо, он автоматически войдем вместе с MyWord.h)


а вообще судя по всему у вас в настройках проекта разрешено использование CLR, и в итоге проект для .NET, и там нет соглашений вызова.

кстати можно вопрос, если вы не знаете что такое соглашение вызова, то зачем пишете
Цитата:
CALLBACK
?уберите(а если надо для чего то, то тогда проблема только в CLR)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.10.2010, 00:27   #3
_ILYA_
Пользователь
 
Аватар для _ILYA_
 
Регистрация: 12.10.2010
Сообщений: 79
По умолчанию

#include "raschet.h" пока что существует по большей части в моем воображении. И имеет в данный момент такую реализациюю.
"raschet.h"
Код:
#include "initialdata.h"
#include "MyWord.h"
#include "stdafx.h"

class cl_ploskaya_zadacha : public initialdata  {
private:
	MyWord doc;
public:
	double Reakciya ();
	cl_ploskaya_zadacha ();
	cl_ploskaya_zadacha ( initialdata* fd );
};

class cl_zadacha_1 : private cl_ploskaya_zadacha {
private:

public:
	cl_zadacha_1 ();
	cl_zadacha_1 ( initialdata* fd );
	void Run();
};
"raschet.cpp" еще бедней, он практически пуст и заполнен только пустыми прототипами функций.
путь создания проекта:
Код HTML:
VS2010->(VC++)->CLR_Windows_Forms->name(sekond)
так как самотоятельно создать форму я не могу.
Класс MyWord должен инкапсулировать в себе DDS (Dynamic Data Exchange Management Library) http://msdn.microsoft.com/en-us/libr...(v=VS.85).aspx
В котором идут вызовы API функций, а
Код:
HDDEDATA CALLBACK DdeCallback( UINT, UINT, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD )
Это моя функция которую я должен передать в API, по сути это просто «заглушка» так как сам я не собираюсь «оказывать услуги» другим приложениям
Имею хитрый план по личному обогащению

Последний раз редактировалось _ILYA_; 22.10.2010 в 00:33.
_ILYA_ вне форума Ответить с цитированием
Старый 24.10.2010, 19:47   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

значит проверьте в настройках проекта опции про CLR, он вам не нужен.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что означает ошибка "')' expected but ';' found"? katris Помощь студентам 17 19.12.2009 17:00
Что означает "!" в условиях ? TrueMethod Общие вопросы C/C++ 7 02.10.2009 20:04
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Правда ли что Java "Тяжелая" и все "вешает" ? webmaster-n Общие вопросы по Java, Java SE, Kotlin 10 30.07.2009 01:22
Что означает понятие "методическое обеспечение" Stilet Свободное общение 4 16.11.2008 22:42