Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Простое оконное приложение

20K
21 марта 2007 года
CodeV
4 / / 04.10.2006
У меня вопрос такой. Я создаю пустой проект Win32 Application в Visual C++ 6.0, дальше добавляю .срр файл для того чтоб написать свой код.
Вот код собсно
Код:
//---------------------------------------------------------------------------------------
// WindowsBazis.CPP
// Данное приложенние создает простейшее окно  
//---------------------------------------------------------------------------------------

#include <windows.h>         // Подключаем заголовочный файл Windows
#include "resource.h"

//----------------------------------------------------------------------------------------
// Функция
// MainWinProc()
// Здесь происходит обработка сообщенний
//----------------------------------------------------------------------------------------

LRESULT CALLBACK MainWinProc(HWND hwnd,             //Дескриптор окна
                            UINT msg,               //идентефикатор сообщение  
                            WPARAM wparam,          //Дополнительная информация
                            LPARAM lparam)          //Дополнительная информация
{

switch(msg)
    {  
   

    case WM_PAINT:
         break;

    case WM_DESTROY:
        {
        PostQuitMessage(0);
        return(0);
        } break;

    }

  return (DefWindowProc(hwnd, msg, wparam, lparam));
}
//---------------------------------------------------------------------------------------
// Функция
// WinMain()
// Входная точка приложения
//---------------------------------------------------------------------------------------

int WINAPI WinMain( HINSTANCE hinstance,
                    HINSTANCE hprevinstance,
                    LPSTR lpcmdline,
                    int ncmdshow)
{

WNDCLASSEX windowsclass; // Создем класс
HWND       hwnd;         // Создаем дескриптор окна
MSG        msg;          // Сообщение


// Определим класс окна WNDCLASSEX
windowsclass.cbSize         = sizeof(WNDCLASSEX);
windowsclass.style          = CS_DBLCLKS | CS_OWNDC |
                              CS_HREDRAW | CS_VREDRAW;
windowsclass.lpfnWndProc    = MainWinProc;
windowsclass.cbClsExtra     = 0;
windowsclass.cbWndExtra     = 0;
windowsclass.hInstance      = hinstance;
windowsclass.hIcon          = LoadIcon(hinstance, IDI_ICON1);
windowsclass.hCursor        = LoadCursor(NULL, IDC_ARROW);
windowsclass.hbrBackground  = (HBRUSH)GetStockObject(GRAY_BRUSH);
windowsclass.lpszMenuName   = NULL;
windowsclass.lpszClassName  = "WINDOWSCLASS";
windowsclass.hIconSm        = LoadIcon(NULL, IDI_APPLICATION);

// Зарегестрируем класс
if (!RegisterClassEx(&windowsclass))
    return(0);

// Теперь когда класс зарегестрирован можно создать окно

if (!(hwnd = CreateWindowEx(NULL,              // стиль окна
                            "WINDOWSCLASS",    // класс
                            "Урок 1. Базовое Окно для DirectX ",    // название окна
                            WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                            300,150,               // левый верхний угол
                            500,400,           // ширина и высота
                            NULL,              // дескриптор родительского окна
                            NULL,              // дескриптор меню
                            hinstance,         // дескриптор экземпляра проложенния
                            NULL)))            // указатель на данные созданного окна
return(0);
     
     
        ShowWindow( hwnd, SW_SHOWDEFAULT );    //Нарисуем окно    
        UpdateWindow( hwnd );                  //Обновим окно    

while(GetMessage(&msg,NULL,0,0))
     {
     
     TranslateMessage(&msg);

     DispatchMessage(&msg);
     }


return(msg.wParam);

}
Пробую его откомпилить, и он не компилица.
Вот что выдает:
Код:
Linking...
WindowsBase.obj : error LNK2001: unresolved external symbol __imp__DefWindowProcA@16
WindowsBase.obj : error LNK2001: unresolved external symbol __imp__PostQuitMessage@4
WindowsBase.obj : error LNK2001: unresolved external symbol __imp__DispatchMessageA@4
WindowsBase.obj : error LNK2001: unresolved external symbol __imp__TranslateMessage@4
WindowsBase.obj : error LNK2001: unresolved external symbol __imp__GetMessageA@16
WindowsBase.obj : error LNK2001: unresolved external symbol __imp__UpdateWindow@4
WindowsBase.obj : error LNK2001: unresolved external symbol __imp__ShowWindow@8
WindowsBase.obj : error LNK2001: unresolved external symbol __imp__CreateWindowExA@48
WindowsBase.obj : error LNK2001: unresolved external symbol __imp__RegisterClassExA@4
WindowsBase.obj : error LNK2001: unresolved external symbol __imp__GetStockObject@4
WindowsBase.obj : error LNK2001: unresolved external symbol __imp__LoadCursorA@8
WindowsBase.obj : error LNK2001: unresolved external symbol __imp__LoadIconA@8
Debug/Urok1.exe : fatal error LNK1120: 12 unresolved externals
Error executing link.exe.

