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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> LoadImage(); НЕ РАБОТАЕТ :(!!!!!!!! Помогите прописать! :( 
V
    Опции темы
Marisha1989
Дата 5.11.2008, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день помогите пожалуйста, не работает загрузка картинок LoadImage();

Код

//---------------------------------------------------------------------------

#include <windows.h>
#pragma hdrstop
#pragma argsused
#define ID_EDIT 1001
#define ID_BUTTON 1002
#define ID_LABEL 1003
#define CM_FILE_NEW 1004

//---------------------------------------------------------------------------

LRESULT CALLBACK WndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM IParam);
HINSTANCE hInstance;
LPCTSTR lpszClassName="Game";
char szTitle[]="Добро пожаловать в игру,       ";
char szMenu[]="Меню";

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
HWND hWnd;
HWND hWndtwo;
WNDCLASSEX wndcl;
WNDCLASSEX two;

wndcl.style=CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS;
wndcl.lpfnWndProc=(WNDPROC) WndProc;
wndcl.cbClsExtra = 0;
wndcl.cbWndExtra = 0;
wndcl.hInstance = hInstance;
wndcl.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wndcl.hCursor = LoadCursor(NULL, IDC_ARROW);
wndcl.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wndcl.lpszMenuName = NULL;
wndcl.lpszClassName = lpszClassName;
wndcl.cbSize = sizeof (WNDCLASSEX);
wndcl.hIconSm=0;
wndcl.lpszMenuName=NULL;

if(!RegisterClassEx (&wndcl))
return (FALSE);

hWnd = CreateWindow(lpszClassName, "First", WS_OVERLAPPEDWINDOW,
                   CW_USEDEFAULT, 0, CW_USEDEFAULT,0,
                   NULL,NULL, hInstance, NULL);
if (!hWnd)
return (FALSE);
ShowWindow (hWnd, nCmdShow);
UpdateWindow(hWnd);

while (GetMessage(&msg, 0,0,0))
{
TranslateMessage (&msg);
DispatchMessage(&msg);
 }
return(msg.wParam);
}



