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

联接通不过,请大神们帮忙看看

2012-09-10 
连接通不过,请大神们帮忙看看CPP文件:/*----------------------------------------------------SYSMETS2.C

连接通不过,请大神们帮忙看看
CPP文件:
/*----------------------------------------------------
  SYSMETS2.C -- System Metrics Display Program No. 2
  (c) Charles Petzold, 1998
  ----------------------------------------------------*/

#define WINVER 0x0500
#include <windows.h>
#include "sysmets.h"

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

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
  PSTR szCmdLine, int iCmdShow)
{
  static TCHAR szAppName[] = TEXT ("SysMets2") ;
  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 ;
  }
  //WS_VSCROLL创建窗口带有垂直滚动条
  hwnd = CreateWindow (szAppName, TEXT ("Get System Metrics No. 2"),
  WS_OVERLAPPEDWINDOW | WS_VSCROLL,
  CW_USEDEFAULT, CW_USEDEFAULT,
  CW_USEDEFAULT, CW_USEDEFAULT,
  NULL, NULL, hInstance, NULL) ;

  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)
{
  static int cxChar, cxCaps, cyChar, cyClient, iVscrollPos ;
  HDC hdc ;
  int i, y ;
  PAINTSTRUCT ps ;
  TCHAR szBuffer[10] ;
  TEXTMETRIC tm ;

  switch (message)
  {
  case WM_CREATE:
  hdc = GetDC (hwnd) ;

  GetTextMetrics (hdc, &tm) ;
  cxChar = tm.tmAveCharWidth ;
  cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2 ;
  cyChar = tm.tmHeight + tm.tmExternalLeading ;

  ReleaseDC (hwnd, hdc) ;

  SetScrollRange (hwnd, SB_VERT, 0, NUMLINES - 1, FALSE) ;//最后一个参数表示,滚动条是否重画以反映变化
  SetScrollPos (hwnd, SB_VERT, iVscrollPos, TRUE) ;
  return 0 ;

  case WM_SIZE:
  cyClient = HIWORD (lParam) ;//Iparam低位表示宽度,高位表示高度,消息结构体中的一个变量
  return 0 ;

  case WM_VSCROLL:
  switch (LOWORD (wParam))//表示鼠标对滚动条的操作
  {
  case SB_LINEUP://滚动条上移一行
  iVscrollPos -= 1 ;
  break ;
   
  case SB_LINEDOWN:
  iVscrollPos += 1 ;
  break ;
   
  case SB_PAGEUP://滚动条上移一页
  iVscrollPos -= cyClient / cyChar ;
  break ;


   
  case SB_PAGEDOWN:
  iVscrollPos += cyClient / cyChar ;//用户区高度/单行高度,得到一页移动总行数
  break ;
   
  case SB_THUMBPOSITION:
  iVscrollPos = HIWORD (wParam) ;//鼠标释放时滚动条位置
  break ;
   
  default :
  break ;
  }

  iVscrollPos = max (0, min (iVscrollPos, NUMLINES - 1)) ;

  if (iVscrollPos != GetScrollPos (hwnd, SB_VERT))//获得THUMB位置(未改变前)
  {
  SetScrollPos (hwnd, SB_VERT, iVscrollPos, TRUE) ;
InvalidateRect (hwnd, NULL, TRUE) ;//函数将产生WM_PAINT消息,NULL表示整个客户区被更新
//for(a = 0, b = 0; a < 1000000000; a++, b++){}//slow
  }
  return 0 ;

  case WM_PAINT:
  hdc = BeginPaint (hwnd, &ps) ;
  //重画客户区  
  for (i = 0 ; i < NUMLINES ; i++)
  {
  y = cyChar * (i - iVscrollPos) ;//将滚动框所处位置,作为客户区重绘内容的第一行
   
  TextOut (hdc, 0, y,
  sysmetrics[i].szLabel,
  lstrlen (sysmetrics[i].szLabel)) ;
   
  TextOut (hdc, 22 * cxCaps, y,
  sysmetrics[i].szDesc,
  lstrlen (sysmetrics[i].szDesc)) ;
   
  SetTextAlign (hdc, TA_RIGHT | TA_TOP) ;
   
  TextOut (hdc, 22 * cxCaps + 40 * cxChar, y, szBuffer,
  wsprintf (szBuffer, TEXT ("%5d"),
  GetSystemMetrics (sysmetrics[i].iIndex))) ;//缓冲区,格式控制,输出内容,可以将数值转化为字符串,返回字符串长度,不包括'\'
   
  SetTextAlign (hdc, TA_LEFT | TA_TOP) ;
  }
  EndPaint (hwnd, &ps) ;
  return 0 ;

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



编译能通过,但是连接时候总是报错:
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/SYSMET2.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.



[解决办法]
库文件没导入,看下配置路径对不对

热点排行