'공부합시다/WinAPI, MFC'에 해당되는 글 3건

  1. 2009.10.06 [MFC] 프로세스 접근 권한 얻기
  2. 2009.09.30 [MFC] 리스트 컨트롤 폰트 바꾸기
  3. 2009.07.06 [WinAPI] BMP 파일에서 특정색상을 투명하게 출력하기
2009. 10. 6. 19:33

[MFC] 프로세스 접근 권한 얻기

프로세스에 대한 정보를 얻어오려면 권한이 없어서 읽어오지 못하는 경우가 있다.

그럴 경우에는 아래의 함수를 추가해주면 된다.




CreateToolhelp32Snapshot() 같은 함수로 프로세스나 모듈을 열기전에,
AdjustDebugPrivilege() 함수로 권한을 획득해주고, 핸들을 닫은 후에 RestorePrivilege() 함수로 권한을 반환해 주면 된다.


Trackback 0 Comment 0
2009. 9. 30. 10:13

[MFC] 리스트 컨트롤 폰트 바꾸기

MFC나 API로 다이얼로그를 만들어서 하다보면 폰트가 마음에 안들때가 많습니다.

리스트 컨트롤로 헥스뷰어를 만들다가 폰트가 너무 마음에 안들어서 폰트 바꾸는 방법을 찾아봤습니다.

아래의 함수를 이용하면 폰트를 바꿀 수 있습니다.

HFONT CreateFont(
  int nHeight,             // logical height of font
  int nWidth,              // logical average character width
  int nEscapement,         // angle of escapement
  int nOrientation,        // base-line orientation angle
  int fnWeight,            // font weight
  DWORD fdwItalic,         // italic attribute flag
  DWORD fdwUnderline,      // underline attribute flag
  DWORD fdwStrikeOut,      // strikeout attribute flag
  DWORD fdwCharSet,        // character set identifier
  DWORD fdwOutputPrecision,  // output precision
  DWORD fdwClipPrecision,  // clipping precision
  DWORD fdwQuality,        // output quality
  DWORD fdwPitchAndFamily,  // pitch and family
  LPCTSTR lpszFace         // pointer to typeface name string
);

실제 사용은 아래와 같이 하면 됩니다.

HFONT hNewFont;   
hNewFont=CreateFont( 12,0,0,0,0,0,0,0,HANGEUL_CHARSET,3,2,1,       
                               VARIABLE_PITCH | FF_MODERN,"돋음");
m_hList.SendMessage( WM_SETFONT, (WPARAM)hNewFont, (LPARAM)TRUE);

m_hList는 리스트 컨트롤의 객체입니다.
만약 다른 컨트롤의 폰트를 바꾸고 싶다면 객체부분만 바꿔주면 됩니다.
Trackback 0 Comment 0
2009. 7. 6. 12:31

[WinAPI] BMP 파일에서 특정색상을 투명하게 출력하기

BOOL TransparentBlt(
  HDC
hdcDest,                                 //그려질 영역의 DC 핸들.
  int nXOriginDest,                              //그려질영역의 x 좌표.
  int nYOriginDest,                              //그려질영역의 y 좌표.
  int nWidthDest,                               //그려질 영역의 넓이
  int hHeightDest,                              //그려질 영역의 높이
  HDC hdcSrc,                                  //그릴 소스 DC 핸들  
  int nXOriginSrc,                               //그릴 소스의 x 좌표.
  int nYOriginSrc,                               //그릴 소스의 y 좌표.
  int nWidthSrc,                                 //그릴 소스의 넓이
  int nHeightSrc,                                //그릴 소스의 높이.
  UINT crTransparent                                 //비트맵에서 제외할 색상.RGB( ?, ?, ? )
);

 

HEADER :  #include <wingdi.h>

LINK       : Msimg32.lib , Msimg32.dll

Return Values

If the function succeeds, the return value is TRUE.

If the function fails, the return value is FALSE

 

  CDC* pDC = CDC::FromHandle( lpDrawItemStruct->hDC );
  CDC MemDC;

  MemDC.CreateCompatibleDC( pDC );

  CRect rcItem( &(lpDrawItemStruct->rcItem) );

  CBitmap bmpIcon;

  bmpIcon.LoadBitmap( IDB_YAHOO_COMBO_IMAGE );

  CBitmap* pOldbmp = (CBitmap*)MemDC.SelectObject( &bmpIcon );

  ::TransparentBlt( pDC->m_hDC,
   rcItem.left, rcItem.top, 16, 16,
   MemDC.m_hDC, 0, 0, 16, 16,
   RGB( 255, 255, 255 ) );


Trackback 0 Comment 0