LRESULT CALLBACK WndProc (HWND hWnd,UINT uMsg, WPARAM wParam, LPARAM IParam)
{
LPCTSTR lpText;
LPCTSTR lpCaption;
HDC hdc;
RECT rect;
HWND hWndtwo;
static HWND hEdit, hButton, hLabel;
char chBuff[50];
HANDLE hImage1;
BITMAP bm1;


switch(uMsg)
{

case WM_PAINT:
{
 PAINTSTRUCT ps;
 HDC hdc= BeginPaint(hWnd,&ps);
 hImage1=LoadImage(NULL,"1.BMP", IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_LOADTRANSPARENT);
 SelectObject(hWnd, hImage1);







 GetClientRect(hWnd,&rect);
 EndPaint(hWnd,&ps);
return 0;
}
case WM_CREATE:
{












 hLabel=CreateWindow("static","Введите имя:",WS_CHILD|WS_VISIBLE|WS_BORDER|ES_LEFT,330,279,300,30,\
                    hWnd,(HMENU)ID_LABEL,hInstance,NULL);

 hEdit=CreateWindow("edit",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER|ES_LEFT,330,300,300,20,\
                    hWnd,(HMENU)ID_EDIT,hInstance,NULL);


 hButton=CreateWindow("button","OK",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,330,320,300,30,
                      hWnd,(HMENU)ID_BUTTON,hInstance,NULL);









return 0;
}

case WM_COMMAND:
{
switch(LOWORD(wParam))
{

case ID_EDIT:
{
if ((HIWORD(wParam))==EN_ERRSPACE){
MessageBox(hWnd,"Мало памяти",szTitle,MB_OK);}
return 0;
}

case ID_BUTTON:
{
DestroyWindow(hLabel);
DestroyWindow(hEdit);
DestroyWindow(hButton);

HMENU hMenu;
HMENU hSubMenu1,hSubMenu2,hSubMenu3;
MENUINFO mi;
MENUITEMINFO mii;
hMenu = CreateMenu();
            mi.cbSize = sizeof(MENUINFO);
            mi.fMask = MIM_STYLE;
            mi.dwStyle = MNS_NOTIFYBYPOS;
            SetMenuInfo(hMenu, &mi);

            hSubMenu1 = CreatePopupMenu();
            mi.cbSize = sizeof(MENUINFO);
            mi.fMask = MIM_STYLE;
            mi.dwStyle = MNS_NOTIFYBYPOS;
            SetMenuInfo(hSubMenu1, &mi);

            mii.cbSize = sizeof(MENUITEMINFO);
            mii.fMask = MIIM_STRING | MIIM_SUBMENU | MIIM_FTYPE;
            mii.fType = MFT_STRING;
            mii.dwTypeData = "File";
            mii.hSubMenu = hSubMenu1; 
            InsertMenuItem(hMenu, 11, false, &mii);

            mii.cbSize = sizeof(MENUITEMINFO);
            mii.fMask = MIIM_STRING | MIIM_FTYPE;
            mii.fType = MFT_STRING;
            mii.dwTypeData = "New Game";
            InsertMenuItem(hSubMenu1, 22, false, &mii);

            hSubMenu3 = CreatePopupMenu();
            mi.cbSize = sizeof(MENUINFO);
            mi.fMask = MIM_STYLE;
            mi.dwStyle = MNS_NOTIFYBYPOS;
            SetMenuInfo(hSubMenu3, &mi);

            hSubMenu2 = CreatePopupMenu();
            mi.cbSize = sizeof(MENUINFO);
            mi.fMask = MIM_STYLE;
            mi.dwStyle = MNS_NOTIFYBYPOS;
            SetMenuInfo(hSubMenu1, &mi);

            mii.cbSize = sizeof(MENUITEMINFO);
            mii.fMask = MIIM_STRING | MIIM_SUBMENU | MIIM_FTYPE;
            mii.fType = MFT_STRING;
            mii.dwTypeData = "HELP";
            mii.hSubMenu = hSubMenu2;
            InsertMenuItem(hMenu, 55, false, &mii);

            mii.cbSize = sizeof(MENUITEMINFO);
            mii.fMask = MIIM_STRING | MIIM_FTYPE;
            mii.fType = MFT_STRING;
            mii.dwTypeData = "Help";
            InsertMenuItem(hSubMenu2, 66, false, &mii);

            mii.cbSize = sizeof(MENUITEMINFO);
            mii.fMask = MIIM_STRING | MIIM_FTYPE;
            mii.fType = MFT_STRING;
            mii.dwTypeData = "About...";
            InsertMenuItem(hSubMenu2, 77, false, &mii);

            mii.cbSize = sizeof(MENUITEMINFO);
            mii.fMask = MIIM_STRING | MIIM_SUBMENU | MIIM_FTYPE;
            mii.fType = MFT_STRING;
            mii.dwTypeData = "Exit";
            mii.hSubMenu = hSubMenu3;
            InsertMenuItem(hMenu, 55, false, &mii);


            SetMenu(hWnd, hMenu);
            DrawMenuBar(hWnd);









return 0;
}
}
}
 case WM_MENUCOMMAND:
{


        break;
}

case WM_DESTROY:
{
        PostQuitMessage(0);
        break;
}
default:
        return(DefWindowProc(hWnd, uMsg, wParam, IParam));
}
return (0L);
}







