Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Стандартное окно Window 
:(
    Опции темы
dizel003
Дата 17.2.2008, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 7.11.2007

Репутация: нет
Всего: нет



Вот написал стандартное окно под windows но он мне даёт непонятные ошибки... Вот программа

Код

#include<windows.h>
#include <windowsx.h>

LRESULT CALLBACK WindowsFunc(HWND,UINT,WPARAM,LPARAM);

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR IpszArgs,int nWinMode)
{
    char szWinName[]="MyWindow";
    char szTitle[]="Ìîÿ Ïðîãðàììà";
    MSG msg;

    WNDCLASS wc;


    ZeroMemory(&wc,sizeof(wc));

    wc.hInstance=hInstance;
    wc.lpszClassName=szWinName;
wc.lpfnWndProc=WindowFunc;
    wc.style=0;
    wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    wc.hCursor=LoadCursor(NULL,IDC_ARROW);
    wc.hbrBackground=GetStockBrush(WHITE_BRUSH);
    wc.lpszMenuName=NULL;
    wc.cbClsExtra=0;
    wc.cbWndExtra=0;

    if(!RegisterClass(&wc))
    {
        MessageBox(NULL,"Окно не регистрируется","Ошибка!",MB_OK);
        return 1;
    }

    HWND hwnd=CreateWindow(szWinName,szTitle,WS_OVERLAPPEDWINDOW,100,100,500,100,HWND_DESKTOP,NULL,hInstance,NULL);
    ShowWindow(hwnd,SW_SHOWNORMAL);

    while(GetMessage(&msg,NULL,0,0))
        DispatchMessage(&msg);
    return 0;
    {
        LRESULT CALLBACK WindowFunc(HWND hwnd,UINT message,WPARAM wParam,LPARAM IParam)
        {
            switch(massge)
            {
            case WM_DESTROY:
                PostQuitMessage (0);
                break;
            default:

                return DefWindowProc(hwnd,message,wParam,IParam);
            }
            return 0;
        }




Вот он мне даёт такие ошибки и все из за этой строки где мы должны определять оконную функцию - wc.lpfnWndProc=WindowFunc;

Compiling...
Proekt Word.cpp
C:\Program Files\Microsoft Visual Studio\MyProjects\Proekt Word\Proekt Word.cpp(19) : error C2065: 'WindowFunc' : undeclared identifier
C:\Program Files\Microsoft Visual Studio\MyProjects\Proekt Word\Proekt Word.cpp(19) : error C2440: '=' : cannot convert from 'int' to 'long (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)'
        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
C:\Program Files\Microsoft Visual Studio\MyProjects\Proekt Word\Proekt Word.cpp(42) : error C2373: 'WindowFunc' : redefinition; different type modifiers
C:\Program Files\Microsoft Visual Studio\MyProjects\Proekt Word\Proekt Word.cpp(42) : error C2601: 'WindowFunc' : local function definitions are illegal
C:\Program Files\Microsoft Visual Studio\MyProjects\Proekt Word\Proekt Word.cpp(54) : fatal error C1004: unexpected end of file found
Error executing cl.exe.

Proekt Word.exe - 5 error(s), 0 warning(s)

Если кто знает скажите как избавится от ошибок!
PM MAIL   Вверх
MAKCim
Дата 17.2.2008, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 1
Всего: 207



может так
Код

wc.lpfnWndProc=WindowsFunc;



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
dizel003
Дата 17.2.2008, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 7.11.2007

Репутация: нет
Всего: нет



5 ошибку устранил... я после ретурн открыл скобку а незакрыл! Щас попробую!

Добавлено @ 12:32
вот исправил но опять ошибки что это значит?

Код

#include<windows.h>
#include <windowsx.h>

LRESULT CALLBACK WindowsFunc(HWND,UINT,WPARAM,LPARAM);

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR IpszArgs,int nWinMode)
{
    char szWinName[]="MyWindow";
    char szTitle[]="Ìîÿ Ïðîãðàììà";
    MSG msg;

    WNDCLASS wc;


    ZeroMemory(&wc,sizeof(wc));

    wc.hInstance=hInstance;
    wc.lpszClassName=szWinName;
wc.lpfnWndProc=WindowsFunc;
    wc.style=0;
    wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    wc.hCursor=LoadCursor(NULL,IDC_ARROW);
    wc.hbrBackground=GetStockBrush(WHITE_BRUSH);
    wc.lpszMenuName=NULL;
    wc.cbClsExtra=0;
    wc.cbWndExtra=0;

    if(!RegisterClass(&wc))
    {
        MessageBox(NULL,"Окно не регистрируется","Ошибка!",MB_OK);
        return 1;
    }

    HWND hwnd=CreateWindow(szWinName,szTitle,WS_OVERLAPPEDWINDOW,100,100,500,100,HWND_DESKTOP,NULL,hInstance,NULL);
    ShowWindow(hwnd,SW_SHOWNORMAL);

    while(GetMessage(&msg,NULL,0,0))
        DispatchMessage(&msg);
    return 0;
}
        LRESULT CALLBACK WindowFunc(HWND hwnd,UINT message,WPARAM wParam,LPARAM IParam)
        {
            switch(message)
            {
            case WM_DESTROY:
                PostQuitMessage (0);
                break;
            default:

                return DefWindowProc(hwnd,message,wParam,IParam);
            }
            return 0;
        }


Linking...
Proekt Word.obj : error LNK2001: unresolved external symbol "long __stdcall WindowsFunc(struct HWND__ *,unsigned int,unsigned int,long)" (?WindowsFunc@@YGJPAUHWND__@@IIJ@Z)
Debug/Proekt Word.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

Proekt Word.exe - 2 error(s), 0 warning(s)
ВОТ ОШИБКИ!!!

Это сообщение отредактировал(а) dizel003 - 17.2.2008, 12:37
PM MAIL   Вверх
dizel003
Дата 17.2.2008, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 7.11.2007

Репутация: нет
Всего: нет



ВСЁ СПАСИБО БОЛЬШОЕ!!! Я ВСЕ ИСПРАВИЛ! smile 
PM MAIL   Вверх
dizel003
Дата 17.2.2008, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 7.11.2007

Репутация: нет
Всего: нет



Щас пишу дальше и стал делать меню!!! Но мне даёт какуюто ошибку подскажите пожалуста что за ошибка и как от неё избавится не как не получается!

C:\Program Files\Microsoft Visual Studio\MyProjects\Menu Programma\Menu Programma.cpp(5) : fatal error C1083: Cannot open include file: 'Menu.h': No such file or directory
Error executing cl.exe.


вот программа

Код

/*MENU*/
#include<windows.h>
#include <windowsx.h>
#include <stdio.h>
#include "Menu.h"

LRESULT CALLBACK WindowsFunc(HWND,UINT,WPARAM,LPARAM);

char str[10];
int X=1,Y=1;

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR IpszArgs,int nWinMode)
{
    char szWinName[]="MyWindow";
    char szTitle[]="1 Программа";
    MSG msg;

    WNDCLASS wc;


    ZeroMemory(&wc,sizeof(wc));

    wc.hInstance=hInstance;
    wc.lpszClassName=szWinName;
wc.lpfnWndProc=WindowsFunc;
    wc.style=0;
    wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    wc.hCursor=LoadCursor(NULL,IDC_ARROW);
    wc.hbrBackground=GetStockBrush(WHITE_BRUSH);
    wc.lpszMenuName="Mymenu";
    wc.cbClsExtra=0;
    wc.cbWndExtra=0;

    if(!RegisterClass(&wc))
    {
        MessageBox(NULL,"Окно не регистрируется","Ошибка!",MB_OK);
        return 1;
    }

    HWND hwnd=CreateWindow(szWinName,szTitle,WS_OVERLAPPEDWINDOW,100,100,500,100,HWND_DESKTOP,NULL,hInstance,NULL);
    ShowWindow(hwnd,SW_SHOWNORMAL);

    while(GetMessage(&msg,NULL,0,0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return 0;
}
        LRESULT CALLBACK WindowsFunc(HWND hwnd,UINT message,WPARAM wParam,LPARAM IParam)
        {
            int response;
            HDC hdc;
            PAINTSTRUCT paintstruct;
            switch(message)

            {
            case WM_CHAR:
                X=Y=1;
                sprintf (str,"%c",(char)wParam);
                InvalidateRect(hwnd,NULL,1);
                break;
            case WM_PAINT:
                hdc=BeginPaint(hwnd,&paintstruct);
                TextOut(hdc,X,Y,str,strlen(str));
                EndPaint(hwnd,&paintstruct);
                break;
           /* case WM_RBUTTONDOWN:
                strcpy(str,"Нажата правая кнопка");
                X=LOWORD (IParam);
                Y=HIWORD (IParam);
                InvalidateRect(hwnd,NULL,1);
                break;*/
            case WM_COMMAND:
                switch(LOWORD(wParam))
                {
                case IDM_ALPHA:
                    MessageBox(hwnd,"Альфа","",MB_OK);
                    break;
                case IDM_BETA:
                    MessageBox(hwnd,"Бета","",MB_OK);
                    break;
                case IDM_GAMMA:
                    MessageBox(hwnd,"Гамма","",MB_OK);
                    break;
                case IDM_EPSILON:
                    MessageBox(hwnd,"Эпсилон","",MB_OK);
                    break; 
                case IDM_THETA:
                    MessageBox(hwnd,"Tэта","",MB_OK);
                    break;
                case IDM_HELP:
                    MessageBox(hwnd,"Помощи пока нет","Помощь",MB_OK);
                    break;
                }
                break;
                case WM_RBUTTONDOWN:
                    response =MessageBox(hwnd,"Выберите действие","Правая кнопка",MB_ABORTRETRYIGNORE);
                    switch(response)
                    {
                    case IDABORT:
                        MessageBox(hwnd,"","Abort",MB_OK);
                        break;
                    case IDRETRY:
                        MessageBox(hwnd,"","Retry",MB_OK);
                        break;
                    case IDIGNORE:
                        MessageBox(hwnd,"","Ignore",MB_OK);
                        break;
                    }
                    break;

                    case WM_LBUTTONDOWN:
                        response=MessageBox(hwnd,"Продолжить?","Левая кнопка",MB_ICONHAND|MB_YESNO);
                        switch (response)
                        {
                        case IDYES:
                            MessageBox(hwnd,"Нажато","Yes",MB_OK);
                            break;
                        case IDNO:
                            MessageBox(hwnd,"Нажато","No",MB_OK);
                            break;
                        }
                        break;
                        case WM_DESTROY:
                            PostQuitMessage(0);
                            break;
            default:

                return DefWindowProc(hwnd,message,wParam,IParam);
            }
            return 0;
        }


Добавлено через 29 секунд
Что сделать чтобы он видел такую библиотеку smile 
PM MAIL   Вверх
dizel003
Дата 17.2.2008, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 7.11.2007

Репутация: нет
Всего: нет



Кажется я понял в чем дело но всеравно не знаю как это исправить! Нужно както определить переменные для меню... 
вот эти 
IDM_ALPHA:
 IDM_BETA:
 IDM_GAMMA:
  IDM_EPSILON:
   IDM_THETA:
 IDM_HELP:

PM MAIL   Вверх
Dronchik
Дата 17.2.2008, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Звукач ёмаё
**


Профиль
Группа: Участник
Сообщений: 451
Регистрация: 1.5.2007

Репутация: нет
Всего: 37



dizel003, учти на будущее. Один топик - один вопрос.

Цитата(dizel003 @  17.2.2008,  14:16 Найти цитируемый пост)
C:\Program Files\Microsoft Visual Studio\MyProjects\Menu Programma\Menu Programma.cpp(5) : fatal error C1083: Cannot open include file: 'Menu.h': No such file or directory
Error executing cl.exe.

Цитата(dizel003 @  17.2.2008,  14:16 Найти цитируемый пост)
Что сделать чтобы он видел такую библиотеку 

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



--------------------
Вместо слов делай дело, от которого ты фанатеешь. (с)

PM MAIL WWW ICQ   Вверх
dizel003
Дата 17.2.2008, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 7.11.2007

Репутация: нет
Всего: нет



Цитата(Dronchik @ 17.2.2008,  17:36)
dizel003, учти на будущее. Один топик - один вопрос.

Цитата(dizel003 @  17.2.2008,  14:16 Найти цитируемый пост)
C:\Program Files\Microsoft Visual Studio\MyProjects\Menu Programma\Menu Programma.cpp(5) : fatal error C1083: Cannot open include file: 'Menu.h': No such file or directory
Error executing cl.exe.

Цитата(dizel003 @  17.2.2008,  14:16 Найти цитируемый пост)
Что сделать чтобы он видел такую библиотеку 

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

Можешь пожалуста поподробнее объяснить как это сделать... я не разу это просто не делал! И не как не пойму что делать..
Что конкретно нужно прописывать в программе? smile 
PM MAIL   Вверх
Kanes
Дата 17.2.2008, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 11.3.2005

Репутация: нет
Всего: нет



Цитата(dizel003 @  17.2.2008,  17:44 Найти цитируемый пост)
Что конкретно нужно прописывать в программе?

Код

#include "menu.h"

Это в случаи, если этот файл лежит в папке проекта
Ну либо,
Код

#include "...\menu.h" //Где вместо точек полный путь к файлу menu.h

--------------------
Big gun - big future  
PM MAIL   Вверх
dizel003
Дата 17.2.2008, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 7.11.2007

Репутация: нет
Всего: нет



Цитата(Kanes @ 17.2.2008,  17:50)
Цитата(dizel003 @  17.2.2008,  17:44 Найти цитируемый пост)
Что конкретно нужно прописывать в программе?

Код

#include "menu.h"

Это в случаи, если этот файл лежит в папке проекта
Ну либо,
Код

#include "...\menu.h" //Где вместо точек полный путь к файлу menu.h

Тоесть нужно создать два документа с расшерением cpp в одной папке и там прописать все переменные!?
Тип-
#include "Menu.h"
MYMENU MENU
{
POPUP "Раз"
{
MENUITEM "Альфа", IDM_ALPHA
MENUITEM "Бета", IDM_BETA
}
POPUP "Два"
{
MENUITEM "Гамма", IDM_GAMMA
POPUP "Дельта"
{
MENUITEM "Эпсилон", IDM_EPSILON
}
MENUITEM "Тэта", IDM_THETA
}
MENUITEM "Помощь", IDM_HELP
}

Вот так написать или как-то ещё?
PM MAIL   Вверх
Djinn
Дата 17.2.2008, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

Репутация: нет
Всего: 1



ну например у тебя файл в c:\proect\menu.h
ты указываешь:
Код

#include "c:/proect/menu.h"


а если у тебя находиться файл в папке с файлом *.cpp который ты компилишь то er;b просто:
Код

#include "menu.cpp"


Добавлено через 50 секунд
P.S. я казываю обьратный слеши в пути... привык так ! а оно работает и в Windows и в *NIX
PM MAIL   Вверх
dizel003
Дата 17.2.2008, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 7.11.2007

Репутация: нет
Всего: нет



Не как не могу сделать!(( вот вся программа!
Пожалуста исправте и покажите как нужно это стделать на примере! smile 

Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  menu.rar 14,90 Kb
PM MAIL   Вверх
Djinn
Дата 17.2.2008, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

Репутация: нет
Всего: 1



а де Menu.h ?????? =/ или как... ?

Добавлено через 1 минуту и 35 секунд
както странно ты его инклудишь, а его нема smile
PM MAIL   Вверх
dizel003
Дата 17.2.2008, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 7.11.2007

Репутация: нет
Всего: нет



Цитата(Djinn @ 17.2.2008,  19:06)
а де Menu.h ?????? =/ или как... ?

Добавлено @ 19:07
както странно ты его инклудишь, а его нема smile

да я знаю что его нету... и прошу показать как его сделать!!!
PM MAIL   Вверх
Djinn
Дата 17.2.2008, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

Репутация: нет
Всего: 1



а что ты туда хочешь впихнуть ? просто пиши что хочешь потом подключай....

P.S. я сам тоже С++ учу, я например там ф-и и классы пишу smile

Это сообщение отредактировал(а) Djinn - 17.2.2008, 22:06
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1518 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.