青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Error

C++博客 首頁 新隨筆 聯系 聚合 管理
  217 Posts :: 61 Stories :: 32 Comments :: 0 Trackbacks

#

// boost_singal_solt.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <string>
#include <boost/signals2.hpp>
class CTarget /*: public boost::signals2::trackable*/
{
public:
    virtual ~CTarget()
    {
        std::cout << __FUNCTION__ << std::endl;
    }
    CTarget()
    {
        m_strMsg = "1343rwkjdfkjdfasdklf";
    }
    void SomeHandle()
    {
        std::cout << __FUNCTION__ << std::endl;
        std::cout << m_strMsg << std::endl;
    }
    void SomeHandle1()
    {
        std::cout << __FUNCTION__ << std::endl;
    }
private:
    std::string m_strMsg;
};
class CSource
{
public:
    boost::signals2::connection Connect(const boost::signals2::signal<void(void)>::slot_type &sub)
    {
        return m_sig.connect(sub);
    }
    void OnSig()
    {
        m_sig();
    }
private:
    boost::signals2::signal<void(void)> m_sig;
};
int _tmain(int argc, _TCHAR* argv[])
{
    CSource source;
    boost::signals2::connection conn;
    {
        CTarget target;
        
        /*conn = */source.Connect(boost::bind(&CTarget::SomeHandle, &target));
        source.Connect(boost::bind(&CTarget::SomeHandle1, &target));
        source.OnSig();
    }
    source.OnSig();
return 0;
}


在繼承boost::signals2::trackable的情況下,Target析構以后不會調用,但是不繼承是會調用的。也就是說,這是一個危險操作,不知道內部怎么管理的,會不會出現內存泄漏?
/////////////////////////////////////////////////////////////////////////////


// boost_singal_solt.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <string>
#include <boost/signals2.hpp>
class CSource
{
public:
    boost::signals2::connection Connect(const boost::signals2::signal<void(void)>::slot_type &sub)
    {
        return m_sig.connect(sub);
    }
    void OnSig()
    {
        m_sig();
    }
private:
    boost::signals2::signal<void(void)> m_sig;
};
class CTarget : public boost::signals2::trackable
{
public:
    virtual ~CTarget()
    {
        std::cout << __FUNCTION__ << std::endl;
        m_con.disconnect();
    }
    CTarget()
    {
        m_strMsg = "1343rwkjdfkjdfasdklf";
    }
    void RegisterSolts(CSource& source)
    {
        m_con = source.Connect(boost::bind(&CTarget::SomeHandle, this));
    }
    void SomeHandle()
    {
        std::cout << __FUNCTION__ << std::endl;
        std::cout << m_strMsg << std::endl;
    }
    void SomeHandle1()
    {
        std::cout << __FUNCTION__ << std::endl;
    }
private:
    std::string m_strMsg;
    boost::signals2::connection m_con;
};
int _tmain(int argc, _TCHAR* argv[])
{
    CSource source;
    boost::signals2::connection conn;
    {
        CTarget target;
        
        target.RegisterSolts(source);
        //source.OnSig();
    }
    source.OnSig();
return 0;
}
確認只要維護好connection在對象target析構以后一定是disconnect應該就OK沒事,,,





///////////////////////////////////////////


整體上看來是這樣:
問題:target的成員函數和this指針打包注冊到source上以后,如果target析構,source無法感知到,可能會調用已經成為野指針的target地址。
解決:signals2庫的解決辦法是,用一個connection來維護打包的target成員函數和source上的signal的連接關系。target持有這個connection,當自身析構的時候必須調用disscontion解除這個關系。

如果要抄襲,也是要設計一種機制,在target析構的時候,想辦法清除它在別處注冊的函數指針。
1.可以建立target到source的關系,target析構以后通知source,souce清理自身保留的target相關打包函數。這種方式在使用boost bind的時候可能就有問題了,應為之依靠target指針去判斷bind出來的function有難度。
2.建立關系的時候就將解除關系的函數打包到一個新的對象中,然后由target負責在自己析構的時候去調用它。