Посмотрите пожалуйста, как можна исправить? компилица без ошибок! но не выводит:(
картинка в той е папке, что и прога .
PM MAIL   Вверх
BorisVorontsov
Дата 5.11.2008, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

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



Цитата(Marisha1989 @  5.11.2008,  11:52 Найти цитируемый пост)
SelectObject(hWnd, hImage1);


Жестоко... Выбирают в hDC, а не hWnd.


--------------------
[code=cpp]
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;
[/code]
PM MAIL ICQ GTalk   Вверх
Marisha1989
Дата 6.11.2008, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Оно всеравно не работает:( smile помогите пожалуйста! как исправить???? smile  smile  smile 
PM MAIL   Вверх
586
Дата 7.11.2008, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Код
#include <windows.h>

#pragma hdrstop
#pragma argsused

#define ID_EDIT 1001
#define ID_BUTTON 1002
#define ID_LABEL 1003
#define CM_FILE_NEW 1004

LRESULT CALLBACK WndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM IParam);

HINSTANCE hInstance;

LPCTSTR lpszClassName = TEXT("Game");     // не путайте LPCTSTR и LPCSTR
char szTitle[]="Добро пожаловать в игру,       ";
char szMenu[]="Меню";

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    MSG msg;
    HWND hWnd;
    HWND hWndtwo;
    WNDCLASSEX wndcl;
    WNDCLASSEX two;

    wndcl.style=CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS;
    wndcl.lpfnWndProc=(WNDPROC) WndProc;
    wndcl.cbClsExtra = 0;
    wndcl.cbWndExtra = 0;
    wndcl.hInstance = hInstance;
    wndcl.hIcon = LoadIcon(NULL,IDI_APPLICATION);
    wndcl.hCursor = LoadCursor(NULL, IDC_ARROW);
    wndcl.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wndcl.lpszMenuName = NULL;
    wndcl.lpszClassName = lpszClassName;
    wndcl.cbSize = sizeof (WNDCLASSEX);
    wndcl.hIconSm=0;
    wndcl.lpszMenuName=NULL;

    if(!RegisterClassEx (&wndcl))
       return (FALSE);

    hWnd = CreateWindow(lpszClassName, "First", WS_OVERLAPPEDWINDOW,
                       CW_USEDEFAULT, 0, CW_USEDEFAULT,0,
                       NULL,NULL, hInstance, NULL);
    if (!hWnd)
        return (FALSE);

    ShowWindow (hWnd, nCmdShow);
    UpdateWindow(hWnd);

    while (GetMessage(&msg, 0,0,0))
    {
        TranslateMessage (&msg);
        DispatchMessage(&msg);
    }

    return msg.wParam;
}
LRESULT CALLBACK WndProc (HWND hWnd,UINT uMsg, WPARAM wParam, LPARAM IParam)
{
    LPCTSTR lpText;
    LPCTSTR lpCaption;
    HDC hdc;
    RECT rect;
    HWND hWndtwo;
    static HWND hEdit, hButton, hLabel;
    char chBuff[50];
    static HANDLE hImage1;
    BITMAP bm1;

    switch(uMsg)
    {
    case WM_PAINT:
    {
        PAINTSTRUCT ps;
        BITMAP bm;

        hdc = BeginPaint(hWnd,&ps);

        HDC hdcMem = CreateCompatibleDC(ps.hdc);
        HBITMAP hbmOld = SelectObject(hdcMem, hImage1);

        GetObject(hImage1, sizeof(bm), &bm);        // определяем размеры рисунка

        BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, SRCCOPY);
          //GetClientRect(hWnd, &rect);
          //StretchBlt(hdc, 0, 0, rect.right, rect.bottom, hdcMem, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY);

        SelectObject(hdcMem, hbmOld);
        DeleteDC(hdcMem);

        EndPaint(hWnd,&ps);
        return 0;
    }
    case WM_CREATE:
    {
        hLabel=CreateWindow("static","Введите имя:",WS_CHILD|WS_VISIBLE|WS_BORDER|ES_LEFT,330,279,300,30,\
                        hWnd,(HMENU)ID_LABEL,hInstance,NULL);
        hEdit=CreateWindow("edit",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER|ES_LEFT,330,300,300,20,\
                        hWnd,(HMENU)ID_EDIT,hInstance,NULL);
        hButton=CreateWindow("button","OK",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,330,320,300,30,
                          hWnd,(HMENU)ID_BUTTON,hInstance,NULL);

        hImage1=LoadImage(NULL,"C:\\debug.BMP", IMAGE_BITMAP,0,0,LR_LOADFROMFILE/*|LR_LOADTRANSPARENT*/); // вам этот флаг нужен?
        return 0;
    }
    case WM_COMMAND:
    {
        switch(LOWORD(wParam))
        {
        case ID_EDIT:
        {
            if ((HIWORD(wParam))==EN_ERRSPACE){
            MessageBox(hWnd,"Мало памяти",szTitle,MB_OK);}
            return 0;
        }
        case ID_BUTTON:
        {
            DestroyWindow(hLabel);
            DestroyWindow(hEdit);
            DestroyWindow(hButton);
            HMENU hMenu;
            HMENU hSubMenu1,hSubMenu2,hSubMenu3;
            MENUINFO mi;
            MENUITEMINFO mii;
            hMenu = CreateMenu();

            mi.cbSize = sizeof(MENUINFO);
            mi.fMask = MIM_STYLE;
            mi.dwStyle = MNS_NOTIFYBYPOS;
            SetMenuInfo(hMenu, &mi);

            hSubMenu1 = CreatePopupMenu();

            mi.cbSize = sizeof(MENUINFO);
            mi.fMask = MIM_STYLE;
            mi.dwStyle = MNS_NOTIFYBYPOS;
            SetMenuInfo(hSubMenu1, &mi);

            mii.cbSize = sizeof(MENUITEMINFO);
            mii.fMask = MIIM_STRING | MIIM_SUBMENU | MIIM_FTYPE;
            mii.fType = MFT_STRING;
            mii.dwTypeData = "File";
            mii.hSubMenu = hSubMenu1;
            InsertMenuItem(hMenu, 11, false, &mii);

            mii.cbSize = sizeof(MENUITEMINFO);
            mii.fMask = MIIM_STRING | MIIM_FTYPE;
            mii.fType = MFT_STRING;
            mii.dwTypeData = "New Game";
            InsertMenuItem(hSubMenu1, 22, false, &mii);

            hSubMenu3 = CreatePopupMenu();
            mi.cbSize = sizeof(MENUINFO);
            mi.fMask = MIM_STYLE;
            mi.dwStyle = MNS_NOTIFYBYPOS;
            SetMenuInfo(hSubMenu3, &mi);

            hSubMenu2 = CreatePopupMenu();
            mi.cbSize = sizeof(MENUINFO);
            mi.fMask = MIM_STYLE;
            mi.dwStyle = MNS_NOTIFYBYPOS;
            SetMenuInfo(hSubMenu1, &mi);

            mii.cbSize = sizeof(MENUITEMINFO);
            mii.fMask = MIIM_STRING | MIIM_SUBMENU | MIIM_FTYPE;
            mii.fType = MFT_STRING;
            mii.dwTypeData = "HELP";
            mii.hSubMenu = hSubMenu2;
            InsertMenuItem(hMenu, 55, false, &mii);

            mii.cbSize = sizeof(MENUITEMINFO);
            mii.fMask = MIIM_STRING | MIIM_FTYPE;
            mii.fType = MFT_STRING;
            mii.dwTypeData = "Help";
            InsertMenuItem(hSubMenu2, 66, false, &mii);

            mii.cbSize = sizeof(MENUITEMINFO);
            mii.fMask = MIIM_STRING | MIIM_FTYPE;
            mii.fType = MFT_STRING;
            mii.dwTypeData = "About...";
            InsertMenuItem(hSubMenu2, 77, false, &mii);

            mii.cbSize = sizeof(MENUITEMINFO);
            mii.fMask = MIIM_STRING | MIIM_SUBMENU | MIIM_FTYPE;
            mii.fType = MFT_STRING;
            mii.dwTypeData = "Exit";
            mii.hSubMenu = hSubMenu3;
            InsertMenuItem(hMenu, 55, false, &mii);

            SetMenu(hWnd, hMenu);
            DrawMenuBar(hWnd);
            return 0;
        }   // ID_BUTTON
        }   // switch
    }    // WM_COMMAND

    case WM_MENUCOMMAND:
    {
        break;
    }

    case WM_DESTROY:
    {
        DeleteObject((HGDIOBJ)hImage1);
        PostQuitMessage(0);
        break;
    }

    default:
            return DefWindowProc(hWnd, uMsg, wParam, IParam);
    }
    return 0L;
}

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


Новичок



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

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



Пасибо Вам огромное!!!!!!!!!!!!!!!!!!! smile  smile  smile  smile 
PM MAIL   Вверх
Marisha1989
Дата 8.11.2008, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



 smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0522 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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