Модераторы: 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   Вверх
HumanAPI
Дата 17.2.2008, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



dizel003

Меню у тебя нету потомучто оно должно быть описано в файле ресурса (файл с расширением .rc)
PM MAIL   Вверх
dizel003
Дата 17.2.2008, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Djinn @ 17.2.2008,  22:04)
а что ты туда хочешь впихнуть ? просто пиши что хочешь потом подключай....

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

я хочу сделать пример програмного меню... ( в окне windows чтобы было меню ). Написана программа но не работает и я НЕЗНАЮ!!! что нужно писать в файле куда будет обращаться "Menu.h" И прошу подсказать что именно там нужно писать  smile ... 
PM MAIL   Вверх
xvr
Дата 18.2.2008, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(dizel003 @ 17.2.2008,  22:16)
Цитата(Djinn @ 17.2.2008,  22:04)
а что ты туда хочешь впихнуть ? просто пиши что хочешь потом подключай....

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

я хочу сделать пример програмного меню... ( в окне windows чтобы было меню ). Написана программа но не работает и я НЕЗНАЮ!!! что нужно писать в файле куда будет обращаться "Menu.h" И прошу подсказать что именно там нужно писать  smile ...

Чтобы сделать меню в окне его сначала нужно сделать в программе  smile 
1) Добавляешь в проект файл ресурсов (опционально, VS сама заведет файл ресурсов, если ты начнешь их создавать)
2) Создаешь в нем меню (с именем MyMenu)
3) Добавляешь в меню пункты (с твоими ID)
4) VS сделает файл resorces.h с твоими ID, именно его и нужно включать инклюдом (вместо menu.h)

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


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


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

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



xvr, не 
Цитата(xvr @  18.2.2008,  12:11 Найти цитируемый пост)
 resorces.h

а resource.h

dizel003, я присоединил файл где прочитаешь про создание меню.


Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  Menu.rar 45,89 Kb


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

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


Бывалый
*


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

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



Цитата(xvr @ 18.2.2008,  12:11)
Чтобы сделать меню в окне его сначала нужно сделать в программе  smile 
1) Добавляешь в проект файл ресурсов (опционально, VS сама заведет файл ресурсов, если ты начнешь их создавать)
2) Создаешь в нем меню (с именем MyMenu)
3) Добавляешь в меню пункты (с твоими ID)
4) VS сделает файл resorces.h с твоими ID, именно его и нужно включать инклюдом (вместо menu.h)

Пожешь показать как сделать в проекте файл ресурсов...
PM MAIL   Вверх
Dronchik
Дата 18.2.2008, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



dizel003, нажимаешь в меню файл->новый, выбираешь resource script, пишешь имя и нажимаешь ок. Далее нажимаешь на папку Header files в VS правой кнопкой и выбираешь add files to folder. Выбираешь resource.h который автоматически появился. После этого вставляешь 
Код

#include "resource.h"

туда, где и стоит 
Код

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

чтоб получилось вот так:
Код

#include<windows.h>    
#include <windowsx.h>    
#include <stdio.h>    
#include "resource.h"

Далее нажимаешь на папку Resource files в VS правой кнопкой и выбираешь add files to folder.
Выбираешь resource.rc , вместо resource имя твоего ресурса. Далее нажимаешь ctrl+R? Выбираешь menu, после этого нажимаешь кнопку new. Далее добавляешь пункты в меню и сохраняешь.


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

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


Бывалый
*


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

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



Вот сделал пример... Тут ошибки! Но сделано в сущности так или нет?

Добавлено через 3 минуты и 35 секунд
Я создал в проекте в папке Resource Filуы описание переменных!

Это сообщение отредактировал(а) dizel003 - 18.2.2008, 20:01

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  Menu.rar 40,21 Kb
PM MAIL   Вверх
HumanAPI
Дата 18.2.2008, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



файл resourse.h

Код

#ifndef RESOURSE_H_
#define RESOURSE_H_

#define IDM_ALPHA  100
#define IDM_BETA  101
#define IDM_GAMMA 102
#define IDM_EPSILON 103
#define IDM_THETA 104
#define IDM_HELP 105

#endif


в файле resourse.rc пишиш

Код


#include "resourse.h"
MYMENU MENU
{
  POPUP "Раз"
   {
     MENUITEM "Альфа", IDM_ALPHA
     MENUITEM "Бета", IDM_BETA
   }
  POPUP "Два"
   {
     MENUITEM "Гамма", IDM_GAMMA
     POPUP "Дельта"
      {
       MENUITEM "Эпсилон", IDM_EPSILON
      }
     MENUITEM "Тэта", IDM_THETA
   }
  MENUITEM "Помощь", IDM_HELP
}


в файле Menu.cpp

добавляеш #include "resourse.h"
исправляеш  wc.lpszMenuName= "MYMENU";

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


Бывалый
*


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

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



