xml version="1.0" encoding="utf-8" standalone="yes"12bet++博客-全国http://www.fometaux.com/aaxron/记载修行的印记 zh-cnFri, 28 Jun 2019 21:54:06 GMTFri, 28 Jun 2019 21:54:06 GMT6012bet++博客-全国http://www.fometaux.com/aaxron/archive/2019/06/26/216462.html全国全国Wed, 26 Jun 2019 10:03:00 GMThttp://www.fometaux.com/aaxron/archive/2019/06/26/216462.htmlhttp://www.fometaux.com/aaxron/comments/216462.htmlhttp://www.fometaux.com/aaxron/archive/2019/06/26/216462.html#Feedback0http://www.fometaux.com/aaxron/comments/commentRss/216462.htmlhttp://www.fometaux.com/aaxron/services/trackbacks/216462.html Conditional compilation symbols
编译器指令行选项(例如,/define:DEBUG),
    能够在VS2008的IDE进行设置, Project Property--->Build--->Conditional compilation symbols(假如多个科研运用逗号离隔)
    体系默许设置了:DEBUG 和 TRACE
操作体系外壳程序中的环境变量(例如,set DEBUG=1)。
源代码中的杂注(例如,用于界说编译变量的 #define DEBUG,以及用于撤销界说它的 #undef DEBUG)。
     有必要在file的最前方设置,#define debug或许组合操作
    #if (Debug && Trace)
        #define DebugAndTrace 
    #endif
ps:Conditional坐落using System.Diagnostics;
什么情况下运用该标识符?
当程序中一个办法或特点不想再运用时,假如把它删掉就需求把引证的当地一个一个悉数删掉否则就会编译过错,这时咱们就能够在塔的上面加一个[Conditional("string")] 然后程序运行时就会疏忽它
ps:[Conditional("string")]里边字符串随意取  
假如想再次调用那个办法或特点怎么办?
这个很简单,你只需在引证命名空间那个当地进行一个宏界说把你在[Conditional("string")]里边的字符串界说出来就能用了
C#-#define条件编译
C#的预处理器指令历来不会转化为可执行代码的指令,可是会影响编译进程的各个方面,常用的预处理器指令有#define、#undef、#if,#elif,#else和#endif等等,下面介绍C#中运用#define进行条件编译的实例。
C#中条件编译指令用于按条件包含或扫除源文件中的某些部分。在Visual Studio中,会看到被扫除的代码显现为灰色。
一、#define能够用来做什么
1、当方案发布两个版别的代码的时分。即基本版和具有更多版别的企业版,就能够用到条件编译指令;
2、例如同一个文件给silverlight、wpf、winform等运用,而且还考虑Debug和Release等,有大部分代码是相同的;
3、指定函数和特点是否编译到终究产品中去。
二、#define用法
语法:#define 称号
留意:这儿称号取Debug,你也能够取其他称号如Dragon
1 #define Debug
阐明:
1、Debug能够看做是声明的一个变量,但此变量没有真实的值,存在时#if Debug成果为true,否则为false;
2、#define单独用没什么含义,一般是和#if或许Conditional特性结合运用;
3、#define有必要界说在一切using命名空间前面;
4、Debug与DEBUG是不同的,C#差异巨细写
 


全国 2019-06-26 18:03 宣布谈论
]]>
12bet++博客-全国http://www.fometaux.com/aaxron/archive/2019/02/12/216238.html全国全国Tue, 12 Feb 2019 03:44:00 GMThttp://www.fometaux.com/aaxron/archive/2019/02/12/216238.htmlhttp://www.fometaux.com/aaxron/comments/216238.htmlhttp://www.fometaux.com/aaxron/archive/2019/02/12/216238.html#Feedback0http://www.fometaux.com/aaxron/comments/commentRss/216238.htmlhttp://www.fometaux.com/aaxron/services/trackbacks/216238.htmlspring 官方下载地址(Spring Framework 3.2.x&Spring Framework 4.0.x)
2017年02月24日 15:53:59

SPRING官方网站改版后,主张都是经过 Maven和Gradle下载,对不运用Maven和Gradle开发项目的,下载就十分费事,下给出Spring Framework jar官方直接下载途径:

http://repo.spring.io/libs-release-local/org/springframework/spring/

 

spring 4.0.x(Spring Framework 4.0.5)下载

