锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品日韩欧美,在线亚洲欧美,亚洲国产视频一区二区http://m.shnenglu.com/epubcn/category/6043.htmlzh-cnTue, 27 May 2008 06:49:33 GMTTue, 27 May 2008 06:49:33 GMT60GDI緙栫▼闇瑕佹敞鎰忕殑鍦版柟http://m.shnenglu.com/epubcn/archive/2008/02/03/42434.html娣辮摑鑹茬郴緇?/dc:creator>娣辮摑鑹茬郴緇?/author>Sun, 03 Feb 2008 03:05:00 GMThttp://m.shnenglu.com/epubcn/archive/2008/02/03/42434.htmlhttp://m.shnenglu.com/epubcn/comments/42434.htmlhttp://m.shnenglu.com/epubcn/archive/2008/02/03/42434.html#Feedback0http://m.shnenglu.com/epubcn/comments/commentRss/42434.htmlhttp://m.shnenglu.com/epubcn/services/trackbacks/42434.html鍐橤DI鐨勬椂鍊欙紝鎴戜滑緇忓父浼氱敱浜庣矖蹇冨ぇ鎰忥紝蹇樿閲婃斁GDI璧勬簮錛屽鑷碐DI鍙ユ焺娉勯湶銆傚啀鍔犱笂濡傛灉鍗曞厓嫻嬭瘯鍋氱殑涓嶅ソ錛屽氨浼氬湪浜у搧鍙戝竷浠ュ悗鍙戠敓闂銆?/p>

浼楁墍鍛ㄧ煡錛學indows涓婂浜庝竴涓繘紼嬪厑璁哥殑鏈澶DI鍙ユ焺鏁伴噺涓?999錛屽鏋滅▼搴忔湁澶ч噺鐨凣DI鍙ユ焺娌℃湁琚強鏃跺洖鏀訛紝閭d箞紼嬪簭灝變細琛ㄧ幇鐨勪笉姝e父銆傚鏋滆繖縐嶉棶棰樺彂鐢熷湪浠ュ墠鐨刉INDOWS 98騫翠唬錛岀敋鑷充細閫犳垚緋葷粺宕╂簝銆?/p>


鎵浠ワ紝榪欓噷鎴戝皢闄嗙畫璁板綍涓浜汫DI緙栫▼闇瑕佹敞鎰忕殑鍦版柟錛屼綔涓轟粖鍚庡崟鍏冩祴璇曚腑鐨勪竴閮ㄥ垎鏉ヨ繘琛岋細

1銆丆reate()蹇呴』Delete()錛屽寘鎷珻reateCompatibleDC

2銆丼electObject()蹇呴』鏄垚瀵瑰嚭鐜?/p>

3銆?H"鎵撳ご鐨勪竴浜汫DI鍙ユ焺錛屽湪浣跨敤瀹屽悗瑕佸強鏃墮噴鏀俱傚::DeleteObject(HBITMAP)錛?:DeleteDC(HDC)絳?/p>

4銆佽浣忎竴涓師鍒欙細鑷繁鍒涘緩鐨勪笢瑗胯鑷繁閲婃斁錛屽GetDC 瑕?ReleaseDC

5銆丮FC鐨凣DI鏈夊緢澶氶棶棰橈紝浣跨敤鐨勬椂鍊欒闈炲父灝忓績銆傚緩璁渶濂界洿鎺ョ敤SDK鍐欍備嬌鐢╓TL涓殑GDI涔熸槸涓涓笉閿欑殑閫夋嫨銆俉TL涓湁浜汫DI瀵硅薄鍦ㄥ0鏄庣殑鏃跺欏氨鍙互鍐沖畾鏄敱鏋愭瀯鍑芥暟鏉ュ府浣犻噴鏀撅紝榪樻槸鐢變綘鑷繁閲婃斁錛岄潪甯告柟渚褲?/p>

]]>
(杞澆)瑙傚療鑰?(Subject/Observer) 妯″紡瀹炵幇http://m.shnenglu.com/epubcn/archive/2008/01/29/42129.html娣辮摑鑹茬郴緇?/dc:creator>娣辮摑鑹茬郴緇?/author>Tue, 29 Jan 2008 08:17:00 GMThttp://m.shnenglu.com/epubcn/archive/2008/01/29/42129.htmlhttp://m.shnenglu.com/epubcn/comments/42129.htmlhttp://m.shnenglu.com/epubcn/archive/2008/01/29/42129.html#Feedback0http://m.shnenglu.com/epubcn/comments/commentRss/42129.htmlhttp://m.shnenglu.com/epubcn/services/trackbacks/42129.html鍘熸枃閾炬帴錛?a title=http://m.shnenglu.com/eXile/archive/2007/09/16/32297.html href="http://m.shnenglu.com/eXile/archive/2007/09/16/32297.html">http://m.shnenglu.com/eXile/archive/2007/09/16/32297.html

