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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как создать окно без заголовка? 
:(
    Опции темы
devmstr
Дата 20.9.2005, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


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

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



Пробую
Код

CreateWindow("Menu", "Application", WS_DLGFRAME, cw_def, cw_def, WI, HE, NULL, NULL,
                        hInst, NULL);


WS_DLGFRAME
Creates a window that has a border of a style typically used with dialog boxes. A window with this style cannot have a title bar.

не помогает, окно все равно с заголовком? Что я делаю не так.


Это сообщение отредактировал(а) magician - 21.9.2005, 07:27


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
srd
Дата 20.9.2005, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

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



Флаги суммируются оператором I, а не &. В твоём же случае (WS_DLGFRAME & WS_CAPTION) == WS_CAPTION, а WS_CAPTIOn - этот стиль как раз наличие заголовка и задаёт. Кстати, WS_DLGFRAME | WS_CAPTION == WS_DLGFRAME.


--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
Dreamer_0x01
Дата 20.9.2005, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


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

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



так а почему ты им делаешь побитовый and, а не or?
WS_DLGFRAME&WS_CAPTION - "AND"
WS_DLGFRAME|WS_CAPTION - "OR"


--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
Fixin
Дата 20.9.2005, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

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



Код
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;
   DWORD dwoStyle;

   hInst = hInstance; // Store instance handle in our global variable

   hWnd = CreateWindow(szWindowClass, szTitle, WS_VISIBLE,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
   if (!hWnd)
   {
      return FALSE;
   }   

   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);
   dwoStyle = (DWORD)GetWindowLong(hWnd, GWL_STYLE);
   SetWindowLong(hWnd, GWL_STYLE, dwoStyle&(~(WS_CAPTION|WS_SIZEBOX)));
   return TRUE;
}

PM MAIL ICQ   Вверх
devmstr
Дата 21.9.2005, 06:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


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

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



srd
Dreamer_0x01
Извините, это я послал, не то что хотел. Вообще в оригинале только WS_DLGFRAME. Но так как не получалось я начал эксперементировать и пытался исключить WS_CAPTION, хотя явно не правиль но и неудачно, вообщем метод тыка. Извините, что не проверил перед посылкой на форум. Уставший был. Постараюсь исправится!


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
devmstr
Дата 21.9.2005, 07:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


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

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



Fixin
К сожалению не помогло, хотя не понятно почему.


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
rsm
Дата 21.9.2005, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Рабочий пример (проверено).
Код

#include <windows.h>

LRESULT WINAPI MainWndProc(HWND, UINT, WPARAM, LPARAM);

void start()
{
    #define WND_CLASS "SimpleWndClass"
    
    HINSTANCE hInst;
    WNDCLASS wc = { 0 };
    HWND hWnd;
    MSG msg;

    hInst = GetModuleHandle(NULL);
    wc.lpfnWndProc = MainWndProc;
    wc.hInstance = hInst;
    wc.lpszClassName = WND_CLASS;
    wc.hbrBackground = (HBRUSH) COLOR_WINDOW;
    if(!RegisterClass(&wc))
        return;
    hWnd = CreateWindowEx(0, WND_CLASS, NULL, 
        WS_POPUP | WS_VISIBLE,
        200, 200, 100, 100, NULL, NULL, hInst, NULL);
    if(!hWnd)
        return;
    ShowWindow(hWnd, SW_SHOW);
    UpdateWindow(hWnd);
    while(GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
}

LRESULT CALLBACK MainWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch (msg)
    {
        case WM_RBUTTONUP:
            PostQuitMessage(0);
            break;

        case WM_LBUTTONDOWN:
            ReleaseCapture();
            PostMessage(hwnd, WM_SYSCOMMAND, 0x0F012, 0);
            break;
    }
    return DefWindowProc(hwnd, msg, wParam, lParam);
}

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


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

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



эта ф-я взята из работающей проги (часы)

Код