Цитата(HumanAPI @ 18.2.2008,  20:30)
файл resourse.h

Код

#ifndef RESOURSE_H_
#define RESOURSE_H_

#define IDM_ALPHA  100
#define IDM_BETA  101
#define IDM_GAMMA 102
#define IDM_EPSILON 103
#define IDM_THETA 104
#define IDM_HELP 105

#endif


в файле resourse.rc пишиш

Код


#include "resourse.h"
MYMENU MENU
{
  POPUP "Раз"
   {
     MENUITEM "Альфа", IDM_ALPHA
     MENUITEM "Бета", IDM_BETA
   }
  POPUP "Два"
   {
     MENUITEM "Гамма", IDM_GAMMA
     POPUP "Дельта"
      {
       MENUITEM "Эпсилон", IDM_EPSILON
      }
     MENUITEM "Тэта", IDM_THETA
   }
  MENUITEM "Помощь", IDM_HELP
}


в файле Menu.cpp

добавляеш #include "resourse.h"
исправляеш  wc.lpszMenuName= "MYMENU";

Спасибо Большое! Последний вопрос эти два файла создавать в проекте в папке Resource Filу?
PM MAIL   Вверх
HumanAPI
Дата 18.2.2008, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Создавай там же где и Menu.cpp и не забудь подключить их к проекту.
PM MAIL   Вверх
dizel003
Дата 18.2.2008, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(HumanAPI @ 18.2.2008,  20:56)
Создавай там же где и Menu.cpp и не забудь подключить их к проекту.

Господи smile ... Как их туда подключить просто написать wc.IpszMenuName="MYMENU";?
PM MAIL   Вверх
dizel003
Дата 18.2.2008, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



И ещё создаю в проекте в тойже папке где и программа Source Files ва документа этих но при создании второго с названием resourse.rc появляется папка и не как не пойму как в ней добавить текст!
Но без этого файла работает но не показывает самого меню!)))

PM MAIL   Вверх
HumanAPI
Дата 18.2.2008, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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




Господи да не юзаю  я VC,  но там должен быть менеджер проекта древовидная структура с папками и файлами щелкаешь правой кнопкой мыши по названию проекта выбираешь Add files(или чтото подобное) и добавляешь нужный файл.    
PM MAIL   Вверх
dizel003
Дата 19.2.2008, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Если кто знает как всетаки создавать документ формата rc.
Я прочитал в книжке что нужно смоздать  в папке с программой текстовый документ и написать туда текст который приведён выше под названием resourse.rc... и сохранить с расшерением rc... и все должно заработать!!! Но у меня работает программа но не выводит самого меню вчем тут дело!?


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


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


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

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



Цитата(dizel003 @  19.2.2008,  07:43 Найти цитируемый пост)
Если кто знает как всетаки создавать документ формата rc.

Цитата(Dronchik @  18.2.2008,  17:27 Найти цитируемый пост)
файл->новый, выбираешь resource script, пишешь имя и нажимаешь ок. 





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

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


Бывалый
*


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

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



Подскажите что это за ошибки и как от них избавится

C:\Program Files\Microsoft Visual Studio\MyProjects\Panel Instrumentov\Panel Instrumentov.cpp(52) : error C2065: 'InitToolBar' : undeclared identifier
C:\Program Files\Microsoft Visual Studio\MyProjects\Panel Instrumentov\Panel Instrumentov.cpp(54) : error C2065: 'IDTB_BMP' : undeclared identifier
C:\Program Files\Microsoft Visual Studio\MyProjects\Panel Instrumentov\Panel Instrumentov.cpp(196) : error C2065: 'paintstruct' : undeclared identifier

Добавлено через 11 минут и 46 секунд
Особенно хочется исправить вторую ошибку!!! Она в элементах управления!
Вот она
tbwnd=CreateToolbarEx(hwnd,WS_VISIBLE|WS_CHILD|WS_BORDER,ID_TOOLBAR,NUMBUTTONS,hInstance,IDTB_BMP,tbButtons,NUMBUTTONS,0,0,16,16,sizeof(TBBUTTON));

PM MAIL   Вверх
Kanes
Дата 19.2.2008, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



dizel003, а что такое IDTB_BMP?
Если сам писал, можно описание?
--------------------
Big gun - big future  
PM MAIL   Вверх
dizel003
Дата 19.2.2008, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Чесно скажу писал не сам! С книги... И не могу спросить в институе поскольку покачто нету этого предмета! онанаписана  в Создании главного окна а точнее в общих элементах управления!

Есть вариант что эта надпись неправильна! Учебник может грешить smile 
PM MAIL   Вверх
HumanAPI
Дата 19.2.2008, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Идентификатор битового массива ресурса. (по крайней мере должен им быть).

Читай справку по WinAPI
PM MAIL   Вверх
dizel003
Дата 19.2.2008, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(HumanAPI @ 19.2.2008,  20:21)
Идентификатор битового массива ресурса. (по крайней мере должен им быть).