http://repo.spring.io/libs-release-local/org/springframework/spring/4.0.5.RELEASE/spring-framework-4.0.5.RELEASE-dist.zip

 

spring 3.2.x(Spring Framework 3.2.9)下载:

http://repo.spring.io/libs-release-local/org/springframework/spring/3.2.9.RELEASE/spring-framework-3.2.9.RELEASE-dist.zip

 

 

spring 3.2.x(Spring Framework 3.2.4)下载:

http://repo.springsource.org/libs-release-local/org/springframework/spring/3.2.4.RELEASE/spring-framework-3.2.4.RELEASE-dist.zip


 

另spring security下载途径:

http://repo.spring.io/libs-release-local/org/springframework/security/spring-security/

http://repo.spring.io/libs-release-local/org/springframework/security/spring-security/3.2.4.RELEASE/spring-security-3.2.4.RELEASE-dist.zip



全国 2019-02-12 11:44 宣布谈论
]]>
12bet++博客-全国http://www.fometaux.com/aaxron/archive/2018/04/11/215585.html全国全国Wed, 11 Apr 2018 08:40:00 GMThttp://www.fometaux.com/aaxron/archive/2018/04/11/215585.htmlhttp://www.fometaux.com/aaxron/comments/215585.htmlhttp://www.fometaux.com/aaxron/archive/2018/04/11/215585.html#Feedback0http://www.fometaux.com/aaxron/comments/commentRss/215585.htmlhttp://www.fometaux.com/aaxron/services/trackbacks/215585.htmlpublic class AnnotationMethodHandlerAdapter extends WebContentGenerator
        
implements HandlerAdapter, Ordered, BeanFactoryAware {
    
//

    
public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        
return invokeHandlerMethod(request, response, handler);
    }

    
protected ModelAndView invokeHandlerMethod(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        ServletHandlerMethodResolver methodResolver 
= getMethodResolver(handler);
        Method handlerMethod 
= methodResolver.resolveHandlerMethod(request);
        ServletHandlerMethodInvoker methodInvoker 
= new ServletHandlerMethodInvoker(methodResolver);
        ServletWebRequest webRequest 
= new ServletWebRequest(request, response);
        ExtendedModelMap implicitModel 
= new BindingAwareModelMap();

        Object result 
= methodInvoker.invokeHandlerMethod(handlerMethod, handler, webRequest, implicitModel);
        ModelAndView mav 
=
                methodInvoker.getModelAndView(handlerMethod, handler.getClass(), result, implicitModel, webRequest);
        methodInvoker.updateModelAttributes(handler, (mav 
!= null ? mav.getModel() : null), implicitModel, webRequest);
        
return mav;
    }

    
public ModelAndView getModelAndView(Method handlerMethod, Class<?> handlerType, Object returnValue,
            ExtendedModelMap implicitModel, ServletWebRequest webRequest) 
throws Exception {}
}


其他
public final class Method extends Executable {
    
public Object invoke(Object obj, Object args)
    
throws IllegalAccessException, IllegalArgumentException,InvocationTargetException
    {
        
if (!override) {
            
if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
                Class
<?> caller = Reflection.getCallerClass();
                checkAccess(caller, clazz, obj, modifiers);
            }
        }
        MethodAccessor ma 
= methodAccessor;             // read volatile
        if (ma == null) {
            ma 
= acquireMethodAccessor();
        }
        
return ma.invoke(obj, args);
    }
}
public class ModelMap extends LinkedHashMap<String, Object> {}

public abstract class AbstractView extends WebApplicationObjectSupport implements View, BeanNameAware {
    
/**
     * Prepares the view given the specified model, merging it with static
     * attributes and a RequestContext attribute, if necessary.
     * Delegates to renderMergedOutputModel for the actual rendering.
     * 
@see #renderMergedOutputModel
     
*/
    @Override
    
public void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
        
if (logger.isTraceEnabled()) {
            logger.trace(
"Rendering view with name '" + this.beanName + "' with model " + model +
                
" and static attributes " + this.staticAttributes);
        }

        Map
<String, Object> mergedModel = createMergedOutputModel(model, request, response);
        prepareResponse(request, response);
        renderMergedOutputModel(mergedModel, getRequestToExpose(request), response);
    }
}
代码:


全国 2018-04-11 16:40 宣布谈论
]]>
12bet++博客-全国http://www.fometaux.com/aaxron/archive/2018/04/11/215584.html全国全国Wed, 11 Apr 2018 08:39:00 GMThttp://www.fometaux.com/aaxron/archive/2018/04/11/215584.htmlhttp://www.fometaux.com/aaxron/comments/215584.htmlhttp://www.fometaux.com/aaxron/archive/2018/04/11/215584.html#Feedback0http://www.fometaux.com/aaxron/comments/commentRss/215584.htmlhttp://www.fometaux.com/aaxron/services/trackbacks/215584.htmlpublic class DispatcherServlet extends FrameworkServlet {
    
private List<HandlerMapping> handlerMappings;

    
protected void doService(HttpServletRequest request, HttpServletResponse response) throws Exception {
        doDispatch(request, response);
    }
    
    
protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception {
        HttpServletRequest processedRequest 
= request;
        HandlerExecutionChain mappedHandler 
= null;
        
boolean multipartRequestParsed = false;
        
try {
            ModelAndView mv 
= null;
            Exception dispatchException 
= null;
            
try {
                processedRequest 
= checkMultipart(request);
                multipartRequestParsed 
= (processedRequest != request);

                
// Determine handler for the current request.  //映射处理器
                mappedHandler = getHandler(processedRequest); //HandlerExecutionChain
                if (mappedHandler == null || mappedHandler.getHandler() == null) {
                    noHandlerFound(processedRequest, response);
                    
return;
                }

                
// Determine handler adapter for the current request. //适配处理器
                HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());

                
if (!mappedHandler.applyPreHandle(processedRequest, response)) {
                    
return;
                }

                
// Actually invoke the handler. 
                mv = ha.handle(processedRequest, response, mappedHandler.getHandler());

                applyDefaultViewName(processedRequest, mv); 
                mappedHandler.applyPostHandle(processedRequest, response, mv);
            }

            
//烘托视图
            processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException); 
        }
        
catch (Exception ex) {
            triggerAfterCompletion(processedRequest, response, mappedHandler, ex);
        }
        
finally {
        }
    }
    
private void processDispatchResult(HttpServletRequest request, HttpServletResponse response,
        HandlerExecutionChain mappedHandler, ModelAndView mv, Exception exception) 
throws Exception {
        
// Did the handler return a view to render?
        if (mv != null && !mv.wasCleared()) {
            render(mv, request, response);
        }
        
else {
            
if (logger.isDebugEnabled()) {
                logger.debug(
"Null ModelAndView returned to DispatcherServlet with name '" + getServletName() +
                        
"': assuming HandlerAdapter completed request handling");
            }
        }
        
if (mappedHandler != null) {
            mappedHandler.triggerAfterCompletion(request, response, 
null);
        }
    }
    
    
protected void render(ModelAndView mv, HttpServletRequest request, HttpServletResponse response) throws Exception {
        
// Determine locale for request and apply it to the response.
        Locale locale = this.localeResolver.resolveLocale(request);
        response.setLocale(locale);

        View view;
        
if (mv.isReference()) {
            
// We need to resolve the view name.
            view = resolveViewName(mv.getViewName(), mv.getModelInternal(), locale, request);
            
if (view == null) {
                
throw new ServletException("Could not resolve view with name '" + mv.getViewName() +
                        
"' in servlet with name '" + getServletName() + "'");
            }
        }
        
else {
            
// No need to lookup: the ModelAndView object contains the actual View object.
            view = mv.getView();
            
if (view == null) {
                
throw new ServletException("ModelAndView [" + mv + "] neither contains a view name nor a " +
                        
"View object in servlet with name '" + getServletName() + "'");
            }
        }

        
// Delegate to the View object for rendering.
        if (logger.isDebugEnabled()) {
            logger.debug(
"Rendering view [" + view + "] in DispatcherServlet with name '" + getServletName() + "'");
        }
        
try {
            view.render(mv.getModelInternal(), request, response);
        }
        
catch (Exception ex) {
            logger.debug(
"Error rendering view [" + view + "] in DispatcherServlet with name '" +    getServletName() + "'", ex);
            
throw ex;
        }
}