!!!如果source先于target析構,就悲劇了。但是實際情況是,如果source已經析構了,也無法觸發target綁定的函數了。但問題是,target析構的時候還是去觸發source綁定到target的解除關系的函數。悲催。但是實際測試這個問題不存在,估計是用類似weak_ptr的技術。
在完全理解之前,務必保證source生命周期大于target
// boost_singal_solt.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <string>
#include <boost/signals2.hpp>
class CSource
{
public:
    boost::signals2::connection Connect(const boost::signals2::signal<void(void)>::slot_type &sub)
    {
        return m_sig.connect(sub);
    }
    void OnSig()
    {
        m_sig();
    }
private:
    boost::signals2::signal<void(void)> m_sig;
};
class CTarget : public boost::signals2::trackable
{
public:
    virtual ~CTarget()
    {
        //std::cout << __FUNCTION__ << std::endl;
        m_con.disconnect();
    }
    CTarget()
    {
        m_strMsg = "1343rwkjdfkjdfasdklf";
    }
    void RegisterSolts(CSource& source)
    {
        m_con = source.Connect(boost::bind(&CTarget::SomeHandle, this));
    }
    void SomeHandle()
    {
        std::cout << __FUNCTION__ << std::endl;
        std::cout << m_strMsg << std::endl;
    }
    void SomeHandle1()
    {
        std::cout << __FUNCTION__ << std::endl;
    }
private:
    std::string m_strMsg;
    boost::signals2::connection m_con;
};
int _tmain(int argc, _TCHAR* argv[])
{
    for (;;)
    {
        CSource* pSource = new CSource;
        boost::signals2::connection conn;
        CTarget* pTarget = new CTarget;
        pTarget->RegisterSolts(*pSource);
        delete pSource;
        delete pTarget;
    }
    //source.OnSig();
return 0;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

沒有完全讀明白之前,在需要7×24運行的環境還是慎重使用。不過客戶端貌似無所謂,,,囧。
posted @ 2014-05-30 01:09 Enic 閱讀(809) | 評論 (0)編輯 收藏

外部lib
add_library(baz STATIC IMPORTED) set_target_properties(baz PROPERTIES IMPORTED_LOCATION_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/libbaz.a IMPORTED_LOCATION_DEBUG ${CMAKE_CURRENT_SOURCE_DIR}/libbazd.a) add_library(bar STATIC IMPORTED) set_target_properties(bar PROPERTIES IMPORTED_LOCATION_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/libbar.a IMPORTED_LOCATION_DEBUG ${CMAKE_CURRENT_SOURCE_DIR}/libbard.a IMPORTED_LINK_INTERFACE_LIBRARIES baz) # <-- dependency is here

注意動態庫和靜態庫稍有區別:
 add_library(bar SHARED IMPORTED)
 set_property(TARGET bar PROPERTY IMPORTED_LOCATION c:/path/to/bar.dll)
 set_property(TARGET bar PROPERTY IMPORTED_IMPLIB c:/path/to/bar.lib)
 add_executable(myexe src1.c src2.c)
 target_link_libraries(myexe bar)


內部lib直接寫target name就OK,但是必須在同一個proj下

還有一種方式
TARGET_LINK_LIBRARIES(skiaSampleCode 
debug skiaCored.lib
        optimized skiaCore.lib)



PROJECT_SOURCE_DIR  CMAKE_CURRENT_SOURCE_DIR  CMAKE_SOURCE_DIR 注意這三者的區別
posted @ 2014-05-15 23:40 Enic 閱讀(8375) | 評論 (0)編輯 收藏

實際起作用的是WS_EX_TOPMOST屬性,添加這個屬性的方式有三種:
1.在Create階段的Ex參數添加
2.在創建完成后通過SetWindowLongPtr添加(SetWindowLong已經不建議使用)。但是我用的時候發現加不上,好像ModifyWindowStyle這個MFC的函數可以,,,
3.通過
::SetWindowPos(m_hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);添加

::SetWindowPos(m_hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
//SetWindowLongPtr(m_hWnd, GWL_EXSTYLE, 
// GetWindowLongPtr(m_hWnd, GWL_EXSTYLE) | WS_EX_TOPMOST);
posted @ 2014-04-24 15:42 Enic 閱讀(308) | 評論 (0)編輯 收藏

Q1:什么是 DOM?
DOM 是 W3C(萬維網聯盟)的標準。
DOM 定義了訪問 HTML 和 XML 文檔的標準:
W3C DOM 標準被分為 3 個不同的部分:
核心 DOM - 針對任何結構化文檔的標準模型
XML DOM - 針對 XML 文檔的標準模型
HTML DOM - 針對 HTML 文檔的標準模型
Q2:什么是 XML DOM?
XML DOM 定義了所有 XML 元素的對象和屬性,以及訪問它們的方法。
Q3:什么是 HTML DOM?
HTML DOM 是:
HTML 的標準對象模型
HTML 的標準編程接口
HTML DOM 定義了所有 HTML 元素的對象和屬性,以及訪問它們的方法。
換言之,HTML DOM 是關于如何獲取、修改、添加或刪除 HTML 元素的標準。
Q4:DOM標準與IE的html事件模型區別
先有事件,事件是在瀏覽器內部自動產生的,當有時間發生時,html元素會向外界發出各種事件。
DOM事件流,當一個html元素產生一個事件時,該事件會在元素借點與根節點之間的路徑傳播,路徑所經過的節點都會收到該事件,這個傳播過程可稱為DOM事件流。
主流瀏覽器的事件模型:
1)冒泡型事件
從DOM樹型結構上理解,就是事件由葉子結點沿祖先結點一直向上傳遞直到根結點;從瀏覽器界面視圖HTML元素排列層次上理解就是事件由具有從屬關系的最確定的目標元素一直傳遞到最不確定的目標元素.
2)捕獲型事件
由DOM樹最頂層元素一直到最精確的元素
3)DOM標準事件模型
DOM標準支持捕獲型與冒泡型,可以說是它們兩者的結合體。它可以在一個DOM元素上綁定多個事件處理器,并且在處理函數內部,this關鍵字仍然指向被綁定的DOM元素,另外處理函數參數列表的第一個位置傳遞事件event對象。
首先是捕獲式傳遞事件,接著是冒泡式傳遞,所以,如果一個處理函數既注冊了捕獲型事件的監聽,又注冊冒泡型事件監聽,那么在DOM事件模型中它就會被調用兩次。
Q5:DOM事件響應綁定
1)綁定單個監聽
element.attachEvent("OnClick", observer)
element.detachEvent("OnClick", observer)
2)綁定多個監聽
element.AddEventListener("Click", observer, useCapture)
element.RemoveEventListener("Click", observer, useCapture)
第三個參賽是指定在冒泡節點還是控制階段調用
posted @ 2014-04-18 15:44 Enic 閱讀(425) | 評論 (0)編輯 收藏

