Форум программистов, компьютерный форум, киберфорум
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
8 / 8 / 0
Регистрация: 15.07.2010
Сообщений: 255
1

hwnd = 0x00000000

11.06.2011, 20:27. Показов 1105. Ответов 4
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    MSG msg;
    if(!doc.Open(FILE_NAME)) 
        return 0;
    Winseed mainWin(TEXT("TextViewer"), hInstance, nShowCmd, WndProc, NULL, NULL,\
        CS_HREDRAW | CS_VREDRAW, WS_OVERLAPPEDWINDOW | WS_VSCROLL | WS_HSCROLL);//,\
    ///*0,0,640,480*/CW_USEDEFAULT, 0, CW_USEDEFAULT, 0);
    while(GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
 
    return msg.wParam;
}
 
 
#include "Winseed.h"
#include "StdAfx.h"
 
Winseed::Winseed(LPCTSTR lpWinName, HINSTANCE hInst, int nCmdShow,\
    LRESULT(WINAPI *pWndProc)(HWND,UINT,WPARAM,LPARAM), HWND hParent,\
    LPCTSTR lpMenuName, UINT uClassStyle, DWORD dwWinStyle,\
    int x, int y, int width, int height)
{
    TCHAR szClassName[] = TEXT("WinseedClass");
 
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wc.hCursor = LoadCursor(hInst,IDC_ARROW);
    wc.hIcon = LoadIcon(hInst, IDI_APPLICATION);
    wc.hInstance = hInst;
    wc.lpfnWndProc = pWndProc;
    wc.lpszClassName = szClassName;
    wc.lpszMenuName = lpMenuName;
    wc.style = uClassStyle;
 
    if(!RegisterClass(&wc))
    {
        TCHAR msg [] = TEXT("Cannot register class!");
        strcat(msg, szClassName);
        MessageBox(HWND_DESKTOP,msg, TEXT("Warning!"),MB_OK);
    }
 
    hwnd = CreateWindow(szClassName,lpWinName,dwWinStyle,x,y,width,height,hParent,(HMENU)NULL,hInst,NULL);
    if(!hwnd)
    {
        TCHAR msg [] = TEXT("Cannot create window!");
        strcat(msg, lpWinName);
        MessageBox(HWND_DESKTOP,msg, TEXT("Warning!"),MB_OK);
    }
 
    ShowWindow(hwnd,nCmdShow);
}
http://msdn.microsoft.com/en-u... 85%29.aspx
В msdn приводится 4 причины.
С параметрами всё правильно.
Системный класс зарегистрирован инородным модулём. - Честно, без понятия, что имеется в виду.
WH_CBT установлен и возвращает ошибочный код. - Аналогично. Без понятия.
WM_CREATE неправильно отрабатывает. -
C++
1
2
3
4
5
6
7
8
switch(uMsg)
    {
    case WM_CREATE:
        hDC = GetDC(hWnd);
        GetTextMetrics(hDC, &tm);
        doc.Initialize(&tm);
        ReleaseDC(hWnd, hDC);
        break;
Писал так, чтобы нормально отрабатывало.

Где забит гвоздь недоразумения, товарищи? Извольте, помочь.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.06.2011, 20:27
Ответы с готовыми решениями:

Для чего служит первый параметр (HWND hWnd) в функции WndProc?
// функция обработки сообщений LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM...

Окно на WinAPI, параметр функции WndProc (HWND hWnd,.)
Пытаюсь понять какое значение хранит первый параметр HWND hWnd в функции WndProc. В Windows в...

Почему переменная HWND hwnd объявлена дважды?
Один раз в функции WinMain: int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,...

Найти HWND окна, зная HWND окна, породившего его
Здравствуйте! Имеется основное окно "А". Это окно создаёт новое недочернее окно "Б". Необходимо...

4
186 / 61 / 4
Регистрация: 29.04.2011
Сообщений: 641
11.06.2011, 22:16 2
если я правельно понял вопрос,
то ошибка в том, что здесь написано через большую букву
Цитата Сообщение от alexsvk Посмотреть сообщение
ReleaseDC(hWnd, hDC);
а в там через маленькую


Цитата Сообщение от alexsvk Посмотреть сообщение
hwnd = CreateWindow(
0
8 / 8 / 0
Регистрация: 15.07.2010
Сообщений: 255
11.06.2011, 23:10  [ТС] 3
CreateWindow() лежит в реалзиации класса Winseed.cpp
А ReleaseDC лежит в файле с точкой входа TextViewer.cpp в реализации оконной процедуры.
0
8 / 8 / 0
Регистрация: 15.07.2010
Сообщений: 255
12.06.2011, 23:32  [ТС] 4
Нет мыслей никаких?
0
8 / 8 / 0
Регистрация: 15.07.2010
Сообщений: 255
26.06.2011, 17:00  [ТС] 5
Проблема разрешилась.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.06.2011, 17:00

Помощь в написании контрольных, курсовых и дипломных работ здесь.

OpenServiceA возвращает 0x00000000
Здравствуйте. Вот в таком коде: void StopService(std::string ServiceName) { ...

HWND
Доброго времени суток, извините за такой тупой вопрос, но.... объявляю функцию void draw(HWND...

Найти HWND
Господа вопрос такой - делаю "универсальную" dll для внедрение в приложение , но вот проблема т.к....

робота с HWND
всем привет! допустим, у меня есть некий дескриптор и мне нужно записать его значение в файл, с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.