全国 2018-04-11 16:39 宣布谈论
]]>
12bet++博客-全国http://www.fometaux.com/aaxron/archive/2017/05/17/214944.html全国全国Wed, 17 May 2017 10:56:00 GMThttp://www.fometaux.com/aaxron/archive/2017/05/17/214944.htmlhttp://www.fometaux.com/aaxron/comments/214944.htmlhttp://www.fometaux.com/aaxron/archive/2017/05/17/214944.html#Feedback0http://www.fometaux.com/aaxron/comments/commentRss/214944.htmlhttp://www.fometaux.com/aaxron/services/trackbacks/214944.htmlMoveWindow() SetWindowPos()的差异与联络
转自http://www.cnblogs.com/songliquan/p/3359002.html

先看MoveWindow()函数,用于改动窗口的方位和尺度,关于顶层窗口,依照屏幕对齐与左上角,关于子窗口,则对齐与父窗口的左上角。

BOOL MoveWindow( HWND hWnd,
int x, int y, int nWidth, int nHeight,BOOL bRepaint = TRUE);
参数hWnd表明窗口句柄;
参数x,y表明窗口的左上角起点;
参数nwidth,nHeight 表明窗口高度和宽度;
最终一个bRepaint表明是否当即重绘。为true时体系会当即发送WM_PAINT到窗口程序(会调用UpdateWindow()函数),为false时不会发作任何类型的重绘操作。

MoveWindow会给窗口发送WM_WINDOWPOSCHANGING,WM_WINDOWPOSCHANGED,WM_MOVE,WM_SIZE和WM_NCCALCSIZE音讯。

接下来看SetWindowPos(),这个函数相同用来完结窗口移动操作,只不过功用更多一点。

BOOL SetWindowPos(HWND hWnd,
const CWnd* pWndInsertAfter, int x, int y,int cx, int cy, UINT nFlags);
第一个参数是窗口句柄;
第二个参数是窗口的Z order,便是有多个窗口时,本窗口显现的次序,最上面或许最下面,可选参数有:HWND_BOTTOM,HWND_NOTOPMOST,HWND_TOP,HWND_TOPMOST.
HWND_BOTTOM:将窗口置于Z序的底部。假如参数hWnd标识了一个顶层窗口,则窗口失掉尖端方位,而且被置在其他窗口的底部。     
HWND_NOTOPMOST:将窗口置于一切非顶层窗口之上(即在一切顶层窗口之后)。假如窗口现已对错顶层窗口则该标志不起作用。     
HWND_TOP:将窗口置于Z序的顶部。     
HWND_TOPMOST:将窗口置于一切非顶层窗口之上。即便窗口未被激活窗口也将坚持尖端方位。 
接下来四个参数是窗口的方位和尺度。
最终一个参数nFlags是窗口显现方法的标志,这个参数许多,能够组合运用,具体如下:
SWP_ASNCWINDOWPOS:假如调用进程不具有窗口,体系会向具有窗口的线程宣布需求。这就避免调用线程在其他线程处理需求的时分发作死锁。    
SWP_DEFERERASE:避免发作WM_SYNCPAINT音讯。    
SWP_DRAWFRAME:在窗口周围画一个边框(界说在窗口类描绘中)。    
SWP_FRAMECHANGED:给窗口发送WM_NCCALCSIZE音讯,即便窗口尺度没有改动也会发送该音讯。假如未指定这个标志,只要在改动了窗口尺度时才发送WM_NCCALCSIZE。 
SWP_HIDEWINDOW;躲藏窗口。 
SWP_NOACTIVATE:不激活窗口。假如未设置标志,则窗口被激活,并被设置到其他第一流窗口或非第一流组的顶部(依据参数hWndlnsertAfter设置)。 
SWP_NOCOPYBITS:铲除客户区的一切内容。假如未设置该标志,客户区的有用内容被保存而且在窗口尺度更新和重定位后复制回客户区。 
SWP_NOMOVE:保持当时方位(疏忽X和Y参数)。    
SWP_NOOWNERZORDER:不改动z序中的一切者窗口的方位。 
SWP_NOREDRAW:不重画改动的内容。假如设置了这个标志,则不发作任何重画动作。适用于客户区和非客户区(包含标题栏和滚动条)和任何因为窗回移动而显露的父窗口的一切部分。假如设置了这个标志,应用程序有必要明确地使窗口无效并重画窗口的任何部分和父窗口需求重画的部分。 
SWP_NOREPOSITION;与SWP_NOOWNERZORDER标志相同。      SWP_NOSENDCHANGING:避免窗口接纳WM_WINDOWPOSCHANGING音讯。 
SWP_NOSIZE:保持当时尺度(疏忽cx和Cy参数)。 
SWP_NOZORDER:保持当时Z序(疏忽hWndlnsertAfter参数)。 
SWP_SHOWWINDOW:显现窗口。
留意事项:
运用SetWindowPos()假如设置了SWP_SHOWWINDOWS或许SWP_HIDEWINDOW,那么窗口将不能被移动和改动巨细,我运用时便是设置了SWP_SHOWWINDOW,然后导致不能重绘布景。