之前一直很抗拒使用gyp等待chrominu,喜歡cmake。但是不使用chromium工具鏈去編譯,分析chromium確實非常痛苦啊,,,
好在這幾天網絡環境好,成功按照http://www.chromium.org/developers/how-tos/build-instructions-windows#TOC-Building-Chromium創建了編譯環境。
不多大部分細節都不知道,沒辦法的事情。最終還是要自己理解整個工程才OK啊

gyp工具用法
例子:tools\gyp\gyp.bat --depth . -D component=shared_library --no-circular-check -G msvs_version=2008 -Ibuild/common.gypi build_add/all.gyp
添加參數用-D
Building in Visual Studio
You can use:
    set GYP_GENERATORS=msvs-ninja,ninja
and then
        gclient runhooks
gclient sync --force
Usage: gyp-script.py [options ...] [build_file ...]
Options:
  -h, --help            show this help message and exit
  --build=CONFIGS       configuration for build after project generation
  --check               check format of gyp files
  --config-dir=CONFIG_DIR
                        The location for configuration files like
                        include.gypi.
  -d DEBUGMODE, --debug=DEBUGMODE
                        turn on a debugging mode for debugging GYP.  Supported
                        modes are "variables", "includes" and "general" or
                        "all" for all of them.
  -D VAR=VAL            sets variable VAR to value VAL
  --depth=PATH          set DEPTH gyp variable to a relative path to PATH
  -f FORMATS, --format=FORMATS
                        output formats to generate
  -G FLAG=VAL           sets generator flag FLAG to VAL
  --generator-output=DIR
                        puts generated build files under DIR
  --ignore-environment  do not read options from environment variables
  -I INCLUDE, --include=INCLUDE
                        files to include in all loaded .gyp files
  --msvs-version=MSVS_VERSION
                        Deprecated; use -G msvs_version=MSVS_VERSION instead
  --no-circular-check   don't check for circular relationships between files
  --parallel            Use multiprocessing for speed (experimental)
  -S SUFFIX, --suffix=SUFFIX
                        suffix to add to generated files
  --toplevel-dir=DIR    directory to use as the root of the source tree
