首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

用FrameRect(hdc,&rect,hBrush),区域边框不显示?解决方法

2012-02-26 
用FrameRect(hdc,&rect,hBrush),区域边框不显示??想创建16个区域,并把每个区域的边框画出来。。结果边框并未

用FrameRect(hdc,&rect,hBrush),区域边框不显示??



想创建16个区域,并把每个区域的边框画出来。。结果边框并未显示。。。高手指点。在线等。。



#include <windows.h>
#include <wingdi.h>


LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
  PSTR szCmdLine, int iCmdShow)
{
  static TCHAR szAppName[] = TEXT ("HelloWin") ;
  HWND hwnd ;
  MSG msg ;
  WNDCLASS wndclass ;

  wndclass.style = CS_HREDRAW | CS_VREDRAW ;
  wndclass.lpfnWndProc = WndProc ;
  wndclass.cbClsExtra = 0 ;
  wndclass.cbWndExtra = 0 ;
  wndclass.hInstance = hInstance ;
  wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
  wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
  wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
  wndclass.lpszMenuName = NULL ;
  wndclass.lpszClassName = szAppName ;

  if (!RegisterClass (&wndclass))
  {
  MessageBox (NULL, TEXT ("This program requires Windows NT!"), 
  szAppName, MB_ICONERROR) ;
  return 0 ;
  }
   
  hwnd = CreateWindow (szAppName, // window class name
  TEXT ("The Hello Program"), // window caption
  WS_OVERLAPPEDWINDOW, // window style
  CW_USEDEFAULT, // initial x position
  CW_USEDEFAULT, // initial y position
  CW_USEDEFAULT, // initial x size
  CW_USEDEFAULT, // initial y size
  NULL, // parent window handle
  NULL, // window menu handle
  hInstance, // program instance handle
  NULL) ; // creation parameters
   
  ShowWindow (hwnd, iCmdShow) ;
  UpdateWindow (hwnd) ;
   
  while (GetMessage (&msg, NULL, 0, 0))
  {
  TranslateMessage (&msg) ;
  DispatchMessage (&msg) ;
  }
  return msg.wParam ;
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
  HDC hdc ;
  PAINTSTRUCT ps ;
static int i,j;
  HRGN originhRgn,hRgn[4][4];

HBRUSH hBrush;
RECT rect;
 




   
  switch (message)
  {
  case WM_CREATE:
hBrush=CreateSolidBrush(RGB(255,0,0));

 
 
 

InvalidateRect(hwnd,NULL,TRUE);

   
  return 0 ;
   
  case WM_PAINT:

 
hdc=BeginPaint(hwnd,&ps);

 
if(i=0,i<3,i++)
 
if(j=0,j<3,j++)

{
 
hRgn[i][j]=CreateRectRgn(j*500/4,i*500/4,(j+1)*500/4,(i+1)*500/4);


rect.left=j*500/4;
rect.right=(j+1)*500/4;
rect.top=i*500/4;
rect.bottom=(i+1)*500/4;
FrameRect(hdc,&rect,hBrush);
 
 
}

EndPaint(hwnd,&ps);
   
  return 0 ;


   
  case WM_DESTROY:
  PostQuitMessage (0) ;
  return 0 ;
  }
  return DefWindowProc (hwnd, message, wParam, lParam) ;
}

[解决办法]
DrawEdge
[解决办法]
边框的宽度设置了吗?而且在你的WM_PAINT里没有画边框的操作啊DrawEdge

热点排行