Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: окно WS_EX_TRANSPARENT использование TextOut(hDC,0,0,"Return",6)  (Прочитано 9087 раз)
0 Пользователей и 1 Гость смотрят эту тему.
LightSin
The question title sounds to me the same as "Convert banana into a pistol"... :-)
Постоялец

ru
Offline Offline
id/fm105


« : 11-04-2010 10:36 » 

Текст выводится на форме, но форма исчезает вместе с текстом (становится прозрачной)/
Вот код, компилирую.
Как решить данную проблему?! Меня одолевают смутные сомнения
Код:
#include <windows.h>
 

/*  Declare Windows procedure  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

/*  Make the class name into a global variable  */
char szClassName[ ] = "WindowsDesktopMenu";

int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)

{    
    
    HWND hwnd;               /* This is the handle for our window */
    MSG messages;            /* Here messages to the application are saved */
    WNDCLASSEX wincl;        /* Data structure for the windowclass */

    /* The Window structure */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
    wincl.style = CS_OWNDC|CS_DBLCLKS;                 /* Catch double-clicks */
    wincl.cbSize = sizeof (WNDCLASSEX);

    /* Use default icon and mouse-pointer */
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                 /* No menu */
    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
    wincl.cbWndExtra = 0;                      /* structure or the window instance */
    /* Use Windows's default color as the background of the window */
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

    /* Register the window class, and if it fails quit the program */
    if (!RegisterClassEx (&wincl))
        return 0;

    /* The class is registered, let's create the program*/
    hwnd = CreateWindowEx (
            WS_EX_TRANSPARENT|WS_EX_NOACTIVATE,                   /* Extended possibilites for variation */
           szClassName,         /* Classname */
           "Windows Menu",       /* Title Text */
           WS_POPUP,           /* default window */
           100,       /* Windows decides the position */
           200,       /* where the window ends up on the screen */
           200,                 /* The programs width */
           360,                 /* and height in pixels */
           HWND_DESKTOP,        /* The window is a child-window to desktop */
           NULL,                /* No menu */
           hThisInstance,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );

    /* Make the window visible on the screen */
    ShowWindow (hwnd, SW_SHOWNA);

    /* Run the message loop. It will run until GetMessage() returns 0 */
    while (GetMessage (&messages, NULL, 0, 0))
    {
        /* Translate virtual-key messages into character messages */
        TranslateMessage(&messages);
        /* Send message to WindowProcedure */
        DispatchMessage(&messages);
    }

    /* The program return-value is 0 - The value that PostQuitMessage() gave */
    return messages.wParam;
}


/*  This function is called by the Windows function DispatchMessage()  */

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{  static char WayDirect[80];
      
    switch (message)                  /* handle the messages */
    {    HDC hDC;
   PAINTSTRUCT ps;  
        case WM_PAINT:
             hDC = BeginPaint(hwnd, &ps);
             TextOut(hDC,0,0,"Return",6);
             EndPaint(hwnd,&ps);
             MessageBeep(MB_ICONASTERISK);  
             break;
        case WM_DESTROY:
            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
            break;
        default:                      /* for messages that we don't deal with */
            return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}
« Последнее редактирование: 11-04-2010 10:55 от Sel » Записан

Lost in the jungle: 1c, PIC AVR, C++, Python flask, (no Java) JS . for fun: Live For Speed S2 Drift Edition, TeeWorlds
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #1 : 11-04-2010 12:24 » 

А в чем проблема? В том что выводится или что форма становится прозрачной?
Чего ты хочешь достичь?
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
LightSin
The question title sounds to me the same as "Convert banana into a pistol"... :-)
Постоялец

ru
Offline Offline
id/fm105


« Ответ #2 : 11-04-2010 18:26 » 

Цитата
А в чем проблема?
Проблема в том что Форма(окно программы) становится прозрачным вместе с текстом( текст на форме появляется)
нужен Текст каторый будет парить на экране в каком то смысле)) (без формы) Меня одолевают смутные сомнения
Записан

Lost in the jungle: 1c, PIC AVR, C++, Python flask, (no Java) JS . for fun: Live For Speed S2 Drift Edition, TeeWorlds
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 12-04-2010 03:20 » 

LightSin, посмотри функцию SetLayeredWindowAttributes


тебе нужно задать ключ, скажем белый цвет, и фон диалога красить в белый цвет. (Фон же статиков надо делать прозрачным - это попозже увидишь)

SetLayeredWindowAttributes(h,RGB(255,255,255),0,LWA_COLORKEY);
Записан

LightSin
The question title sounds to me the same as "Convert banana into a pistol"... :-)
Постоялец

ru
Offline Offline
id/fm105


« Ответ #4 : 12-04-2010 19:32 » 