posted @ 2014-04-08 23:44 Enic 閱讀(364) | 評論 (0)編輯 收藏

問題:我在視圖畫的圖象或者文字,當窗口改變后為什么不見了?OnDraw()OnPaint()兩個都是解決上面的問題,有什么不同?

答:OnDraw()OnPaint()好象兄弟倆,因為它們的工作類似。
至于不見了的問題簡單,因為當你的窗口改變后,會產生無效區域,這個無效的區域需要重畫。一般Windows會發送兩個消息WM_PAINT(通知客戶區 有變化)和WM_NCPAINT(通知非客戶區有變化)。非客戶區的重畫系統自己搞定了,而客戶區的重畫需要我們自己來完成。這就需要OnDraw() OnPaint()來重畫窗口。

OnDraw()
OnPaint()有什么區別呢?首先:我們先要明確CView類派生自CWnd類。而OnPaint()CWnd的類成員,同時負責響應WM_PAINT消息。OnDraw()CVIEW的成員函數,并且沒有響應消息的功能。這就是為什么你用VC成的程序代碼時,在視圖類只有 OnDraw沒有OnPaint的原因。

其次,要想在屏幕上繪圖或顯示圖形,首先需要建立設備環境DC。其實DC是一個數據結構,它包含輸 出設備(不單指你17寸的純屏顯示器,還包括打印機之類的輸出設備)的繪圖屬性的描述。MFC提供了CPaintDC類和CWindwoDC類來實時的響 應,而CPaintDC支持重畫。

當視圖變得無效時(包括大小的改變,移動,被遮蓋等等),Windows WM_PAINT 消息發送給它。該視圖的 OnPaint 處理函數通過創建 CPaintDC 類的DC對象來響應該消息并調用視圖的 OnDraw 成員函數。通常我們不必編寫重寫的 OnPaint 處理成員函數。

///CView
默認的標準的重畫函數

void CView::OnPaint()
{
    CPaintDC dc(this);
    OnPreparDC(&dc);
    OnDraw(&dc); //調用了OnDraw
}


既然OnPaint最后也要調用OnDraw,因此我們一般會在OnDraw函數中進行繪制。下面是一個典型的程序

///視圖中的繪圖代碼首先檢索指向文檔的指針,然后通過DC進行繪圖調用。
void CMyView::OnDraw( CDC* pDC )

    CMyDoc* pDoc = GetDocument(); 
    CString s = pDoc->GetData(); // Returns a CString
    CRect rect;
    GetClientRect( &rect ); 
    pDC->SetTextAlign( TA_BASELINE | TA_CENTER ); 
    pDC->TextOut( rect.right / 2, rect.bottom / 2, s, s.GetLength() );
}