Urok1.exe - 13 error(s), 0 warning(s)

Дальше я создал проэкт, только уже не пустой, а простое приложение, с таким самым кодом.
Код:
// Uroc01.cpp : Defines the entry point for the application.
//

#include "stdafx.h"

//----------------------------------------------------------------------------------------
// &#212;&#243;&#237;&#234;&#246;&#232;&#255;
// MainWinProc()
// &#199;&#228;&#229;&#241;&#252; &#239;&#240;&#238;&#232;&#241;&#245;&#238;&#228;&#232;&#242; &#238;&#225;&#240;&#224;&#225;&#238;&#242;&#234;&#224; &#241;&#238;&#238;&#225;&#249;&#229;&#237;&#237;&#232;&#233;
//----------------------------------------------------------------------------------------
LRESULT CALLBACK MainWinProc(HWND hwnd,             //&#196;&#229;&#241;&#234;&#240;&#232;&#239;&#242;&#238;&#240; &#238;&#234;&#237;&#224;
                            UINT msg,               //&#232;&#228;&#229;&#237;&#242;&#229;&#244;&#232;&#234;&#224;&#242;&#238;&#240; &#241;&#238;&#238;&#225;&#249;&#229;&#237;&#232;&#229;  
                            WPARAM wparam,          //&#196;&#238;&#239;&#238;&#235;&#237;&#232;&#242;&#229;&#235;&#252;&#237;&#224;&#255; &#232;&#237;&#244;&#238;&#240;&#236;&#224;&#246;&#232;&#255;
                            LPARAM lparam)          //&#196;&#238;&#239;&#238;&#235;&#237;&#232;&#242;&#229;&#235;&#252;&#237;&#224;&#255; &#232;&#237;&#244;&#238;&#240;&#236;&#224;&#246;&#232;&#255;
{

switch(msg)
    {  
    case WM_PAINT:
         break;

    case WM_DESTROY:
        {
        PostQuitMessage(0);
        return(0);
        } break;
    }

return DefWindowProc(hwnd, msg, wparam, lparam);
}

//---------------------------------------------------------------------------------------
// &#212;&#243;&#237;&#234;&#246;&#232;&#255;
// WinMain()
// &#194;&#245;&#238;&#228;&#237;&#224;&#255; &#242;&#238;&#247;&#234;&#224; &#239;&#240;&#232;&#235;&#238;&#230;&#229;&#237;&#232;&#255;
//---------------------------------------------------------------------------------------
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
WNDCLASSEX windowsclass; // &#209;&#238;&#231;&#228;&#229;&#236; &#234;&#235;&#224;&#241;&#241;
HWND       hwnd;         // &#209;&#238;&#231;&#228;&#224;&#229;&#236; &#228;&#229;&#241;&#234;&#240;&#232;&#239;&#242;&#238;&#240; &#238;&#234;&#237;&#224;
MSG        msg;          // &#209;&#238;&#238;&#225;&#249;&#229;&#237;&#232;&#229;


// &#206;&#239;&#240;&#229;&#228;&#229;&#235;&#232;&#236; &#234;&#235;&#224;&#241;&#241; &#238;&#234;&#237;&#224; WNDCLASSEX
windowsclass.cbSize         = sizeof(WNDCLASSEX);
windowsclass.style          = CS_DBLCLKS | CS_OWNDC |
                              CS_HREDRAW | CS_VREDRAW;
