Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2016, 11:16   #1
Maray
Форумчанин
 
Регистрация: 03.01.2015
Сообщений: 160
Восклицание Не появляется Button

Добрый день!

Помогите, пожалуйста!

Создаю ListBox и Button

При запуске программы ListBox отображается, а Button не появляется. Подскажите, пожалуйста, в чем проблема?

Код:
#include <Windows.h>
#include <WindowsX.h>
#include <CommCtrl.h>
#include <tchar.h>
#include <stdlib.h>

#define IDC_LISTBOX 2001
#define IDC_BUTTONSHOWPROC 2002

#define WM_ADDITEM WM_USER + 1

HWND hDlg = NULL;
HWND hFindDlg = NULL;

TCHAR szBuffer[100] = TEXT("");

LRESULT CALLBACK MyWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

void OnIdle(HWND hwnd);

BOOL PreTranslateMessage(LPMSG lpMsg);

BOOL OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct);

void OnSize(HWND hwnd, UINT state, int cx, int cy);

void OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);

void OnAddItem(HWND hwnd);

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR lpszCmdLIne, int nCmdShow)
{
	WNDCLASSEX wcex = { sizeof(WNDCLASSEX) };
	wcex.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
	wcex.lpfnWndProc = MyWindowProc;
	wcex.hInstance = hInstance;
	wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION);
	wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
	wcex.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
	wcex.lpszMenuName = NULL;
	wcex.lpszClassName = TEXT("Класс");
	wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

	if (0 == RegisterClassEx(&wcex))
	{
		return -1;
	}

	HWND hWnd = CreateWindowEx(0, TEXT("Класс"), TEXT("Программа"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

	ShowWindow(hWnd, nCmdShow);
	UpdateWindow(hWnd);

	LoadLibrary(TEXT("ComCtl32.dll"));



	if (NULL == hWnd)
	{
		return -1;
	}

	ShowWindow(hWnd, nCmdShow);


	MSG msg;
	BOOL bRet;

	for (;;)
	{

		while (!PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
		{
			OnIdle(hWnd);
		}



		bRet = GetMessage(&msg, NULL, 0, 0);

		if (bRet == -1)
		{

		}
		else if (FALSE == bRet)
		{
			break;
		}
		else if (PreTranslateMessage(&msg) == FALSE)
		{
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
	}

	return (int)msg.wParam;

}


LRESULT CALLBACK MyWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	int i;
	switch (uMsg)
	{
		HANDLE_MSG(hWnd, WM_CREATE, OnCreate);
		HANDLE_MSG(hWnd, WM_SIZE, OnSize);
		HANDLE_MSG(hWnd, WM_COMMAND, OnCommand);
	case WM_ADDITEM:
		OnAddItem(hWnd);
		return 0;

		break;
	}

	return DefWindowProc(hWnd, uMsg, wParam, lParam);
}


void OnIdle(HWND hwnd)
{

}


BOOL PreTranslateMessage(LPMSG lpMsg)
{
	return IsDialogMessage(hDlg, lpMsg) || IsDialogMessage(hFindDlg, lpMsg);
}

BOOL OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct)
{

	CreateWindowEx(0, TEXT("ListBox"), NULL,
		WS_CHILD | WS_VISIBLE | WS_BORDER | LBS_STANDARD, 10, 10, 250, 410, hwnd, (HMENU)IDC_LISTBOX, lpCreateStruct->hInstance, NULL);

	CreateWindowEx(0, TEXT("ButtonShowProc"), TEXT("Показать список всех процесов"),
		WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 270, 10, 200, 40, hwnd, (HMENU)IDC_BUTTONSHOWPROC, lpCreateStruct->hInstance, NULL);

	return TRUE;
}

void OnSize(HWND hwnd, UINT state, int cx, int cy)
{
	if (state != SIZE_MINIMIZED)
	{

		HWND hwndCtl = GetDlgItem(hwnd, IDC_LISTBOX);

		MoveWindow(hwndCtl, 10, 10, 250, cy - 20, TRUE);
	}
}


void OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
	if (BN_CLICKED == codeNotify)
	{

		HINSTANCE hInstance = GetWindowInstance(hwnd);

		switch (id)
		{
		case IDC_BUTTONSHOWPROC:
		{
								   
		}
			break;

		}
	}
}


void OnAddItem(HWND hwnd)
{

	HWND hwndCtl = GetDlgItem(hwnd, IDC_LISTBOX);


	int iItem = ListBox_AddString(hwndCtl, szBuffer);


	ListBox_SetCurSel(hwndCtl, iItem);
}
Maray вне форума Ответить с цитированием
Старый 23.10.2016, 12:12   #2
AbakBarama
Пользователь
 
Регистрация: 12.05.2011
Сообщений: 57
По умолчанию

А что за класс такой странный "ButtonShowProc"?
AbakBarama вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Если Button 1 и Button 2 нажаты - Button 3 стала активной, как? FleXik Общие вопросы Delphi 25 11.03.2015 13:52
Как привязать компоненту TComboBox к Button, чтобы при нажатии Button, данные из ComboBox вводились в TstringGrid Marta_ Помощь студентам 2 15.10.2011 01:02
Как отловить, когда окна появляется (не создаётся, а именно появляется) TwiX Win Api 5 27.09.2011 21:30
Появляется реклама Mixasik О форуме и сайтах клуба 14 27.09.2010 00:51
не появляется форма ruavia3 Microsoft Office Excel 12 16.04.2009 07:39