Основной вопрос программирования Windows в VS2005 - PullRequest
0 голосов
/ 02 сентября 2011

Я создал консольное приложение win32 (без включения опции скомпилированного заголовка).И теперь мой исходный код, как это, есть две ошибки компилятора.

// AFormattingMsgBox.cpp : Defines the entry point for the console application.
//
#include <windows.h>
#include "stdafx.h"


//int _tmain(int argc, _TCHAR* argv[])
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                     PSTR szCmdLine, int iCmdShow)
{
    int cxScreen, cyScreen;

    cxScreen = GetSystemMetrics(SM_CXSCREEN);
    cyScreen = GetSystemMetrics(SM_CYSCREEN);

    MessageBoxPrintf(TEXT("ScrnSize"), TEXT("The screen is %i pixels wide by %i pixels high."), cxScreen, cyScreen);

    return 0;
}


int CDECL MessageBoxPrintf(TCHAR * szCaption, TCHAR * szFormat, int x, int y)
{
    TCHAR szBuffer [1024];
    va_list pArgList;

    va_start(pArgList, szFormat);

    _vsntprintf(szBuffer, sizeof(szBuffer) / sizeof(TCHAR), 
                szFormat, pArgList);

    va_end(pArgList);

    return MessageBox(NULL, szBuffer, szCaption, 0);

}

Ошибки компиляции.

ошибка C3861: 'MessageBoxPrintf': идентификатор не найден

ошибка C2365: 'MessageBoxPrintf': переопределение;предыдущее определение было «ранее неизвестный идентификатор

Как я могу исправить ошибки.Спасибо за ваше чтение и ответы.

1 Ответ

1 голос
/ 02 сентября 2011

Либо поместите функцию MessageBoxPrintf перед функцией WinMain, либо добавьте прототип перед winMain. Вы добавляете прототип, введя следующую строку:

int CDECL MessageBoxPrintf(TCHAR * szCaption, TCHAR * szFormat, int x, int y);
...