最后:現在大家明白這哥倆之間的關系了吧。因此我們一般用OnPaint維護窗口的客戶區(例如我們的窗口客戶區加一個背景圖片),用OnDraw維護視圖的客戶區(例如我們通過鼠標在視圖中畫圖)。當然你也可以不按照上面規律來,只要達到目的并且沒有問題,怎么干都成。

補充:我們還可以利用Invalidate(),ValidateRgn(),ValidateRect()函數強制的重畫窗口

 

posted @ 2014-03-10 18:12 Enic 閱讀(262) | 評論 (0)編輯 收藏

如果使用了腳本,那么最終的事件應該是由:CCLuaEngine::executeEvent分發出去的,他應該是利用lua的一些機制綁定了對象和處理函數。


在腳本側,用類似:
menuPopupItem:registerScriptHandler(menuCallbackExit)

menuLayer:setTouchEnabled(true)
    menuLayer:registerScriptTouchHandler(onTouch)

        layerFarm:registerScriptTouchHandler(onTouch)
        layerFarm:setTouchEnabled(true)
這樣的代碼來設定事件響應處理函數


猜測一下,當以腳本模式運行的時候如果事件發生了,首先檢測發生事件的對象相應的處理腳本函數時候存在,如果存在就直接調用腳本函數
具體的各種事件類型,和個事件的各種參數以后在來分析吧
posted @ 2014-03-08 20:47 Enic 閱讀(214) | 評論 (0)編輯 收藏

int comput(int tmpn)
  int tmpc=0;
   while(tmpn>0)
   {
     tmpc++;
     tmpn=tmpn&(tmpn-1)
    }
  return tmpc;
}




x=x&(x-1)
==============
以前沒有見過這樣的表達式,分析一下發現發明這個表達式的人是個高手。
表達式的意思就是把x的二進制表示從最低位直到遇到第一個1的比特置0。
例如:
e1:
x     = 01001000
x-1   = 01000111
x&(x-1)=01000000
e2:
x     = 01001001
x-1   = 01001000
x&(x-1)=01001000

位運算里有學問呀,
例如眾所周知的交換算法:
void swap(int i1, int i2)
{
    i1 ^= i2;
    i2 ^= i1;
    i1 ^= i2;
}
還有,我今天看了Minix操作系統作者寫的《操作系統 設計與實現》(寫的比William Stalling的《操作系統 內核與設計原理》有條理而且清晰緊湊得多,后者內容蕪雜)中的頁面替換算法之一矩陣法,就是用位運算實現的:
假設內存分為n頁,那么高速緩存一個n x n的比特矩陣,開始時全置0,如下(假設n=4):
  0 1 2 3
0 0 0 0 0
1 0 0 0 0
2 0 0 0 0
3 0 0 0 0
每次內存訪問時,如果訪問的是i頁,那么先把矩陣的第i行置1,然后把矩陣的第i列置0,這樣i行的二進制的值越小就表示i頁最長時間最近沒有被訪問。例如假設訪問的次序為0-2-3-1,那么該矩陣的變化過程為:
  0 1 2 3
0 0 1 1 1    0 1 0 1    0 1 1 0    0 0 1 0
1 0 0 0 0    0 0 0 0    0 0 0 0    1 0 1 1
2 0 0 0 0    1 1 0 1    1 1 0 0    1 0 0 0
3 0 0 0 0    0 0 0 0    1 1 1 0    1 0 1 0
第三個例子是Windows GDI的二元和三元光柵操作的編碼。比較復雜,就不講了。

x=x&(x-1); 可以用來求出x是否為2冪次方數;當&的結果為0時,x原值是2冪次方數,否則就不是2冪次方數;
如x=4時   4: 0000 0100
        & 3:0000 0011
得出結果為0 ,是2冪次方數;
x=5時,  0000 0101
         0000 0100
得出結果為1,即非2冪次方數;

posted @ 2014-02-26 16:55 Enic 閱讀(686) | 評論 (0)編輯 收藏