两者的比较:
两者都能完结移动和改动窗口巨细。

MoveWindow()功用比较单一,只能移动和改动窗口巨细,而SetWindowPos()能够设置更多的参数,完结Zorder及显现方法标志。

MoveWindow()发送WM_WINDOWPOSCHANGING,WM_WINDOWPOSCHANGED,WM_MOVE,WM_SIZE和WM_NCCALCSIZE等音讯到窗口,SetWindowPos()只发送WM_WINDOWPOSCHANGED音讯到窗口。所以说假如需求发送更多音讯时仍是运用MoveWindow()的好。


全国 2017-05-17 18:56 宣布谈论
]]>
12bet++博客-全国http://www.fometaux.com/aaxron/archive/2017/05/16/214936.html全国全国Tue, 16 May 2017 03:06:00 GMThttp://www.fometaux.com/aaxron/archive/2017/05/16/214936.htmlhttp://www.fometaux.com/aaxron/comments/214936.htmlhttp://www.fometaux.com/aaxron/archive/2017/05/16/214936.html#Feedback0http://www.fometaux.com/aaxron/comments/commentRss/214936.htmlhttp://www.fometaux.com/aaxron/services/trackbacks/214936.html

/Files/aaxron/OppoTestX.rar

全国 2017-05-16 11:06 宣布谈论
]]>
12bet++博客-全国http://www.fometaux.com/aaxron/archive/2016/12/13/214480.html全国全国Tue, 13 Dec 2016 02:09:00 GMThttp://www.fometaux.com/aaxron/archive/2016/12/13/214480.htmlhttp://www.fometaux.com/aaxron/comments/214480.htmlhttp://www.fometaux.com/aaxron/archive/2016/12/13/214480.html#Feedback0http://www.fometaux.com/aaxron/comments/commentRss/214480.htmlhttp://www.fometaux.com/aaxron/services/trackbacks/214480.html形似 挂起线程 有必要在主界面的UI线程去操作

UINT UiThreadProcessProtocol(LPVOID lParam)
{
    CCalcPPIView
* view = (CCalcPPIView*)lParam;
    DmcControler
* Dmc = &(view->Dmc);

    
while (1)
    {
        
//AfxTrace("%u \n",GetTickCount());
        Sleep(500);
    } 
    
return 0;
}

CWinThread
* m_ThreadProcessProtocol;
m_ThreadProcessProtocol 
= AfxBeginThread(UiThreadProcessProtocol,this);

void CCalcPPIView::OnBtnRegulate()
{
    
if (m_ThreadProcessProtocol!=NULL) {
        m_ThreadProcessProtocol
->SuspendThread();
        AfxTrace(
"SuspendThread() at %u \n",GetTickCount());
    }
    
    {
        CRegulate dlg(
this);
        dlg.DoModal();
    }
    
if (m_ThreadProcessProtocol!=NULL) {
        m_ThreadProcessProtocol
->ResumeThread();
        AfxTrace(
"ResumeThread() at %u \n",GetTickCount());
    }
}

void CCalcPPIView::CloseDevice(BOOL bUpdateUI )
{
    CCalcPPIView
* view = this;
    AfxTrace(
"CCalcPPIView::CloseDevice() Entry \n");

    Dmc.SetOpened(
0);

    
if (view->m_ThreadProcessProtocol!=NULL) {
        WaitForSingleObject(view
->m_ThreadProcessProtocol->m_hThread,INFINITE);
        view
->m_ThreadProcessPro NULL;
    }
}

 

 



全国 2016-12-13 10:09 宣布谈论
]]>
12bet++博客-全国http://www.fometaux.com/aaxron/archive/2016/12/04/214460.html全国全国Sun, 04 Dec 2016 12:09:00 GMThttp://www.fometaux.com/aaxron/archive/2016/12/04/214460.htmlhttp://www.fometaux.com/aaxron/comments/214460.htmlhttp://www.fometaux.com/aaxron/archive/2016/12/04/214460.html#Feedback0http://www.fometaux.com/aaxron/comments/commentRss/214460.htmlhttp://www.fometaux.com/aaxron/services/trackbacks/214460.htmlOn Error Resume Next
set oshell = CreateObject("WScript.Shell")
oshell.run 
"http://v.qq.com",0,false
WScript.quit


全国 2016-12-04 20:09 宣布谈论
]]>
12bet++博客-全国http://www.fometaux.com/aaxron/archive/2016/10/14/214333.html全国全国Fri, 14 Oct 2016 06:18:00 GMThttp://www.fometaux.com/aaxron/archive/2016/10/14/214333.htmlhttp://www.fometaux.com/aaxron/comments/214333.htmlhttp://www.fometaux.com/aaxron/archive/2016/10/14/214333.html#Feedback0http://www.fometaux.com/aaxron/comments/commentRss/214333.htmlhttp://www.fometaux.com/aaxron/services/trackbacks/214333.html#pragma once
template 
<typename T>  
struct TraitsHelper;

template 
<typename T>  
struct TraitsHelper {  
    
static const bool isPointer = false;  
    
enum {IsPointer = false};
    
bool GetIsPointer()
    {
        
return IsPointer;
    }
};  
template 
<typename T>  
struct TraitsHelper<T*> {  
    
static const bool isPointer = true;  
    
enum {IsPointer = true};
    
bool GetIsPointer()
    {
        
return IsPointer;
    }
};  

//call
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
    
int val = 0;
    
int* pVal = &val;
    TraitsHelper
<int> a;
    TraitsHelper
<int*> b;

    
bool b1 = a.IsPointer;
    
bool b2 = b.IsPointer;

    
bool b3 = a.GetIsPointer();

    
bool b4 = TraitsHelper<int>::IsPointer;
    
bool b5 = TraitsHelper<int*>::IsPointer;


    
return 0;
}


全国 2016-10-14 14:18 宣布谈论
]]>
12bet++博客-全国http://www.fometaux.com/aaxron/archive/2016/09/22/214289.html全国全国Thu, 22 Sep 2016 02:19:00 GMThttp://www.fometaux.com/aaxron/archive/2016/09/22/214289.htmlhttp://www.fometaux.com/aaxron/comments/214289.htmlhttp://www.fometaux.com/aaxron/archive/2016/09/22/214289.html#Feedback0http://www.fometaux.com/aaxron/comments/commentRss/214289.htmlhttp://www.fometaux.com/aaxron/services/trackbacks/214289.htmlGoogle Protocol Buffer 装置和运用
下载:
https://codeload.github.com/google/protobuf/

看README.md

For non-12bet users, the simplest way to install the protocol compiler is to
download a pre-built binary from our release page:
[https://github.com/google/protobuf/releases]


下载12bet的版别:
https://github.com/google/protobuf/releases

进入:protobuf-3.0.2\cmake 目录
用cmake 处理编译

编译默许的代码生成是MT,不是MD

只需求2个工程:
libprotobuf和protoc

编译完结之后:把include目录复制出来

新建SearchRequest.proto文件
message SearchRequest 
{
  required string query = 1;
  optional int32 page_number = 2;// Which page number do we want?
  optional int32 result_per_page = 3;// Number of results to return per page.
}

protoc.exe --cpp_out ./ SearchRequest.poto
#include "stdafx.h"
#include "SearchRequest.pb.h"

//#pragma comment(lib,"../Debug/MT/libprotobufd.lib")
#pragma comment(lib,"../Debug/MD/libprotobufd.lib")

int _tmain(int argc, _TCHAR* argv[])
{
    SearchRequest sr;

    sr.set_query("abcd",5);
    sr.set_page_number(0x1001);
    sr.set_result_per_page(0x1002);

    std::string data  = sr.SerializeAsString();

    SearchRequest sr2;

    sr2.ParseFromString(data);

    return 0;
}


全国 2016-09-22 10:19 宣布谈论
]]>