銆銆浠ュ墠鎴戞浘緇忓疄鐜拌繃瑙傚療鑰呮ā寮忥紙signal / slot )銆傛湁浣嶆湅鍙嬩笉浠ヤ負鐒訛紝涔熸妸浠栫殑瀹炵幇鍙戠粰鎴戙傝繖鏄敤綰集錛殑鏂瑰紡瀹炵幇鐨勶紝娌℃湁浣跨敤妯℃澘錛屼笉渚濊禆浜庡叾瀹冨簱銆傚簲璇ユ槸浠縅ava鎴朇#鎺ュ彛銆傝璁″緱涓嶉敊錛屽叿鏈変互涓嬬壒鐐癸細
銆銆錛戯級褰揝ubject鎴朞bserver 閿姣佹椂錛岃繛鎺ヨ嚜鍔ㄦ柇寮錛堟敞鍐岃嚜鍔ㄥ彇娑堬級錛屽綋鐒訛紝榪欎篃鏄疄鐜拌妯″紡鐨勯噸鐐廣?br>銆銆錛掞級鑰冭檻浜嗕互涓嬪洜绱狅細涓涓猄ubject鏄惁鍏佽澶氫釜Observer瑙傚療錛熶竴涓狾bserver鏄惁鍏佽鍚屾椂瑙傚療澶氫釜Subject? 鐢辨鍙垎涓轟竴瀵逛竴錛屼竴瀵瑰錛屽瀵瑰錛屼竴鑸殑GUI搴撲腑閮芥槸鍚庝袱縐嶆儏鍐碉紝浣嗚嚜宸卞啓鐨勭▼搴忎腑鍗寸涓縐嶆儏鍐靛眳澶氥傛墍浠ヤ粬鍑轟簬鏁堢巼錛岃璁′簡SimpleSubject鍜孲impleObserver銆?br>銆銆涓嶈凍涔嬪濡備笅錛?br>銆銆錛戯級Observer::update()鍙兘甯︽棤綾誨瀷鐨勫弬鏁幫紙濂借薄涔熸病鏈夋洿濂界殑鍔炴硶錛夈?br>銆銆錛掞級鐢變簬C++涓病鏈夊尶鍚嶇被錛屾墍浠ヤ嬌鐢ㄨ搗鏉ュ茍娌℃湁Java涓柟渚褲備簬鏄垜鍙堟坊鍔犱簡涓涓狾bserverAdapter銆?br>銆銆浣跨敤涓句緥錛?


class A : public Subject
{
        int value;
public:
   void setValue(int v)
   {
       value = v;
       notify(&value);
   }      
};

class B : public Observer
{
public:
   void update(void* arg)
   {
       printf("A changed:%d", *(int*)arg);
   }      
};

void f(A* a, B* b)
{
    a->connect(b);
    a->setValue(1);
}

浣跨敤ObserverAdapter ,鍒欏彉鎴愪簡浠ヤ笅鎯呭喌錛?

class B
{
   ObserverAdapter<B> observerOfA;
public:
   B(A* a) : observerOfA(this, &B::valueChanged)
   {
       a->connect(&observerOfA);
   }

   void valueChanged(void* arg)
   {
       printf("A changed:%d", *(int*)arg);
   }      
};

銆銆浠g爜鍒嗕負涓や釜鏂囦歡錛欼Observer.h 鍜?Observer.h錛屽氨璐村湪涓嬮潰鍚э細
IObserver.h 銆錛?鎺ュ彛瀹氫箟


#pragma once

class ISubject;

class IObserver
{
public:
    IObserver()  {}
    virtual ~IObserver() {};

    virtual void update(void*) = 0;

protected:
    virtual void addSubject(ISubject* ) = 0;
    virtual void removeSubject(ISubject* ) = 0;

    friend class ISubject;

private:
    IObserver(IObserver const&);
    IObserver& operator= (IObserver const&);
};

class ISubject
{
public:
    ISubject() {}
    virtual ~ISubject() {};

    virtual void connect(IObserver*) = 0;
    virtual void disconnect(IObserver*) = 0;
    virtual bool isConnected(IObserver*) const= 0;
    virtual void notify(void*) = 0;

protected:
    void addObserver(IObserver* observer);
    void removeObserver(IObserver* observer);

private:
    ISubject(ISubject const&);
    ISubject& operator= (ISubject const&);
};

Observer.h 銆錛?鍏蜂綋瀹炵幇


#pragma once

#include <cassert>
#include <set>

#include "IObserver.h"

//-------------------------------------------------------------------

inline void ISubject::addObserver(IObserver* observer)
{
    observer->addSubject(this);
}

inline void ISubject::removeObserver(IObserver* observer)
{
    observer->removeSubject(this);
}

//-------------------------------------------------------------------

class SimpleSubject : public ISubject
{
public:
    SimpleSubject() : m_observer(0)
    {
    }

    ~SimpleSubject()
    {
if (m_observer) removeObserver(m_observer);
    }

    virtual void connect(IObserver* observer)
    {
        assert(observer);
if (m_observer)
            removeObserver(m_observer);
        addObserver(observer);
        m_observer = observer;
    }

    virtual void disconnect(IObserver* observer)
    {
        assert(observer && observer == m_observer);
        removeObserver(m_observer);
        m_observer = 0;
    }

    virtual bool isConnected(IObserver* observer) const
    {
        return observer == m_observer;
    }

    virtual void notify(void* arg)
    {
if (m_observer) m_observer->update(arg);
    }

private:
    IObserver*  m_observer;

};

//-------------------------------------------------------------------

class Subject : public ISubject
{
public:
    Subject() : m_observers()
    {
    }

    ~Subject()
    {
        std::set<IObserver*>::iterator
            it = m_observers.begin(),
            e  = m_observers.end();
for (; it != e; ++it)
        {
            removeObserver(*it);
        }
    }

    virtual void connect(IObserver* observer)
    {
        assert(observer);
        addObserver(observer);
        m_observers.insert(observer);
    }

    virtual void disconnect(IObserver* observer)
    {
        assert(observer);
        removeObserver(observer);
        m_observers.erase(observer);
    }

    virtual bool isConnected(IObserver* observer) const
    {
        return m_observers.find(observer) != m_observers.end();
    }

    virtual void notify(void* arg)
    {
        std::set<IObserver*>::iterator
            it = m_observers.begin(),
            e  = m_observers.end();
while (it != e)
        {
            (*it++)->update(arg); // observer can be disconnected in update()
        }
    }

private:
    std::set<IObserver*>  m_observers;

};

//-------------------------------------------------------------------

class SimpleObserver  : public IObserver
{
public:
    SimpleObserver() : m_subject(0)
    {
    }

    ~SimpleObserver()
    {
if (m_subject) m_subject->disconnect(this);
    }

    ISubject* getSubject() const
    {
        return m_subject;
    }

private:
    virtual void addSubject(ISubject* subject)
    {
if (m_subject) m_subject->disconnect(this);
        m_subject = subject;
    }

    virtual void removeSubject(ISubject* subject)
    {
        assert(subject == m_subject);
        m_subject = 0;
    }

private:
    ISubject*   m_subject;
};


//-------------------------------------------------------------------

class Observer : public IObserver
{
public:
    Observer() : m_subjects()
    {
    }

    ~Observer()
    {
        std::set<ISubject*>::iterator
            it = m_subjects.begin(),
            e  = m_subjects.end();
while (it != e)
        {
            (*it++)->disconnect(this);
        }
    }

private:
    virtual void addSubject(ISubject* subject)
    {
        assert(subject);
        m_subjects.insert(subject);
    }

    virtual void removeSubject(ISubject* subject)
    {
        assert(subject);
        m_subjects.erase(subject);
    }

private:
    std::set<ISubject*>   m_subjects;
};

//-------------------------------------------------------------------

template <class T, class Base = SimpleObserver>
class ObserverAdapter  : public Base
{
public:
    ObserverAdapter(T* t, void (T::*f)(void*))
     : m_obj(t), m_func(f)
    {
    }

    virtual void update(void* arg)
    {
        (m_obj->*m_func)(arg);
    }

private:
    T*  m_obj;
    void (T::*m_func)(void*);
};

//-------------------------------------------------------------------



]]>
(杞澆)vector鐨勬湁搴忓寲鎿嶄綔http://m.shnenglu.com/epubcn/archive/2008/01/29/42127.html娣辮摑鑹茬郴緇?/dc:creator>娣辮摑鑹茬郴緇?/author>Tue, 29 Jan 2008 08:15:00 GMThttp://m.shnenglu.com/epubcn/archive/2008/01/29/42127.htmlhttp://m.shnenglu.com/epubcn/comments/42127.htmlhttp://m.shnenglu.com/epubcn/archive/2008/01/29/42127.html#Feedback0http://m.shnenglu.com/epubcn/comments/commentRss/42127.htmlhttp://m.shnenglu.com/epubcn/services/trackbacks/42127.html鍘熸枃閾炬帴錛?a title=http://m.shnenglu.com/eXile/archive/2008/01/29/42104.html href="http://m.shnenglu.com/eXile/archive/2008/01/29/42104.html">http://m.shnenglu.com/eXile/archive/2008/01/29/42104.html

 

銆銆鍦ㄦ湁浜涙儏鍐典笅錛岄渶瑕佺敤鍒頒竴涓湁搴忕殑vector銆傚畠鐨勬湁搴忔搷浣滄湁涓夌錛氭煡鎵撅紝鎻掑叆錛屽垹闄ゃ?br>銆銆鎻掑叆瀹炵幇錛?

template <typename Container>
inline void ordered_insert(Container& c,  typename Container::value_type const& t)
{
    c.insert(std::upper_bound(c.begin(), c.end(), t), t);
}

template <typename Container, typename Cmp>
inline void ordered_insert(Container& c,銆typename Container::value_type const& t,銆Cmp cmp)
{
    c.insert(std::upper_bound(c.begin(), c.end(), t, cmp), t);
}

銆銆鍒犻櫎瀹炵幇錛?

template <typename Container, typename It>
inline void erase_range(Container& c, std::pair<It, It> const& r)
{
    c.erase(r.first, r.second);
}

template <typename Container>
inline void ordered_erase(Container& c,  typename Container::value_type const& t)
{
    erase_range(c, std::equal_range(c.begin(), c.end(), t));
}

template <typename Container, typename T, typename Cmp>
inline void ordered_erase(Container& c, T const& t, Cmp cmp)
{
    erase_range(c, std::equal_range(c.begin(), c.end(), t, cmp));
}

銆銆鏌ユ壘鍙氳繃binary_search, lower_bound, upper_bound, 鎴栬卐qual_range瀹炵幇銆傚鏋滆瀹炵幇綾諱技map鐨勫叧閿瓧鎼滅儲錛屾湁涓涓妧宸э紝灝辨槸鐢ㄦ瘮杈冨嚱鏁拌繘琛岄噸杞斤紝姣斿瀛︾敓瑕佹寜瀛﹀彿鏌ユ壘錛屽垯鐢ㄤ互涓嬪畾涔夛細

struct Student
{
int            id;
    std::string name;

    struct LessThan
    {
        bool operator() (Student const& x, Student const& y)
        {
            return x.id < y.id;
        }

        bool operator() (Student const& x, int id)
        {
            return x.id < id;
        }

        bool operator() (int id, Student const& y)
        {
            return id < y.id;
        }
    };
};

鏌ユ壘瀛﹀彿涓?鐨勫鐢燂細

std::vector<Student> students;

bool exist = std::binary_search(students.begin(), students.end(), 5, Student::LessThan());

鍒犻櫎瀛﹀彿涓?鐨勫鐢燂細

