Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с батоном.

279
12 июля 2005 года
bave
456 / / 07.03.2004
Вообщем я создаю обычную кнопку в окне.
Создаю как обычно:
hButton = CreateWindow("button", "Text",WS_CHILD|WS_BORDER|WS_VISIBLE|BS_DEFPUSHBUTTON,
20, 50, 140, 40, hWnd, (HMENU)IDB_BUTTON1, hInst, NULL);

Но почему - то она не становиться видимой пока
я не кликну по области, в которой она создана.
И ещё одна проблема:
У меня курсор используется не стандартный, а
загруженный из ресурса - почему - то, когда
он поподаент в область кнопки, то делается
стандартным, как это исправить.
6.6K
13 июля 2005 года
hunter
46 / / 22.09.2004
Цитата:
Originally posted by bave
Вообщем я создаю обычную кнопку в окне.
Создаю как обычно:
hButton = CreateWindow("button", "Text",WS_CHILD|WS_BORDER|WS_VISIBLE|BS_DEFPUSHBUTTON,
20, 50, 140, 40, hWnd, (HMENU)IDB_BUTTON1, hInst, NULL);

Но почему - то она не становиться видимой пока
я не кликну по области, в которой она создана.

Не знаю попробовал твой код - все работает, правда вместо (HMENU)IDB_BUTTON1 я использовал NULL

И ещё одна проблема:
У меня курсор используется не стандартный, а
загруженный из ресурса - почему - то, когда
он поподаент в область кнопки, то делается
стандартным, как это исправить.



По этому поводу - приведи фрагмент кода может и помогу.

279
13 июля 2005 года
bave
456 / / 07.03.2004
Цитата:
Originally posted by hunter
По этому поводу - приведи фрагмент кода может и помогу.


Ну вот фрагмент:
[COLOR=blue]
HWND hButton1;
MSG msg;
HBITMAP hBmp = NULL;
HBRUSH hBrush = NULL;
hBmp =LoadBitmap(hInstMAKEINTRESOURCE(IDB_BITMAP1));
if(hBmp == NULL) return FALSE;
hBrush = CreatePatternBrush(hBmp);
WNDCLASSEX wc;
memset(&wc, 0, sizeof(wc));
wc.cbSize = sizeof(wc);
wc.style = CS_BYTEALIGNCLIENT|CS_HREDRAW|CS_VREDRAW|CS_OWNDC; wc.lpfnWndProc = WindowProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInst; wc.hIcon = LoadIconA(hInst, MAKEINTRESOURCE(IDI_ICON1));
wc.hCursor = LoadCursorA(hInst,MAKEINTRESOURCE(IDC_CURSOR1));
wc.hbrBackground = hBrush;
wc.lpszMenuName = NULL;
wc.lpszClassName = szClassWindow;
wc.hIconSm = NULL;
if(!RegisterClassEx(&wc))
{
MessageBox(NULL,"Windows Class Registrationfailed!","ERROR",MB_OK|MB_ICONEXCLAMATION);
return 0;
}
hWnd = CreateWindowEx(
0,
szClassWindow,
"GamePreferences", WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU,
300,
250,
500,
350,
NULL,
NULL,
hInst,
NULL);
if(!hWnd) return FALSE;
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
hButton1 = CreateWindow("button", "button 1", WS_CHILD|WS_BORDER|WS_VISIBLE|BS_DEFPUSHBUTTON, 20, 50, 140, 40, hWnd, (HMENU)IDB_BUTTON1, hInst, NULL);
if(!hButton1) return 0;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
if(wc.hIcon != NULL) DestroyIcon(wc.hIcon); if(hBmp != NULL) DeleteObject(hBmp);
if(hBrush != NULL) DeleteObject(hBrush); WriteCFG("SCREEN", "depth", "32");
return (msg.wParam); [/COLOR]

Если использовать NULL вместо (HMENU)IDB_BUTTON1
то тоже не пашет, тем более как я тогда сообщения
от кнопки обрабатывать буду.

292
14 июля 2005 года
Matush
726 / / 14.01.2004
Издание второе, исправленное и допольненное :)

#include <Windows.h>

#include "Resource.h"

HWND g_hWnd, g_hButton1;

LRESULT CALLBACK WindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CLOSE:
DestroyWindow(g_hWnd);
return 0;

case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, int)
{
MSG msg;
HBITMAP hBmp;
HBRUSH hBrush;
hBmp = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP1));
if(hBmp == NULL) return FALSE;
hBrush = CreatePatternBrush(hBmp);

WNDCLASSEX wc;
ZeroMemory(&wc, sizeof(wc));
wc.cbSize = sizeof(wc);
wc.style = CS_BYTEALIGNCLIENT|CS_HREDRAW|CS_VREDRAW|CS_OWNDC;
wc.lpfnWndProc = WindowProc;
wc.hInstance = hInst;
wc.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON1));
wc.hCursor = LoadCursor(hInst, MAKEINTRESOURCE(IDC_CURSOR1));
wc.hbrBackground = hBrush;
wc.lpszClassName = "Gy";
if(!RegisterClassEx(&wc))
{
MessageBox(NULL,"Windows Class Registrationfailed!","ERROR",MB_OK|MB_ICONEXCLAMATION);
return 0;
}
g_hWnd = CreateWindowEx(NULL, "Gy", "GamePreferences", WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_VISIBLE,
300, 250, 500, 350,
NULL, NULL, hInst, NULL);
if(!g_hWnd)
return FALSE;

g_hButton1 = CreateWindow("button", "button 1", WS_CHILD|WS_BORDER|WS_VISIBLE|BS_DEFPUSHBUTTON, 20, 50, 140, 40, g_hWnd, (HMENU)NULL, hInst, NULL);
if(!g_hButton1)
return 0;

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

DestroyIcon(wc.hIcon);
DeleteObject(hBmp);
DeleteObject(hBrush);
return (msg.wParam);
}


По поводу нестандартного курсора, Ты его загружаеш в основное окно программы, потому на кнопке курсор становится стандартный.
Короче у каждого окна свой курсор.
По поводу ZeroMemory(&wc, sizeof(wc));
Ты потом пишешь wc.cbClsExtra = 0; - это уже не нужно, так как структура обнулена.
279
14 июля 2005 года
bave
456 / / 07.03.2004
Да не доглядел :)
Правда не знаю - станет ли от этого кнопка
сразу появляться.
292
15 июля 2005 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by bave
Да не доглядел :)
Правда не знаю - станет ли от этого кнопка
сразу появляться.


Будет, гарантирую :)
g_hButton1 = CreateWindow("button", "button 1", WS_CHILD|WS_BORDER|WS_VISIBLE|BS_DEFPUSHBUTTON, 20, 50, 140, 40, g_hWnd, (HMENU)NULL, hInst, NULL);

279
16 июля 2005 года
bave
456 / / 07.03.2004
Так я тоже WS_VISIBLE указывал.
Возможно это из - за того что, я забыл
GetModuleHandle вызвать, т. е. при вызове
CreateWindow у меня в hInst значение NULL.
---------------------------------------------
Я сейчас всё по другому начал делать в отдельном
диалоговом окне.
------------------------------------------------
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог