CreateWindowEx
От: Sergeant Украина www.photomirror.com.ua
Дата: 26.03.02 09:30
Оценка:
Добрый день!
Я уже этот вопрос поднимал (см. )CreateWindowEx
Автор: Sergeant
Дата: 28.01.02
. Отложил тогда это дело, т.к. ничего не прояснилось. Но теперь опять подперло.
Смысл в чем. Есть приложение. Главное окно создается через CreateDialog:
hWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_MAINDLG),
    0, WndProc);
ShowWindow (hWnd, iCmdShow) ;
UpdateWindow (hWnd) ;
    
while (GetMessage (&msg, NULL, 0, 0))
//и т.д.


Теперь мне нужно без лишней крови сделать так, чтоб окно создавалось через CreateWindow или через CreateWindowEx. Начал я с того, что:
    int t;
    WNDCLASS wndclass;
    MSG msg;
        
    wndclass.style         = 0;//  CS_HREDRAW ;    
    wndclass.lpfnWndProc   = WndProc;
    wndclass.cbClsExtra    = 0;//DLGWINDOWEXTRA;
    wndclass.cbWndExtra    = 0;
    wndclass.hInstance     = hInstance;
    wndclass.hIcon         = LoadIcon(NULL,IDI_APPLICATION);
    wndclass.hCursor       = LoadCursor(NULL, IDC_ARROW);
    wndclass.hbrBackground = (HBRUSH)COLOR_WINDOW;
    wndclass.lpszMenuName  = NULL;
    wndclass.lpszClassName = "MailerClass";
    
    t = RegisterClass(&wndclass) ;
    
    hWnd = CreateWindowEx(0, "MailerClass", "Mailer", 
        WS_OVERLAPPEDWINDOW,
        0, 0, 160, 32, 0, 0, hInstance, 0);
    t = GetLastError();
    ShowWindow (hWnd, iCmdShow) ;
    UpdateWindow (hWnd) ;
    
    while (GetMessage (&msg, NULL, 0, 0))
//и т.д.

И вот тут начался рокенролл. Окно не создается (hWnd = 0), а GetLastError возвращает 183 — мол, файл уже создан (Cannot create a file when that file already exists).

Может у кого за это время новые идеи появились? Может здесь дело именно в том, что я пытаюсь от CreateDialog избавиться? Если это не правильно, то как же от него тогда избавляться?...
Курить я буду, но пить не брошу.
Re: CreateWindowEx
От: Sergeant Украина www.photomirror.com.ua
Дата: 26.03.02 10:08
Оценка:
Вопрос снят.
Надо было написать в оконной процедуре:

case WM_NCCREATE:
    return 1;


Тотлько вот каким боком тут 183-й error?...
Курить я буду, но пить не брошу.
Re[2]: CreateWindowEx
От: Gambler  
Дата: 26.03.02 10:22
Оценка:
Здравствуйте Sergeant, Вы писали:

S> Вопрос снят.

S>Надо было написать в оконной процедуре:

S>
S>case WM_NCCREATE:
S>    return 1;
S>


S>Тотлько вот каким боком тут 183-й error?...


А что возвращает t = RegisterClass(&wndclass)?
-------------------------------------------------------------------

Вызывает презедент к себе коров и говорит:
— Ну, что будем сдавать, молоко или мясо?
(с) Г. Явлинский TV6 — Герой дня (18.04.2002)
Re: CreateWindowEx
От: Алекс Россия http://wise-orm.com
Дата: 27.03.02 05:39
Оценка:
Здравствуйте Sergeant, Вы писали:

S>Добрый день!

S>Я уже этот вопрос поднимал (см. )CreateWindowEx
Автор: Sergeant
Дата: 28.01.02
. Отложил тогда это дело, т.к. ничего не прояснилось. Но теперь опять подперло.

S>Смысл в чем. Есть приложение. Главное окно создается через CreateDialog:
S>
S>hWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_MAINDLG),
S>    0, WndProc);
S>ShowWindow (hWnd, iCmdShow) ;
S>UpdateWindow (hWnd) ;
S>    
S>while (GetMessage (&msg, NULL, 0, 0))
S>//и т.д.
S>


S>Теперь мне нужно без лишней крови сделать так, чтоб окно создавалось через CreateWindow или через CreateWindowEx. Начал я с того, что:

S>
S>    int t;
S>    WNDCLASS wndclass;
S>    MSG msg;
S>        
S>    wndclass.style         = 0;//  CS_HREDRAW ;    
S>    wndclass.lpfnWndProc   = WndProc;
S>    wndclass.cbClsExtra    = 0;//DLGWINDOWEXTRA;
S>    wndclass.cbWndExtra    = 0;
S>    wndclass.hInstance     = hInstance;
S>    wndclass.hIcon         = LoadIcon(NULL,IDI_APPLICATION);
S>    wndclass.hCursor       = LoadCursor(NULL, IDC_ARROW);
S>    wndclass.hbrBackground = (HBRUSH)COLOR_WINDOW;
S>    wndclass.lpszMenuName  = NULL;
S>    wndclass.lpszClassName = "MailerClass";
S>    
S>    t = RegisterClass(&wndclass) ;
S>    
S>    hWnd = CreateWindowEx(0, "MailerClass", "Mailer", 
S>        WS_OVERLAPPEDWINDOW,
S>        0, 0, 160, 32, 0, 0, hInstance, 0);
S>    t = GetLastError();
S>    ShowWindow (hWnd, iCmdShow) ;
S>    UpdateWindow (hWnd) ;
S>    
S>    while (GetMessage (&msg, NULL, 0, 0))
S>//и т.д.
S>

S>И вот тут начался рокенролл. Окно не создается (hWnd = 0), а GetLastError возвращает 183 — мол, файл уже создан (Cannot create a file when that file already exists).

S> Может у кого за это время новые идеи появились? Может здесь дело именно в том, что я пытаюсь от CreateDialog избавиться? Если это не правильно, то как же от него тогда избавляться?...


Почему же RegisterWindowEx не использовать!
Re[2]: CreateWindowEx
От: Gambler  
Дата: 27.03.02 07:51
Оценка:
Здравствуйте Алекс, Вы писали:


А>Почему же RegisterWindowEx не использовать!


А это что за метод такой?
-------------------------------------------------------------------

Вызывает презедент к себе коров и говорит:
— Ну, что будем сдавать, молоко или мясо?
(с) Г. Явлинский TV6 — Герой дня (18.04.2002)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.