Читай справку по WinAPI

Ну тогда почему ошибка на него?

Добавлено через 16 секунд
Буду читать!
PM MAIL   Вверх
Dronchik
Дата 20.2.2008, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



dizel003, учи английский. Все три ошибки говорят о том что не объявлен идентификатор. 
Цитата(dizel003 @  19.2.2008,  19:08 Найти цитируемый пост)
C:\Program Files\Microsoft Visual Studio\MyProjects\Panel Instrumentov\Panel Instrumentov.cpp(52) : error C2065: 'InitToolBar' : undeclared identifier
C:\Program Files\Microsoft Visual Studio\MyProjects\Panel Instrumentov\Panel Instrumentov.cpp(54) : error C2065: 'IDTB_BMP' : undeclared identifier
C:\Program Files\Microsoft Visual Studio\MyProjects\Panel Instrumentov\Panel Instrumentov.cpp(196) : error C2065: 'paintstruct' : undeclared identifier

эти числа говорят о том, в какой строчке ошибка. Исправить ошибки ты можешь, если объявишь идентификаторы. Hапример, последнюю ошибку ты можешь исправить добавлением в код, перед началом использования переменной paintstruct строчки
Код

PAINTSTRUCT paintstruct;

и также с другими идентификаторами.


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

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


Бывалый
*


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

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



Да да спасибо!

PM MAIL   Вверх
NiCketT
  Дата 19.7.2008, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Чето я запутался. Не работает wc.hbrBackground=GreateSolidBrush(RGB(0,160,0)); (ошибка 'GreateSolidBrush': identifier not found). Да и консольное окно чет никуда не исчезает  smile 
Код

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

 LRESULT CALLBACK WinProc(HWND, UINT, WPARAM, LPARAM); //оконная функция для обработки событий окна


const char clName[]="MyWindows"; //имя класса окна

int WINAPI WinMain(HINSTANCE hThisInstance /* дескриптор приложения */,
    HINSTANCE, LPSTR cmdLine, int showStyle /* режим показа окна */)

{
    //создадим класс окна
    WNDCLASSEX wc;
    ZeroMemory(&wc, sizeof(wc));
    wc.hInstance=hThisInstance; //дескриптор приложения
    wc.lpszClassName=clName; //имя класса
    wc.lpfnWndProc=WinProc; //функция обработки событий
    wc.cbSize = sizeof(WNDCLASSEX);

    wc.style=CS_DBLCLKS|CS_VREDRAW|CS_VREDRAW; //разрешаем автоматическую перерисовку и обработку щелчков
    wc.hIcon=LoadIcon(NULL, IDI_APPLICATION); //устанавливаем иконку Windows
    wc.hCursor=LoadCursor(NULL, IDC_ARROW); //устанавливаем иконку Windows
    wc.hbrBackground=GreateSolidBrush(RGB(0,160,0)); //зеленый

    if(!RegisterClassEx(&wc)) return 0; //регестрируем класс
    cout<<"Window class registered."<<endl;

    //Создаем первое окно
    HWND main_window=CreateWindow( clName, "Главное окно", /*имя класса и заголовок */
                            WS_OVERLAPPEDWINDOW, 10, 10, 544, 375, /* стиль окна, позиция и размеры */
                            HWND_DESKTOP, NULL /* No menu */, hThisInstance, NULL
                           );
    cout<<"Main window created."<<endl;
    ShowWindow(main_window, showStyle);


    //обработка сообщений
    MSG msg; //Here messages to the application are saved
    while(GetMessage(&msg, NULL, 0, 0))
    {
         TranslateMessage(&msg); //Translate virtual-key messages into character messages
         DispatchMessage(&msg); //Send message to WindowProcedure
    };
};


////////////////////////////////////////////////////////////////////////////////

/* This function is called by the Windows function DispatchMessage( ) */
LRESULT CALLBACK WinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
           case WM_DESTROY:
                PostQuitMessage(0);
           break;
           default:
                 return DefWindowProc(hwnd, message, wParam, lParam); //обработка поумолчанию
    };

    return 0;
}

PM MAIL   Вверх
Dem_max
Дата 19.7.2008, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

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



Цитата

Да и консольное окно чет никуда не исчезает

а ты сам активизировал консоль вот этим "cout<<"Window class registered."<<endl;"


попробуй так 
Код

 = CreateSolidBrush(GetSysColor(COLOR_MENU));



--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
NiCketT
Дата 20.7.2008, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Dem_max @  19.7.2008,  20:55 Найти цитируемый пост)
попробуй так код C++1: = CreateSolidBrush(GetSysColor(COLOR_MENU));

то же самое. Может какубто библиотеку нужно было подключить?

PM MAIL   Вверх
Dem_max
Дата 20.7.2008, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

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



попробуй подключи
#include <wingdi.h>


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
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.

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


 




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


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

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