Win32 SDK 访问数据库

707 篇文章 ¥99.90 ¥299.90
280 篇文章
本文介绍了如何在Win32 SDK环境下使用ADO和ODBC访问数据库,包括连接MySQL、SQL Server及Oracle。示例代码展示了如何进行数据库查询、插入、删除和修改操作。同时,讨论了C++中导入ADO DLL的方法,并分享了COM编程的相关资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ODBC + WIN32 API 访问MYSQL 数据库实现简单QQ用户注册和登录
http://blog.youkuaiyun.com/dai_jing/article/details/8231645

// datadase odbc1.cpp : 定义应用程序的入口点。
//
#include "stdafx.h"
#include "datadase odbc1.h"
#include "resource.h"
#include "string.h"
#include "sql.h"
#include "sqlext.h"
#include "sqltypes.h"
 
void Save(HWND hwnd);
 
void Login(HWND hwnd);
#define LOGIN_TIMEOUT 30
#define MAXBUFLEN 255
#define CHECKDBSTMTERROR(hwnd,result,hstmt)   if(SQL_ERROR==result){ShowDBStmtError

(hwnd,hstmt);return;}
#define MAX_LOADSTRING 100
// 全局变量:
HINSTANCE hInst;        // 当前实例
TCHAR szTitle[MAX_LOADSTRING];     // 标题栏文本
TCHAR szWindowClass[MAX_LOADSTRING];   // 主窗口类名
HWND ghdlg;
// 此代码模块中包含的函数的前向声明:
 

INT_PTR CALLBACK About1(HWND, UINT, WPARAM, LPARAM);

void DBTest(HWND hwnd);
int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{  
  
 DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), NULL, About1);
 return 0;
}
 
//
//  函数: MyRegisterClass()
//
//  目的: 注册窗口类。
//
//  注释:
//
//    仅当希望
//    此代码与添加到 Windows 95 中的“RegisterClassEx”
//    函数之前的 Win32 系统兼容时,才需要此函数及其用法。调用此函数十分重要,
//    这样应用程序就可以获得关联的
//    “格式正确的”小图标。
//
 
//
//   函数: InitInstance(HINSTANCE, int)
//
//   目的: 保存实例句柄并创建主窗口
//
//   注释:
//
//        在此函数中,我们在全局变量中保存实例句柄并
//        创建和显示主程序窗口。
//
 
//
//  函数: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  目的: 处理主窗口的消息。
//
//  WM_COMMAND - 处理应用程序菜单
//  WM_PAINT - 绘制主窗口
//  WM_DESTROY - 发送退出消息并返回
//
// 
 
void ShowDBError(HWND hwnd,SQLSMALLINT type,SQLHANDLE sqlHandle)
{
     WCHAR pStatus[10], pMsg[101];
  SQLSMALLINT SQLmsglen;
  TCHAR error[200] = {0};
  SQLINTEGER SQLerr;
  long erg2 = SQLGetDiagRec(type, sqlHandle,1,(SQLWCHAR *)pStatus,&SQLerr,(SQLWCHAR*)

pMsg,100,&SQLmsglen);
  wsprintf(error,L"%s (%d)\n",pMsg,(int)SQLerr);
  MessageBox(hwnd,error,TEXT("数据库执行错误"),MB_ICONERROR|MB_OK);
}
void ShowDBConnError(HWND hwnd,SQLHDBC hdbc)
{
 ShowDBError(hwnd,SQL_HANDLE_DBC,hdbc);
}
void ShowDBStmtError(HWND hwnd,SQLHSTMT hstmt)
{
 ShowDBError(hwnd,SQL_HANDLE_STMT,hstmt);
}
 
INT_PTR CALLBACK About1(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
 ghdlg=hDlg;
 UNREFERENCED_PARAMETER(lParam);
 switch (message)
 {
 case WM_INITDIALOG:
  return (INT_PTR)TRUE;
 case WM_COMMAND:
  {
   if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
   {
    EndDialog(hDlg, LOWORD(wParam));
    return (INT_PTR)TRUE;
   }
   switch(LOWORD(wParam))
   {
   
    
   case IDC_BUTTON2://保存
    {
     Save(hDlg);
     break;
    }
   case IDC_BUTTON1://确认登陆
    {
     Login(hDlg);
     break;
    }
   default:break;
   }
    
  }
 }
 return (INT_PTR)FALSE;
}
 
void Save(HWND hwnd)
{
 SQLHENV henv = NULL;
  SQLHDBC hdbc = NULL;
  SQLHSTMT hstmt = NULL;
  SQLRETURN result;
  SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 

Driver};SERVER=127.0.0.1;UID=root;PWD=root;DATABASE=database2;CharSet=gb2312;";
  SQLWCHAR ConnStrOut[MAXBUFLEN];
  //分配环境句柄
  result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
  &henv);
  //设置管理环境属性
  result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
  //分配连接句柄
  result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
  //设置连接属性
  result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
  (void*)LOGIN_TIMEOUT, 0);
  //连接数据库
  result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
  if(SQL_ERROR==result)
  {
   ShowDBConnError(hwnd,hdbc);
    return;
  }
  //初始化语句句柄
      result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
   //SQL_NTS telling the function the previous parameter is NullTerminated String,
   //please alculate the string length for me
   SQLWCHAR username[256];
   SQLWCHAR password[256];
   

   GetDlgItemText(hwnd,IDC_EDIT1,username,sizeof(username)/sizeof(SQLWCHAR));
   GetDlgItemText(hwnd,IDC_EDIT2,password,sizeof(password)/sizeof(SQLWCHAR));
    
    
   SQLWCHAR sql[256];
   wsprintf(sql,TEXT("insert into t_user1(FUserName,FPassWord) values

('%s','%s')"),username,password);
   if (*username==NULL ||*password==NULL)
   {
    MessageBox(hwnd,TEXT("有户名或密码不为空!"),TEXT("注册"),MB_OK|MB_ICONERROR);
    return;
   }
   result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);
   
   CHECKDBSTMTERROR(hwnd,result,hstmt);
   result =SQLExecute(hstmt);
   CHECKDBSTMTERROR(hwnd,result,hstmt);
    
   SQLFreeStmt(hstmt,SQL_CLOSE);
   SQLDisconnect(hdbc);
   SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
   SQLFreeHandle(SQL_HANDLE_ENV,henv);
       MessageBox(hwnd,TEXT("保存成功"),TEXT("注册"),MB_OK|MB_ICONINFORMATION);
   SetDlgItemText(hwnd,IDC_EDIT1,NULL);
   SetDlgItemText(hwnd,IDC_EDIT2,NULL);
}
 
void Login(HWND hwnd)
{
 SQLHENV henv = NULL;
  SQLHDBC hdbc = NULL;
  SQLHSTMT hstmt = NULL;
  SQLRETURN result;
  SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=database2;CharSet=GBK;";
  SQLWCHAR ConnStrOut[MAXBUFLEN];
  //分配环境句柄
  result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
  &henv);
  //设置管理环境属性
  result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
  //分配连接句柄
  result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
  //设置连接属性
  result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
  (void*)LOGIN_TIMEOUT, 0);
  //连接数据库
  result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
  if(SQL_ERROR==result)
  {
   ShowDBConnError(hwnd,hdbc);
    return;
  }
  //初始化语句句柄
      result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
   //SQL_NTS telling the function the previous parameter is NullTerminated String,
   //please alculate the string length for me
   result = SQLPrepare(hstmt,(SQLWCHAR*)L"select FUserName,FPassWord from 

t_user1",SQL_NTS);
   
   CHECKDBSTMTERROR(hwnd,result,hstmt);
   result =SQLExecute(hstmt);
   CHECKDBSTMTERROR(hwnd,result,hstmt);
   SQLINTEGER cbsatid=SQL_NTS;
   SQLWCHAR Inputusername[20];
   SQLWCHAR Inputpassword[20];
   GetDlgItemText(hwnd,IDC_EDIT3,Inputusername,30);
   GetDlgItemText(hwnd,IDC_EDIT4,Inputpassword,30);
   int found=1;
   while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
   {
    SQLWCHAR username[20];
    SQLGetData(hstmt,1,SQL_C_WCHAR,username,30,&cbsatid);
    SQLWCHAR password[20];
    SQLGetData(hstmt,2,SQL_C_WCHAR,password,30,&cbsatid);

    
    if (lstrcmpW(Inputpassword,password)==0)
    {
     if (lstrcmpW(Inputusername,username)==0)
     {
      MessageBox(hwnd,TEXT("登陆成功"),TEXT("login"),MB_OK|MB_ICONINFORMATION);
      SetDlgItemText(hwnd,IDC_EDIT4,NULL);
      found=0;
      break;
     }
    
    }
     
     
   }

   if (1==found)
   {
    MessageBox(hwnd,TEXT("登陆失败"),TEXT("login"),MB_OK|MB_ICONERROR);
   }

   SQLFreeStmt(hstmt,SQL_CLOSE);
   SQLDisconnect(hdbc);
   SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
   SQLFreeHandle(SQL_HANDLE_ENV,henv);
    
}

win32 sdk编程如何使用ado操作数据库


本人需要在win32 sdk环境下操作sql server数据库,没有了MFC,不知道如何开始动手。
哪位提供一个简单的SDK下连接数据库、查询、插入、删除、修改的示例代码,优先考虑ado,odbc也可


以。
或则提供参考资料链接也行。


用ADO的相关代码:
//stdafx.h文件中添加:
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename


("EOF","adoEOF")


//利用ADO访问数据库代码:
try
{
_RecordsetPtr m_pRs;
_ConnectionPtr m_pConn;


CoInitialize(NULL);


m_pConn.CreateInstance(__uuidof(Connection));
m_pRs.CreateInstance(__uuidof(Recordset));


//设置服务器端游标
m_pConn->CursorLocation = adUseServer;//adUseClient;adUseNone


//连接ACCESS数据库
                  //m_pConn->Open(L"Provider=Microsoft.Jet.OLEDB.4.0;Data 


Source=test.mdb;Persist Security Info=False",
//  L"",L"",adOpenUnspecified);
//连接ORACLE数据库
                  m_pConn->Open(L"Provider=OraOLEDB.Oracle.1;User ID=tyz;password=tyz;Data 


Source=sfhctest;Persist Security Info=False",
L"",L"",adOpenUnspecified);


m_pRs->PutRefActiveConnection(m_pConn);
m_pRs->Open("select rkxh,jmzh,xm from rkxx where rownum <=10",_variant_t((IDispatch*)


m_pConn,true),
adOpenDynamic,adLockOptimistic,adCmdUnknown);


while(!m_pRs->adoEOF)
{
AfxMessageBox((_bstr_t)m_pRs->GetCollect("rkxh"));
m_pRs->MoveNext();
}
m_pRs=NULL;
m_pConn=NULL;
CoUninitialize();
}
catch(_com_error &e)
{
AfxMessageBox(e.ErrorMessage());
}




有ODBC API函数!


http://www.vchelp.net/wyy/tour/odbc_api.asp#_Toc50053547


laiyiling(最熟悉的陌生人) 推荐的文章非常好,只是ODBC需要配置DSN,我个人还是希望最好有C语言


操作oledb api的资料,请大家继续推荐。谢谢。


#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename


("EOF","adoEOF")
是C++的用法吗?我不熟悉C++,能有详细一点的介绍C++访问Com接口方法的资料也行。


推荐两篇关于COM的好文章,一篇是关于调用的,另一篇则是关于编写COM的。
http://www.vckbase.com/document/viewdoc/?id=212
http://www.vckbase.com/document/viewdoc/?id=213


#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename


("EOF","adoEOF")
就是表示引入dll,然后修给它的名字空间,以防止冲突


http://download.youkuaiyun.com/download/radiorama/5232979

// Test.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
#include "resource.h"
#include "stdio.h"
#include "time.h"
#include "ListView.h"
#define MAX_LOADSTRING 100

// Global Variables:
HINSTANCE hInst;								// current 

instance
TCHAR szTitle[MAX_LOADSTRING];								// 

The title bar text
TCHAR szWindowClass[MAX_LOADSTRING];								

// The title bar text

// Foward declarations of functions included in this code module:
ATOM				MyRegisterClass(HINSTANCE hInstance);
BOOL				InitInstance(HINSTANCE, int);
LRESULT CALLBACK	WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK	About(HWND, UINT, WPARAM, LPARAM);

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
 	// TODO: Place code here.
	MSG msg;
	HACCEL hAccelTable;

	// Initialize global strings
	LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
	LoadString(hInstance, IDC_TEST, szWindowClass, MAX_LOADSTRING);
	MyRegisterClass(hInstance);

	// Perform application initialization:
	if (!InitInstance (hInstance, nCmdShow)) 
	{
		return FALSE;
	}

	hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_TEST);

	// Main message loop:
	while (GetMessage(&msg, NULL, 0, 0)) 
	{
		if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) 
		{
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
	}

	return msg.wParam;
}



//
//  FUNCTION: MyRegisterClass()
//
//  PURPOSE: Registers the window class.
//
//  COMMENTS:
//
//    This function and its usage is only necessary if you want this code
//    to be compatible with Win32 systems prior to the 'RegisterClassEx'
//    function that was added to Windows 95. It is important to call this function
//    so that the application will get 'well formed' small icons associated
//    with it.
//
ATOM MyRegisterClass(HINSTANCE hInstance)
{
	WNDCLASSEX wcex;

	wcex.cbSize = sizeof(WNDCLASSEX); 

	wcex.style			= CS_HREDRAW | CS_VREDRAW;
	wcex.lpfnWndProc	= (WNDPROC)WndProc;
	wcex.cbClsExtra		= 0;
	wcex.cbWndExtra		= 0;
	wcex.hInstance		= hInstance;
	wcex.hIcon			= LoadIcon(hInstance, (LPCTSTR)IDI_TEST);
	wcex.hCursor		= LoadCursor(NULL, IDC_ARROW);
	wcex.hbrBackground	= (HBRUSH)(COLOR_WINDOW);
	wcex.lpszMenuName	= (LPCSTR)IDC_TEST;
	wcex.lpszClassName	= szWindowClass;
	wcex.hIconSm		= LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);

	return RegisterClassEx(&wcex);
}

//
//   FUNCTION: InitInstance(HANDLE, int)
//
//   PURPOSE: Saves instance handle and creates main window
//
//   COMMENTS:
//
//        In this function, we save the instance handle in a global variable and
//        create and display the main program window.
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;

   hInst = hInstance; // Store instance handle in our global variable

   hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

   if (!hWnd)
   {
      return FALSE;
   }

   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);

   return TRUE;
}

//
//  FUNCTION: WndProc(HWND, unsigned, WORD, LONG)
//
//  PURPOSE:  Processes messages for the main window.
//
//  WM_COMMAND	- process the application menu
//  WM_PAINT	- Paint the main window
//  WM_DESTROY	- post a quit message and return
//
//
HWND  cb,tv;
int ids;	
char pst[10];
BOOL InitTreeViewImageLists(HWND hwndTV) 
{ 
   /* HIMAGELIST himl;  // handle to image list 
    HBITMAP hbmp;     // handle to bitmap 

  
    if ((himl = ImageList_Create(16, 16, 
		ILC_COLOR24 | ILC_MASK,
		1,256)) == NULL) 
        return FALSE; 

    hbmp = LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP2)); 
	if (ImageList_AddMasked (himl, hbmp, RGB (255, 255, 0)) == -1)
  {
    return FALSE;
  }

    DeleteObject(hbmp); 
*/
		HIMAGELIST  himlSmall;
	HIMAGELIST  himlLarge;	

	himlSmall = ImageList_Create(16, 16, ILC_COLORDDB | ILC_MASK, 1, 0);
	himlLarge = ImageList_Create(64, 64, ILC_COLORDDB | ILC_MASK, 1, 0);

	if (himlSmall && himlLarge){
	   HICON hIcon;

	   //set up the large image list
	   hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_TEST));
	   ImageList_AddIcon(himlLarge, hIcon);
	   ImageList_AddIcon(himlSmall, hIcon);
	//  ListView_SetImageList(hwndListViewswq, himlSmall, LVSIL_SMALL);
	//   ListView_SetImageList(hwndListViewswq, himlLarge, LVSIL_NORMAL);
	   }
 TreeView_SetImageList(hwndTV, himlSmall, TVSIL_NORMAL); 
 return true;
}

void insert()
{
	TVINSERTSTRUCT head = {0};

	    head.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE | TVIF_SELECTEDIMAGE;
	    head.item.pszText = "管理信息系统";
	    head.item.iImage= 0;
        head.item.iSelectedImage =0;
	    HTREEITEM two = TreeView_InsertItem(tv,&head);
		
    	TreeView_SelectItem(tv,two);

		head.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE | TVIF_SELECTEDIMAGE;
		head.item.pszText = "游戏光碟";
    	head.item.iImage= 0;
        head.item.iSelectedImage =0;
		head.hParent = two;
    	HTREEITEM game = TreeView_InsertItem(tv,&head);

		head.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE | TVIF_SELECTEDIMAGE;
		head.item.pszText = "四国军旗";
		head.item.iImage= 0;
        head.item.iSelectedImage =0;

		head.hParent = game;
		HTREEITEM siguo = TreeView_InsertItem(tv,&head);

        head.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE | TVIF_SELECTEDIMAGE;
		head.item.pszText = "国际象棋";

        head.item.iImage= 2;
        head.item.iSelectedImage =2;
		head.hParent = game;
		HTREEITEM xiangqi = TreeView_InsertItem(tv,&head);


    	head.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE | TVIF_SELECTEDIMAGE;
		head.item.pszText = "中国象棋";
		head.item.iImage= 6;
        head.item.iSelectedImage =6;

		head.hParent = game;
		HTREEITEM cxq = TreeView_InsertItem(tv,&head);


		head.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE | TVIF_SELECTEDIMAGE;
		head.item.pszText = "物资管理系统";
		head.item.iImage= 8;
        head.item.iSelectedImage =8;
		head.hParent = two;
		HTREEITEM wuzi = TreeView_InsertItem(tv,&head);

		
        head.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE | TVIF_SELECTEDIMAGE;
		head.item.pszText = "定单查看";
		head.item.iImage= 3;
        head.item.iSelectedImage =3;
		head.hParent = wuzi;
		HTREEITEM dingdan = TreeView_InsertItem(tv,&head);
        

		head.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE | TVIF_SELECTEDIMAGE;
		head.item.pszText = "今天定单查看";

        head.item.iImage= 5;
        head.item.iSelectedImage =5;
		head.hParent = dingdan;
		HTREEITEM nowdingdan = TreeView_InsertItem(tv,&head);

		head.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE | TVIF_SELECTEDIMAGE;
		head.item.pszText = "以前定单查看";
        head.item.iImage= 5;
        head.item.iSelectedImage =5;

		head.hParent = dingdan;
		HTREEITEM olddingdan = TreeView_InsertItem(tv,&head);

	//	TreeView_Expand(tv,wuzi,TVE_EXPAND);





		head.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE | TVIF_SELECTEDIMAGE;
		head.item.pszText = "定单添加";
        head.item.iImage= 3;
        head.item.iSelectedImage =3;
		head.hParent = wuzi;
		HTREEITEM dingdanadd = TreeView_InsertItem(tv,&head);
        
		head.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE | TVIF_SELECTEDIMAGE;
		head.item.pszText = "定单修改";
        head.item.iImage= 3;
        head.item.iSelectedImage =3;
		head.hParent = wuzi;
		HTREEITEM dingdanupdate = TreeView_InsertItem(tv,&head);
        
		head.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE | TVIF_SELECTEDIMAGE;
		head.item.pszText = "定单删除";
        head.item.iImage= 3;
        head.item.iSelectedImage =3;

		head.hParent = wuzi;
		HTREEITEM dingdandelete = TreeView_InsertItem(tv,&head);
        
		 
		head.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE | TVIF_SELECTEDIMAGE;
		head.item.pszText = "网络视频";
    	head.item.iImage= 5;
        head.item.iSelectedImage =5;
		head.hParent = two;
		HTREEITEM shipin = TreeView_InsertItem(tv,&head);
        
		 
		head.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE | TVIF_SELECTEDIMAGE;
		head.item.pszText = "在线会议";
        head.item.iImage= 4;
        head.item.iSelectedImage =4;

		head.hParent = shipin;
		HTREEITEM huiyi = TreeView_InsertItem(tv,&head);
       
		 
		head.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE | TVIF_SELECTEDIMAGE;
		head.item.pszText = "消息群发";

        head.item.iImage= 4;
        head.item.iSelectedImage =4;
		head.hParent = shipin;
		HTREEITEM xiaoxi = TreeView_InsertItem(tv,&head);

		 
		head.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE | TVIF_SELECTEDIMAGE;
		head.item.pszText = "在线留言";
        head.item.iImage= 4;
        head.item.iSelectedImage =4;
		head.hParent = shipin;
		HTREEITEM liuyan = TreeView_InsertItem(tv,&head);
        
		TreeView_Expand(tv,two,TVE_EXPAND);


}

DWORD       dwwStyle;
HWND R1,R2;
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{COLORREF	clrBk	=RGB(255, 255, 255);
COLORREF	clrBkt	=RGB(88, 44, 44);
char pstr[256]={0};		

//_variant_t p;
DBCONNECT *ptr;
char *ppsp,ioio[100];
_RecordsetPtr m_pRecordset;
HRESULT hr;
	LVITEM item = {0},items = {0};
	int sele,ssp;
	int wmId, wmEvent;
	PAINTSTRUCT ps;
	HDC hdc;
	TCHAR szHello[MAX_LOADSTRING];
	LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);
    HWND btn_HD;
_variant_t lll;
//_variant_t lll;
 bool st;
	memset (pstr, 0, sizeof(pstr));

	// _bstr_t varSource="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D.mdb"; 
//_bstr_t varSource="Data Source=myServerAddress;Initial Catalog=myDataBase;User 

Id=myUsername;Password=myPassword;" 
 //_ConnectionPtr m_pConnection; 
 
	switch (message) 
	{
	    case WM_CREATE:
	
 cb = CreateWindow( 
    "COMBOBOX",   // predefined class 
    NULL,       // button text 
    WS_VISIBLE | WS_CHILD |CBS_DROPDOWN|CBS_AUTOHSCROLL|CBS_SORT,  // styles 
					 //  CBS_DROPDOWN|CBS_HASSTRINGS,
    // Size and position values are given explicitly, because 
    // the CW_USEDEFAULT constant gives zero values for buttons. 
    0,         // starting x position 
    0,         // starting y position 
    100,        // button width 
    200,        // button height 
    hWnd,       // parent window 
   NULL,  
	hInst,// No menu 
   // (HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE), 
    NULL);         
 
 
 CreateWindow( 
    "BUTTON",   // predefined class 
    "添加项目",       // button text 
    WS_VISIBLE | WS_CHILD|BS_PUSHBUTTON,//| BS_OWNERDRAW ,  // styles 
 
    110,         // starting x position 
    0,         // starting y position 
    100,        // button width 
    20,        // button height 
    hWnd,       // parent window 
    (HMENU)123,  
	hInst,// No menu 
    NULL);  
 
 R1= CreateWindow( 
    "BUTTON",   // predefined class 
    "图标",       // button text 
    WS_VISIBLE | WS_CHILD|BS_AUTORADIOBUTTON ,  // styles 
 
    360,         // starting x position 
    310,         // starting y position 
    50,        // button width 
    20,        // button height 
    hWnd,       // parent window 
    (HMENU)44441,  
	hInst,// No menu 
    NULL);  
 R2 = CreateWindow( 
    "BUTTON",   // predefined class 
    "列表",       // button text 
    WS_VISIBLE | WS_CHILD|BS_AUTORADIOBUTTON ,  // styles 
 
    300,         // starting x position 
    310,         // starting y position 
    50,        // button width 
    20,        // button height 
    hWnd,       // parent window 
    (HMENU)44442,  
	hInst,// No menu 
    NULL);  
  btn_HD = CreateWindow( 
    "BUTTON",   // predefined class 
    "加载数据",       // button text 
    WS_VISIBLE | WS_CHILD|BS_PUSHBUTTON ,  // styles 
 
    110,         // starting x position 
    20,         // starting y position 
    100,        // button width 
    20,        // button height 
    hWnd,       // parent window 
    (HMENU)1231,  
	hInst,// No menu 
    NULL);     

  CreateWindow( 
    "BUTTON",   
    "删除",       // button text 
    WS_VISIBLE | WS_CHILD|BS_PUSHBUTTON ,  // styles 
 
    // Size and position values are given explicitly, because 
    // the CW_USEDEFAULT constant gives zero values for buttons. 
    210,         // starting x position 
    0,         // starting y position 
    100,        // button width 
    20,        // button height 
    hWnd,       // parent window 
    (HMENU)124,  
	hInst,// No menu 
   // (HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE), 
    NULL);    
  
 tv = CreateWindowEx(        WS_EX_CLIENTEDGE
							|LVS_EX_GRIDLINES
	                        ,WC_TREEVIEW,
                            "Tree View",
                            WS_CHILD | WS_VISIBLE | TVS_HASLINES | 
                            TVS_LINESATROOT |
				        	TVS_HASBUTTONS 
				        	| TVS_SHOWSELALWAYS,

                            580, 
                            0, 
                            300, 
							400,
                            hWnd, 
                            NULL,
                            hInst, 
                            NULL); 
TreeView_SetBkColor(tv,clrBk);
TreeView_SetTextColor(
    tv,
    clrBkt
);
 InitTreeViewImageLists(tv); 
SendMessage(R2,BM_SETCHECK,1,0L);

insert();

CreateListView(hWnd, hInst,400,200,2,100);
  

ListView_SetItemState(hwndListViewswq,0,LVIS_SELECTED,LVIS_SELECTED); 
ListView_SetExtendedListViewStyle(hwndListViewswq,LVS_EX_FULLROWSELECT|LVS_EX_CHECKBOXES|

LVS_EX_GRIDLINES);


  item.mask = LVIF_TEXT;       // 文字
            item.cchTextMax = MAX_PATH;       // 文字长度
            item.iItem = 0;
            item.iSubItem = 0;
            item.pszText = "1001";
            SendMessage(hwndListViewswq, LVM_INSERTITEM, 0, (LPARAM)&item);

			 item.mask = LVIF_TEXT;       // 文字
            item.cchTextMax = MAX_PATH;       // 文字长度
            item.iItem = 0;
            item.iSubItem = 1;
            item.pszText = "Win32程序设计";
            
		ListView_SetItem(hwndListViewswq,&item);

			 item.mask = LVIF_TEXT;       // 文字
            item.cchTextMax = MAX_PATH;       // 文字长度
            item.iItem = 0;
            item.iSubItem = 2;
            item.pszText = "188";
            
		SendMessage(hwndListViewswq, LVM_SETITEM, 0, (LPARAM)&item);

			 item.mask = LVIF_TEXT;       // 文字
            item.cchTextMax = MAX_PATH;       // 文字长度
            item.iItem = 0;
            item.iSubItem = 3;
            item.pszText = "65";
            
		SendMessage(hwndListViewswq, LVM_SETITEM, 0, (LPARAM)&item);


 break;
//	case WM_CTLCOLORBTN:  
     //   return (LRESULT)CreateSolidBrush(RGB(0, 255, 0));  
    //    break;      
		case WM_COMMAND:
			wmId    = LOWORD(wParam); 
			wmEvent = HIWORD(wParam); 
			// Parse the menu selections:
			switch (wmId)
			{
			case 44442:
dwwStyle = GetWindowLong(hwndListViewswq, GWL_STYLE);//鑾峰彇褰撳墠绐楀彛style       
dwwStyle &= ~LVS_TYPEMASK; //娓呴櫎鏄剧ず鏂瑰紡浣?      
dwwStyle |= LVS_REPORT; //璁剧疆style       
SetWindowLong(hwndListViewswq, GWL_STYLE, dwwStyle);//璁剧疆style 
ListView_SetExtendedListViewStyle(hwndListViewswq,LVS_EX_FULLROWSELECT|LVS_EX_CHECKBOXES|

LVS_EX_GRIDLINES);
  
				break;
			case 44441:
dwwStyle = GetWindowLong(hwndListViewswq, GWL_STYLE);//鑾峰彇褰撳墠绐楀彛style       
dwwStyle &= ~LVS_TYPEMASK; //娓呴櫎鏄剧ず鏂瑰紡浣?      
dwwStyle |= LVS_ICON; //璁剧疆style       
SetWindowLong(hwndListViewswq, GWL_STYLE, dwwStyle);//璁剧疆style 
ListView_SetExtendedListViewStyle(hwndListViewswq,0);
  
					break;
			case 123:
				ids++;
				sprintf(pst,"%d",ids);
				SendMessageA(cb, (UINT)CB_ADDSTRING, -1, (LPARAM)pst);
break;

	case 124:
	             //获取选中索引
	          	sele=SendMessage(cb,CB_GETCURSEL,0,0);
                //SendMessageA(cb, CB_DELETESTRING,删除的位置,0);
				SendMessageA(cb, CB_DELETESTRING,sele, 0);
			//	SendMessageA(cb, CB_DIR,DDL_EXCLUSIVE|DDL_DIRECTORY, 

(LPARAM) "*.*");
break;
	case 1231:
    ptr = new DBCONNECT();
	int sss;

	m_pRecordset = ptr->FetchData("select * from q",sss);//("insert into q ([ID],

[name],[datee]) values(211,'joe123','2015-1-1')");
	m_pRecordset->MoveFirst();

	while(!m_pRecordset->adoEOF){
	      lll=m_pRecordset->GetCollect("ID");
		  sprintf(ioio,"%d",(long)lll);
		 //  MessageBox(NULL,_com_util::ConvertBSTRToString(lll.bstrVal),"",0);
		  	items.mask = LVIF_TEXT;       // 文字
            items.cchTextMax = MAX_PATH;       // 文字长度
            items.iItem = 0;
            items.iSubItem = 0;
		
            items.pszText = ioio;
            SendMessage(hwndListViewswq, LVM_INSERTITEM, 0, (LPARAM)&items);

			lll=m_pRecordset->GetCollect("name");
		    items.mask = LVIF_TEXT;       // 文字
            items.cchTextMax = MAX_PATH;       // 文字长度
            items.iItem = 0;
            items.iSubItem = 1;
		
            items.pszText = _com_util::ConvertBSTRToString(lll.bstrVal);
            SendMessage(hwndListViewswq, LVM_SETITEM, 0, (LPARAM)&items);

			 lll=m_pRecordset->GetCollect("datee");
				 items.mask = LVIF_TEXT;       // 文字
            items.cchTextMax = MAX_PATH;       // 文字长度
            items.iItem = 0;
            items.iSubItem = 2;
			
			if(lll.vt ==VT_DATE ){
			lll.ChangeType(VT_BSTR);
            items.pszText = _com_util::ConvertBSTRToString(lll.bstrVal);
			}else 
				  items.pszText = "";
            SendMessage(hwndListViewswq, LVM_SETITEM, 0, (LPARAM)&items);

				 items.mask = LVIF_TEXT;       // 文字
            items.cchTextMax = MAX_PATH;       // 文字长度
            items.iItem = 0;
            items.iSubItem = 3;
		
           
				  items.pszText = "dfgdfg";
            SendMessage(hwndListViewswq, LVM_SETITEM, 0, (LPARAM)&items);
		  m_pRecordset->MoveNext();
	       
	   }
ptr->~DBCONNECT();
	break;
				case IDM_ABOUT:
				   DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)

About);
				   break;
				case IDM_EXIT:
				   DestroyWindow(hWnd);
				   break;
				default:
				   return DefWindowProc(hWnd, message, wParam, lParam);
			}
			break;
		case WM_PAINT:
			hdc = BeginPaint(hWnd, &ps);
			// TODO: Add any drawing code here...
			RECT rt;
			GetClientRect(hWnd, &rt);
			DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
			EndPaint(hWnd, &ps);
			break;
		case WM_DESTROY:
			PostQuitMessage(0);
			break;
		default:
			return DefWindowProc(hWnd, message, wParam, lParam);
   }
   return 0;
}

// Mesage handler for about box.
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message)
	{
		case WM_INITDIALOG:
				return TRUE;

		case WM_COMMAND:
			if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) 
			{
				EndDialog(hDlg, LOWORD(wParam));
				return TRUE;
			}
			break;
	}
    return FALSE;
}


http://download.youkuaiyun.com/detail/dai_jing/5246377

#include "stdafx.h"
#include "MyMainWnd.h"
#include "MyLogInDlg.h"
#include "atlstr.h"
//工具栏相关
#include "Commctrl.h"
#include "resource.h"
//播放音乐必须的头文件
#include <mmsystem.h> 
#pragma comment(lib, "WINMM.LIB")
//数据库相关
#include "sql.h"
#include "sqlext.h"
#include "sqltypes.h"
TCHAR g_ManagerName[256];
//shell相关
#include <ShellAPI.h>
#include <ctime>//产生随机数
//属性页相关
#include "PrSht.h"
#pragma comment(lib,"comctl32.lib")
int DoPropertySheet(HWND hDlg); 

// 启用视觉样式
#pragma comment(linker,"\"/manifestdependency:type='win32' \
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
//属性页对话框
//INT_PTR CALLBACK ProDlg1(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
//INT_PTR CALLBACK ProDlg2(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
//响应鼠标在菜谱列表框的双击事件,在此函数中弹出对应菜肴的属性,增删改查数据库
void GetAttributeAboutMenuWhenDBCLK(HWND hWnd,WPARAM wParam,LPARAM lParam,TCHAR szStr[]);
//全局窗口过程定义
LRESULT CALLBACK MyLeftWndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lPram);//左侧窗

口
LRESULT CALLBACK MyRightWndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lPram);//右侧窗

口
LRESULT CALLBACK MyRightWnd2Proc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lPram);//右侧

窗口
LRESULT CALLBACK MyTopWndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lPram);//上侧窗口

HWND g_hLeftWnd=NULL;
HWND g_hRightWnd=NULL;
HWND g_hRightWnd2=NULL;
HWND g_hTopWnd=NULL;


#define FILEPATHSIZE 2048
#define FILENAMESIZE 280
BOOL SaveFileDlg(HWND hWnd,WCHAR *strfp,WCHAR * strfn);

TCHAR szLeftWndClass[256]=TEXT("leftwnd");
TCHAR szRightWndClass[256]=TEXT("rightwnd");
TCHAR szRightWnd2Class[256]=TEXT("rightwnd2");
TCHAR szTopWndClass[256]=TEXT("topwnd");
BOOL CreateChildWindow(HWND hWnd);
//全局变量
bool bShowInMainWndOnPain=true;
//工具栏

#define T_ID1 20000
#define T_ID2 20001
#define T_ID3 20002
#define T_ID4 20003
#define T_ID5 20004
#define T_ID6 20005
#define T_ID7 20006
#define T_ID8 20007
#define T_ID9 20008
#define T_ID10 20009
#define T_ID11 20010
#define T_ID12 20011
#define T_ID13 20012
#define T_ID14 20013
#define T_ID15 20014
#define T_ID16 20015
#define T_ID17 20016
#define T_ID18 20017
#define T_ID19 20018
#define T_ID20 20019
//管理员登录的用户名全局变量,为以后修改登录口令服务
 WCHAR g_LogUserName[256];
//全局变量
HWND g_hToolBar=NULL;
#define  IDR_TOOLBAR2 10000
int iCapiton=0;
TBBUTTON ptoolbar[]=
{
	{0,                                                   //指定图标编号,用于按钮的以0

开始的按钮图片索引 
	T_ID1,                                          //工具条按钮的ID,按钮的CommandID 
	TBSTATE_ENABLED,                  //可用状态,按钮的状态标志 
	TBSTYLE_BUTTON,                    //指定创建一个可以下按的按钮,按钮的风格标志 
	0,                                                 //保留,由应用程序定义该参数意义 
	iCapiton},           //按钮字串索引 

	/*{0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0}, */

	{1,T_ID2,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,iCapiton},
	{2,T_ID3,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,iCapiton},

	//{0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0},

	{3,T_ID4,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,iCapiton},

	////创建一个分割按钮用的竖线 
	//{0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0}, 

	{4,T_ID5,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,iCapiton},
	{5,T_ID6,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,iCapiton},
	{6,T_ID7,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,iCapiton},

	/*{0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0}, */

	{7,T_ID8,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,iCapiton},    
	{8,T_ID9,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,iCapiton}, 

	//{0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0}, 

	{9,T_ID10,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,iCapiton},    
	{10,T_ID11,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,iCapiton},

	/*{0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0}, */

	{11,T_ID12,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,iCapiton},  

	/*{0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0}, */

	{12,T_ID13,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,iCapiton}

};

HWND McreateToolbar(HWND hWnd,HINSTANCE hInst) 
{
	HWND hTool=CreateWindowEx(
		0 ,
		TOOLBARCLASSNAME,
		0,
		WS_CHILD|WS_VISIBLE|TBSTYLE_FLAT|TBSTYLE_TOOLTIPS|CCS_NODIVIDER |

CCS_ADJUSTABLE ,
		0,0,0,0,
		hWnd,
		0,
		hInst,
		0
		);
	/*UpdateWindow(hWnd);
	ShowWindow(hWnd,SW_SHOW);*/
	 

	SendMessage(hTool, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0);
	g_hToolBar=hTool;
	if(hTool)
	{
		 TBADDBITMAP tab;                         //TBADDBITMAP结构包含了向工具栏添

加的位图的信息,Win32下的位图结构
		tab.hInst=NULL; 
		HBITMAP hbmp =LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP55));
		tab.nID=(ULONG)hbmp; //位图资源的ID
		SendMessage(hTool,TB_ADDBITMAP,(WPARAM)13,(LPARAM)&tab);

		SIZE_T ilen;
		TCHAR buff[30];
		

		int index=0;
		lstrcpyW(buff,_T("点菜"));
		ilen = _tcslen(buff);
		buff[ilen]=L'\0';
		iCapiton = (int)SendMessage(hTool,TB_ADDSTRING,0,(LPARAM)buff);
		ptoolbar[index++].iString = iCapiton;

		lstrcpyW(buff,_T("改菜"));
		ilen = _tcslen(buff);
		buff[ilen]=L'\0';
		iCapiton = (int)SendMessage(hTool,TB_ADDSTRING,0,(LPARAM)buff);
		ptoolbar[index++].iString = iCapiton;

		
		lstrcpyW(buff,_T("退菜"));
		ilen = _tcslen(buff);
		buff[ilen]=L'\0';
		iCapiton = (int)SendMessage(hTool,TB_ADDSTRING,0,(LPARAM)buff);
		ptoolbar[index++].iString = iCapiton;

		lstrcpyW(buff,_T("开台"));
		ilen = _tcslen(buff);
		buff[ilen]=L'\0';
		iCapiton = (int)SendMessage(hTool,TB_ADDSTRING,0,(LPARAM)buff);
		ptoolbar[index++].iString = iCapiton;

		lstrcpyW(buff,_T("预定"));
		ilen = _tcslen(buff);
		buff[ilen]=L'\0';
		iCapiton = (int)SendMessage(hTool,TB_ADDSTRING,0,(LPARAM)buff);
		ptoolbar[index++].iString = iCapiton;


		lstrcpyW(buff,_T("收入管理"));
		ilen = _tcslen(buff);
		buff[ilen]=L'\0';
		iCapiton = (int)SendMessage(hTool,TB_ADDSTRING,0,(LPARAM)buff);
		ptoolbar[index++].iString = iCapiton;


		lstrcpyW(buff,_T("登记支出"));
		ilen = _tcslen(buff);
		buff[ilen]=L'\0';
		iCapiton = (int)SendMessage(hTool,TB_ADDSTRING,0,(LPARAM)buff);
		ptoolbar[index++].iString = iCapiton;

		lstrcpyW(buff,_T("顾客档案"));
		ilen = _tcslen(buff);
		buff[ilen]=L'\0';
		iCapiton = (int)SendMessage(hTool,TB_ADDSTRING,0,(LPARAM)buff);
		ptoolbar[index++].iString = iCapiton;

		lstrcpyW(buff,_T("送餐结算"));
		ilen = _tcslen(buff);
		buff[ilen]=L'\0';
		iCapiton = (int)SendMessage(hTool,TB_ADDSTRING,0,(LPARAM)buff);
		ptoolbar[index++].iString = iCapiton;


		lstrcpyW(buff,_T("收银结算"));
		ilen = _tcslen(buff);
		buff[ilen]=L'\0';
		iCapiton = (int)SendMessage(hTool,TB_ADDSTRING,0,(LPARAM)buff);
		ptoolbar[index++].iString = iCapiton;

		lstrcpyW(buff,_T("顾客结算"));
		ilen = _tcslen(buff);
		buff[ilen]=L'\0';
		iCapiton = (int)SendMessage(hTool,TB_ADDSTRING,0,(LPARAM)buff);
		ptoolbar[index++].iString = iCapiton;
		 
		lstrcpyW(buff,_T("固产管理"));
		ilen = _tcslen(buff);
		buff[ilen]=L'\0';
		iCapiton = (int)SendMessage(hTool,TB_ADDSTRING,0,(LPARAM)buff);
		ptoolbar[index++].iString = iCapiton;

		lstrcpyW(buff,_T("系统锁定"));
		ilen = _tcslen(buff);
		buff[ilen]=L'\0';
		iCapiton = (int)SendMessage(hTool,TB_ADDSTRING,0,(LPARAM)buff);
		ptoolbar[index++].iString = iCapiton;
		
		
		SendMessage(hTool,TB_ADDBUTTONS,(WPARAM)13,(LPARAM)&ptoolbar);
		SendMessage(hTool,TB_SETBUTTONWIDTH,0,(LPARAM) MAKELONG (45,45));
		SendMessage(hTool,TB_SETBUTTONSIZE,0,(LPARAM)MAKELPARAM(45,45));
		SendMessage(hTool,TB_SETBITMAPSIZE,0,(LPARAM)MAKELONG(35,35));
		SendMessage(hTool, TB_AUTOSIZE, 0, 0);
		return hTool;
	}
	return NULL;
	
	 
}
//状态栏
HWND hwndStatus;
void moveStatus(HWND hwnd)  
{  
	RECT rcClient;  
	int width[3];                       //状态栏分割数组   
	GetClientRect(hwnd, &rcClient);     //获取父窗口矩形   
	int length=rcClient.right/3;        //根据父窗口宽度来分割指定大小   
	width[0]=length;                    //状态栏第一栏宽度,为分割长度length   
	width[1]=length*2;                  //状态栏往后栏目宽度,为length*栏目标号   
	width[2]=length*3;  

	//根据width数组来设置状态栏   
	SendMessage(hwndStatus, SB_SETPARTS, 3, (LPARAM)(LPINT)width);  
	MoveWindow(hwndStatus,0,0,0,0,TRUE);  
}  


//创建状态栏
HWND CreateMStatus(HWND hwnd)
{
	//创建一个状态栏   
	HINSTANCE hInst=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
	hwndStatus=CreateWindow(STATUSCLASSNAME,L"",SBS_SIZEGRIP|WS_CHILD | WS_VISIBLE,  
		0,0,0,0,hwnd,NULL,hInst,NULL);  
	//移动初始化状态栏   
	moveStatus(hwnd);  
	//设置状态栏分栏文本,WPARAM指定栏目   
	 
	SendMessage(hwndStatus, SB_SETTEXT, (WPARAM)0, (LPARAM)g_ManagerName);  
	//使用格式化字符串来设置状态栏文本 

	//获取本地时间
	static SYSTEMTIME mytime;
	GetLocalTime(&mytime);
	TCHAR szLocalTime[256];
	
	wsprintf(szLocalTime,L"登录时间:%04d—%02d—%02d %02d:%02d:

%02d",mytime.wYear,mytime.wMonth,mytime.wDay,mytime.wHour,mytime.wMinute,mytime.wSecond);


	TCHAR status_line[256];
	TCHAR status_size[256];

	wsprintf(status_line,TEXT("%s %s所有"),TEXT("软件所有权归"),g_ManagerName);  
	wsprintf(status_size,TEXT("%s"),szLocalTime);  
	SendMessage(hwndStatus, SB_SETTEXT, (WPARAM)1, (LPARAM)status_line);  
	SendMessage(hwndStatus, SB_SETTEXT, (WPARAM)2, (LPARAM)status_size);  
	return NULL;
}
//定义菜谱数据库链接
void GetMenuFromDatabase(HWND hwnd,WPARAM wParam);
SQLBIGINT g_MenuID;
SQLWCHAR g_MenuName[200][200];
//工具栏消息处理
void InMainWndOnCommandMessageForToolBar(HWND hwnd,WPARAM wParam);
//数据库连接相关变量
#define LOGIN_TIMEOUT 30
#define MAXBUFLEN 255
#define CHECKDBSTMTERROR(hwnd,result,hstmt)   if(SQL_ERROR==result){ShowDBStmtError

(hwnd,hstmt);return;}
#define MAX_LOADSTRING 100

//对话框过程
INT_PTR CALLBACK LogInProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);//登录进

度条对话框
INT_PTR CALLBACK ManagerProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);//管理

员登录对话框
INT_PTR CALLBACK AboutProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);//关于对

话框
INT_PTR CALLBACK AddItemToMenu(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);//增

加菜肴
INT_PTR CALLBACK GetMenuInfoProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);//

获取数据中菜肴信息对话框
//处理对话
void InMainWndOnCommandMessage(WPARAM,HWND);
void InManagerOnCommandMessage(WPARAM,HWND);

void LoadToolBar(HWND hwnd);
//数据库处理相关函数
void ShowDBError(HWND hwnd,SQLSMALLINT type,SQLHANDLE sqlHandle);
void ShowDBConnError(HWND hwnd,SQLHDBC hdbc);
void ShowDBStmtError(HWND hwnd,SQLHSTMT hstmt);
void Login(HWND hwnd,WPARAM wParam);
void Save(HWND hwnd);

//全局变量申明
CMyMainWnd *ghWnd=NULL;
 
//MyMainWnd的实现部分
//构造函数实现
CMyMainWnd::CMyMainWnd()
{
	ZeroMemory(szClassName,sizeof(szClassName)/sizeof(WCHAR));
	 WCHAR classname[MAX_PATH]=TEXT("MyMainWnd");
	 wsprintf(szClassName,classname);

}
//析构函数实现
CMyMainWnd::~CMyMainWnd()
{

}
//初始化实现
void CMyMainWnd::Init()
{

	
	WNDCLASS wndclass;
	wndclass.cbClsExtra=0;
	wndclass.cbWndExtra=0;
	wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
	wndclass.hCursor=LoadCursor(GetModuleHandle(NULL),MAKEINTRESOURCE(IDC_CURSOR1));
	wndclass.hIcon=LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE(IDI_ICON13));
	wndclass.hInstance=GetModuleHandle(NULL);
	wndclass.lpfnWndProc= MyMainWndProc;
	wndclass.lpszClassName=szClassName;
	wndclass.lpszMenuName=MAKEINTRESOURCE(IDC_MY);
	wndclass.style=CS_HREDRAW|CS_VREDRAW;

	if (!RegisterClass(&wndclass))
	{
		return;
	}

	//注册左侧用户信息窗口
	wndclass.lpfnWndProc	= MyLeftWndProc;
	wndclass.lpszMenuName	= NULL;
	wndclass.lpszClassName	= szLeftWndClass;
	wndclass.hIcon = NULL;
	wndclass.hCursor		= LoadCursor(NULL, IDC_HAND);
	RegisterClass(&wndclass);
	//注册右侧窗口1信息
	wndclass.lpfnWndProc	= MyRightWndProc;
	wndclass.lpszMenuName	= NULL;
	wndclass.lpszClassName	= szRightWndClass;
	wndclass.hIcon = NULL;
	wndclass.hCursor		= LoadCursor(NULL, IDC_HAND);
	RegisterClass(&wndclass);

	//注册右侧窗口2信息
	wndclass.lpfnWndProc	= MyRightWnd2Proc;
	wndclass.lpszMenuName	= NULL;
	wndclass.lpszClassName	= szRightWnd2Class;
	wndclass.hIcon = NULL;
	wndclass.hCursor		= LoadCursor(NULL, IDC_HAND);
	RegisterClass(&wndclass);
	//注册上侧窗口
	wndclass.lpfnWndProc	= MyTopWndProc;
	wndclass.lpszMenuName	= NULL;
	wndclass.lpszClassName	= szTopWndClass;
	wndclass.hIcon = NULL;
	wndclass.hCursor		= LoadCursor(NULL, IDC_HAND);
	RegisterClass(&wndclass);


	hMainWnd=CreateWindow(szClassName,
		TEXT("财神餐饮管理系统1.0版"),
		WS_OVERLAPPEDWINDOW &~WS_MAXIMIZEBOX&~WS_THICKFRAME,
		0,
		0,
		1366,
		768,
		NULL,
		NULL,
		wndclass.hInstance,
		NULL);

	DialogBox(wndclass.hInstance,MAKEINTRESOURCE(IDD_LOGIN),NULL,LogInProc);
	ShowWindow(hMainWnd,TRUE);
	UpdateWindow(hMainWnd);
}
//消息循环实现
void CMyMainWnd::MessageLoop()
{
	 
	MSG msg;
	while(GetMessage(&msg,NULL,0,0))
	{
		 
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		
	}
}
//主窗口过程
LRESULT CALLBACK CMyMainWnd::MyMainWndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM 

lPram)
{
	PAINTSTRUCT ps;
	HDC hdc;
	static int cxClient,cyClient;
	RECT rect;
	 static int time=0;
	//static int T=0;
	 LPNMHDR pnmh;
	 LPTOOLTIPTEXT lpttt;
	 
	  
	switch(message)
	{
	//case WM_NCHITTEST:
 //          break;//屏蔽鼠标信息,及鼠标移动,按下或释放
	case WM_COMMAND:
		{
			//管理员登录对话
			InMainWndOnCommandMessage(wParam,hwnd);
			//工具栏控件对话
			InMainWndOnCommandMessageForToolBar(hwnd,wParam);
			
			break;
		}
	case WM_NOTIFY:
		{
			pnmh = (LPNMHDR)lPram;
			switch (pnmh->code) 
			{
			case TTN_GETDISPINFO: // 工具提示
				lpttt = (LPTOOLTIPTEXT)lPram;
				switch (lpttt->hdr.idFrom) 
				{
				case T_ID1: lpttt->lpszText = _T("点菜"); break;
				case T_ID2: lpttt->lpszText = _T("改菜"); break;
				case T_ID3: lpttt->lpszText = _T("退菜"); break;
				case T_ID4: lpttt->lpszText = _T("开台"); break;
				case T_ID5: lpttt->lpszText = _T("预定"); break;
				case T_ID6: lpttt->lpszText = _T("收入管理"); break;
				case T_ID7: lpttt->lpszText = _T("登记支出"); break;
				case T_ID8: lpttt->lpszText = _T("顾客档案"); break;
				case T_ID9: lpttt->lpszText = _T("送餐结算"); break;
				case T_ID10: lpttt->lpszText = _T("收银结算"); break;
				case T_ID11: lpttt->lpszText = _T("顾客结算"); break;
				case T_ID12: lpttt->lpszText = _T("固产管理"); break;
				case T_ID13: lpttt->lpszText = _T("系统锁定"); break;
				}
				break;
			}
			break;
		}
	case WM_USER+2:
		{
			CreateChildWindow(hwnd);
			break;
		}
	case WM_USER+1:
		{
			CreateMStatus(hwnd);
			 
			//KillTimer(hwnd,1);
			break;
		}
	case WM_CREATE:
		{

			
			//// 设置分层属性
			//SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) 

| WS_EX_LAYERED);
			//// 设置透明度 0 - completely transparent   255 - opaque
			//SetLayeredWindowAttributes(hwnd, 0, 255, LWA_ALPHA);

			//SetTimer(hwnd,1,1000,NULL);//设置定时器
			cxClient=LOWORD(lPram);
			cyClient=HIWORD(lPram);
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
			McreateToolbar(hwnd,hInst);//创建工具栏
			//禁用所有工具栏
			for (int ToolBarId=T_ID1;ToolBarId<=T_ID13;ToolBarId++)
			{
				SendMessage(g_hToolBar, TB_SETSTATE, (WPARAM)ToolBarId, 

(LPARAM)MAKELONG(TBSTATE_INDETERMINATE , 0));
			}
			//创建状态栏
			CreateMStatus(hwnd);
			 
			

			//禁用所有菜单
			HMENU hMenu= GetMenu(hwnd);
			for (int MenuId=ID_32779;MenuId<=ID_32823;MenuId++)
			{
				EnableMenuItem(hMenu,MenuId, MF_GRAYED);
			}
			EnableMenuItem(hMenu,IDM_ABOUT, MF_GRAYED);
			EnableMenuItem(hMenu,ID_USEHELP, MF_GRAYED);
			EnableMenuItem(hMenu,ID_ACCESSNET, MF_GRAYED);
			
			 
			break;
		}
	case WM_SIZE:
		{
			/*GetClientRect(hwnd,&rect);
			MoveWindow(hwnd,rect.left,rect.top,rect.right,rect.bottom,TRUE);*/
			return 0;
		}
	case WM_ERASEBKGND:
		{
			 
			 return 0;
		}
	case WM_TIMER:
		{
			 
		    time++;
			 if (time>=5)
			 {
				KillTimer(hwnd,1);
				time=0;
				break;
				 
			 }
			 SendMessage(hwnd,WM_USER+1,NULL,NULL);

			 break;
		}
	case WM_PAINT:
		{
			hdc=BeginPaint(hwnd,&ps);
			GetClientRect(hwnd,&rect);
			cxClient=rect.right;
			cyClient=rect.bottom-40;

			HDC hMemDC=CreateCompatibleDC(hdc);
			HBITMAP hMemBM=CreateCompatibleBitmap(hdc,cxClient,cyClient);
			SelectObject(hMemDC,hMemBM);
		    if (bShowInMainWndOnPain)
			{
				static Image *gImag=NULL;
				 
				 
				Graphics g(hMemDC);
				if (gImag==NULL)
				{
					gImag=Image::FromFile(_T("main.png"));
				}
				 
				{
					g.DrawImage(gImag,0,0,cxClient,cyClient);
					 
					 
				}
				BitBlt(hdc,0,40,cxClient,cyClient,hMemDC,0,0,SRCCOPY);
			}
			DeleteDC(hMemDC);
			DeleteObject(hMemBM);
			EndPaint(hwnd,&ps);
			break;
		}
	case WM_DESTROY:
		{
			if (IDYES==MessageBox(hwnd,TEXT("应用程序即将关闭,\n确认退出

吗?"),TEXT("安全提示"),MB_YESNO|MB_ICONINFORMATION))
			{
				DestroyWindow(hwnd);
				return 0;

			}
			
			return 0;
		}
	case WM_CLOSE:
		{
			if (IDYES==MessageBox(hwnd,TEXT("应用程序即将关闭,\n确认退出

吗?"),TEXT("安全提示"),MB_YESNO|MB_ICONINFORMATION))
			{
				PostQuitMessage(0);
				return 0;
			}

			return 0;;
		}
	default:
		return DefWindowProc(hwnd,message,wParam,lPram);
		
	}
	return 0;
}

 

 



 


//进度条对话框过程函数
INT_PTR CALLBACK LogInProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{

	UNREFERENCED_PARAMETER(lParam);
	HWND hwndprocess;
	static LONG nMinPos=0,nMaxPos=100,nPos=0,fRedraw=0;
	static int nT=0;
	 
	switch(message)
	{
	case WM_LBUTTONDOWN: //当鼠标左键点击时可以拖曳窗口
		{
			PostMessage(hDlg, WM_SYSCOMMAND, SC_MOVE | HTCAPTION, 0); 
			return 0;
		}
	case WM_CTLCOLORSTATIC://设置静态文本框字体颜色
		{
			if (GetDlgItem(hDlg, IDC_STATIC1) == (HWND)lParam )//这里的1是静态

文本框的ID
			{
				SetTextColor((HDC)wParam, RGB(255,0,0));
				SetBkMode((HDC)wParam, TRANSPARENT);
				//return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_BTNFACE));
				return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}
			 
			break;
		}

	case WM_INITDIALOG:
		{
			HWND hParent=GetParent(hDlg);
			ShowWindow(hParent,FALSE);
			//设置动画
			 

			//将对话框提到Z轴最上方
			BringWindowToTop ( hDlg );
			//略微提高对话框的的优先级
			SetForegroundWindow(hDlg);

			//设置对话框图标
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			SendMessage(hDlg, WM_SETICON, ICON_BIG, (LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON1)));  

			SetTimer(hDlg,1,100,NULL);
			hwndprocess=GetDlgItem(hDlg,IDC_PROGRESS1);


			SendMessage( hwndprocess, SBM_SETRANGE, nMinPos, nMaxPos );

			//SendMessage(hwndPress,PBM_SETSTEP,20,0);
			SendMessage(hwndprocess,PBM_STEPIT,0,0);

			 
			SendMessage(hwndprocess,PBM_SETBARCOLOR ,0,RGB(0,255,0));
			SendMessage(hwndprocess,PBM_SETBKCOLOR  ,0,RGB(120,120,120));
			//SendMessage( hwndPress, PBM_SETPOS, (WPARAM)nPos,0);
			SendMessage(hwndprocess,PBM_SETSTATE,PBST_NORMAL,0);
			return (INT_PTR)TRUE;
		}
	case WM_TIMER:
		{
			nPos+=1;
		

			/*hwndprocess=GetDlgItem(hDlg,IDC_PROGRESS1);
			srand((unsigned int)time(0));*/
			

			TCHAR szText[256];

			nT+=1;
			wsprintf(szText,TEXT("%d %%"),nT);
			SetDlgItemText(hDlg,IDC_STATIC22,NULL);
			SetDlgItemText(hDlg,IDC_STATIC22,szText);

			hwndprocess=GetDlgItem(hDlg,IDC_PROGRESS1);
			//SendMessage( hwndPress, SBM_SETRANGE, nMinPos, nMaxPos );
			SendMessage( hwndprocess, PBM_SETPOS, (WPARAM)nPos, 0 );
			if (nPos>=100)
			{
				
				KillTimer(hDlg,1);
				EndDialog(hDlg,LOWORD(wParam));
				HWND hParent=GetParent(hDlg);
				 
				
				
				BringWindowToTop(hParent);
				SetForegroundWindow(hParent);
				ShowWindow(hParent,SW_SHOW);
				 
				return (INT_PTR)TRUE;
			}
			break;
		}
	case WM_COMMAND:
		{
			if ( LOWORD(wParam)==IDCANCEL)
			{
				if (IDYES==MessageBox(NULL,TEXT("程序正在加载后台配置\n是否

确认退出?"),TEXT("提示"),MB_YESNO|MB_ICONERROR))
				{   
					KillTimer(hDlg,1);
					EndDialog(hDlg,LOWORD(wParam));
					
					PostQuitMessage(0);
					break;
				}
				
				return (INT_PTR)TRUE;
			}
			break;
		}
	 
	case WM_SIZE:
		{
			break;
		}
	case WM_PAINT:
		{
			 
			return 0;
		}
	case WM_ERASEBKGND:
		{
			return 0;
		}
	 
	case WM_DESTROY:
		{
			ShowWindow(hDlg,FALSE);
			break;
		}
	}
	return (INT_PTR)FALSE;
}



//GID+载入保护管理
Gdiplus::GdiplusStartupInput m_gdiplusStartupInput;
ULONG_PTR m_pGdiToken;
//Main函数
int WINAPI WinMain( __in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in LPSTR 

lpCmdLine, __in int nShowCmd )
{
	HANDLE h=CreateMutex(NULL,FALSE,TEXT("zhengjinwei-zjw-tiance"));
	if (GetLastError()==ERROR_ALREADY_EXISTS)
	{
		MessageBox(NULL,TEXT("当前已有 retaruant management实例在运行!\n你懂

的!"),TEXT("天策提示"),MB_ICONINFORMATION);
		CloseHandle(h);
		return 0;
	}
	 
	//初始化工具条
	 
	INITCOMMONCONTROLSEX icex;
	// Ensure that the common control DLL is loaded. 
	icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
	icex.dwICC  = ICC_BAR_CLASSES;
	InitCommonControlsEx(&icex);

	Gdiplus::GdiplusStartup(&m_pGdiToken,&m_gdiplusStartupInput,NULL); 

	CMyMainWnd *pmymainwnd=new CMyMainWnd();
	ghWnd=pmymainwnd;
	pmymainwnd->Init();
	pmymainwnd->MessageLoop();

	delete pmymainwnd;
	CloseHandle(h);

	Gdiplus::GdiplusShutdown(m_pGdiToken);
	return 0;
}
INT_PTR CALLBACK ChangeManagerInfoProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM 

lParam);//修改口令对话框过程声明
INT_PTR CALLBACK KaiTaiProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);//开台对

话框o
void CommandToDianCai(HWND hwnd,WPARAM wParam);//点菜处理
INT_PTR CALLBACK PopDianCaiProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);//点

菜对话框

INT_PTR CALLBACK StartShangCaiProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM 

lParam);//开始上菜处理对话框
INT_PTR CALLBACK KaiTaiDetailInfoProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM 

lParam);//开台详细情况
INT_PTR CALLBACK UpdateKaiTaiInfoProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM 

lParam);//修改开台资料
INT_PTR CALLBACK GaiCaiProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);//改菜
INT_PTR CALLBACK TuiCaiProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);//退菜
INT_PTR CALLBACK CustomerInfoProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);//

客户档案
INT_PTR CALLBACK CeTaiProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);//撤台
INT_PTR CALLBACK CustomerSuggestionsProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM 

lParam);//顾客意见反馈
INT_PTR CALLBACK StaffRecordProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);//

员工档案
INT_PTR CALLBACK StaffSuggestionsProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM 

lParam);//员工计事
INT_PTR CALLBACK CaiDanDaLeiProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);//

菜单大类维护
//此函数响应主窗口中鼠标点击菜单


void InMainWndOnCommandMessage(WPARAM wParam,HWND hWnd)
{
	switch(LOWORD(wParam))
	{
	case IDM_LOGIN://用户登录
		{

			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE);
			DialogBox(hInst,MAKEINTRESOURCE

(IDD_DIALOGMANAGER),hWnd,ManagerProc);
			break;
		}
	case ID_EXITFILES://退出
		{
			 
			PostQuitMessage(0);
			break;
		}
	case IDM_ABOUT: //关于
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE);
			DialogBox(hInst,MAKEINTRESOURCE(IDD_ABOUTBOX),hWnd,AboutProc);
			break;
		}
	case ID_ACCESSNET://访问官网
		{
			ShellExecute

(NULL,L"open",L"http://tiance.renhe.cn/",NULL,NULL,SW_SHOW);
			break;
		}
	case ID_USEHELP://用户帮助
		{
			ShellExecute(NULL,L"open",L"help.chm",NULL,NULL,SW_SHOW);
			break;
		}
	case ID_32779://点菜
		{
			//MessageBox(NULL,TEXT("点菜"),TEXT(""),MB_OK|MB_ICONINFORMATION);
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE);
			DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG3),hWnd,PopDianCaiProc);
			break;
		}
	case ID_32823://上菜
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE);
			DialogBox(hInst,MAKEINTRESOURCE

(IDD_DIALOG4),hWnd,StartShangCaiProc);
			break;
		}
	case ID_32780://改菜
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE);
			DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG8),hWnd,GaiCaiProc);
			break;
		}
	case ID_32781://退菜
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE);
			DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG9),hWnd,TuiCaiProc);
			break;
		}
	case ID_32782://开台
		{
			//MessageBox(NULL,TEXT("开台"),TEXT(""),MB_OK|MB_ICONINFORMATION);
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE);
			DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG2),hWnd,KaiTaiProc);
			break;
		}
	case ID_32783://撤台
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE);
			DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG16),hWnd,CeTaiProc);
			break;
		}
	//case ID_32784://换台
	//	{
	//		//MessageBox(NULL,TEXT("换台"),TEXT(""),MB_OK|MB_ICONINFORMATION);
	//		break;
	//	}
	case ID_32785://修改开台资料
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE);
			DialogBox(hInst,MAKEINTRESOURCE

(IDD_DIALOG7),hWnd,UpdateKaiTaiInfoProc);
			break;
		}
	case ID_32786://开台详细资料
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE);
			DialogBox(hInst,MAKEINTRESOURCE

(IDD_DIALOG6),hWnd,KaiTaiDetailInfoProc);
			break;
		}
	case ID_32787://收银员结算
		{
			MessageBox(NULL,TEXT("收银员结算"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			break;
		}
	case ID_32788://送餐员结算
		{
			MessageBox(NULL,TEXT("送餐员结算"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			break;
		}
	case ID_32789://顾客结算
		{
			MessageBox(NULL,TEXT("顾客结算"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			break;
		}
	case ID_32790://收入管理
		{
			MessageBox(NULL,TEXT("收入管理"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			break;
		}
	case ID_32791://支出及入库管理
		{
			MessageBox(NULL,TEXT("支出及入库管理"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			break;
		}
	case ID_32792://库存管理
		{
			MessageBox(NULL,TEXT("库存管理"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			break;
		}
	case ID_32793://出库管理
		{
			MessageBox(NULL,TEXT("出库管理"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			break;
		}
	case ID_32813://收入分析
		{
			MessageBox(NULL,TEXT("收入分析"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			break;
		}
	case ID_32814://支出分析
		{
			MessageBox(NULL,TEXT("支出分析"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			break;
		}
	case ID_32815://利润分析
		{
			MessageBox(NULL,TEXT("利润分析"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			break;
		}
	case ID_32816://毛利润分析
		{
			MessageBox(NULL,TEXT("毛利润分析"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			break;
		}
	case ID_32817://投资、回报分析
		{
			MessageBox(NULL,TEXT("投资、回报分析"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			break;
		}
	case ID_32818://入库分析
		{
			MessageBox(NULL,TEXT("入库分析"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			break;
		}
	case ID_32819://出库分析
		{
			MessageBox(NULL,TEXT("出库分析"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			break;
		}
	case ID_32820://菜肴消费分析
		{
			MessageBox(NULL,TEXT("菜肴消费分析"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			break;
		}
	case ID_32821://顾客消费分析
		{
			MessageBox(NULL,TEXT("顾客消费分析"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			break;
		}
	case ID_32822://员工工作分析
		{
			MessageBox(NULL,TEXT("员工工作分析"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			break;
		}
	case ID_32811://顾客档案
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE);
			DialogBox(hInst,MAKEINTRESOURCE

(IDD_DIALOG11),hWnd,CustomerInfoProc);
			break;
		}
	case ID_32812://顾客意见反馈
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE);
			DialogBox(hInst,MAKEINTRESOURCE

(IDD_DIALOG17),hWnd,CustomerSuggestionsProc);
			break;
		}
	case ID_32807://员工档案
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE);
			DialogBox(hInst,MAKEINTRESOURCE

(IDD_DIALOG18),hWnd,StaffRecordProc);
			break;
		}
	case ID_32808://员工卡管理
		{
			MessageBox(NULL,TEXT("员工卡管理功能尚未开通"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			break;
		}
	case ID_32809://员工计事
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE);
			DialogBox(hInst,MAKEINTRESOURCE

(IDD_DIALOG22),hWnd,StaffSuggestionsProc);
			break;
		}
	case ID_32810://角色管理权限
		{
			MessageBox(NULL,TEXT("角色管理权限功能尚未开通"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			break;
		}
	case ID_32797://菜单
		{
			MessageBox(NULL,TEXT("菜单"),TEXT(""),MB_OK|MB_ICONINFORMATION);
			break;
		}
	case ID_32798://菜单大类
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE);
			DialogBox(hInst,MAKEINTRESOURCE

(IDD_DIALOG23),hWnd,CaiDanDaLeiProc);
			break;
		}
	case ID_32799://菜单小类
		{
			MessageBox(NULL,TEXT("菜单小类"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			break;
		}
	case ID_32800://特价菜
		{
			MessageBox(NULL,TEXT("特价菜"),TEXT(""),MB_OK|MB_ICONINFORMATION);
			break;
		}
	case ID_32801://餐桌设置
		{
			MessageBox(NULL,TEXT("餐桌设置"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			break;
		}
	case ID_32802://餐厅管理
		{
			MessageBox(NULL,TEXT("餐厅管理"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			break;
		}
	case ID_32803://固定资产管理
		{
			MessageBox(NULL,TEXT("固定资产管理"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			break;
		}
	case ID_32804://系统参数设置
		{
			
			break;
		}
	case ID_32805://数据备份
		{
			MessageBox(NULL,TEXT("数据备份"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			break;
		}
	case ID_32806://数据清理
		{
			MessageBox(NULL,TEXT("数据清理"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			break;
		}
	case ID_32794://修改口令
		{
			//MessageBox(NULL,TEXT("修改口令"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			//说明与分析:修改口令的功能是修改当前登录管理员的登录名和密码,所

以先要获取当前登陆管理员的姓名和密码,然后再进行数据库更新操作
			//全局变量g_ManagerName中保存有管理员的用户名信息,哈哈,这是以前在

设置工具栏的时候设置的,没想到现在用到了,真的是有先见之明啊
			//在此处弹出对话框进行处理
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE);
			DialogBox(hInst,MAKEINTRESOURCE

(IDD_DIALOG1),hWnd,ChangeManagerInfoProc);
			
			break;
		}
	case ID_32795://系统锁定
		{
			//MessageBox(NULL,TEXT("系统锁定"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			ShowWindow(hWnd,FALSE);
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE);
			DialogBox(hInst,MAKEINTRESOURCE

(IDD_DIALOGMANAGER),hWnd,ManagerProc);
			break;
		}
	case ID_32796://操作日志
		{
			MessageBox(NULL,TEXT("操作日志"),TEXT(""),MB_OK|

MB_ICONINFORMATION);
			break;
		}
	default:
		break;
	}
}
 
HICON hicon;
HIMAGELIST hImgListSm; //ImageList的句柄
HIMAGELIST hImgListLg;
HWND hListview = NULL;//ListView的句柄
 
INT_PTR CALLBACK AddCaiDanDaLeiProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM 

lParam);//增加菜单大类
INT_PTR CALLBACK CaiDanDaLeiProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)//菜

单大类维护
{
	UNREFERENCED_PARAMETER(lParam);
   
	
	switch(message)
	{
	case WM_INITDIALOG:
		{

			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			//设置对话框图标
			SendMessage(hDlg, WM_SETICON, ICON_BIG,(LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON28))); 
			// 获取ListView控件的句柄
			hListview = GetDlgItem(hDlg, IDC_LIST1);

			ListView_SetExtendedListViewStyle(hListview,LVS_EX_FULLROWSELECT|

LVS_EX_GRIDLINES|LVS_EX_AUTOSIZECOLUMNS|LVS_EX_FULLROWSELECT); 
			// 设置ListView的列
			LVCOLUMN vcl;
			vcl.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;
			// 第一列
			vcl.pszText = L"菜单大类";//列标题
			vcl.cx = 400;//列宽
			vcl.iSubItem = 0;//子项索引,第一列无子项
			//ListView_InsertColumn(hListview, 0, &vcl);
			SendMessage(hListview,LVM_INSERTCOLUMN,0,(LPARAM)&vcl);

			 
			 
			// 初始化ImageList
			hImgListSm = ImageList_Create(GetSystemMetrics

(SM_CXSMICON),GetSystemMetrics(SM_CYSMICON),ILC_MASK,1,0);
			hImgListLg = ImageList_Create(GetSystemMetrics

(SM_CXICON),GetSystemMetrics(SM_CYICON),ILC_MASK,1,0);
			hicon = LoadIcon(hInst,MAKEINTRESOURCE(IDI_ICON30));
			// 添加图标
			ImageList_AddIcon(hImgListSm, hicon);
			ImageList_AddIcon(hImgListLg, hicon);
			DestroyIcon(hicon);
			// 将ListView与ImageList关联
			ListView_SetImageList(hListview, hImgListLg, LVSIL_NORMAL);
			ListView_SetImageList(hListview, hImgListSm, LVSIL_SMALL);
			
			return (INT_PTR)TRUE;
		}
	case WM_COMMAND:
		{
			if (LOWORD(wParam)==IDCANCEL)
			{
				// 销毁ImageList
				ImageList_Destroy(hImgListLg);
				ImageList_Destroy(hImgListSm);
				DestroyWindow(hListview);//不再需要
				EndDialog(hDlg,LOWORD(wParam));
				break;
			}
			switch(LOWORD(wParam))
			{
			case IDC_BUTTON1://add
				{
					HINSTANCE hInst=(HINSTANCE)GetWindowLong

(hDlg,GWL_HINSTANCE);
					DialogBox(hInst,MAKEINTRESOURCE

(IDD_DIALOG24),hDlg,AddCaiDanDaLeiProc);
					break;
				}
			case IDC_BUTTON2://change
				{
					break;
				}
			case IDC_BUTTON3://delete
				{
					break;
				}
			case IDC_BUTTON4://return
				{
					EndDialog(hDlg,LOWORD(wParam));
					break;
				}
			}
			break;
		}
	}
	return (INT_PTR)FALSE;
}
void SureToAddCaiDanDaLeiOnAddCaiDanDaLeiProc(HWND hwnd);//确认增加菜单大类处理
INT_PTR CALLBACK AddCaiDanDaLeiProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM 

lParam)//增加菜单大类
{
	UNREFERENCED_PARAMETER(lParam);
	switch(message)
	{
	case WM_INITDIALOG:
		{
			return (INT_PTR)TRUE;
		}
	case WM_COMMAND:
		{
			if (LOWORD(wParam)==IDCANCEL)
			{
				EndDialog(hDlg,LOWORD(wParam));
				break;
			}
			switch(LOWORD(wParam))
			{
			case IDC_BUTTON1://q确认增加
				{
					break;
				}
			case IDC_BUTTON2://返回
				{
					EndDialog(hDlg,LOWORD(wParam));
					break;
				}
			}
			break;
		}
	}
	return (INT_PTR)FALSE;
}
 void SureToAddCaiDanDaLeiOnAddCaiDanDaLeiProc(HWND hwnd)//确认增加菜单大类处理
 {
	 //获取输入的菜名
	 WCHAR l_szCaiName[256];
	 GetDlgItemText(hwnd,IDC_EDIT1,l_szCaiName,sizeof(l_szCaiName)/sizeof(WCHAR));
	 //判断是否为空
	 if (*l_szCaiName==NULL)
	 {
		 MessageBox(hwnd,L"请输入菜名!",L"提示",MB_ICONERROR|MB_OK);
		 return;
	 }
	 //
 }
 
void SureToGetStaffSuggestions(HWND hwnd);//确认将员工的意见导入库处理
void ExportTxtFileOnStaffSuggestionsProc(HWND hwnd);//导出员工意见
INT_PTR CALLBACK StaffSuggestionsProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM 

lParam)//员工计事
{
	UNREFERENCED_PARAMETER(lParam);
	switch(message)
	{
	 
	case WM_CTLCOLORSTATIC:
		{
			if (GetDlgItem(hDlg,IDC_STATIC1) == (HWND)lParam||GetDlgItem

(hDlg,IDC_STATIC2) == (HWND)lParam )
			{
				SetTextColor((HDC)wParam, RGB(255,0,255));
				SetBkMode((HDC)wParam, TRANSPARENT);
				//return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_BTNFACE));
				return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}
			break;
		}
	case WM_INITDIALOG:
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			//设置对话框图标
			SendMessage(hDlg, WM_SETICON, ICON_BIG,(LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON14))); 

			HWND hBn1=GetDlgItem(hDlg,IDC_BUTTON1);
			HBITMAP hbmp1=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP20));//增

加
			SendMessage(hBn1, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp1);

			HWND hBn2=GetDlgItem(hDlg,IDC_BUTTON2);
			HBITMAP hbmp2=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP19));//修

改
			SendMessage(hBn2, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp2);

			HWND hBn3=GetDlgItem(hDlg,IDC_BUTTON3);
			HBITMAP hbmp3=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP51));//修

改
			SendMessage(hBn3, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp3);
			return (INT_PTR)TRUE;
		}
	case WM_COMMAND:
		{
			if (LOWORD(wParam)==IDCANCEL)
			{
				EndDialog(hDlg,LOWORD(wParam));
				break;
			}
			switch(LOWORD(wParam))
			{
			case IDC_BUTTON1://确认
				{
					SureToGetStaffSuggestions(hDlg);
					break;
				}
			case IDC_BUTTON2://返回
				{
					EndDialog(hDlg,LOWORD(wParam));
					break;
				}
			case IDC_BUTTON3://导出txt文件
				{
					ExportTxtFileOnStaffSuggestionsProc(hDlg);
					break;
				}
			}
			break;
		}
	}
	return (INT_PTR)FALSE;
}
void ExportTxtFileOnStaffSuggestionsProc(HWND hwnd)//导出员工意见
{
	//访问数据库
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);


	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select StaffSuggestions from 

staffsuggestion",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;
	WCHAR  *g_szStaffSuggestions=(WCHAR *)calloc(65565,sizeof(WCHAR));

	lstrcatW(g_szStaffSuggestions,L"-----------------------------财神餐饮管理系统 员工

反馈意见一览表-----------------------------");
	lstrcatW(g_szStaffSuggestions,L"\r\n");
	lstrcatW(g_szStaffSuggestions,L"\r\n");
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{
		WCHAR l_szCusSuggestions[256];
		SQLGetData(hstmt,1,SQL_C_WCHAR,l_szCusSuggestions,100,&cbsatid);
		lstrcatW(g_szStaffSuggestions,l_szCusSuggestions);
		lstrcatW(g_szStaffSuggestions,L"\r\n");
		lstrcatW(g_szStaffSuggestions,L"\r\n");
	}
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);
	//保存
	{
		HANDLE hFile;

		ULONG TextLen;
		TextLen = lstrlenW(g_szStaffSuggestions);

		DWORD  num1=0;
		WCHAR *strFileNameTemp=(WCHAR *)calloc(FILENAMESIZE,sizeof(WCHAR));		

	//保存文件名
		WCHAR *strFilePathTemp=(WCHAR *)calloc(FILEPATHSIZE,sizeof(WCHAR));		

	//保存文件路径
		if(SaveFileDlg(hwnd,strFilePathTemp,strFileNameTemp))				

//保存对话框
		{

			hFile = CreateFile(strFilePathTemp, GENERIC_WRITE, 

FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

			if (hFile == INVALID_HANDLE_VALUE) 
			{
				MessageBox(hwnd,L"打开文件失败!",NULL,MB_ICONEXCLAMATION);
			}
			else
			{

				WORD a = 0xfeff;//写入0xfeff让记事本以Unicode方式打开,中文

不会乱码
				WriteFile(hFile, &a, 2, &num1, NULL);
				if(WriteFile(hFile,g_szStaffSuggestions,(TextLen+1)

*2,&num1,NULL))
				{
					MessageBox(hwnd,L"导出txt文件成功!",L"成

功",MB_ICONINFORMATION);
				}
				else
				{
					MessageBox(hwnd,L"导出失败!",L"失

败",MB_ICONEXCLAMATION);
				}
				CloseHandle(hFile);
			}

		}
		free(strFileNameTemp);							//

释放名字空间
		free(strFilePathTemp);							//

释放地址空间

	}
	free(g_szStaffSuggestions);//释放意见空间

}
void SureToGetStaffSuggestions(HWND hwnd)//确认将员工的意见导入库处理
{
	//获取编辑框内容
	WCHAR l_szInfo[256];
	GetDlgItemText(hwnd,IDC_EDIT1,l_szInfo,sizeof(l_szInfo)/sizeof(WCHAR));
	//判断是否为空
	if (*l_szInfo==NULL)
	{
		MessageBox(hwnd,L"请输入内容!",L"提示",MB_OK|MB_ICONERROR);
		return;
	}

	//访问数据库
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

	WCHAR sql[256];//DELETEt1,t2 from t1 LEFTJOINt2 ON t1.id=t2.id WHERE t1.id=25
	wsprintf(sql,L"insert into staffsuggestion(StaffSuggestions) values

('%s')",l_szInfo);
	result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;
	MessageBox(hwnd,L"员工意见已经保存\n您可以点击“导出txt文件”按钮查看客户意见!",L"

提示",MB_ICONINFORMATION|MB_OK);
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);


}
void InitListViewInfoOnStaffRecordProc(HWND hwnd,HWND hListView);//初始化员工档案listview信

息
BOOL InitListViewImageList(HWND hWndListView) ;//插入listview图标
INT_PTR CALLBACK AddStaffInfoOnStaffRecordProc(HWND hDlg, UINT message, WPARAM wParam, 

LPARAM lParam);//增加员工档案
INT_PTR CALLBACK ChangeStaffInfoOnStaffRecordProc(HWND hDlg, UINT message, WPARAM wParam, 

LPARAM lParam);//修改员工档案
void InserStaffInfoToListViewOnStaffRecordProc(HWND hListView,WCHAR szStaffNumber[],WCHAR 

szStaffName[],WCHAR szStaffID[],WCHAR StaffHomeAddress[],WCHAR szStaffPhoneNumber[],WCHAR 

szStaffPost[],WCHAR szStaffState[],WCHAR szStaffExtraInfo[],WCHAR szFastInfo[]);//插入信息
INT_PTR CALLBACK DeleteStaffInfoOnStaffRecordProc(HWND hDlg, UINT message, WPARAM wParam, 

LPARAM lParam);//删除员工档案
void ExportTxtFileOnStaffRecordProc(HWND hwnd);//导出txt文件
INT_PTR CALLBACK StaffRecordProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)//员

工档案
{
	UNREFERENCED_PARAMETER(lParam);
	switch(message)
	{
	case WM_INITDIALOG:
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			//设置对话框图标
			SendMessage(hDlg, WM_SETICON, ICON_BIG,(LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON26))); 
			//创建listview

			RECT rect;
			GetClientRect(hDlg,&rect);

			HWND hListView;
			hListView = CreateWindowEx(LVS_EX_FULLROWSELECT,_T

("SysListView32"),NULL,LVS_REPORT | 
				WS_CHILD |WS_VISIBLE|WS_VSCROLL|WS_HSCROLL,
				0,50,rect.right,rect.bottom-100,hDlg,(HMENU)

1001,hInst,NULL);


			SendMessage(hListView,LVM_SETTEXTCOLOR,0,RGB(0,0,255));//设置文本颜

色

			SendMessage(hListView,LVM_SETTEXTBKCOLOR ,0,RGB(188,198,215));//设

置背景颜色
			SetFocus(hListView);

			ListView_SetItemState(hListView,0,LVIS_SELECTED,LVIS_SELECTED);     

           
			//参数0使第一行处于选择中状态,若为-1则表示所有的行

			ListView_SetExtendedListViewStyle(hListView,LVS_EX_FULLROWSELECT|

LVS_EX_GRIDLINES|LVS_EX_AUTOSIZECOLUMNS);              //设置整行选择风格

			///////////////////////////
			//插入列
			LV_COLUMN lvc;
			lvc.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_FMT|LVCFMT_CENTER;
			lvc.fmt=LVCFMT_CENTER;
			lvc.pszText =L"员工编号";
			lvc.cx = 60;
			SendMessage(hListView,LVM_INSERTCOLUMN,0,(LPARAM)&lvc);


			lvc.pszText = L"员工姓名";
			lvc.cx = 150;
			SendMessage(hListView,LVM_INSERTCOLUMN,1,(LPARAM)&lvc);

			lvc.pszText = L"身份证号";   
			SendMessage(hListView,LVM_INSERTCOLUMN,2,(LPARAM)&lvc);

			lvc.pszText = L"家庭住址";
			SendMessage(hListView,LVM_INSERTCOLUMN,3,(LPARAM)&lvc);

			lvc.pszText = L"联系电话";
			SendMessage(hListView,LVM_INSERTCOLUMN,4,(LPARAM)&lvc);

			lvc.pszText = L"职位";
			SendMessage(hListView,LVM_INSERTCOLUMN,5,(LPARAM)&lvc);

			lvc.pszText = L"发卡状态";
			SendMessage(hListView,LVM_INSERTCOLUMN,6,(LPARAM)&lvc);

			lvc.pszText = L"备注";
			SendMessage(hListView,LVM_INSERTCOLUMN,7,(LPARAM)&lvc);

			lvc.pszText = L"角色";
			SendMessage(hListView,LVM_INSERTCOLUMN,8,(LPARAM)&lvc);
			
			//设置按钮位图
			HWND hBn1=GetDlgItem(hDlg,IDC_BUTTON1);
			HBITMAP hbmp1=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP48));//增

加
			SendMessage(hBn1, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp1);

			HWND hBn2=GetDlgItem(hDlg,IDC_BUTTON2);
			HBITMAP hbmp2=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP49));//修

改
			SendMessage(hBn2, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp2);

			HWND hBn3=GetDlgItem(hDlg,IDC_BUTTON3);
			HBITMAP hbmp3=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP50));//删

除
			SendMessage(hBn3, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp3);

			HWND hBn4=GetDlgItem(hDlg,IDC_BUTTON4);
			HBITMAP hbmp4=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP51));//导

出txt文件
			SendMessage(hBn4, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp4);

			HWND hBn5=GetDlgItem(hDlg,IDC_BUTTON5);
			HBITMAP hbmp5=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP52));//详

细
			SendMessage(hBn5, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp5);

			HWND hBn6=GetDlgItem(hDlg,IDC_BUTTON6);
			HBITMAP hbmp6=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP53));//返

回
			SendMessage(hBn6, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp6);

			//初始化listview数据
			InitListViewImageList(hListView);//图标
			InitListViewInfoOnStaffRecordProc(hDlg,hListView);
			return (INT_PTR)TRUE;
		}
	case WM_COMMAND:
		{
			if (LOWORD(wParam)==IDCANCEL)
			{
				EndDialog(hDlg,LOWORD(wParam));
				break;
			}
			switch(LOWORD(wParam))
			{
			case IDC_BUTTON1://增加
				{
					HINSTANCE hInst=(HINSTANCE)GetWindowLong

(hDlg,GWL_HINSTANCE);
					DialogBox(hInst,MAKEINTRESOURCE

(IDD_DIALOG19),hDlg,AddStaffInfoOnStaffRecordProc);
					break;
				}
			case IDC_BUTTON2://修改
				{
					HINSTANCE hInst=(HINSTANCE)GetWindowLong

(hDlg,GWL_HINSTANCE);
					DialogBox(hInst,MAKEINTRESOURCE

(IDD_DIALOG20),hDlg,ChangeStaffInfoOnStaffRecordProc);
					break;
				}
			case IDC_BUTTON3://删除
				{
					HINSTANCE hInst=(HINSTANCE)GetWindowLong

(hDlg,GWL_HINSTANCE);
					DialogBox(hInst,MAKEINTRESOURCE

(IDD_DIALOG21),hDlg,DeleteStaffInfoOnStaffRecordProc);
					break;
				}
			case IDC_BUTTON4://导出txt文件
				{
					ExportTxtFileOnStaffRecordProc(hDlg);
					break;
				}
			case IDC_BUTTON5://详细
				{
					break;
				}
			case IDC_BUTTON6://返回
				{
					EndDialog(hDlg,LOWORD(wParam));
					break;
				}
			}
			break;
		}
	}
	return (INT_PTR)FALSE;
}
void ExportTxtFileOnStaffRecordProc(HWND hwnd)//导出txt文件
{

	//访问数据库,获取信息
	
		//访问数据库
		SQLHENV henv = NULL;
		SQLHDBC hdbc = NULL;
		SQLHSTMT hstmt = NULL;
		SQLRETURN result;
		SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
		SQLWCHAR ConnStrOut[MAXBUFLEN];
		//分配环境句柄
		result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
			&henv);
		//设置管理环境属性
		result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
		//分配连接句柄
		result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
		//设置连接属性
		result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
			(void*)LOGIN_TIMEOUT, 0);
		//连接数据库
		result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
		if(SQL_ERROR==result)
		{
			ShowDBConnError(hwnd,hdbc);

		}

		//初始化语句句柄
		result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

		 
		result = SQLPrepare(hstmt,(SQLWCHAR*)L"select 

StaffNumber,StaffName,StaffID,StaffHomeAddress,StaffPhoneNumber,StaffPost,StaffCarState,Sta

ffExtraInfo,FastInfo,StaffSalary from staffinfo",SQL_NTS);

		CHECKDBSTMTERROR(hwnd,result,hstmt);
		result =SQLExecute(hstmt);
		CHECKDBSTMTERROR(hwnd,result,hstmt);

		SQLINTEGER cbsatid=SQL_NTS;

		WCHAR *g_szInfo=(WCHAR *)calloc(65556,sizeof(WCHAR));
		lstrcatW(g_szInfo,L"-----------------------------财神餐饮管理系统 员工档案

明细一览表-----------------------------");
		lstrcatW(g_szInfo,L"\r\n");
		lstrcatW(g_szInfo,L"\r\n");

		int ln_StaffNumber[256];
		WCHAR l_szStaffName[256];
		WCHAR l_szStaffID[256];
		WCHAR L_szStaffHomeAddress[256];
		int ln_StaffPhoneNumber;
		WCHAR l_szStaffPost[256];
		WCHAR l_szStaffCarState[256];
		WCHAR l_szStaffExtraInfo[256];
		WCHAR l_szFastInfo[256];
		WCHAR l_szStaffSalary[256];

		while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
		{
			 

			SQLGetData(hstmt,1,SQL_C_ULONG,&ln_StaffNumber,100,&cbsatid);
			//转字符串
			WCHAR l_szStaffNumber[256];
			wsprintf(l_szStaffNumber,L"%d",ln_StaffNumber);
			 lstrcatW(g_szInfo,L"编号:");
			//连接
			lstrcatW(g_szInfo,l_szStaffNumber);
			lstrcatW(g_szInfo,L"\r\n");
			SQLGetData(hstmt,2,SQL_C_WCHAR,l_szStaffName,256,&cbsatid);
			 lstrcatW(g_szInfo,L"姓名:");
			lstrcatW(g_szInfo,l_szStaffName);
			lstrcatW(g_szInfo,L"\r\n");
			SQLGetData(hstmt,3,SQL_C_WCHAR,l_szStaffID,256,&cbsatid);
			 lstrcatW(g_szInfo,L"身份证号:");
			lstrcatW(g_szInfo,l_szStaffID);
			lstrcatW(g_szInfo,L"\r\n");
			SQLGetData(hstmt,4,SQL_C_WCHAR,L_szStaffHomeAddress,256,&cbsatid);
			 lstrcatW(g_szInfo,L"家庭住址:");
			lstrcatW(g_szInfo,L_szStaffHomeAddress);
			lstrcatW(g_szInfo,L"\r\n");
			SQLGetData(hstmt,5,SQL_C_ULONG,&ln_StaffPhoneNumber,256,&cbsatid);
			//转字符串
			WCHAR l_szStaffPhoneNumber[256];
			wsprintf(l_szStaffPhoneNumber,L"%d",ln_StaffPhoneNumber);
			 lstrcatW(g_szInfo,L"电话号码:");
			lstrcatW(g_szInfo,l_szStaffPhoneNumber);
			lstrcatW(g_szInfo,L"\r\n");
			SQLGetData(hstmt,6,SQL_C_WCHAR,l_szStaffPost,256,&cbsatid);
			lstrcatW(g_szInfo,L"职位:");
			lstrcatW(g_szInfo,l_szStaffPost);
			lstrcatW(g_szInfo,L"\r\n");
			SQLGetData(hstmt,7,SQL_C_WCHAR,l_szStaffCarState,256,&cbsatid);
			lstrcatW(g_szInfo,L"发卡状态:");
			lstrcatW(g_szInfo,l_szStaffCarState);
			lstrcatW(g_szInfo,L"\r\n");
			SQLGetData(hstmt,8,SQL_C_WCHAR,l_szStaffExtraInfo,256,&cbsatid);
			lstrcatW(g_szInfo,L"备注信息:");
			lstrcatW(g_szInfo,l_szStaffExtraInfo);
			lstrcatW(g_szInfo,L"\r\n");
			SQLGetData(hstmt,9,SQL_C_WCHAR,l_szFastInfo,256,&cbsatid);
			lstrcatW(g_szInfo,L"系统角色:");
			lstrcatW(g_szInfo,l_szFastInfo);
			lstrcatW(g_szInfo,L"\r\n");
			SQLGetData(hstmt,10,SQL_C_WCHAR,l_szStaffSalary,256,&cbsatid);
			lstrcatW(g_szInfo,L"工资:");
			lstrcatW(g_szInfo,l_szStaffSalary);
			
			lstrcatW(g_szInfo,L"\r\n");
			lstrcatW(g_szInfo,L"\r\n");
			lstrcatW(g_szInfo,L"\r\n");
			 
		
		}
		//释放odbc资源
		SQLFreeStmt(hstmt,SQL_CLOSE);
		SQLDisconnect(hdbc);
		SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
		SQLFreeHandle(SQL_HANDLE_ENV,henv);
	

	//保存
	{
		HANDLE hFile;

		ULONG TextLen;
		TextLen = lstrlenW(g_szInfo);

		DWORD  num1=0;
		WCHAR *strFileNameTemp=(WCHAR *)calloc(FILENAMESIZE,sizeof(WCHAR));		

	//保存文件名
		WCHAR *strFilePathTemp=(WCHAR *)calloc(FILEPATHSIZE,sizeof(WCHAR));		

	//保存文件路径
		if(SaveFileDlg(hwnd,strFilePathTemp,strFileNameTemp))				

//保存对话框
		{

			hFile = CreateFile(strFilePathTemp, GENERIC_WRITE, 

FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

			if (hFile == INVALID_HANDLE_VALUE) 
			{
				MessageBox(hwnd,L"打开文件失败!",NULL,MB_ICONEXCLAMATION);
			}
			else
			{

				WORD a = 0xfeff;//写入0xfeff让记事本以Unicode方式打开,中文

不会乱码
				WriteFile(hFile, &a, 2, &num1, NULL);
				if(WriteFile(hFile,g_szInfo,(TextLen+1)*2,&num1,NULL))
				{
					MessageBox(hwnd,L"导出txt文件成功!",L"成

功",MB_ICONINFORMATION);
				}
				else
				{
					MessageBox(hwnd,L"导出失败!",L"失

败",MB_ICONEXCLAMATION);
				}
				CloseHandle(hFile);
			}

		}
		free(strFileNameTemp);							//

释放名字空间
		free(strFilePathTemp);							//

释放地址空间
		
	}
	free(g_szInfo);
	
}
void InitStaffNumOnDeleteStaffInfoOnStaffRecordProc(HWND hwnd);//初始化员工编号组合框内容
void AutoSetStaffNameOnDeleteStaffInfoOnStaffRecordProc(HWND hwnd);//动态设置员工的姓名
void SureToDeleteStaffInfoOnDeleteStaffInfoOnStaffRecordProc(HWND hwnd);//确认删除处理
INT_PTR CALLBACK DeleteStaffInfoOnStaffRecordProc(HWND hDlg, UINT message, WPARAM wParam, 

LPARAM lParam)//删除员工档案
{
	UNREFERENCED_PARAMETER(lParam);
	switch(message)
	{
	case WM_CTLCOLORSTATIC://设置静态文本框字体颜色
		{
			if (GetDlgItem(hDlg,IDC_STATIC1) == (HWND)lParam ||GetDlgItem

(hDlg,IDC_STATIC2) == (HWND)lParam)//这里的1是静态文本框的ID
			{
				SetTextColor((HDC)wParam, RGB(255,0,0));
				SetBkMode((HDC)wParam, TRANSPARENT);
				//return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_BTNFACE));
				return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}
			if (GetDlgItem(hDlg,IDC_STATIC3) == (HWND)lParam||GetDlgItem

(hDlg,IDC_STATIC4) == (HWND)lParam )
			{
				SetTextColor((HDC)wParam, RGB(0,0,255));
				SetBkMode((HDC)wParam, TRANSPARENT);
				//return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_BTNFACE));
				return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}
			break;

		}
	case WM_INITDIALOG:
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			//设置对话框图标
			SendMessage(hDlg, WM_SETICON, ICON_BIG,(LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON27)));

			//设置按钮位图
			HWND hBn1=GetDlgItem(hDlg,IDC_BUTTON1);
			HBITMAP hbmp1=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP44));//确

认
			SendMessage(hBn1, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp1);

			HWND hBn2=GetDlgItem(hDlg,IDC_BUTTON2);
			HBITMAP hbmp2=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP19));//取

消
			SendMessage(hBn2, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp2);

			//初始化员工编号组合框内容
			InitStaffNumOnDeleteStaffInfoOnStaffRecordProc(hDlg);
			//设置定时器
			SetTimer(hDlg,1,2000,NULL);
			return (INT_PTR)TRUE;
		}
	case WM_TIMER:
		{
			AutoSetStaffNameOnDeleteStaffInfoOnStaffRecordProc(hDlg);
			break;
		}
	case WM_COMMAND:
		{
			if (LOWORD(wParam)==IDCANCEL)
			{
				EndDialog(hDlg,LOWORD(wParam));
				break;
			}
			switch(LOWORD(wParam))
			{
			case IDC_BUTTON1://确认删除
				{
					

SureToDeleteStaffInfoOnDeleteStaffInfoOnStaffRecordProc(hDlg);
					break;
				}
			case IDC_BUTTON2://取消
				{
					KillTimer(hDlg,1);
					EndDialog(hDlg,LOWORD(wParam));
					break;
				}
			}
			break;
		}
	}
	return (INT_PTR)FALSE;
}
void SureToDeleteStaffInfoOnDeleteStaffInfoOnStaffRecordProc(HWND hwnd)//确认删除处理
{
	//获取编号
	WCHAR l_szStaffNumber[256];
	GetDlgItemText(hwnd,IDC_COMBO1,l_szStaffNumber,sizeof(l_szStaffNumber)/sizeof

(WCHAR));
	//转编号字符串为整形数据
	int ln_StaffNumber;
	ln_StaffNumber=_wtoi(l_szStaffNumber);
	if (*l_szStaffNumber==NULL)
	{
		MessageBox(hwnd,L"请先选择要删除的员工编号!",L"提示",MB_OK|MB_ICONERROR);
		return;
	}
	//不为空,访问数据库,获取该员工的FastInfo信息,是否是“服务员”、“系统管理员”
	{

		//访问数据库
		SQLHENV henv = NULL;
		SQLHDBC hdbc = NULL;
		SQLHSTMT hstmt = NULL;
		SQLRETURN result;
		SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
		SQLWCHAR ConnStrOut[MAXBUFLEN];
		//分配环境句柄
		result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
			&henv);
		//设置管理环境属性
		result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
		//分配连接句柄
		result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
		//设置连接属性
		result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
			(void*)LOGIN_TIMEOUT, 0);
		//连接数据库
		result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
		if(SQL_ERROR==result)
		{
			ShowDBConnError(hwnd,hdbc);

		}

		//初始化语句句柄
		result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

		WCHAR sql[256];
		wsprintf(sql,L"select FastInfo from staffinfo where 

StaffNumber='%d'",ln_StaffNumber);
		result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

		CHECKDBSTMTERROR(hwnd,result,hstmt);
		result =SQLExecute(hstmt);
		CHECKDBSTMTERROR(hwnd,result,hstmt);

		SQLINTEGER cbsatid=SQL_NTS;



		WCHAR l_szRole[256];
		while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
		{

			SQLGetData(hstmt,1,SQL_C_WCHAR,l_szRole,100,&cbsatid);
			 
			break;
		}
		//释放odbc资源
		SQLFreeStmt(hstmt,SQL_CLOSE);
		SQLDisconnect(hdbc);
		SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
		SQLFreeHandle(SQL_HANDLE_ENV,henv);
		{
			//现在判断是“服务员”还是“系统管理员”
			if (lstrcmpW(l_szRole,L"服务员")==0)
			{
				//是服务员的情况下删除serverinfo表的对应信息
				//访问数据库
				SQLHENV henv = NULL;
				SQLHDBC hdbc = NULL;
				SQLHSTMT hstmt = NULL;
				SQLRETURN result;
				SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 

Driver};SERVER={127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
				SQLWCHAR ConnStrOut[MAXBUFLEN];
				//分配环境句柄
				result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
					&henv);
				//设置管理环境属性
				result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)

SQL_OV_ODBC3, 0);
				//分配连接句柄
				result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
				//设置连接属性
				result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
					(void*)LOGIN_TIMEOUT, 0);
				//连接数据库
				result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
				if(SQL_ERROR==result)
				{
					ShowDBConnError(hwnd,hdbc);

				}

				//初始化语句句柄
				result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

				WCHAR sql[256];
				wsprintf(sql,L"delete from staffinfo where 

StaffNumber='%d'",ln_StaffNumber);
				result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

				CHECKDBSTMTERROR(hwnd,result,hstmt);
				result =SQLExecute(hstmt);
				CHECKDBSTMTERROR(hwnd,result,hstmt);

				SQLINTEGER cbsatid=SQL_NTS;
				//释放odbc资源
				SQLFreeStmt(hstmt,SQL_CLOSE);
				SQLDisconnect(hdbc);
				SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
				SQLFreeHandle(SQL_HANDLE_ENV,henv);


			}
			if (lstrcmpW(l_szRole,L"系统管理员")==0)
			{
				//是系统管理员的情况下删除mytable表中的对应信息
				//访问数据库
				SQLHENV henv = NULL;
				SQLHDBC hdbc = NULL;
				SQLHSTMT hstmt = NULL;
				SQLRETURN result;
				SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 

Driver};SERVER={127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
				SQLWCHAR ConnStrOut[MAXBUFLEN];
				//分配环境句柄
				result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
					&henv);
				//设置管理环境属性
				result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)

SQL_OV_ODBC3, 0);
				//分配连接句柄
				result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
				//设置连接属性
				result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
					(void*)LOGIN_TIMEOUT, 0);
				//连接数据库
				result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
				if(SQL_ERROR==result)
				{
					ShowDBConnError(hwnd,hdbc);

				}

				//初始化语句句柄
				result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
				//获取姓名姓名
				WCHAR l_szName[256];
				GetDlgItemText(hwnd,IDC_EDIT1,l_szName,sizeof

(l_szName)/sizeof(WCHAR));
				WCHAR sql[256];
				wsprintf(sql,L"delete from mytable where 

FUserName='%s'",l_szName);
				result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

				CHECKDBSTMTERROR(hwnd,result,hstmt);
				result =SQLExecute(hstmt);
				CHECKDBSTMTERROR(hwnd,result,hstmt);

				SQLINTEGER cbsatid=SQL_NTS;
				//释放odbc资源
				SQLFreeStmt(hstmt,SQL_CLOSE);
				SQLDisconnect(hdbc);
				SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
				SQLFreeHandle(SQL_HANDLE_ENV,henv);


			}
		}

	}
	{
		//删除staffinfo表中的对应项
		//访问数据库
		SQLHENV henv = NULL;
		SQLHDBC hdbc = NULL;
		SQLHSTMT hstmt = NULL;
		SQLRETURN result;
		SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
		SQLWCHAR ConnStrOut[MAXBUFLEN];
		//分配环境句柄
		result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
			&henv);
		//设置管理环境属性
		result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
		//分配连接句柄
		result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
		//设置连接属性
		result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
			(void*)LOGIN_TIMEOUT, 0);
		//连接数据库
		result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
		if(SQL_ERROR==result)
		{
			ShowDBConnError(hwnd,hdbc);

		}

		//初始化语句句柄
		result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
		//获取姓名姓名
		 
		WCHAR sql[256];
		wsprintf(sql,L"delete from staffinfo where 

StaffNumber='%d'",ln_StaffNumber);
		result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

		CHECKDBSTMTERROR(hwnd,result,hstmt);
		result =SQLExecute(hstmt);
		CHECKDBSTMTERROR(hwnd,result,hstmt);

		SQLINTEGER cbsatid=SQL_NTS;

		HWND hParent=GetParent(hwnd);
		HWND hListView=::FindWindowExW(hParent,NULL,L"SysListView32",NULL);
		SendMessage(hListView,LVM_DELETEALLITEMS,0,NULL);
		InitListViewInfoOnStaffRecordProc(hParent,hListView);
		MessageBox(hwnd,L"删除成功!",L"提示",MB_ICONINFORMATION|MB_OK);
		//释放odbc资源
		SQLFreeStmt(hstmt,SQL_CLOSE);
		SQLDisconnect(hdbc);
		SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
		SQLFreeHandle(SQL_HANDLE_ENV,henv);
	}
}
void AutoSetStaffNameOnDeleteStaffInfoOnStaffRecordProc(HWND hwnd)//动态设置员工的姓名
{
	//根据用户选择的员工的编号设置姓名信息
	WCHAR l_szStaffNumber[256];
	GetDlgItemText(hwnd,IDC_COMBO1,l_szStaffNumber,sizeof(l_szStaffNumber)/sizeof

(WCHAR));
	//转为整形数据
	int ln_StaffNumber;
	ln_StaffNumber=_wtoi(l_szStaffNumber);
	//访问数据库
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

	WCHAR sql[256];
	wsprintf(sql,L"select StaffName from staffinfo where 

StaffNumber='%d'",ln_StaffNumber);
	result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;


 
	WCHAR l_szName[256];
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{

		SQLGetData(hstmt,1,SQL_C_WCHAR,l_szName,100,&cbsatid);
		SetDlgItemText(hwnd,IDC_EDIT1,l_szName);
		break;
	}
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);



}
void InitStaffNumOnDeleteStaffInfoOnStaffRecordProc(HWND hwnd)//初始化员工编号组合框内容
{
	//访问数据库
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);


	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select StaffNumber from staffinfo order by 

StaffNumber desc",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;


	int l_nStaffNumber;//编号

	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{



		SQLGetData(hstmt,1,SQL_C_ULONG,&l_nStaffNumber,100,&cbsatid);


		//转整形数据为字符串
		WCHAR l_szStaffNumber[256];
		wsprintf(l_szStaffNumber,L"%d",l_nStaffNumber);


		//设置组合框信息

		SendDlgItemMessage(hwnd,IDC_COMBO1,CB_ADDSTRING,NULL,(LPARAM)

l_szStaffNumber);

	}
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);



}
void SureToChangeStaffInfoOnChangeStaffInfoOnStaffRecordProc(HWND hwnd);//确认修改处理
void GetStaffNumberOnChangeStaffInfoOnStaffRecordProc(HWND hwnd);//初始化员工编号 
void AutoSetStaffSomeAtherInfoOnChangeStaffInfoOnStaffRecordProc(HWND hwnd);//动态设置其他

信息
INT_PTR CALLBACK ChangeStaffInfoOnStaffRecordProc(HWND hDlg, UINT message, WPARAM wParam, 

LPARAM lParam)//修改员工档案
{
	UNREFERENCED_PARAMETER(lParam);
	static BOOL gb_test=FALSE;
	switch(message)
	{
	case WM_CTLCOLORSTATIC://设置静态文本框字体颜色
		{
			if (GetDlgItem(hDlg,IDC_STATIC3) == (HWND)lParam || GetDlgItem

(hDlg,IDC_STATIC5) == (HWND)lParam||GetDlgItem(hDlg,IDC_STATIC12) == (HWND)lParam ||

GetDlgItem(hDlg,IDC_STATIC13) == (HWND)lParam ||GetDlgItem(hDlg,IDC_STATIC16) == (HWND)

lParam ||GetDlgItem(hDlg,IDC_STATIC17) == (HWND)lParam)//这里的1是静态文本框的ID
			{
				SetTextColor((HDC)wParam, RGB(255,0,0));
				SetBkMode((HDC)wParam, TRANSPARENT);
				//return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_BTNFACE));
				return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}
			if (GetDlgItem(hDlg,IDC_STATIC1) == (HWND)lParam || GetDlgItem

(hDlg,IDC_STATIC2) == (HWND)lParam ||GetDlgItem(hDlg,IDC_STATIC4) == (HWND)lParam  ||

GetDlgItem(hDlg,IDC_STATIC6) == (HWND)lParam ||GetDlgItem(hDlg,IDC_STATIC7) == (HWND)lParam 

||GetDlgItem(hDlg,IDC_STATIC8) == (HWND)lParam ||GetDlgItem(hDlg,IDC_STATIC9) == (HWND)

lParam ||GetDlgItem(hDlg,IDC_STATIC10) == (HWND)lParam ||GetDlgItem(hDlg,IDC_STATIC11) == 

(HWND)lParam ||GetDlgItem(hDlg,IDC_STATIC14) == (HWND)lParam ||GetDlgItem

(hDlg,IDC_STATIC15) == (HWND)lParam )
			{
				SetTextColor((HDC)wParam, RGB(0,0,255));
				SetBkMode((HDC)wParam, TRANSPARENT);
				//return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_BTNFACE));
				return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}
			break;

		}
	//case WM_CTLCOLOREDIT:
	//	{ 
	//		int i=GetWindowLong((HWND)lParam,GWL_ID);
	//		if(i==IDC_EDIT1 ||i==IDC_EDIT2 ||i==IDC_EDIT3||i==IDC_EDIT4||

i==IDC_EDIT5||i==IDC_EDIT6||i==IDC_EDIT7||i==IDC_EDIT8)
	//		{
	//			SetTextColor((HDC)wParam,RGB(255,0,0));//文字颜色
	//			SetBkColor((HDC)wParam,GetSysColor(COLOR_BTNFACE));//文字的

背后颜色
	//		}
	//		return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
	//	}
	// 
	case WM_INITDIALOG:
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			//设置对话框图标
			SendMessage(hDlg, WM_SETICON, ICON_BIG,(LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON14)));
			//设置按钮位图
			HWND hBn1=GetDlgItem(hDlg,IDC_BUTTON1);
			HBITMAP hbmp1=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP17));//确

认
			SendMessage(hBn1, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp1);

			HWND hBn2=GetDlgItem(hDlg,IDC_BUTTON2);
			HBITMAP hbmp2=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP19));//取

消
			SendMessage(hBn2, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp2);

			HWND hBn3=GetDlgItem(hDlg,IDC_BUTTON3);
			HBITMAP hbmp3=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP18));//启

用
			SendMessage(hBn3, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp3);

			HWND hBn4=GetDlgItem(hDlg,IDC_BUTTON4);
			HBITMAP hbmp4=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP57));//启

用
			SendMessage(hBn4, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp4);
			//禁用控件
			EnableWindow(GetDlgItem(hDlg,IDC_EDIT1),FALSE);
			EnableWindow(GetDlgItem(hDlg,IDC_EDIT2),FALSE);
			EnableWindow(GetDlgItem(hDlg,IDC_EDIT3),FALSE);
			EnableWindow(GetDlgItem(hDlg,IDC_EDIT4),FALSE);
			EnableWindow(GetDlgItem(hDlg,IDC_EDIT5),FALSE);
			EnableWindow(GetDlgItem(hDlg,IDC_EDIT6),FALSE);
			EnableWindow(GetDlgItem(hDlg,IDC_EDIT7),FALSE);
			EnableWindow(GetDlgItem(hDlg,IDC_EDIT8),FALSE);
			EnableWindow(GetDlgItem(hDlg,IDC_COMBO1),FALSE);
			EnableWindow(GetDlgItem(hDlg,IDC_COMBO2),FALSE);
			//初始化员工编号 
			GetStaffNumberOnChangeStaffInfoOnStaffRecordProc(hDlg);
			//设置定时器
			SetTimer(hDlg,1,3000,NULL);

			ShowWindow(GetDlgItem(hDlg,IDC_BUTTON4),SW_HIDE);

			//初始化角色

			//角色有系统管理员、服务员、收银员、餐厅经理、领班、大堂经理
			SendDlgItemMessage(hDlg,IDC_COMBO1,CB_ADDSTRING,NULL,(LPARAM)L"系统

管理员");
			SendDlgItemMessage(hDlg,IDC_COMBO1,CB_ADDSTRING,NULL,(LPARAM)L"服务

员");
			SendDlgItemMessage(hDlg,IDC_COMBO1,CB_ADDSTRING,NULL,(LPARAM)L"收银

员");
			SendDlgItemMessage(hDlg,IDC_COMBO1,CB_ADDSTRING,NULL,(LPARAM)L"餐厅

经理");
			SendDlgItemMessage(hDlg,IDC_COMBO1,CB_ADDSTRING,NULL,(LPARAM)L"领班

");
			SendDlgItemMessage(hDlg,IDC_COMBO1,CB_ADDSTRING,NULL,(LPARAM)L"大堂

经理");
			//设置职位COMB 初始值
			//职位有服务员、送餐员、领班、主管、经理、其它
			SendDlgItemMessage(hDlg,IDC_COMBO2,CB_ADDSTRING,NULL,(LPARAM)L"服务

员");
			SendDlgItemMessage(hDlg,IDC_COMBO2,CB_ADDSTRING,NULL,(LPARAM)L"送餐

员");
			SendDlgItemMessage(hDlg,IDC_COMBO2,CB_ADDSTRING,NULL,(LPARAM)L"领班

");
			SendDlgItemMessage(hDlg,IDC_COMBO2,CB_ADDSTRING,NULL,(LPARAM)L"主管

");
			SendDlgItemMessage(hDlg,IDC_COMBO2,CB_ADDSTRING,NULL,(LPARAM)L"经理

");
			SendDlgItemMessage(hDlg,IDC_COMBO2,CB_ADDSTRING,NULL,(LPARAM)L"其它

");
			return (INT_PTR)TRUE;
		}
	case WM_TIMER:
		{
			//动态设置各项信息
			AutoSetStaffSomeAtherInfoOnChangeStaffInfoOnStaffRecordProc(hDlg);
			break;
		}
	case WM_COMMAND:
		{
			if (LOWORD(wParam)==IDCANCEL)
			{
				EndDialog(hDlg,LOWORD(wParam));
				break;
			}
			switch(LOWORD(wParam))
			{
			case IDC_BUTTON4://重新选择
				{
					if (gb_test==TRUE)
					{
						SetTimer(hDlg,1,3000,NULL);
						EnableWindow(GetDlgItem

(hDlg,IDC_COMBO3),TRUE);
						//隐藏和现实按钮
						ShowWindow(GetDlgItem

(hDlg,IDC_BUTTON4),SW_HIDE);
						ShowWindow(GetDlgItem

(hDlg,IDC_BUTTON3),SW_SHOW);
					}
					
					break;
				}
			case IDC_BUTTON1://确认修改信息
				{
					

SureToChangeStaffInfoOnChangeStaffInfoOnStaffRecordProc(hDlg);
					break;
				}
			case IDC_BUTTON2://取消
				{
					KillTimer(hDlg,1);
					EndDialog(hDlg,LOWORD(wParam));
					break;
				}
			case IDC_BUTTON3://确认选择,启用控件,允许用户输入
				{
					//判空
					WCHAR l_szStaffNumber[256];
					GetDlgItemText

(hDlg,IDC_COMBO3,l_szStaffNumber,sizeof(l_szStaffNumber)/sizeof(WCHAR));
					if (*l_szStaffNumber==NULL)
					{
						MessageBox(hDlg,L"请选择要进行修改的员工编

号!",L"提示",MB_ICONERROR|MB_OK);
						break;
					}
					KillTimer(hDlg,1);
					EnableWindow(GetDlgItem(hDlg,IDC_COMBO3),FALSE);
					gb_test=TRUE;
					EnableWindow(GetDlgItem(hDlg,IDC_EDIT1),TRUE);
					EnableWindow(GetDlgItem(hDlg,IDC_EDIT2),TRUE);
					EnableWindow(GetDlgItem(hDlg,IDC_EDIT3),TRUE);
					EnableWindow(GetDlgItem(hDlg,IDC_EDIT4),TRUE);
					EnableWindow(GetDlgItem(hDlg,IDC_EDIT5),TRUE);
					EnableWindow(GetDlgItem(hDlg,IDC_EDIT6),TRUE);
					EnableWindow(GetDlgItem(hDlg,IDC_EDIT7),TRUE);
					EnableWindow(GetDlgItem(hDlg,IDC_EDIT8),TRUE);
					EnableWindow(GetDlgItem(hDlg,IDC_COMBO1),TRUE);
					EnableWindow(GetDlgItem(hDlg,IDC_COMBO2),TRUE);
					MessageBeep(1);
					//隐藏和现实按钮
					ShowWindow(GetDlgItem(hDlg,IDC_BUTTON3),SW_HIDE);
					ShowWindow(GetDlgItem(hDlg,IDC_BUTTON4),SW_SHOW);
					break;
				}
			}
			break;
		}
	}
	return (INT_PTR)FALSE;
}
void AutoSetStaffSomeAtherInfoOnChangeStaffInfoOnStaffRecordProc(HWND hwnd)//动态设置其他信

息
{
	//先要获取用户选择的客户的编号信息
	WCHAR l_szStaffNumber[256];
	GetDlgItemText(hwnd,IDC_COMBO3,l_szStaffNumber,sizeof(l_szStaffNumber)/sizeof

(WCHAR));
	//判断是否为空
	if (*l_szStaffNumber==NULL)
	{
		return;//不显示信息
	}
	//开始访问数据库,利用用户选择的员工编号作为匹配条件
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

	//转字符串类型的staffnumber为整形数据
	int ln_StaffNumber;
	ln_StaffNumber=_wtoi(l_szStaffNumber);
	WCHAR sql[256];
	wsprintf(sql,L"select 

StaffName,StaffID,StaffHomeAddress,StaffPhoneNumber,StaffPost,StaffExtraInfo,FastInfo,Staff

Salary from staffinfo where StaffNumber='%d'",ln_StaffNumber);
	result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;


	 
	WCHAR l_szStaffName[256];//姓名
	WCHAR l_szStaffID[256];//身份证号
	WCHAR l_szStaffHomeAddress[256];//家庭住址
	int l_nStaffPhoneNumber;//电话号码
	WCHAR l_szStaffPost[256];//职位
	 
	WCHAR l_szStaffExtraInfo[256];//备注信息
	WCHAR l_szFastInfo[256];//管理信息
	WCHAR l_szStaffSalary[256];
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{

		ZeroMemory(l_szStaffName,sizeof(l_szStaffName)/sizeof(WCHAR));
		ZeroMemory(l_szStaffID,sizeof(l_szStaffID)/sizeof(WCHAR));
		ZeroMemory(l_szStaffHomeAddress,sizeof(l_szStaffHomeAddress)/sizeof

(WCHAR));
		ZeroMemory(l_szStaffPost,sizeof(l_szStaffPost)/sizeof(WCHAR));
		ZeroMemory(l_szStaffExtraInfo,sizeof(l_szStaffExtraInfo)/sizeof(WCHAR));
		ZeroMemory(l_szFastInfo,sizeof(l_szFastInfo)/sizeof(WCHAR));
		ZeroMemory(l_szStaffSalary,sizeof(l_szStaffSalary)/sizeof(WCHAR));

		 
		SQLGetData(hstmt,1,SQL_C_WCHAR,l_szStaffName,100,&cbsatid);
		SQLGetData(hstmt,2,SQL_C_WCHAR,l_szStaffID,100,&cbsatid);
		SQLGetData(hstmt,3,SQL_C_WCHAR,l_szStaffHomeAddress,100,&cbsatid);
		SQLGetData(hstmt,4,SQL_C_ULONG,&l_nStaffPhoneNumber,100,&cbsatid);
		SQLGetData(hstmt,5,SQL_C_WCHAR,l_szStaffPost,256,&cbsatid);
		 
		SQLGetData(hstmt,6,SQL_C_WCHAR,l_szStaffExtraInfo,100,&cbsatid);
		SQLGetData(hstmt,7,SQL_C_WCHAR,l_szFastInfo,100,&cbsatid);
		SQLGetData(hstmt,8,SQL_C_WCHAR,l_szStaffSalary,100,&cbsatid);

		//转整形数据为字符串
		 
		WCHAR l_szStaffPhoneNumber[256];
		wsprintf(l_szStaffPhoneNumber,L"%d",l_nStaffPhoneNumber);
	 
		//设置各项信息
		SetDlgItemText(hwnd,IDC_EDIT1,l_szStaffName);
		SetDlgItemText(hwnd,IDC_COMBO1,l_szFastInfo);
		SetDlgItemText(hwnd,IDC_EDIT2,l_szStaffID);
		SetDlgItemText(hwnd,IDC_EDIT3,l_szStaffHomeAddress);
		SetDlgItemText(hwnd,IDC_EDIT4,l_szStaffPhoneNumber);
		SetDlgItemText(hwnd,IDC_EDIT5,l_szStaffSalary);
		SetDlgItemText(hwnd,IDC_COMBO2,l_szStaffPost);
		SetDlgItemText(hwnd,IDC_EDIT6,l_szStaffExtraInfo);
		 break;
	}
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);







}
void GetStaffNumberOnChangeStaffInfoOnStaffRecordProc(HWND hwnd)//初始化员工编号 
{
	//访问数据库中 的staffinfo 表,获取StaffNumber字段信息
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);


	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select StaffNumber from staffinfo order by 

StaffNumber desc",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;


	int l_nStaffNumber;//编号
	 
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{

		 

		SQLGetData(hstmt,1,SQL_C_ULONG,&l_nStaffNumber,100,&cbsatid);
		 

		//转整形数据为字符串
		WCHAR l_szStaffNumber[256];
		wsprintf(l_szStaffNumber,L"%d",l_nStaffNumber);
	 
		 
		//设置组合框信息

		SendDlgItemMessage(hwnd,IDC_COMBO3,CB_ADDSTRING,NULL,(LPARAM)

l_szStaffNumber);

	}
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);

}
void SureToChangeStaffInfoOnChangeStaffInfoOnStaffRecordProc(HWND hwnd)//确认修改处理
{
	//获取用户的输入的信息
	//获取编号
	WCHAR l_szStaffNumber[256];
	GetDlgItemText(hwnd,IDC_COMBO3,l_szStaffNumber,sizeof(l_szStaffNumber)/sizeof

(WCHAR));
	//获取姓名
	WCHAR l_szStaffName[256];
	GetDlgItemText(hwnd,IDC_EDIT1,l_szStaffName,sizeof(l_szStaffName)/sizeof(WCHAR));
	//获取角色
	WCHAR l_szStaffRole[256];
	GetDlgItemText(hwnd,IDC_COMBO1,l_szStaffRole,sizeof(l_szStaffRole)/sizeof(WCHAR));
	//获取身份证号
	WCHAR l_szStaffID[256];
	GetDlgItemText(hwnd,IDC_EDIT2,l_szStaffID,sizeof(l_szStaffID)/sizeof(WCHAR));
	//获取家庭住址
	WCHAR l_szStaffHomeAddress[256];
	GetDlgItemText(hwnd,IDC_EDIT3,l_szStaffHomeAddress,sizeof

(l_szStaffHomeAddress)/sizeof(WCHAR));
	//获取电话号码
	WCHAR l_szPhoneNumber[256];
	GetDlgItemText(hwnd,IDC_EDIT4,l_szPhoneNumber,sizeof(l_szPhoneNumber)/sizeof

(WCHAR));
	//获取工资
	WCHAR l_szStaffSalary[256];
	GetDlgItemText(hwnd,IDC_EDIT5,l_szStaffSalary,sizeof(l_szStaffSalary)/sizeof

(WCHAR));
	//获取职位
	WCHAR l_szStaffPost[256];
	GetDlgItemText(hwnd,IDC_COMBO2,l_szStaffPost,sizeof(l_szStaffPost)/sizeof(WCHAR));
	//获取备注
	WCHAR l_szExtraInfo[256];
	GetDlgItemText(hwnd,IDC_EDIT6,l_szExtraInfo,sizeof(l_szExtraInfo)/sizeof(WCHAR));
	//获取密码
	WCHAR l_szPassWord[256];
	GetDlgItemText(hwnd,IDC_EDIT7,l_szPassWord,sizeof(l_szPassWord)/sizeof(WCHAR));
	//获取二次密码
	WCHAR l_szPassWordAgain[256];
	GetDlgItemText(hwnd,IDC_EDIT8,l_szPassWordAgain,sizeof(l_szPassWordAgain)/sizeof

(WCHAR));

	//获取完毕,现在进行异常检查
	if (*l_szStaffName==NULL || *l_szStaffRole==NULL)
	{
		MessageBox(hwnd,L"标有“*”的项必须填写!",L"提示",MB_OK|MB_ICONERROR);
		return;
	}
	if (lstrcmpW(l_szStaffRole,L"系统管理员")==0)
	{
		if (*l_szPassWord==NULL ||*l_szPassWordAgain==NULL)
		{
			MessageBox(hwnd,L"系统管理员密码项必须填写!",L"提

示",MB_ICONERROR|MB_OK);
			return;
		}
		if (lstrcmpW(l_szPassWordAgain,l_szPassWord)!=0)
		{
			SetDlgItemText(hwnd,IDC_EDIT7,NULL);
			SetDlgItemText(hwnd,IDC_EDIT8,NULL);
			MessageBox(hwnd,L"请重新输入密码!",L"提示",MB_OK|MB_ICONERROR);
			return;
		}
	}
	if (lstrcmpW(l_szStaffRole,L"系统管理员")!=0)
	{
		if (*l_szPassWord!=NULL || *l_szPassWordAgain!=NULL)
		{
			MessageBox(hwnd,L"非系统管理员密码不能填写!",L"提

示",MB_ICONERROR|MB_OK);
			return;
		}
	}


	//转编号为整形数据
	int ln_StaffNumber;
	ln_StaffNumber=_wtoi(l_szStaffNumber);
	//转电话号码为整形数据
	int ln_StaffPhoneNumber;
	ln_StaffPhoneNumber=_wtoi(l_szPhoneNumber);
	//全局变量
	WCHAR szName[256];
	WCHAR szPost[256];
	WCHAR szRole[256];
	//异常排除,访问数据库,进行多表更新
	
	{
		//先要利用编号匹配数据库的表,取出StaffRole段,判断是否是"服务员"、“系统管

理员”
		SQLHENV henv = NULL;
		SQLHDBC hdbc = NULL;
		SQLHSTMT hstmt = NULL;
		SQLRETURN result;
		SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
		SQLWCHAR ConnStrOut[MAXBUFLEN];
		//分配环境句柄
		result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
			&henv);
		//设置管理环境属性
		result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
		//分配连接句柄
		result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
		//设置连接属性
		result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
			(void*)LOGIN_TIMEOUT, 0);
		//连接数据库
		result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
		if(SQL_ERROR==result)
		{
			ShowDBConnError(hwnd,hdbc);

		}

		//初始化语句句柄
		result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

		WCHAR sql1[256];
		wsprintf(sql1,L"select StaffName,StaffPost,FastInfo from staffinfo where 

StaffNumber='%d'",ln_StaffNumber);
		result = SQLPrepare(hstmt,(SQLWCHAR*)sql1,SQL_NTS);

		CHECKDBSTMTERROR(hwnd,result,hstmt);
		result =SQLExecute(hstmt);
		CHECKDBSTMTERROR(hwnd,result,hstmt);

		SQLINTEGER cbsatid=SQL_NTS;
		
		
		while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
		{
			SQLGetData(hstmt,1,SQL_C_WCHAR,szName,100,&cbsatid);
			SQLGetData(hstmt,2,SQL_C_WCHAR,szPost,100,&cbsatid);
			SQLGetData(hstmt,3,SQL_C_WCHAR,szRole,100,&cbsatid);
			break;
		}
		//释放odbc资源
		SQLFreeStmt(hstmt,SQL_CLOSE);
		SQLDisconnect(hdbc);
		SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
		SQLFreeHandle(SQL_HANDLE_ENV,henv);
	}
		//判断数据
		if (lstrcmpW(szRole,L"服务员")==0)
		{
			//判断用户现在选择的是否还是服务员
			if (lstrcmpW(l_szStaffRole,L"服务员")==0)
			{
				//更新serverinfo表
				SQLHENV henv = NULL;
				SQLHDBC hdbc = NULL;
				SQLHSTMT hstmt = NULL;
				SQLRETURN result;
				SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 

Driver};SERVER={127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
				SQLWCHAR ConnStrOut[MAXBUFLEN];
				//分配环境句柄
				result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
					&henv);
				//设置管理环境属性
				result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)

SQL_OV_ODBC3, 0);
				//分配连接句柄
				result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
				//设置连接属性
				result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
					(void*)LOGIN_TIMEOUT, 0);
				//连接数据库
				result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
				if(SQL_ERROR==result)
				{
					ShowDBConnError(hwnd,hdbc);

				}

				//初始化语句句柄
				result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

				WCHAR sql[256];




				wsprintf(sql,L"update serverinfo set 

ServerName='%s',Apartment='%s' where ServerName='%s'",l_szStaffName,l_szStaffPost,szName);
				result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

				CHECKDBSTMTERROR(hwnd,result,hstmt);
				result =SQLExecute(hstmt);
				CHECKDBSTMTERROR(hwnd,result,hstmt);

				SQLINTEGER cbsatid=SQL_NTS;

				//MessageBox(hwnd,L"执行成功!",L"提

示",MB_ICONINFORMATION|MB_OK);

				//释放odbc资源
				SQLFreeStmt(hstmt,SQL_CLOSE);
				SQLDisconnect(hdbc);
				SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
				SQLFreeHandle(SQL_HANDLE_ENV,henv);
			}
			//用户现在选择的不是服务员了,就要删除服务员表的对应内容
			else
			{
				SQLHENV henv = NULL;
				SQLHDBC hdbc = NULL;
				SQLHSTMT hstmt = NULL;
				SQLRETURN result;
				SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 

Driver};SERVER={127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
				SQLWCHAR ConnStrOut[MAXBUFLEN];
				//分配环境句柄
				result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
					&henv);
				//设置管理环境属性
				result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)

SQL_OV_ODBC3, 0);
				//分配连接句柄
				result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
				//设置连接属性
				result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
					(void*)LOGIN_TIMEOUT, 0);
				//连接数据库
				result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
				if(SQL_ERROR==result)
				{
					ShowDBConnError(hwnd,hdbc);

				}

				//初始化语句句柄
				result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

				WCHAR sql[256];




				wsprintf(sql,L"delete from serverinfo where 

ServerName='%s'",szName);
				result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

				CHECKDBSTMTERROR(hwnd,result,hstmt);
				result =SQLExecute(hstmt);
				CHECKDBSTMTERROR(hwnd,result,hstmt);

				SQLINTEGER cbsatid=SQL_NTS;

				//MessageBox(hwnd,L"执行成功!",L"提

示",MB_ICONINFORMATION|MB_OK);

				//释放odbc资源
				SQLFreeStmt(hstmt,SQL_CLOSE);
				SQLDisconnect(hdbc);
				SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
				SQLFreeHandle(SQL_HANDLE_ENV,henv);



			}
			

			 
		}
		if (lstrcmpW(szRole,L"系统管理员")==0)
		{
			//判断用户现在选择是否还是系统管理员
			if (lstrcmpW(l_szStaffRole,L"系统管理员")==0)
			{
				//更新mytable表
				SQLHENV henv = NULL;
				SQLHDBC hdbc = NULL;
				SQLHSTMT hstmt = NULL;
				SQLRETURN result;
				SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 

Driver};SERVER={127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
				SQLWCHAR ConnStrOut[MAXBUFLEN];
				//分配环境句柄
				result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
					&henv);
				//设置管理环境属性
				result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)

SQL_OV_ODBC3, 0);
				//分配连接句柄
				result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
				//设置连接属性
				result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
					(void*)LOGIN_TIMEOUT, 0);
				//连接数据库
				result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
				if(SQL_ERROR==result)
				{
					ShowDBConnError(hwnd,hdbc);

				}

				//初始化语句句柄
				result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

				WCHAR sql[256];




				wsprintf(sql,L"update mytable set  FUserName='%s', 

FPassWord='%s' where FUserName='%s'",l_szStaffName,l_szPassWord,szName);
				result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

				CHECKDBSTMTERROR(hwnd,result,hstmt);
				result =SQLExecute(hstmt);
				CHECKDBSTMTERROR(hwnd,result,hstmt);

				SQLINTEGER cbsatid=SQL_NTS;

				//MessageBox(hwnd,L"执行成功!",L"提

示",MB_ICONINFORMATION|MB_OK);

				//释放odbc资源
				SQLFreeStmt(hstmt,SQL_CLOSE);
				SQLDisconnect(hdbc);
				SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
				SQLFreeHandle(SQL_HANDLE_ENV,henv);
			}
			else
			{
				//用户现在选择不是系统管理员了,就要删除mytable表的对应内容
				SQLHENV henv = NULL;
				SQLHDBC hdbc = NULL;
				SQLHSTMT hstmt = NULL;
				SQLRETURN result;
				SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 

Driver};SERVER={127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
				SQLWCHAR ConnStrOut[MAXBUFLEN];
				//分配环境句柄
				result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
					&henv);
				//设置管理环境属性
				result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)

SQL_OV_ODBC3, 0);
				//分配连接句柄
				result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
				//设置连接属性
				result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
					(void*)LOGIN_TIMEOUT, 0);
				//连接数据库
				result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
				if(SQL_ERROR==result)
				{
					ShowDBConnError(hwnd,hdbc);

				}

				//初始化语句句柄
				result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

				WCHAR sql[256];




				wsprintf(sql,L"delete from mytable where 

FUserName='%s'",szName);
				result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

				CHECKDBSTMTERROR(hwnd,result,hstmt);
				result =SQLExecute(hstmt);
				CHECKDBSTMTERROR(hwnd,result,hstmt);

				SQLINTEGER cbsatid=SQL_NTS;

				//MessageBox(hwnd,L"执行成功!",L"提

示",MB_ICONINFORMATION|MB_OK);

				//释放odbc资源
				SQLFreeStmt(hstmt,SQL_CLOSE);
				SQLDisconnect(hdbc);
				SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
				SQLFreeHandle(SQL_HANDLE_ENV,henv);







			}
			
			 
		}
		else//既不是服务员,又不是系统管理员
		{
			//再判断现在用户选择的是“服务员”还是“系统管理员”
			if (lstrcmpW(l_szStaffRole,L"服务员")==0)
			{
				//向serverinfo表中插入数据
				SQLHENV henv = NULL;
				SQLHDBC hdbc = NULL;
				SQLHSTMT hstmt = NULL;
				SQLRETURN result;
				SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 

Driver};SERVER={127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
				SQLWCHAR ConnStrOut[MAXBUFLEN];
				//分配环境句柄
				result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
					&henv);
				//设置管理环境属性
				result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)

SQL_OV_ODBC3, 0);
				//分配连接句柄
				result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
				//设置连接属性
				result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
					(void*)LOGIN_TIMEOUT, 0);
				//连接数据库
				result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
				if(SQL_ERROR==result)
				{
					ShowDBConnError(hwnd,hdbc);

				}

				//初始化语句句柄
				result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

				WCHAR sql[256];



				
				wsprintf(sql,L"insert into serverinfo(ServerName,Apartment) 

values('%s','%s')",l_szStaffName,l_szStaffPost);
				result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

				CHECKDBSTMTERROR(hwnd,result,hstmt);
				result =SQLExecute(hstmt);
				CHECKDBSTMTERROR(hwnd,result,hstmt);

				SQLINTEGER cbsatid=SQL_NTS;

				//MessageBox(hwnd,L"执行成功!",L"提

示",MB_ICONINFORMATION|MB_OK);

				//释放odbc资源
				SQLFreeStmt(hstmt,SQL_CLOSE);
				SQLDisconnect(hdbc);
				SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
				SQLFreeHandle(SQL_HANDLE_ENV,henv);

			}
			if (lstrcmpW(l_szStaffRole,L"系统管理员")==0)
			{
				//向mytable表中插入数据
				SQLHENV henv = NULL;
				SQLHDBC hdbc = NULL;
				SQLHSTMT hstmt = NULL;
				SQLRETURN result;
				SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 

Driver};SERVER={127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
				SQLWCHAR ConnStrOut[MAXBUFLEN];
				//分配环境句柄
				result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
					&henv);
				//设置管理环境属性
				result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)

SQL_OV_ODBC3, 0);
				//分配连接句柄
				result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
				//设置连接属性
				result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
					(void*)LOGIN_TIMEOUT, 0);
				//连接数据库
				result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
				if(SQL_ERROR==result)
				{
					ShowDBConnError(hwnd,hdbc);

				}

				//初始化语句句柄
				result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

				WCHAR sql[256];




				wsprintf(sql,L"insert into mytable(FUserName,FPassWord) 

values('%s','%s')",l_szStaffName,l_szPassWord);
				result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

				CHECKDBSTMTERROR(hwnd,result,hstmt);
				result =SQLExecute(hstmt);
				CHECKDBSTMTERROR(hwnd,result,hstmt);

				SQLINTEGER cbsatid=SQL_NTS;

				//MessageBox(hwnd,L"执行成功!",L"提

示",MB_ICONINFORMATION|MB_OK);

				//释放odbc资源
				SQLFreeStmt(hstmt,SQL_CLOSE);
				SQLDisconnect(hdbc);
				SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
				SQLFreeHandle(SQL_HANDLE_ENV,henv);
			}
			
		}

		{
			SQLHENV henv = NULL;
			SQLHDBC hdbc = NULL;
			SQLHSTMT hstmt = NULL;
			SQLRETURN result;
			SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 

Driver};SERVER={127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
			SQLWCHAR ConnStrOut[MAXBUFLEN];
			//分配环境句柄
			result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
				&henv);
			//设置管理环境属性
			result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)

SQL_OV_ODBC3, 0);
			//分配连接句柄
			result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
			//设置连接属性
			result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
				(void*)LOGIN_TIMEOUT, 0);
			//连接数据库
			result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
			if(SQL_ERROR==result)
			{
				ShowDBConnError(hwnd,hdbc);

			}

			//初始化语句句柄
			result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

			WCHAR sql[256];




			wsprintf(sql,L"update staffinfo set 

StaffName='%s',StaffID='%s',StaffHomeAddress='%s',StaffPhoneNumber='%d',StaffPost='%s',Staf

fExtraInfo='%s',FastInfo='%s',StaffSalary='%s' where 

StaffNumber='%d'",l_szStaffName,l_szStaffID,l_szStaffHomeAddress,ln_StaffPhoneNumber,l_szSt

affPost,l_szExtraInfo,l_szStaffRole,l_szStaffSalary,ln_StaffNumber);
			result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

			CHECKDBSTMTERROR(hwnd,result,hstmt);
			result =SQLExecute(hstmt);
			CHECKDBSTMTERROR(hwnd,result,hstmt);

			SQLINTEGER cbsatid=SQL_NTS;


			HWND hParent=GetParent(hwnd);
			HWND hListView=::FindWindowExW(hParent,NULL,L"SysListView32",NULL);
			SendMessage(hListView,LVM_DELETEALLITEMS,0,NULL);
			InitListViewInfoOnStaffRecordProc(hParent,hListView);
			MessageBox(hwnd,L"执行成功!",L"提示",MB_ICONINFORMATION|MB_OK);

			//释放odbc资源
			SQLFreeStmt(hstmt,SQL_CLOSE);
			SQLDisconnect(hdbc);
			SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
			SQLFreeHandle(SQL_HANDLE_ENV,henv);

		}


}
void SureToAddStaffInfoOnAddStaffInfoOnStaffRecordProc(HWND hwnd);//确认增加
INT_PTR CALLBACK AddStaffInfoOnStaffRecordProc(HWND hDlg, UINT message, WPARAM wParam, 

LPARAM lParam)//增加员工档案
{
	UNREFERENCED_PARAMETER(lParam);
	switch(message)
	{
		/*case WM_CTLCOLORDLG:
		{
		HBRUSH g_hbrBackground = CreateSolidBrush(RGB(13,120,50));
		return (LONG)g_hbrBackground;
		}*/
	case WM_CTLCOLORSTATIC://设置静态文本框字体颜色
		{
			if (GetDlgItem(hDlg,IDC_STATIC3) == (HWND)lParam || GetDlgItem

(hDlg,IDC_STATIC5) == (HWND)lParam||GetDlgItem(hDlg,IDC_STATIC12) == (HWND)lParam ||

GetDlgItem(hDlg,IDC_STATIC13) == (HWND)lParam )//这里的1是静态文本框的ID
			{
				SetTextColor((HDC)wParam, RGB(255,0,0));
				SetBkMode((HDC)wParam, TRANSPARENT);
				//return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_BTNFACE));
				return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}
			if (GetDlgItem(hDlg,IDC_STATIC1) == (HWND)lParam || GetDlgItem

(hDlg,IDC_STATIC2) == (HWND)lParam ||GetDlgItem(hDlg,IDC_STATIC4) == (HWND)lParam  ||

GetDlgItem(hDlg,IDC_STATIC6) == (HWND)lParam ||GetDlgItem(hDlg,IDC_STATIC7) == (HWND)lParam 

||GetDlgItem(hDlg,IDC_STATIC8) == (HWND)lParam ||GetDlgItem(hDlg,IDC_STATIC9) == (HWND)

lParam ||GetDlgItem(hDlg,IDC_STATIC10) == (HWND)lParam ||GetDlgItem(hDlg,IDC_STATIC11) == 

(HWND)lParam ||GetDlgItem(hDlg,IDC_STATIC14) == (HWND)lParam ||GetDlgItem

(hDlg,IDC_STATIC15) == (HWND)lParam )
			{
				SetTextColor((HDC)wParam, RGB(0,0,255));
				SetBkMode((HDC)wParam, TRANSPARENT);
				//return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_BTNFACE));
				return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}
			break;

		}
	case WM_INITDIALOG:
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			//设置对话框图标
			SendMessage(hDlg, WM_SETICON, ICON_BIG,(LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON14)));
			//设置按钮位图
			HWND hBn1=GetDlgItem(hDlg,IDC_BUTTON1);
			HBITMAP hbmp1=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP20));//确

认
			SendMessage(hBn1, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp1);

			HWND hBn2=GetDlgItem(hDlg,IDC_BUTTON2);
			HBITMAP hbmp2=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP19));//取

消
			SendMessage(hBn2, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp2);
			//设置角色COMBO BOX 初始值
			//角色有系统管理员、服务员、收银员、餐厅经理、领班、大堂经理
			SendDlgItemMessage(hDlg,IDC_COMBO1,CB_ADDSTRING,NULL,(LPARAM)L"系统

管理员");
			SendDlgItemMessage(hDlg,IDC_COMBO1,CB_ADDSTRING,NULL,(LPARAM)L"服务

员");
			SendDlgItemMessage(hDlg,IDC_COMBO1,CB_ADDSTRING,NULL,(LPARAM)L"收银

员");
			SendDlgItemMessage(hDlg,IDC_COMBO1,CB_ADDSTRING,NULL,(LPARAM)L"餐厅

经理");
			SendDlgItemMessage(hDlg,IDC_COMBO1,CB_ADDSTRING,NULL,(LPARAM)L"领班

");
			SendDlgItemMessage(hDlg,IDC_COMBO1,CB_ADDSTRING,NULL,(LPARAM)L"大堂

经理");
			//设置职位COMB 初始值
			//职位有服务员、送餐员、领班、主管、经理、其它
			SendDlgItemMessage(hDlg,IDC_COMBO2,CB_ADDSTRING,NULL,(LPARAM)L"服务

员");
			SendDlgItemMessage(hDlg,IDC_COMBO2,CB_ADDSTRING,NULL,(LPARAM)L"送餐

员");
			SendDlgItemMessage(hDlg,IDC_COMBO2,CB_ADDSTRING,NULL,(LPARAM)L"领班

");
			SendDlgItemMessage(hDlg,IDC_COMBO2,CB_ADDSTRING,NULL,(LPARAM)L"主管

");
			SendDlgItemMessage(hDlg,IDC_COMBO2,CB_ADDSTRING,NULL,(LPARAM)L"经理

");
			SendDlgItemMessage(hDlg,IDC_COMBO2,CB_ADDSTRING,NULL,(LPARAM)L"其它

");
			return (INT_PTR)TRUE;
		}
	case WM_COMMAND:
		{
			if (LOWORD(wParam)==IDCANCEL)
			{
				EndDialog(hDlg,LOWORD(wParam));
				break;
			}
			switch(LOWORD(wParam))
			{
			case IDC_BUTTON1://确认
				{
					SureToAddStaffInfoOnAddStaffInfoOnStaffRecordProc

(hDlg);
					break;
				}
			case IDC_BUTTON2://取消
				{
					EndDialog(hDlg,LOWORD(wParam));
					break;
				}
			}
			break;
		}
	}
	return (INT_PTR)FALSE;
}
void SureToAddStaffInfoOnAddStaffInfoOnStaffRecordProc(HWND hwnd)//确认增加
{
	//获取用户输入的信息
	//获取姓名
	WCHAR l_szStaffName[256];
	GetDlgItemText(hwnd,IDC_EDIT2,l_szStaffName,sizeof(l_szStaffName)/sizeof(WCHAR));
	//获取角色
	WCHAR l_szRole[256];
	GetDlgItemText(hwnd,IDC_COMBO1,l_szRole,sizeof(l_szRole)/sizeof(WCHAR));
	//获取身份证号
	WCHAR l_szStaffID[256];
	GetDlgItemText(hwnd,IDC_EDIT3,l_szStaffID,sizeof(l_szStaffID)/sizeof(WCHAR));
	//获取家庭住址
	WCHAR l_szStaffHomeAddress[256];
	GetDlgItemText(hwnd,IDC_EDIT4,l_szStaffHomeAddress,sizeof

(l_szStaffHomeAddress)/sizeof(WCHAR));
	//获取电话号码
	WCHAR l_szPhoneNumber[256];
	GetDlgItemText(hwnd,IDC_EDIT5,l_szPhoneNumber,sizeof(l_szPhoneNumber)/sizeof

(WCHAR));
	//获取工资
	WCHAR l_szSalary[256];
	GetDlgItemText(hwnd,IDC_EDIT6,l_szSalary,sizeof(l_szSalary)/sizeof(WCHAR));
	//获取职位
	WCHAR l_szPost[256];
	GetDlgItemText(hwnd,IDC_COMBO2,l_szPost,sizeof(l_szPost)/sizeof(WCHAR));
	//获取备注(毕业院校等信息)
	WCHAR l_szExtraInfo[256];
	GetDlgItemText(hwnd,IDC_EDIT7,l_szExtraInfo,sizeof(l_szExtraInfo)/sizeof(WCHAR));
	//获取密码
	WCHAR l_szPassword[256];
	GetDlgItemText(hwnd,IDC_EDIT8,l_szPassword,sizeof(l_szPassword)/sizeof(WCHAR));
	//获取再次输入的密码
	WCHAR l_szPassWordAgain[256];
	GetDlgItemText(hwnd,IDC_EDIT9,l_szPassWordAgain,sizeof(l_szPassWordAgain)/sizeof

(WCHAR));
	//现在对用户输入的信息进行判断,进行异常检查
	//先判断员工姓名和角色是否为空
	if (*l_szStaffName==NULL || *l_szRole==NULL)
	{
		//提示用户
		MessageBox(hwnd,L"标有“*”的项均要填写!",L"提示",MB_OK|MB_ICONERROR);
		return;
	}
	//再对用户输入的角色判断是否是管理员
	if (lstrcmpW(l_szRole,L"系统管理员")==0)
	{
		//是管理员的前提下检查密码是否为空,是否正确
		if (*l_szPassword==NULL)
		{
			//提示用户
			MessageBox(hwnd,L"管理员密码必须填写!",L"提示",MB_ICONERROR|

MB_OK);
			return;
		}
		if (lstrcmpW(l_szPassword,l_szPassWordAgain)!=0)
		{
			//提示用户两次密码输入的不正确
			MessageBox(hwnd,L"请再次确认密码是否输入正确!",L"提示",MB_OK|

MB_ICONERROR);
			return;
		}
	}
	if (lstrcmpW(l_szRole,L"系统管理员")!=0)//不是系统管理员的情况下,判断密码是否为空
	{
		if (*l_szPassword!=NULL ||*l_szPassWordAgain!=NULL)
		{
			MessageBox(hwnd,L"非系统管理员不能注册密码!",L"提

示",MB_ICONERROR|MB_OK);
			return;
		}
	}
	//异常已经处理,现在可以访问数据库了,这里涉及到多表插入,若是“系统管理员”,就要

向mytable表中插入数据,若是“服务员”,就要向serverinfo表中添加数据

	{
		//访问数据库:表:staffinfo \mytable\serverinfo
		WCHAR sql[256];
		WCHAR sql1[256];
		WCHAR sql2[256];
		 

		//转电话号码为整形数据
		int ln_PhoneNumber;
		ln_PhoneNumber=_wtoi(l_szPhoneNumber);
		 
		SQLHENV henv = NULL;
		SQLHDBC hdbc = NULL;
		SQLHSTMT hstmt = NULL;
		SQLRETURN result;
		SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
		SQLWCHAR ConnStrOut[MAXBUFLEN];
		//分配环境句柄
		result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
			&henv);
		//设置管理环境属性
		result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
		//分配连接句柄
		result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
		//设置连接属性
		result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
			(void*)LOGIN_TIMEOUT, 0);
		//连接数据库
		result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
		if(SQL_ERROR==result)
		{
			ShowDBConnError(hwnd,hdbc);

		}

		//初始化语句句柄
		result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
		wsprintf(sql,L"insert into staffinfo

(StaffName,FastInfo,StaffID,StaffHomeAddress,StaffPhoneNumber,StaffSalary,StaffPost,StaffEx

traInfo) values

('%s','%s','%s','%s','%d','%s','%s','%s')",l_szStaffName,l_szRole,l_szStaffID,l_szStaffHome

Address,ln_PhoneNumber,l_szSalary,l_szPost,l_szExtraInfo);
		result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);
		CHECKDBSTMTERROR(hwnd,result,hstmt);
		result =SQLExecute(hstmt);
		CHECKDBSTMTERROR(hwnd,result,hstmt);

		SQLINTEGER cbsatid=SQL_NTS;
		//MessageBox(hwnd,L"添加成功!",L"提示",MB_OK|MB_ICONINFORMATION);
		//释放odbc资源
	 
		HWND hParent=GetParent(hwnd);
		HWND hListView=::FindWindowExW(hParent,NULL,L"SysListView32",NULL);
		 SendMessage(hListView,LVM_DELETEALLITEMS,0,NULL);
		InitListViewInfoOnStaffRecordProc(hParent,hListView);
		SQLFreeStmt(hstmt,SQL_CLOSE);
		SQLDisconnect(hdbc);
		SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
		SQLFreeHandle(SQL_HANDLE_ENV,henv);

		

		
		if (lstrcmpW(l_szRole,L"系统管理员")==0)
		{
			SQLHENV henv = NULL;
			SQLHDBC hdbc = NULL;
			SQLHSTMT hstmt = NULL;
			SQLRETURN result;
			SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 

Driver};SERVER={127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
			SQLWCHAR ConnStrOut[MAXBUFLEN];
			//分配环境句柄
			result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
				&henv);
			//设置管理环境属性
			result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)

SQL_OV_ODBC3, 0);
			//分配连接句柄
			result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
			//设置连接属性
			result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
				(void*)LOGIN_TIMEOUT, 0);
			//连接数据库
			result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
			if(SQL_ERROR==result)
			{
				ShowDBConnError(hwnd,hdbc);

			}

			//初始化语句句柄
			result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
			wsprintf(sql1,L"insert into mytable(FUserName,FPassWord) values

('%s','%s')",l_szStaffName,l_szPassword);
			result = SQLPrepare(hstmt,(SQLWCHAR*)sql1,SQL_NTS);
			CHECKDBSTMTERROR(hwnd,result,hstmt);
			result =SQLExecute(hstmt);
			CHECKDBSTMTERROR(hwnd,result,hstmt);

			SQLINTEGER cbsatid=SQL_NTS;
			
			MessageBox(hwnd,L"添加成功!",L"提示",MB_OK|MB_ICONINFORMATION);
			//释放odbc资源
			SQLFreeStmt(hstmt,SQL_CLOSE);
			SQLDisconnect(hdbc);
			SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
			SQLFreeHandle(SQL_HANDLE_ENV,henv);
		}
		if (lstrcmpW(l_szRole,L"服务员")==0)
		{
			SQLHENV henv = NULL;
			SQLHDBC hdbc = NULL;
			SQLHSTMT hstmt = NULL;
			SQLRETURN result;
			SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 

Driver};SERVER={127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
			SQLWCHAR ConnStrOut[MAXBUFLEN];
			//分配环境句柄
			result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
				&henv);
			//设置管理环境属性
			result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)

SQL_OV_ODBC3, 0);
			//分配连接句柄
			result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
			//设置连接属性
			result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
				(void*)LOGIN_TIMEOUT, 0);
			//连接数据库
			result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
			if(SQL_ERROR==result)
			{
				ShowDBConnError(hwnd,hdbc);

			}

			//初始化语句句柄
			result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
			wsprintf(sql2,L"insert into serverinfo(ServerName,Apartment) 

values('%s','%s')",l_szStaffName,l_szPost);
			result = SQLPrepare(hstmt,(SQLWCHAR*)sql2,SQL_NTS);
			CHECKDBSTMTERROR(hwnd,result,hstmt);
			result =SQLExecute(hstmt);
			CHECKDBSTMTERROR(hwnd,result,hstmt);

			SQLINTEGER cbsatid=SQL_NTS;
			 
			MessageBox(hwnd,L"添加成功!",L"提示",MB_OK|MB_ICONINFORMATION);
			//释放odbc资源
			SQLFreeStmt(hstmt,SQL_CLOSE);
			SQLDisconnect(hdbc);
			SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
			SQLFreeHandle(SQL_HANDLE_ENV,henv);
		}

	}
	 
}
BOOL InitListViewImageList(HWND hWndListView) 
{ 
    HICON hiconItem;     // Icon for list-view items.
    HIMAGELIST hLarge;   // Image list for icon view.
    HIMAGELIST hSmall;   // Image list for other views.

    // Create the full-sized icon image lists. 
    hLarge = ImageList_Create(GetSystemMetrics(SM_CXICON), 
                              GetSystemMetrics(SM_CYICON), 
                              ILC_MASK, 1, 1); 

    hSmall = ImageList_Create(GetSystemMetrics(SM_CXSMICON), 
                              GetSystemMetrics(SM_CYSMICON), 
                              ILC_MASK, 1, 1); 
    
    // Add an icon to each image list.  
	HWND hParent=GetParent(hWndListView);
	HINSTANCE g_hInst=(HINSTANCE)GetWindowLong(hParent,GWL_HINSTANCE);
    hiconItem = LoadIcon(g_hInst, MAKEINTRESOURCE(IDI_ICON23));

    ImageList_AddIcon(hLarge, hiconItem);
    ImageList_AddIcon(hSmall, hiconItem);

    DestroyIcon(hiconItem);
 
// When you are dealing with multiple icons, you can use the previous four lines of 
// code inside a loop. The following code shows such a loop. The 
// icons are defined in the application's header file as resources, which 
// are numbered consecutively starting with IDS_FIRSTICON. The number of 
// icons is defined in the header file as C_ICONS.
/*    
    for(index = 0; index < C_ICONS; index++)
    {
        hIconItem = LoadIcon (g_hinst, MAKEINTRESOURCE(IDS_FIRSTICON + index));
        ImageList_AddIcon(hSmall, hIconItem);
        ImageList_AddIcon(hLarge, hIconItem);
        Destroy(hIconItem);
    }
*/
    
    // Assign the image lists to the list-view control. 
    ListView_SetImageList(hWndListView, hLarge, LVSIL_NORMAL); 
    ListView_SetImageList(hWndListView, hSmall, LVSIL_SMALL); 
    
    return TRUE; 
}

void InitListViewInfoOnStaffRecordProc(HWND hwnd,HWND hListView)//初始化员工档案listview信

息
{
	//访问数据库,获取staffinfo表的信息
	//访问数据库
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);


	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select 

StaffNumber,StaffName,StaffID,StaffHomeAddress,StaffPhoneNumber,StaffPost,StaffCarState,Sta

ffExtraInfo,FastInfo from staffinfo order by StaffNumber desc",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;
	 

	 int l_nStaffNumber;//编号
	 WCHAR l_szStaffName[256];//姓名
	 WCHAR l_szStaffID[256];//身份证号
	 WCHAR l_szStaffHomeAddress[256];//家庭住址
	 int l_nStaffPhoneNumber;//电话号码
	 WCHAR l_szStaffPost[256];//职位
	 WCHAR l_szStaffCarState[256];//发卡状态
	 WCHAR l_szStaffExtraInfo[256];//备注信息
	 WCHAR l_szFastInfo[256];//管理信息
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{
		 
		ZeroMemory(l_szStaffName,sizeof(l_szStaffName)/sizeof(WCHAR));
		ZeroMemory(l_szStaffID,sizeof(l_szStaffID)/sizeof(WCHAR));
		ZeroMemory(l_szStaffHomeAddress,sizeof(l_szStaffHomeAddress)/sizeof

(WCHAR));
		ZeroMemory(l_szStaffPost,sizeof(l_szStaffPost)/sizeof(WCHAR));
		ZeroMemory(l_szStaffCarState,sizeof(l_szStaffCarState)/sizeof(WCHAR));
		ZeroMemory(l_szStaffExtraInfo,sizeof(l_szStaffExtraInfo)/sizeof(WCHAR));
		ZeroMemory(l_szFastInfo,sizeof(l_szFastInfo)/sizeof(WCHAR));

		SQLGetData(hstmt,1,SQL_C_ULONG,&l_nStaffNumber,100,&cbsatid);
		SQLGetData(hstmt,2,SQL_C_WCHAR,l_szStaffName,100,&cbsatid);
		SQLGetData(hstmt,3,SQL_C_WCHAR,l_szStaffID,100,&cbsatid);
		SQLGetData(hstmt,4,SQL_C_WCHAR,l_szStaffHomeAddress,100,&cbsatid);
		SQLGetData(hstmt,5,SQL_C_ULONG,&l_nStaffPhoneNumber,100,&cbsatid);
		SQLGetData(hstmt,6,SQL_C_WCHAR,l_szStaffPost,100,&cbsatid);
		SQLGetData(hstmt,7,SQL_C_WCHAR,l_szStaffCarState,100,&cbsatid);
		SQLGetData(hstmt,8,SQL_C_WCHAR,l_szStaffExtraInfo,100,&cbsatid);
		SQLGetData(hstmt,9,SQL_C_WCHAR,l_szFastInfo,100,&cbsatid);

		//转整形数据为字符串
		WCHAR l_szStaffNumber[256];
		wsprintf(l_szStaffNumber,L"%d",l_nStaffNumber);
		WCHAR l_szStaffPhoneNumber[256];
		wsprintf(l_szStaffPhoneNumber,L"%d",l_nStaffPhoneNumber);
		//向listview插入数据
		InserStaffInfoToListViewOnStaffRecordProc(hListView,
			l_szStaffNumber,
			l_szStaffName,
			l_szStaffID,
			l_szStaffHomeAddress,
			l_szStaffPhoneNumber,
			l_szStaffPost,
			l_szStaffCarState,
			l_szStaffExtraInfo,
			l_szFastInfo);
		 
	}
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);





}
void InserStaffInfoToListViewOnStaffRecordProc(HWND hListView,WCHAR szStaffNumber[],WCHAR 

szStaffName[],WCHAR szStaffID[],WCHAR StaffHomeAddress[],WCHAR szStaffPhoneNumber[],WCHAR 

szStaffPost[],WCHAR szStaffState[],WCHAR szStaffExtraInfo[],WCHAR szFastInfo[])
{
	WCHAR buffer[30];

	LV_ITEM lvi;
	lvi.mask = LVIF_TEXT;
	lvi.iItem = 0;
	lvi.iSubItem = 0;
	wsprintf(buffer,szStaffNumber);
	lvi.pszText =buffer;

	SendMessage(hListView,LVM_INSERTITEM,0,(LPARAM)&lvi);
	/////////////////////////////////////////////////////

	///////////////////////////
	lvi.iSubItem++;
	ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
	wsprintf(buffer,szStaffName);
	lvi.pszText =buffer;

	SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);
	///////////////////////////
	lvi.iSubItem++;
	ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
	wsprintf(buffer,szStaffID);
	lvi.pszText =buffer;

	SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);
	///////////////////////////
	lvi.iSubItem++;
	ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
	wsprintf(buffer,StaffHomeAddress);
	lvi.pszText =buffer;

	SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);
	///////////////////////////////////////////////////////
	lvi.iSubItem++;
	ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
	wsprintf(buffer,szStaffPhoneNumber);
	lvi.pszText =buffer;

	SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);
	//////////////////////////////////////////////
	lvi.iSubItem++;
	ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
	wsprintf(buffer,szStaffPost);
	lvi.pszText =buffer;

	SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);
	//////////////////////////////////////////////
	lvi.iSubItem++;
	ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
	wsprintf(buffer,szStaffState);
	lvi.pszText =buffer;

	SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);

	//////////////////////////////////////////////
	lvi.iSubItem++;
	ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
	wsprintf(buffer,szStaffExtraInfo);
	lvi.pszText =buffer;
	SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);

	//////////////////////////////////////////////
	lvi.iSubItem++;
	ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
	wsprintf(buffer,szFastInfo);
	lvi.pszText =buffer;
	SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);
}
void GetCusSuggestionsAndInsertIntoDB(HWND hwnd);//获取用户意见内容,且插入数据库
void GetCusInfoFromTxtFileOnCustomerSuggestionsProc(HWND hwnd);//导出TXT文件
INT_PTR CALLBACK CustomerSuggestionsProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM 

lParam)//顾客意见反馈
{
	UNREFERENCED_PARAMETER(lParam);
	switch(message)
	{
	//case WM_CTLCOLOREDIT:
	//	{ 
	//		int i=GetWindowLong((HWND)lParam,GWL_ID);
	//		if(i==IDC_EDIT2)
	//		{
	//			SetTextColor((HDC)wParam,RGB(0,0,255));//文字颜色
	//			SetBkColor((HDC)wParam,GetSysColor(COLOR_BTNFACE));//文字的

背后颜色
	//		}
	//		return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
	//	}
	case WM_CTLCOLORSTATIC://设置静态文本框字体颜色
		{
			if (GetDlgItem(hDlg, IDC_STATIC11) == (HWND)lParam||GetDlgItem

(hDlg, IDC_STATIC33) == (HWND)lParam)//这里的1是静态文本框的ID
			{
				SetTextColor((HDC)wParam, RGB(255,0,255));
				SetBkMode((HDC)wParam, TRANSPARENT);
				//return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_BTNFACE));
				return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}

			break;

		}
	case WM_INITDIALOG:
		{

			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			//设置对话框图标
			SendMessage(hDlg, WM_SETICON, ICON_BIG,(LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON25))); 
			//设置按钮位图
			HWND hBn1=GetDlgItem(hDlg,IDC_BUTTON1);
			HBITMAP hbmp1=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP20));//确

认
			SendMessage(hBn1, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp1);

			HWND hBn2=GetDlgItem(hDlg,IDC_BUTTON2);
			HBITMAP hbmp2=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP19));//取

消
			SendMessage(hBn2, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp2);

			HWND hBn3=GetDlgItem(hDlg,IDC_BUTTON3);
			HBITMAP hbmp3=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP47));//取

消
			SendMessage(hBn3, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp3);
			return (INT_PTR)TRUE;
		}
	case WM_COMMAND:
		{
			if (LOWORD(wParam)==IDCANCEL)
			{
				EndDialog(hDlg,LOWORD(wParam));
				break;
			}
			switch(LOWORD(wParam))
			{
			case IDC_BUTTON1://确认
				{
					//获取用户输入的顾客意见,将其导入数据库
					GetCusSuggestionsAndInsertIntoDB(hDlg);
					break;
				}
			case IDC_BUTTON2://取消
				{
					EndDialog(hDlg,LOWORD(wParam));
					break;
				}
			case IDC_BUTTON3://导出txt文件
				{
					GetCusInfoFromTxtFileOnCustomerSuggestionsProc

(hDlg);
					break;
				}
			}
			break;
		}
	}
	return (INT_PTR)FALSE;
}

void GetCusInfoFromTxtFileOnCustomerSuggestionsProc(HWND hwnd)//导出TXT文件
{
	//访问数据库
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);


	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select CustomerSuggestion from 

customersuggestions",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;
	WCHAR  *g_szCusSuggestions=(WCHAR *)calloc(65565,sizeof(WCHAR));
	 
	lstrcatW(g_szCusSuggestions,L"-----------------------------财神餐饮管理系统 客户反

馈意见一览表-----------------------------");
	lstrcatW(g_szCusSuggestions,L"\r\n");
	lstrcatW(g_szCusSuggestions,L"\r\n");
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{
		WCHAR l_szCusSuggestions[256];
		SQLGetData(hstmt,1,SQL_C_WCHAR,l_szCusSuggestions,100,&cbsatid);
		lstrcatW(g_szCusSuggestions,l_szCusSuggestions);
		lstrcatW(g_szCusSuggestions,L"\r\n");
		lstrcatW(g_szCusSuggestions,L"\r\n");
	}
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);
	//保存
	{
		HANDLE hFile;

		ULONG TextLen;
		TextLen = lstrlenW(g_szCusSuggestions);

		DWORD  num1=0;
		WCHAR *strFileNameTemp=(WCHAR *)calloc(FILENAMESIZE,sizeof(WCHAR));		

	//保存文件名
		WCHAR *strFilePathTemp=(WCHAR *)calloc(FILEPATHSIZE,sizeof(WCHAR));		

	//保存文件路径
		if(SaveFileDlg(hwnd,strFilePathTemp,strFileNameTemp))				

//保存对话框
		{

			hFile = CreateFile(strFilePathTemp, GENERIC_WRITE, 

FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

			if (hFile == INVALID_HANDLE_VALUE) 
			{
				MessageBox(hwnd,L"打开文件失败!",NULL,MB_ICONEXCLAMATION);
			}
			else
			{

				WORD a = 0xfeff;//写入0xfeff让记事本以Unicode方式打开,中文

不会乱码
				WriteFile(hFile, &a, 2, &num1, NULL);
				if(WriteFile(hFile,g_szCusSuggestions,(TextLen+1)

*2,&num1,NULL))
				{
					MessageBox(hwnd,L"导出txt文件成功!",L"成

功",MB_ICONINFORMATION);
				}
				else
				{
					MessageBox(hwnd,L"导出失败!",L"失

败",MB_ICONEXCLAMATION);
				}
				CloseHandle(hFile);
			}

		}
		free(strFileNameTemp);							//

释放名字空间
		free(strFilePathTemp);							//

释放地址空间

	}
	free(g_szCusSuggestions);//释放意见空间

}
void GetCusSuggestionsAndInsertIntoDB(HWND hwnd)//获取用户意见内容,且插入数据库
{
	//获取意见
	WCHAR l_szCustomerSuggestions[256];
	GetDlgItemText(hwnd,IDC_EDIT2,l_szCustomerSuggestions,sizeof

(l_szCustomerSuggestions)/sizeof(WCHAR));
	//判空
	if (*l_szCustomerSuggestions==NULL || lstrlenW(l_szCustomerSuggestions)>100)
	{
		MessageBox(hwnd,L"输入的字数有误(确认字数在1~100之间)?",L"提

示",MB_ICONERROR|MB_OK);
		return;
	}
	//访问数据库
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

	WCHAR sql[256];//DELETEt1,t2 from t1 LEFTJOINt2 ON t1.id=t2.id WHERE t1.id=25
	wsprintf(sql,L"insert into customersuggestions(CustomerSuggestion) values

('%s')",l_szCustomerSuggestions);
	result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;
	MessageBox(hwnd,L"客户意见已经保存\n您可以点击“导出txt文件”按钮查看客户意见!",L"

提示",MB_ICONINFORMATION|MB_OK);
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);




}
void SetTableInfoOnCeTaiProc(HWND hwnd);//初始化餐桌信息
void SureToCheTaiOnCeTaiProc(HWND hwnd);//确认撤台处理
INT_PTR CALLBACK CeTaiProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)//撤台
{
	UNREFERENCED_PARAMETER(lParam);
	switch(message)
	{
	case WM_CTLCOLORSTATIC://设置静态文本框字体颜色
		{
			if (GetDlgItem(hDlg,IDC_STATIC11) == (HWND)lParam ||GetDlgItem

(hDlg,IDC_STATIC22) == (HWND)lParam)//这里的1是静态文本框的ID
			{
				SetTextColor((HDC)wParam, RGB(0,0,255));
				SetBkMode((HDC)wParam, TRANSPARENT);
				//return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_BTNFACE));
				return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}
			break;
		}
	case WM_INITDIALOG:
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			//设置对话框图标
			SendMessage(hDlg, WM_SETICON, ICON_BIG,(LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON25))); 
			//设置按钮位图
			HWND hBn1=GetDlgItem(hDlg,IDC_BUTTON1);
			HBITMAP hbmp1=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP20));//确

认
			SendMessage(hBn1, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp1);

			HWND hBn2=GetDlgItem(hDlg,IDC_BUTTON2);
			HBITMAP hbmp2=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP19));//取

消
			SendMessage(hBn2, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp2);
			//初始化餐桌信息
			SetTableInfoOnCeTaiProc(hDlg);
			return (INT_PTR)TRUE;
		}
	case WM_COMMAND:
		{
			if (LOWORD(wParam)==IDCANCEL)
			{
				EndDialog(hDlg,LOWORD(wParam));
				break;
			}
			switch(LOWORD(wParam))
			{
			case IDC_BUTTON1://确认撤台
				{
					SureToCheTaiOnCeTaiProc(hDlg);
					break;
				}
			case IDC_BUTTON2://退出
				{
					EndDialog(hDlg,LOWORD(wParam));
					break;
				}
			}
			break;
		}
	}
	return (INT_PTR)FALSE;
}
void SureToCheTaiOnCeTaiProc(HWND hwnd)//确认撤台处理
{
	//先要获取用户选择的是哪个餐桌
	WCHAR l_szTableNumber[256];
	GetDlgItemText(hwnd,IDC_COMBO2,l_szTableNumber,sizeof(l_szTableNumber)/sizeof

(WCHAR));
	//判空
	if (*l_szTableNumber==NULL)
	{
		MessageBox(hwnd,L"请先选择要撤台的餐桌!",L"友情提示",MB_ICONERROR|MB_OK);
		return;
	}
	//访问数据库,进行多表删除操作
	//分析:将用户选择的餐桌匹配项在dingingtable表中删除掉,同时还要删除diancai表中餐桌

匹配项
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

	WCHAR sql[256];//DELETEt1,t2 from t1 LEFTJOINt2 ON t1.id=t2.id WHERE t1.id=25
	wsprintf(sql,L"delete diningtable,diancai from diningtable left join diancai on 

diningtable.ExtraTableNumber=diancai.TableNumber where 

diningtable.ExtraTableNumber='%s'",l_szTableNumber);
	result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;
	MessageBox(hwnd,L"撤台成功!",L"提示",MB_ICONINFORMATION|MB_OK);
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);



}
void SetTableInfoOnCeTaiProc(HWND hwnd)//初始化餐桌信息
{
	//访问数据库
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
	 
	 
	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select ExtraTableNumber from 

diningtable",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;
	WCHAR l_szExtraTableNumber[256];
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{

		SQLGetData(hstmt,1,SQL_C_WCHAR,l_szExtraTableNumber,30,&cbsatid);
		SendDlgItemMessage(hwnd,IDC_COMBO2,CB_ADDSTRING,NULL,(LPARAM)

l_szExtraTableNumber);
		 
	}
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);
}
void InsertCustomerListView(HWND hListView,WCHAR szCustomerNumber[],WCHAR szCustomerName

[],WCHAR szPhoneNumber[],WCHAR szAddress[],WCHAR szCustomerCategory[],WCHAR 

szSettlementCategory[],WCHAR szEatingHabits[]);//插入客户信息的listview
INT_PTR CALLBACK AddCustomerInfoProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM 

lParam);//增加客户档案
INT_PTR CALLBACK DetailCustomerInfoProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM 

lParam);//详细信息

INT_PTR CALLBACK XiuGaiCustomerInfoProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM 

lParam);//修改详细信息
void InitListViewOnCustomerInfoProc(HWND hwnd,HWND hListView);//初始化listview

INT_PTR CALLBACK DeleteCustomerInfoProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM 

lParam);//修改详细信息
void ExPortTxtFile(HWND hwnd);//导出TXT文件处理
INT_PTR CALLBACK CustomerInfoProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)//

客户档案
{
	UNREFERENCED_PARAMETER(lParam);
	HWND hListView;
	switch(message)
	{
	case WM_INITDIALOG:
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			//设置对话框图标
			SendMessage(hDlg, WM_SETICON, ICON_BIG,(LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON23))); 
			//设置按钮位图
			HWND hBn1=GetDlgItem(hDlg,IDC_BUTTON1);
			HBITMAP hbmp1=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP35));//客

户就餐记录
			SendMessage(hBn1, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp1);

			HWND hBn2=GetDlgItem(hDlg,IDC_BUTTON2);
			HBITMAP hbmp2=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP36));//增

加
			SendMessage(hBn2, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp2);

			HWND hBn3=GetDlgItem(hDlg,IDC_BUTTON3);
			HBITMAP hbmp3=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP33));//修

改
			SendMessage(hBn3, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp3);

			HWND hBn4=GetDlgItem(hDlg,IDC_BUTTON4);
			HBITMAP hbmp4=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP32));//删

除
			SendMessage(hBn4, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp4);

			HWND hBn5=GetDlgItem(hDlg,IDC_BUTTON5);
			HBITMAP hbmp5=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP34));//详

细信息
			SendMessage(hBn5, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp5);

			HWND hBn6=GetDlgItem(hDlg,IDC_BUTTON6);
			HBITMAP hbmp6=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP30));//导

出txt文件
			SendMessage(hBn6, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp6);

			HWND hBn7=GetDlgItem(hDlg,IDC_BUTTON7);
			HBITMAP hbmp7=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP31));//返

回
			SendMessage(hBn7, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp7);
			//创建listview 
		 
			RECT rect;
			GetClientRect(hDlg,&rect);
			 
			hListView = CreateWindowEx(LVS_EX_FULLROWSELECT,_T

("SysListView32"),NULL,LVS_REPORT | 
				WS_CHILD |WS_VISIBLE|WS_VSCROLL|WS_HSCROLL,
				0,0,rect.right,rect.bottom-45,hDlg,(HMENU)100,hInst,NULL);


			SendMessage(hListView,LVM_SETTEXTCOLOR,0,RGB(0,0,0));//设置文本颜色

			SendMessage(hListView,LVM_SETTEXTBKCOLOR ,0,RGB(188,198,215));//设

置背景颜色
			SetFocus(hListView);

			ListView_SetItemState(hListView,0,LVIS_SELECTED,LVIS_SELECTED);     

           
			//参数0使第一行处于选择中状态,若为-1则表示所有的行

			ListView_SetExtendedListViewStyle(hListView,LVS_EX_FULLROWSELECT|

LVS_EX_GRIDLINES|LVS_EX_AUTOSIZECOLUMNS);              //设置整行选择风格
			 
			///////////////////////////
			//插入列
			LV_COLUMN lvc;
			lvc.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_FMT|LVCFMT_CENTER;
			lvc.fmt=LVCFMT_CENTER;
			lvc.pszText =L"客户号";
			lvc.cx = 60;
			SendMessage(hListView,LVM_INSERTCOLUMN,0,(LPARAM)&lvc);


			lvc.pszText = L"客户名称";
			lvc.cx = 150;
			SendMessage(hListView,LVM_INSERTCOLUMN,1,(LPARAM)&lvc);

			lvc.pszText = L"联系电话";   
			SendMessage(hListView,LVM_INSERTCOLUMN,2,(LPARAM)&lvc);

			lvc.pszText = L"地址";
			SendMessage(hListView,LVM_INSERTCOLUMN,3,(LPARAM)&lvc);

			lvc.pszText = L"客户类别";
			SendMessage(hListView,LVM_INSERTCOLUMN,4,(LPARAM)&lvc);

			lvc.pszText = L"结算类型";
			SendMessage(hListView,LVM_INSERTCOLUMN,5,(LPARAM)&lvc);

			lvc.pszText = L"饮食习惯";
			SendMessage(hListView,LVM_INSERTCOLUMN,6,(LPARAM)&lvc);

			//初始化listview
			InitListViewOnCustomerInfoProc(hDlg,hListView);
			return (INT_PTR)TRUE;
		}
	case WM_COMMAND:
		{
			if (LOWORD(wParam)==IDCANCEL)
			{
				EndDialog(hDlg,LOWORD(lParam));
				break;
			}
			switch(LOWORD(wParam))
			{
			case IDC_BUTTON1://客户就餐信息
				{
					break;
				}
			case IDC_BUTTON2://增加
				{
					HINSTANCE hInst=(HINSTANCE)GetWindowLong

(hDlg,GWL_HINSTANCE);
					DialogBox(hInst,MAKEINTRESOURCE

(IDD_DIALOG12),hDlg,AddCustomerInfoProc);
					break;
				}
			case IDC_BUTTON3://修改
				{
					HINSTANCE hInst=(HINSTANCE)GetWindowLong

(hDlg,GWL_HINSTANCE);
					DialogBox(hInst,MAKEINTRESOURCE

(IDD_DIALOG14),hDlg,XiuGaiCustomerInfoProc);
					break;
				}
			case IDC_BUTTON4://删除
				{
					HINSTANCE hInst=(HINSTANCE)GetWindowLong

(hDlg,GWL_HINSTANCE);
					DialogBox(hInst,MAKEINTRESOURCE

(IDD_DIALOG15),hDlg,DeleteCustomerInfoProc);
					break;
				}
			case IDC_BUTTON5://详细信息
				{
					HINSTANCE hInst=(HINSTANCE)GetWindowLong

(hDlg,GWL_HINSTANCE);
					DialogBox(hInst,MAKEINTRESOURCE

(IDD_DIALOG13),hDlg,DetailCustomerInfoProc);
					break;
				}
			case IDC_BUTTON6://导出TXT文件
				{
					ExPortTxtFile(hDlg);
					break;
				}
			case IDC_BUTTON7://返回
				{
					EndDialog(hDlg,LOWORD(wParam));
					break;
				}
		 
			}
			break;
		}
	}
	return (INT_PTR)FALSE;
}
#include <cstring>
//#define FILEPATHSIZE 2048
//#define FILENAMESIZE 280
BOOL SaveFileDlg(HWND hWnd,WCHAR *strfp,WCHAR * strfn)
{	
	OPENFILENAME ofn; 

	ZeroMemory(&ofn, sizeof(ofn));
	ofn.lStructSize = sizeof(ofn);
	ofn.hwndOwner = hWnd;
	ofn.lpstrFile = strfp;
	ofn.lpstrFile[0] = L'\0';
	ofn.nMaxFile = FILEPATHSIZE;
	ofn.lpstrFilter = L"文本文档(*.txt)\0*.txt\0所有文件\0*.*";
	ofn.nFilterIndex = 1;
	ofn.lpstrFileTitle = strfn;
	ofn.nMaxFileTitle = FILENAMESIZE;
	ofn.lpstrInitialDir = NULL;
	ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_OVERWRITEPROMPT;

	if ( GetSaveFileName(&ofn) )
	{
		if(ofn.nFileExtension==0)
		{
			lstrcatW(strfn,L".txt");
			lstrcatW(strfp,L".txt");
		}
		return TRUE;
	}
	return FALSE;
}

void ExPortTxtFile(HWND hwnd)//导出TXT文件处理
{
	//先访问数据库中的customerinfo表,取出各段的信息,没访问一次就将信息连接起来

(lstrcatW),最后组成一个大得字符串
	//利用GetSaveFileName处理保存
	//第一步:访问数据库
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
	//转客户编号为整形
	 
	 
	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select 

CustomerNumber,CustomerName,PhoneNumber,Address,CustomerCategory,SettlementCategory,EatingH

abits from customerinfo",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;

	int ln_CustomerNumber;//客户编号
	WCHAR l_szCustomerName[256];//客户的姓名
	int ln_PhoneNumber;//电话号码
	WCHAR l_szAddress[256];//地址
	WCHAR l_szCustomerCategory[256];//客户类型
	WCHAR l_szSettlementCategory[256];//客户的结算类型
	WCHAR l_szEatingHabits[256];//饮食习惯

	//设置全局变量
	WCHAR  *g_str=(WCHAR *)calloc(65565,sizeof(WCHAR));
	 lstrcatW(g_str,L"————————————————财神餐饮管理系统 客户信息一览——

——————————————————");
	lstrcatW(g_str,L"\r\n");
	lstrcatW(g_str,L"\r\n");
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{

		SQLGetData(hstmt,1,SQL_C_ULONG,&ln_CustomerNumber,30,&cbsatid);
		//转字符串
		WCHAR l_szCustomerNumber[30];
		wsprintf(l_szCustomerNumber,L"%d",ln_CustomerNumber);
		WCHAR info1[256];
		wsprintf(info1,L"客户编号:%s",l_szCustomerNumber);

		lstrcatW(g_str,info1);
		lstrcatW(g_str,L"\r\n");

		SQLGetData(hstmt,2,SQL_C_WCHAR,l_szCustomerName,30,&cbsatid);
		WCHAR info2[256];
		wsprintf(info2,L"客户姓名:%s",l_szCustomerName);
		lstrcatW(g_str,info2);
		lstrcatW(g_str,L"\r\n");

		SQLGetData(hstmt,3,SQL_C_ULONG,&ln_PhoneNumber,30,&cbsatid);
		//转字符串
		WCHAR l_szPhoneNumber[30];
		wsprintf(l_szPhoneNumber,L"%d",ln_PhoneNumber);
		WCHAR info3[256];
		wsprintf(info3,L"客户电话号码:%s",l_szPhoneNumber);
		lstrcatW(g_str,info3);
		lstrcatW(g_str,L"\r\n");

		SQLGetData(hstmt,4,SQL_C_WCHAR,l_szAddress,60,&cbsatid);
		WCHAR info4[256];
		wsprintf(info4,L"地址:%s",l_szAddress);
		lstrcatW(g_str,info4);
		lstrcatW(g_str,L"\r\n");

		SQLGetData(hstmt,5,SQL_C_WCHAR,l_szCustomerCategory,30,&cbsatid);
		WCHAR info5[256];
		wsprintf(info5,L"类型:%s",l_szCustomerCategory);

		lstrcatW(g_str,info5);
		lstrcatW(g_str,L"\r\n");
		SQLGetData(hstmt,6,SQL_C_WCHAR,l_szSettlementCategory,30,&cbsatid);
		WCHAR info6[256];
		wsprintf(info6,L"结算类型:%s",l_szSettlementCategory);
		lstrcatW(g_str,info6);
		lstrcatW(g_str,L"\r\n");
		SQLGetData(hstmt,7,SQL_C_WCHAR,l_szEatingHabits,60,&cbsatid);
		WCHAR info7[256];
		wsprintf(info7,L"饮食习惯:%s",l_szEatingHabits);
		lstrcatW(g_str,info7);
		lstrcatW(g_str,L"\r\n");
		lstrcatW(g_str,L"\r\n");
		lstrcatW(g_str,L"\r\n");
	}
	//MessageBox(NULL,g_str,NULL,MB_OK);
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);
	//好了现在已经为完全获取了所有客户字符串信息,保存在了g_str中

	//第二步:保存
	{
		HANDLE hFile;
		 
		ULONG TextLen;
		TextLen = lstrlenW(g_str);

		DWORD  num1=0;
		WCHAR *strFileNameTemp=(WCHAR *)calloc(FILENAMESIZE,sizeof(WCHAR));		

	//保存文件名
		WCHAR *strFilePathTemp=(WCHAR *)calloc(FILEPATHSIZE,sizeof(WCHAR));		

	//保存文件路径
		if(SaveFileDlg(hwnd,strFilePathTemp,strFileNameTemp))				

//保存对话框
		{
			 
				hFile = CreateFile(strFilePathTemp, GENERIC_WRITE, 

FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

				if (hFile == INVALID_HANDLE_VALUE) 
				{
					MessageBox(hwnd,L"打开文件失

败!",NULL,MB_ICONEXCLAMATION);
				}
				else
				{
					
				    WORD a = 0xfeff;//写入0xfeff让记事本以Unicode方式打开,

中文不会乱码
					WriteFile(hFile, &a, 2, &num1, NULL);
					if(WriteFile(hFile,g_str,(TextLen+1)*2,&num1,NULL))
					{
						 MessageBox(hwnd,L"导出txt文件成功!",L"成

功",MB_ICONINFORMATION);
					}
					else
					{
						MessageBox(hwnd,L"导出失败!",L"失

败",MB_ICONEXCLAMATION);
					}
					CloseHandle(hFile);
				}
			
		}
		free(strFileNameTemp);							//

释放名字空间
		free(strFilePathTemp);							//

释放地址空间
	 
	}
	free(g_str);
}
void SetCob1InfoOnDeleteCustomerInfoProc(HWND hwnd);//设置客户编号组合框的内容
void SetCustomerNameOnDeleteCustomerInfoProc(HWND hwnd);//根据编号,设置客户名信息
void SureToDeleteCustomerInfoOnDeleteCustomerInfoProc(HWND hwnd);//确认删除客户信息处理
INT_PTR CALLBACK DeleteCustomerInfoProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM 

lParam)//删除客户信息
{
	UNREFERENCED_PARAMETER(lParam);
	switch(message)
	{
	case WM_INITDIALOG:
		{

			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			//设置对话框图标
			SendMessage(hDlg, WM_SETICON, ICON_BIG,(LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON25))); 
			//设置按钮位图
			HWND hBn1=GetDlgItem(hDlg,IDC_BUTTON1);
			HBITMAP hbmp1=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP43));//确

认选择
			SendMessage(hBn1, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp1);

			HWND hBn2=GetDlgItem(hDlg,IDC_BUTTON2);
			HBITMAP hbmp2=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP44));//确

认删除
			SendMessage(hBn2, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp2);

			HWND hBn3=GetDlgItem(hDlg,IDC_BUTTON3);
			HBITMAP hbmp3=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP45));//返

回
			SendMessage(hBn3, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp3);

			HWND hBn4=GetDlgItem(hDlg,IDC_BUTTON4);
			HBITMAP hbmp4=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP46));//返

回
			SendMessage(hBn4, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp4);
			//访问数据库,设置客户编号组合框的内容
			SetCob1InfoOnDeleteCustomerInfoProc(hDlg);
			//设置定时器
			SetTimer(hDlg,1,3000,NULL);
			//禁用控件
			EnableWindow(GetDlgItem(hDlg,IDC_COMBO2),FALSE);
			return (INT_PTR)TRUE;
		}
	case WM_TIMER:
		{
			//根据用户的选择的编号,设置客户名信息
			SetCustomerNameOnDeleteCustomerInfoProc(hDlg);
			break;
		}
	case WM_COMMAND:
		{
			if (LOWORD(wParam)==IDCANCEL)
			{
				KillTimer(hDlg,1);
				EndDialog(hDlg,LOWORD(wParam));
				break;
			}
			switch(LOWORD(wParam))
			{
			case IDC_BUTTON1://确认选择
				{
					WCHAR l_szCustomerNumber[256];
					GetDlgItemText

(hDlg,IDC_COMBO1,l_szCustomerNumber,sizeof(l_szCustomerNumber)/sizeof(WCHAR));
					if (*l_szCustomerNumber==NULL)
					{
						MessageBox(hDlg,L"请先选择客户编号!",L"提

示",MB_OK|MB_ICONERROR);
						break;
					}
					EnableWindow(GetDlgItem(hDlg,IDC_COMBO1),FALSE);
					break;
				}
			case IDC_BUTTON2://确认删除
				{
					SureToDeleteCustomerInfoOnDeleteCustomerInfoProc

(hDlg);
					break;
				}
			case IDC_BUTTON3://返回
				{
					KillTimer(hDlg,1);
					EndDialog(hDlg,LOWORD(wParam));
					break;
				}
			case IDC_BUTTON4://重新选择
				{
					EnableWindow(GetDlgItem(hDlg,IDC_COMBO1),TRUE);
					break;
				}
			}
			break;
		}
	}
	return (INT_PTR)FALSE;
}
void SureToDeleteCustomerInfoOnDeleteCustomerInfoProc(HWND hwnd)//确认删除客户信息处理
{
	//先要获取用户的选择
	WCHAR l_szCustomerNumber[256];
	GetDlgItemText(hwnd,IDC_COMBO1,l_szCustomerNumber,sizeof

(l_szCustomerNumber)/sizeof(WCHAR));
	//判断是否为空
	if (*l_szCustomerNumber==NULL)
	{
		MessageBox(hwnd,L"请选择要删除的客户编号,\n并确认客户名!",L"提示",MB_OK|

MB_ICONERROR);
		return;
	}
	//满足条件,访问数据库,进行删除操作
	//访问数据库
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
	//转客户编号为整形
	int ln_customernumber;
	ln_customernumber=_wtoi(l_szCustomerNumber);
	WCHAR sql[256];
	wsprintf(sql,L"delete from customerinfo where 

CustomerNumber='%d'",ln_customernumber);
	result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;


	WCHAR l_szCustomerName[256];
	GetDlgItemText(hwnd,IDC_COMBO2,l_szCustomerName,sizeof(l_szCustomerName)/sizeof

(WCHAR));
	WCHAR l_szInfo[256];
	wsprintf(l_szInfo,L"编号为'%d',客户名为'%s'的用户已经从名单中成功删

除'",ln_customernumber,l_szCustomerName);
	 MessageBox(hwnd,l_szInfo,L"提示",MB_ICONINFORMATION|MB_OK);

	 //刷新listview信息
	 HWND hListView=FindWindowEx(GetParent(hwnd),NULL,L"SysListView32",NULL);//获取

listview的窗口句柄
	 SendMessage(hListView,LVM_DELETEALLITEMS,0,NULL);
	 InitListViewOnCustomerInfoProc(GetParent(hwnd),hListView);
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);




}
void SetCustomerNameOnDeleteCustomerInfoProc(HWND hwnd)//根据编号,设置客户名信息
{
	//获取编号
	WCHAR l_szCustomerNumber[256];
	GetDlgItemText(hwnd,IDC_COMBO1,l_szCustomerNumber,sizeof

(l_szCustomerNumber)/sizeof(WCHAR));
	if (*l_szCustomerNumber==NULL)
	{
		 return;
	}
	//访问数据库
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
	//转客户编号为整形
	int ln_customernumber;
	ln_customernumber=_wtoi(l_szCustomerNumber);
	WCHAR sql[256];
	wsprintf(sql,L"select CustomerName from customerinfo where 

CustomerNumber='%d'",ln_customernumber);
	result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;
	 WCHAR l_szCusName[256];
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{

		SQLGetData(hstmt,1,SQL_C_WCHAR,l_szCusName,30,&cbsatid);
		SetDlgItemText(hwnd,IDC_COMBO2,l_szCusName);
		break;
	}
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);



}
void SetCob1InfoOnDeleteCustomerInfoProc(HWND hwnd)//设置客户编号组合框的内容
{
	//访问数据库
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select CustomerNumber from customerinfo 

order by CustomerNumber desc",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;
	int l_nCustomerNumber;
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{


		SQLGetData(hstmt,1,SQL_C_ULONG,&l_nCustomerNumber,30,&cbsatid);
		WCHAR l_szCustomerNumber[256];
		wsprintf(l_szCustomerNumber,L"%d",l_nCustomerNumber);
		SendDlgItemMessage(hwnd,IDC_COMBO1,CB_ADDSTRING,NULL,(LPARAM)

l_szCustomerNumber);
	}
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);
}
void SureToXiuGaiOnXiuGaiCustomerInfoProc(HWND hwnd);//确认修改处理
void InitCustomerNumberOnXiuGaiCustomerInfoProc(HWND hwnd);//初始化客户编号组合框内容
void SetCustomerInfoWhenGetNumberOnXiuGaiCustomerInfoProc(HWND hwnd);//在timer消息里设置客

户信息
INT_PTR CALLBACK XiuGaiCustomerInfoProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM 

lParam)//修改详细信息
{
	UNREFERENCED_PARAMETER(lParam);
	switch(message)
	{
	case WM_INITDIALOG:
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			//设置对话框图标
			SendMessage(hDlg, WM_SETICON, ICON_BIG,(LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON23))); 
			//设置按钮位图
			HWND hBn1=GetDlgItem(hDlg,IDC_BUTTON1);
			HBITMAP hbmp1=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP20));//确

认修改
			SendMessage(hBn1, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp1);

			HWND hBn2=GetDlgItem(hDlg,IDC_BUTTON2);
			HBITMAP hbmp2=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP19));//返

回
			SendMessage(hBn2, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp2);

			HWND hBn3=GetDlgItem(hDlg,IDC_BUTTON3);
			HBITMAP hbmp3=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP41));//启

用修改
			SendMessage(hBn3, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp3);

			//禁用控件
			EnableWindow(GetDlgItem(hDlg,IDC_COMBO2),FALSE);
			EnableWindow(GetDlgItem(hDlg,IDC_COMBO4),FALSE);
			EnableWindow(GetDlgItem(hDlg,IDC_EDIT1),FALSE);
			EnableWindow(GetDlgItem(hDlg,IDC_COMBO6),FALSE);
			EnableWindow(GetDlgItem(hDlg,IDC_EDIT2),FALSE);
			EnableWindow(GetDlgItem(hDlg,IDC_EDIT3),FALSE);
			//初始化客户编号信息
			InitCustomerNumberOnXiuGaiCustomerInfoProc(hDlg);
			//初始化客户的类型
			SendDlgItemMessage(hDlg,IDC_COMBO4,CB_ADDSTRING,NULL,(LPARAM)L"普通

");
			SendDlgItemMessage(hDlg,IDC_COMBO4,CB_ADDSTRING,NULL,(LPARAM)

L"VIP");
			//初始化客户的结算类型
			SendDlgItemMessage(hDlg,IDC_COMBO6,CB_ADDSTRING,NULL,(LPARAM)L"现金

结算");
			SendDlgItemMessage(hDlg,IDC_COMBO6,CB_ADDSTRING,NULL,(LPARAM)L"到期

结算");
			//设置定时器
			SetTimer(hDlg,1,3000,NULL);
			return (INT_PTR)TRUE;
		}
	case WM_TIMER:
		{
			//访问数据库中的customerinfo表,设置各个控件的信息内容
			SetCustomerInfoWhenGetNumberOnXiuGaiCustomerInfoProc(hDlg);
			break;
		}
	case WM_COMMAND:
		{
			if (LOWORD(wParam)==IDCANCEL)
			{
				KillTimer(hDlg,1);
				EndDialog(hDlg,LOWORD(wParam));
				break;
			}
			if (LOWORD(wParam)==IDC_BUTTON2)//退出
			{
				KillTimer(hDlg,1);
				EndDialog(hDlg,LOWORD(wParam));
				break;
			}
			if (LOWORD(wParam)==IDC_BUTTON1)//确认修改
			{
				SureToXiuGaiOnXiuGaiCustomerInfoProc(hDlg);
				break;
			}
			if (LOWORD(wParam)==IDC_BUTTON3)//启用修改
			{
				
				WCHAR l_szCustomerNumber[256];
				GetDlgItemText(hDlg,IDC_COMBO3,l_szCustomerNumber,sizeof

(l_szCustomerNumber)/sizeof(WCHAR));
				if (*l_szCustomerNumber==NULL)
				{
					MessageBox(hDlg,L"请先选择客户编号",L"提示",MB_OK|

MB_ICONERROR);
					break;
				}
				KillTimer(hDlg,1);
				//启用控件
				EnableWindow(GetDlgItem(hDlg,IDC_COMBO2),TRUE);
				EnableWindow(GetDlgItem(hDlg,IDC_COMBO4),TRUE);
				EnableWindow(GetDlgItem(hDlg,IDC_EDIT1),TRUE);
				EnableWindow(GetDlgItem(hDlg,IDC_COMBO6),TRUE);
				EnableWindow(GetDlgItem(hDlg,IDC_EDIT2),TRUE);
				EnableWindow(GetDlgItem(hDlg,IDC_EDIT3),TRUE);
				break;
			}
			break;
		}
	}
	return (INT_PTR)FALSE;
}
void SetCustomerInfoWhenGetNumberOnXiuGaiCustomerInfoProc(HWND hwnd)//在timer消息里设置客户

信息
{
	//先要检测用户是否选择了客户编号
	WCHAR l_szCustomerNumber[256];
	GetDlgItemText(hwnd,IDC_COMBO3,l_szCustomerNumber,sizeof

(l_szCustomerNumber)/sizeof(WCHAR));
	if (*l_szCustomerNumber==NULL)
	{
		return;//没有选择,退出访问
	}
	//开始访问
	//访问数据库
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

	int ln_customernumber;
	ln_customernumber=_wtoi(l_szCustomerNumber);
	WCHAR sql[256];
	wsprintf(sql,L"select 

CustomerName,PhoneNumber,Address,CustomerCategory,SettlementCategory,EatingHabits from 

customerinfo where CustomerNumber='%d'",ln_customernumber);

	result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;


	WCHAR l_szCustomerName[256];
	int l_nPhoneNumber;
	WCHAR l_szAddress[256];
	WCHAR l_szCustomerCategory[256];
	WCHAR l_szSettlementCategory[256];
	WCHAR l_szEatingHabits[256];

	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{

		ZeroMemory(l_szCustomerName,sizeof(l_szCustomerName)/sizeof(WCHAR));
		ZeroMemory(l_szAddress,sizeof(l_szAddress)/sizeof(WCHAR));
		ZeroMemory(l_szCustomerCategory,sizeof(l_szCustomerCategory)/sizeof

(WCHAR));
		ZeroMemory(l_szSettlementCategory,sizeof(l_szSettlementCategory)/sizeof

(WCHAR));
		ZeroMemory(l_szEatingHabits,sizeof(l_szEatingHabits)/sizeof(WCHAR));


		SQLGetData(hstmt,1,SQL_C_WCHAR,l_szCustomerName,30,&cbsatid);
		SQLGetData(hstmt,2,SQL_C_ULONG,&l_nPhoneNumber,30,&cbsatid);
		SQLGetData(hstmt,3,SQL_C_WCHAR,l_szAddress,30,&cbsatid);
		SQLGetData(hstmt,4,SQL_C_WCHAR,l_szCustomerCategory,30,&cbsatid);
		SQLGetData(hstmt,5,SQL_C_WCHAR,l_szSettlementCategory,30,&cbsatid);
		SQLGetData(hstmt,6,SQL_C_WCHAR,l_szEatingHabits,30,&cbsatid);


		WCHAR l_szPhoneNumber[256];
		wsprintf(l_szPhoneNumber,L"%d",l_nPhoneNumber);

		SetDlgItemText(hwnd,IDC_COMBO2,l_szCustomerName);
		SetDlgItemText(hwnd,IDC_EDIT3,l_szPhoneNumber);
		SetDlgItemText(hwnd,IDC_EDIT1,l_szAddress);
		SetDlgItemText(hwnd,IDC_COMBO4,l_szCustomerCategory);
		SetDlgItemText(hwnd,IDC_COMBO6,l_szSettlementCategory);
		SetDlgItemText(hwnd,IDC_EDIT2,l_szEatingHabits);
		break;
	}
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);




}
void InitCustomerNumberOnXiuGaiCustomerInfoProc(HWND hwnd)//初始化客户编号组合框内容
{
	//访问数据库,获取客户编号信息
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select CustomerNumber from customerinfo 

order by CustomerNumber desc",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;
	int l_nCustomerNumber;
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{


		SQLGetData(hstmt,1,SQL_C_ULONG,&l_nCustomerNumber,30,&cbsatid);
		WCHAR l_szCustomerNumber[256];
		wsprintf(l_szCustomerNumber,L"%d",l_nCustomerNumber);
		SendDlgItemMessage(hwnd,IDC_COMBO3,CB_ADDSTRING,NULL,(LPARAM)

l_szCustomerNumber);
	}
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);
}
void SureToXiuGaiOnXiuGaiCustomerInfoProc(HWND hwnd)//确认修改处理
{
	//获取用户的输入
	WCHAR l_szCustomerNumber[256];
	GetDlgItemText(hwnd,IDC_COMBO3,l_szCustomerNumber,sizeof

(l_szCustomerNumber)/sizeof(WCHAR));
	//判空
	if (*l_szCustomerNumber==NULL)
	{
		//提示用户
		MessageBox(hwnd,L"请先选择客户的编号!",L"提示",MB_OK|MB_ICONERROR);
		return;//失败,返回
	}
	//如果已经选择客户编号,就要获取用户的输入
	WCHAR l_szCustomerName[256];//获取客户名
	GetDlgItemText(hwnd,IDC_COMBO2,l_szCustomerName,sizeof(l_szCustomerName)/sizeof

(WCHAR));
	WCHAR l_szCustomerCategory[256];//获取客户类型
	GetDlgItemText(hwnd,IDC_COMBO4,l_szCustomerCategory,sizeof

(l_szCustomerCategory)/sizeof(WCHAR));
	WCHAR l_szAddress[256];//获取客户的地址
	GetDlgItemText(hwnd,IDC_EDIT1,l_szAddress,sizeof(l_szAddress)/sizeof(WCHAR));
	WCHAR l_szSettlementCategory[256];//获取客户的结算类型
	GetDlgItemText(hwnd,IDC_COMBO6,l_szSettlementCategory,sizeof

(l_szSettlementCategory)/sizeof(WCHAR));
	WCHAR l_szEatingHabits[256];//获取客户的饮食习惯
	GetDlgItemText(hwnd,IDC_EDIT2,l_szEatingHabits,sizeof(l_szEatingHabits)/sizeof

(WCHAR));
	WCHAR l_szPhoneNumber[256];//获取电话号码
	GetDlgItemText(hwnd,IDC_EDIT3,l_szPhoneNumber,sizeof(l_szPhoneNumber)/sizeof

(WCHAR));
	int ln_Number;//转电话号码为整形数据
	ln_Number=_wtoi(l_szPhoneNumber);
	int ln_customernumber;//转客户编号为整形数据
	ln_customernumber=_wtoi(l_szCustomerNumber);

	//访问数据库,修改数据
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄// 
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
	WCHAR sql[256];
	wsprintf(sql,L"update customerinfo set 

CustomerName='%s',CustomerCategory='%s',Address='%s',SettlementCategory='%s',EatingHabits='

%s',PhoneNumber='%d' where 

CustomerNumber='%d'",l_szCustomerName,l_szCustomerCategory,l_szAddress,l_szSettlementCatego

ry,l_szEatingHabits,ln_Number,ln_customernumber);
	result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;
	//刷新listview信息
	HWND hListView=FindWindowEx(GetParent(hwnd),NULL,L"SysListView32",NULL);//获取

listview的窗口句柄
	SendMessage(hListView,LVM_DELETEALLITEMS,0,NULL);
	InitListViewOnCustomerInfoProc(GetParent(hwnd),hListView);
	//提示用户
	 MessageBox(hwnd,L"修改成功!",L"提示",MB_OK|MB_ICONINFORMATION);
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);



}
void GetCustomerNameInfoOnDetailCustomerInfoProc(HWND hwnd);//设置客户名组合框的内容
void GetOtherInfoOnTimerOnDetailCustomerInfoProc(HWND hwnd);//获取其他信息
INT_PTR CALLBACK DetailCustomerInfoProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM 

lParam)//详细信息
{
	UNREFERENCED_PARAMETER(lParam);
	switch(message)
	{
	//case WM_CTLCOLOREDIT:
	//	{ 
	//		int i=GetWindowLong((HWND)lParam,GWL_ID);
	//		if(i==IDC_EDIT1 ||i==IDC_EDIT2 || i==IDC_EDIT3 ||i==IDC_EDIT4||

i==IDC_COMBO1 ||i==IDC_COMBO2 ||i==IDC_COMBO3)
	//		{
	//			SetTextColor((HDC)wParam,RGB(0,0,255));//文字颜色
	//			//SetBkColor((HDC)wParam,GetSysColor(COLOR_HOTLIGHT));//文

字的背后颜色
	//		}
	//		return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
		//}
	case WM_CTLCOLORSTATIC://设置静态文本框字体颜色
		{
			if (GetDlgItem(hDlg,IDC_STATIC11) == (HWND)lParam)//这里的1是静态文

本框的ID
			{
				SetTextColor((HDC)wParam, RGB(255,0,0));
				SetBkMode((HDC)wParam, TRANSPARENT);
				//return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_BTNFACE));
				return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}
			if (GetDlgItem(hDlg,IDC_STATIC22) == (HWND)lParam || GetDlgItem

(hDlg,IDC_STATIC33) == (HWND)lParam || GetDlgItem(hDlg,IDC_STATIC44) == (HWND)lParam ||

GetDlgItem(hDlg,IDC_STATIC55) == (HWND)lParam  ||GetDlgItem(hDlg,IDC_STATIC66) == (HWND)

lParam ||GetDlgItem(hDlg,IDC_STATIC77) == (HWND)lParam || GetDlgItem(hDlg,IDC_STATIC99) == 

(HWND)lParam  )//这里的1是静态文本框的ID
			{
				SetTextColor((HDC)wParam, RGB(255,0,255));
				SetBkMode((HDC)wParam, TRANSPARENT);
				//return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_BTNFACE));
				return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}
			break;

		}
	case WM_TIMER:
		{
			//根据客户名来访问数据库获取其他段的信息
			GetOtherInfoOnTimerOnDetailCustomerInfoProc(hDlg);
			break;
		}
	case WM_INITDIALOG:
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			//设置对话框图标
			SendMessage(hDlg, WM_SETICON, ICON_BIG,(LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON22))); 
			//设置按钮位图
			HWND hBn1=GetDlgItem(hDlg,IDC_BUTTON1);
			HBITMAP hbmp1=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP39));//返

回
			SendMessage(hBn1, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp1);
			//访问数据库获取客户名信息
			GetCustomerNameInfoOnDetailCustomerInfoProc(hDlg);
			SetTimer(hDlg,1,2000,NULL);
			return (INT_PTR)TRUE;
		}
	case WM_COMMAND:
		{
			if (LOWORD(wParam)==IDCANCEL)
			{
				KillTimer(hDlg,1);
				EndDialog(hDlg,LOWORD(wParam));
				break;
			}
			if (LOWORD(wParam)==IDC_BUTTON1)
			{
				KillTimer(hDlg,1);
				EndDialog(hDlg,LOWORD(wParam));
				break;
			}
			break;
		}
	}
	return (INT_PTR)FALSE;
}
void GetOtherInfoOnTimerOnDetailCustomerInfoProc(HWND hwnd)//获取其他信息
{
	//先要获取组合框1里是否有内容
	WCHAR l_szCustomerNumber[256];
	GetDlgItemText(hwnd,IDC_COMBO1,l_szCustomerNumber,sizeof

(l_szCustomerNumber)/sizeof(WCHAR));
	if (*l_szCustomerNumber==NULL)
	{
		return;//不执行一下语句
	}
	//访问数据库
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

	int ln_customernumber;
	ln_customernumber=_wtoi(l_szCustomerNumber);
	WCHAR sql[256];
	wsprintf(sql,L"select 

CustomerName,PhoneNumber,Address,CustomerCategory,SettlementCategory,EatingHabits from 

customerinfo where CustomerNumber='%d'",ln_customernumber);

	result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;

	 
	WCHAR l_szCustomerName[256];
	int l_nPhoneNumber;
	WCHAR l_szAddress[256];
	WCHAR l_szCustomerCategory[256];
	WCHAR l_szSettlementCategory[256];
	WCHAR l_szEatingHabits[256];

	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{

		ZeroMemory(l_szCustomerName,sizeof(l_szCustomerName)/sizeof(WCHAR));
		ZeroMemory(l_szAddress,sizeof(l_szAddress)/sizeof(WCHAR));
		ZeroMemory(l_szCustomerCategory,sizeof(l_szCustomerCategory)/sizeof

(WCHAR));
		ZeroMemory(l_szSettlementCategory,sizeof(l_szSettlementCategory)/sizeof

(WCHAR));
		ZeroMemory(l_szEatingHabits,sizeof(l_szEatingHabits)/sizeof(WCHAR));

		 
		SQLGetData(hstmt,1,SQL_C_WCHAR,l_szCustomerName,30,&cbsatid);
		SQLGetData(hstmt,2,SQL_C_ULONG,&l_nPhoneNumber,30,&cbsatid);
		SQLGetData(hstmt,3,SQL_C_WCHAR,l_szAddress,30,&cbsatid);
		SQLGetData(hstmt,4,SQL_C_WCHAR,l_szCustomerCategory,30,&cbsatid);
		SQLGetData(hstmt,5,SQL_C_WCHAR,l_szSettlementCategory,30,&cbsatid);
		SQLGetData(hstmt,6,SQL_C_WCHAR,l_szEatingHabits,30,&cbsatid);

		 
		WCHAR l_szPhoneNumber[256];
		wsprintf(l_szPhoneNumber,L"%d",l_nPhoneNumber);

		SetDlgItemText(hwnd,IDC_EDIT4,l_szCustomerName);
		SetDlgItemText(hwnd,IDC_EDIT1,l_szPhoneNumber);
		SetDlgItemText(hwnd,IDC_EDIT2,l_szAddress);
		SetDlgItemText(hwnd,IDC_COMBO2,l_szCustomerCategory);
		SetDlgItemText(hwnd,IDC_COMBO3,l_szSettlementCategory);
		SetDlgItemText(hwnd,IDC_EDIT3,l_szEatingHabits);
		break;
	}
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);
}
void GetCustomerNameInfoOnDetailCustomerInfoProc(HWND hwnd)//设置客户名组合框的内容
{
	//访问数据库
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select CustomerNumber from customerinfo 

order by CustomerNumber desc",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;
	int l_nCustomerName;
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{

	 
		SQLGetData(hstmt,1,SQL_C_ULONG,&l_nCustomerName,30,&cbsatid);
		WCHAR l_szCustomerName[256];
		wsprintf(l_szCustomerName,L"%d",l_nCustomerName);
		SendDlgItemMessage(hwnd,IDC_COMBO1,CB_ADDSTRING,NULL,(LPARAM)

l_szCustomerName);
	}
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);
}
void InitListViewOnCustomerInfoProc(HWND hwnd,HWND hListView)//初始化listview
{
	//访问数据库的表:customerinfo ,获取字段信息,设置listview
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

	 
	 
	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select 

CustomerNumber,CustomerName,PhoneNumber,Address,CustomerCategory,SettlementCategory,EatingH

abits from customerinfo order by CustomerNumber desc",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;

	 int l_nCustomerNumber;
	 WCHAR l_szCustomerName[256];
	 int l_nPhoneNumber;
	 WCHAR l_szAddress[256];
	 WCHAR l_szCustomerCategory[256];
	 WCHAR l_szSettlementCategory[256];
	 WCHAR l_szEatingHabits[256];

	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{

		ZeroMemory(l_szCustomerName,sizeof(l_szCustomerName)/sizeof(WCHAR));
		ZeroMemory(l_szAddress,sizeof(l_szAddress)/sizeof(WCHAR));
		ZeroMemory(l_szCustomerCategory,sizeof(l_szCustomerCategory)/sizeof

(WCHAR));
		ZeroMemory(l_szSettlementCategory,sizeof(l_szSettlementCategory)/sizeof

(WCHAR));
		ZeroMemory(l_szEatingHabits,sizeof(l_szEatingHabits)/sizeof(WCHAR));

		SQLGetData(hstmt,1,SQL_C_ULONG,&l_nCustomerNumber,30,&cbsatid);
		SQLGetData(hstmt,2,SQL_C_WCHAR,l_szCustomerName,30,&cbsatid);
		SQLGetData(hstmt,3,SQL_C_ULONG,&l_nPhoneNumber,30,&cbsatid);
		SQLGetData(hstmt,4,SQL_C_WCHAR,l_szAddress,30,&cbsatid);
		SQLGetData(hstmt,5,SQL_C_WCHAR,l_szCustomerCategory,30,&cbsatid);
		SQLGetData(hstmt,6,SQL_C_WCHAR,l_szSettlementCategory,30,&cbsatid);
		SQLGetData(hstmt,7,SQL_C_WCHAR,l_szEatingHabits,30,&cbsatid);

		WCHAR l_szCustomerNumber[256];
		wsprintf(l_szCustomerNumber,L"%d",l_nCustomerNumber);
		WCHAR l_szPhoneNumber[256];
		wsprintf(l_szPhoneNumber,L"%d",l_nPhoneNumber);

		InsertCustomerListView

(hListView,l_szCustomerNumber,l_szCustomerName,l_szPhoneNumber, 

l_szAddress,l_szCustomerCategory,  l_szSettlementCategory,l_szEatingHabits);//插入客户信息

的listview
	}
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);

}
void SureToAddCustomerInfoOnCustomerInfoProc(HWND hwnd);//确认处理增加客户信息
INT_PTR CALLBACK AddCustomerInfoProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM 

lParam)//增加客户档案
{
	UNREFERENCED_PARAMETER(lParam);
	switch(message)
	{
	
	//case WM_CTLCOLOREDIT:
	//	{ 
	//		int i=GetWindowLong((HWND)lParam,GWL_ID);
	//		if(i==IDC_EDIT1 ||i==IDC_EDIT2 || i==IDC_EDIT3 ||i==IDC_EDIT4)
	//		{
	//			SetTextColor((HDC)wParam,RGB(0,0,255));//文字颜色
	//			//SetBkColor((HDC)wParam,GetSysColor(COLOR_HOTLIGHT));//文

字的背后颜色
	//		}
	//		return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
	//	}
	case WM_CTLCOLORSTATIC://设置静态文本框字体颜色
		{
			if (GetDlgItem(hDlg,IDC_STATIC11) == (HWND)lParam)//这里的1是静态文

本框的ID
			{
				SetTextColor((HDC)wParam, RGB(255,0,0));
				SetBkMode((HDC)wParam, TRANSPARENT);
				//return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_BTNFACE));
				return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}
			if (GetDlgItem(hDlg,IDC_STATIC22) == (HWND)lParam || GetDlgItem

(hDlg,IDC_STATIC33) == (HWND)lParam || GetDlgItem(hDlg,IDC_STATIC44) == (HWND)lParam ||

GetDlgItem(hDlg,IDC_STATIC55) == (HWND)lParam  ||GetDlgItem(hDlg,IDC_STATIC66) == (HWND)

lParam ||GetDlgItem(hDlg,IDC_STATIC77) == (HWND)lParam )//这里的1是静态文本框的ID
			{
				SetTextColor((HDC)wParam, RGB(0,0,255));
				SetBkMode((HDC)wParam, TRANSPARENT);
				//return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_BTNFACE));
				return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}
			break;

		}
	 
	case WM_INITDIALOG:
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			//设置对话框图标
			SendMessage(hDlg, WM_SETICON, ICON_BIG,(LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON17))); 
			 //设置位图按钮
			HWND hBn1=GetDlgItem(hDlg,IDC_BUTTON1);
			HBITMAP hbmp1=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP40));//确

认
			SendMessage(hBn1, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp1);

			HWND hBn2=GetDlgItem(hDlg,IDC_BUTTON2);
			HBITMAP hbmp2=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP39));//取

消
			SendMessage(hBn2, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp2);

			//初始化几个组合框
			//初始化客户类型
			SendDlgItemMessage(hDlg,IDC_COMBO1,CB_ADDSTRING,NULL,(LPARAM)L"普通

");
			SendDlgItemMessage(hDlg,IDC_COMBO1,CB_ADDSTRING,NULL,(LPARAM)

L"VIP");
			//初始化结算类型
			SendDlgItemMessage(hDlg,IDC_COMBO2,CB_ADDSTRING,NULL,(LPARAM)L"现金

结算");
			SendDlgItemMessage(hDlg,IDC_COMBO2,CB_ADDSTRING,NULL,(LPARAM)L"到期

结算");
			return (INT_PTR)TRUE;
		}
	case WM_COMMAND:
		{
			if (LOWORD(wParam)==IDCANCEL)
			{
				EndDialog(hDlg,LOWORD(wParam));
				break;
			}
			switch(LOWORD(wParam))
			{
			case IDC_BUTTON1://确认
				{
					SureToAddCustomerInfoOnCustomerInfoProc(hDlg);
					break;
				}
			case IDC_BUTTON2://取消
				{
					EndDialog(hDlg,NULL);
					break;
				}
			}
			break;
		}
	}
	return (INT_PTR)FALSE;
}
void SureToAddCustomerInfoOnCustomerInfoProc(HWND hwnd)//确认处理增加客户信息
{
	//先要获取用户的输入
	 WCHAR l_szPhoneNumber[256];//获取客户的电话号码
	GetDlgItemText(hwnd,IDC_EDIT1,l_szPhoneNumber,sizeof(l_szPhoneNumber)/sizeof

(WCHAR));

	WCHAR l_szCustomerName[256];//获取客户姓名
	GetDlgItemText(hwnd,IDC_EDIT2,l_szCustomerName,sizeof(l_szCustomerName)/sizeof

(WCHAR));

	WCHAR l_szAddress[256];//获取客户的地址
	GetDlgItemText(hwnd,IDC_EDIT3,l_szAddress,sizeof(l_szAddress)/sizeof(WCHAR));

	WCHAR l_szCustomerCategory[256];//获取客户的类型(普通,VIP)
	GetDlgItemText(hwnd,IDC_COMBO1,l_szCustomerCategory,sizeof

(l_szCustomerCategory)/sizeof(WCHAR));

	WCHAR l_szSettlementCategory[256];//获取客户的结算类型(现金结算,定期结算)
	GetDlgItemText(hwnd,IDC_COMBO2,l_szSettlementCategory,sizeof

(l_szSettlementCategory)/sizeof(WCHAR));

	WCHAR l_szEatingHabits[256];//获取客户的饮食习惯
	GetDlgItemText(hwnd,IDC_EDIT4,l_szEatingHabits,sizeof(l_szEatingHabits)/sizeof

(WCHAR));


	//判空(号码,姓名,类型和结算类型不能为空)
	if (*l_szPhoneNumber==NULL ||*l_szCustomerName==NULL || *l_szCustomerCategory==NULL 

|| *l_szSettlementCategory==NULL)
	{
		MessageBox(hwnd,L"号码,姓名,客户类型和结算类型必须填写!",L"提示",MB_OK|

MB_ICONERROR);
		return;//不满足条件,返回
	}
	//满足条件的的情况下,执行数据库访问,表:customerinfo

	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);


	WCHAR sql[256];
	//条件查询
	int ln_phonenumber;
	ln_phonenumber=_wtoi(l_szPhoneNumber);
	 
		
    wsprintf(sql,L"insert into customerinfo

(CustomerName,PhoneNumber,Address,CustomerCategory,SettlementCategory,EatingHabits) values

('%s','%d','%s','%s','%s','%s')",l_szCustomerName,ln_phonenumber,l_szAddress,l_szCustomerCa

tegory,l_szSettlementCategory,l_szEatingHabits);
 

	result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;
	MessageBox(hwnd,L"执行成功",L"提示",MB_ICONINFORMATION|MB_OK);
	
	HWND hListView=FindWindowEx(GetParent(hwnd),NULL,L"SysListView32",NULL);//获取

listview的窗口句柄
	SendMessage(hListView,LVM_DELETEALLITEMS,0,NULL);
	InitListViewOnCustomerInfoProc(GetParent(hwnd),hListView);
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);
}
void InsertCustomerListView(HWND hListView,WCHAR szCustomerNumber[],WCHAR szCustomerName

[],WCHAR szPhoneNumber[],WCHAR szAddress[],WCHAR szCustomerCategory[],WCHAR 

szSettlementCategory[],WCHAR szEatingHabits[])//插入客户信息的listview
{	
	
	WCHAR buffer[30];

	LV_ITEM lvi;
	lvi.mask = LVIF_TEXT;
	lvi.iItem = 0;
	lvi.iSubItem = 0;
	wsprintf(buffer,szCustomerNumber);
	lvi.pszText =buffer;

	SendMessage(hListView,LVM_INSERTITEM,0,(LPARAM)&lvi);
	/////////////////////////////////////////////////////
	lvi.iSubItem++;
	ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
	wsprintf(buffer,szCustomerName);
	lvi.pszText =buffer;

	SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);
	///////////////////////////
	lvi.iSubItem++;
	ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
	wsprintf(buffer,szPhoneNumber);
	lvi.pszText =buffer;

	SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);
	///////////////////////////////////////////////////////
	lvi.iSubItem++;
	ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
	wsprintf(buffer,szAddress);
	lvi.pszText =buffer;

	SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);
	//////////////////////////////////////////////
	lvi.iSubItem++;
	ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
	wsprintf(buffer,szCustomerCategory);
	lvi.pszText =buffer;

	SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);
	//////////////////////////////////////////////
	lvi.iSubItem++;
	ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
	wsprintf(buffer,szSettlementCategory);
	lvi.pszText =buffer;

	SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);

	//////////////////////////////////////////////
	lvi.iSubItem++;
	ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
	wsprintf(buffer,szEatingHabits);
	lvi.pszText =buffer;
	SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);
}
void GetTableInfoFromDataBaseOnTuiCaiProc(HWND hwnd);//访问数据库,获取餐桌信息
void InitCoB2OnTimerOnTuiCaiProc(HWND hwnd);//更新菜肴信息
void SureToTuiCaiOnTuiCaiProc(HWND hwnd);//退菜处理
INT_PTR CALLBACK TuiCaiProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)//退菜
{
	UNREFERENCED_PARAMETER(lParam);
	switch(message)
	{
	case WM_INITDIALOG:
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			//设置对话框图标

			SendMessage(hDlg, WM_SETICON, ICON_BIG,(LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON19))); 
			//设置按钮位图
			HWND hBn1=GetDlgItem(hDlg,IDC_BUTTON1);
			HBITMAP hbmp1=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP22));//确

认
			SendMessage(hBn1, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp1);

			HWND hBn2=GetDlgItem(hDlg,IDC_BUTTON2);
			HBITMAP hbmp2=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP16));//返

回
			SendMessage(hBn2, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp2);
			//访问数据库中的diancai 表,获取餐桌号
			GetTableInfoFromDataBaseOnTuiCaiProc(hDlg);
			 
			//设置定时器
			SetTimer(hDlg,1,2000,NULL);
			return (INT_PTR)TRUE;
		}
	case WM_CTLCOLORSTATIC://设置静态文本框字体颜色
		{
			if (GetDlgItem(hDlg,IDC_STATIC11) == (HWND)lParam || GetDlgItem

(hDlg,IDC_STATIC22) == (HWND)lParam)//这里的1是静态文本框的ID
			{
				SetTextColor((HDC)wParam, RGB(255,0,0));
				SetBkMode((HDC)wParam, TRANSPARENT);
				return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}
			break;
		}
	case WM_TIMER:
		{
			InitCoB2OnTimerOnTuiCaiProc(hDlg);
			break;
		}
	case WM_COMMAND:
		{
			if (LOWORD(wParam)==IDCANCEL)
			{
				EndDialog(hDlg,LOWORD(wParam));
				break;
			}
			switch(LOWORD(wParam))
			{
			case IDC_BUTTON1://确认退菜
				{
					//在此处理,删除数据库中项
					SureToTuiCaiOnTuiCaiProc(hDlg);
					break;
				}
			case IDC_BUTTON2://返回
				{
					EndDialog(hDlg,LOWORD(wParam));
					break;
				}
			}
			break;
		}
	}
	return (INT_PTR)FALSE;
}
void SureToTuiCaiOnTuiCaiProc(HWND hwnd)//退菜处理
{
	//获取餐桌号
	WCHAR l_szTableName[256];
	GetDlgItemText(hwnd,IDC_COMBO1,l_szTableName,sizeof(l_szTableName)/sizeof(WCHAR));
	//获取菜肴名
	WCHAR l_szCaiName[256];
	GetDlgItemText(hwnd,IDC_COMBO2,l_szCaiName,sizeof(l_szCaiName)/sizeof(WCHAR));
	//判空
	if (*l_szTableName==NULL || *l_szCaiName==NULL)
	{
		MessageBox(hwnd,L"标有“*”的项必须填写!",L"提示",MB_ICONERROR|MB_OK);
		return;
	}
	//满足条件,开始访问数据库
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

	
	WCHAR szInfo[256];
	wsprintf(szInfo,L"退菜之前请再次确认信息是否正确:\n菜名:'%s'\n退菜餐

桌:'%s'",l_szCaiName,l_szTableName);
	if (IDYES==MessageBox(hwnd,szInfo,L"提示",MB_YESNO|MB_ICONINFORMATION))
	{
		WCHAR sql[256];
		//条件查询
		wsprintf(sql,L"delete from diancai where TableNumber='%s' and 

MenuName='%s'",l_szTableName,l_szCaiName);

		result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

		CHECKDBSTMTERROR(hwnd,result,hstmt);
		result =SQLExecute(hstmt);
		CHECKDBSTMTERROR(hwnd,result,hstmt);

		SQLINTEGER cbsatid=SQL_NTS;
		MessageBox(hwnd,L"退菜成功!",L"提示",MB_OK|MB_ICONINFORMATION);
		//释放odbc资源
		SQLFreeStmt(hstmt,SQL_CLOSE);
		SQLDisconnect(hdbc);
		SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
		SQLFreeHandle(SQL_HANDLE_ENV,henv);
	}
	else
	{
		 EndDialog(hwnd,NULL);
	}
}
void InitCoB2OnTimerOnTuiCaiProc(HWND hwnd)//更新菜肴信息
{
	//先要获取餐桌信息
	WCHAR l_szTable[256];
	GetDlgItemText(hwnd,IDC_COMBO1,l_szTable,sizeof(l_szTable)/sizeof(WCHAR));
	if (*l_szTable==NULL)
	{
		return;
	}
	//根据这个餐桌信息,访问数据库中的diancai表设置菜肴组合框的信息
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

	WCHAR sql[256];
	//条件查询
	wsprintf(sql,L"select MenuName from diancai where TableNumber='%s'",l_szTable);
	result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;
	WCHAR l_szmenuname[256];
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{

		ZeroMemory(l_szmenuname,sizeof(l_szmenuname)/sizeof(WCHAR));
		SQLGetData(hstmt,1,SQL_C_WCHAR,l_szmenuname,30,&cbsatid);//获取额外的餐桌号
		SendDlgItemMessage(hwnd,IDC_COMBO2,CB_ADDSTRING,NULL,(LPARAM)l_szmenuname);
	}
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);

}
void GetTableInfoFromDataBaseOnTuiCaiProc(HWND hwnd)//访问数据库,获取餐桌信息
{

	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

	WCHAR sql[256];
	wsprintf(sql,L"select ExtraTableNumber from diningtable where State='%s'",L"等待上

菜");
	result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;
	WCHAR l_sztablename[256];
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{

		ZeroMemory(l_sztablename,sizeof(l_sztablename)/sizeof(WCHAR));
		SQLGetData(hstmt,1,SQL_C_WCHAR,l_sztablename,30,&cbsatid);//获取额外的餐桌

号
		SendDlgItemMessage(hwnd,IDC_COMBO1,CB_ADDSTRING,NULL,(LPARAM)

l_sztablename);
	}
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);

}
void InitTableComBoOnGaiCaiProc(HWND hwnd);//初始化餐桌组合框
void InitCaiYaoNumComBoOnGaiCaiProc(HWND hwnd);//初始化菜肴编号组合框i
void UpdateSomeInfoOnTimerOnGaiCaiProc(HWND hwnd);//更新操作几个控件内容
void SureToUpdateOnGaiCaiProc(HWND hwnd);//确认修改处理
INT_PTR CALLBACK GaiCaiProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)//改菜
{
	UNREFERENCED_PARAMETER(lParam);
	switch(message)
	{
	case WM_INITDIALOG:
		{
			//设置位图按钮
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			HWND hBn1=GetDlgItem(hDlg,IDC_BUTTON1);
			HBITMAP hbmp1=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP20));//确

认
			SendMessage(hBn1, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp1);

			HWND hBn2=GetDlgItem(hDlg,IDC_BUTTON2);
			HBITMAP hbmp2=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP19));//取

消
			SendMessage(hBn2, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp2);

			HWND hBn3=GetDlgItem(hDlg,IDC_BUTTON3);
			HBITMAP hbmp3=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP21));//确

认选择
			SendMessage(hBn3, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp3);

			//设置图标
			SendMessage(hDlg, WM_SETICON, ICON_BIG,(LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON17))); 
			//禁用几个控件
			//禁用编辑框
			EnableWindow(GetDlgItem(hDlg,IDC_EDIT1),FALSE);
			EnableWindow(GetDlgItem(hDlg,IDC_EDIT2),FALSE);
			EnableWindow(GetDlgItem(hDlg,IDC_EDIT3),FALSE);
			EnableWindow(GetDlgItem(hDlg,IDC_EDIT4),FALSE);
			EnableWindow(GetDlgItem(hDlg,IDC_EDIT5),FALSE);
			//禁用组合框
			EnableWindow(GetDlgItem(hDlg,IDC_COMBO1),FALSE);
			EnableWindow(GetDlgItem(hDlg,IDC_COMBO3),FALSE);
			EnableWindow(GetDlgItem(hDlg,IDC_COMBO4),FALSE);
			//禁用按钮
			EnableWindow(GetDlgItem(hDlg,IDC_BUTTON1),FALSE);
			EnableWindow(GetDlgItem(hDlg,IDC_BUTTON2),FALSE);
			//初始化餐桌组合框
			InitTableComBoOnGaiCaiProc(hDlg);
			return (INT_PTR)TRUE;
		}
	case WM_TIMER:
		{

			UpdateSomeInfoOnTimerOnGaiCaiProc(hDlg);

			break;
		}
	case WM_COMMAND:
		{
			if (LOWORD(wParam)==IDCANCEL)
			{
				EndDialog(hDlg,LOWORD(wParam));
				break;
			}
			switch(LOWORD(wParam))
			{
			case IDC_BUTTON1://确认
				{
					//当用户点击确认按钮,处理用户的输入,更新diancai表

的信息
					
					SureToUpdateOnGaiCaiProc(hDlg);
					break;
				}
			case IDC_BUTTON2://取消
				{
					EndDialog(hDlg,LOWORD(wParam));
					break;
				}
			case IDC_BUTTON3://确认选择
				{
					//获取用户选择的餐桌
					WCHAR szSelectTable[256];
					GetDlgItemText

(hDlg,IDC_COMBO5,szSelectTable,sizeof(szSelectTable)/sizeof(WCHAR));
					if (*szSelectTable==NULL)
					{
						MessageBox(hDlg,L"请先选择餐桌!",L"提

示",MB_OK|MB_ICONERROR);
						break;
					}
					//启用组合框
					EnableWindow(GetDlgItem(hDlg,IDC_COMBO1),TRUE);
					EnableWindow(GetDlgItem(hDlg,IDC_COMBO3),TRUE);
					EnableWindow(GetDlgItem(hDlg,IDC_COMBO4),TRUE);
					//启用按钮
					EnableWindow(GetDlgItem(hDlg,IDC_BUTTON1),TRUE);
					EnableWindow(GetDlgItem(hDlg,IDC_BUTTON2),TRUE);
					//启用编辑框
					EnableWindow(GetDlgItem(hDlg,IDC_EDIT5),TRUE);
					//初始化菜肴编号组合框,用用户选择的餐桌去访问数据

库进行匹配查找
					InitCaiYaoNumComBoOnGaiCaiProc(hDlg);
					//初始化数量,自己设置几个变量:范围:1~20
					WCHAR l_szCaiCount[256];
					for (int i=1;i<=20;i++)
					{
						ZeroMemory(l_szCaiCount,sizeof

(l_szCaiCount)/sizeof(WCHAR));
						wsprintf(l_szCaiCount,L"%d",i);
						SendDlgItemMessage

(hDlg,IDC_COMBO3,CB_ADDSTRING,0,(LPARAM)l_szCaiCount);
					}
					//初始化份量:自己设置:包括大份、小份
					SendDlgItemMessage(hDlg,IDC_COMBO4,CB_ADDSTRING,0,

(LPARAM)L"大份");
					SendDlgItemMessage(hDlg,IDC_COMBO4,CB_ADDSTRING,0,

(LPARAM)L"小份");
					//初始化点菜时间:获取本地时间
					SYSTEMTIME mytime;
					GetLocalTime(&mytime);
					TCHAR strtime[256];
					wsprintf(strtime,L"%04d—%02d—%02d %02d:%02d:

%02d",mytime.wYear,mytime.wMonth,mytime.wDay,mytime.wHour,mytime.wMinute,mytime.wSecond);
					SetDlgItemText(hDlg,IDC_EDIT4,strtime);
					//设置定时器,当用户改变组合框的选择时,要马上同时

改变菜肴名
					SetTimer(hDlg,1,2000,NULL);//每两秒更新一次内容
					break;
				}
			}
			break;
		}
	}
	return (INT_PTR)FALSE;
}
void SureToUpdateOnGaiCaiProc(HWND hwnd)//确认修改处理
{
	//先要获取用户的输入
	//获取菜肴编号
	WCHAR l_szCaiNumber[256];
	GetDlgItemText(hwnd,IDC_COMBO1,l_szCaiNumber,sizeof(l_szCaiNumber)/sizeof(WCHAR));
	//转为整形值
	int ln_CaiNumber;
	ln_CaiNumber=_wtoi(l_szCaiNumber);

	//获取菜肴名
	WCHAR l_szCaiName[256];
	GetDlgItemText(hwnd,IDC_EDIT1,l_szCaiName,sizeof(l_szCaiName)/sizeof(WCHAR));

	//获取菜数量
	WCHAR l_szCaiCount[256];
	GetDlgItemText(hwnd,IDC_COMBO3,l_szCaiCount,sizeof(l_szCaiCount)/sizeof(WCHAR));
	//转为整形值
	int ln_CaiCount;
	ln_CaiCount=_wtoi(l_szCaiCount);

	//获取单价
	WCHAR l_szCaiPerPrice[256];
	GetDlgItemText(hwnd,IDC_EDIT2,l_szCaiPerPrice,sizeof(l_szCaiPerPrice)/sizeof

(WCHAR));

	//获取总价
	WCHAR l_szAllPrice[256];
	GetDlgItemText(hwnd,IDC_EDIT3,l_szAllPrice,sizeof(l_szAllPrice)/sizeof(WCHAR));

	//获取附加信息
	WCHAR l_szCustomerDemmand[256];
	GetDlgItemText(hwnd,IDC_EDIT5,l_szCustomerDemmand,sizeof

(l_szCustomerDemmand)/sizeof(WCHAR));

	//获取点菜时间
	WCHAR l_szDiancaiTime[256];
	GetDlgItemText(hwnd,IDC_EDIT4,l_szDiancaiTime,sizeof(l_szDiancaiTime)/sizeof

(WCHAR));
	//更新操作
	{
		//访问数据库中的表:diancai表
		//更新的字段有:MenuNumber\MenuName\MenuCount\MenuPrice\AllPrice

\CustomerDemmand\DianCaiTime
		//用用户所选择要修改的餐桌号来匹配,所以先要获取餐桌号
		WCHAR l_szTableSelected[256];
		GetDlgItemText(hwnd,IDC_COMBO5,l_szTableSelected,sizeof

(l_szTableSelected)/sizeof(WCHAR));
		//判空,要判断用户所选择的餐桌不为空且选择修改的菜的信息不为空
		
		if (*l_szTableSelected!=NULL && *l_szCaiNumber!=NULL && *l_szCaiPerPrice!

=NULL && *l_szCaiCount!=NULL)
		{
			//满足条件,开始访问
			SQLHENV henv = NULL;
			SQLHDBC hdbc = NULL;
			SQLHSTMT hstmt = NULL;
			SQLRETURN result;
			SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 

Driver};SERVER={127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
			SQLWCHAR ConnStrOut[MAXBUFLEN];
			//分配环境句柄
			result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
				&henv);
			//设置管理环境属性
			result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)

SQL_OV_ODBC3, 0);
			//分配连接句柄
			result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
			//设置连接属性
			result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
				(void*)LOGIN_TIMEOUT, 0);
			//连接数据库
			result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
			if(SQL_ERROR==result)
			{
				ShowDBConnError(hwnd,hdbc);

			}

			//初始化语句句柄
			result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

			//先要判断用户是否修改了要求,要进行IF判断,
			WCHAR sql[256];
			if (*l_szCustomerDemmand!=NULL)
			{
				//更新操作要进行条件的限制:条件为:餐桌为用户所选餐桌

l_szTableSelected,所修改的菜式用户所选的菜l_szCaiNumber
				wsprintf(sql,L"update diancai set 

MenuNumber='%d',MenuName='%s',MenuCount='%d',MenuPrice='%s',AllPrice='%s',DianCaiTime='%s',

CustomerDemmand='%s' where TableNumber='%s' and 

MenuNumber='%d'",ln_CaiNumber,l_szCaiName,ln_CaiCount,l_szCaiPerPrice,l_szAllPrice,l_szDian

caiTime,l_szCustomerDemmand,l_szTableSelected,ln_CaiNumber);
			}
			if (*l_szCustomerDemmand==NULL)
			{
				wsprintf(sql,L"update diancai set 

MenuNumber='%d',MenuName='%s',MenuCount='%d',MenuPrice='%s',AllPrice='%s',DianCaiTime='%s' 

where TableNumber='%s' and 

MenuNumber='%d'",ln_CaiNumber,l_szCaiName,ln_CaiCount,l_szCaiPerPrice,l_szAllPrice,l_szDian

caiTime,l_szTableSelected,ln_CaiNumber);
			}
			result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

			CHECKDBSTMTERROR(hwnd,result,hstmt);
			result =SQLExecute(hstmt);
			CHECKDBSTMTERROR(hwnd,result,hstmt);

			SQLINTEGER cbsatid=SQL_NTS;
			MessageBox(hwnd,L"修改成功!",L"提示",MB_OK|MB_ICONINFORMATION);
			//释放odbc资源
			SQLFreeStmt(hstmt,SQL_CLOSE);
			SQLDisconnect(hdbc);
			SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
			SQLFreeHandle(SQL_HANDLE_ENV,henv);

		}
		else
		{
			//不满足条件
			MessageBox(hwnd,L"请确认已选择要修改的菜的信息",L"提示",MB_OK|

MB_ICONERROR);
		}

	}
}
void UpdateSomeInfoOnTimerOnGaiCaiProc(HWND hwnd)//更新操作几个控件内容
{
	//更新菜肴名:菜肴名是根据菜肴编号来响应的,所以先要获取菜肴编号
	WCHAR l_szCaiNumber[256];
	GetDlgItemText(hwnd,IDC_COMBO1,l_szCaiNumber,sizeof(l_szCaiNumber)/sizeof(WCHAR));
	//判空:如果菜肴编号为空,就不更新
	
	{
		if (*l_szCaiNumber!=NULL)
		{
		//开始更新菜肴名
		//访问数据库:表:diancai
		SQLHENV henv = NULL;
		SQLHDBC hdbc = NULL;
		SQLHSTMT hstmt = NULL;
		SQLRETURN result;
		SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
		SQLWCHAR ConnStrOut[MAXBUFLEN];
		//分配环境句柄
		result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
			&henv);
		//设置管理环境属性
		result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
		//分配连接句柄
		result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
		//设置连接属性
		result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
			(void*)LOGIN_TIMEOUT, 0);
		//连接数据库
		result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
		if(SQL_ERROR==result)
		{
			ShowDBConnError(hwnd,hdbc);

		}

		//初始化语句句柄
		result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

		//先要将获取的菜的编号转为整形数值
		int l_nCaiNumber;
		l_nCaiNumber=_wtoi(l_szCaiNumber);

		WCHAR sql[256];
		wsprintf(sql,L"select MenuName from diancai where 

MenuNumber='%d'",l_nCaiNumber);
		result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

		CHECKDBSTMTERROR(hwnd,result,hstmt);
		result =SQLExecute(hstmt);
		CHECKDBSTMTERROR(hwnd,result,hstmt);

		SQLINTEGER cbsatid=SQL_NTS;
		WCHAR l_szmenuname[256];
		while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
		{

			ZeroMemory(l_szmenuname,sizeof(l_szmenuname)/sizeof(WCHAR));
			SQLGetData(hstmt,1,SQL_C_WCHAR,l_szmenuname,30,&cbsatid);//获取额外

的餐桌号
			SetDlgItemText(hwnd,IDC_EDIT1,l_szmenuname);
			break;
		}
		//释放odbc资源
		SQLFreeStmt(hstmt,SQL_CLOSE);
		SQLDisconnect(hdbc);
		SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
		SQLFreeHandle(SQL_HANDLE_ENV,henv);

	}
	}
	//更新单价:单价也是根据菜肴编号来更新的,同时还要根据份量
	{
		//获取份量信息
		WCHAR l_szCaiFenLiang[256];
		GetDlgItemText(hwnd,IDC_COMBO4,l_szCaiFenLiang,sizeof

(l_szCaiFenLiang)/sizeof(WCHAR));
		//菜肴编号的信息已经获取:l_szCaiNumber
		//判空
		if (*l_szCaiFenLiang!=NULL && l_szCaiNumber!=NULL)
		{
			//设置更新单价,访问数据库
			SQLHENV henv = NULL;
			SQLHDBC hdbc = NULL;
			SQLHSTMT hstmt = NULL;
			SQLRETURN result;
			SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 

Driver};SERVER={127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
			SQLWCHAR ConnStrOut[MAXBUFLEN];
			//分配环境句柄
			result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
				&henv);
			//设置管理环境属性
			result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)

SQL_OV_ODBC3, 0);
			//分配连接句柄
			result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
			//设置连接属性
			result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
				(void*)LOGIN_TIMEOUT, 0);
			//连接数据库
			result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
			if(SQL_ERROR==result)
			{
				ShowDBConnError(hwnd,hdbc);

			}

			//初始化语句句柄
			result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

			result = SQLPrepare(hstmt,(SQLWCHAR*)L"select 

ID,PriceBig,PriceSmall from menu",SQL_NTS);

			CHECKDBSTMTERROR(hwnd,result,hstmt);
			result =SQLExecute(hstmt);
			CHECKDBSTMTERROR(hwnd,result,hstmt);

			SQLINTEGER cbsatid=SQL_NTS;
			 
			SQLBIGINT ln_ID;
			WCHAR l_szPriceBig[256];
			WCHAR l_szPriceSmall[256];
			while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
			{

				 ZeroMemory(l_szPriceBig,sizeof(l_szPriceBig)/sizeof

(WCHAR));
				 ZeroMemory(l_szPriceSmall,sizeof(l_szPriceSmall)/sizeof

(WCHAR));

				SQLGetData(hstmt,1,SQL_C_UBIGINT,&ln_ID,30,&cbsatid);//获取

菜的编号
				SQLGetData(hstmt,2,SQL_C_WCHAR,l_szPriceBig,30,&cbsatid);//

获取大份价格
				SQLGetData

(hstmt,3,SQL_C_WCHAR,l_szPriceSmall,30,&cbsatid);//获取小份价格
				//查询判断
				//先将获取的菜的编号转为整形数值
				int ln_CaiNumber;
				ln_CaiNumber=_wtoi(l_szCaiNumber);

				if (ln_CaiNumber==ln_ID)
				{
					if (lstrcmpW(l_szCaiFenLiang,L"大份")==0)
					{
						SetDlgItemText

(hwnd,IDC_EDIT2,l_szPriceBig);
					}
					if (lstrcmpW(l_szCaiFenLiang,L"小份")==0)
					{
						SetDlgItemText

(hwnd,IDC_EDIT2,l_szPriceSmall);
					}
				}
			}
			//释放odbc资源
			SQLFreeStmt(hstmt,SQL_CLOSE);
			SQLDisconnect(hdbc);
			SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
			SQLFreeHandle(SQL_HANDLE_ENV,henv);


		}
	}
	//更新总金额:总金额是根据单价和数量以及菜肴编号
	{
		//这次不用访问数据库了,直接在编辑框中去取
		//获取数量
		WCHAR l_szCaiCount[256];
		GetDlgItemText(hwnd,IDC_COMBO3,l_szCaiCount,sizeof(l_szCaiCount)/sizeof

(WCHAR));
		//获取单价
		WCHAR l_szPerPrice[256];
		GetDlgItemText(hwnd,IDC_EDIT2,l_szPerPrice,sizeof(l_szPerPrice)/sizeof

(WCHAR));
		//判空
		if (*l_szCaiCount!=NULL && *l_szPerPrice!=NULL)
		{
			//设置总金额
			//先将获取的数值字符串信息转为数字信息
			//转菜数量
			int ln_CaiCount;
			ln_CaiCount=_wtoi(l_szCaiCount);
			//转菜的单价
			float lf_PerPrice;
			lf_PerPrice=_wtof(l_szPerPrice);
			//计算最后的金额
			float ln_AllPrice;
			ln_AllPrice=ln_CaiCount*lf_PerPrice;
			//将获取的浮点数值转为字符串
			CString str;
			str.Format(L"%f", ln_AllPrice); 
			WCHAR l_szAfterAllPrice[256];
			wsprintf(l_szAfterAllPrice, L"%s",str.GetBuffer(str.GetLength()));
			//设置编辑框内容
			SetDlgItemText(hwnd,IDC_EDIT3,l_szAfterAllPrice);

		}
	}
}
void InitCaiYaoNumComBoOnGaiCaiProc(HWND hwnd)//初始化菜肴编号组合框
{
	
	//获取用户选择的餐桌
	WCHAR szSelectTable[256];
	GetDlgItemText(hwnd,IDC_COMBO5,szSelectTable,sizeof(szSelectTable)/sizeof(WCHAR));

	//访问数据库
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select TableNumber,MenuNumber from 

diancai",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;
	WCHAR l_sztablenumber[256];
	SQLBIGINT l_nmenunumber;
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{

		ZeroMemory(l_sztablenumber,sizeof(l_sztablenumber)/sizeof(WCHAR));
		SQLGetData(hstmt,1,SQL_C_WCHAR,l_sztablenumber,30,&cbsatid);//获取餐桌号
		SQLGetData(hstmt,2,SQL_C_UBIGINT,&l_nmenunumber,30,&cbsatid);//获取菜肴编号
		if (lstrcmpW(szSelectTable,l_sztablenumber)==0)
		{
			//将菜肴编号转为字符串
			WCHAR l_szCaiYaoNum[256];
			wsprintf(l_szCaiYaoNum,L"%d",l_nmenunumber);
			//向组合框内添加内容
			SendDlgItemMessage(hwnd,IDC_COMBO1,CB_ADDSTRING,0,(LPARAM)

l_szCaiYaoNum);
		}
		
	}
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);
}
void InitTableComBoOnGaiCaiProc(HWND hwnd)//初始化餐桌组合框
{
	//访问数据库,设置餐桌组合框的内容,访问的表为:diningtable
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);


	WCHAR sql[256];
	wsprintf(sql,L"select ExtraTableNumber from diningtable where State='%s'",L"等待上

菜");
	result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;
	WCHAR l_szextablenumber[256];
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{

		ZeroMemory(l_szextablenumber,sizeof(l_szextablenumber)/sizeof(WCHAR));
		SQLGetData(hstmt,1,SQL_C_WCHAR,l_szextablenumber,30,&cbsatid);//获取额外的

餐桌号
		SendDlgItemMessage(hwnd,IDC_COMBO5,CB_ADDSTRING,0,(LPARAM)

l_szextablenumber);
	}
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);

}
void  AccessDataBaseForInitTable(HWND hwnd);//访问数据库初始化餐桌组合框
void SureToUpdateKaiTai(HWND hwnd,WCHAR szTable[]);//确认修改处理
void AccessDataBaseForGetServerNameInfoOnUpdateKaiTaiInfoProc(HWND hwnd);//访问数据库,获取

服务员信息
INT_PTR CALLBACK UpdateKaiTaiInfoProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM 

lParam)//修改开台资料
{
	UNREFERENCED_PARAMETER(lParam);
	switch(message)
	{
	case WM_INITDIALOG:
		{
			//设置位图按钮
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			HWND hBn1=GetDlgItem(hDlg,IDC_BUTTON1);
			HBITMAP hbmp1=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP17));
			SendMessage(hBn1, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp1);

			HWND hBn2=GetDlgItem(hDlg,IDC_BUTTON2);
			HBITMAP hbmp2=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP16));
			SendMessage(hBn2, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp2);

			HWND hBn4=GetDlgItem(hDlg,IDC_BUTTON4);
			HBITMAP hbmp4=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP18));
			SendMessage(hBn4, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp4);

			//设置对话框图标
			SendMessage(hDlg, WM_SETICON, ICON_BIG,(LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON14))); 

			//访问数据库,初始化用户选择餐桌的组合框
			AccessDataBaseForInitTable(hDlg);
			//在用户点击确认选择之前要禁用信息修改控件
			EnableWindow(GetDlgItem(hDlg,IDC_COMBO5),FALSE);
			EnableWindow(GetDlgItem(hDlg,IDC_COMBO3),FALSE);
			EnableWindow(GetDlgItem(hDlg,IDC_EDIT1),FALSE);
			//初始化新餐桌组合框的内容共20桌
			WCHAR l_szInitNewTable[256];
			for (int i=1;i<=20;i++)
			{
				ZeroMemory(l_szInitNewTable,sizeof

(l_szInitNewTable)/sizeof(WCHAR));
				wsprintf(l_szInitNewTable,L"第%d桌",i);
				SendDlgItemMessage(hDlg,IDC_COMBO5,CB_ADDSTRING,0,(LPARAM)

l_szInitNewTable);
			}
			//初始化新服务员组合框的内容
			//访问数据库,获取服务员的信息
			AccessDataBaseForGetServerNameInfoOnUpdateKaiTaiInfoProc(hDlg);

			return (INT_PTR)TRUE;
		}
	case WM_COMMAND:
		{
			if (LOWORD(wParam)==IDCANCEL)
			{
				EndDialog(hDlg,LOWORD(wParam));
				return (INT_PTR)TRUE;
			}
			switch(LOWORD(wParam))
			{
			case IDC_BUTTON1://确认修改
				{
					//获取用户选择的要修改的餐桌
					WCHAR l_szSelectToUpdateTable[256];
					GetDlgItemText

(hDlg,IDC_COMBO11,l_szSelectToUpdateTable,sizeof(l_szSelectToUpdateTable)/sizeof(WCHAR));
					SureToUpdateKaiTai(hDlg,l_szSelectToUpdateTable);//

确认修改处理
					break;
				}
			case IDC_BUTTON2://返回
				{
					EndDialog(hDlg,LOWORD(wParam));
					break;
				}
			case IDC_BUTTON4://确认选择
				{
					WCHAR l_szSelectTableName[256];
					GetDlgItemText

(hDlg,IDC_COMBO11,l_szSelectTableName,sizeof(l_szSelectTableName)/sizeof(WCHAR));
					if (*l_szSelectTableName==NULL)
					{
						MessageBox(hDlg,L"请先选择要修改的餐

桌!",L"提示",MB_ICONERROR|MB_OK);
						break;
					}
					//先要启用控件,让用户可以更改信息
					EnableWindow(GetDlgItem(hDlg,IDC_COMBO5),TRUE);
					EnableWindow(GetDlgItem(hDlg,IDC_COMBO3),TRUE);
					EnableWindow(GetDlgItem(hDlg,IDC_EDIT1),TRUE);
					break;
				}
			}
			break;
		}
	}
	return (INT_PTR)FALSE;
}
void AccessDataBaseForGetServerNameInfoOnUpdateKaiTaiInfoProc(HWND hwnd)//访问数据库,获取

服务员信息
{
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);



	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select ServerName from 

diningtable",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;
	WCHAR l_szServerName[256];
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{

		ZeroMemory(l_szServerName,sizeof(l_szServerName)/sizeof(WCHAR));
		SQLGetData(hstmt,1,SQL_C_WCHAR,l_szServerName,30,&cbsatid);//获取额外的餐桌

号
		SendDlgItemMessage(hwnd,IDC_COMBO3,CB_ADDSTRING,0,(LPARAM)l_szServerName);
	}
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);


}
void SureToUpdateKaiTai(HWND hwnd,WCHAR szTable[])//确认修改处理
{
	BOOL lb_Testtablenumber=TRUE;//布尔值测试结果
	//获取控件中的内容
	WCHAR l_szNewTable[256];
	WCHAR l_szNewCustomerCount[256];
	WCHAR l_szNewServerName[256];
	GetDlgItemText(hwnd,IDC_COMBO5,l_szNewTable,sizeof(l_szNewTable)/sizeof(WCHAR));//

获取新餐桌号
	GetDlgItemText(hwnd,IDC_COMBO3,l_szNewServerName,sizeof(l_szNewServerName)/sizeof

(WCHAR));//获取新服务员
	GetDlgItemText(hwnd,IDC_EDIT1,l_szNewCustomerCount,sizeof

(l_szNewCustomerCount)/sizeof(WCHAR));//获取人数

	//好了,现在访问数据库,用传进的szTable进行匹配,所访问的表为:diningtable
	{
		SQLHENV henv = NULL;
		SQLHDBC hdbc = NULL;
		SQLHSTMT hstmt = NULL;
		SQLRETURN result;
		SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
		SQLWCHAR ConnStrOut[MAXBUFLEN];
		//分配环境句柄
		result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
			&henv);
		//设置管理环境属性
		result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
		//分配连接句柄
		result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
		//设置连接属性
		result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
			(void*)LOGIN_TIMEOUT, 0);
		//连接数据库
		result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
		if(SQL_ERROR==result)
		{
			ShowDBConnError(hwnd,hdbc);

		}

		//初始化语句句柄
		result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);



		result = SQLPrepare(hstmt,(SQLWCHAR*)L"select 

ExtraTableNumber,TableNumber,ServerName,CustomerNumber from diningtable",SQL_NTS);

		CHECKDBSTMTERROR(hwnd,result,hstmt);
		result =SQLExecute(hstmt);
		CHECKDBSTMTERROR(hwnd,result,hstmt);

		SQLINTEGER cbsatid=SQL_NTS;

		WCHAR l_szExtablenumber[256];//额外的餐桌号
		SQLBIGINT l_ntablenumber;//餐桌号
		WCHAR l_szservername[256];//服务员名
		SQLBIGINT l_ncustomercount;//客户人数
		while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
		{

			ZeroMemory(l_szExtablenumber,sizeof(l_szExtablenumber)/sizeof

(WCHAR));
			SQLGetData(hstmt,1,SQL_C_WCHAR,l_szExtablenumber,30,&cbsatid);//获

取额外的餐桌号

			SQLGetData(hstmt,2,SQL_C_UBIGINT,&l_ntablenumber,30,&cbsatid);//获

取餐桌号

			ZeroMemory(l_szservername,sizeof(l_szservername)/sizeof(WCHAR));
			SQLGetData(hstmt,3,SQL_C_WCHAR,l_szservername,30,&cbsatid);//获取服

务员名

			SQLGetData(hstmt,4,SQL_C_UBIGINT,&l_ncustomercount,30,&cbsatid);//

获取客户名

			//匹配判断
			if (lstrcmpW(szTable,l_szExtablenumber)==0)
			{
				//匹配成功,先要判断用户选择餐桌是否已经有人预定或就坐:用

l_szNewTable判断匹配
				{
					//访问数据库,进行匹配操作
					SQLHENV henv = NULL;
					SQLHDBC hdbc = NULL;
					SQLHSTMT hstmt = NULL;
					SQLRETURN result;
					SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL 

ODBC 5.1 Driver};SERVER={127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
					SQLWCHAR ConnStrOut[MAXBUFLEN];
					//分配环境句柄
					result = SQLAllocHandle(SQL_HANDLE_ENV, 

SQL_NULL_HANDLE,
						&henv);
					//设置管理环境属性
					result = SQLSetEnvAttr(henv, 

SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
					//分配连接句柄
					result = SQLAllocHandle(SQL_HANDLE_DBC, henv, 

&hdbc);
					//设置连接属性
					result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
						(void*)LOGIN_TIMEOUT, 0);
					//连接数据库
					result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
					if(SQL_ERROR==result)
					{
						ShowDBConnError(hwnd,hdbc);

					}

					//初始化语句句柄
					result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, 

&hstmt);

					
					 
					
					result = SQLPrepare(hstmt,(SQLWCHAR*)L"select 

ExtraTableNumber from diningtable",SQL_NTS);

					CHECKDBSTMTERROR(hwnd,result,hstmt);
					result =SQLExecute(hstmt);
					CHECKDBSTMTERROR(hwnd,result,hstmt);

					SQLINTEGER cbsatid=SQL_NTS;

					WCHAR l_szextablenumber2[256];

					
					while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
					{

						ZeroMemory(l_szextablenumber2,sizeof

(l_szextablenumber2)/sizeof(WCHAR));
						SQLGetData

(hstmt,1,SQL_C_WCHAR,l_szextablenumber2,30,&cbsatid);//获取额外的餐桌号
						if (lstrcmpW

(l_szNewTable,l_szextablenumber2)==0)
						{
							MessageBox(hwnd,L"对不起,您所选的

餐桌已经有人预定,\n请重新选择!",L"提示",MB_OK|MB_ICONERROR);
							lb_Testtablenumber=FALSE;
							break;
						}
					}

					if (lb_Testtablenumber==TRUE)//如果用户的选择的餐桌

不矛盾(无人就坐)
					{
						//更新数据库
						SQLHENV henv1 = NULL;
						SQLHDBC hdbc1 = NULL;
						SQLHSTMT hstmt1 = NULL;
						SQLRETURN result1;
						SQLWCHAR ConnStrIn1[MAXBUFLEN] = L"DRIVER=

{MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
						SQLWCHAR ConnStrOut1[MAXBUFLEN];
						//分配环境句柄
						result1 = SQLAllocHandle(SQL_HANDLE_ENV, 

SQL_NULL_HANDLE,
							&henv1);
						//设置管理环境属性
						result1 = SQLSetEnvAttr(henv1, 

SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
						//分配连接句柄
						result1 = SQLAllocHandle(SQL_HANDLE_DBC, 

henv1, &hdbc1);
						//设置连接属性
						result1 = SQLSetConnectAttr(hdbc1, 

SQL_LOGIN_TIMEOUT,
							(void*)LOGIN_TIMEOUT, 0);
						//连接数据库
						result1 = SQLDriverConnect

(hdbc1,NULL,ConnStrIn1,SQL_NTS,ConnStrOut1,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
						if(SQL_ERROR==result1)
						{
							ShowDBConnError(hwnd,hdbc1);

						}

						//初始化语句句柄
						result1 = SQLAllocHandle(SQL_HANDLE_STMT, 

hdbc1, &hstmt1);
						//将餐桌号(整形)和额外的餐桌号信息匹配起

来
						//判断用户的选择,例如:用户选择的是“第一

桌”,就将餐桌号设为“1”,“第二桌”,就设为“2”....
						WCHAR l_szTestTable[256];
						int ln_NewTable;
						for (int i=1;i<=20;i++)
						{
							ZeroMemory(l_szTestTable,sizeof

(l_szTestTable)/sizeof(WCHAR));//清空空间,防止数据叠加出错
							wsprintf(l_szTestTable,L"第%d

桌",i);
							if (lstrcmpW

(l_szTestTable,l_szNewTable)==0)//判断用户的选择是否是这个
							{
								ln_NewTable=i;
								break;
							}
						}

						//好了现在已经获取了餐桌的额外信息

l_szNewTable,
						//餐桌信息ln_NewTable,服务员信息

l_szNewServerName,人数信息l_szNewCustomerCount
						//将用户选择的人数字符串信息转为整形数值
						int l_nCount;
						l_nCount=_wtoi(l_szNewCustomerCount);
						//执行更新操作
						WCHAR sql[400];
						//多表更新执行,同时更新diningtable 和 

diancai表的字段内容
						wsprintf(sql,L"update diningtable 

din1,diancai dian1 set 

din1.ExtraTableNumber='%s',din1.TableNumber='%d',din1.ServerName='%s',din1.CustomerNumber='

%d',dian1.TableNumber='%s' where din1.ExtraTableNumber='%s' AND 

dian1.TableNumber='%s'",l_szNewTable,ln_NewTable,l_szNewServerName,l_nCount,l_szNewTable,sz

Table,szTable);
						result1 = SQLPrepare(hstmt1,(SQLWCHAR*)

sql,SQL_NTS);

						CHECKDBSTMTERROR(hwnd,result1,hstmt1);
						result1 =SQLExecute(hstmt1);
						CHECKDBSTMTERROR(hwnd,result1,hstmt1);

						SQLINTEGER cbsatid1=SQL_NTS;

						MessageBox(hwnd,L"修改执行成功!",L"提

示",MB_ICONINFORMATION|MB_OK);
						//释放odbc资源
						SQLFreeStmt(hstmt1,SQL_CLOSE);
						SQLDisconnect(hdbc1);
						SQLFreeHandle(SQL_HANDLE_DBC,hdbc1);
						SQLFreeHandle(SQL_HANDLE_ENV,henv1);
					}
				 
					//释放odbc资源
					SQLFreeStmt(hstmt,SQL_CLOSE);
					SQLDisconnect(hdbc);
					SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
					SQLFreeHandle(SQL_HANDLE_ENV,henv);
				}
			}
			 
		}
		//释放odbc资源
		SQLFreeStmt(hstmt,SQL_CLOSE);
		SQLDisconnect(hdbc);
		SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
		SQLFreeHandle(SQL_HANDLE_ENV,henv);
	}

}
void InitKaiTaiDetailInfoFromDataBase(HWND hwnd,WCHAR szTableName[]);//从数据库获取开台详细

信息

INT_PTR CALLBACK KaiTaiDetailInfoProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM 

lParam)//开台详细情况
{
	UNREFERENCED_PARAMETER(lParam);
	switch(message)
	{
	case WM_INITDIALOG:
		{
			//设置按钮为位图按钮
			HWND hBn1=GetDlgItem(hDlg,IDC_BUTTON1);
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			HBITMAP hbmp=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP14));
			SendMessage(hBn1, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp);
			
			HWND hBn2=GetDlgItem(hDlg,IDC_BUTTON2);
			HBITMAP hbmp2=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP15));
			SendMessage(hBn2, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp2);

			//设置对话框图标
			SendMessage(hDlg, WM_SETICON, ICON_BIG, (LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON15))); 
			//初始化对话框上的各个控件中的内容
			//先要初始化餐桌号组合框的内容,共20桌
			//SendDlgItemMessage(hDlg,IDC_COMBO4,CB_ADDSTRING,0,(LPARAM)_T

("+"));
			
			 //访问数据库初始化餐桌组合框
			AccessDataBaseForInitTable(hDlg);
			//获取餐桌组合框的内容
			
			return (INT_PTR)TRUE;
		}
	case WM_COMMAND:
		{
			if (LOWORD(wParam)==IDCANCEL)
			{
				EndDialog(hDlg,NULL);
				break;
			}
			switch(LOWORD(wParam))
			{
			case IDC_BUTTON1:
				{
					EndDialog(hDlg,NULL);
					break;
				}
			case IDC_BUTTON2:
				{
					WCHAR l_szTableName[256];
					ZeroMemory(l_szTableName,sizeof

(l_szTableName)/sizeof(WCHAR));
					GetDlgItemText

(hDlg,IDC_COMBO11,l_szTableName,sizeof(l_szTableName)/sizeof(WCHAR));
					if (*l_szTableName!=NULL)
					{
						InitKaiTaiDetailInfoFromDataBase

(hDlg,l_szTableName);
					}
					else
					{
						MessageBox(hDlg,L"请确认选择了餐桌!",L"提

示",MB_OK|MB_ICONERROR);
					}
					break;
				}
			}
			break;
		}
	}
		return (INT_PTR)FALSE;
}
void  AccessDataBaseForInitTable(HWND hwnd)//访问数据库初始化餐桌组合框
{
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);



	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select ExtraTableNumber from 

diningtable",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;

	WCHAR l_sztablenumber[256];
	 
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{

		ZeroMemory(l_sztablenumber,sizeof(l_sztablenumber)/sizeof(WCHAR));
		SQLGetData(hstmt,1,SQL_C_WCHAR,l_sztablenumber,30,&cbsatid);
		SendDlgItemMessage(hwnd,IDC_COMBO11,CB_ADDSTRING,0,(LPARAM)

l_sztablenumber);
	}
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);
}
void InitKaiTaiDetailInfoFromDataBase(HWND hwnd,WCHAR szTableName[])//从数据库获取开台详细

信息
{
	 
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);



	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select 

ExtraTableNumber,KaiTaiTime,ServerName,CustomerNumber,CustomerName from 

diningtable",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;

	WCHAR l_sztablenumber[256];
	WCHAR l_szkaitaitime[256];
	WCHAR l_szservername[256];
	WCHAR l_szcustomernumber[256];
	WCHAR l_szcustomername[256];
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{


		SQLGetData(hstmt,1,SQL_C_WCHAR,l_sztablenumber,30,&cbsatid);
		SQLGetData(hstmt,2,SQL_C_WCHAR,l_szkaitaitime,60,&cbsatid);
		SQLGetData(hstmt,3,SQL_C_WCHAR,l_szservername,30,&cbsatid);
		SQLGetData(hstmt,4,SQL_C_WCHAR,l_szcustomernumber,30,&cbsatid);
		SQLGetData(hstmt,5,SQL_C_WCHAR,l_szcustomername,30,&cbsatid);
		if (lstrcmpW(szTableName,l_sztablenumber)==0)
		{
			//匹配成功,开始设置信息
			SetDlgItemText(hwnd,IDC_EDIT1,l_szkaitaitime);
			SetDlgItemText(hwnd,IDC_COMBO2,l_szservername);
			SetDlgItemText(hwnd,IDC_EDIT2,l_szcustomernumber);
			SetDlgItemText(hwnd,IDC_EDIT3,l_szcustomername);
			break;
		}
	 
	}
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);
}


void SureToShangCai(HWND hwnd);//确认上菜
void InitShangCaiItem(HWND hwnd);//初始化上菜组合框的项
INT_PTR CALLBACK StartShangCaiProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)//

开始上菜处理对话框
{
	UNREFERENCED_PARAMETER(lParam);
	switch(message)
	{
	case WM_INITDIALOG:
		{
			
			//设置对话框图标
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			SendMessage(hDlg, WM_SETICON, ICON_BIG, (LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON15)));
			//设置位图按钮
			HWND hBn1=GetDlgItem(hDlg,IDC_BUTTON1);
			HBITMAP hbmp1=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP6));  
			SendMessage(hBn1, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hbmp1);

			HWND hBn2=GetDlgItem(hDlg,IDC_BUTTON2);
			HBITMAP hbmp2=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP5));  
			SendMessage(hBn2, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hbmp2);

			//初始化餐桌号 的组合框的内容项
			InitShangCaiItem(hDlg);//初始化上菜组合框的项

			return (INT_PTR)TRUE;
		}
	case WM_COMMAND:
		{
			if (LOWORD(wParam)==IDCANCEL)
			{
				EndDialog(hDlg,LOWORD(wParam));
				return (INT_PTR)TRUE;
			}
			switch(LOWORD(wParam))
			{
			case IDC_BUTTON1://确认上菜
				{
					SureToShangCai(hDlg);
					break;
				}
			case IDC_BUTTON2://退出对话框
				{
					EndDialog(hDlg,LOWORD(wParam));
					break;
				}
			}
			break;
		}

	}
	return (INT_PTR)FALSE;
}
void InitShangCaiItem(HWND hwnd)//初始化上菜组合框的项
{
//访问数据库中的diningtable表,将State段为“等待上菜”的餐桌号加至组合框内
	//开始访问数据库
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);



	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select ExtraTableNumber,State from 

diningtable",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;

	WCHAR l_sztablenumber[256];
	WCHAR l_szstate[256];
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{


		SQLGetData(hstmt,1,SQL_C_WCHAR,l_sztablenumber,30,&cbsatid);
		SQLGetData(hstmt,2,SQL_C_WCHAR,l_szstate,30,&cbsatid);
		if (lstrcmpW(L"等待上菜",l_szstate)==0)
		{
			SendDlgItemMessage(hwnd,IDC_COMBO1,CB_ADDSTRING,0,(LPARAM)

l_sztablenumber);
		}
	}
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);
}
void SureToShangCai(HWND hwnd)//确认上菜处理
{
	//先要获取用户选择的餐桌
	WCHAR szSelectTable[256];
	GetDlgItemText(hwnd,IDC_COMBO1,szSelectTable,sizeof(szSelectTable)/sizeof(WCHAR));
	//当管理员点击确认上菜时,将diningtable表的State段改为“正在用餐”
	//访问数据库
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);



	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select ExtraTableNumber,State from 

diningtable",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;

	WCHAR l_sztablenumber[256];
	WCHAR l_szstate[256];
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{


		SQLGetData(hstmt,1,SQL_C_WCHAR,l_sztablenumber,30,&cbsatid);
		SQLGetData(hstmt,2,SQL_C_WCHAR,l_szstate,30,&cbsatid);
		if (lstrcmpW(szSelectTable,l_sztablenumber)==0)
		{
			//访问数据库将用户选择对的餐桌的state段更改为“正在用餐”
			SQLHENV henv = NULL;
			SQLHDBC hdbc = NULL;
			SQLHSTMT hstmt = NULL;
			SQLRETURN result;
			SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 

Driver};SERVER={127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
			SQLWCHAR ConnStrOut[MAXBUFLEN];
			//分配环境句柄
			result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
				&henv);
			//设置管理环境属性
			result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)

SQL_OV_ODBC3, 0);
			//分配连接句柄
			result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
			//设置连接属性
			result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
				(void*)LOGIN_TIMEOUT, 0);
			//连接数据库
			result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
			if(SQL_ERROR==result)
			{
				ShowDBConnError(hwnd,hdbc);

			}

			//初始化语句句柄
			result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);


			WCHAR sql[256];
			wsprintf(sql,L"update diningtable set State='%s' where  

ExtraTableNumber='%s'",L"正在用餐",szSelectTable);

			result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

			CHECKDBSTMTERROR(hwnd,result,hstmt);
			result =SQLExecute(hstmt);
			CHECKDBSTMTERROR(hwnd,result,hstmt);

			WCHAR szInfo[256];
			wsprintf(szInfo,L"系统正在通知为%s上菜",szSelectTable);
			MessageBox(hwnd,szInfo,L"友情提示",MB_OK|MB_ICONINFORMATION);
			//释放odbc资源
			SQLFreeStmt(hstmt,SQL_CLOSE);
			SQLDisconnect(hdbc);
			SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
			SQLFreeHandle(SQL_HANDLE_ENV,henv);
		}
	}
	//释放odbc资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);
}
DWORD WINAPI  InitComBInfo(LPVOID lpParam);//点菜中初始化组合框中的信息,线程处理过程
void  SetCustomerInfo(HWND hwnd);//设置客户编辑框的信息
void AccessDataBaseSetPriceEditFrame(HWND hwnd);//设置价格编辑框的信息
void AccessDataBaseToSetState(HWND hwnd);//设置用户餐桌信息等待上菜
INT_PTR CALLBACK PopDianCaiProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)//点

菜对话框
{
	UNREFERENCED_PARAMETER(lParam);
	HDC hdc;
	PAINTSTRUCT ps;
	 HANDLE hThread=NULL;
	switch(message)
	{
	case WM_PAINT:
		{
			hdc=BeginPaint(hDlg,&ps);
			 
			static Image *gImag=NULL;
			Graphics g(hdc);
			if (gImag==NULL)
			{
				gImag=Image::FromFile(_T("diancai.png"));
			}
			{
				g.DrawImage(gImag,0,0,70,70);
			}
			BitBlt(hdc,0,0,70,70,NULL,0,0,SRCCOPY);

			 
			 
			EndPaint(hDlg,&ps);
			return 0;
		}
	case WM_TIMER:
		{
			//根据餐桌号数据信息访问数据库用餐桌号去匹配设置客户名
			//创建线程,减小开销
			//获取餐桌号编辑框内内容
			WCHAR szTableNum[256];
			GetDlgItemText(hDlg,IDC_COMBO7,szTableNum,sizeof

(szTableNum)/sizeof(WCHAR));
			if (*szTableNum==NULL)
			{
				break;
			}
			SetCustomerInfo(hDlg);

			
			//折后价处理
			//在设置价格编辑框之前要判断用户是否选择了菜名、份量
			WCHAR szMenuName[256];
			WCHAR szVolume[256];
			GetDlgItemText(hDlg,IDC_COMBO2,szMenuName,sizeof

(szMenuName)/sizeof(WCHAR));
			GetDlgItemText(hDlg,IDC_COMBO3,szVolume,sizeof(szVolume)/sizeof

(WCHAR));
			if (*szMenuName==NULL || *szVolume==NULL)
			{
				break;
			}
			//根据选择的菜的信息,设置价格
			//访问menu表,根据菜名(Name)和菜的份量(大份或小份)以及打折信息

获取菜的价格信息
			AccessDataBaseSetPriceEditFrame(hDlg);

			//合计金额处理
			{
				//根据价格信息和数量信息自动设置合计金额信息。
				WCHAR l_szPrice[256];
				WCHAR l_szCount[256];
				//获取价格
				GetDlgItemText(hDlg,IDC_EDIT1,l_szPrice,sizeof

(l_szPrice)/sizeof(WCHAR));
				//获取数量
				GetDlgItemText(hDlg,IDC_EDIT2,l_szCount,sizeof

(l_szCount)/sizeof(WCHAR));
				//判空
				if (*l_szCount==NULL || *l_szPrice==NULL)
				{
					break;
				}
				//设置合计金额信息
				//先将取得的价格转换成浮点数据
				double lf_money;
				lf_money=_wtof(l_szPrice);
				//再将获取的数量转换成整形数据
				int ln_count;
				ln_count=_wtoi(l_szCount);
				//设置一个金额变量存储金额信息
				double lf_AllMoney;
				lf_AllMoney=ln_count*lf_money;
				//将获取的合计金额的浮点数据转换成字符串
				CString str;  
				WCHAR szAllMoney[256];
				str.Format(L"%f", lf_AllMoney);  
				wsprintf(szAllMoney, L"%s元",str.GetBuffer(str.GetLength

()));  
				SetDlgItemText(hDlg,IDC_EDIT3,szAllMoney);

			}
			break;
		}
	case WM_ERASEBKGND:
		{
			return 0;
		}
	case WM_CTLCOLORBTN ://设置按钮的颜色

		if ((HWND)lParam == GetDlgItem(hDlg, IDC_BUTTON2)||(HWND)lParam == 

GetDlgItem(hDlg, IDC_BUTTON3))
		{
			HWND hbn = (HWND)lParam;
			HDC hdc = (HDC)wParam;
			RECT rc;
			TCHAR text[64];

			GetWindowText(hbn, text, 63);
			GetClientRect(hbn, &rc);
			SetTextColor(hdc, RGB(255, 255, 255));//设置按钮上文本的颜色
			SetBkMode(hdc, TRANSPARENT);
			DrawText(hdc, text, _tcslen(text), &rc, DT_CENTER | DT_VCENTER | 

DT_SINGLELINE);

			return (INT_PTR)CreateSolidBrush(RGB(127,0,255));//返回画刷设置按钮

的背景色
		}
		break;
	case WM_INITDIALOG:
		{
			SetTimer(hDlg,1,2000,NULL);
			//设置对话框图标
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			SendMessage(hDlg, WM_SETICON, ICON_BIG, (LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON9))); 
			//访问数据库初始化几个组合框的内容
			//由于要访问的数据库工作较多,只好创建额外的线程去处理比较好
			 
			hThread=CreateThread(NULL, 0,InitComBInfo,hDlg,0,NULL);
			//InitComBInfo(hDlg,wParam);
			 
			return (INT_PTR)TRUE;
		}
	case WM_COMMAND:
		{
			if (LOWORD(wParam)==IDCANCEL)
			{
				KillTimer(hDlg,1);
				EndDialog(hDlg,LOWORD(wParam));
				return (INT_PTR)TRUE;
			}
			switch(LOWORD(wParam))
			{
			case IDC_BUTTON2://确认点菜
				{
					//MessageBox(hDlg,L"确认点菜",NULL,MB_OK);
					//当用户点击确认点菜,转向数据库访问处理,将信息输

入数据库,以餐桌号为匹配标准
					CommandToDianCai(hDlg,wParam);
					break;
				}
			case IDC_BUTTON3://退出对话框
				{
					KillTimer(hDlg,1);
					
					//关闭线程对象,防止泄露内存
					if (hThread!=NULL)
					{
						CloseHandle(hThread);
					}
					EndDialog(hDlg,LOWORD(wParam));
					
					break;
				}
			}
			break;
		}
	}
	return (INT_PTR)FALSE;
}
void AccessDataBaseToSetState(HWND hwnd)//设置用户餐桌信息“等待上菜”
{
	//访问数据库中的diningtable表,update State字段为“等待上菜”
	{

		//先要根据用户选择的餐桌号去寻找匹配对象
		//获取用户输入的餐桌
		WCHAR szTableNum[256];
		GetDlgItemText(hwnd,IDC_COMBO7,szTableNum,sizeof(szTableNum)/sizeof

(WCHAR));
		//开始访问数据库
		SQLHENV henv = NULL;
		SQLHDBC hdbc = NULL;
		SQLHSTMT hstmt = NULL;
		SQLRETURN result;
		SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
		SQLWCHAR ConnStrOut[MAXBUFLEN];
		//分配环境句柄
		result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
			&henv);
		//设置管理环境属性
		result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
		//分配连接句柄
		result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
		//设置连接属性
		result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
			(void*)LOGIN_TIMEOUT, 0);
		//连接数据库
		result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
		if(SQL_ERROR==result)
		{
			ShowDBConnError(hwnd,hdbc);

		}

		//初始化语句句柄
		result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);



		result = SQLPrepare(hstmt,(SQLWCHAR*)L"select ExtraTableNumber,State from 

diningtable",SQL_NTS);

		CHECKDBSTMTERROR(hwnd,result,hstmt);
		result =SQLExecute(hstmt);
		CHECKDBSTMTERROR(hwnd,result,hstmt);

		SQLINTEGER cbsatid=SQL_NTS;

		WCHAR l_sztablenumber[256];
		WCHAR l_szstate[256];
		while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
		{


			SQLGetData(hstmt,1,SQL_C_WCHAR,l_sztablenumber,30,&cbsatid);
			SQLGetData(hstmt,2,SQL_C_WCHAR,l_szstate,30,&cbsatid);
			//匹配成功的话就去更新数据库
			if (lstrcmpW(szTableNum,l_sztablenumber)==0)
			{
				//开始访问数据库
				SQLHENV henv = NULL;
				SQLHDBC hdbc = NULL;
				SQLHSTMT hstmt = NULL;
				SQLRETURN result;
				SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 

Driver};SERVER={127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
				SQLWCHAR ConnStrOut[MAXBUFLEN];
				//分配环境句柄
				result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
					&henv);
				//设置管理环境属性
				result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)

SQL_OV_ODBC3, 0);
				//分配连接句柄
				result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
				//设置连接属性
				result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
					(void*)LOGIN_TIMEOUT, 0);
				//连接数据库
				result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
				if(SQL_ERROR==result)
				{
					ShowDBConnError(hwnd,hdbc);

				}

				//初始化语句句柄
				result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);


				WCHAR sql[256];
				wsprintf(sql,L"update diningtable set State='%s' where 

ExtraTableNumber='%s'",L"等待上菜",szTableNum);
				result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);
				CHECKDBSTMTERROR(hwnd,result,hstmt);
				result =SQLExecute(hstmt);
				CHECKDBSTMTERROR(hwnd,result,hstmt);
				SQLFreeStmt(hstmt,SQL_CLOSE);
				SQLDisconnect(hdbc);
				SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
				SQLFreeHandle(SQL_HANDLE_ENV,henv);
				break;
			}
		}
		 
		SQLFreeStmt(hstmt,SQL_CLOSE);
		SQLDisconnect(hdbc);
		SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
		SQLFreeHandle(SQL_HANDLE_ENV,henv);
	}
	
}
void AccessDataBaseSetPriceEditFrame(HWND hwnd)//访问数据库设置价格编辑框中的价格信息
{
	//先要获取用户选择的菜肴信息和份量信息
	WCHAR szMenuName[256];
	WCHAR szVolume[256];
	GetDlgItemText(hwnd,IDC_COMBO2,szMenuName,sizeof(szMenuName)/sizeof(WCHAR));
	GetDlgItemText(hwnd,IDC_COMBO3,szVolume,sizeof(szVolume)/sizeof(WCHAR));
	//好了,现在访问数据库

	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);



	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select Name,PriceBig,PriceSmall,Discount 

from menu",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;
	
	//先判断用户输入的是大份还是小份
	BOOL lb_TestVolume=FALSE;
	if (lstrcmpW(szVolume,L"大份")==0)
	{
		lb_TestVolume=TRUE;
	}
	if (lstrcmpW(szVolume,L"小份")==0)
	{
		lb_TestVolume=FALSE;
	}
	//
	WCHAR l_menuname[256];
	WCHAR l_price[256];
	WCHAR l_discount[256];
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{

		//获取菜名
		SQLGetData(hstmt,1,SQL_C_WCHAR,l_menuname,30,&cbsatid);
		//获取打折信息
		SQLGetData(hstmt,4,SQL_C_WCHAR,l_discount,30,&cbsatid);
		//两个if获取价格
		if (lb_TestVolume==TRUE)//如果为大份,获取大份价格
		{
			SQLGetData(hstmt,2,SQL_C_WCHAR,l_price,30,&cbsatid);
		}
		if (lb_TestVolume==FALSE)//如果为小份,获取小份价格
		{
			SQLGetData(hstmt,3,SQL_C_WCHAR,l_price,30,&cbsatid);
		}
		if (lstrcmpW(l_menuname,szMenuName)==0)//菜名匹配成功
		{
			//将获取的价格和打折信息转换成浮点数据
			double lf_discount;
			double lf_price;
			//先转换价格
			lf_price=_wtof(l_price);
			//再获取打折信息
			lf_discount=_wtof(l_discount);
			//然后将打折的数值乘以价格获取折后价
			double lf_PriceAfterDiscount;
			lf_PriceAfterDiscount=lf_price*lf_discount;
			//将获取的折后价转换成字符串
			
			WCHAR szPriceAfterDiscount[256];
			//ZeroMemory(szPriceAfterDiscount,sizeof

(szPriceAfterDiscount)/sizeof(WCHAR));
			CString str;  

			str.Format(L"%f", lf_PriceAfterDiscount);  
			wsprintf(szPriceAfterDiscount, L"%s元",str.GetBuffer(str.GetLength

()));  
			 
			
			//将获取的折后价字符串数据填充到折后价的编辑框中
			SetDlgItemText(hwnd,IDC_EDIT1,szPriceAfterDiscount);
			//将获取的打折信息填充到对话框上的打折信息的静态框中

			WCHAR szCount[256];
			wsprintf(szCount,L"%s折",l_discount);
			SetDlgItemText(hwnd,IDC_STATIC20,szCount);
			//好了,一切搞定, 
			 
			break;
		}

	}
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);

}
void SetCustomerInfo(HWND hwnd)//设置客户编辑框的信息
{
	 
	//获取餐桌号编辑框内内容
	WCHAR szTableNum[256];
	GetDlgItemText(hwnd,IDC_COMBO7,szTableNum,sizeof(szTableNum)/sizeof(WCHAR));

	if (*szTableNum==NULL)
	{
		return;
	}
	//访问数据库,用szTableNum进行匹配
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);



	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select ExtraTableNumber,CustomerName from 

diningtable",SQL_NTS);

	//CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	//CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;
	WCHAR l_tablenumber[256];
	WCHAR l_custmername[256];
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{


		SQLGetData(hstmt,1,SQL_C_WCHAR,l_tablenumber,30,&cbsatid);
		SQLGetData(hstmt,2,SQL_C_WCHAR,l_custmername,30,&cbsatid);
		 if (lstrcmpW(szTableNum,l_tablenumber)==0)
		 {
			 SetDlgItemText(hwnd,IDC_EDIT7,l_custmername);
			 break;
		 }

	}
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);

}
DWORD WINAPI InitComBInfo(LPVOID lpParam)//点菜中初始化组合框中的信息
{
	HWND hwnd=(HWND)lpParam;//获取传进的窗口句柄
	//点菜时间获取当地时间
	SYSTEMTIME mytime;
	GetLocalTime(&mytime);
	TCHAR strtime[256];
	wsprintf(strtime,L"%04d—%02d—%02d %02d:%02d:

%02d",mytime.wYear,mytime.wMonth,mytime.wDay,mytime.wHour,mytime.wMinute,mytime.wSecond);
	//设置点菜时间的信心
	SetDlgItemText(hwnd,IDC_EDIT4,strtime);

	//餐桌号访问diningtable表初始化餐桌组合框
	{
		SQLHENV henv = NULL;
		SQLHDBC hdbc = NULL;
		SQLHSTMT hstmt = NULL;
		SQLRETURN result;
		SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
		SQLWCHAR ConnStrOut[MAXBUFLEN];
		//分配环境句柄
		result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
			&henv);
		//设置管理环境属性
		result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
		//分配连接句柄
		result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
		//设置连接属性
		result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
			(void*)LOGIN_TIMEOUT, 0);
		//连接数据库
		result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
		if(SQL_ERROR==result)
		{
			ShowDBConnError(hwnd,hdbc);

		}

		//初始化语句句柄
		result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);



		result = SQLPrepare(hstmt,(SQLWCHAR*)L"select ExtraTableNumber from 

diningtable",SQL_NTS);

		//CHECKDBSTMTERROR(hwnd,result,hstmt);
		result =SQLExecute(hstmt);
		//CHECKDBSTMTERROR(hwnd,result,hstmt);

		SQLINTEGER cbsatid=SQL_NTS;
		WCHAR l_tablenumber[256];
	 
		while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
		{


			SQLGetData(hstmt,1,SQL_C_WCHAR,l_tablenumber,30,&cbsatid);
			 
			SendDlgItemMessage(hwnd,IDC_COMBO7,CB_ADDSTRING,0,(LPARAM)

l_tablenumber);
			 
		}

		
		SQLFreeStmt(hstmt,SQL_CLOSE);
		SQLDisconnect(hdbc);
		SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
		SQLFreeHandle(SQL_HANDLE_ENV,henv);
	}
	//菜肴名访问menu表初始化菜肴组合框
	{
		SQLHENV henv = NULL;
		SQLHDBC hdbc = NULL;
		SQLHSTMT hstmt = NULL;
		SQLRETURN result;
		SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
		SQLWCHAR ConnStrOut[MAXBUFLEN];
		//分配环境句柄
		result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
			&henv);
		//设置管理环境属性
		result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
		//分配连接句柄
		result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
		//设置连接属性
		result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
			(void*)LOGIN_TIMEOUT, 0);
		//连接数据库
		result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
		if(SQL_ERROR==result)
		{
			ShowDBConnError(hwnd,hdbc);

		}

		//初始化语句句柄
		result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);



		result = SQLPrepare(hstmt,(SQLWCHAR*)L"select Name,PriceBig,PriceSmall from 

menu",SQL_NTS);

		//CHECKDBSTMTERROR(hwnd,result,hstmt);
		result =SQLExecute(hstmt);
		//CHECKDBSTMTERROR(hwnd,result,hstmt);

		SQLINTEGER cbsatid=SQL_NTS;
		WCHAR l_menuname[256];

		while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
		{


			SQLGetData(hstmt,1,SQL_C_WCHAR,l_menuname,30,&cbsatid);

			SendDlgItemMessage(hwnd,IDC_COMBO2,CB_ADDSTRING,0,(LPARAM)

l_menuname);

		}


		SQLFreeStmt(hstmt,SQL_CLOSE);
		SQLDisconnect(hdbc);
		SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
		SQLFreeHandle(SQL_HANDLE_ENV,henv);
	}
	//份量初始化份量组合框(大份,小份)
	{
		SendDlgItemMessage(hwnd,IDC_COMBO3,CB_ADDSTRING,0,(LPARAM)L"大份");
		SendDlgItemMessage(hwnd,IDC_COMBO3,CB_ADDSTRING,0,(LPARAM)L"小份");
	}
	//负责人访问serverinfo表初始化负责人组合框
	{
		SQLHENV henv = NULL;
		SQLHDBC hdbc = NULL;
		SQLHSTMT hstmt = NULL;
		SQLRETURN result;
		SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
		SQLWCHAR ConnStrOut[MAXBUFLEN];
		//分配环境句柄
		result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
			&henv);
		//设置管理环境属性
		result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
		//分配连接句柄
		result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
		//设置连接属性
		result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
			(void*)LOGIN_TIMEOUT, 0);
		//连接数据库
		result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
		if(SQL_ERROR==result)
		{
			ShowDBConnError(hwnd,hdbc);

		}

		//初始化语句句柄
		result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);



		result = SQLPrepare(hstmt,(SQLWCHAR*)L"select ServerName from 

serverinfo",SQL_NTS);

		//CHECKDBSTMTERROR(hwnd,result,hstmt);
		result =SQLExecute(hstmt);
		//CHECKDBSTMTERROR(hwnd,result,hstmt);

		SQLINTEGER cbsatid=SQL_NTS;
		WCHAR l_servername[256];

		while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
		{


			SQLGetData(hstmt,1,SQL_C_WCHAR,l_servername,30,&cbsatid);

			SendDlgItemMessage(hwnd,IDC_COMBO4,CB_ADDSTRING,0,(LPARAM)

l_servername);

		}


		SQLFreeStmt(hstmt,SQL_CLOSE);
		SQLDisconnect(hdbc);
		SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
		SQLFreeHandle(SQL_HANDLE_ENV,henv);
	}
	
	return 0;
}
void CommandToDianCai(HWND hwnd,WPARAM wParam)//点菜处理
{
	//在此处接收用户输入到编辑框中的所有信息
	//获取菜肴名
	WCHAR szMenuName[256];
	GetDlgItemText(hwnd,IDC_COMBO2,szMenuName,sizeof(szMenuName)/sizeof(WCHAR));
	//由菜肴名去访问数据库中的menu表获取菜肴编号
	int nID;
	{
		SQLHENV henv = NULL;
		SQLHDBC hdbc = NULL;
		SQLHSTMT hstmt = NULL;
		SQLRETURN result;
		SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
		SQLWCHAR ConnStrOut[MAXBUFLEN];
		//分配环境句柄
		result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
			&henv);
		//设置管理环境属性
		result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
		//分配连接句柄
		result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
		//设置连接属性
		result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
			(void*)LOGIN_TIMEOUT, 0);
		//连接数据库
		result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
		if(SQL_ERROR==result)
		{
			ShowDBConnError(hwnd,hdbc);

		}

		//初始化语句句柄
		result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);



		result = SQLPrepare(hstmt,(SQLWCHAR*)L"select ID,Name from menu",SQL_NTS);

		CHECKDBSTMTERROR(hwnd,result,hstmt);
		result =SQLExecute(hstmt);
		CHECKDBSTMTERROR(hwnd,result,hstmt);

		SQLINTEGER cbsatid=SQL_NTS;
		WCHAR l_menurname[256];
		SQLBIGINT ln_menuid;
		while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
		{
			SQLGetData(hstmt,1,SQL_C_UBIGINT,&ln_menuid,30,&cbsatid);
			SQLGetData(hstmt,2,SQL_C_WCHAR,l_menurname,30,&cbsatid);
			if (lstrcmpW(szMenuName,l_menurname)==0)
			{
				nID=ln_menuid;
				break;
			}
		}


		SQLFreeStmt(hstmt,SQL_CLOSE);
		SQLDisconnect(hdbc);
		SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
		SQLFreeHandle(SQL_HANDLE_ENV,henv);
	}
	//获取菜肴数量
	WCHAR szMenuCount[256];
	GetDlgItemText(hwnd,IDC_EDIT2,szMenuCount,sizeof(szMenuCount)/sizeof(WCHAR));
	//将菜肴数量的字符数据转换为整形数据
	int nMenuCount;
	nMenuCount=_wtoi(szMenuCount);
	//获取菜肴的价格
	WCHAR szMenuPrice[256];
	GetDlgItemText(hwnd,IDC_EDIT1,szMenuPrice,sizeof(szMenuPrice)/sizeof(WCHAR));
	//获取合计金额
	WCHAR szAllPrice[256];
	GetDlgItemText(hwnd,IDC_EDIT3,szAllPrice,sizeof(szAllPrice)/sizeof(WCHAR));
	//获取点菜时间
	WCHAR szDianCaiTime[256];
	GetDlgItemText(hwnd,IDC_EDIT4,szDianCaiTime,sizeof(szDianCaiTime)/sizeof(WCHAR));
	//获取顾客要求
	WCHAR szCustomerDemmand[256];
	GetDlgItemText(hwnd,IDC_EDIT5,szCustomerDemmand,sizeof(szCustomerDemmand)/sizeof

(WCHAR));
	//获取餐桌号
	WCHAR szTableNumber[256];
	GetDlgItemText(hwnd,IDC_COMBO7,szTableNumber,sizeof(szTableNumber)/sizeof(WCHAR));
	//获取份量
	WCHAR szVolume[256];
	GetDlgItemText(hwnd,IDC_COMBO3,szVolume,sizeof(szVolume)/sizeof(WCHAR));
	//在插入之前要判断用户输入是否为空
	if (*szTableNumber==NULL||*szMenuName==NULL|| *szMenuCount==NULL||*szVolume==NULL)
	{
		MessageBox(hwnd,L"必要的信息必须填写!",L"提示",MB_ICONERROR|MB_OK);
		return;
	}
	 
	//好了,获取信息完毕,开始将数据全部插入数据库的diancai表中了
	{
		//访问数据库将数据全部插入数据表中
		SQLHENV henv = NULL;
		SQLHDBC hdbc = NULL;
		SQLHSTMT hstmt = NULL;
		SQLRETURN result;
		SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
		SQLWCHAR ConnStrOut[MAXBUFLEN];
		//分配环境句柄
		result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
			&henv);
		//设置管理环境属性
		result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
		//分配连接句柄
		result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
		//设置连接属性
		result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
			(void*)LOGIN_TIMEOUT, 0);
		//连接数据库
		result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
		if(SQL_ERROR==result)
		{
			ShowDBConnError(hwnd,hdbc);

		}

		//初始化语句句柄
		result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);


		WCHAR sql[256];
		wsprintf(sql,L"insert into diancai

(MenuNumber,MenuName,MenuCount,MenuPrice,AllPrice,DianCaiTime,CustomerDemmand,TableNumber) 

values

('%d','%s','%d','%s','%s','%s','%s','%s')",nID,szMenuName,nMenuCount,szMenuPrice,szAllPrice

,szDianCaiTime,szCustomerDemmand,szTableNumber);
		result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

		CHECKDBSTMTERROR(hwnd,result,hstmt);
		result =SQLExecute(hstmt);
		CHECKDBSTMTERROR(hwnd,result,hstmt);

		SQLINTEGER cbsatid=SQL_NTS;
	 


		SQLFreeStmt(hstmt,SQL_CLOSE);
		SQLDisconnect(hdbc);
		SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
		SQLFreeHandle(SQL_HANDLE_ENV,henv);
	}
	//插入成功后要设置静态信息提示框的信息为“点菜...几份...成功”
	{

		PlaySound(L"1.wav",NULL,SND_ALIAS|SND_ASYNC);
		WCHAR szInfo[256];
		wsprintf(szInfo,L"点菜%s%s份成功,正在通知厨房准

备...",szMenuName,szMenuCount);
		SetDlgItemText(hwnd,IDC_EDIT6,szInfo);
		//设置餐桌状态“等待上菜”
		AccessDataBaseToSetState(hwnd);
	}
	 
}
void SureToKaiTai(HWND hwnd,WPARAM wParam);//确认开台处理
void GetServerNameInfoFromDataBase(HWND hwnd);//获取服务员信息
INT_PTR CALLBACK KaiTaiProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)//开台对

话框
{
	UNREFERENCED_PARAMETER(lParam);
	switch(message)
	{
	case WM_CTLCOLORBTN ://设置按钮的颜色
		{
			if ((HWND)lParam == GetDlgItem(hDlg, IDC_BUTTON1)||(HWND)lParam == 

GetDlgItem(hDlg, IDC_BUTTON3))
			{
				HWND hbn = (HWND)lParam;
				HDC hdc = (HDC)wParam;
				RECT rc;
				TCHAR text[64];

				GetWindowText(hbn, text, 63);
				GetClientRect(hbn, &rc);
				SetTextColor(hdc, RGB(255, 255, 255));//设置按钮上文本的颜

色
				SetBkMode(hdc, TRANSPARENT);
				DrawText(hdc, text, _tcslen(text), &rc, DT_CENTER | 

DT_VCENTER | DT_SINGLELINE);

				return (INT_PTR)CreateSolidBrush(RGB(127,0,155));//返回画刷

设置按钮的背景色
			}
			break;
		}
	case WM_INITDIALOG:
		{
			//设置对话框图标
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			SendMessage(hDlg, WM_SETICON, ICON_BIG, (LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON8))); 
			//设置按钮的属性为可自绘
			HWND hBn1 = GetDlgItem(hDlg, IDC_BUTTON1);
			SetWindowLong(hBn1, GWL_STYLE, GetWindowLong(hBn1, GWL_STYLE) | 

BS_OWNERDRAW);

			HWND hBn3 = GetDlgItem(hDlg, IDC_BUTTON3);
			SetWindowLong(hBn3, GWL_STYLE, GetWindowLong(hBn3, GWL_STYLE) | 

BS_OWNERDRAW);
			//设置时间
			//获取本地时间
			WCHAR szLocalTimer[256];
			SYSTEMTIME mytime;
			GetLocalTime(&mytime);
			wsprintf(szLocalTimer,L"%04d—%02d—%02d %02d:%02d:

%02d",mytime.wYear,mytime.wMonth,mytime.wDay,mytime.wHour,mytime.wMinute,mytime.wSecond);
			SetDlgItemText(hDlg,IDC_EDIT2,szLocalTimer);
			//设置成禁用状态
			EnableWindow(GetDlgItem(hDlg,IDC_EDIT2),FALSE);
			//设置状态
			WCHAR szState[256];
			wsprintf(szState,L"%s",L"等待点菜");
			SetDlgItemText(hDlg,IDC_EDIT4,szState);
			//设置成禁用状态
			EnableWindow(GetDlgItem(hDlg,IDC_EDIT4),FALSE);

			//向下拉列表框中插入餐桌信息,总共20桌
			
			for (int i=1;i<=20;i++)
			{
				WCHAR szTable[256];
				wsprintf(szTable,L"%d",i);
				SendDlgItemMessage(hDlg,IDC_COMBO10,CB_ADDSTRING,0,

(LPARAM)szTable);
			}
			 
			GetServerNameInfoFromDataBase(hDlg);


			return (INT_PTR)TRUE;
		}
	case WM_COMMAND:
		{
			if (LOWORD(wParam)==IDCANCEL)
			{
				EndDialog(hDlg,LOWORD(wParam));
				return (INT_PTR)TRUE;
			}
			switch(LOWORD(wParam))
			{
			case IDC_BUTTON1://确认开台
				{
					//MessageBox(hDlg,TEXT("确认开台"),TEXT(""),MB_OK);
					SureToKaiTai(hDlg,wParam);//确认开台处理
					break;
				}
			case IDC_BUTTON3://退出
				{
					EndDialog(hDlg,LOWORD(wParam));
					break;
				}
			}
			break;
		}
	}
	return (INT_PTR)FALSE;
}
void GetServerNameInfoFromDataBase(HWND hwnd)//获取服务员信息
{
	//访问数据库获取服务员信息
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);



	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select ServerName from serverinfo",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;
	WCHAR szCustomerName[256];
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{


		SQLGetData(hstmt,1,SQL_C_WCHAR,szCustomerName,30,&cbsatid);
		SendDlgItemMessage(hwnd,IDC_COMBO9,CB_ADDSTRING,0,(LPARAM)szCustomerName);
	}
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);

}
void SureToKaiTai(HWND hwnd,WPARAM wParam)//确认开台处理
{
	//用户点击确认开台时要获取用户输入的信息
	//获取服务员信息
	WCHAR szServerName[256];
	GetDlgItemText(hwnd,IDC_COMBO9,szServerName,sizeof(szServerName)/sizeof(WCHAR));

	//获取开台时间信息
	WCHAR szKaiTaiTime[256];
	GetDlgItemText(hwnd,IDC_EDIT2,szKaiTaiTime,sizeof(szKaiTaiTime)/sizeof(WCHAR));
	//获取餐桌号信息,根据组合框的索引来获取信息
	WCHAR szTableNumber[256];
	 
	GetDlgItemText(hwnd,IDC_COMBO10,szTableNumber,sizeof(szTableNumber)/sizeof(WCHAR));
	//设置额外的信息
	WCHAR szExtraTableNumber[256];
	wsprintf(szExtraTableNumber,L"第%s桌",szTableNumber);
	// MessageBox(NULL,szTableNumber,NULL,MB_OK);
	//获取状态信息
	WCHAR szState[256];
	GetDlgItemText(hwnd,IDC_EDIT4,szState,sizeof(szState)/sizeof(WCHAR));
	//获取人数信息
	WCHAR szCusNum[256];
	GetDlgItemText(hwnd,IDC_EDIT5,szCusNum,sizeof(szCusNum)/sizeof(WCHAR));
	//获取客户名信息
	WCHAR szCusName[256];
	GetDlgItemText(hwnd,IDC_EDIT20,szCusName,sizeof(szCusName)/sizeof(WCHAR));
	//判断用户输入是否为空
	if (*szServerName==NULL||*szTableNumber==NULL || *szCusNum==NULL ||

*szCusName==NULL)
	{
		MessageBox(hwnd,L"服务员名、餐桌号、客户名和人数都必须填写!",L"错

误",MB_ICONERROR|MB_OK);
		return;
	}
	//访问数据库对用户输入的餐桌号进行判断,是否改号已经有人预定,如果预定,提示用户重

新输入
	//访问数据库
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);



	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select TableNumber from 

diningtable",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;

	SQLBIGINT l_Id;
	int nTableNumber;
	//将字符串转为整形数据
	nTableNumber= _wtoi(szTableNumber);
	BOOL lbTest=FALSE;
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{


		SQLGetData(hstmt,1,SQL_C_UBIGINT,&l_Id,30,&cbsatid);
		//进行匹配
		if (nTableNumber==l_Id)
		{
			lbTest=TRUE;
			break;
		}

	}
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);
	if (lbTest==TRUE)
	{
		//提示用户出错
		MessageBox(hwnd,TEXT("该餐桌已经有人预定,请选择其他餐桌号!"),TEXT("提

示"),MB_OK|MB_ICONERROR);
		return;
	}
	if (lbTest==FALSE)
	{
		//没有预定的情况下,将用户输入的信息插入到数据库中
		//MessageBox(hwnd,TEXT("成功!"),TEXT("提示"),MB_OK|MB_ICONINFORMATION);
		SQLHENV henv = NULL;
		SQLHDBC hdbc = NULL;
		SQLHSTMT hstmt = NULL;
		SQLRETURN result;
		SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
		SQLWCHAR ConnStrOut[MAXBUFLEN];
		//分配环境句柄
		result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
			&henv);
		//设置管理环境属性
		result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
		//分配连接句柄
		result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
		//设置连接属性
		result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
			(void*)LOGIN_TIMEOUT, 0);
		//连接数据库
		result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
		if(SQL_ERROR==result)
		{
			ShowDBConnError(hwnd,hdbc);

		}

		//初始化语句句柄
		result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

		int nCusNum=_wtoi(szCusNum);
		WCHAR sql[256];
		wsprintf(sql,L"insert into diningtable

(ServerName,KaiTaiTime,TableNumber,State,CustomerNumber,ExtraTableNumber,CustomerName) 

values

('%s','%s','%d','%s','%d','%s','%s')",szServerName,szKaiTaiTime,nTableNumber,szState,nCusNu

m,szExtraTableNumber,szCusName);
		result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);//szCusNum

		CHECKDBSTMTERROR(hwnd,result,hstmt);
		result =SQLExecute(hstmt);
		CHECKDBSTMTERROR(hwnd,result,hstmt);

		MessageBox(hwnd,TEXT("开台成功!"),L"提示",MB_OK|MB_ICONINFORMATION);
		SQLFreeStmt(hstmt,SQL_CLOSE);
		SQLDisconnect(hdbc);
		SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
		SQLFreeHandle(SQL_HANDLE_ENV,henv);
	}
	

}
void UpdateUserName(HWND hwnd,WPARAM wParam,WCHAR szUserName[]);//修改口令处理过程
INT_PTR CALLBACK ChangeManagerInfoProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM 

lParam)//修改口令对话框过程定义
{
	UNREFERENCED_PARAMETER(lParam);
	switch(message)
	{
	case WM_CTLCOLORSTATIC://设置静态文本框字体颜色
		{
			if (GetDlgItem(hDlg, IDC_STATIC1) == (HWND)lParam || GetDlgItem

(hDlg, IDC_STATIC2) == (HWND)lParam)//这里的1是静态文本框的ID
			{
				SetTextColor((HDC)wParam, RGB(0,0,255));
				SetBkMode((HDC)wParam, TRANSPARENT);
				//return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_BTNFACE));
				return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}

			break;

		}
	case WM_CTLCOLORDLG:
		{
			HBRUSH g_hbrBackground = CreateSolidBrush(RGB(252,251,159));
			return (LONG)g_hbrBackground;
		}
		
	case WM_CTLCOLORBTN ://设置按钮的颜色

		if ((HWND)lParam == GetDlgItem(hDlg, IDC_BUTTON3))
		{
			HWND hbn = (HWND)lParam;
			HDC hdc = (HDC)wParam;
			RECT rc;
			TCHAR text[64];

			GetWindowText(hbn, text, 63);
			GetClientRect(hbn, &rc);
			SetTextColor(hdc, RGB(255, 255, 255));
			SetBkMode(hdc, TRANSPARENT);
			DrawText(hdc, text, _tcslen(text), &rc, DT_CENTER | DT_VCENTER | 

DT_SINGLELINE);

			return (INT_PTR)CreateSolidBrush(RGB(127,0,255));
		}

	case WM_INITDIALOG:
		{
			//设置对话框图标
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			SendMessage(hDlg, WM_SETICON, ICON_BIG, (LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON6))); 
			//设置按钮的属性为可自绘
			HWND hBn1 = GetDlgItem(hDlg, IDC_BUTTON3);
			SetWindowLong(hBn1, GWL_STYLE, GetWindowLong(hBn1, GWL_STYLE) | 

BS_OWNERDRAW);
			return (INT_PTR)TRUE;
		}
	case WM_COMMAND:
		{
			if (LOWORD(wParam)==IDCANCEL)
			{
				EndDialog(hDlg,NULL);
				break;
			}
		    if (LOWORD(wParam)==IDC_BUTTON3)//确认更改
		    {
				//MessageBox(NULL,NULL,NULL,MB_OK);
				
				//然后转入函数过程去处理
				UpdateUserName(hDlg,wParam,g_LogUserName);
				break;
		    }
			break;
		}
	}
	return (INT_PTR)FALSE;
}
void UpdateUserName(HWND hwnd,WPARAM wParam,WCHAR szUserName[])//修改口令处理过程函数定义
{
	//获取编辑框中的内容
	WCHAR szName[40];
	GetDlgItemText(hwnd,IDC_EDIT1,szName,sizeof(szName)/sizeof(WCHAR));//获取用户名
	WCHAR szPassWord[40];
	GetDlgItemText(hwnd,IDC_EDIT2,szPassWord,sizeof(szPassWord)/sizeof(WCHAR));//获取密

码

	//执行判断,用户输入的用户名和密码是否为空,为空就提示失败
	if (*szName==NULL || *szPassWord==NULL)
	{
		MessageBox(hwnd,TEXT("用户名或密码必须填写!"),TEXT("错误提示"),MB_OK|

MB_ICONERROR);
		return;
	}
	//好了现在访问数据库,进行数据更新
	//访问数据库
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

	 
	 
	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select FUserName from mytable",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;

	WCHAR lusername[256];
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{


		SQLGetData(hstmt,1,SQL_C_WCHAR,lusername,30,&cbsatid);

		if (lstrcmpW(szUserName,lusername)==0)//匹配成功,更改对应数据项
		{
			//访问数据库
			SQLHENV henv = NULL;
			SQLHDBC hdbc = NULL;
			SQLHSTMT hstmt = NULL;
			SQLRETURN result;
			SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 

Driver};SERVER={127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
			SQLWCHAR ConnStrOut[MAXBUFLEN];
			//分配环境句柄
			result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
				&henv);
			//设置管理环境属性
			result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)

SQL_OV_ODBC3, 0);
			//分配连接句柄
			result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
			//设置连接属性
			result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
				(void*)LOGIN_TIMEOUT, 0);
			//连接数据库
			result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
			if(SQL_ERROR==result)
			{
				ShowDBConnError(hwnd,hdbc);

			}

			//初始化语句句柄
			result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);


			WCHAR sql[256];
			wsprintf(sql,L"update mytable set FUserName='%s',FPassWord='%s' 

where FUserName='%s'",szName,szPassWord,szUserName);
			result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

			CHECKDBSTMTERROR(hwnd,result,hstmt);
			result =SQLExecute(hstmt);
			CHECKDBSTMTERROR(hwnd,result,hstmt);

			MessageBox(hwnd,TEXT("登录口令修改成功!"),TEXT("修改口令"),MB_OK|

MB_ICONINFORMATION);

			SQLFreeStmt(hstmt,SQL_CLOSE);
			SQLDisconnect(hdbc);
			SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
			SQLFreeHandle(SQL_HANDLE_ENV,henv);
			break;
		}
	}

	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);



}
//管理员对话框
INT_PTR CALLBACK ManagerProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	UNREFERENCED_PARAMETER(lParam);
	HDC hdc;
	PAINTSTRUCT ps;
    static int gn_T=255;
	switch(message)
	{
	//case WM_CTLCOLOREDIT:
	//	{ 
	//		int i=GetWindowLong((HWND)lParam,GWL_ID);
	//		if(i==IDC_EDIT1 || i==IDC_EDIT2)
	//		{
	//			SetTextColor((HDC)wParam,RGB(0,0,255));//文字颜色
	//			SetBkColor((HDC)wParam,GetSysColor(COLOR_BTNFACE));//文字的

背后颜色
	//		}
	//		if(i==IDC_EDIT3 || i==IDC_EDIT4 || i==IDC_EDIT5)
	//		{
	//			SetTextColor((HDC)wParam,RGB(255,0,0));//文字颜色
	//			SetBkColor((HDC)wParam,GetSysColor(COLOR_BTNFACE));//文字的

背后颜色
	//		}
	//		return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
	//	}
	case WM_CTLCOLORSTATIC://设置静态文本框字体颜色
		{
			if (GetDlgItem(hDlg, IDC_SHOWERROR) == (HWND)lParam||GetDlgItem

(hDlg, IDC_STATIC1) == (HWND)lParam||GetDlgItem(hDlg, IDC_STATIC2) == (HWND)lParam||

GetDlgItem(hDlg, IDC_STATIC3) == (HWND)lParam||GetDlgItem(hDlg, IDC_STATIC4) == (HWND)

lParam||GetDlgItem(hDlg, IDC_STATIC5) == (HWND)lParam||GetDlgItem(hDlg, IDC_STATIC6) == 

(HWND)lParam||GetDlgItem(hDlg, IDC_STATIC7) == (HWND)lParam||GetDlgItem(hDlg, IDC_STATIC8) 

== (HWND)lParam)//这里的1是静态文本框的ID
			{
				SetTextColor((HDC)wParam, RGB(255,0,255));
				SetBkMode((HDC)wParam, TRANSPARENT);
				//return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_BTNFACE));
				return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}
			if (GetDlgItem(hDlg, IDC_STATIC56) == (HWND)lParam||GetDlgItem

(hDlg, IDC_STATIC78) == (HWND)lParam)//这里的1是静态文本框的ID
			{
				SetTextColor((HDC)wParam, RGB(0,0,255));
				SetBkMode((HDC)wParam, TRANSPARENT);
				//return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_CAPTIONTEXT));
				return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}
		 break;

		}

	case WM_ERASEBKGND:
		{
			return 0;
		}
	case WM_PAINT:
		{
			hdc=BeginPaint(hDlg,&ps);

			HDC hMemDC=CreateCompatibleDC(hdc);
			HBITMAP hMemBM=CreateCompatibleBitmap(hdc,500,500);
			SelectObject(hMemDC,hMemBM);
			static Image *gImag=NULL;
			Graphics g(hMemDC);
			if (gImag==NULL)
			{
				gImag=Image::FromFile(_T("top9.bmp"));
			}
			{
				g.DrawImage(gImag,0,0,500,500);
			}
			BitBlt(hdc,0,0,500,500,hMemDC,0,0,SRCCOPY);
			DeleteDC(hMemDC);
			DeleteObject(hMemBM);
			EndPaint(hDlg,&ps);
			break;
		}
	case WM_MOUSEMOVE:
		{
			gn_T=255;
			// 设置分层属性
			SetWindowLong(hDlg, GWL_EXSTYLE, GetWindowLong(hDlg, GWL_EXSTYLE) | 

WS_EX_LAYERED);
			// 设置透明度 0 - completely transparent   255 - opaque
			SetLayeredWindowAttributes(hDlg,0,255, LWA_ALPHA);
			break;
		}
	case WM_LBUTTONDOWN:
		{
			gn_T=255;
			// 设置分层属性
			SetWindowLong(hDlg, GWL_EXSTYLE, GetWindowLong(hDlg, GWL_EXSTYLE) | 

WS_EX_LAYERED);
			// 设置透明度 0 - completely transparent   255 - opaque
			SetLayeredWindowAttributes(hDlg,0,255, LWA_ALPHA);
			break;
		}
	case WM_TIMER:
		{
			
			
			if (gn_T<=0)
			{
				gn_T=255;
				KillTimer(hDlg,1);
				EndDialog(hDlg,LOWORD(wParam));
				
				break;
			}
			gn_T-=10;
			// 设置分层属性
			SetWindowLong(hDlg, GWL_EXSTYLE, GetWindowLong(hDlg, GWL_EXSTYLE) | 

WS_EX_LAYERED);
			// 设置透明度 0 - completely transparent   255 - opaque
			SetLayeredWindowAttributes(hDlg,0,gn_T, LWA_ALPHA);
			break;
		}
	case WM_INITDIALOG:
		{
			 SetTimer(hDlg,1,3000,NULL);
			////设置按钮位图
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			HWND hBn1 = GetDlgItem(hDlg, IDC_BUTTON1);
			HBITMAP hbmp1=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP9));  
			SendMessage(hBn1, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hbmp1);



			HWND hBn2 = GetDlgItem(hDlg, IDC_BUTTON2);
			HBITMAP hbmp2=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP8));  
			SendMessage(hBn2, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hbmp2);

			HWND hBn3 = GetDlgItem(hDlg, IDC_BUTTON3);
			HBITMAP hbmp3=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP7));  
			SendMessage(hBn3, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hbmp3);


			
			SetFocus(GetDlgItem(hDlg,IDC_EDIT1));
			//设置对话框图标
		 
			SendMessage(hDlg, WM_SETICON, ICON_BIG, (LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON2)));  

			HWND hButton2Wnd=GetDlgItem(hDlg,IDC_BUTTON2);
			EnableWindow(hButton2Wnd,FALSE);

			HWND hEdit3Wnd=GetDlgItem(hDlg,IDC_EDIT3);
			HWND hEdit4Wnd=GetDlgItem(hDlg,IDC_EDIT4);
			EnableWindow(hEdit3Wnd,FALSE);
			EnableWindow(hEdit4Wnd,FALSE);
		   return (INT_PTR)TRUE;
		}
	case WM_COMMAND:
		{
			if (LOWORD(wParam)==IDCANCEL)
			{
				KillTimer(hDlg,1);
				EndDialog(hDlg,NULL);
				return (INT_PTR)TRUE;
			}
			InManagerOnCommandMessage(wParam,hDlg);
			 
			break;
		}
	default:
		break;
	}
	return (INT_PTR)FALSE;
}
//管理员对话框登录实现部分
void InManagerOnCommandMessage(WPARAM wParam,HWND hwnd)
{
	switch(LOWORD(wParam))
	{
	case IDC_BUTTON1://确认登录
		{
			PlaySound(TEXT("click.wav"),NULL,SND_ALIAS| SND_ASYNC);
			Login(hwnd,wParam);
			break;
		}
	case IDC_BUTTON2://确认注册
		{
			PlaySound(TEXT("click.wav"),NULL,SND_ALIAS| SND_ASYNC);
			Save(hwnd);
			break;
		}
	case IDC_BUTTON3://确认密钥
		{
			PlaySound(TEXT("click.wav"),NULL,SND_ALIAS| SND_ASYNC);
			TCHAR *Buffer=TEXT("zhengjinwei");
			TCHAR szText[256];
			GetDlgItemText(hwnd,IDC_EDIT5,szText,256);
			if (lstrcmpW(Buffer,szText)==0)
			{
				MessageBox(NULL,TEXT("密码输入正确"),TEXT("yes"),MB_OK|

MB_ICONINFORMATION);

				HWND hButton2Wnd=GetDlgItem(hwnd,IDC_BUTTON2);
				EnableWindow(hButton2Wnd,TRUE);

				HWND hEdit3Wnd=GetDlgItem(hwnd,IDC_EDIT3);
				HWND hEdit4Wnd=GetDlgItem(hwnd,IDC_EDIT4);
				EnableWindow(hEdit3Wnd,TRUE);
				EnableWindow(hEdit4Wnd,TRUE);
			}
			else
			{
				//MessageBox(NULL,TEXT("密码输入错误,请联系管理

员!"),TEXT("错误"),MB_OK|MB_ICONINFORMATION);
				//MessageBox(NULL,TEXT("管理员QQ:2538698032"),TEXT("提

示"),MB_OK|MB_ICONINFORMATION);
				TCHAR *szTextError=TEXT("密码输入错误,请联系管理员!管理员

QQ:2538698032");
				SetDlgItemText(hwnd,IDC_SHOWERROR,szTextError);
			}
			break;
		}
	default:
		break;
	}
}



//数据库登录异常处理
void ShowDBError(HWND hwnd,SQLSMALLINT type,SQLHANDLE sqlHandle)
{
	WCHAR pStatus[10], pMsg[101];
	SQLSMALLINT SQLmsglen;
	TCHAR error[200] = {0};
	SQLINTEGER SQLerr;
	long erg2 = SQLGetDiagRec(type, sqlHandle,1,(SQLWCHAR *)pStatus,&SQLerr,

(SQLWCHAR*)pMsg,100,&SQLmsglen);
	wsprintf(error,L"%s (%d)\n",pMsg,(int)SQLerr);
	MessageBox(hwnd,error,TEXT("数据库执行错误"),MB_ICONERROR|MB_OK);
}
void ShowDBConnError(HWND hwnd,SQLHDBC hdbc)
{
	ShowDBError(hwnd,SQL_HANDLE_DBC,hdbc);
}
void ShowDBStmtError(HWND hwnd,SQLHSTMT hstmt)
{
	ShowDBError(hwnd,SQL_HANDLE_STMT,hstmt);
}
//注册用户数据库实现
void Save(HWND hwnd)
{
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 

Driver};SERVER=127.0.0.1;UID=root;PWD=root;DATABASE=management;CharSet=gb2312;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);
		return;
	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);


	SQLWCHAR username[256];
	SQLWCHAR password[256];




	GetDlgItemText(hwnd,IDC_EDIT3,username,sizeof(username)/sizeof(SQLWCHAR));
	GetDlgItemText(hwnd,IDC_EDIT4,password,sizeof(password)/sizeof(SQLWCHAR));


	SQLWCHAR sql[256];
	wsprintf(sql,TEXT("insert into MyTable(FUserName,FPassWord) values

('%s','%s')"),username,password);
	if (*username==NULL ||*password==NULL)
	{
		MessageBox(hwnd,TEXT("有户名或密码不为空!"),TEXT("注册"),MB_OK|

MB_ICONERROR);
		return;
	}
	result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);

	result =SQLExecute(hstmt);

	CHECKDBSTMTERROR(hwnd,result,hstmt);


	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);
	MessageBox(hwnd,TEXT("保存成功"),TEXT("注册"),MB_OK|MB_ICONINFORMATION);
	SetDlgItemText(hwnd,IDC_EDIT3,NULL);
	SetDlgItemText(hwnd,IDC_EDIT4,NULL);

}
//管理员登录数据库实现
void Login(HWND hwnd,WPARAM wParam)
{

	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select FUserName,FPassWord from 

MyTable",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;

	SQLWCHAR Inputusername[20];
	SQLWCHAR Inputpassword[20];

	GetDlgItemText(hwnd,IDC_EDIT1,Inputusername,30);

	GetDlgItemText(hwnd,IDC_EDIT2,Inputpassword,30);

	int found=1;
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{
		SQLWCHAR username[20];

		SQLGetData(hstmt,1,SQL_C_WCHAR,username,30,&cbsatid);

		SQLWCHAR password[20];
		SQLGetData(hstmt,2,SQL_C_WCHAR,password,30,&cbsatid);




		if (lstrcmpW(Inputpassword,password)==0)
		{
			if (lstrcmpW(Inputusername,username)==0)
			{
				KillTimer(hwnd,1);
				lstrcpyW(g_LogUserName,username);
				//MessageBox(hwnd,username,TEXT("login"),MB_OK|

MB_ICONINFORMATION);
				SetDlgItemText(hwnd,IDC_EDIT4,NULL);
				found=0;
				//lstrcpy(g_ManagerName,username);
				
				
				//在此处载入工具栏,更换背景,使菜单按钮失效
				/*LoadToolBar(hwnd);*/
				wsprintf(g_ManagerName,TEXT("当前登录管理员:

%s"),username);
				//启用所有工具栏
				for (int ToolBarId=T_ID1;ToolBarId<=T_ID13;ToolBarId++)
				{
					SendMessage(g_hToolBar, TB_SETSTATE, (WPARAM)

ToolBarId, (LPARAM)MAKELONG(TBSTATE_ENABLED , 0));
				}
				//启用所有菜单项
				HWND hParent=GetParent(hwnd);
				
				ShowWindow(hParent,TRUE);
				HMENU hMenu= GetMenu(hParent);
				for (int MenuId=ID_32779;MenuId<=ID_32823;MenuId++)
				{
					EnableMenuItem(hMenu,MenuId, MF_ENABLED);
				}
				EnableMenuItem(hMenu,IDM_ABOUT, MF_ENABLED);
				EnableMenuItem(hMenu,ID_USEHELP, MF_ENABLED);
				EnableMenuItem(hMenu,ID_ACCESSNET, MF_ENABLED);
				//发送给主窗口的消息,要求对状态栏进行重绘
				SendMessage(hParent,WM_TIMER,NULL,NULL);
				SendMessage(hParent,WM_USER+2,NULL,NULL);
				//发送给主窗口的消息,要求对pain消息进行响应
			    bShowInMainWndOnPain=false;
				//更新区域
				SetTimer(hParent,1,1000,NULL);
				InvalidateRect(hParent,NULL,TRUE);
				EndDialog(hwnd,LOWORD(wParam));
				
				break;
			}


		}


	}


	if (1==found)
	{
		MessageBox(hwnd,TEXT("登陆失败"),TEXT("login"),MB_OK|MB_ICONERROR);

	}


	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);

}

//关于对话框实现部分
INT_PTR CALLBACK AboutProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	UNREFERENCED_PARAMETER(lParam);
	switch(message)
	{
	case WM_CTLCOLORSTATIC://设置静态文本框字体颜色
		{
			if (GetDlgItem(hDlg, IDC_STATIC11) == (HWND)lParam)
			{
				SetTextColor((HDC)wParam, RGB(255,0,0));
				SetBkMode((HDC)wParam, TRANSPARENT);
				return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_BTNFACE));
			}
			break;
		}
	case WM_CTLCOLORBTN ://设置按钮的颜色

		if ((HWND)lParam == GetDlgItem(hDlg, IDOK))
		{
			HWND hbn = (HWND)lParam;
			HDC hdc = (HDC)wParam;
			RECT rc;
			TCHAR text[64];

			GetWindowText(hbn, text, 63);
			GetClientRect(hbn, &rc);
			SetTextColor(hdc, RGB(255, 255, 255));
			SetBkMode(hdc, TRANSPARENT);
			DrawText(hdc, text, _tcslen(text), &rc, DT_CENTER | DT_VCENTER | 

DT_SINGLELINE);

			return (INT_PTR)CreateSolidBrush(RGB(127,0,255));
		}
		break;
	case WM_INITDIALOG:
		{
			//设置静态文本框文本
			SetDlgItemText(hDlg,IDC_STATIC11,TEXT("本软件由郑金玮学习测试制作,

如有bug,敬请见谅!"));
			 
			//设置对话框图标
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			SendMessage(hDlg, WM_SETICON, ICON_BIG, (LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON4))); 

			//设置按钮的属性为可自绘
			HWND hBn = GetDlgItem(hDlg, IDOK);
			SetWindowLong(hBn, GWL_STYLE, GetWindowLong(hBn, GWL_STYLE) | 

BS_OWNERDRAW);
			return INT_PTR(TRUE);
		}
	 
	case WM_COMMAND:
		{
			if (LOWORD(wParam)==IDCANCEL ||LOWORD(wParam)==IDOK)
			{
				EndDialog(hDlg,LOWORD(wParam));

				break;
			}
			break;
		}
	default: 
		break;
	}
	return INT_PTR(FALSE);
}
//工具栏消息处理实现部分
INT_PTR CALLBACK YuDingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);//预定对

话框过程声明
void InMainWndOnCommandMessageForToolBar(HWND hwnd,WPARAM wParam)
{
	switch(LOWORD(wParam))
	{
	case T_ID1://点菜
		{
			//MessageBox(NULL,TEXT("点菜"),TEXT(""),MB_ICONINFORMATION|MB_OK);
			//弹出对话框进行处理
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
			DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG3),hwnd,PopDianCaiProc);
			break;
		}
	case T_ID2://改菜
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
			DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG8),hwnd,GaiCaiProc);
			break;
		}
	case T_ID3://退菜
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
			DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG9),hwnd,TuiCaiProc);
			break;
		}
	case T_ID4://开台,在数据库中插入服务员信息,开台时间信息,餐桌号信息,状态信息(是

否用餐,默认值为等待中)
		{
			//MessageBox(NULL,TEXT("开台"),TEXT(""),MB_ICONINFORMATION|MB_OK);

开台响应时弹出对话框进行用户输入处理
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
			DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG2),hwnd,KaiTaiProc);

			break;
		}
	case T_ID5://预定
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
			DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG10),hwnd,YuDingProc);
			break;
		}
	case T_ID6://收入管理
		{
			MessageBox(NULL,TEXT("收入管理"),TEXT(""),MB_ICONINFORMATION|

MB_OK);
			break;
		}
	case T_ID7://登记支出
		{
			MessageBox(NULL,TEXT("登记支出"),TEXT(""),MB_ICONINFORMATION|

MB_OK);
			break;
		}
	case T_ID8://顾客档案
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
			DialogBox(hInst,MAKEINTRESOURCE

(IDD_DIALOG11),hwnd,CustomerInfoProc);
			break;
		}
	case T_ID9://送餐结算
		{
			MessageBox(NULL,TEXT("送餐结算"),TEXT(""),MB_ICONINFORMATION|

MB_OK);
			break;
		}
	case T_ID10://收银结算
		{
			MessageBox(NULL,TEXT("收银结算"),TEXT(""),MB_ICONINFORMATION|

MB_OK);
			break;
		}
	case T_ID11://顾客结算
		{
			MessageBox(NULL,TEXT("顾客结算"),TEXT(""),MB_ICONINFORMATION|

MB_OK);
			break;
		}
	case T_ID12://固产管理
		{
			MessageBox(NULL,TEXT("固产管理"),TEXT(""),MB_ICONINFORMATION|

MB_OK);
			break;
		}
	case T_ID13://系统锁定
		{
			//MessageBox(NULL,TEXT("系统锁定"),TEXT(""),MB_ICONINFORMATION|

MB_OK);
			ShowWindow(hwnd,FALSE);
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
			DialogBox(hInst,MAKEINTRESOURCE

(IDD_DIALOGMANAGER),hwnd,ManagerProc);
			break;
		}
	default:
		break;

	}
}
void SureToSubmitOnYuDingProc(HWND hwnd);//提交处理
 INT_PTR CALLBACK YuDingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)//预定对

话框过程定义
 {
	 UNREFERENCED_PARAMETER(lParam);
	 static SYSTEMTIME mytime;

	 switch(message)
	 {
	 case WM_INITDIALOG:
		 {
			 //设置对话框图标
			 HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			 SendMessage(hDlg, WM_SETICON, ICON_BIG, (LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON21))); 
			 //设置按钮位图
			  
			 HBITMAP hbmp1=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP28));  
			 SendMessage(GetDlgItem(hDlg,IDC_BUTTON1), BM_SETIMAGE, 

IMAGE_BITMAP, (LPARAM) hbmp1);

			 HBITMAP hbmp2=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP29));  
			 SendMessage(GetDlgItem(hDlg,IDC_BUTTON2), BM_SETIMAGE, 

IMAGE_BITMAP, (LPARAM) hbmp2);
			 //初始化餐桌组合框
			 WCHAR l_szTable[256];
			 for (int i=1;i<=20;i++)
			 {
				 ZeroMemory(l_szTable,sizeof(l_szTable)/sizeof(WCHAR));
				 wsprintf(l_szTable,L"第%d桌",i);
				 SendDlgItemMessage(hDlg,IDC_COMBO1,CB_ADDSTRING,NULL,

(LPARAM)l_szTable);
			 }
			 //时间设置
			 GetLocalTime(&mytime);
			 TCHAR strtime[256];
			 wsprintf(strtime,L"%04d—%02d—%02d %02d:%02d:

%02d",mytime.wYear,mytime.wMonth,mytime.wDay,mytime.wHour,mytime.wMinute,mytime.wSecond);
			 SetDlgItemText(hDlg,IDC_EDIT3,strtime);

			 return (INT_PTR)TRUE;
		 }
	 case WM_COMMAND:
		 {
			 if (LOWORD(wParam)==IDCANCEL)
			 {
				 EndDialog(hDlg,LOWORD(wParam));
				 break;
			 }
			 switch(LOWORD(wParam))
			 {
			 case IDC_BUTTON1://提交
				 {
					 
					 SureToSubmitOnYuDingProc(hDlg);
					 break;
				 }
			 case IDC_BUTTON2://取消
				 {
					 EndDialog(hDlg,LOWORD(wParam));
					 break;
				 }
			 }
			 break;
		 }
	 }
	 return (INT_PTR)FALSE;
 }
 void SureToSubmitOnYuDingProc(HWND hwnd)//提交处理
 {
	 //获取信息
	 WCHAR l_szCustomerName[256];
	 GetDlgItemText(hwnd,IDC_EDIT1,l_szCustomerName,sizeof(l_szCustomerName)/sizeof

(WCHAR));

	 WCHAR l_szPhoneNumber[256];
	 GetDlgItemText(hwnd,IDC_EDIT2,l_szPhoneNumber,sizeof(l_szPhoneNumber)/sizeof

(WCHAR));

	 WCHAR l_szLocalTime[256];
	 GetDlgItemText(hwnd,IDC_EDIT3,l_szLocalTime,sizeof(l_szLocalTime)/sizeof(WCHAR));

	 WCHAR l_szTable[256];
	 GetDlgItemText(hwnd,IDC_COMBO1,l_szTable,sizeof(l_szTable)/sizeof(WCHAR));
	 //判空
	 if (*l_szCustomerName==NULL||*l_szPhoneNumber==NULL || *l_szTable==NULL)
	 {
		 MessageBox(hwnd,L"信息必须都要填写!",L"",MB_OK|MB_ICONERROR);
		 return;
	 }
	 //访问数据库先要测试用户选择的餐桌是否已经有人预定或者就坐
	 SQLHENV henv = NULL;
	 SQLHDBC hdbc = NULL;
	 SQLHSTMT hstmt = NULL;
	 SQLRETURN result;
	 SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	 SQLWCHAR ConnStrOut[MAXBUFLEN];
	 //分配环境句柄
	 result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		 &henv);
	 //设置管理环境属性
	 result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	 //分配连接句柄
	 result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	 //设置连接属性
	 result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		 (void*)LOGIN_TIMEOUT, 0);
	 //连接数据库
	 result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	 if(SQL_ERROR==result)
	 {
		 ShowDBConnError(hwnd,hdbc);

	 }

	 //初始化语句句柄
	 result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

	 result = SQLPrepare(hstmt,(SQLWCHAR*)L"select ExtraTableNumber from 

diningtable",SQL_NTS);

	 CHECKDBSTMTERROR(hwnd,result,hstmt);
	 result =SQLExecute(hstmt);
	 CHECKDBSTMTERROR(hwnd,result,hstmt);

	 SQLINTEGER cbsatid=SQL_NTS;
	 WCHAR l_Table[256];
	 BOOL lb_Test=TRUE;
	 while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	 {
		  
		 ZeroMemory(l_Table,sizeof(l_Table)/sizeof(WCHAR));
		 SQLGetData(hstmt,1,SQL_C_WCHAR,l_Table,255,&cbsatid);

		 if (lstrcmpW(l_szTable,l_Table)==0)
		 {
			 lb_Test=FALSE;
			 break;
		 }
		 
	 }

	 if (lb_Test)
	 {
		 //满足条件,开始向diningtable表中插入数据
		 SQLHENV henv1 = NULL;
		 SQLHDBC hdbc1 = NULL;
		 SQLHSTMT hstmt1 = NULL;
		 SQLRETURN result1;
		 SQLWCHAR ConnStrIn1[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
		 SQLWCHAR ConnStrOut1[MAXBUFLEN];
		 //分配环境句柄
		 result1 = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
			 &henv1);
		 //设置管理环境属性
		 result1 = SQLSetEnvAttr(henv1, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 

0);
		 //分配连接句柄
		 result1 = SQLAllocHandle(SQL_HANDLE_DBC, henv1, &hdbc1);
		 //设置连接属性
		 result1 = SQLSetConnectAttr(hdbc1, SQL_LOGIN_TIMEOUT,
			 (void*)LOGIN_TIMEOUT, 0);
		 //连接数据库
		 result1 = SQLDriverConnect

(hdbc1,NULL,ConnStrIn1,SQL_NTS,ConnStrOut1,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
		 if(SQL_ERROR==result1)
		 {
			 ShowDBConnError(hwnd,hdbc1);

		 }

		 //初始化语句句柄
		 result1 = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1);

		 //根据用户选择的额外餐桌号,设置餐桌
		 int ln_table;
		 WCHAR szTableInfo[256];
		 for (int i=1;i<=20;i++)
		 {
			 ZeroMemory(szTableInfo,255);
			 wsprintf(szTableInfo,L"第%d桌",i);
			 if (lstrcmpW(l_szTable,szTableInfo)==0)
			 {
				 ln_table=i;
				 break;
			 }
		 }
		 WCHAR sql[256];
		 wsprintf(sql,L"insert into diningtable

(TableNumber,ExtraTableNumber,YudingTime,PhoneNumber,CustomerName,State) values

('%d','%s','%s','%s','%s','%s')",ln_table,l_szTable,l_szLocalTime,l_szPhoneNumber,l_szCusto

merName,L"已预定");
		 result1 = SQLPrepare(hstmt1,(SQLWCHAR*)sql,SQL_NTS);

		 CHECKDBSTMTERROR(hwnd,result1,hstmt1);
		 result1 =SQLExecute(hstmt1);
		 CHECKDBSTMTERROR(hwnd,result1,hstmt1);
		 MessageBox(hwnd,L"信息提交成功!",L"成功",MB_OK|MB_ICONINFORMATION);
		 SQLINTEGER cbsatid1=SQL_NTS;

		 SQLFreeStmt(hstmt1,SQL_CLOSE);
		 SQLDisconnect(hdbc1);
		 SQLFreeHandle(SQL_HANDLE_DBC,hdbc1);
		 SQLFreeHandle(SQL_HANDLE_ENV,henv1);
	 }
	 if (lb_Test==FALSE)
	 {
		 WCHAR l_szInfo[256];
		 wsprintf(l_szInfo,L"对不起,第%s桌已经有人预定或者就坐\n请重新选择其他餐桌

!",l_szTable);
		 MessageBox(hwnd,l_szInfo,L"提示",MB_ICONERROR|MB_OK);
	 }
	 SQLFreeStmt(hstmt,SQL_CLOSE);
	 SQLDisconnect(hdbc);
	 SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	 SQLFreeHandle(SQL_HANDLE_ENV,henv);
	

 }
BOOL CreateChildWindow(HWND hWnd)
{
	RECT rect;
	GetClientRect(hWnd,&rect);
	int cxClient,cyClient;
	cxClient=rect.right;
	cyClient=rect.bottom;

	HINSTANCE hInst=(HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE);
	//创建上侧子窗口
	if(NULL == (g_hTopWnd = CreateWindow(szTopWndClass, NULL, WS_CHILDWINDOW|

WS_BORDER|WS_VISIBLE,
		0, 62, cxClient, cyClient/7-3, hWnd, NULL, hInst, NULL)))
	{
		MessageBox(hWnd, _T("创建上侧子窗口"), _T(""), MB_OK | MB_ICONERROR);
		return FALSE;
	}

	ShowWindow(g_hTopWnd, SW_SHOW);
	UpdateWindow(g_hTopWnd);
	//SetWindowText(g_hTopWnd,TEXT("付款信息"));

	//创建右侧子窗口
	if(NULL == (g_hRightWnd = CreateWindow(szRightWndClass, NULL, WS_CHILDWINDOW  |

WS_CAPTION|WS_BORDER |WS_VISIBLE,
	cxClient/7+40, 59+cyClient/7, cxClient-cxClient/7-40, cyClient-59-cyClient/7-22-

200, hWnd, NULL, hInst, NULL)))
	{
	MessageBox(hWnd, _T("创建右侧子窗口"), _T(""), MB_OK | MB_ICONERROR);
	return FALSE;
	}

	ShowWindow(g_hRightWnd, SW_SHOW);
	UpdateWindow(g_hRightWnd);
	SetWindowText(g_hRightWnd,L"餐桌信息");

	//创建右侧子窗口2
	if(NULL == (g_hRightWnd2 = CreateWindow(szRightWnd2Class, NULL, WS_CHILDWINDOW|

WS_BORDER |WS_VISIBLE,
		cxClient/7+40,498, cxClient-cxClient/7-40, 200, hWnd, NULL, hInst, NULL)))
	{
		MessageBox(hWnd, _T("创建右侧子窗口22"), _T(""), MB_OK | MB_ICONERROR);
		return FALSE;
	}

	ShowWindow(g_hRightWnd2, SW_SHOW);
	UpdateWindow(g_hRightWnd2);
	 
	//创建左侧子窗口
	if(NULL == (g_hLeftWnd = CreateWindow(szLeftWndClass, NULL, WS_CHILDWINDOW  | 

WS_CAPTION|WS_BORDER|WS_VISIBLE   ,
		0, 59+cyClient/7, cxClient/7+40, cyClient-59-cyClient/7-19, hWnd, NULL, 

hInst, NULL)))
	{
		MessageBox(hWnd, _T("创建左侧子窗口"), _T(""), MB_OK | MB_ICONERROR);
		return FALSE;
	}
	SetWindowText(g_hLeftWnd,TEXT("餐厅/外卖管理"));
	ShowWindow(g_hLeftWnd, SW_SHOW);
	UpdateWindow(g_hLeftWnd);

	/*DoPropertySheet(g_hLeftWnd);*/
	return TRUE;
}
void AddItemForMenuOnCommand(HWND hwnd,WPARAM wParam);//增加菜肴函数声明
void AccessDataBaseForUpdateDiningTableInFo(HWND hwnd,WPARAM wParam);//更新餐厅信息列表框处

理过程
void SetListViewInfoWhenDBCLIK(HWND hwnd,WPARAM wParam,WCHAR szBuff[]);//当用户双击餐厅管理

的列表时设置右侧窗口中的各个项
void SetFuKuanInfoWhenDBCLK(HWND hwnd,WCHAR szBuff[]);//当用户双击餐饮管理列表时设置上侧的

窗口内付款信息
LRESULT CALLBACK MyLeftWndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)//左侧窗

口
{
	PAINTSTRUCT ps;
	HDC hdc;
	RECT rect;
	switch(message)
	{
	case WM_MEASUREITEM://ODT_LISTBOX
		{
			if((UINT) wParam==11 ||(UINT) wParam==17)
			{
				LPMEASUREITEMSTRUCT lpmis = (LPMEASUREITEMSTRUCT) lParam;
				lpmis->itemWidth=400;
				lpmis->itemHeight=22;
			}
			break;
		}
	case WM_DRAWITEM:
		{
			 
			if((UINT) wParam==11||(UINT) wParam==17)
			{
				HWND m_hListBox=GetDlgItem(hwnd,(UINT) wParam);
				LPDRAWITEMSTRUCT pDI=(LPDRAWITEMSTRUCT) lParam;
				HBRUSH brsh=CreateSolidBrush(RGB(255-80*pDI->itemID,255, 

255-50*pDI->itemID));//yellow
				FillRect(pDI->hDC,&pDI->rcItem,brsh);
				DeleteObject(brsh);
				// text 
				HFONT hFont=CreateFont(14,13,0,0,
					FW_HEAVY|FW_LIGHT,
					false,
					false,
					false,
					GB2312_CHARSET,
					OUT_CHARACTER_PRECIS,
					CLIP_CHARACTER_PRECIS,
					DEFAULT_QUALITY,
					FF_MODERN,
					L"楷体_GB2312");
				SelectObject(pDI->hDC,hFont);
				SetTextColor(pDI->hDC,RGB(0,0,0));
				 
				SetBkMode(pDI->hDC,TRANSPARENT);
				TCHAR szText[260];
				SendMessage(m_hListBox,LB_GETTEXT,pDI->itemID,(LPARAM)

szText);
				const DWORD dwStyle = DT_LEFT | DT_SINGLELINE | DT_VCENTER 

| DT_NOPREFIX | DT_END_ELLIPSIS;
				DrawText(pDI->hDC, szText, lstrlen(szText), &pDI->rcItem, 

dwStyle);
			}
			break;
		}
		
	case WM_NCLBUTTONDOWN:
		PostMessage(hwnd,WM_LBUTTONDOWN, wParam,HTCLIENT);//非客户区点击,转换为客

户区点击使得移动窗口失效
	case WM_CTLCOLORSTATIC://设置静态文本框字体颜色
		{
			 
			if (GetDlgItem(hwnd, 8) == (HWND)lParam)
			{
				SetTextColor((HDC)wParam, RGB(0,0,255));
				SetBkMode((HDC)wParam, TRANSPARENT);
				//return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_BTNFACE));
				return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}
			break;
		}
	case WM_LBUTTONDOWN:
		{
			//MessageBox(NULL,TEXT("left"),TEXT(""),MB_OK);
			break;
		}
	case WM_COMMAND:
		{
			switch(LOWORD(wParam))
			{
			 
			case 17://响应列表框双击,餐厅管理的列表框事件响应
				{
					switch (HIWORD(wParam))
					{
					case LBN_DBLCLK:   //双击事件
						{	
							HWND hListBox=GetDlgItem(hwnd,17);
							TCHAR szBuffer[256];
							int nCurSel = SendMessage(hListBox, 

LB_GETCURSEL, 0, 0);
							SendMessage(hListBox, LB_GETTEXT, 

(WPARAM)nCurSel, (LPARAM)szBuffer);
							 
							//MessageBox

(hwnd,szBuffer,NULL,MB_OK); 
							//向右侧的listview发送消息初始化

listview
							SetListViewInfoWhenDBCLIK

(hwnd,wParam,szBuffer);
							//设置TOP窗口信息
							SetFuKuanInfoWhenDBCLK

(hwnd,szBuffer);
						}
					default:
						return TRUE;

					}
					break;
				}
			case 11://响应列表框双击事件
				{
					switch (HIWORD(wParam))
					{
					case LBN_DBLCLK:   //双击事件
						{	
							HWND hListBox=GetDlgItem(hwnd,11);
							TCHAR szBuffer[256];
							int nCurSel = SendMessage(hListBox, 

LB_GETCURSEL, 0, 0);
							SendMessage(hListBox, LB_GETTEXT, 

(WPARAM)nCurSel, (LPARAM)szBuffer);
							//MessageBox(NULL, szBuffer, 

L"listbox item", MB_OK);
							GetAttributeAboutMenuWhenDBCLK

(hwnd,wParam,lParam,szBuffer);
						}
					default:
						return TRUE;
					 
					}
					break;
				}
			case 15://更新菜谱,在此处载入数据库中菜谱数据至列表框中
				{
					//MessageBox(NULL,TEXT("更新菜谱"),TEXT(""),MB_OK);
					PlaySound(TEXT("click.wav"),NULL,SND_ALIAS| 

SND_ASYNC);
				    GetMenuFromDatabase(hwnd,wParam);
					
					break;
				}
			case 16://增加菜肴
				{
					//MessageBox(NULL,TEXT("增加菜肴"),TEXT(""),MB_OK);
					PlaySound(TEXT("click.wav"),NULL,SND_ALIAS| 

SND_ASYNC);
					HINSTANCE hInst=(HINSTANCE)GetWindowLong

(hwnd,GWL_HINSTANCE);
					DialogBox(hInst,MAKEINTRESOURCE

(IDD_ADDITEMTOMENU),hwnd,AddItemToMenu);
					break;
				}
			case 18://更新餐厅信息
				{
					//MessageBox(NULL,TEXT("更新餐厅信息"),TEXT

(""),MB_OK);
					//在此处访问数据库向列表框中添加餐桌数据
					PlaySound(TEXT("click.wav"),NULL,SND_ALIAS| 

SND_ASYNC);
					AccessDataBaseForUpdateDiningTableInFo

(hwnd,wParam);
					break;
				}
			default:
				break;
			}
			break;
		}
	
	case WM_CREATE:
		{
		 
		     HINSTANCE hInst=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
			HWND hStatic2;

			hStatic2=CreateWindow(L"static",TEXT("菜谱列表"),WS_CHILD|

WS_VISIBLE|SS_LEFT,0,170,100,20,hwnd,(HMENU)8,((LPCREATESTRUCT)lParam)->hInstance,NULL);

			ShowWindow(hStatic2,TRUE);
			UpdateWindow(hStatic2);


			 

			//创建列表框

			//创建餐厅管理列表框
			HWND hListBoxtop=CreateWindow(L"listbox",

				TEXT(""),

				WS_VISIBLE |WS_CHILD|LBS_STANDARD|WS_HSCROLL|LBS_COMBOBOX | 

LBS_OWNERDRAWFIXED | LBS_HASSTRINGS,

				0,30,228,140,

				hwnd,

				(HMENU)17,

				((LPCREATESTRUCT)lParam)->hInstance,

				NULL);
			ShowWindow(hListBoxtop,TRUE);
			UpdateWindow(hListBoxtop);
			//创建菜肴列表框
			HWND hListBox=CreateWindow(L"listbox",

				TEXT(""),

				WS_VISIBLE |WS_CHILD|LBS_STANDARD|WS_HSCROLL|LBS_COMBOBOX|

LBS_OWNERDRAWFIXED | LBS_HASSTRINGS,

				0,240,228,272,

				hwnd,

				(HMENU)11,

				((LPCREATESTRUCT)lParam)->hInstance,

				NULL);
			ShowWindow(hListBox,TRUE);
			UpdateWindow(hListBox);
			//创建更新餐桌的按钮
			HWND hButton5=CreateWindow(L"BUTTON",

				TEXT("Refresh"),

				WS_VISIBLE |WS_CHILD |BS_USERBUTTON|BS_BITMAP,

				0,6,80,25,

				hwnd,

				(HMENU)18,

				((LPCREATESTRUCT)lParam)->hInstance,

				NULL);
			ShowWindow(hButton5,TRUE);
			UpdateWindow(hButton5);
			HBITMAP hbmp5=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP12));  
			SendMessage(hButton5, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hbmp5);
			//创建更新菜谱列表框的内容按钮
			HWND hButton3=CreateWindow(L"BUTTON",

				TEXT("Refresh"),

				WS_VISIBLE |WS_CHILD |BS_USERBUTTON|BS_BITMAP,

				130,200,80,25,

				hwnd,

				(HMENU)15,

				((LPCREATESTRUCT)lParam)->hInstance,

				NULL);
			ShowWindow(hButton3,TRUE);
			UpdateWindow(hButton3);
			HBITMAP hbmp3=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP10));  
			SendMessage(hButton3, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hbmp3);

			HWND hButton4=CreateWindow(L"BUTTON",

				TEXT("Add"),

				WS_VISIBLE |WS_CHILD |BS_USERBUTTON|BS_BITMAP,

				0,200,80,25,

				hwnd,

				(HMENU)16,

				((LPCREATESTRUCT)lParam)->hInstance,

				NULL);
			ShowWindow(hButton4,TRUE);
			UpdateWindow(hButton4);
			
			HBITMAP hbmp4=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP11));  
			SendMessage(hButton4, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hbmp4);
			break;
		}
		 
	case WM_CLOSE:
		{
			DestroyWindow(hwnd);
			break;
		}
	case WM_PAINT:
		{
			GetClientRect(hwnd,&rect);
			hdc=BeginPaint(hwnd,&ps);

			HDC hMemDC=CreateCompatibleDC(hdc);
			HBITMAP hMemBM=CreateCompatibleBitmap(hdc,250,600);
			SelectObject(hMemDC,hMemBM);
			static Image *gImag=NULL;
			Graphics g(hMemDC);
			if (gImag==NULL)
			{
				gImag=Image::FromFile(_T("right1.png"));
			}
			{
				g.DrawImage(gImag,0,0,250,600);
			}
			BitBlt(hdc,0,0,250,600,hMemDC,0,0,SRCCOPY);

			//HBRUSH hBrush=CreateSolidBrush(RGB(174,202,240));
			//FillRect(hdc,&rect,hBrush);
			DeleteDC(hMemDC);
			DeleteObject(hMemBM);
			EndPaint(hwnd,&ps);
			return 0;
		}
	case WM_ERASEBKGND:
		{
			return 0;
		}
	case WM_SIZE:
		{
			break;
		}
	default: 
		return DefWindowProc(hwnd,message,wParam,lParam);
	}
	return 0;
}

void SetFuKuanInfoWhenDBCLK(HWND hwnd,WCHAR szBuff[])//当用户双击餐饮管理列表时设置上侧的窗

口内付款信息
{
	//先要获取top窗口的句柄和各个编辑框 的句柄
	HWND hParent=GetParent(hwnd);
	HWND hTop=::FindWindowEx(hParent,NULL,szTopWndClass,NULL);
	//获取合计编辑框句柄
	HWND hHeJi=GetDlgItem(hTop,3);
	//获取实收句柄
	HWND hShiShou=GetDlgItem(hTop,4);
	//获取顾客实付句柄
	HWND hCusShiFu=GetDlgItem(hTop,5);

	//根据传入的szbuff去和数据库中diancai表的TableNumber匹配,设置数据
	//访问数据库
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
	WCHAR sql[256];
	wsprintf(sql,L"select a.AllPrice,b.CustomerName from diancai a,diningtable b where 

a.TableNumber='%s' and b.ExtraTableNumber='%s'",szBuff,szBuff);

	result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);
	SQLINTEGER cbsatid=SQL_NTS;
	 
	WCHAR l_szAllPrice[256];
	WCHAR l_szCustomerName[256];

	float lf_AllMoney=0.0;//设置全局变量,将下面获取的金额叠加进这个变量中
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{

		SQLGetData(hstmt,1,SQL_C_WCHAR,l_szAllPrice,30,&cbsatid);//总金额
		SQLGetData(hstmt,2,SQL_C_WCHAR,l_szCustomerName,30,&cbsatid);//总金额
		//转为浮点数据
		float lf_money;
		lf_money=_wtof(l_szAllPrice);
		lf_AllMoney+=lf_money;

	}
	//将获取的总金额转为字符信息设置到编辑框中
	WCHAR l_szAllMoney[256];
	CString str;
	str.Format(L"%0.3f", lf_AllMoney);  
	wsprintf(l_szAllMoney, L"%s",str.GetBuffer(str.GetLength()));  
	SetDlgItemText(hTop,3,l_szAllMoney);

	SetDlgItemText(hTop,13,l_szCustomerName);//设置客户名

	//设置实收银两
	SetDlgItemText(hTop,4,l_szAllMoney);

	//释放资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);


}
void AccessDianCaiForInitListViewProc(HWND hwnd,WCHAR szTable[]);// 初始化listview
void SetListViewInfoWhenDBCLIK(HWND hwnd,WPARAM wParam,WCHAR szBuff[])//当用户双击餐厅管理

的列表时设置右侧窗口中的各个项
{
	 
	//根据传入的szbuff去和数据库中diningtable表的ExtraTableNumber匹配,设置数据
	HWND hParent=GetParent(hwnd);//获取left窗口的父窗口,left窗口的父窗口也是right窗口

的父窗口
	HWND hwndRightWnd= ::FindWindowEx(hParent,NULL,szRightWndClass,NULL);//获取right窗

口的句柄
	HWND hListView=::FindWindowEx(hwndRightWnd,NULL,L"SysListView32",NULL);//获取

listview的窗口句柄
	//获取餐桌(ID=20)、服务员(ID=21)、状态(ID=22)、开台时间(ID=23)静态文本框 的句柄
	HWND hTable=GetDlgItem(hwndRightWnd,20);//获取餐桌窗口句柄
	HWND hServer=GetDlgItem(hwndRightWnd,21);
	HWND hState=GetDlgItem(hwndRightWnd,22);
	HWND hKaiTaiTime=GetDlgItem(hwndRightWnd,23);
	//访问数据库
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);


	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select 

ExtraTableNumber,ServerName,KaiTaiTime,State from diningtable",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);
	SQLINTEGER cbsatid=SQL_NTS;

	WCHAR szEx[30];
	WCHAR szSer[30];
	WCHAR szKai[60];
	WCHAR szSta[30];
	SendMessage(hListView,LVM_DELETEALLITEMS,0,NULL);
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{



		SQLGetData(hstmt,1,SQL_C_WCHAR, szEx,30,&cbsatid);//额外的餐桌信息
		SQLGetData(hstmt,2,SQL_C_WCHAR,szSer,30,&cbsatid);//服务员信息
		SQLGetData(hstmt,3,SQL_C_WCHAR,szKai,60,&cbsatid);//开台时间信息
		SQLGetData(hstmt,4,SQL_C_WCHAR,szSta,30,&cbsatid);//状态信息

		if (lstrcmpW(szBuff,szEx)==0)
		{
			//匹配成功后进行数据设置
			//MessageBox(NULL,szBuff,NULL,MB_OK);
			SetWindowText(hServer,szSer);
			SetWindowText(hKaiTaiTime,szKai);
			SetWindowText(hState,szSta);
			SetWindowText(hTable,szEx);
			//在此判断diningtable表的State段是否为“正在用餐”或“等待上菜”,如

果是的话,就向列表框中插入数据
			if (lstrcmpW(szSta,L"正在用餐")==0 || lstrcmpW(szSta,L"等待上菜")

==0)
			{
				//匹配成功,开始初始化listview
				//现在访问数据库中的diancai表,用餐桌号来匹配
				AccessDianCaiForInitListViewProc(hwnd,szEx);
			 
			}
			break;
		}
	}
	//释放资源
 
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);
}
void AddItemOfListView(HWND hListView,WCHAR ListMenuNumber[],WCHAR ListMenuName[],WCHAR 

ListMenuCount[],WCHAR ListMenuPrice[],WCHAR ListMenuAllPrice[],WCHAR ListDianCaiTime

[],WCHAR ListCustomerDemmand[]);//向listview增加项
void AccessDianCaiForInitListViewProc(HWND hwnd,WCHAR szTable[])// 初始化listview
{
	 //访问数据库中的diancai表获取信息
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);


	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select 

TableNumber,MenuNumber,MenuName,MenuCount,MenuPrice,AllPrice,DianCaiTime,CustomerDemmand 

from diancai",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);
	SQLINTEGER cbsatid=SQL_NTS;
	 
	WCHAR l_szTableNumber[256];
	SQLBIGINT l_nMenuNumber;
	WCHAR l_szMenuName[256];
	SQLBIGINT l_nMenuCount;
	WCHAR l_szMenuPrice[256];
	WCHAR l_szAllPrice[256];
	WCHAR l_szDianCaiTime[256];
	WCHAR l_szCustomerDemmand[256];

	//先要获取listview窗口句柄
	HWND hParent=GetParent(hwnd);//获取left窗口的父窗口,left窗口的父窗口也是right窗口

的父窗口
	HWND hwndRightWnd= ::FindWindowEx(hParent,NULL,szRightWndClass,NULL);//获取right窗

口的句柄
	HWND hListView=::FindWindowEx(hwndRightWnd,NULL,L"SysListView32",NULL);//获取

listview的窗口句柄

	//SendMessage(hListView,LVM_DELETEALLITEMS,0,NULL);
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{

		SQLGetData(hstmt,1,SQL_C_WCHAR,l_szTableNumber,30,&cbsatid);
		SQLGetData(hstmt,2,SQL_C_UBIGINT,&l_nMenuNumber,30,&cbsatid);
		SQLGetData(hstmt,3,SQL_C_WCHAR,l_szMenuName,30,&cbsatid);
		SQLGetData(hstmt,4,SQL_C_UBIGINT,&l_nMenuCount,30,&cbsatid);
		SQLGetData(hstmt,5,SQL_C_WCHAR,l_szMenuPrice,30,&cbsatid);
		SQLGetData(hstmt,6,SQL_C_WCHAR,l_szAllPrice,30,&cbsatid);
		SQLGetData(hstmt,7,SQL_C_WCHAR,l_szDianCaiTime,60,&cbsatid);
		SQLGetData(hstmt,8,SQL_C_WCHAR,l_szCustomerDemmand,256,&cbsatid);
		if (lstrcmpW(l_szTableNumber,szTable)==0)//餐桌匹配成功,开始设置listview信

息
		{
			 
			//一切搞定,开始设置
			
			//下面要向自定义函数中传入参数
			//row=ln_Row,先将l_nMenuNumber转为字符串
			WCHAR szMenuNumber[256];
			wsprintf(szMenuNumber,L"%d",l_nMenuNumber);
			//再将l_nMenuCount转为字符串
			WCHAR szMenuCount[256];
			wsprintf(szMenuCount,L"%d",l_nMenuCount);
			//开始插入
			 
			AddItemOfListView

(hListView,szMenuNumber,l_szMenuName,szMenuCount,l_szMenuPrice,l_szAllPrice,l_szDianCaiTime

,l_szCustomerDemmand);
			
		}

	}



	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);


}
void AddItemOfListView(HWND hListView,WCHAR ListMenuNumber[],WCHAR ListMenuName[],WCHAR 

ListMenuCount[],WCHAR ListMenuPrice[],WCHAR ListMenuAllPrice[],WCHAR ListDianCaiTime

[],WCHAR ListCustomerDemmand[])//向listview增加项
{
	
	WCHAR buffer[30];


	LV_ITEM lvi;
	lvi.mask = LVIF_TEXT;
	lvi.iItem = 0;
	lvi.iSubItem = 0;
	wsprintf(buffer,ListMenuNumber);
	lvi.pszText =buffer;

	SendMessage(hListView,LVM_INSERTITEM,0,(LPARAM)&lvi);
	/////////////////////////////////////////////////////
	lvi.iSubItem++;
	ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
	wsprintf(buffer,ListMenuName);
	lvi.pszText =buffer;

	SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);
	///////////////////////////
	lvi.iSubItem++;
	ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
	wsprintf(buffer,ListMenuCount);
	lvi.pszText =buffer;

	SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);
	///////////////////////////////////////////////////////
	lvi.iSubItem++;
	ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
	wsprintf(buffer,ListMenuPrice);
	lvi.pszText =buffer;

	SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);
	//////////////////////////////////////////////
	lvi.iSubItem++;
	ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
	wsprintf(buffer,ListMenuAllPrice);
	lvi.pszText =buffer;

	SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);
	//////////////////////////////////////////////
	lvi.iSubItem++;
	ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
	wsprintf(buffer,ListDianCaiTime);
	lvi.pszText =buffer;

	SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);

	//////////////////////////////////////////////
	lvi.iSubItem++;
	ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
	wsprintf(buffer,ListCustomerDemmand);
	lvi.pszText =buffer;

	SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);




}
void AccessDataBaseForUpdateDiningTableInFo(HWND hwnd,WPARAM wParam)//更新餐厅信息列表框处

理过程
{
	//访问数据库
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

  
	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select ExtraTableNumber from 

diningtable",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);
	 SQLINTEGER cbsatid=SQL_NTS;
	WCHAR sztablenum[256];
	HWND hListBox=GetDlgItem(hwnd,17);
	 SendMessage(hListBox,LB_RESETCONTENT,0,0);//更新之前清空列表
	 while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	 {



		 SQLGetData(hstmt,1,SQL_C_WCHAR,sztablenum,30,&cbsatid);

		 
		SendDlgItemMessage(hwnd,17,LB_ADDSTRING,0,(LPARAM)sztablenum); 
		 
	}


 
	 SQLFreeStmt(hstmt,SQL_CLOSE);
	 SQLDisconnect(hdbc);
	 SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	 SQLFreeHandle(SQL_HANDLE_ENV,henv);

}

BOOL InitListViewImageLists(HWND hWndListView) 
{ 
    HICON hiconItem;     // Icon for list-view items.
    HIMAGELIST hLarge;   // Image list for icon view.
    HIMAGELIST hSmall;   // Image list for other views.

    // Create the full-sized icon image lists. 
    hLarge = ImageList_Create(GetSystemMetrics(SM_CXICON), 
                              GetSystemMetrics(SM_CYICON), 
                              ILC_MASK, 1, 1); 

    hSmall = ImageList_Create(GetSystemMetrics(SM_CXSMICON), 
                              GetSystemMetrics(SM_CYSMICON), 
                              ILC_MASK, 1, 1); 
    
    // Add an icon to each image list.  
	HWND hParent=GetParent(hWndListView);
	HINSTANCE g_hInst=(HINSTANCE)GetWindowLong(hParent,GWL_HINSTANCE);
    hiconItem = LoadIcon(g_hInst, MAKEINTRESOURCE(IDI_ICON12));

    ImageList_AddIcon(hLarge, hiconItem);
    ImageList_AddIcon(hSmall, hiconItem);

    DestroyIcon(hiconItem);
 
 
    ListView_SetImageList(hWndListView, hLarge, LVSIL_NORMAL); 
    ListView_SetImageList(hWndListView, hSmall, LVSIL_SMALL); 
    
    return TRUE; 
}
 
#define  IDC_TREEVIEW 2001

HTREEITEM InsertTreeviewItem(const HWND hTreeview, const LPTSTR pszText, 
	HTREEITEM htiParent)
{
	TVITEM tvi = {0};
	tvi.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
	tvi.pszText = pszText;
	tvi.cchTextMax = wcslen(pszText);
	tvi.iImage = 0;

	TVINSERTSTRUCT tvis = {0};
	tvi.iSelectedImage = 1;
	tvis.item = tvi; 
	tvis.hInsertAfter = 0;
	tvis.hParent = htiParent;

	return (HTREEITEM)SendMessage(hTreeview, TVM_INSERTITEM, 0, (LPARAM)&tvis);
}

TV_ITEM tvi;
HTREEITEM Selected;
HTREEITEM Root;            
bool flagSelected=false;
HWND hListView;


UINT GetCheckRadioButton(HWND hwnd,int firstID,int lastID)
{
	int id;
	for (id=firstID;id<=lastID;id++)
	{
		UINT idChecked;
		idChecked=IsDlgButtonChecked(hwnd,id);
		if(idChecked==BST_CHECKED)
		{
			return id;
		}
	}
	return -1;
}
void AddItemOfListViewOnMyRightWnd2Proc(HWND hListView,WCHAR szCategory[]);//向listview增加

项
LRESULT CALLBACK MyRightWnd2Proc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)//右侧

窗口
{
	HDC hdc;
	PAINTSTRUCT ps;
	UINT id;
	switch(message)
	{
	 
	 
		/*case WM_DRAWITEM:
		{
		LPDRAWITEMSTRUCT pDIS = (LPDRAWITEMSTRUCT)lParam;

		if (pDIS->hwndItem == GetDlgItem(hwnd,1002))
		{
		SetTextColor(pDIS->hDC, RGB(0, 0, 255));
		SetBkColor(pDIS->hDC,TRANSPARENT);
		WCHAR staticText[99];
		int len = SendMessage( GetDlgItem(hwnd,1002), WM_GETTEXT, 
		ARRAYSIZE(staticText), (LPARAM)staticText);
		TextOut(pDIS->hDC, pDIS->rcItem.left, pDIS->rcItem.top, staticText, len);
		}

		return TRUE;
		}*/
		/*case WM_LBUTTONDOWN: 
		{
		ReleaseCapture(); 
		SendMessage(hwnd,WM_NCLBUTTONDOWN,HTCAPTION,0); 
		break;
		}*/
	case WM_NOTIFY:
		{
	case IDC_TREEVIEW:
		{
			if(((LPNMHDR)lParam)->code == NM_DBLCLK) // if code == NM_CLICK - 

Single click on an item
			{
				WCHAR Text[255]=L"";
				memset(&tvi,0,sizeof(tvi));

				Selected=(HTREEITEM)SendDlgItemMessage

(hwnd,IDC_TREEVIEW,TVM_GETNEXTITEM,TVGN_CARET,(LPARAM)Selected);

				if(Selected==NULL)
				{
					MessageBox(hwnd,L"No Items in 

TreeView",L"Error",MB_OK|MB_ICONINFORMATION);
					break;
				}
				TreeView_EnsureVisible(hwnd,Selected);
				SendDlgItemMessage

(hwnd,IDC_TREEVIEW,TVM_SELECTITEM,TVGN_CARET,(LPARAM)Selected);
				flagSelected=true;
				tvi.mask=TVIF_TEXT;
				tvi.pszText=Text;
				tvi.cchTextMax=256;
				tvi.hItem=Selected;

				if(SendDlgItemMessage

(hwnd,IDC_TREEVIEW,TVM_GETITEM,TVGN_CARET,(LPARAM)&tvi))
				{
					if(tvi.cChildren==0 && lstrcmpW(tvi.pszText,L"菜单

大类浏览")==0)
					{
						
						 SendMessage(hwnd,WM_COMMAND,(WPARAM)

1,NULL);
						flagSelected=false;
						break;
					}
				}
				if(SendDlgItemMessage

(hwnd,IDC_TREEVIEW,TVM_GETITEM,TVGN_CARET,(LPARAM)&tvi))
				{
					if(tvi.cChildren==0 && lstrcmpW(tvi.pszText,L"菜单

小类浏览")==0)
					{
						
						 SendMessage(hwnd,WM_COMMAND,(WPARAM)

2,NULL);
						flagSelected=false;
						break;
					}
				}
				if(SendDlgItemMessage

(hwnd,IDC_TREEVIEW,TVM_GETITEM,TVGN_CARET,(LPARAM)&tvi))
				{
					if(tvi.cChildren==0 && lstrcmpW(tvi.pszText,L"特价

菜浏览")==0)
					{
						
						 SendMessage(hwnd,WM_COMMAND,(WPARAM)

3,NULL);
						flagSelected=false;
						break;
					}
				}
				if(SendDlgItemMessage

(hwnd,IDC_TREEVIEW,TVM_GETITEM,TVGN_CARET,(LPARAM)&tvi))
				{
					if(tvi.cChildren==0 && lstrcmpW(tvi.pszText,L"今日

美味浏览")==0)
					{
						
						 SendMessage(hwnd,WM_COMMAND,(WPARAM)

4,NULL);
						flagSelected=false;
						break;
					}
				}
				 
			}
			break;
		}
		break;
		}
	case WM_COMMAND:
		{
			
		    id=LOWORD(wParam);
			switch(LOWORD(wParam))
			{
			case 100:
			case 101:
				{
					CheckRadioButton(hwnd,100,101,id);
					break;
				}
			case 1002://find
				{
					UINT idWay=GetCheckRadioButton(hwnd,100,101);
					if (idWay==-1)
					{
						MessageBox(hwnd,TEXT("请选择查找方

式!"),TEXT("财神餐饮"),MB_OK|MB_ICONINFORMATION);
						break;
					}
					TCHAR chBuffer[256];
					 
					GetDlgItemText(hwnd,idWay,chBuffer,sizeof

(chBuffer)/sizeof(TCHAR));
					MessageBox(hwnd,chBuffer,TEXT("财神餐饮"),MB_OK);
					break;
				}
			case 1://菜单大类
				{
					//MessageBox(hwnd,L"菜单大类浏

览",L"Example",MB_OK|MB_ICONINFORMATION);
				    AddItemOfListViewOnMyRightWnd2Proc(hListView,L"大类");
					break;
				}
			case 2://菜单小类
				{
					 AddItemOfListViewOnMyRightWnd2Proc(hListView,L"小

类");
					break;
				}
			case 3://特价菜
				{
					AddItemOfListViewOnMyRightWnd2Proc(hListView,L"特价

菜");
					break;
				}
			case 4://今日美味
				{
					AddItemOfListViewOnMyRightWnd2Proc(hListView,L"今日

美味");
					break;
				}
			}
			break;
		}
	case WM_NCLBUTTONDOWN:
		{
			PostMessage(hwnd,WM_LBUTTONDOWN, wParam,HTCLIENT);//非客户区点击,

转换为客户区点击使得移动窗口失效
			return 0;
		}
	case WM_CREATE:
		{
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);

		
			//创建radio
			CreateWindow(L"Button",L"菜肴编号",WS_CHILD | WS_VISIBLE | 

BS_AUTORADIOBUTTON | WS_GROUP|WS_BORDER,  
				60,10,80,20,hwnd,(HMENU)100,((LPCREATESTRUCT)lParam)-

>hInstance,NULL);  
			CreateWindow(L"Button",L"拼音字母",WS_CHILD | WS_VISIBLE | 

BS_AUTORADIOBUTTON|WS_BORDER ,  
				180,10,80,20,hwnd,(HMENU)101,((LPCREATESTRUCT)lParam)-

>hInstance,NULL);
			//创建静态框
			CreateWindow(L"button",TEXT("查找"),WS_CHILD|WS_VISIBLE|WS_BORDER|

BS_DEFPUSHBUTTON,440,10,80,30,hwnd,(HMENU)1002,((LPCREATESTRUCT)lParam)->hInstance,NULL);
			

			//创建编辑框
			CreateWindow(TEXT("edit"),NULL,WS_CHILD|WS_VISIBLE|ES_LEFT|

WS_BORDER,300,10,100,20,hwnd,(HMENU)104,((LPCREATESTRUCT)lParam)->hInstance,NULL);

			 

			//创建tree控件

			{
				INITCOMMONCONTROLSEX iccx;
				iccx.dwSize = sizeof(INITCOMMONCONTROLSEX);
				iccx.dwICC = ICC_TREEVIEW_CLASSES;
				if (!InitCommonControlsEx(&iccx))
					return FALSE;

				// Create the Treeview control
				RECT rc;
				GetClientRect(hwnd, &rc);
				HWND hTreeview = CreateWindowEx(0, WC_TREEVIEW, 0, 
					TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS | 

WS_CHILD | WS_VISIBLE|WS_BORDER, 
					rc.left, 40, rc.right/8, rc.bottom-40, 
					hwnd, (HMENU)IDC_TREEVIEW, hInst, 0);

				SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)hTreeview);

				// Create an image list
				HIMAGELIST hImages = ImageList_Create(
					GetSystemMetrics(SM_CXSMICON),
					GetSystemMetrics(SM_CYSMICON), 
					ILC_COLOR32 | ILC_MASK, 1, 1);

				// Get an instance handle for a source of icon images
				HINSTANCE hLib = LoadLibrary(L"shell32.dll");
				if (hLib)
				{
					for (int i = 4; i < 6; i++)
					{
						// Because the icons are loaded from system 

resources (i.e. they are 
						// shared), it is not necessary to free 

resources with 'DestroyIcon'.
						HICON hIcon = (HICON)LoadImage(hLib, 

MAKEINTRESOURCE(i), IMAGE_ICON,
							0, 0, LR_SHARED);
						ImageList_AddIcon(hImages, hIcon); 
					}

					FreeLibrary(hLib);
					hLib = NULL;
				}

				// Attach image lists to tree view common control
				TreeView_SetImageList(hTreeview, hImages, TVSIL_NORMAL);


				 
				// Insert the first item at root level
				HTREEITEM hPrev1 = InsertTreeviewItem(hTreeview, L"菜单大类

", TVI_ROOT);

				// Sub item of first item
				hPrev1 = InsertTreeviewItem(hTreeview, L"菜单大类浏览", 

hPrev1);

			    HTREEITEM hPrev2 = InsertTreeviewItem(hTreeview, L"菜单小类", 

TVI_ROOT);
				hPrev1 = InsertTreeviewItem(hTreeview, L"菜单小类浏览", 

hPrev2);
				// Insert the second item at root level
				HTREEITEM hPrev3 = InsertTreeviewItem(hTreeview, L"特价菜", 

TVI_ROOT);
			    hPrev1 = InsertTreeviewItem(hTreeview, L"特价菜浏览", hPrev3);
				 
				HTREEITEM hPrev4 = InsertTreeviewItem(hTreeview, L"今日美味

", TVI_ROOT);
				hPrev1 = InsertTreeviewItem(hTreeview, L"今日美味浏览", 

hPrev4);

			}
			 
		 
			//创建listview控件

			{
				//创建listview
			RECT rect;
			GetClientRect(hwnd,&rect);
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
			  hListView = CreateWindowEx(LVS_EX_FULLROWSELECT,_T

("SysListView32"),NULL,LVS_REPORT |LVS_ICON |
				WS_CHILD |WS_VISIBLE|WS_HSCROLL|WS_VSCROLL|WS_BORDER,
				rect.right/8,40,rect.right-rect.right/8,rect.bottom-

40,hwnd,(HMENU)12,hInst,NULL);


			SendMessage(hListView,LVM_SETTEXTCOLOR,0,RGB(0,0,0));//设置文本颜色

			SendMessage(hListView,LVM_SETTEXTBKCOLOR ,0,RGB(96,210,247));//设置

文本颜色
			SetFocus(hListView);

			ListView_SetItemState(hListView,0,LVIS_SELECTED,LVIS_SELECTED);     

           
			//参数0使第一行处于选择中状态,若为-1则表示所有的行

	       ListView_SetExtendedListViewStyle(hListView,LVS_EX_FULLROWSELECT|

LVS_EX_GRIDLINES|LVS_EX_AUTOSIZECOLUMNS);              //设置整行选择风格

			//插入列
			LV_COLUMN lvc;
			lvc.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_FMT|LVCFMT_CENTER;
			lvc.fmt=LVCFMT_CENTER;
			lvc.pszText =L"菜肴编号";
			lvc.cx = 100;
			SendMessage(hListView,LVM_INSERTCOLUMN,0,(LPARAM)&lvc);


			lvc.pszText = L"菜肴名称";
			lvc.cx = 140;
			SendMessage(hListView,LVM_INSERTCOLUMN,1,(LPARAM)&lvc);

			lvc.pszText = L"大份价格";   
			SendMessage(hListView,LVM_INSERTCOLUMN,2,(LPARAM)&lvc);
			lvc.pszText = L"小份价格";   
			SendMessage(hListView,LVM_INSERTCOLUMN,3,(LPARAM)&lvc);

			lvc.pszText = L"折扣";
			SendMessage(hListView,LVM_INSERTCOLUMN,4,(LPARAM)&lvc);

			lvc.pszText = L"单位";
			SendMessage(hListView,LVM_INSERTCOLUMN,5,(LPARAM)&lvc);

			lvc.pszText = L"特点";
			SendMessage(hListView,LVM_INSERTCOLUMN,6,(LPARAM)&lvc);

			 



			InitListViewImageLists(hListView);//在每行前插入图标
			}
			break;
		}
	case WM_CLOSE:
		{
			PostQuitMessage(0);
			break;
		}
	 
	case WM_SIZE:
		{
			break;
		}
	case WM_PAINT:
		{
			RECT rect;
			GetClientRect(hwnd,&rect);
			rect.bottom=50;
			hdc=BeginPaint(hwnd,&ps);
			HBRUSH hBrush=CreateSolidBrush(RGB(174,202,240));
			FillRect(hdc,&rect,hBrush);
			 
			EndPaint(hwnd,&ps);
			return 0;
		}
	case WM_ERASEBKGND:
		{
			return 0;
		}
	default: 
		return DefWindowProc(hwnd,message,wParam,lParam);
		
	}
	return 0;
}
 
void AddItemOfListViewOnMyRightWnd2Proc(HWND hListView,WCHAR szCategory[])//向listview增加

项
{
	HWND hwnd=GetParent(hListView);
	int ListMenuNumber;
	WCHAR ListMenuName[256];
	WCHAR ListMenuPriceBig[256];
	WCHAR ListMenuPriceSmall[256];
	WCHAR ListMenuDisCount[256];
	WCHAR ListMenuUnits[256];
	WCHAR ListMenuFeture[256];
	
	//访问数据库:表为:menu,用szCategory进行匹配
	{
		SQLHENV henv = NULL;
		SQLHDBC hdbc = NULL;
		SQLHSTMT hstmt = NULL;
		SQLRETURN result;
		SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
		SQLWCHAR ConnStrOut[MAXBUFLEN];
		//分配环境句柄
		result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
			&henv);
		//设置管理环境属性
		result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
		//分配连接句柄
		result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
		//设置连接属性
		result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
			(void*)LOGIN_TIMEOUT, 0);
		//连接数据库
		result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
		if(SQL_ERROR==result)
		{
			ShowDBConnError(hwnd,hdbc);

		}

		//初始化语句句柄
		result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

		WCHAR sql[256];
		wsprintf(sql,L"select ID,Name,PriceBig,PriceSmall,Discount,Units,Feature 

from menu where Category='%s'",szCategory);
		result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

		CHECKDBSTMTERROR(hwnd,result,hstmt);
		result =SQLExecute(hstmt);
		CHECKDBSTMTERROR(hwnd,result,hstmt);

		SQLINTEGER cbsatid=SQL_NTS;

		 

		SendMessage(hListView,LVM_DELETEALLITEMS,0,0);//更新之前清空列表

		 
		while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
		{ 
			ZeroMemory(ListMenuName,sizeof(ListMenuName)/sizeof(WCHAR));
			ZeroMemory(ListMenuPriceBig,sizeof(ListMenuPriceBig)/sizeof

(WCHAR));
			ZeroMemory(ListMenuPriceSmall,sizeof(ListMenuPriceSmall)/sizeof

(WCHAR));
			ZeroMemory(ListMenuDisCount,sizeof(ListMenuDisCount)/sizeof

(WCHAR));
			ZeroMemory(ListMenuUnits,sizeof(ListMenuUnits)/sizeof(WCHAR));
			ZeroMemory(ListMenuFeture,sizeof(ListMenuFeture)/sizeof(WCHAR));

			SQLGetData(hstmt,1,SQL_C_ULONG,&ListMenuNumber,30,&cbsatid);
			SQLGetData(hstmt,2,SQL_C_WCHAR,ListMenuName,30,&cbsatid);
			SQLGetData(hstmt,3,SQL_C_WCHAR,ListMenuPriceBig,30,&cbsatid);
			SQLGetData(hstmt,4,SQL_C_WCHAR,ListMenuPriceSmall,30,&cbsatid);
			SQLGetData(hstmt,5,SQL_C_WCHAR,ListMenuDisCount,30,&cbsatid);
			SQLGetData(hstmt,6,SQL_C_WCHAR,ListMenuUnits,30,&cbsatid);
			SQLGetData(hstmt,7,SQL_C_WCHAR,ListMenuFeture,30,&cbsatid);
			{
				//转ID为字符串
				WCHAR l_szNumber[256];
				wsprintf(l_szNumber,L"%d",ListMenuNumber);
				WCHAR buffer[30];

				LV_ITEM lvi;
				lvi.mask = LVIF_TEXT;
				lvi.iItem = 0;
				lvi.iSubItem = 0;
				wsprintf(buffer,l_szNumber);
				lvi.pszText =buffer;

				SendMessage(hListView,LVM_INSERTITEM,0,(LPARAM)&lvi);
				/////////////////////////////////////////////////////
				lvi.iSubItem++;
				ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
				wsprintf(buffer,ListMenuName);
				lvi.pszText =buffer;

				SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);
				///////////////////////////
				 
				///////////////////////////////////////////////////////
				lvi.iSubItem++;
				ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
				wsprintf(buffer,ListMenuPriceBig);
				lvi.pszText =buffer;

				SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);

				lvi.iSubItem++;
				ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
				wsprintf(buffer,ListMenuPriceSmall);
				lvi.pszText =buffer;

				SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);
				//////////////////////////////////////////////
				lvi.iSubItem++;
				ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
				wsprintf(buffer,ListMenuDisCount);
				lvi.pszText =buffer;

				SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);
				//////////////////////////////////////////////
				lvi.iSubItem++;
				ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
				wsprintf(buffer,ListMenuUnits);
				lvi.pszText =buffer;

				SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);

				//////////////////////////////////////////////
				lvi.iSubItem++;
				ZeroMemory(buffer,sizeof(buffer)/sizeof(TCHAR));
				wsprintf(buffer,ListMenuFeture);
				lvi.pszText =buffer;

				SendMessage(hListView,LVM_SETITEM,0,(LPARAM)&lvi);
			}
		}	  
		SQLFreeStmt(hstmt,SQL_CLOSE);
		SQLDisconnect(hdbc);
		SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
		SQLFreeHandle(SQL_HANDLE_ENV,henv);
	}
	

	
	
}






LRESULT CALLBACK MyRightWndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)//右侧窗

口
{
	HDC hdc;
	PAINTSTRUCT ps;
	switch(message)
	{
	case WM_NCLBUTTONDOWN:
		PostMessage(hwnd,WM_LBUTTONDOWN, wParam,HTCLIENT);//非客户区点击,转换为客

户区点击使得移动窗口失效
	case WM_LBUTTONDOWN:
		{
			//MessageBox(NULL,TEXT("right"),TEXT(""),MB_OK);
			break;
		}
	case WM_ERASEBKGND:
		{
			return 0;
		}
	case WM_PAINT:
		{
			RECT rectclient;
			GetClientRect(hwnd,&rectclient);
			RECT rect;
			 rect.left=0;
			 rect.right=rectclient.right;
			 rect.top=0;
			 rect.bottom=60;
			hdc=BeginPaint(hwnd,&ps);


			 

			HDC hMemDC=CreateCompatibleDC(hdc);
			HBITMAP hMemBM=CreateCompatibleBitmap(hdc,1200,60);
			SelectObject(hMemDC,hMemBM);
			static Image *gImag=NULL;
			Graphics g(hMemDC);
			if (gImag==NULL)
			{
				gImag=Image::FromFile(_T("right1.png"));
			}
			{
				g.DrawImage(gImag,0,0,1200,60);
			}
			BitBlt(hdc,0,0,1200,60,hMemDC,0,0,SRCCOPY);


			/*HBRUSH hBrush=CreateSolidBrush(RGB(174,202,240));
			FillRect(hdc,&rect,hBrush);*/
			/*TextOut(hdc,0,0,TEXT("餐桌信息"),4);*/

			
			 
			

			TCHAR *szName1=TEXT("餐桌:");
			SetBkColor(hdc,RGB(174,202,240));
			SetTextColor(hdc,RGB(255,255,255));
			SetBkMode(hdc,TRANSPARENT);
			TextOut(hdc,60,20,szName1,sizeof(szName1)/sizeof(TCHAR));

			TCHAR *szName2=TEXT("服务员:");
			TextOut(hdc,250,20,szName2,3);

			TCHAR *szName3=TEXT("状态:");
			TextOut(hdc,450,20,szName3,2);

			TCHAR *szName4=TEXT("开台时间:");
			TextOut(hdc,630,20,szName4,4);
			 
			DeleteDC(hMemDC);
			DeleteObject(hMemBM);
			EndPaint(hwnd,&ps);
			break;
		}
	case WM_CTLCOLORSTATIC://设置静态文本框字体颜色
		{
			if (GetDlgItem(hwnd, 20) == (HWND)lParam ||GetDlgItem(hwnd, 21) == 

(HWND)lParam ||GetDlgItem(hwnd, 22) == (HWND)lParam ||GetDlgItem(hwnd, 23) == (HWND)lParam 

)//这里的1是静态文本框的ID
			{
				SetTextColor((HDC)wParam, RGB(0,0,255));
				//SetBkMode((HDC)wParam, TRANSPARENT);
				return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_BTNFACE));
				//return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}

			break;
		}
	
	case WM_COMMAND:
		{
			break;
		}
	case WM_CREATE:
		{
 
			//创建listview
			RECT rect;
			GetClientRect(hwnd,&rect);
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
			HWND hListView = CreateWindowEx(LVS_EX_FULLROWSELECT,_T

("SysListView32"),NULL,LVS_REPORT |LVS_ICON |
				WS_CHILD |WS_VISIBLE|WS_HSCROLL|WS_VSCROLL|WS_BORDER,
				0,60,rect.right,rect.bottom-60,hwnd,(HMENU)12,hInst,NULL);


			SendMessage(hListView,LVM_SETTEXTCOLOR,0,RGB(0,0,0));//设置文本颜色

			SendMessage(hListView,LVM_SETTEXTBKCOLOR ,0,RGB(96,210,247));//设置

文本颜色
			SetFocus(hListView);

			ListView_SetItemState(hListView,0,LVIS_SELECTED,LVIS_SELECTED);     

           
			//参数0使第一行处于选择中状态,若为-1则表示所有的行

	       ListView_SetExtendedListViewStyle(hListView,LVS_EX_FULLROWSELECT|

LVS_EX_GRIDLINES|LVS_EX_AUTOSIZECOLUMNS);              //设置整行选择风格

			//插入列
			LV_COLUMN lvc;
			lvc.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_FMT|LVCFMT_CENTER;
			lvc.fmt=LVCFMT_CENTER;
			lvc.pszText =L"菜肴编号";
			lvc.cx = 150;
			SendMessage(hListView,LVM_INSERTCOLUMN,0,(LPARAM)&lvc);


			lvc.pszText = L"菜肴名称";
			lvc.cx = 170;
			SendMessage(hListView,LVM_INSERTCOLUMN,1,(LPARAM)&lvc);

			lvc.pszText = L"数量";   
			SendMessage(hListView,LVM_INSERTCOLUMN,2,(LPARAM)&lvc);

			lvc.pszText = L"价格";
			SendMessage(hListView,LVM_INSERTCOLUMN,3,(LPARAM)&lvc);

			lvc.pszText = L"合计金额";
			SendMessage(hListView,LVM_INSERTCOLUMN,4,(LPARAM)&lvc);

			lvc.pszText = L"点菜时间";
			SendMessage(hListView,LVM_INSERTCOLUMN,5,(LPARAM)&lvc);

			lvc.pszText = L"顾客要求";
			SendMessage(hListView,LVM_INSERTCOLUMN,6,(LPARAM)&lvc);


			 
			InitListViewImageLists(hListView);//在每行前插入图标

			
			//在信息中创建静态文本框
			HWND hStatic1;

			hStatic1=CreateWindow(L"static",NULL,WS_CHILD|WS_VISIBLE|SS_LEFT|

WS_BORDER,120,20,100,20,hwnd,(HMENU)20,((LPCREATESTRUCT)lParam)->hInstance,NULL);

			ShowWindow(hStatic1,TRUE);
			UpdateWindow(hStatic1);

			HWND hStatic2;

			hStatic2=CreateWindow(L"static",NULL,WS_CHILD|WS_VISIBLE|SS_LEFT|

WS_BORDER,320,20,100,20,hwnd,(HMENU)21,((LPCREATESTRUCT)lParam)->hInstance,NULL);

			ShowWindow(hStatic2,TRUE);
			UpdateWindow(hStatic2);

			HWND hStatic3;

			hStatic3=CreateWindow(L"static",NULL,WS_CHILD|WS_VISIBLE|SS_LEFT|

WS_BORDER,500,20,100,20,hwnd,(HMENU)22,((LPCREATESTRUCT)lParam)->hInstance,NULL);

			ShowWindow(hStatic3,TRUE);
			UpdateWindow(hStatic3);


			HWND hStatic4;

			hStatic4=CreateWindow(L"static",NULL,WS_CHILD|WS_VISIBLE|SS_LEFT|

WS_BORDER,700,20,160,20,hwnd,(HMENU)23,((LPCREATESTRUCT)lParam)->hInstance,NULL);

			ShowWindow(hStatic4,TRUE);
			UpdateWindow(hStatic4);
			
			break;
		}
	case WM_CLOSE:
		{
			DestroyWindow(hwnd);
			break;
		}
	case WM_SIZE:
		{
			break;
		}
	default: 
		return DefWindowProc(hwnd,message,wParam,lParam);
	}
	return 0;
}
 
LRESULT CALLBACK MyTopWndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)//上侧窗口
{
	PAINTSTRUCT ps;
	HDC hdc;
	RECT rect;
	static int cxClient,cyClient;
	static BOOL gb_Test=FALSE;
	switch(message)
	{
	//case WM_CTLCOLOREDIT:
	//	{ 
	//		int i=GetWindowLong((HWND)lParam,GWL_ID);
	//		if(i==3 ||i==4 || i==5|| i==15 || i==13 || i==12 || i==14)
	//		{
	//			SetTextColor((HDC)wParam,RGB(0,0,255));//文字颜色
	//			//SetBkColor((HDC)wParam,GetSysColor(COLOR_HOTLIGHT));//文

字的背后颜色
	//		}
	//		if (i==15)
	//		{
	//			SetTextColor((HDC)wParam,RGB(255,0,255));//文字颜色
	//			SetBkColor((HDC)wParam,GetSysColor(COLOR_BTNFACE));//文字的

背后颜色
	//		}
	//		return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
	//	}
	case WM_NCLBUTTONDOWN:
		PostMessage(hwnd,WM_LBUTTONDOWN, wParam,HTCLIENT);//非客户区点击,转换为客

户区点击使得移动窗口失效
	case WM_CTLCOLORSTATIC://设置静态文本框字体颜色
		{
			if (GetDlgItem(hwnd, 6) == (HWND)lParam)
			{
				SetTextColor((HDC)wParam, RGB(0,0,255));
				SetBkMode((HDC)wParam, TRANSPARENT);
				//return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_BTNFACE));
				return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}
			break;
		}
	case WM_TIMER://在定时器里设置实收银两
		{
			//获取打折信息
			WCHAR l_szGetDisCount[256];
			GetDlgItemText(hwnd,14,l_szGetDisCount,sizeof

(l_szGetDisCount)/sizeof(WCHAR));
			//获取合计数据
			WCHAR l_szHeJi[256];
			GetDlgItemText(hwnd,3,l_szHeJi,sizeof(l_szHeJi)/sizeof(WCHAR));
			//将获取的合计字符信息转为浮点数据
			float lf_HeJi;
			lf_HeJi=_wtof(l_szHeJi);
			//根据获取的字符信息,设置打折数据

			WCHAR l_szShiShou[256];//实收信息
			float lf_ShiShou;//实收信息
			if (lstrcmpW(l_szGetDisCount,L"不打折")==0)
			{
				//实收银两==合计*折扣
				lf_ShiShou=lf_HeJi;
			}
			
			if (lstrcmpW(l_szGetDisCount,L"五折")==0)
			{
				lf_ShiShou=lf_HeJi*0.5;
			}
			if (lstrcmpW(l_szGetDisCount,L"六折")==0)
			{
				lf_ShiShou=lf_HeJi*0.6;
			}
			if (lstrcmpW(l_szGetDisCount,L"七折")==0)
			{
				lf_ShiShou=lf_HeJi*0.7;
			}
			if (lstrcmpW(l_szGetDisCount,L"八折")==0)
			{
				lf_ShiShou=lf_HeJi*0.8;
			}
			if (lstrcmpW(l_szGetDisCount,L"九折")==0)
			{
				lf_ShiShou=lf_HeJi*0.9;
			}
			//已经获取了浮点实收数据,现在将其转为字符信息
			CString str;  

			str.Format(L"%0.3f", lf_ShiShou);  
			wsprintf(l_szShiShou, L"%s",str.GetBuffer(str.GetLength()));  

			//设置编辑框信息
			SetDlgItemText(hwnd,4,l_szShiShou);
			break;
		}
	case WM_LBUTTONDOWN:
		{
			//MessageBox(NULL,TEXT("top"),TEXT(""),MB_OK);
			break;
		}
	case WM_PAINT:
		{
			
			hdc=BeginPaint(hwnd,&ps);
			GetClientRect(hwnd,&rect);
			 
			HDC hMemDC=CreateCompatibleDC(hdc);
			HBITMAP hMemBM=CreateCompatibleBitmap(hdc,rect.right,500);
			SelectObject(hMemDC,hMemBM);
			static Image *gImag=NULL;
			Graphics g(hMemDC);
			if (gImag==NULL)
			{
				gImag=Image::FromFile(_T("top4.jpg"));
			}
			{
				g.DrawImage(gImag,0,0,rect.right,500);
			}
			BitBlt(hdc,0,0,rect.right,500,hMemDC,0,0,SRCCOPY);
			//SetTextColor(hdc,RGB(100,40,0));
			 
			/*HBRUSH hBrush=CreateSolidBrush(RGB(203,229,247));
			FillRect(hdc,&rect,hBrush);*/

			TCHAR *szName1=TEXT("合计:");
			SetBkColor(hdc,RGB(174,202,240));
			SetTextColor(hdc,RGB(0,0,0));
			SetBkMode(hdc,TRANSPARENT);
			TextOut(hdc,80,30,szName1,sizeof(szName1)/sizeof(TCHAR));

			TCHAR *szName2=TEXT("实收:");
			 
			TextOut(hdc,240,30,szName2,sizeof(szName2)/sizeof(TCHAR));

			TCHAR *szName3=TEXT("顾客实付");

			TextOut(hdc,400,30,szName3,4);

			if (gb_Test==TRUE)
			{
			}
			SetTextColor(hdc,RGB(0,0,0));
			SetBkMode(hdc,TRANSPARENT);
			TCHAR *szName4=TEXT("付款信息");

			TextOut(hdc,0,0,szName4,4);

			SetTextColor(hdc,RGB(255,0,0));
			SetBkMode(hdc,TRANSPARENT);
			if (gb_Test==TRUE)
			{
				TCHAR *szName5=TEXT("付款方式");

				TextOut(hdc,50,60,szName5,4);

				TCHAR *szName6=TEXT("客户名称");

				TextOut(hdc,240,60,szName6,4);

				TCHAR *szName7=TEXT("打折");

				TextOut(hdc,430,60,szName7,2);

				TCHAR *szName8=TEXT("备注");

				TextOut(hdc,600,60,szName8,2);

			}
			
			DeleteDC(hMemDC);
			DeleteObject(hMemBM);
			EndPaint(hwnd,&ps);
			return 0;
		}
	case WM_ERASEBKGND:
		{
			return 0;
		}
	case WM_COMMAND:
		{
			switch(LOWORD(wParam))
			{
			case 6://高级
				{
					//设置定时器
					SetTimer(hwnd,1,3000,NULL);

					BOOL bcheck=SendDlgItemMessage

(hwnd,6,BM_GETCHECK,0,0);
					if (bcheck==TRUE)
					{
						 //启用且显示控件
						 ShowWindow(GetDlgItem(hwnd,12),SW_SHOW);
						 ShowWindow(GetDlgItem(hwnd,13),SW_SHOW);
						 ShowWindow(GetDlgItem(hwnd,14),SW_SHOW);
						 ShowWindow(GetDlgItem(hwnd,15),SW_SHOW);
						 gb_Test=TRUE;
						 InvalidateRect(hwnd,NULL,FALSE);
						 


					}
					if (bcheck==FALSE)
					{
						 //禁用且隐藏控件
						ShowWindow(GetDlgItem(hwnd,12),SW_HIDE);
						ShowWindow(GetDlgItem(hwnd,13),SW_HIDE);
						ShowWindow(GetDlgItem(hwnd,14),SW_HIDE);
						ShowWindow(GetDlgItem(hwnd,15),SW_HIDE);
						gb_Test=FALSE;
						InvalidateRect(hwnd,NULL,FALSE);
					}
					break;
				}
			case 7://确认收银
				{
					
					PlaySound(TEXT("click.wav"),NULL,SND_ALIAS| 

SND_ASYNC);
					//先要获取合计内容
					WCHAR l_szHeJi[256];
					GetDlgItemText(hwnd,3,l_szHeJi,sizeof

(l_szHeJi)/sizeof(WCHAR));
					//判空
					if (*l_szHeJi==NULL)
					{
						MessageBox(hwnd,L"请先选择要结算的餐

桌!",L"提示",MB_OK|MB_ICONERROR);
						break;
					}
					//如果不为空,就要将获取的字符串转为浮点数据
					float lf_HeJi;
					lf_HeJi=_wtof(l_szHeJi);
					//判断是否为零
					if (lf_HeJi==0.0)
					{
						MessageBox(hwnd,L"该餐桌还没有点菜!",L"提

示",MB_OK|MB_ICONERROR);
						break;
					}
					//不为零,正确处理
					//先要获取用户输入的客户实付
					WCHAR l_szCusShiFu[256];
					GetDlgItemText(hwnd,5,l_szCusShiFu,sizeof

(l_szCusShiFu)/sizeof(WCHAR));
					//判空
					if (*l_szCusShiFu==NULL)
					{
						MessageBox(hwnd,L"客户未付款!",L"提

示",MB_ICONERROR|MB_OK);
						break;
					}
					//好了,现在可以处理正确的情况了,收银要显示实付信

息,实收信息,找零信息
					
					//将实付转为浮点数据
					float lf_ShiFu;
					lf_ShiFu=_wtof(l_szCusShiFu);
					//获取实收信息
					WCHAR l_szShiShou[256];
					GetDlgItemText(hwnd,4,l_szShiShou,sizeof

(l_szShiShou)/sizeof(WCHAR));
					//将实收转为浮点数据
					float lf_ShiShou;
					lf_ShiShou=_wtof(l_szShiShou);
					//设置找零变量
					float lf_ZhaoLing;
					//找零==实付信息-实收信息
					lf_ZhaoLing=lf_ShiFu-lf_ShiShou;
					//判断是否合理,要确认不能亏本
					if (lf_ZhaoLing<0)
					{
						MessageBox(hwnd,L"客户支付有误!请确认收银

金额是否正确!",L"提示",MB_OK|MB_ICONERROR);
						break;
					}
					//将找零浮点数据转为字符数据
					WCHAR l_szZhaoLing[256];
					CString str;  

					str.Format(L"%0.3f", lf_ZhaoLing);  
					wsprintf(l_szZhaoLing, L"%s",str.GetBuffer

(str.GetLength()));  

					
					//现在可以正确的提示用户信息了
					WCHAR l_szInfo[256];
					wsprintf(l_szInfo,L"收银前请再次确认信息是否正确:

\n实收:'%s'\n客户支付:'%s'\n找零:'%s'\n确认收银

吗?",l_szShiShou,l_szCusShiFu,l_szZhaoLing);
					//提示框
					if(IDYES==MessageBox(hwnd,l_szInfo,L"收

银",MB_YESNO|MB_ICONINFORMATION))
					{
						MessageBox(hwnd,L"收银成功!",L"提

示",MB_OK|MB_ICONINFORMATION);
					}
					break;
				}
			case 10://播放音乐按钮的处理,随机播放音乐
				{
					static BOOL lbTest=FALSE;
					 TCHAR szBuffer[256] = {0};
					 TCHAR Buffer[256] = {0};

					 srand((unsigned int)time(0));//产生随机种子,防止

绑定程序
					static int l_nRand=rand()%3;//获取随机数0~2

					 

					switch(l_nRand)
					{
					case 0:
						{
							wsprintf(szBuffer,L"music1.mp3");

							 
							break;
						}
					case 1:
						{
							wsprintf(szBuffer,L"music2.mp3");
							 
							break;
						}
					case 2:
						{
							wsprintf(szBuffer,L"music3.mp3");
							
							break;
						}
					default:
						break;
					}
					
					
					if (lbTest==FALSE)
					{
						wsprintf(Buffer,L"open \"%s\"",szBuffer);
						mciSendString(Buffer,NULL,0,NULL);
						wsprintf(Buffer,L"play \"%s\" 

repeat",szBuffer);
						mciSendString(Buffer,NULL,0,NULL);

						SetWindowText(GetDlgItem(hwnd,10),L"关闭音

乐");
						UpdateWindow(GetDlgItem(hwnd,10));

						 
						lbTest=!lbTest;
						break;

					}
					else
					{
						wsprintf(Buffer,L"close \"%s\"",szBuffer);

						mciSendString(Buffer,NULL,0,NULL);
						SetWindowText(GetDlgItem(hwnd,10),L"开启音

乐");
						UpdateWindow(GetDlgItem(hwnd,10));
						
						lbTest=!lbTest;
						break;
					}

					
					break;
				}
			}
			break;
		}
	 
	case WM_CREATE:
		{
			 HINSTANCE hInst=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
			//创建静态文本框
			/*HWND hStatic;
			
			hStatic=CreateWindow(L"static",TEXT("付款信息"),WS_CHILD|

WS_VISIBLE|SS_LEFT,0,5,80,30,hwnd,(HMENU)2,((LPCREATESTRUCT)lParam)->hInstance,NULL);

			ShowWindow(hStatic,TRUE);
			UpdateWindow(hStatic);*/
			 //创建按钮名称和编辑框(合计)
			HWND  hEditheji;

			hEditheji=CreateWindow(TEXT("edit"),TEXT(""),WS_CHILD|WS_VISIBLE|

ES_LEFT|WS_BORDER,120,30,100,20,hwnd,(HMENU)3,((LPCREATESTRUCT)lParam)->hInstance,NULL);

			ShowWindow(hEditheji,TRUE);
			UpdateWindow(hEditheji);
			EnableWindow(hEditheji,FALSE);
			//创建按钮和编辑框(实收
			HWND  hEditshishou;

			hEditshishou=CreateWindow(TEXT("edit"),TEXT(""),WS_CHILD|

WS_VISIBLE|ES_LEFT|WS_BORDER,280,30,100,20,hwnd,(HMENU)4,((LPCREATESTRUCT)lParam)-

>hInstance,NULL);

			ShowWindow(hEditshishou,TRUE);
			UpdateWindow(hEditshishou);
			//创建顾客支付

			HWND  hEditgukezhifu;

			hEditgukezhifu=CreateWindow(TEXT("edit"),TEXT(""),WS_CHILD|

WS_VISIBLE|ES_LEFT|WS_BORDER,480,30,100,20,hwnd,(HMENU)5,((LPCREATESTRUCT)lParam)-

>hInstance,NULL);

			ShowWindow(hEditgukezhifu,TRUE);
			UpdateWindow(hEditgukezhifu);
			HWND hFuKuanWay=CreateWindow(TEXT("ComboBox"),TEXT("付款方式"), 

WS_CHILD | WS_VISIBLE | WS_VSCROLL | CBS_DROPDOWNLIST |CBS_AUTOHSCROLL| 

WS_BORDER,120,60,100,80,hwnd,(HMENU)12,((LPCREATESTRUCT)lParam)->hInstance,NULL);
			 

			HWND hCusName=CreateWindow(TEXT("edit"),TEXT(""),WS_CHILD|

WS_VISIBLE |ES_AUTOHSCROLL|ES_AUTOVSCROLL|ES_MULTILINE|ES_NOHIDESEL|ES_OEMCONVERT|

WS_BORDER,310,60,100,20,hwnd,(HMENU)13,((LPCREATESTRUCT)lParam)->hInstance,NULL);
			 EnableWindow(hCusName,FALSE);

			HWND hDiscount=CreateWindow(TEXT("ComboBox"),TEXT(""), WS_CHILD | 

WS_VISIBLE | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS|CBS_AUTOHSCROLL| 

WS_BORDER,480,60,100,80,hwnd,(HMENU)14,((LPCREATESTRUCT)lParam)->hInstance,NULL);
		 
			HWND hBeiZhu=CreateWindow(TEXT("edit"),NULL, WS_CHILD | WS_VISIBLE  

|WS_BORDER | ES_LEFT | ES_MULTILINE |ES_AUTOHSCROLL | ES_AUTOVSCROLL|

WS_BORDER,650,60,400,25,hwnd,(HMENU)15,((LPCREATESTRUCT)lParam)->hInstance,NULL);
			 
			 
			//初始化备注
			SetWindowText(hBeiZhu,L"请输入该签单用户的详细情况,以便跟踪该

单。");
			//隐藏窗口
			ShowWindow(GetDlgItem(hwnd,12),SW_HIDE);
			ShowWindow(GetDlgItem(hwnd,13),SW_HIDE);
			ShowWindow(GetDlgItem(hwnd,14),SW_HIDE);
			ShowWindow(GetDlgItem(hwnd,15),SW_HIDE);

			//初始化付款方式
			DWORD dwIndex;
			dwIndex=SendDlgItemMessage(hwnd,12,CB_ADDSTRING,NULL,(LPARAM)L"现金

");
			SendDlgItemMessage(hwnd,12,CB_ADDSTRING,NULL,(LPARAM)L"签单");
			SendDlgItemMessage(hwnd,12,CB_ADDSTRING,NULL,(LPARAM)L"信用卡");
			//初始化客户名
			
			//初始化打折
			DWORD dwIndex2;
			SendDlgItemMessage(hwnd,14,CB_ADDSTRING,NULL,(LPARAM)L"五折");
			SendDlgItemMessage(hwnd,14,CB_ADDSTRING,NULL,(LPARAM)L"六折");
			SendDlgItemMessage(hwnd,14,CB_ADDSTRING,NULL,(LPARAM)L"七折");
			SendDlgItemMessage(hwnd,14,CB_ADDSTRING,NULL,(LPARAM)L"八折");
			SendDlgItemMessage(hwnd,14,CB_ADDSTRING,NULL,(LPARAM)L"九折");
			dwIndex2=SendDlgItemMessage(hwnd,14,CB_ADDSTRING,NULL,(LPARAM)L"不

打折");

			//设置默认项
			SendMessage(hFuKuanWay, CB_SETCURSEL, dwIndex, 0); 
			SendMessage(hDiscount, CB_SETCURSEL, dwIndex2, 0); 
			//创建复选框
			HWND hBtn1;

			hBtn1 =CreateWindow(L"BUTTON",

				TEXT("高级"),

				WS_TABSTOP |WS_VISIBLE |WS_CHILD |BS_AUTOCHECKBOX|BS_FLAT|

WS_BORDER,

				600,30,60,20,

				hwnd,

				(HMENU)6,

				((LPCREATESTRUCT)lParam)->hInstance,

				NULL);

			ShowWindow(hBtn1,TRUE);
			UpdateWindow(hBtn1);
			
			//创建收银按钮
			HWND hButton=CreateWindow(L"BUTTON",

				TEXT("确认收银"),

				WS_VISIBLE |WS_CHILD | BS_DEFPUSHBUTTON|BS_BITMAP|

WS_BORDER,

				700,30,80,30,

				hwnd,

				(HMENU)7,

				((LPCREATESTRUCT)lParam)->hInstance,

				NULL);
			ShowWindow(hButton,TRUE);
			UpdateWindow(hButton);
			HBITMAP hbmp=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP13));  
			SendMessage(hButton, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hbmp);
			//创建音乐按钮
			HWND hButtonMusic=CreateWindow(L"BUTTON",

				TEXT("开启音乐"),

				WS_TABSTOP |WS_VISIBLE |WS_CHILD | BS_DEFPUSHBUTTON|

BS_FLAT|WS_BORDER,

				1250,0,70,30,

				hwnd,

				(HMENU)10,

				((LPCREATESTRUCT)lParam)->hInstance,

				NULL);
			ShowWindow(hButtonMusic,TRUE);
			UpdateWindow(hButtonMusic);

			 
			 
			break;
		}
	 
	case WM_CLOSE:
		{
			DestroyWindow(hwnd);
			break;
		}
	case WM_SIZE:
		{
			break;
		}
	default: 
		return DefWindowProc(hwnd,message,wParam,lParam);
	}
	return 0;
}
////属性页函数
//int DoPropertySheet(HWND hwndOwner) 
//{ 
//
//	HINSTANCE hInst=(HINSTANCE)GetWindowLong(hwndOwner,GWL_HINSTANCE);
//	PROPSHEETPAGE psp[2];
//	PROPSHEETHEADER psh;
//	psp[0].dwSize = sizeof(PROPSHEETPAGE);
//	psp[0].dwFlags = PSP_USEICONID | PSP_USETITLE;
//	psp[0].hInstance = hInst;
//	psp[0].pszTemplate = MAKEINTRESOURCE(IDD_PROPERTY1);
//	psp[0].pszIcon = MAKEINTRESOURCE(IDI_MY);
//	psp[0].pfnDlgProc =ProDlg1;
//	psp[0].pszTitle = TEXT("1");
//	psp[0].lParam = 0;
//	psp[0].pfnCallback = NULL;
//
//	psp[1].dwSize = sizeof(PROPSHEETPAGE);
//	psp[1].dwFlags = PSP_USEICONID | PSP_USETITLE;
//	psp[1].hInstance = hInst;
//	psp[1].pszTemplate =MAKEINTRESOURCE(IDD_PROPERTY2);
//	psp[1].pszIcon = MAKEINTRESOURCE(IDI_MY);
//	psp[1].pfnDlgProc =ProDlg2;
//	psp[1].pszTitle = TEXT("2");
//	psp[1].lParam = 0;
//	psp[1].pfnCallback =NULL;
//
//	psh.dwSize = sizeof(PROPSHEETHEADER);
//	psh.dwFlags = PSH_USEICONID | PSH_PROPSHEETPAGE|PSH_USEPSTARTPAGE;
//	psh.hwndParent = hwndOwner;
//	psh.hInstance = hInst;
//	psh.pszIcon =MAKEINTRESOURCE(IDI_MY);
//	psh.pszCaption = (LPCWSTR) L"Cell Properties";
//	psh.nPages = sizeof(psp) /sizeof(PROPSHEETPAGE);
//	psh.nStartPage = 0;
//	psh.ppsp = (LPCPROPSHEETPAGE) &psp;
//	psh.pfnCallback = NULL;
//
//	PropertySheet(&psh);
//	return 0;
//
//}
////属性页对话框
//INT_PTR CALLBACK ProDlg1(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
//{
//	UNREFERENCED_PARAMETER(lParam);
//	switch(message)
//	{
//	case WM_INITDIALOG:
//		{
//			return INT_PTR(TRUE);
//		}
//	case WM_COMMAND:
//		{
//			if (LOWORD(wParam)==IDCANCEL ||LOWORD(wParam)==IDOK)
//			{
//				EndDialog(hDlg,LOWORD(wParam));
//				return INT_PTR(TRUE);
//			}
//			break;
//		}
//	default: 
//		break;
//	}
//	return INT_PTR(FALSE);
//}
//INT_PTR CALLBACK ProDlg2(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
//{
//	UNREFERENCED_PARAMETER(lParam);
//	switch(message)
//	{
//	case WM_INITDIALOG:
//		{
//			return INT_PTR(TRUE);
//		}
//	case WM_COMMAND:
//		{
//			if (LOWORD(wParam)==IDCANCEL ||LOWORD(wParam)==IDOK)
//			{
//				EndDialog(hDlg,LOWORD(wParam));
//				return INT_PTR(TRUE);
//			}
//			break;
//		}
//	default: 
//		break;
//	}
//	return INT_PTR(FALSE);
//}
void GetMenuFromDatabase(HWND hwnd,WPARAM wParam)
{
	 
	

		SQLHENV henv = NULL;
		SQLHDBC hdbc = NULL;
		SQLHSTMT hstmt = NULL;
		SQLRETURN result;
		SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
		SQLWCHAR ConnStrOut[MAXBUFLEN];
		//分配环境句柄
		result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
			&henv);
		//设置管理环境属性
		result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
		//分配连接句柄
		result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
		//设置连接属性
		result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
			(void*)LOGIN_TIMEOUT, 0);
		//连接数据库
		result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
		if(SQL_ERROR==result)
		{
			ShowDBConnError(hwnd,hdbc);

		}

		//初始化语句句柄
		result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

		result = SQLPrepare(hstmt,(SQLWCHAR*)L"select Name from menu",SQL_NTS);

		CHECKDBSTMTERROR(hwnd,result,hstmt);
		result =SQLExecute(hstmt);
		CHECKDBSTMTERROR(hwnd,result,hstmt);

		SQLINTEGER cbsatid=SQL_NTS;
		 
		 HWND hListBox=GetDlgItem(hwnd,11);//获取列表框的窗口句柄
	 
		 SendMessage(hListBox,LB_RESETCONTENT,0,0);//更新之前清空列表
		 while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
		 {


			 SQLWCHAR menuname[30];
			 SQLGetData(hstmt,1,SQL_C_WCHAR,menuname,30,&cbsatid);
 
		    SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM)menuname);
		 
			
 
		 }	  
	 
		SQLFreeStmt(hstmt,SQL_CLOSE);
		SQLDisconnect(hdbc);
		SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
		SQLFreeHandle(SQL_HANDLE_ENV,henv);
}
//全局变量
SQLBIGINT MenuID;
SQLWCHAR MenuName[30];
SQLWCHAR MenuPriceBig[30]; 
SQLWCHAR MenuPriceSmall[30]; 
SQLWCHAR MenuUnits[30];
SQLWCHAR MenuCosts[30]; 
SQLWCHAR MenuFeature[30];
SQLWCHAR MenuState[30];
SQLWCHAR MenuDiscount[30]; 
//响应鼠标在菜谱列表框的双击事件,在此函数中弹出对应菜肴的属性,增删改查数据库
void GetAttributeAboutMenuWhenDBCLK(HWND hwnd,WPARAM wParam,LPARAM lParam,TCHAR szStr[])
{
	//初始化全局变量
	ZeroMemory(&MenuID,sizeof(MenuID)/sizeof(SQLBIGINT));
	ZeroMemory(MenuName,sizeof(MenuName)/sizeof(SQLWCHAR));
	ZeroMemory(MenuPriceBig,sizeof(MenuPriceBig)/sizeof(SQLWCHAR));
	ZeroMemory(MenuPriceSmall,sizeof(MenuPriceSmall)/sizeof(SQLWCHAR));
	ZeroMemory(MenuUnits,sizeof(MenuUnits)/sizeof(SQLWCHAR));
	ZeroMemory(MenuCosts,sizeof(MenuCosts)/sizeof(SQLWCHAR));
	ZeroMemory(MenuFeature,sizeof(MenuFeature)/sizeof(SQLWCHAR));
	ZeroMemory(MenuState,sizeof(MenuState)/sizeof(SQLWCHAR));
	ZeroMemory(MenuDiscount,sizeof(MenuDiscount)/sizeof(SQLWCHAR));

	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

	//执行sql语句查询menu表中的所有段
	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select 

ID,Name,PriceBig,PriceSmall,Units,Costs,Feature,State,Discount from menu",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;

	
	//执行数据匹配
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{

		
		SQLGetData(hstmt,1,SQL_C_UBIGINT,&MenuID,30,&cbsatid);
		//获取菜肴名称
		
		SQLGetData(hstmt,2,SQL_C_WCHAR,MenuName,30,&cbsatid);
		//获取大份价格
		
		SQLGetData(hstmt,3,SQL_C_WCHAR,MenuPriceBig,30,&cbsatid);
		//获取小份价格
		
		SQLGetData(hstmt,4,SQL_C_WCHAR,MenuPriceSmall,30,&cbsatid);
		//获取菜肴价格单位
		
		SQLGetData(hstmt,5,SQL_C_WCHAR,MenuUnits,30,&cbsatid);
		//获取菜肴本钱
		
		SQLGetData(hstmt,6,SQL_C_WCHAR,MenuCosts,30,&cbsatid);
		//获取菜肴特色
		
		SQLGetData(hstmt,7,SQL_C_WCHAR,MenuFeature,30,&cbsatid);
		//获取菜肴当前状态
	
		SQLGetData(hstmt,8,SQL_C_WCHAR,MenuState,30,&cbsatid);
		//获取菜肴打折情况
		
		SQLGetData(hstmt,9,SQL_C_WCHAR,MenuDiscount,30,&cbsatid);

		if (lstrcmpW(MenuName,szStr)==0)//执行匹配
		{
			//在此处执行弹出所选菜肴的属性对话框
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
			
			/*WCHAR str[20];
			wsprintf(str,L"%d",MenuPriceBig);
			MessageBox(NULL,str,NULL,MB_OK);*/
			DialogBox(hInst,MAKEINTRESOURCE

(IDD_MENUINFO),hwnd,GetMenuInfoProc);
			break;

		}

	
	}
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);
}
void OnCommandInGetMenuInfoProc(HWND hwnd,WPARAM wParam);
INT_PTR CALLBACK GetMenuInfoProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)//获

取数据中菜肴信息对话框
{
	UNREFERENCED_PARAMETER(lParam);
	switch(message)
	{
	case WM_CTLCOLORBTN ://设置按钮的颜色
		{
			if ((HWND)lParam == GetDlgItem(hDlg, IDC_BUTTON1)  ||(HWND)lParam 

== GetDlgItem(hDlg, IDC_BUTTON4)|| (HWND)lParam == GetDlgItem(hDlg, IDC_BUTTONEXIT)|| 

(HWND)lParam == GetDlgItem(hDlg, IDC_BUTTONDELETE))
			{
				HWND hbn = (HWND)lParam;
				HDC hdc = (HDC)wParam;
				RECT rc;
				TCHAR text[64];

				GetWindowText(hbn, text, 63);
				GetClientRect(hbn, &rc);
				SetTextColor(hdc, RGB(255, 255, 255));//设置按钮上文本的颜

色
				SetBkMode(hdc, TRANSPARENT);
				DrawText(hdc, text, _tcslen(text), &rc, DT_CENTER | 

DT_VCENTER | DT_SINGLELINE);

				return (INT_PTR)CreateSolidBrush(RGB(127,0,255));//返回画刷

设置按钮的背景色
			}
			break;
		}
	case WM_CTLCOLORSTATIC://设置静态文本框字体颜色
		{
			if (GetDlgItem(hDlg, IDC_STATIC11) == (HWND)lParam)//这里的1是静态

文本框的ID
			{
				SetTextColor((HDC)wParam, RGB(255,0,255));
				SetBkMode((HDC)wParam, TRANSPARENT);
				//return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_BTNFACE));
				return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}
			if (GetDlgItem(hDlg, IDC_STATICSETTEXT) == (HWND)lParam)//这里的1是

静态文本框的ID
			{
				SetTextColor((HDC)wParam, RGB(0,0,255));
				SetBkMode((HDC)wParam, TRANSPARENT);
				//return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_BTNFACE));
				return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}
			if (GetDlgItem(hDlg, IDC_STATICGETSUCCESSINFO) == (HWND)lParam)//这

里的1是静态文本框的ID
			{
				SetTextColor((HDC)wParam, RGB(255,0,0));
				SetBkMode((HDC)wParam, TRANSPARENT);
				//return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_BTNFACE));
				return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}

			if (GetDlgItem(hDlg, IDC_STATICDELETESUCCESS) == (HWND)lParam)//这

里的1是静态文本框的ID
			{
				SetTextColor((HDC)wParam, RGB(89,56,23));
				SetBkMode((HDC)wParam, TRANSPARENT);
				//return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_BTNFACE));
				return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}
			 
			break;

		}

	case WM_INITDIALOG:
		{
			// //动画设置IDC_ANIMATE1
			//HWND hAnimate=GetDlgItem(hDlg,IDC_ANIMATE1);//动画控件ID,获取动

画控件句柄

			//if (Animate_Open(hAnimate,L"欢迎.avi") == 0)

			//{

			//	MessageBox(hDlg,_T("文件打开失败"),_T("错误"),MB_OK);

			//}
			//Animate_Play(hAnimate,0,-1,-1);


			//设置对话框图标
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			SendMessage(hDlg, WM_SETICON, ICON_BIG, (LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON4))); 
			//设置按钮的属性为可自绘
			HWND hBn1 = GetDlgItem(hDlg, IDC_BUTTON1);
			SetWindowLong(hBn1, GWL_STYLE, GetWindowLong(hBn1, GWL_STYLE) | 

BS_OWNERDRAW);

			HWND hBn2 = GetDlgItem(hDlg, IDC_BUTTONEXIT);
			SetWindowLong(hBn2, GWL_STYLE, GetWindowLong(hBn2, GWL_STYLE) | 

BS_OWNERDRAW);
			 
			HWND hBn4 = GetDlgItem(hDlg, IDC_BUTTON4);
			SetWindowLong(hBn4, GWL_STYLE, GetWindowLong(hBn4, GWL_STYLE) | 

BS_OWNERDRAW);

			HWND hBn5 = GetDlgItem(hDlg, IDC_BUTTONDELETE);
			SetWindowLong(hBn5, GWL_STYLE, GetWindowLong(hBn5, GWL_STYLE) | 

BS_OWNERDRAW);
			//禁用所有编辑框
			 EnableWindow(GetDlgItem(hDlg,IDC_EDIT1),FALSE);
			 EnableWindow(GetDlgItem(hDlg,IDC_EDIT2),FALSE);
			 EnableWindow(GetDlgItem(hDlg,IDC_EDIT3),FALSE);
			 EnableWindow(GetDlgItem(hDlg,IDC_EDIT4),FALSE);
			 EnableWindow(GetDlgItem(hDlg,IDC_EDIT5),FALSE);
			 EnableWindow(GetDlgItem(hDlg,IDC_EDIT6),FALSE);
			 EnableWindow(GetDlgItem(hDlg,IDC_EDIT7),FALSE);
			 EnableWindow(GetDlgItem(hDlg,IDC_EDIT8),FALSE);

			//设置ID
			WCHAR id[20];
			ZeroMemory(id,sizeof(id)/sizeof(WCHAR));
			wsprintf(id,L"%d",MenuID);
			SetDlgItemText(hDlg,IDC_EDIT1,id);
			//设置name
			SetDlgItemText(hDlg,IDC_EDIT2,MenuName);
			//设置大份价格
			 
			SetDlgItemText(hDlg,IDC_EDIT3,MenuPriceBig);
			//设置小份价格
			 
			SetDlgItemText(hDlg,IDC_EDIT4,MenuPriceSmall);
			//设置成本
			 
			SetDlgItemText(hDlg,IDC_EDIT5,MenuCosts);
			//设置状态
			SetDlgItemText(hDlg,IDC_EDIT6,MenuState);
			//设置特征
			SetDlgItemText(hDlg,IDC_EDIT7,MenuFeature);
			//设置打折
			 
			SetDlgItemText(hDlg,IDC_EDIT8,MenuDiscount);

			return (INT_PTR)TRUE;
		}
	case WM_COMMAND:
		{
			if (LOWORD(wParam)==IDCANCEL ||LOWORD(wParam)==IDOK)
			{
				EndDialog(hDlg,LOWORD(wParam));

				break;
			}
			OnCommandInGetMenuInfoProc(hDlg,wParam);
			break;
		}
	default:
		break;
		
	}
	return INT_PTR(FALSE);
}
//在OnCommandInGetMenuInfoProc过程里响应数据库更新和匹配
void AccessDatabaseForUpdateData(HWND hwnd,WPARAM wParam,int ID,WCHAR szName[],WCHAR 

szPriceBig[],WCHAR szPriceSmall[],WCHAR szCosts[],WCHAR szState[],WCHAR szFeature[],WCHAR 

szDiscount[]);
//删除菜肴的函数声明
void DeleteAllInfoAboutThisMenu(HWND hwnd,WPARAM wParam,int ID);
//菜谱信息command消息的响应函数过程

void OnCommandInGetMenuInfoProc(HWND hwnd,WPARAM wParam)
{
	switch(LOWORD(wParam))
	{
	case IDC_BUTTON1://保存修改
		{
			
			//禁用编辑框按钮
			//MessageBox(hwnd,TEXT("保存修改"),NULL,MB_OK);
			EnableWindow(GetDlgItem(hwnd,IDC_EDIT1),FALSE);
			EnableWindow(GetDlgItem(hwnd,IDC_EDIT2),FALSE);
			EnableWindow(GetDlgItem(hwnd,IDC_EDIT3),FALSE);
			EnableWindow(GetDlgItem(hwnd,IDC_EDIT4),FALSE);
			EnableWindow(GetDlgItem(hwnd,IDC_EDIT5),FALSE);
			EnableWindow(GetDlgItem(hwnd,IDC_EDIT6),FALSE);
			EnableWindow(GetDlgItem(hwnd,IDC_EDIT7),FALSE);
			EnableWindow(GetDlgItem(hwnd,IDC_EDIT8),FALSE);
			
			//执行数据存储,访问数据库,update数据
			//现获取对话框的编辑框的内容
			WCHAR szName[256];
			GetDlgItemText(hwnd,IDC_EDIT2,szName,sizeof(szName)/sizeof

(WCHAR));//获取菜肴名称
			WCHAR szBigPrice[256];
			GetDlgItemText(hwnd,IDC_EDIT3,szBigPrice,sizeof(szBigPrice)/sizeof

(WCHAR));//获取大份价格
			WCHAR szSmallPrice[256];
			GetDlgItemText(hwnd,IDC_EDIT4,szSmallPrice,sizeof

(szSmallPrice)/sizeof(WCHAR));//获取小份价格
			WCHAR szCosts[256];
			GetDlgItemText(hwnd,IDC_EDIT5,szCosts,sizeof(szCosts)/sizeof

(WCHAR));//获取成本
			WCHAR szState[256];
			GetDlgItemText(hwnd,IDC_EDIT6,szState,sizeof(szState)/sizeof

(WCHAR));//获取状态,是否有货
			WCHAR szFeature[256];
			GetDlgItemText(hwnd,IDC_EDIT7,szFeature,sizeof(szFeature)/sizeof

(WCHAR));//获取特征
			WCHAR szDiscount[256];
			GetDlgItemText(hwnd,IDC_EDIT8,szDiscount,sizeof(szDiscount)/sizeof

(WCHAR));//获取打折信息

			
			//获取信息后执行对应数据库段信息修改
			//先要获取ID框ID,以ID为对应段进行数据库匹配
			WCHAR szID[256];
			GetDlgItemText(hwnd,IDC_EDIT1,szID,sizeof(szID)/sizeof(WCHAR));
			//因为数据库中的ID项是int类型,必须将wchar类型转换为int,在这里执行

转换
			int MenuID;
			MenuID=_wtoi(szID);
			 
			//好吧,一切工作都搞定,现在访问数据库
			 AccessDatabaseForUpdateData

(hwnd,wParam,MenuID,szName,szBigPrice,szSmallPrice,szCosts,szState,szFeature,szDiscount);
			


			

			break;
		}
	 
	case IDC_BUTTON4://修改
		{
			//MessageBox(hwnd,TEXT("修改"),NULL,MB_OK);
			//当用户点击修改按钮时启用所有编辑框,除ID框之外,用户可以在编辑框

内修改数值
			EnableWindow(GetDlgItem(hwnd,IDC_EDIT2),TRUE);
			EnableWindow(GetDlgItem(hwnd,IDC_EDIT3),TRUE);
			EnableWindow(GetDlgItem(hwnd,IDC_EDIT4),TRUE);
			EnableWindow(GetDlgItem(hwnd,IDC_EDIT5),TRUE);
			EnableWindow(GetDlgItem(hwnd,IDC_EDIT6),TRUE);
			EnableWindow(GetDlgItem(hwnd,IDC_EDIT7),TRUE);
			EnableWindow(GetDlgItem(hwnd,IDC_EDIT8),TRUE);

			SetDlgItemText(hwnd,IDC_STATICSETTEXT,TEXT("修改指令已经提交完成,

您可以在左侧的编辑框内执行修改"));

			break;
		}
	case IDC_BUTTONEXIT://退出对话框
		{
			EndDialog(hwnd,LOWORD(wParam));
			break;
		}
	case  IDC_BUTTONDELETE://在数据库中删除此菜肴项的一切信息
		{
			//删除指定项的菜肴,必须根据其ID来与数据库进行匹配,所以要获取编辑

框中的ID号
			//获取编辑框中菜肴的ID号
			WCHAR szID[256];
			GetDlgItemText(hwnd,IDC_EDIT1,szID,sizeof(szID)/sizeof(WCHAR));
			//因为数据库中的ID项是int类型,必须将wchar类型转换为int,在这里执行

转换
			int MenuID;
			MenuID=_wtoi(szID);
			//好了一切搞定,进行数据库访问
			DeleteAllInfoAboutThisMenu(hwnd,wParam,MenuID);
			break;
		}
	default:
		break;
	}
}
//访问数据库的定义
void AccessDatabaseForUpdateData(HWND hwnd,WPARAM wParam,int ID,WCHAR szName[],WCHAR 

szPriceBig[],WCHAR szPriceSmall[],WCHAR szCosts[],WCHAR szState[],WCHAR szFeature[],WCHAR 

szDiscount[])
{
	 
	//访问数据库
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select ID from menu",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;

	 

	 
	SQLBIGINT IdInDataBase;
	 ZeroMemory(&IdInDataBase,sizeof(IdInDataBase)/sizeof(SQLBIGINT));
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{
		 

		SQLGetData(hstmt,1,SQL_C_UBIGINT,&IdInDataBase,30,&cbsatid);
		
		if (ID==IdInDataBase)//尝试执行匹配
		{
			//匹配成功后进行数据库更细

			 
			SQLWCHAR sql[256];
			
			wsprintf(sql,TEXT("update menu set 

Name='%s',PriceBig='%s',PriceSmall='%s',Costs='%s',Feature='%s',State='%s',Discount='%s' 

where 

ID='%d'"),szName,szPriceBig,szPriceSmall,szCosts,szFeature,szState,szDiscount,IdInDataBase)

;
			SQLHENV henv = NULL;
			SQLHDBC hdbc = NULL;
			SQLHSTMT hstmt = NULL;
			SQLRETURN result;
			SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 

Driver};SERVER={127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
			SQLWCHAR ConnStrOut[MAXBUFLEN];
			//分配环境句柄
			result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
				&henv);
			//设置管理环境属性
			result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)

SQL_OV_ODBC3, 0);
			//分配连接句柄
			result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
			//设置连接属性
			result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
				(void*)LOGIN_TIMEOUT, 0);
			//连接数据库
			result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
			if(SQL_ERROR==result)
			{
				ShowDBConnError(hwnd,hdbc);

			}

			//初始化语句句柄
			result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

			result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

			CHECKDBSTMTERROR(hwnd,result,hstmt);
			result =SQLExecute(hstmt);
			CHECKDBSTMTERROR(hwnd,result,hstmt);

			SQLINTEGER cbsatid=SQL_NTS;

			SQLFreeStmt(hstmt,SQL_CLOSE);
			SQLDisconnect(hdbc);
			SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
			SQLFreeHandle(SQL_HANDLE_ENV,henv);
			//修改成功//刷新编辑框内的内容
			//显示执行修改成功的信息在静态框内

			MessageBeep(0);
			SetDlgItemText(hwnd,IDC_STATICGETSUCCESSINFO,TEXT("修改执行成功!点

击“exit“按钮退出菜肴信息对话框"));
			break;
		}
		 

		 
	}


	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);
	 
}

//删除菜肴信息的函数定义
void DeleteAllInfoAboutThisMenu(HWND hwnd,WPARAM wParam,int ID)
{
	//数据库访问
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 Driver};SERVER=

{127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);

	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

	//执行sql语句,取出ID
	result = SQLPrepare(hstmt,(SQLWCHAR*)L"select ID from menu",SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);

	SQLINTEGER cbsatid=SQL_NTS;
	//关键部分就在这里了,执行数据匹配后的删除
	SQLBIGINT IdInDataBase;
	ZeroMemory(&IdInDataBase,sizeof(IdInDataBase)/sizeof(SQLBIGINT));
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{


		SQLGetData(hstmt,1,SQL_C_UBIGINT,&IdInDataBase,30,&cbsatid);

		if (ID==IdInDataBase)//尝试执行匹配
		{
			//好了,匹配成功,就要执行数据删除了
			SQLWCHAR sql[256];
			//执行sql语句,删除ID指定项
			wsprintf(sql,TEXT("delete from menu where ID='%d'"),IdInDataBase);
			SQLHENV henv = NULL;
			SQLHDBC hdbc = NULL;
			SQLHSTMT hstmt = NULL;
			SQLRETURN result;
			SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 

Driver};SERVER={127.0.0.1};UID=root;PWD=root;DATABASE=management;CharSet=GBK;";
			SQLWCHAR ConnStrOut[MAXBUFLEN];
			//分配环境句柄
			result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,&henv);
			//设置管理环境属性
			result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)

SQL_OV_ODBC3, 0);
			//分配连接句柄
			result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
			//设置连接属性
			result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
				(void*)LOGIN_TIMEOUT, 0);
			//连接数据库
			result = SQLDriverConnect

(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
			if(SQL_ERROR==result)
			{
				ShowDBConnError(hwnd,hdbc);

			}

			//初始化语句句柄
			result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

			result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

			CHECKDBSTMTERROR(hwnd,result,hstmt);
			result =SQLExecute(hstmt);
			CHECKDBSTMTERROR(hwnd,result,hstmt);

			SQLINTEGER cbsatid=SQL_NTS;

			SQLFreeStmt(hstmt,SQL_CLOSE);
			SQLDisconnect(hdbc);
			SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
			SQLFreeHandle(SQL_HANDLE_ENV,henv);

			//执行静态信息框信息提示成功
			 
			SetDlgItemText(hwnd,IDC_STATICDELETESUCCESS,TEXT("删除执行成功!库

存已经清理该数据项!"));
			break;
		}
	}

	//释放ODBC接口资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);

}


void AddItemForMenuOnCommand(HWND hwnd,WPARAM wParam)//增加菜肴函数定义
{

	//先获取编辑框中的数据
	//获取菜肴名称
	WCHAR szMenuName[256];
	GetDlgItemText(hwnd,IDC_EDIT1,szMenuName,sizeof(szMenuName)/sizeof(WCHAR));
	//获取菜肴大份价格
	WCHAR szBigPrice[256];
	GetDlgItemText(hwnd,IDC_EDIT2,szBigPrice,sizeof(szBigPrice)/sizeof(WCHAR));
	//获取菜肴小份价格
	WCHAR szSmallPrice[256];
	GetDlgItemText(hwnd,IDC_EDIT3,szSmallPrice,sizeof(szSmallPrice)/sizeof(WCHAR));
	//获取菜肴成本
	WCHAR szCosts[256];
	GetDlgItemText(hwnd,IDC_EDIT4,szCosts,sizeof(szCosts)/sizeof(WCHAR));
	//获取菜肴状态
	WCHAR szState[256];
	GetDlgItemText(hwnd,IDC_EDIT5,szState,sizeof(szState)/sizeof(WCHAR));
	//获取菜肴的特征
	WCHAR szFeature[256];
	GetDlgItemText(hwnd,IDC_EDIT6,szFeature,sizeof(szFeature)/sizeof(WCHAR));
	//获取菜肴打折情况
	WCHAR szDiscount[256];
	GetDlgItemText(hwnd,IDC_EDIT7,szDiscount,sizeof(szDiscount)/sizeof(WCHAR));

	//在访问数据 库之前判断数据项是否为空,为空就不执行插入


	if (*szMenuName==NULL || *szBigPrice==NULL ||*szSmallPrice==NULL || *szCosts==NULL 

|| *szState==NULL|| *szDiscount==NULL)
	{
		MessageBox(hwnd,TEXT("指定信息必须填写"),TEXT("错误"),MB_OK|MB_ICONERROR);
		return;
	}
	 
	//再继续判断是否与数据库中的数据有重复部分,访问数据库先
	
		SQLHENV henv1 = NULL;
		SQLHDBC hdbc1 = NULL;
		SQLHSTMT hstmt1 = NULL;
		SQLRETURN result1;
		SQLWCHAR ConnStrIn1[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 

Driver};SERVER=127.0.0.1;UID=root;PWD=root;DATABASE=management;CharSet=gb2312;";
		SQLWCHAR ConnStrOut1[MAXBUFLEN];
		//分配环境句柄
		result1 = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
			&henv1);
		//设置管理环境属性
		result1 = SQLSetEnvAttr(henv1, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 

0);
		//分配连接句柄
		result1 = SQLAllocHandle(SQL_HANDLE_DBC, henv1, &hdbc1);
		//设置连接属性
		result1 = SQLSetConnectAttr(hdbc1, SQL_LOGIN_TIMEOUT,
			(void*)LOGIN_TIMEOUT, 0);
		//连接数据库
		result1 = SQLDriverConnect

(hdbc1,NULL,ConnStrIn1,SQL_NTS,ConnStrOut1,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
		if(SQL_ERROR==result1)
		{
			ShowDBConnError(hwnd,hdbc1);
			return;
		}

		//初始化语句句柄
		result1 = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1);

		result1 = SQLPrepare(hstmt1,(SQLWCHAR*)L"select ID,Name from 

menu",SQL_NTS);

		CHECKDBSTMTERROR(hwnd,result1,hstmt1);

		result1=SQLExecute(hstmt1);

		CHECKDBSTMTERROR(hwnd,result1,hstmt1);

		bool lbTest=FALSE;
		SQLINTEGER cbsatid1=SQL_NTS;
		while (SQLFetch(hstmt1)!=SQL_NO_DATA_FOUND)
		{
			SQLWCHAR menuname[30];

			SQLGetData(hstmt1,2,SQL_C_WCHAR,menuname,30,&cbsatid1);
			if (lstrcmpW(szMenuName,menuname)==0)
			{
				

				
				lbTest=TRUE;
				break;
			}
		}
		if (lbTest==TRUE)
		{
			//释放资源
			SQLFreeStmt(hstmt1,SQL_CLOSE);
			SQLDisconnect(hdbc1);
			SQLFreeHandle(SQL_HANDLE_DBC,hdbc1);
			SQLFreeHandle(SQL_HANDLE_ENV,henv1);
			MessageBox(hwnd,L"仓库中已经存有该菜肴!",L"错误",MB_OK|

MB_ICONERROR);
			return;
		}
		else
		{
			//释放资源
			SQLFreeStmt(hstmt1,SQL_CLOSE);
			SQLDisconnect(hdbc1);
			SQLFreeHandle(SQL_HANDLE_DBC,hdbc1);
			SQLFreeHandle(SQL_HANDLE_ENV,henv1);

		}
		

	



	//好了一切准备就绪,现在向数据库menu表中插入数据
	//访问数据库增加菜肴
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLWCHAR ConnStrIn[MAXBUFLEN] = L"DRIVER={MySQL ODBC 5.1 

Driver};SERVER=127.0.0.1;UID=root;PWD=root;DATABASE=management;CharSet=gb2312;";
	SQLWCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,
		&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
		(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,

(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);
		return;
	}

	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);


	 

	SQLWCHAR sql[256];
	wsprintf(sql,TEXT("insert into menu

(Name,PriceBig,PriceSmall,Costs,Feature,State,Discount) values

('%s','%s','%s','%s','%s','%s','%s')"),szMenuName,szBigPrice,szSmallPrice,szCosts,szFeature

,szState,szDiscount);
	 
	result = SQLPrepare(hstmt,(SQLWCHAR*)sql,SQL_NTS);

	CHECKDBSTMTERROR(hwnd,result,hstmt);

	result =SQLExecute(hstmt);

	CHECKDBSTMTERROR(hwnd,result,hstmt);
	//执行插入数据成功后要在静态文本框中显示成功信息

	SetDlgItemText(hwnd,IDC_STATIC1,TEXT("增加菜肴执行成功"));
	//将编辑框全部禁用
	EnableWindow(GetDlgItem(hwnd,IDC_EDIT1),FALSE);
	EnableWindow(GetDlgItem(hwnd,IDC_EDIT2),FALSE);
	EnableWindow(GetDlgItem(hwnd,IDC_EDIT3),FALSE);
	EnableWindow(GetDlgItem(hwnd,IDC_EDIT4),FALSE);
	EnableWindow(GetDlgItem(hwnd,IDC_EDIT5),FALSE);
	EnableWindow(GetDlgItem(hwnd,IDC_EDIT6),FALSE);
	EnableWindow(GetDlgItem(hwnd,IDC_EDIT7),FALSE);
	//释放资源
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);
}
 //增加菜肴对话框
INT_PTR CALLBACK AddItemToMenu(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)//增加

菜肴
{
	UNREFERENCED_PARAMETER(lParam);
	switch(message)
	{
	case WM_CTLCOLORSTATIC://设置静态文本框字体颜色
		{
			if (GetDlgItem(hDlg, IDC_STATIC1) == (HWND)lParam)//这里的1是静态文

本框的ID
			{
				SetTextColor((HDC)wParam, RGB(255,0,255));
				SetBkMode((HDC)wParam, TRANSPARENT);
				//return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_BTNFACE));
				return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}
			if (GetDlgItem(hDlg, IDC_STATIC2) == (HWND)lParam)//这里的1是静态文

本框的ID
			{
				SetTextColor((HDC)wParam, RGB(0,0,255));
				SetBkMode((HDC)wParam, TRANSPARENT);
				//return (LRESULT)CreateSolidBrush(GetSysColor

(COLOR_BTNFACE));
				return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
			}
			break;

		}

	case WM_INITDIALOG:
		{
			//设置按钮的属性为可自绘
			HWND hBn1 = GetDlgItem(hDlg, IDC_BUTTON1);
			SetWindowLong(hBn1, GWL_STYLE, GetWindowLong(hBn1, GWL_STYLE) | 

BS_OWNERDRAW);

			HWND hBn2 = GetDlgItem(hDlg, IDC_BUTTON2);
			SetWindowLong(hBn2, GWL_STYLE, GetWindowLong(hBn2, GWL_STYLE) | 

BS_OWNERDRAW);

			HWND hBn3 = GetDlgItem(hDlg, IDC_BUTTON3);
			SetWindowLong(hBn3, GWL_STYLE, GetWindowLong(hBn3, GWL_STYLE) | 

BS_OWNERDRAW);
			//设置对话框图标
			HINSTANCE hInst=(HINSTANCE)GetWindowLong(hDlg,GWL_HINSTANCE);
			SendMessage(hDlg, WM_SETICON, ICON_BIG, (LPARAM)LoadIcon(hInst, 

MAKEINTRESOURCE(IDI_ICON5))); 
			return (INT_PTR)TRUE;
		}
	case WM_CTLCOLORBTN ://设置按钮的颜色
		{
			if ((HWND)lParam == GetDlgItem(hDlg, IDC_BUTTON1)|| (HWND)lParam == 

GetDlgItem(hDlg, IDC_BUTTON2)||(HWND)lParam == GetDlgItem(hDlg, IDC_BUTTON3))
			{
				HWND hbn = (HWND)lParam;
				HDC hdc = (HDC)wParam;
				RECT rc;
				TCHAR text[64];

				GetWindowText(hbn, text, 63);
				GetClientRect(hbn, &rc);
				SetTextColor(hdc, RGB(255, 255, 255));//设置按钮上文本的颜

色
				SetBkMode(hdc, TRANSPARENT);
				DrawText(hdc, text, _tcslen(text), &rc, DT_CENTER | 

DT_VCENTER | DT_SINGLELINE);

				return (INT_PTR)CreateSolidBrush(RGB(127,0,255));//返回画刷

设置按钮的背景色
			}
			break;
		}
	case WM_COMMAND:
		{
			switch(LOWORD(wParam))
			{
			case IDOK:
				{
					EndDialog(hDlg,LOWORD(wParam));
					break;
				}
			case IDCANCEL:
				{
					EndDialog(hDlg,LOWORD(wParam));
					break;
				}
			case IDC_BUTTON1://确认增加
				{
					//MessageBox(hDlg,TEXT("确认增加"),NULL,MB_OK);
					//在此处执行数据库访问,项数据库中插入数据,
					
					AddItemForMenuOnCommand(hDlg,wParam);
					break;
				}
			case IDC_BUTTON2://重新输入
				{
					//MessageBox(hDlg,TEXT("重新输入"),NULL,MB_OK);
					//将编辑框全部启用
					EnableWindow(GetDlgItem(hDlg,IDC_EDIT1),TRUE);
					EnableWindow(GetDlgItem(hDlg,IDC_EDIT2),TRUE);
					EnableWindow(GetDlgItem(hDlg,IDC_EDIT3),TRUE);
					EnableWindow(GetDlgItem(hDlg,IDC_EDIT4),TRUE);
					EnableWindow(GetDlgItem(hDlg,IDC_EDIT5),TRUE);
					EnableWindow(GetDlgItem(hDlg,IDC_EDIT6),TRUE);
					EnableWindow(GetDlgItem(hDlg,IDC_EDIT7),TRUE);
					SetDlgItemText(hDlg,IDC_STATIC2,TEXT("重新输入命令

执行成功,您可以继续在编辑框内修改菜肴信息"));
					break;
				}
			case IDC_BUTTON3://退出
				{
					EndDialog(hDlg,LOWORD(wParam));
					break;
				}
				
			}
			break;
		}
	default:
		break;
	}
	return (INT_PTR)FALSE;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值