__declspec( noreturn ) void __stdcall ClockMain( void* )
{
    DWORD ExitCode( 0 );

    //

    SetThreadPriority( GetCurrentThread(), THREAD_PRIORITY_IDLE ); // until WM_CREATE

    g_NT = GetVersion() < 0x80000000;

    SettingsCheck();

    /*
    MessageBox( NULL,
                "Settings checked\n\nContinue after click",
                "ClockMain thread",
                MB_ICONINFORMATION | MB_TOPMOST );
    */

    g_rScreen.right  = GetSystemMetrics( SM_CXSCREEN );
    g_rScreen.bottom = GetSystemMetrics( SM_CYSCREEN );

    g_cBack          = GetSysColor( COLOR_BACK );
    g_cText          = GetSysColor( COLOR_TEXT );

    //

    WNDCLASSEX cClock;

    cClock.cbSize        = sizeof ( WNDCLASSEX );
    cClock.style         = CS_DBLCLKS | CS_OWNDC;
    cClock.lpfnWndProc   = ClockProc;
    cClock.cbClsExtra    = 0;
    cClock.cbWndExtra    = 0;
    cClock.hInstance     = g_hClockDLL;
    cClock.hIcon         = NULL;
    cClock.hIconSm       = NULL;
    cClock.hCursor       = LoadCursor( NULL, IDC_ARROW );
    cClock.hbrBackground = BRUSH_BACK;
    cClock.lpszMenuName  = NULL;
    cClock.lpszClassName = "ExClock";

    ATOM aClock( RegisterClassEx( &cClock ) );

    if( !aClock )
    {
        ExitCode = 1;
        goto exit;
    }

    /*
    MessageBox( NULL,
                "Class registered\n\nContinue after click",
                "ClockMain thread",
                MB_ICONINFORMATION | MB_TOPMOST );
    */

    //

    g_hClockWnd = CreateWindowEx(
        WS_EX_TOOLWINDOW,            // | WS_EX_WINDOWEDGE
        ( char* )aClock,
        NULL,
        WS_POPUP,                    // | WS_DLGFRAME
        0,
        0,
        g_rClockWin.right,
        g_rClockWin.bottom,
        NULL,
        NULL,
        g_hClockDLL,
        NULL );

    if( !g_hClockWnd )
    {
        ExitCode = 2;
        goto exit;
    }

    /*
    MessageBox( NULL,
                "Window created\n\nContinue after click",
                "ClockMain thread",
                MB_ICONINFORMATION | MB_TOPMOST );
    */

    g_hHeap       = GetProcessHeap();

    // initialize window

    SetWindowPos  ( g_hClockWnd, g_Disp.bTopMost ? HWND_TOPMOST : HWND_BOTTOM, 0, 0, 0, 0,
                    SWP_FRAMECHANGED |
                    SWP_NOACTIVATE   |
                    SWP_NOMOVE       |
                    SWP_NOSIZE       ); // refreshes client rect size
    GetClientRect ( g_hClockWnd, &g_rClockCli );

    // initialize DC's
    {
    HDC ClockDC   ( GetDC( g_hClockWnd ) );

    // drawing

    g_hDrawDC     = CreateCompatibleDC    ( ClockDC );
    g_hDrawBmp    = CreateCompatibleBitmap( ClockDC, g_rClockCli.right, g_rClockCli.bottom );

    DeleteObject  ( SelectObject( g_hDrawDC, g_hDrawBmp ) );

    // fitting

    g_FitExtraX   = g_rClockCli.right  / 8;
    g_FitExtraY   = g_rClockCli.bottom / 6;

    g_rFit.right  = g_rClockCli.right  + g_FitExtraX;
    g_rFit.bottom = g_rClockCli.bottom + g_FitExtraY;

    g_hFitDC      = CreateCompatibleDC    ( ClockDC );
    g_hFitBmp     = CreateCompatibleBitmap( ClockDC, g_rFit.right, g_rFit.bottom );

    DeleteObject  ( SelectObject( g_hFitDC, g_hFitBmp ) );
    }

    // initialize fitting bitmap

    GetDIBits     ( g_hFitDC, g_hFitBmp, 0, 0, NULL, &g_FitBmpInfo, DIB_RGB_COLORS );

    g_pFitBmpBits = ( DWORD* )HeapAlloc( g_hHeap, 0, g_FitBmpInfo.bmiHeader.biWidth * 4 *
                                                     g_FitBmpInfo.bmiHeader.biHeight );

    if( !g_pFitBmpBits )
    {
        ExitCode = 3;
        goto exit;
    }

    // adjust fitting bitmap

    g_FitBmpInfo.bmiHeader.biHeight    = -g_FitBmpInfo.bmiHeader.biHeight; // make top-down
    g_FitBmpInfo.bmiHeader.biBitCount  = 32;                               // DWORD per pixel
    g_FitBmpInfo.bmiHeader.biSizeImage =  0;                               // not needed

    // adjust fitting DC

    SetBkMode        ( g_hFitDC, TRANSPARENT );
    SetTextAlign     ( g_hFitDC, TA_LEFT | TA_TOP | TA_NOUPDATECP );

    g_sFont.lfHeight = g_rClockCli.bottom;
    g_hFitFont       = CreateFontIndirect( &g_sFont );
    DeleteObject     ( SelectObject      (  g_hFitDC, g_hFitFont ) );

    // initialize time

    SetTick          ();
    g_DispTime       = g_CurrTime; // set time to display

    // show clock & adjust font for next time

    UpdateDrawBmp    ();
    ShowWindow       ( g_hClockWnd, SW_SHOWNOACTIVATE );
    FitFont          ( TRUE );

    //

    g_pRegionData = ( RGNDATA* )HeapAlloc( g_hHeap, 0, 1024 );

    if( !g_pRegionData )
    {
        ExitCode = 4;
        goto exit;
    }

    g_cRegionData = HeapSize( g_hHeap, 0, g_pRegionData );

    // start monitoring

    BackBeg();

    //

    MSG                   msg;

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

    ExitCode           =  msg.wParam;

    // stop monitoring

    BackEnd();

    //

exit:
    HeapFree( g_hHeap, 0, g_pRegionData );
    HeapFree( g_hHeap, 0, g_pFitBmpBits );

    DestroyWindow( g_hClockWnd ); // ok w/o IsWindow()

    // if not unregistered, loading of Clock next time
    // will cause ClockMain thread to be terminated

    UnregisterClass( ( char* )aClock, g_hClockDLL );

    DllExit( ExitCode );
}


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


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

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



Код
windowclass.style = 0;
Вот такая вот уйня. Если стиль вертик или горизонтальной прерисовки - нехочет без заголовка
PM MAIL ICQ   Вверх
Guest
Дата 23.9.2005, 12:00 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Fixin
rsmСпасибо, Вы мне очень помогли
  Вверх
Гость_magician
Дата 23.9.2005, 12:00 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











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


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

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