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

在VS2005+PB6.0的编译环境下调试HelloCE程序出错,该怎么处理

2012-02-02 
在VS2005+PB6.0的编译环境下调试HelloCE程序出错提示 “WM_HIBERNATE”:未声明的标识符代码如下://

在VS2005+PB6.0的编译环境下调试HelloCE程序出错
提示 “WM_HIBERNATE”:未声明的标识符
代码如下:
//======================================================================
// HelloCE - A simple application for Windows CE
//
// Written for the book Programming Windows CE
// Copyright (C) 1998 Douglas Boling
//
//======================================================================
#include <windows.h> // For all that Windows stuff
#include <commctrl.h> // Command bar includes
#include "helloce.h" // Program-specific stuff


//----------------------------------
// Global data
//

const TCHAR szAppName[] = TEXT ("HelloCE");
HINSTANCE hInst; // Program instance handle

// Message dispatch table for MainWindowProc
const struct decodeUINT MainMessages[] = {
  WM_CREATE, DoCreateMain,
  WM_PAINT, DoPaintMain,
  WM_HIBERNATE, DoHibernateMain,
  WM_ACTIVATE, DoActivateMain,
  WM_DESTROY, DoDestroyMain,
};

//======================================================================
//
// Program entry point
//
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
  LPWSTR lpCmdLine, int nCmdShow) {
  MSG msg;
  int rc = 0;
  HWND hwndMain;

  // init application
  rc = InitApp (hInstance);
  if (rc) return rc;

  // Initialize this instance.
  hwndMain = InitInstance (hInstance, lpCmdLine, nCmdShow);
  if (hwndMain == 0)
  return 0x10;

  // Application message loop
  while (GetMessage (&msg, NULL, 0, 0)) {
  TranslateMessage (&msg);
  DispatchMessage (&msg);
  }
  // Instance cleanup
  return TermInstance (hInstance, msg.wParam);
}
//----------------------------------
// InitApp - Application initialization
//
int InitApp (HINSTANCE hInstance) {
   

  // Register application main window class.
WNDCLASS wc;
  wc.style = 0; // Window style
  wc.lpfnWndProc = MainWndProc; // Callback function
  wc.cbClsExtra = 0; // Extra class data
  wc.cbWndExtra = 0; // Extra window data
  wc.hInstance = hInstance; // Owner handle
  wc.hIcon = NULL, // Application icon
  wc.hCursor = NULL; // Default cursor
  wc.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
  wc.lpszMenuName = NULL; // Menu name
  wc.lpszClassName = szAppName; // Window class name

  if (RegisterClass (&wc) == 0) return 1;

  return 0;
}
//----------------------------------
// InitInstance - Instance initialization
//
HWND InitInstance (HINSTANCE hInstance, LPWSTR lpCmdLine,
  int nCmdShow) {
  HWND hWnd;

  // Save program instance handle in global variable.
  hInst = hInstance;

  // Create main window.
  hWnd = CreateWindow (szAppName, // Window class
  TEXT("Hello"), // Window title
  WS_VISIBLE, // Style flags
  CW_USEDEFAULT, // x position
  CW_USEDEFAULT, // y position
  CW_USEDEFAULT, // Initial width


  CW_USEDEFAULT, // Initial height
  NULL, // Parent
  NULL, // Menu, must be null
  hInstance, // Application instance
  NULL); // Pointer to create parameters

  // Return fail code if window not created.
  if (!IsWindow (hWnd)) return 0;

  // Standard show and update calls
  ShowWindow (hWnd, nCmdShow);
  UpdateWindow (hWnd);
  return hWnd;
}
//----------------------------------
// TermInstance - Program cleanup
//
int TermInstance (HINSTANCE hInstance, int nDefRC) {

  return nDefRC;
}
//======================================================================
// Message handling procedures for main window
//

//----------------------------------
// MainWndProc - Callback function for application window
//
LRESULT CALLBACK MainWndProc (HWND hWnd, UINT wMsg, WPARAM wParam, 
  LPARAM lParam) {
  INT i;
  //
  // Search message list to see if we need to handle this
  // message. If in list, call procedure.
  //
  for (i = 0; i < dim(MainMessages); i++) {
  if (wMsg == MainMessages[i].Code)
  return (*MainMessages[i].Fxn)(hWnd, wMsg, wParam, lParam);
  }
  return DefWindowProc (hWnd, wMsg, wParam, lParam);
}
//----------------------------------
// DoCreateMain - Process WM_CREATE message for window.
//
LRESULT DoCreateMain (HWND hWnd, UINT wMsg, WPARAM wParam, 
  LPARAM lParam) {
  HWND hwndCB;

  // Create a command bar.
  hwndCB = CommandBar_Create (hInst, hWnd, IDC_CMDBAR);

  // Add exit button to command bar. 
  CommandBar_AddAdornments (hwndCB, 0, 0);
  return 0;
}
//----------------------------------
// DoPaintMain - Process WM_PAINT message for window.
//
LRESULT DoPaintMain (HWND hWnd, UINT wMsg, WPARAM wParam, 
  LPARAM lParam) {
  PAINTSTRUCT ps;
  RECT rect;
  HDC hdc;

  // Adjust the size of the client rectangle to take into account
  // the command bar height.
  GetClientRect (hWnd, &rect);
  rect.top += CommandBar_Height (GetDlgItem (hWnd, IDC_CMDBAR));

  hdc = BeginPaint (hWnd, &ps); 
  DrawText (hdc, TEXT ("Hello Windows CE!"), -1, &rect, 
  DT_CENTER | DT_VCENTER | DT_SINGLELINE);

  EndPaint (hWnd, &ps); 
  return 0;
}
//----------------------------------
// DoHibernateMain - Process WM_HIBERNATE message for window.
//

LRESULT DoHibernateMain (HWND hWnd, UINT wMsg, WPARAM wParam, 
  LPARAM lParam) {

  // If not the active window, nuke the command bar to save memory.
  if (GetActiveWindow () != hWnd)
  CommandBar_Destroy (GetDlgItem (hWnd, IDC_CMDBAR));

  return 0;
}

//----------------------------------
// DoActivateMain - Process WM_ACTIVATE message for window.
//
LRESULT DoActivateMain (HWND hWnd, UINT wMsg, WPARAM wParam, 
  LPARAM lParam) {
  HWND hwndCB;



  // If activating and no command bar, create it.
  if ((LOWORD (wParam) != WA_INACTIVE) &&
  (GetDlgItem (hWnd, IDC_CMDBAR) == 0)) {

  // Create a command bar.
  hwndCB = CommandBar_Create (hInst, hWnd, IDC_CMDBAR);

  // Add exit button to command bar. 
  CommandBar_AddAdornments (hwndCB, 0, 0);
  }
  return 0;
}
//----------------------------------
// DoDestroyMain - Process WM_DESTROY message for window.
//
LRESULT DoDestroyMain (HWND hWnd, UINT wMsg, WPARAM wParam, 
  LPARAM lParam) {
  PostQuitMessage (0);
  return 0;
}
在线等,我第一次用wince,错了都不知道什么地方有问题,请高手指点一下!

[解决办法]
错误提示已经说的很清楚了,WM_HIBERNATE 未定义

热点排行