GetTextMetrics與GetTextExtent的區別
GetTextMetrics:獲取當前字體的信息

GetTextExtent:獲取特定的字符串在屏幕上所占的寬度和高度

對于這兩個函數的作用,我在編程的時候,也有一定的困惑。因此,我也想,其他人在編程的時候也肯定有 同樣的困惑。所以我把他們解釋一下。不足之處,還請大家多多的添加 批評~~其實,我們對什么困惑呢?函數的調用方法,還是在返回值上?

CDC::GetTextMetrics

作用:

返回當強設備描述表中的當前所用的字體的信息

函數原型:

BOOL GetTextMetrics(
   LPTEXTMETRIC lpMetrics 
) const;

參數: 
lpMetrics (是一個指針)
返回指向TEXTMETRIC 結構的一個數據。

返回值:
非零值成功

要求: 
包含頭文件: afxwin.h




CDC::GetTextExtent
Call this member function to compute the width and height of a line of text using the current font to determine the dimensions.
調用這個函數,返回用當前字體寫下的一行字符串的高度和寬度

函數原型:
CSize GetTextExtent(
   LPCTSTR lpszString,
   int nCount 
) const;

CSize GetTextExtent(
   const CString& str 
) const;

參數 
lpszString

指向一個字符串指針,也可以傳遞一個字符串對象。
nCount

指定字符在字符串中的數目
str

一個字符串對象,包含指定的字符。
返回值:

以邏輯單位返回字符串的尺寸,保存在一個CSize對象中
posted @ 2014-02-26 13:57 Enic 閱讀(177) | 評論 (0)編輯 收藏

主要是這個參數起作用說: -mno-cygwin

嘗試編譯lua的時候發現機器上的mingw32-xy一直傻逼:make: Interrupt/Exception caught (code = 0xc0000005, addr = 0x0x75f843f9)
感覺上是要重新安裝一下,不過咱機器上有cygwin,,,呵呵

CC= mingw32-gcc.exe
CFLAGS= -mno-cygwin -O2 -Wall -DLUA_COMPAT_ALL $(SYSCFLAGS) $(MYCFLAGS)
LDFLAGS= $(SYSLDFLAGS) $(MYLDFLAGS)
LIBS= -lm $(SYSLIBS) $(MYLIBS)


后面編譯glew的時候沒看明白自帶的make,所以就自己修改了下,,,
mingw32-gcc -mno-cygwin -DGLEW_NO_GLU -O2 -Wall -W -Iinclude -DGLEW_BUILD -o src/glew.o -c src/glew.c
mingw32-gcc -mno-cygwin -shared -Wl,-soname,libglew32.dll -Wl,--out-implib,lib/libglew32.a -o lib/glew32.dll src/glew.o -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32


原文:
關于ejoy2d應該有不少人關注
最近看到想編下看看demo,感覺編譯對于用慣ide來說確實有些麻煩,不過嘛
這樣也好,簡單,方便,不用配置那么多東西,一個make就可以做完,如果調試呢?
lua寫嘛,網上弄個就可以了,但是如果要寫lua導出函數呢?gdb吧,命令行蠻實在的。
廢話不多少,下面編譯過程
readme 需要
* Install Lua 5.2.3
* Copy lua52.dll to /usr/local/bin
* Install glew 1.9
* make or make mingw
* ej2d examples/ex01.lua to test
這個當然是先下載需要的庫了
 glew 1.9 我這里直接用的1.10了 http://glew.sourceforge.net/
 