Вот сделал так,Но есть проблема окно  не перерисовывается собщение WM_PAINT не шлется
пробовал по таймеру слать один эффект.......
 есть функция UpdateLayeredWindow может ее использовать хм

Цитата
Фон же статиков надо делать прозрачным
статиков? эт TextOut(hDC,0,0,"Retdurn",6);  SetBkMode(hDC,TRANSPARENT);? хммм? зачем хммм


Код ниже отличия от обычного ........

 WS_EX_LAYERED|WS_EX_NOACTIVATE ,

wincl.hbrBackground = (HBRUSH) WHITE_BRUSH;

SetLayeredWindowAttributes(hwnd,WHITE_BRUSH,0,LWA_COLORKEY);

case WM_PAINT:
          hDC = BeginPaint(hwnd, &ps);
          SetBkColor(hDC,RGB(70,14,230));

          e=!e;
          if(e)TextOut(hDC,0,0,"Retdurn",6);
          else TextOut(hDC,0,0,"dsdwee",6); //меняю текст для наглядности что пересовалось

          EndPaint(hwnd,&ps);
          MessageBeep(MB_ICONASTERISK);
          break;  


Код: (Text) Сам код что компилю
#include <windows.h>


/*  Declare Windows procedure  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

/*  Make the class name into a global variable  */
char szClassName[ ] = "WindowsDesktopMenu";

int WINAPI WinMain (HINSTANCE hThisInstance,
                                        HINSTANCE hPrevInstance,
                                        LPSTR lpszArgument,
                                        int nFunsterStil)

{

        HWND hwnd;               /* This is the handle for our window */
        MSG messages;            /* Here messages to the application are saved */
        WNDCLASSEX wincl;        /* Data structure for the windowclass */

        /* The Window structure */
        wincl.hInstance = hThisInstance;
        wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
        wincl.style = CS_OWNDC|CS_DBLCLKS;                 /* Catch double-clicks */
        wincl.cbSize = sizeof (WNDCLASSEX);

        /* Use default icon and mouse-pointer */
        wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
        wincl.lpszMenuName = NULL;                 /* No menu */
    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
    wincl.cbWndExtra = 0;                      /* structure or the window instance */
    /* Use Windows's default color as the background of the window */
        wincl.hbrBackground = (HBRUSH) WHITE_BRUSH;

        /* Register the window class, and if it fails quit the program */
    if (!RegisterClassEx (&wincl))
        return 0;

        /* The class is registered, let's create the program*/
    hwnd = CreateWindowEx (
                   WS_EX_LAYERED|WS_EX_NOACTIVATE ,   /* Extended possibilites for variation */
           szClassName,         /* Classname */
           "Windows Menu",       /* Title Text */
                   WS_POPUP,           /* default window */
                   100,       /* Windows decides the position */
           200,       /* where the window ends up on the screen */
                   200,                 /* The programs width */
                   360,                 /* and height in pixels */
                   HWND_DESKTOP,        /* The window is a child-window to desktop */
                   NULL,                /* No menu */
           hThisInstance,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
                   );


         // SetLayeredWindowAttributes (hwnd, 0, 128, LWA_ALPHA) ;
          SetLayeredWindowAttributes(hwnd,WHITE_BRUSH,0,LWA_COLORKEY);

        /* Make the window visible on the screen */
    ShowWindow (hwnd, SW_SHOWNA);

    /* Run the message loop. It will run until GetMessage() returns 0 */
    while (GetMessage (&messages, NULL, 0, 0))
        {
        /* Translate virtual-key messages into character messages */
        TranslateMessage(&messages);
        /* Send message to WindowProcedure */
        DispatchMessage(&messages);
        }

        /* The program return-value is 0 - The value that PostQuitMessage() gave */
    return messages.wParam;
}


/*  This function is called by the Windows function DispatchMessage()  */

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{  static char WayDirect[80];
        static int e=1;
        switch (message)                  /* handle the messages */
        {
                HDC hDC;
                PAINTSTRUCT ps;
                case WM_PAINT:
                         hDC = BeginPaint(hwnd, &ps);
                         SetBkColor(hDC,RGB(70,14,230));

                         e=!e;
                         if(e)TextOut(hDC,0,0,"Retdurn",6);
                         else TextOut(hDC,0,0,"dsdwee",6);

                         EndPaint(hwnd,&ps);
                         MessageBeep(MB_ICONASTERISK);
                         break;
                case WM_DESTROY:
                        PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
                        break;
                default:                      /* for messages that we don't deal with */
                        return DefWindowProc (hwnd, message, wParam, lParam);
        }

        return 0;
}
« Последнее редактирование: 12-04-2010 19:35 от LightSin » Записан

Lost in the jungle: 1c, PIC AVR, C++, Python flask, (no Java) JS . for fun: Live For Speed S2 Drift Edition, TeeWorlds
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines