电话本相关的应用编程,急问!!!

RD818 2006-07-14 02:28:05
用wce 4.0 ,smartphone sdk2003编程,需要获取wce环境自带的电话本(outlook contact)在修改添加删除等操作时的消息,为了能够在得知每一个这些操作后及时作一些其他处理,各位大侠有什么办法?
...全文
363 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
RD818 2006-07-19
  • 打赏
  • 举报
回复
我做了个例子代码,怎么不管用啊,代码如下,帮忙看看为什么我的窗口接收不到任何电话本操作的消息?????
HWND hNotifyWnd;
void mytest1()
{
HANDLE hDB;
CEOID CeOID = 0;
CEGUID guid;
CREATE_INVALIDGUID(&guid);

CENOTIFYREQUEST req;
ZeroMemory(&req, sizeof(CENOTIFYREQUEST));
req.dwSize = sizeof(CENOTIFYREQUEST);
req.dwFlags = CEDB_EXNOTIFICATION;
req.hwnd = hNotifyWnd;

hDB = CeOpenDatabaseEx2(&guid, &CeOID, _T("Contacts Database"), 0, 0, &req);
if (hDB == INVALID_HANDLE_VALUE)
{
int r;
switch ((int)hDB)
{
case ERROR_INVALID_PARAMETER:
r = 1;
break;
case ERROR_FILE_NOT_FOUND:
r = 2;
break;
case ERROR_NOT_ENOUGH_MEMORY:
r = 3;
break;
default:
r = 4;
break;
}
}

}

LRESULT CALLBACK MyWndProc(
HWND hwnd,
UINT msg,
WPARAM wp,
LPARAM lp
)
{
int a = 0;
a += 1;
return TRUE;
}
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPWSTR lpCmdLine,
int nCmdShow
)
{
MSG msg;
HWND hwnd = NULL;
BOOL fActivated;
WNDCLASS wc;
HWND hwndMain;
TCHAR szAppTitle[20];

g_hInst = hInstance;

if(0 == LoadString(g_hInst, IDS_HELLO_TITLE, szAppTitle, ARRAYSIZE(szAppTitle)))
{
return(0);
}

if(FAILED(ActivatePreviousInstance(g_szAppWndClass, szAppTitle, &fActivated)) ||
fActivated)
{
return(0);
}

// Register our main window's class.
ZeroMemory(&wc, sizeof(wc));
wc.style = CS_HREDRAW | CS_VREDRAW ;
//wc.lpfnWndProc = (WNDPROC)WndProc;
wc.lpfnWndProc = (WNDPROC)MyWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hIcon = NULL;
wc.hInstance = g_hInst;
wc.hCursor = NULL;
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = g_szAppWndClass;
if(!RegisterClass(&wc))
{
return(0);
}

/*创建我的收消息的窗口*****************************************/
hNotifyWnd = CreateWindow(g_szAppWndClass, NULL,
WS_CLIPCHILDREN, // Setting this to 0 gives a default style we don't want. Use a benign style bit instead.
0,0,0,0,
NULL, NULL, g_hInst, NULL );
if(!hNotifyWnd)
{
return(0);
}
mytest1();/*调测试接口*************************/

// Pump messages until a PostQuitMessage.
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage (&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

连上模拟器后,我操作标准电话本,添加一条联系人或者删除一条,我的MyWndproc的断点从来不断,收不到消息,为什么??????急问呀
RD818 2006-07-19
  • 打赏
  • 举报
回复
唉,什么也没改,下午程序工作又正常了,那结贴吧,散分!
RD818 2006-07-17
  • 打赏
  • 举报
回复
如何做成服务呀?能具体点儿吗?
无聊客 2006-07-17
  • 打赏
  • 举报
回复
作成服务
RD818 2006-07-16
  • 打赏
  • 举报
回复
如果用 yzx0023 说的方法,那怎样才能开机就加载这段代码?否则就不能自动得获取标准电话本操作消息。哪位大侠指教一下吧!
RD818 2006-07-14
  • 打赏
  • 举报
回复
这些类似系统的电话本名字,如何和这个电话本打交道,这些资料到哪儿查?我只查到evc 的msdn里面关于POOM的一些东西可以用来访问电话本,但是没明白怎么和系统的电话本打交道
一把吉他 2006-07-14
  • 打赏
  • 举报
回复
是的
RD818 2006-07-14
  • 打赏
  • 举报
回复
谢谢你详细的答复,对你上面的代码我有个疑问,我也不知道系统电话本的名字叫什么,你是说系统的电话本名字就叫做“Contacts Database”吗?
无聊客 2006-07-14
  • 打赏
  • 举报
回复
CEOID CeOID = 0;
CEGUID guid;
CREATE_INVALIDGUID(&guid);

CENOTIFYREQUEST req;
ZeroMemory(&req, sizeof(CENOTIFYREQUEST));
req.dwSize = sizeof(CENOTIFYREQUEST);
req.dwFlags = CEDB_EXNOTIFICATION;
req.hwnd = hWndNotify;

hDB = CeOpenDatabaseEx2(&guid, &CeOID, _T("Contacts Database"), 0, 0, &req);
RD818 2006-07-14
  • 打赏
  • 举报
回复
yzx0023(无聊客) :感谢你的回复。多谢多谢!
不过我不太熟这个接口,能否给出个具体例子,比如这个接口的参数都怎么填,因为我现在是需要对于系统自带的电话本outlook(就是说不是我自己做的电话本程序,所以这个database不是我创建的)获得消息,那么那些有关这个系统电话本的pguid、 lpszName等等参数我怎么获得呀?

无聊客 2006-07-14
  • 打赏
  • 举报
回复
打开Database,注册你的通知窗口,然后接收通知消息处理

CeOpenDatabaseEx2
注意里面的CENOTIFYREQUEST结构,可以设置通知窗口

7,660

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