libjingle2-把call改写成win32窗口程序

没写过win32窗口程序。所以先生成一个最简单的win32程序分析了下。

发现默认程序主要就2个窗口程序,一个是主窗口叫winproc,另一个是about。

其中winproc是在main中生成的。

about是在资源里添加的。

这2个窗口都对应一个callback函数,啥是callback?不知道。。。。。

call函数里是对消息的处理。

所以要添加新的窗口,只要照着about窗口做就行了。要打开这个about窗口在winproc的消息处理加调用的代码。

如果要点击按钮打开,就加个按钮,要点击菜单选项打开就加个菜单项,这个是在资源里加。消息处理循环是根据资源的id判断的。

细的东西以后再慢慢研究吧。至少能添加窗口,打开窗口,添加按钮,添加菜单了。嘿嘿。

下面来看看。login的功能。

在前一篇文章的基础上。

把call的代码add到callwin32的例子中来。排除了前面碰到的错误后。发现有个

Error 38 error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "StdAfx.h"' to your source? d:\libjingle0612\talk\examples\call\discoitemsquerytask.cc 98 1 callWin32

网上找到的答案

I figured out what the problem was.  The entire project needed to be marked as 'Not Using Precompiled Headers' in the property pages.  This is under the 'Configuration Properties'->C/C++->'Precompiled Headers'.  You could just single out the one file if you wanted to also.

如果还有错误就参考上一个文章。

下面就是把call中的代码整合到自己的窗口中了

call的例子写的很好。我只能先把有用的代码复制过来了。全部搞懂不容易。

 

call例子中的main函数,第一部分是一些初始化的代码。如用的协议,用的服务器端口

这些当然是要放在一个配置文件中。简单点就先放在一个h文件中。建立一个config.h文件。把callmain.cc中的对应内容复制过去。

执行login的时候去读对应内容。

在callclient.cc里添加一个方法  void doLogin(const std::string& usrname,const std::string& usrpass );

把callmain中的对应内容给复制过去。

原来代码中printf不能用了,改用messagebox。messagebox倒是很容易懂。倒是那些参数类型,真是纠结。先不管了。

如下:

::MessageBox(NULL,(LPCWSTR)L"error",(LPCWSTR)L"Invalid protocol.  Must be jingle, gingle, or hybrid.\n",MB_YESNOCANCEL|MB_DEFBUTTON4|MB_HELP|MB_ICONQUESTION);

简单排除几个错误,添加一些引用后,程序可以运行了。

现在的问题是

1.textbox的内容如何获取,参考关于字符串类型的文章。http://blog.csdn.net/txdb/article/details/7298502

2.call里面启动了3个线程,这3个线程有啥关系。是不是可以改下

3.pump.DoLogin(xcs, new XmppSocket(buzz::TLS_REQUIRED), NULL);没有返回消息,不知道是否成功了,或者返回的窗口console没显示出来
4. main_thread->Run();做了啥。

1.google下是GetDlgItemText(hwnd, nEditID, szString, nMax);,对应的有GetDlgItem或许还有更多的。

 

 

 

你可能感兴趣的:(properties,String,File,null,callback,login)