windowsclass.lpfnWndProc    = MainWinProc;
windowsclass.cbClsExtra     = 0;
windowsclass.cbWndExtra     = 0;
windowsclass.hInstance      = hInstance;
windowsclass.hIcon          = LoadIcon(hInstance, IDI_APPLICATION);
windowsclass.hCursor        = LoadCursor(NULL, IDC_ARROW);
windowsclass.hbrBackground  = (HBRUSH)GetStockObject(GRAY_BRUSH);
windowsclass.lpszMenuName   = NULL;
windowsclass.lpszClassName  = "WINDOWSCLASS";
windowsclass.hIconSm        = LoadIcon(NULL, IDI_APPLICATION);

// &#208;&#229;&#227;&#232;&#241;&#242;&#240;&#232;&#240;&#243;&#229;&#236; &#234;&#235;&#224;&#241;&#241;
if (!RegisterClassEx(&windowsclass))
    return 0;

// &#209;&#238;&#231;&#228;&#224;&#229;&#236; &#238;&#234;&#237;&#238;

if (!(hwnd = CreateWindowEx(NULL,              // &#241;&#242;&#232;&#235;&#252; &#238;&#234;&#237;&#224;
                            "WINDOWSCLASS",    // &#234;&#235;&#224;&#241;&#241;
                            "&#211;&#240;&#238;&#234; 1. &#193;&#224;&#231;&#238;&#226;&#238;&#229; &#206;&#234;&#237;&#238; &#228;&#235;&#255; DirectX ",    // &#237;&#224;&#231;&#226;&#224;&#237;&#232;&#229; &#238;&#234;&#237;&#224;
                            WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                            300,150,               // &#235;&#229;&#226;&#251;&#233; &#226;&#229;&#240;&#245;&#237;&#232;&#233; &#243;&#227;&#238;&#235;
                            500,400,           // &#248;&#232;&#240;&#232;&#237;&#224; &#232; &#226;&#251;&#241;&#238;&#242;&#224;
                            NULL,              // &#228;&#229;&#241;&#234;&#240;&#232;&#239;&#242;&#238;&#240; &#240;&#238;&#228;&#232;&#242;&#229;&#235;&#252;&#241;&#234;&#238;&#227;&#238; &#238;&#234;&#237;&#224;
                            NULL,              // &#228;&#229;&#241;&#234;&#240;&#232;&#239;&#242;&#238;&#240; &#236;&#229;&#237;&#254;
                            hInstance,         // &#228;&#229;&#241;&#234;&#240;&#232;&#239;&#242;&#238;&#240; &#253;&#234;&#231;&#229;&#236;&#239;&#235;&#255;&#240;&#224; &#239;&#240;&#238;&#235;&#238;&#230;&#229;&#237;&#237;&#232;&#255;
                            NULL)))            // &#243;&#234;&#224;&#231;&#224;&#242;&#229;&#235;&#252; &#237;&#224; &#228;&#224;&#237;&#237;&#251;&#229; &#241;&#238;&#231;&#228;&#224;&#237;&#237;&#238;&#227;&#238; &#238;&#234;&#237;&#224;
return 0;

        ShowWindow(hwnd, SW_SHOWDEFAULT);    //&#205;&#224;&#240;&#232;&#241;&#243;&#229;&#236; &#238;&#234;&#237;&#238;    
        UpdateWindow(hwnd);                  //&#206;&#225;&#237;&#238;&#226;&#232;&#236; &#238;&#234;&#237;&#238;    

while(GetMessage(&msg, NULL, 0, 0)){
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}
return(msg.wParam);
}
также автоматически создался файл "StdAfx.cpp" и "StdAfx.h"
с таким содержанием
 
Код:
// stdafx.cpp : source file that includes just the standard includes
//  Uroc01.pch will be the pre-compiled header
//  stdafx.obj will contain the pre-compiled type information

#include "stdafx.h"
Код:
// stdafx.h : include file for standard system include files,
//  or project specific include files that are used frequently, but
//      are changed infrequently
//

#if !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
#define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#define WIN32_LEAN_AND_MEAN     // Exclude rarely-used stuff from Windows headers

#include <windows.h>


// TODO: reference additional headers your program requires here

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)

Все компилица и работае, хотя подключается тоже самое что подключал я в пустом проекте. Что я сделал не так и где? :confused:
257
21 марта 2007 года
kosfiz
1.6K / / 18.09.2005
[quote=CodeV]Что я сделал не так и где? [/quote]
Project->Settings->Link object/library modules: user32.lib gdi32.lib
если подобная ошибка вылазиет значит про какие-то либы забыл. в данном примере вроде этих двух достаточно.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог