디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

갤러들아 비트맵뷰어 짜집기한건데 소스분석좀해줘

이세상끝에서갤로그로 이동합니다. 2011.11.08 12:40:10
조회 41 추천 0 댓글 2

#include <windows.h>   
#include <io.h>   
#include <fcntl.h>   
#include "resource.h"   
  
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);   
HINSTANCE g_hInst;   
LPCTSTR lpszClass=TEXT("Img Viewer");   
  
#pragma pack(1)   
typedef struct BITHEADER   // 파일 헤더 구조체 선언
{   
    WORD bfType;   
    DWORD bfsize;   
    WORD bfReserve1;   
    WORD bfReserve2;   
    DWORD bfOffset;   
}BITHEADER;   
  
typedef struct BITINFOHEADER   // 영상 헤더 구조체 선언 
{   
    DWORD biSize;   //헤더크기
    LONG biWidth;   //폭
    LONG biHeight;   //높이
    WORD biPlanes;   
    WORD biBitCount;   
    DWORD biCompression;   
    DWORD biSizeImage;   
    LONG biXPelsPerMeter;   
    long biYPelsPerMeter;   
    DWORD biClrUsed;   
    DWORD biClrImportant;   
}BITINFOHEADER;   
 
  
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)   
{   
    HDC hdc;   
    int fd, x, y;   
    PAINTSTRUCT ps;   
    OPENFILENAME OFN;   
    TCHAR str[300];   
    TCHAR buffer[300];   
    TCHAR dummy[3];   
    TCHAR lpstrFile[MAX_PATH] = "";   
    BITHEADER BitHeadr;   
    BITINFOHEADER BitInfo;   
    COLORREF color = RGB(0, 0, 0);   
  
    switch(iMessage)   
    {   
    case WM_COMMAND:   
        switch(LOWORD(wParam))   
        {   
        case ID_FILEOPEN:   
            memset(&OFN, 0, sizeof(OPENFILENAME));   
            OFN.lStructSize = sizeof(OPENFILENAME);   
            OFN.hwndOwner = hWnd;   
            OFN.lpstrFilter = TEXT("모든 파일(*.*)\\0*.*\\0비트맵(*.bmp)\\0*.bmp\\0JPG(*.jpg)\\0*.jpg\\0");   
            OFN.lpstrFile = lpstrFile;   
            OFN.nMaxFile = MAX_PATH;   
  
            if(GetOpenFileName(&OFN) == 0)   
            {   
                return 0;   
            }   
            fd = open(OFN.lpstrFile, O_RDONLY);              
               
            read(fd, buffer, sizeof(BitHeadr));   
            memcpy(&BitHeadr, buffer, sizeof(BitHeadr));   
            lseek(fd, 0, SEEK_CUR);   
            read(fd, buffer, sizeof(BitInfo));   
            memcpy(&BitInfo, buffer, sizeof(BitInfo));   
            lseek(fd, BitHeadr.bfOffset, SEEK_SET);    
               
            hdc = GetDC(hWnd);   
           
            if(BitInfo.biWidth)       
            {   
                for(y = BitInfo.biHeight; y >0; y--)   
                {   
                    for(x = 0; x < BitInfo.biWidth; x++)   
                    {   
                        read(fd, buffer, 3);   
                        color = RGB(buffer[2], buffer[1], buffer[0]);   
                        SetPixel(hdc, x, y, color);   
                        lseek(fd, 0, SEEK_CUR);   
                    }   
                }   
               
                        }
            
        }   
        return 0;   
  
    case WM_DESTROY:   
        PostQuitMessage(0);   
        return 0;   
    }   
    return(DefWindowProc(hWnd, iMessage, wParam, lParam));   
}  






여기저기서 필요할것같은 함수 퍼다가 붙여넣었거든 (윈도우창 생성하는 부분은 지웠음)
실행 되긴함. 근데 어느게 무슨역할하는지 모르겠다.
1.. #include <io.h>   #include <fcntl.h>   
이거 두개가 왜 들어간거 헤더파일이 따로 있지도 않은데 지우면 실행이 안되고, 뭔가 이유가 있을거같은데
기본적으로 프로그램내 포함되있는거임??

2. 구조체 선언한 이유가 뭐야? 정의는 보긴했는데 일정 메모리를 프로그램을 이용해서 사용하겠다라고 선언하는건가?

3. 이게 중요한데 bmp 구조를 정확히 모르겠다. 여러 사이트 보고 있긴한데 일단 무슨 숫자로 이루어진거는 알겠는데 비트맵이,
4의 배수로 맞추는 이유가 뭐야? 이대로 실행하면 24비트 bmp는 제대로 열리는데 256색은 이상하게 열리거든 흑백에
그림이 잘리기도 하고

허접한 질문들인거같긴한데 좀 알려줘, 좃아싸라 물어볼게 여기밖에없다





추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 뛰어난 운동 신경으로 남자와 싸워도 이길 것 같은 여자 스타는? 운영자 25/11/24 - -
이슈 [디시人터뷰] 충무로가 주목하는 신예, '세계의 주인' 서수빈 운영자 25/11/24 - -
AD 대학생 필수템! What's in my Bag 운영자 25/11/21 - -
286800 소행성이 떨어지는게 확실한가보다.......... 거칠게갤로그로 이동합니다. 11.11.08 61 0
286798 교스케는 [1] Adelposs갤로그로 이동합니다. 11.11.08 42 0
286797 야야 그래도 솔직히 말이다 [4] PoRO갤로그로 이동합니다. 11.11.08 63 0
286795 닭튀김 저새끼가 내 죵니 순수한 마음을 난도질 했다 시팔 [1] PoRO갤로그로 이동합니다. 11.11.08 58 0
286793 형들 우리 앱 하나씩 만들어서 [5] -ㅂ-(210.90) 11.11.08 83 0
286792 소행성 충돌 3시간 전 입니다 고갱님 [2] 거칠게갤로그로 이동합니다. 11.11.08 71 0
갤러들아 비트맵뷰어 짜집기한건데 소스분석좀해줘 [2] 이세상끝에서갤로그로 이동합니다. 11.11.08 41 0
286790 니들 DDNS를 뭐라고 부르는지 아냐? [9] PoRO갤로그로 이동합니다. 11.11.08 94 0
286788 안드로이드나 아이폰 중에 ui 특이한거 본사람?? [12] 쿄스케갤로그로 이동합니다. 11.11.08 130 0
286787 어쩌다 보니 프갤 4년차네... [1] 폐인의세계갤로그로 이동합니다. 11.11.08 43 0
286786 난 코딩보다 컴조립을 잘함 [6] 꼬꼬월드갤로그로 이동합니다. 11.11.08 90 0
286785 나도 1400만원만 받고싶다.. [6] 쿄스케갤로그로 이동합니다. 11.11.08 105 0
286784 야 프갤러들 웹 에이전시 차리자 [3] 분당살람갤로그로 이동합니다. 11.11.08 90 0
286783 사람들은 자신의 닉네임을 지을 때 신중할필요가 있다. [4] 개쉛기갤로그로 이동합니다. 11.11.08 116 0
286781 그런데 프로그래밍 공부할라면 뭐부터 해야하나요? [6] 디아몬드갤로그로 이동합니다. 11.11.08 122 0
286779 진짜 옛날옛적에 영국에서 [4] 분당살람갤로그로 이동합니다. 11.11.08 80 0
286778 이 정도 앱 코딩하는데 얼마나 걸려? [2] 소유미갤로그로 이동합니다. 11.11.08 91 0
286777 차라리 이대로 행성이 꼴아박고 멸망했으면 좋겠다. [1] 개쉛기갤로그로 이동합니다. 11.11.08 52 0
286776 구글 번역 quota 가 대폭 줄어들었다. [2] 시불라미갤로그로 이동합니다. 11.11.08 103 0
286775 형들 코딩 진자 재밌는거 같아요!!!! [3] 군대지원(183.101) 11.11.08 78 0
286774 스맛폰 게임에 빠져버렸음 [6] !@#ㅇㅇ갤로그로 이동합니다. 11.11.08 81 0
286773 여기서 얼마나 놀아야 프로그래밍 고수되나요? [6] 디아몬드갤로그로 이동합니다. 11.11.08 121 0
286772 갤이 죽은거냐 안낚이는 거냐 ㅠㅠ [2] McHello갤로그로 이동합니다. 11.11.08 99 0
286770 이정도면 그림 좀 그리는건가? [2] McHello갤로그로 이동합니다. 11.11.08 102 0
286769 별루냐? [4] McHello갤로그로 이동합니다. 11.11.08 107 0
286767 유클리드 기하학 원론 파면 좆간지? 다림줄갤로그로 이동합니다. 11.11.08 79 0
286766 클래스들을 만들다 보면.... [2] 남대생.갤로그로 이동합니다. 11.11.08 67 0
286764 흠 이거 어렵남? [1] 뇌지랄갤로그로 이동합니다. 11.11.08 68 0
286762 소행성 400m짜리론 지구 표면에 기스내는 정도다 [9] 남대생.갤로그로 이동합니다. 11.11.08 107 0
286761 FTA하면 미국산 프로그래머 수입되나요?? (203.226) 11.11.08 60 0
286760 내일 중간고사 보는데 오늘이 지구 마지막날?? [1] 군대지원(183.101) 11.11.08 47 0
286759 안드로이드 HttpClient 재밌네여 소행성 떨어지기전에 발견해서 기쁨 [2] Stan(220.244) 11.11.08 70 0
286757 여름도 아닌데 매미소리가 난다 천회장(221.149) 11.11.08 33 0
286756 아 형님들 비쥬얼스튜디오질문이요ㅠㅠ[조공업뎃] [2] 군대지원(183.101) 11.11.08 116 0
286754 애들아 오늘 소행성 떨어지니까 소원들 빌어라 쿄스케갤로그로 이동합니다. 11.11.08 44 0
286753 모바일쪽은 os는 무료 업글시켜주고 앱이 유료인데 [1] 분당살람갤로그로 이동합니다. 11.11.08 61 0
286752 입갤{프갤만 존나 세기말 느낌} 다림줄갤로그로 이동합니다. 11.11.08 63 0
286751 api 아는 사람 질문 좀 받아줘! [2] y녀6디리(119.68) 11.11.08 70 0
286750 운지하자 얘들아 Lover♥갤로그로 이동합니다. 11.11.08 31 0
286749 소행성 육안으로 관찰 가능하냐? 천회장(221.149) 11.11.08 43 0
286745 뇌자알 스택계산기 왜이렇게 어렵게 구현했냐??? [1] 에이시아(125.31) 11.11.08 92 0
286744 현직 프로그래머분들께 여쭙습니다 [4] 놋북(68.107) 11.11.08 127 0
286741 ㅄ같은 질문....c++ [1] ㅁㄴㅇㄹ(14.42) 11.11.08 74 0
286740 저번에 어떤 한국여자애한테 고백했는데 생각하니까 전나 웃기넼ㅋ [2] Stan(220.244) 11.11.08 145 0
286739 어플 만들고 싶은데요 [3] rnmn갤로그로 이동합니다. 11.11.08 101 0
286738 이거 알면 진짜 천재다.. 신이다.. [1] 아 형..(125.208) 11.11.08 109 0
286737 아아 12시간 뒤에 떨어질 소행성 때문에 잠이 안온다........... [1] 거칠게갤로그로 이동합니다. 11.11.08 103 0
286736 it업계는 왜케 좌빨들이 많냐. 보수는 본적이 없어 [5] ㄴㅁ(58.234) 11.11.08 139 0
286735 자바 컴파일후 오류도 아닌거시 이거 뭐 어떻게 해야 하죠... [7] 허르(112.163) 11.11.08 71 0
286734 여친생기는 인강 씨발라드세요갤로그로 이동합니다. 11.11.08 54 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2