嵌入式基于Wince专辑个人通讯录代码.docx

上传人:b****5 文档编号:5740226 上传时间:2022-12-31 格式:DOCX 页数:38 大小:26.16KB
下载 相关 举报
嵌入式基于Wince专辑个人通讯录代码.docx_第1页
第1页 / 共38页
嵌入式基于Wince专辑个人通讯录代码.docx_第2页
第2页 / 共38页
嵌入式基于Wince专辑个人通讯录代码.docx_第3页
第3页 / 共38页
嵌入式基于Wince专辑个人通讯录代码.docx_第4页
第4页 / 共38页
嵌入式基于Wince专辑个人通讯录代码.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

嵌入式基于Wince专辑个人通讯录代码.docx

《嵌入式基于Wince专辑个人通讯录代码.docx》由会员分享,可在线阅读,更多相关《嵌入式基于Wince专辑个人通讯录代码.docx(38页珍藏版)》请在冰豆网上搜索。

嵌入式基于Wince专辑个人通讯录代码.docx

嵌入式基于Wince专辑个人通讯录代码

//======================================================================

//AlbumDB-AWindowsCEdatabase

//

//WrittenforthebookProgrammingWindowsCE

//Copyright(C)2007DouglasBoling

//======================================================================

#include//ForallthatWindowsstuff

#include//ForWindowscontrolsmacros

#include//Commoncontrolincludes

#include"AlbumDB.h"//Program-specificstuff

//Thefileisspecifiedheresothereisnospecialprojectsettings

//forwindowsmobilecompiles.

#ifdefined(WIN32_PLATFORM_PSPC)

#include

#pragmacomment(lib,"aygshell")//Linkshelllibformenubar.

#endif

//----------------------------------------------------------------------

//Globaldata

//

constTCHARszAppName[]=TEXT("AlbumDB");

HINSTANCEhInst;//Programinstancehandle

HANDLEg_hDB=INVALID_HANDLE_VALUE;//Handletoalbumdatabase

CEOIDg_oidDB=0;//ObjectIDofthealbumdatabase

CEGUIDg_guidDB;//Guidfordatabasevolume

CENOTIFYREQUESTcenr;//Notifyrequeststructure.

intg_nLastSort=0;//Lastsortorderused

CEDBASEINFOEXg_diex;//Sortorderarray

//Thesetwovariablesrepresentaone-itemcachefor

//thelistviewcontrol.

intg_nLastItem=-1;

LPBYTEg_pLastRecord=0;

//MessagedispatchtableforMainWindowProc

conststructdecodeUINTMainMessages[]={

WM_CREATE,DoCreateMain,

WM_SIZE,DoSizeMain,

WM_COMMAND,DoCommandMain,

WM_NOTIFY,DoNotifyMain,

WM_DESTROY,DoDestroyMain,

WM_DBNOTIFICATION,DoDbNotifyMain,

};

//CommandmessagedispatchforMainWindowProc

conststructdecodeCMDMainCommandItems[]={

IDM_DELDB,DoMainCommandDelDB,

IDM_EXIT,DoMainCommandExit,

IDM_NEW,DoMainCommandNew,

IDM_EDIT,DoMainCommandEdit,

IDM_DELETE,DoMainCommandDelete,

IDM_SORTNAME,DoMainCommandSort,

IDM_SORTARTIST,DoMainCommandSort,

IDM_SORTCATEGORY,DoMainCommandSort,

IDM_ABOUT,DoMainCommandAbout,

};

//Albumcategorystrings;mustbealphabetical.

constTCHAR*pszCategories[]={TEXT("Family"),TEXT("Friends"),

TEXT("collague"),TEXT("mates")};

//======================================================================

//Programentrypoint

//

intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,

LPWSTRlpCmdLine,intnCmdShow){

HWNDhwndMain;

MSGmsg;

intrc=0;

//Initializethisinstance.

hwndMain=InitInstance(hInstance,lpCmdLine,nCmdShow);

if(hwndMain==0)

return0x10;

//Applicationmessageloop

while(GetMessage(&msg,NULL,0,0)){

TranslateMessage(&msg);

DispatchMessage(&msg);

}

//Instancecleanup

returnTermInstance(hInstance,msg.wParam);

}

//----------------------------------------------------------------------

//InitInstance-Instanceinitialization

//