由于我電腦用使用codeblock,所以直接使用他
自帶的mingw吧
1. 直接命令行下運行codeblock/mingw/mingwvars.bat目錄,設置mingw運行需要的環境
2. 進
入lua-5.2.3目錄 mingw32-make mingw 編譯lua
3. 進入glew-1.10.0目錄
gcc -DGLEW_NO_GLU -O2 -Wall -W -Iinclude -DGLEW_BUILD -o src/glew.o -c src/glew.c
gcc -shared -Wl,-soname,libglew32.dll -Wl,--out-implib,lib/libglew32.a -o lib/glew32.dll src/glew.o -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32
4. 把lua-5.2.3/src/lua52.dll拷貝到CodeBlocks/MinGW/bin目錄下
    把lua-5.2.3/src/liblua.a拷貝到CodeBlocks/MinGW/lib目錄下,并改名為liblua52.a
    把lua-5.2.3/src/lua.h, lauxlib.h, luaconf.h, lualib.h 拷貝到CodeBlocks/MinGW/include目錄下
    把glew-1.10.0/lib/glew32.dll拷貝到CodeBlocks/MinGW/bin目錄下
    把glew-1.10.0/lib/libglew32.a拷貝到CodeBlocks/MinGW/lib目錄下
    把glew-1.10.0/include/GL/glew.h,glxew.h, wglew.h 拷貝到CodeBlocks/MinGW/include/GL目錄下
5. 命令行進入ejoy2d目錄 mingw32-make mingw 編譯ejoy2d 一些搞定
 6. 命令行輸入ej2d examples/ex01.lua這樣就可以看到窗口了.
posted @ 2014-02-25 10:04 Enic 閱讀(1027) | 評論 (0)編輯 收藏

