Добрый день!
Я уже этот вопрос поднимал (см. )
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 избавиться? Если это не правильно, то как же от него тогда избавляться?...
Вопрос снят.
Надо было написать в оконной процедуре:
case WM_NCCREATE:
return 1;
Тотлько вот каким боком тут 183-й error?...
Здравствуйте Sergeant, Вы писали:
S> Вопрос снят.
S>Надо было написать в оконной процедуре:
S>S>case WM_NCCREATE:
S> return 1;
S>
S>Тотлько вот каким боком тут 183-й error?...
А что возвращает t = RegisterClass(&wndclass)?
Здравствуйте 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 избавиться? Если это не правильно, то как же от него тогда избавляться?...
Почему же RegisterWindow
Ex не использовать!
Здравствуйте Алекс, Вы писали:
А>Почему же RegisterWindowEx не использовать!
А это что за метод такой?