HWNDInitInstance(HINSTANCEhInstance,LPWSTRlpCmdLine,intnCmdShow){

HWNDhWnd;

WNDCLASSwc;

INITCOMMONCONTROLSEXicex;

#ifdefined(WIN32_PLATFORM_PSPC)||defined(WIN32_PLATFORM_WFSP)

//ForWindowsMobiledevices,allowonlyoneinstanceoftheapp

hWnd=FindWindow(szAppName,NULL);

if(hWnd){

SetForegroundWindow((HWND)(((DWORD)hWnd)|0x01));

return(HWND)-1;

}

#endif

//Saveprograminstancehandleinglobalvariable.

hInst=hInstance;

//CreateaguidforthedatabaseExfunctionsthatpoints

//totheobjectstore.

CREATE_SYSTEMGUID(&g_guidDB);

memset(&cenr,0,sizeof(cenr));//Initializethenotifyrequest.

//Initializedatabaseinfostructure.

memset(&g_diex,0,sizeof(g_diex));

g_diex.wVersion=CEDBASEINFOEX_VERSION;

g_diex.dwFlags=CEDB_VALIDNAME|CEDB_VALIDTYPE|

CEDB_VALIDSORTSPEC;

StringCchCopy(g_diex.szDbaseName,dim(g_diex.szDbaseName),

TEXT("\\Albums"));

g_diex.dwDbaseType=0;

g_diex.wNumSortOrder=3;

//Createsortpropertyarray

inti=0;

g_diex.rgSortSpecs[i].wVersion=SORTORDERSPECEX_VERSION;

g_diex.rgSortSpecs[i].wNumProps=2;

g_diex.rgSortSpecs[i].rgPropID[0]=PID_NAME;

g_diex.rgSortSpecs[i].rgdwFlags[0]=0;

g_diex.rgSortSpecs[i].rgPropID[1]=PID_CATEGORY;

g_diex.rgSortSpecs[i].rgdwFlags[1]=0;

i++;

g_diex.rgSortSpecs[i].wVersion=SORTORDERSPECEX_VERSION;

g_diex.rgSortSpecs[i].wNumProps=2;

g_diex.rgSortSpecs[i].rgPropID[0]=PID_ARTIST;

g_diex.rgSortSpecs[i].rgdwFlags[0]=0;

g_diex.rgSortSpecs[i].rgPropID[1]=PID_NAME;

g_diex.rgSortSpecs[i].rgdwFlags[1]=0;

i++;

g_diex.rgSortSpecs[i].wVersion=SORTORDERSPECEX_VERSION;

g_diex.rgSortSpecs[i].wNumProps=3;

g_diex.rgSortSpecs[i].rgPropID[0]=PID_CATEGORY;

g_diex.rgSortSpecs[i].rgdwFlags[0]=0;

g_diex.rgSortSpecs[i].rgPropID[1]=PID_ARTIST;

g_diex.rgSortSpecs[i].rgdwFlags[1]=0;

g_diex.rgSortSpecs[i].rgPropID[2]=PID_NAME;

g_diex.rgSortSpecs[i].rgdwFlags[2]=0;

//Registerapplicationmainwindowclass.

wc.style=0;//Windowstyle

wc.lpfnWndProc=MainWndProc;//Callbackfunction

wc.cbClsExtra=0;//Extraclassdata

wc.cbWndExtra=0;//Extrawindowdata

wc.hInstance=hInstance;//Ownerhandle

wc.hIcon=NULL,//Applicationicon

wc.hCursor=LoadCursor(NULL,IDC_ARROW);//Defaultcursor

wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);

wc.lpszMenuName=NULL;//Menuname

wc.lpszClassName=szAppName;//Windowclassname

if(RegisterClass(&wc)==0)return0;

//Loadthecommandbarcommoncontrolclass.

icex.dwSize=sizeof(INITCOMMONCONTROLSEX);

icex.dwICC=ICC_BAR_CLASSES|ICC_TREEVIEW_CLASSES|

ICC_LISTVIEW_CLASSES;

InitCommonControlsEx(&icex);

//Createmainwindow.

hWnd=CreateWindowEx(0,szAppName,TEXT("AlbumDB"),WS_VISIBLE,

CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,

CW_USEDEFAULT,NULL,NULL,hInstance,NULL);

//Returnfailcodeifwindownotcreated.

if(!

IsWindow(hWnd))return0;

//Standardshowandupdatecalls

ShowWindow(hWnd,nCmdShow);

UpdateWindow(hWnd);

returnhWnd;

}

//----------------------------------------------------------------------

//TermInstance-Programcleanup

//

intTermInstance(HINSTANCEhInstance,intnDefRC){

//Closetheopeneddatabase.

if(g_hDB!

=INVALID_HANDLE_VALUE)

CloseHandle(g_hDB);

//Freethelastdbqueryifsaved.

ClearCache();

returnnDefRC;

}