僅列出標題
共22頁: First 7 8 9 10 11 12 13 14 15 Last 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品视频网址| 欧美影视一区| 欧美专区在线观看| 久久成人资源| 久久九九国产| 欧美高清日韩| 亚洲人成网站精品片在线观看 | 久久激情五月激情| 午夜精品一区二区三区在线| 亚洲深夜福利网站| 午夜激情综合网| 久久综合伊人| 欧美视频一区二区| 黄色成人片子| 亚洲最新视频在线| 久久成人18免费观看| 牛牛国产精品| 制服丝袜亚洲播放| 蜜臀va亚洲va欧美va天堂| 欧美日韩性生活视频| 国产日本亚洲高清| 亚洲久久成人| 久久男女视频| 99re6这里只有精品视频在线观看| 亚洲欧美成aⅴ人在线观看| 欧美成人69av| 国产一区二区三区高清 | 激情综合激情| 这里只有精品在线播放| 久久久www成人免费精品| 最新亚洲视频| 久久精品麻豆| 国产精品大片wwwwww| 在线观看精品视频| 香蕉免费一区二区三区在线观看| 亚洲精品视频在线播放| 久久精品99久久香蕉国产色戒| 亚洲色无码播放| 免费观看亚洲视频大全| 国产一区二区三区的电影 | 狠狠做深爱婷婷久久综合一区 | 亚洲欧洲日韩女同| 久久精品国产清高在天天线| 亚洲人体偷拍| 美日韩丰满少妇在线观看| 国产日韩一区欧美| 亚洲一区二区视频在线| 欧美激情精品久久久久久大尺度| 欧美永久精品| 国产日产精品一区二区三区四区的观看方式 | 久久精品亚洲国产奇米99| 亚洲免费成人av电影| 欧美国产1区2区| 亚洲国产91色在线| 美女精品国产| 久久婷婷久久一区二区三区| 狠狠色狠色综合曰曰| 欧美淫片网站| 午夜精品一区二区三区在线视| 国产精品久久久久久超碰| 亚洲校园激情| 亚洲一区二区三区精品动漫| 国产精品欧美在线| 欧美在线观看www| 欧美一区在线看| 在线精品国产欧美| 欧美激情国产日韩| 欧美精彩视频一区二区三区| 亚洲巨乳在线| 亚洲一区二区不卡免费| 国产欧美精品xxxx另类| 久久网站热最新地址| 久久精品观看| 亚洲乱码一区二区| 夜夜嗨av一区二区三区网页| 国产精品成人观看视频免费 | 猛干欧美女孩| 久久激情五月丁香伊人| 国产精品免费视频观看| 亚洲三级性片| 中日韩高清电影网| 国产一区日韩二区欧美三区| 久久艳片www.17c.com| 欧美精品三级| 久久久久久999| 男女视频一区二区| 亚洲免费一区二区| 久久精品国产一区二区电影| 日韩视频精品| 欧美一区=区| 99在线视频精品| 午夜视频在线观看一区二区三区 | 欧美99久久| 亚洲伊人网站| 久久九九免费| 亚洲一区二区欧美日韩| 久久久久久穴| 亚洲男女毛片无遮挡| 老司机aⅴ在线精品导航| 中文日韩在线| 久久久99精品免费观看不卡| 亚洲图片你懂的| 两个人的视频www国产精品| 欧美亚洲视频在线观看| 欧美高清视频www夜色资源网| 久久精品欧美| 国产精品乱子久久久久| 亚洲精品一二| 亚洲精品一区二区三区99| 午夜一区二区三区不卡视频| 亚洲中字在线| 欧美日韩一区在线视频| 欧美承认网站| 国内一区二区在线视频观看| 中日韩视频在线观看| 亚洲精品国产精品久久清纯直播| 欧美一区二区三区视频| 亚洲欧美综合精品久久成人| 欧美日韩精品免费看| 亚洲激情六月丁香| 亚洲欧洲日韩综合二区| 欧美成人激情在线| 欧美高清视频在线 | 亚洲精品永久免费| 久久综合九九| 美女脱光内衣内裤视频久久影院| 国内精品伊人久久久久av一坑| 先锋亚洲精品| 久久精品免费播放| 狠狠色2019综合网| 久久久777| 欧美国产视频一区二区| 91久久久亚洲精品| 开元免费观看欧美电视剧网站| 美女黄色成人网| 亚洲国产精品综合| 久久伊伊香蕉| 欧美大片免费久久精品三p | 欧美精品久久久久久久久老牛影院 | 国产精品av免费在线观看| 亚洲日本aⅴ片在线观看香蕉| 亚洲黄色一区| 欧美国产先锋| 一本色道久久综合狠狠躁篇怎么玩 | 欧美在线|欧美| 久久久久一本一区二区青青蜜月| 国产亚洲一区二区三区在线观看 | 欧美主播一区二区三区| 久久综合九色| 亚洲美女色禁图| 欧美日韩精品免费在线观看视频| 日韩亚洲欧美精品| 欧美在线一级va免费观看| 狠狠v欧美v日韩v亚洲ⅴ| 麻豆国产精品va在线观看不卡| 亚洲电影成人| 夜夜夜精品看看| 国产精品视频一区二区高潮| 久久福利资源站| 亚洲黄色毛片| 欧美一区二区三区在线看| 一区二区三区在线高清| 欧美日韩一区二区三区高清| 欧美亚洲一区在线| 亚洲高清123| 性一交一乱一区二区洋洋av| 韩国一区电影| 欧美激情精品久久久久久大尺度| 亚洲香蕉成视频在线观看| 另类酷文…触手系列精品集v1小说| 亚洲精品在线免费观看视频| 国产精品视频99| 欧美承认网站| 欧美在线观看视频在线| 99精品免费视频| 欧美sm重口味系列视频在线观看| 在线一区二区三区四区五区| 国产在线播精品第三| 欧美日韩精品伦理作品在线免费观看| 久久se精品一区精品二区| 99国产麻豆精品| 免费一区视频| 久久精品国产一区二区电影| 亚洲视频在线观看三级| 亚洲国产精品va在看黑人| 国产精品专区h在线观看| 欧美激情精品久久久久久变态| 午夜精品久久久久久久99水蜜桃 | 一区二区三区四区蜜桃| 免费欧美日韩| 久久美女性网| 欧美在线视频免费播放| 亚洲视频一起| 亚洲私人影院| 一区二区三区导航| 亚洲免费福利视频| 亚洲电影在线| 影音先锋欧美精品| 狠狠久久婷婷| 激情久久综合|