ordered_erase(students, 5, Student::LessThan());



]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            日韩亚洲欧美高清| 亚洲网在线观看| 亚洲国产欧美一区二区三区丁香婷| 欧美网站大全在线观看| 最新国产成人在线观看| 亚洲黄色小视频| 蜜臀久久久99精品久久久久久| 久久青青草综合| 韩国av一区二区三区| 欧美夜福利tv在线| 久久久久久久网站| 一区二区在线免费观看| 久久在线精品| 亚洲激情图片小说视频| 一区二区三区视频免费在线观看| 欧美日韩美女在线| 亚洲视频一二三| 欧美在线free| 在线观看不卡| 欧美福利一区| av72成人在线| 欧美亚洲视频| 一区二区亚洲| 欧美黑人在线播放| 亚洲性感美女99在线| 久久精品30| 亚洲国产成人高清精品| 欧美成人中文| 一区二区福利| 亚洲欧美在线一区| 久久久久久一区| 91久久久亚洲精品| 欧美三级日本三级少妇99| 亚洲综合99| 欧美www视频| 亚洲一区精彩视频| 国内精品模特av私拍在线观看| 蜜桃伊人久久| 亚洲午夜黄色| 免费在线看成人av| 一本久久综合亚洲鲁鲁| 国产精品推荐精品| 蜜臀久久99精品久久久画质超高清| 亚洲美女av黄| 久热这里只精品99re8久| 一本色道久久99精品综合| 国产麻豆精品久久一二三| 久久免费视频一区| 在线中文字幕一区| 欧美成人一区二区三区| 午夜精品福利电影| 亚洲精品久久久久久久久| 国产精品网曝门| 欧美福利在线| 久久精品视频网| 国产精品99久久久久久久久久久久| 久久嫩草精品久久久精品| 在线综合亚洲| 91久久精品国产91久久性色tv | 亚洲小说春色综合另类电影| 久久午夜精品| 亚洲女同性videos| 亚洲国产精品久久精品怡红院 | 久久久7777| 亚洲天堂偷拍| 亚洲激情另类| 久久米奇亚洲| 亚久久调教视频| 在线亚洲观看| 91久久精品网| 樱桃视频在线观看一区| 亚洲私人影院| 99亚洲精品| 亚洲三级性片| 欧美国产日韩一区| 久久综合色影院| 久久久久在线| 久久国产天堂福利天堂| 亚洲一区高清| 亚洲视频在线一区观看| 亚洲美女免费精品视频在线观看| 黄色小说综合网站| 国产字幕视频一区二区| 国产乱肥老妇国产一区二| 欧美日韩在线一区| 欧美人成在线| 欧美乱人伦中文字幕在线| 欧美 亚欧 日韩视频在线| 久久久久久一区二区三区| 欧美在线亚洲| 欧美专区日韩视频| 欧美与黑人午夜性猛交久久久| 亚洲一级片在线看| 亚洲一区久久久| 亚洲午夜日本在线观看| 亚洲午夜电影网| 亚洲视频1区| 一区二区三区日韩在线观看| 亚洲精品影视在线观看| 亚洲精品在线三区| 日韩一区二区免费看| 99精品黄色片免费大全| 日韩亚洲国产欧美| 久久久久久久久一区二区| 午夜一区二区三区不卡视频| 亚洲午夜av电影| 亚洲已满18点击进入久久| 亚洲一区二区三区精品动漫| 亚洲影院在线观看| 午夜精品成人在线| 欧美在线二区| 久久一区国产| 亚洲盗摄视频| 日韩午夜高潮| 亚洲一区二区三区免费视频| 亚洲欧美日韩在线播放| 久久国产婷婷国产香蕉| 美女国产一区| 欧美日韩不卡一区| 国产精品毛片| 韩国av一区二区三区四区| 亚洲国产精品一区二区久| 亚洲免费成人av| 亚洲欧美日韩在线播放| 久久久久久久尹人综合网亚洲| 欧美不卡一卡二卡免费版| 亚洲人成亚洲人成在线观看| 国产精品99久久久久久白浆小说 | 午夜国产精品视频免费体验区| 香蕉久久国产| 久久综合中文色婷婷| 欧美日韩在线不卡一区| 国产精品视频专区| 在线日韩精品视频| 亚洲视频在线二区| 久久久久国产精品一区| 亚洲春色另类小说| 中文国产亚洲喷潮| 久久午夜精品一区二区| 欧美日韩日本国产亚洲在线| 国产一区二区你懂的| 亚洲精品欧美日韩专区| 午夜精品一区二区在线观看| 女生裸体视频一区二区三区| 一本久道久久综合狠狠爱| 欧美在线一二三四区| 欧美日韩岛国| 一区福利视频| 亚洲亚洲精品在线观看| 免费欧美在线| 亚洲一区二区视频在线观看| 久久综合免费视频影院| 国产精品久久久久一区二区三区共 | 亚洲欧洲一二三| 性久久久久久久久久久久| 欧美激情综合| 激情久久婷婷| 欧美一进一出视频| 亚洲免费av观看| 另类亚洲自拍| 国产色综合久久| 亚洲视频综合在线| 欧美福利一区二区| 性欧美超级视频| 欧美午夜精品久久久久久超碰| 欲香欲色天天天综合和网| 亚洲欧美色一区| 亚洲美女区一区| 欧美岛国在线观看| 在线观看日韩专区| 久久久无码精品亚洲日韩按摩| 一本色道久久88精品综合| 农夫在线精品视频免费观看| 国产亚洲一区二区三区在线观看 | 久久久噜噜噜久久人人看| 国产精品成人播放| 日韩一区二区免费高清| 欧美电影电视剧在线观看| 久久精品国产清高在天天线 | 亚洲区第一页| 久久综合99re88久久爱| 国产亚洲女人久久久久毛片| 亚洲免费伊人电影在线观看av| 亚洲茄子视频| 欧美日韩爆操| 在线一区免费观看| 日韩亚洲欧美综合| 欧美激情视频一区二区三区免费 | 亚洲黄色成人| 久久亚洲美女| 在线观看精品一区| 免费高清在线一区| 久久免费少妇高潮久久精品99| 国模叶桐国产精品一区| 久久久久久黄| 久久婷婷影院| 亚洲欧洲精品一区二区三区不卡| 欧美成人免费在线| 欧美高清在线视频| 亚洲伦理久久|