//======================================================================

//MessagehandlingproceduresforMainWindow

//----------------------------------------------------------------------

//MainWndProc-Callbackfunctionforapplicationwindow

//

LRESULTCALLBACKMainWndProc(HWNDhWnd,UINTwMsg,WPARAMwParam,

LPARAMlParam){

inti;

//

//Searchmessagelisttoseeifweneedtohandlethis

//message.Ifinlist,callprocedure.

//

for(i=0;i

if(wMsg==MainMessages[i].Code)

return(*MainMessages[i].Fxn)(hWnd,wMsg,wParam,lParam);

}

returnDefWindowProc(hWnd,wMsg,wParam,lParam);

}

//----------------------------------------------------------------------

//DoCreateMain-ProcessWM_CREATEmessageforwindow.

//

LRESULTDoCreateMain(HWNDhWnd,UINTwMsg,WPARAMwParam,

LPARAMlParam){

HWNDhwndCB,hwndChild;

intnHeight,nCnt;

RECTrect;

//ConvertlParamtopointertocreatestructure.

LPCREATESTRUCTlpcs=(LPCREATESTRUCT)lParam;

#ifdefined(WIN32_PLATFORM_PSPC)||defined(WIN32_PLATFORM_WFSP)

SHMENUBARINFOmbi;//ForWinMobile,create

memset(&mbi,0,sizeof(SHMENUBARINFO));//menubarsothatwe

mbi.cbSize=sizeof(SHMENUBARINFO);//haveasipbutton.

mbi.hwndParent=hWnd;

mbi.dwFlags=SHCMBF_EMPTYBAR;//Nomenu

SHCreateMenuBar(&mbi);

SetWindowPos(hWnd,0,0,0,lpcs->cx,lpcs->cy-26,

SWP_NOMOVE|SWP_NOZORDER);

#endif

//ConvertlParamtopointertocreatestructure.

lpcs=(LPCREATESTRUCT)lParam;

//Createaminimalcommandbarthathasonlyamenuandan

//exitbutton.

hwndCB=CommandBar_Create(hInst,hWnd,IDC_CMDBAR);

//Insertthemenu.

CommandBar_InsertMenubar(hwndCB,hInst,ID_MENU,0);

//Addexitbuttontocommandbar.

CommandBar_AddAdornments(hwndCB,0,0);

nHeight=CommandBar_Height(hwndCB);

//Openthealbumdatabase.Ifonedoesn'texist,createit.

g_hDB=OpenCreateDB(hWnd,&nCnt);

if(g_hDB==INVALID_HANDLE_VALUE){

MessageBox(hWnd,TEXT("Couldnotopendatabase."),szAppName,

MB_OK);

DestroyWindow(hWnd);

return0;

}

//Createthelistviewcontrolinrightpane.

SetRect(&rect,0,nHeight,lpcs->cx,lpcs->cy-nHeight);

hwndChild=CreateLV(hWnd,&rect);

//Destroyframeifwindownotcreated.

if(!

IsWindow(hwndChild)){

DestroyWindow(hWnd);

return0;

}

ListView_SetItemCount(hwndChild,nCnt);

return0;

}

//----------------------------------------------------------------------

//DoSizeMain-ProcessWM_SIZEmessageforwindow.

//

LRESULTDoSizeMain(HWNDhWnd,UINTwMsg,WPARAMwParam,LPARAMlParam){

HWNDhwndLV;

RECTrect;

hwndLV=GetDlgItem(hWnd,ID_LISTV);

//Adjustthesizeoftheclientrecttotakeintoaccount

//thecommandbarheight.

GetClientRect(hWnd,&rect);

rect.top+=CommandBar_Height(GetDlgItem(hWnd,IDC_CMDBAR));

SetWindowPos(hwndLV,NULL,rect.left,rect.top,

(rect.right-rect.left),rect.bottom-rect.top,

SWP_NOZORDER);

CommandBar_AlignAdornments(GetDlgItem(hWnd,IDC_CMDBAR));

return0;

}

//----------------------------------------------------------------------

//DoCommandMain-ProcessWM_COMMANDmessageforwindow.

//

LRESULTDoCommandMain(HWNDhWnd,UINTwMsg,WPARAMwParam,

LPARAMlParam){

WORDidItem,wNotifyCode;

HWNDhwndCtl;

inti;

//Parsetheparameters.

idItem=(WORD)LOWORD(wParam);

wNotifyCode=(WORD)HIWORD(wParam);

hwndCtl=(HWND)lParam;

//Callroutinetohandlecontrolmessage.

for(i=0;i

if(idItem==MainCommandIt

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1