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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2013, 20:43   #1
Donat_Oshchepkov
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 17
По умолчанию Ссылка на неразрешенный внешний символ

Ссылка на неразрешенный внешний символ _main в функции ____tmainCRTStartup

В чем проблема??


Код:
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
 
/* кол-во строчек */
#define LINES 30
 
LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM);
 
char szClassName[] = "WindowsApp";
 
int WINAPI WinMain(HINSTANCE hThisInstance,HINSTANCE hPrevInstance,LPSTR lpszArgument,int nFunsterStil)
{
    HWND hwnd;
    MSG messages;
    WNDCLASSEX wincl;
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;
    wincl.style = CS_HREDRAW | CS_VREDRAW ;
    wincl.cbSize = sizeof(WNDCLASSEX);
    wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor(NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;
    wincl.cbClsExtra = 0;
    wincl.cbWndExtra = 0;
    wincl.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
    if (!RegisterClassEx(&wincl)) return(0);
 
    hwnd = CreateWindowEx(0,szClassName,"Лабораторная работа",WS_OVERLAPPEDWINDOW | WS_VSCROLL | WS_HSCROLL,CW_USEDEFAULT,CW_USEDEFAULT,400,300,NULL,NULL,hThisInstance,NULL);
 
    ShowWindow(hwnd, nFunsterStil);
 
    while (GetMessage(&messages, NULL, 0, 0))
    {
        TranslateMessage(&messages);
        DispatchMessage(&messages);
    }
    return(messages.wParam);
}
 
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    static int  cxChar, cxCaps, cyChar, cyClient, cxClient, VscrollPos, HscrollPos;
    int i;
    int j;

    char buffer[1024]; //размер буфера для текста ставь побольше если будет много текста
    TEXTMETRIC tm;
 
 
    if (message ==WM_VSCROLL)
    {
            EnableScrollBar(hwnd, false, SB_BOTH);
            EnableScrollBar(hwnd, false, SB_VERT);
    }
    else if (message ==WM_HSCROLL)
    {
            EnableScrollBar(hwnd, false, SB_BOTH);
            EnableScrollBar(hwnd, true, SB_VERT);
    }
    else
    {
            EnableScrollBar(hwnd, false, SB_BOTH);
            EnableScrollBar(hwnd, false, SB_HORZ);
    }
Donat_Oshchepkov вне форума Ответить с цитированием
Старый 14.12.2013, 20:43   #2
Donat_Oshchepkov
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 17
По умолчанию Продолжение

Код:
switch (message)
    {
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        case WM_CREATE:
            {
            HDC hdc = GetDC(hwnd);
 
            GetTextMetrics(hdc, &tm);
            cxChar = tm.tmAveCharWidth;
            cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2;
            cyChar = tm.tmHeight + tm.tmExternalLeading;
 
            ReleaseDC(hwnd, hdc);
 
            SetScrollRange(hwnd, SB_VERT, 0, LINES - 1, FALSE);
            SetScrollPos(hwnd, SB_VERT, VscrollPos, TRUE);
 
            //SetScrollRange(hwnd, SB_HORZ, 0, LINES - 1, FALSE);
            SetScrollPos(hwnd, SB_HORZ, HscrollPos, TRUE);
            }
        case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hwnd, &ps);
 
            i = GetScrollPos(hwnd, SB_VERT);
            j = GetScrollPos(hwnd, SB_HORZ);
            sprintf(buffer,"Здравствуйте! Уже несколько дней мучаюсь с такой проблемой: ");
            TextOut(hdc, cxChar * -j, cyChar * -i, buffer, strlen(buffer));
            i = GetScrollPos(hwnd, SB_VERT) - 1;
            sprintf(buffer,"Нужно создать окно с горизонтальной и вертикальной");
            TextOut(hdc, cxChar * -j, cyChar * -i, buffer, strlen(buffer));
            i = GetScrollPos(hwnd, SB_VERT) - 2;
            sprintf(buffer,"прокруткой. Горизонтальная прокрутка должна блокироваться ");
            TextOut(hdc, cxChar * -j, cyChar * -i, buffer, strlen(buffer));
            i = GetScrollPos(hwnd, SB_VERT) - 3;
            sprintf(buffer,"при нажатии на вертикальную, и наоборот. Я не знаю как");
            TextOut(hdc, cxChar * -j, cyChar * -i, buffer, strlen(buffer));
            i = GetScrollPos(hwnd, SB_VERT) - 4;
            sprintf(buffer,"передать текст в окно.");
            TextOut(hdc, cxChar * -j, cyChar * -i, buffer, strlen(buffer));
 
            EndPaint(hwnd, &ps);
            break;
        }
 
 
        case WM_VSCROLL:
        {
 
            switch (LOWORD(wParam))
            {
                case SB_LINEUP:
                    VscrollPos -= 1;
                    break;
                case SB_LINEDOWN:
                    VscrollPos += 1;
                    break;
                case SB_PAGEUP:
                    VscrollPos -= cyClient / cyChar;
                    break;
                case SB_PAGEDOWN:
                    VscrollPos += cyClient / cyChar;
                    break;
                case SB_THUMBPOSITION:
                    VscrollPos = HIWORD(wParam);
                    break;
                default:
 
                    break;
            }
 
            VscrollPos = max(0, min(VscrollPos, LINES - 1));
 
            if (VscrollPos != GetScrollPos(hwnd, SB_VERT)) {
                SetScrollPos(hwnd, SB_VERT, VscrollPos, TRUE);
                InvalidateRect(hwnd, NULL, TRUE);
            }
 
        case WM_HSCROLL:
        {
            switch (LOWORD(wParam))
            {
                case SB_LINEUP:
                    HscrollPos -= 1;
                    break;
                case SB_LINEDOWN:
                    HscrollPos += 1;
                    break;
                case SB_PAGEUP:
                    HscrollPos -= cxClient / cxChar;
                    break;
                case SB_PAGEDOWN:
                    HscrollPos += cxClient / cxChar;
                    break;
                case SB_THUMBPOSITION:
                    HscrollPos = HIWORD(wParam);
                    break;
                default:
                    
                    break;
            }
        }
 
            if (HscrollPos != GetScrollPos(hwnd, SB_HORZ)) {
                SetScrollPos(hwnd, SB_HORZ, HscrollPos, TRUE);
                InvalidateRect(hwnd, NULL, TRUE);
            }
            break;
            }
        default:
            return DefWindowProc(hwnd, message, wParam, lParam);
    }
    return 0;
}
Donat_Oshchepkov вне форума Ответить с цитированием
Старый 17.12.2013, 05:34   #3
nikmoon
Форумчанин
 
Регистрация: 13.11.2013
Сообщений: 149
По умолчанию

Уж не знаю, чем компилишь, но явно консольное приложение.
nikmoon вне форума Ответить с цитированием
Старый 17.12.2013, 10:30   #4
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

В студии выбрали консольное приложение, а код от ВИН32 приложения.
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 18.12.2013, 23:32   #5
Donat_Oshchepkov
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 17
По умолчанию

Спасибо, что отписались)
Необходимо в компоновщике менять подсистему
Donat_Oshchepkov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка error LNK2019: ссылка на неразрешенный внешний символ SlavaStas Помощь студентам 8 28.05.2013 17:30
ссылка на неразрешенный внешний символ Axrik Общие вопросы C/C++ 4 01.12.2012 18:32
Ошибка: ссылка на неразрешенный внешний символ Cthutq66a Помощь студентам 7 06.11.2011 12:10
Ссылка на неразрешенный внешний символ Xenogig Общие вопросы C/C++ 4 07.05.2011 19:11
Ссылка на неразрешенный внешний символ(error LNK2019) TheWanderer Общие вопросы C/C++ 2 07.08.2009 19:58