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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2016, 22:47   #1
Valeriyan
Новичок
Джуниор
 
Регистрация: 03.02.2016
Сообщений: 1
По умолчанию Монохроный бит

Всем доброго времени суток! Нуждаюсь в помощи вашей , не могу вывести биты как мне хочется и дальше не могу пойти не справившись с элементарным! не соответствуют мои полосы битам хоть застрелись блин ( Я уже просто не могу просветите пожалуйста ! Спасибо большое

Код:
#include <windows.h>
#include <math.h>
#include <tchar.h>
#include <string>





 BOOL RegClass(WNDPROC, LPCTSTR, UINT);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
HINSTANCE hInstance;
TCHAR szClass[] = L"HelloWin";

HWND edit; 
 
 int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nCmdShow)
{
    MSG msg;
    HWND hwnd;
    hInstance = hInst;
    if (!RegClass(WndProc, szClass, COLOR_WINDOW)) return FALSE;
	hwnd = CreateWindow(szClass, L"The Hello Program",  WS_OVERLAPPEDWINDOW | WS_VISIBLE | SBS_VERT,
        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
    if (!hwnd) return FALSE;
    
	ShowWindow(hwnd, nCmdShow );
	
	
	UpdateWindow(hwnd);       //Дескриптор обновляемого окна
	

	while(GetMessage(&msg, NULL, 0, 0))
    { 
		TranslateMessage(&msg); DispatchMessage(&msg); 
	}
    return msg.wParam;
 
}
 
BOOL RegClass(WNDPROC Proc, LPCTSTR szName, UINT brBackground)
{
    WNDCLASS wc;
    wc.style = CS_HREDRAW | CS_VREDRAW; 
	wc.cbClsExtra = 0; 
	wc.cbWndExtra = 0;
    wc.lpfnWndProc = Proc;
    wc.hInstance = hInstance;
    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
    wc.lpszMenuName = NULL;
    wc.lpszClassName = szName;
    return (RegisterClass(&wc) != 0);
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
  static int cxClient, cyClient;
  RECT rc;
  PAINTSTRUCT ps;
  HBITMAP hbm, hbm2,  ;
  HDC hMemDC, hdc ;
  BITMAP bm = {0};
  TCHAR	tchar1[1024], tchar2[1024], tchar3[1024], tchar4[1024], tchar5;   
  BYTE bBytes[] =
{
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};


	  switch(iMsg)
 {
 case WM_SIZE:
	cxClient = LOWORD(lParam);
	cyClient = HIWORD(lParam);


     break;
 
 case WM_CREATE:
	bm.bmType = 0;
	 bm.bmWidth = 20;
	 bm.bmHeight = 5;
	 bm.bmWidthBytes = 8;
	 bm.bmPlanes = 1;
	 bm.bmBitsPixel = 1;
	 bm.bmBits = bBytes;

	break;
 case WM_PAINT:
	
	 hdc = BeginPaint(hwnd,&ps);
	
	 	 GetClientRect(hwnd,&rc);
	 
	 hMemDC = CreateCompatibleDC(hdc);
	 
	if(!hMemDC)
	{
		DWORD errCode1 = GetLastError();
		FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM |     FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_ARGUMENT_ARRAY, NULL, errCode1, 0, tchar1, sizeof(tchar1), NULL);
		MessageBox(hwnd, tchar1, L"Error!", MB_OK);
	}

	 hbm = CreateBitmap(96,12,1,1,bBytes);
	
	hbm2 = (HBITMAP)SelectObject(hMemDC,hbm);
	
	if(!hbm2)
	{
		DWORD errCode2 = GetLastError();
		FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM |    FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_ARGUMENT_ARRAY, NULL, errCode2, 0, tchar2, sizeof(tchar2), NULL);
		MessageBox(hwnd, tchar3, L"Error!", MB_OK);
	}
	
	 BitBlt(hdc,0,0, 96,12,hMemDC,0,0,SRCCOPY);

	 DeleteObject(hdc);
	 DeleteDC(hMemDC);
	 DeleteObject(hbm);
	 DeleteObject(hbm2);
	
	 
	 EndPaint(hwnd, &ps); 
	break;

 case WM_DESTROY:

 PostQuitMessage(0);
 return 0;
 }
 return DefWindowProc(hwnd, iMsg, wParam, lParam);
 }

Последний раз редактировалось Аватар; 04.02.2016 в 08:49.
Valeriyan вне форума Ответить с цитированием
Старый 04.02.2016, 08:09   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цвета задайте.
https://blogs.msdn.microsoft.com/old...14-01/?p=29013
waleri вне форума Ответить с цитированием
Старый 08.02.2016, 00:51   #3
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,639
По умолчанию

BYTE bBytes[] у вас размерностью 8 * 8 = 64px на одну линию,
а в функции CreateBitmap вы указываете размерность 96px на линию.

То есть цветовых данных не хватает.

Я перекомпилировал, вроде бы получилось так, как надо..

Код:
  BYTE bBytes[] =
{
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
32 бит в 16 alexey_kip Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 14 03.11.2013 18:27
ОС: 32 vs 64 бит Буратино Операционные системы общие вопросы 29 18.01.2011 11:10
Скрин в 16 бит Mihanches Общие вопросы Delphi 0 11.10.2010 11:55
Ковертирование из png 24 бит в png 8 бит isat Общие вопросы .NET 0 22.03.2010 13:38
1 байт 9 бит ?! Иллидан Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 13.04.2008 12:47