Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Стандартное окно Window


Автор: dizel003 17.2.2008, 12:07
Вот написал стандартное окно под 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)

Если кто знает скажите как избавится от ошибок!

Автор: MAKCim 17.2.2008, 12:20
может так
Код

wc.lpfnWndProc=WindowsFunc;

Автор: dizel003 17.2.2008, 12:24
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:41
ВСЁ СПАСИБО БОЛЬШОЕ!!! Я ВСЕ ИСПРАВИЛ! smile 

Автор: 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.


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

Код

/*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 

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

Автор: 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 Найти цитируемый пост)
Что сделать чтобы он видел такую библиотеку 

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

Автор: dizel003 17.2.2008, 17:44
Цитата(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 

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

Код

#include "menu.h"

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

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

Автор: dizel003 17.2.2008, 18:00
Цитата(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
}

Вот так написать или как-то ещё?

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

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


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

#include "menu.cpp"


Добавлено через 50 секунд
P.S. я казываю обьратный слеши в пути... привык так ! а оно работает и в Windows и в *NIX

Автор: dizel003 17.2.2008, 18:54
Не как не могу сделать!(( вот вся программа!
Пожалуста исправте и покажите как нужно это стделать на примере! smile 

Автор: Djinn 17.2.2008, 19:06
а де Menu.h ?????? =/ или как... ?

Добавлено через 1 минуту и 35 секунд
както странно ты его инклудишь, а его нема smile

Автор: dizel003 17.2.2008, 19:22
Цитата(Djinn @ 17.2.2008,  19:06)
а де Menu.h ?????? =/ или как... ?

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

да я знаю что его нету... и прошу показать как его сделать!!!

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

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

Автор: HumanAPI 17.2.2008, 22:16
dizel003

Меню у тебя нету потомучто оно должно быть описано в файле ресурса (файл с расширением .rc)

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

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

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

Автор: xvr 18.2.2008, 12:11
Цитата(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)

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

а resource.h

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

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

Пожешь показать как сделать в проекте файл ресурсов...

Автор: Dronchik 18.2.2008, 17:27
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. Далее добавляешь пункты в меню и сохраняешь.

Автор: dizel003 18.2.2008, 20:00
Вот сделал пример... Тут ошибки! Но сделано в сущности так или нет?

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

Автор: 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";

Автор: dizel003 18.2.2008, 20:39
Цитата(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у?

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

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

Господи smile ... Как их туда подключить просто написать wc.IpszMenuName="MYMENU";?

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

Автор: HumanAPI 18.2.2008, 21:45

Господи да не юзаю  я VC,  но там должен быть менеджер проекта древовидная структура с папками и файлами щелкаешь правой кнопкой мыши по названию проекта выбираешь Add files(или чтото подобное) и добавляешь нужный файл.    

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


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

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



Автор: 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

Добавлено через 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));

Автор: Kanes 19.2.2008, 19:46
dizel003, а что такое IDTB_BMP?
Если сам писал, можно описание?

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

Есть вариант что эта надпись неправильна! Учебник может грешить smile 

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

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

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

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

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

Добавлено через 16 секунд
Буду читать!

Автор: Dronchik 20.2.2008, 11:36
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;

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

Автор: dizel003 20.2.2008, 22:42
Да да спасибо!

Автор: NiCketT 19.7.2008, 18:28
Чето я запутался. Не работает 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;
}

Автор: Dem_max 19.7.2008, 20:55
Цитата

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

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


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

 = CreateSolidBrush(GetSysColor(COLOR_MENU));

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

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

Автор: Dem_max 20.7.2008, 14:50
попробуй подключи
#include <wingdi.h>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)