嵌入式基于Wince专辑个人通讯录代码.docx
- 文档编号:5740226
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:38
- 大小:26.16KB
嵌入式基于Wince专辑个人通讯录代码.docx
《嵌入式基于Wince专辑个人通讯录代码.docx》由会员分享,可在线阅读,更多相关《嵌入式基于Wince专辑个人通讯录代码.docx(38页珍藏版)》请在冰豆网上搜索。
嵌入式基于Wince专辑个人通讯录代码
//======================================================================
//AlbumDB-AWindowsCEdatabase
//
//WrittenforthebookProgrammingWindowsCE
//Copyright(C)2007DouglasBoling
//======================================================================
#include
#include
#include
#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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 基于 Wince 专辑 个人 通讯录 代码