亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? resizer.h

?? 用于開發Modbus工業級通信
?? H
字號:
/******************************************************************************\
$Copyright: (C)2001 Dmitry Kochin <dco@mail.ru>
$Workfile: Resizer.h $
\******************************************************************************/

// Resizer.h: interface for the CResizer class.
//
//////////////////////////////////////////////////////////////////////
// Class to correctly move child windows after parent window was resized
// Created: 06/07/01 by dukei@
//////////////////////////////////////////////////////////////////////

//An idea:
//
//Each child window side (left, top, right and bottom) is connected to a side of another window,
//so called relative window. It is tipically dialog window, that owns the child window.
//When dialog window is resized, child window sides are moved after the relative window,
//preserving the connections. 
//
//Typical usage:
//
// 1. CResizer m_resizer is member variable;
//
// 2. Add the following code to OnInitDialog() 
// (replacing control IDs to your specific ones).
// See array format description later in the comment
//  
//  static CResizer::CBorderInfo s_bi[] = {
//    {IDC_CONTROL_ID,      {CResizer::eFixed, IDC_MAIN, CResizer::eLeft}, //Left side
//                          {CResizer::eFixed, IDC_MAIN, CResizer::eTop},  //Top side
//                          {CResizer::eFixed, IDC_MAIN, CResizer::eLeft}, //Right side
//                          {CResizer::eFixed, IDC_MAIN, CResizer::eTop}}, //Bottom side
//    {IDC_STATIC_ID,       {CResizer::eFixed, IDC_MAIN, CResizer::eLeft}, 
//                          {CResizer::eFixed, IDC_MAIN, CResizer::eTop},  
//                          {CResizer::eFixed, IDC_MAIN, CResizer::eRight},
//                          {CResizer::eFixed, IDC_MAIN, CResizer::eTop}}, 
//  };
//  const nSize = sizeof(s_bi)/sizeof(s_bi[0]);
//  m_resizer.Init(m_hWnd, NULL, s_bi, nSize);
//
// 3. Add the following code to OnSize() handler
//
//  m_resizer.Move();
//
// 4. Everything should work now
//
// P.S. Data array format consists of one or more CBorderInfo structures, which contains
// moved control ID (first field) and four CBorder structures, 
// for left, top, right and bottom sides of moved control accordingly.
//
// The main difficulty is to understand CBorder structure, which has the following format:
// 
// {<how control side is connected to side of another window>, <another window id>, 
//                  <side of another window, to which a control side is connected>}
// 
//     CResizer::eFixed                                  CResizer::eLeft 
//     CResizer::eProportional  IDC_MAIN                 CResizer::eTop   
// or {CResizer::eWidth       , IDC_ANOTHER_CONTROL_ID , CResizer::eRight   }
//     CResizer::eHeight                                 CResizer::eBottom
//                                                       CResizer::eXCenter
//                                                       CResizer::eYCenter
//
// For example, {CResizer::eFixed, IDC_MAIN, CResizer::eLeft} means, that moved control side is
// on the fixed distance (CResizer::eFixed) from left side (CResizer::eLeft) of dialog window (IDC_MAIN)
//
// Another example: {CResizer::eProportional, IDC_CONTROL_ID, CResizer::eLeft} means, that
// moved control side preserves relation (proportionaly) (CResizer::eProportional)
// to the width (CResizer::eLeft or CResizer::eRight) of control IDC_CONTROL_ID.
//
// TIP: Resizer resizes controls in the order they are defined in the array, so
// <another window id> should always be defined (and, therefore, moved by the resizer) before
// it is used as relative window. Otherwise, resizer ASSERTs.

#pragma once

#define IDC_MAIN 0   //Parent dialog ID to be relative window

class CResizer  
{
public:
  enum EBorder{
    eFixed = 1,  //Given distance to specified window side
    eProportional, //Coordinate is changed proportionally to width/height of specified window
    eWidth,   //The width is preserved (relative window and window side are ignored)
    eHeight,  //The height is preserved (relative window and window side are ignored)
  };
  enum ESize{
    eLeft = 1,  //Relative to left side
    eTop,       //Top
    eRight,     //Right
    eBottom,    //Bottom
    eXCenter,   //The center of width
    eYCenter    //The center of height
  };
  struct CBorder{
    EBorder eType;  //Type of relation to relative control side
    int nRelID;     //Relative control
    ESize eRelType; //Side of relative control
  };
  struct CBorderInfo{
    int nID;         //Control ID
    CBorder left;    
    CBorder top;
    CBorder right;
    CBorder bottom;
  };
private:
  struct CControlInfo{
    RECT rcInitial; //initial control position;
    const CBorderInfo *pInfo;
  };
  struct CRectInfo{
    int nID;       //Control ID
    RECT rc;      //New control rect
    bool bVisible; //If control is visible
    bool bHide;    //If control should be hidden because it overlaps senior control
  };
  HWND m_wndParent;
  RECT m_rcInitial; //Initial window client area
  typedef CControlInfo * TInfo;
  typedef CRectInfo * TRectInfo;
  TInfo m_vInfo;
  int m_nSize; //Size of m_vInfo array
  mutable TRectInfo m_vRectInfo;
  mutable int m_nCachedSize; //Size of m_vRectInfo
protected:
  HWND GetDlgItem(int nID) const{return ::GetDlgItem(m_wndParent, nID);}
  void GetDlgItemRect(int nID, RECT &rc) const;
  void GetCachedDlgItemRect(int nID, RECT &rc) const;
  void GetInitialDlgItemRect(int nID, RECT &rc) const;
  void Move(int nIndex) const;
  int GetCoordinate(ESize eType, const RECT &rcInitial, const CBorder &border, const RECT &rc) const;
  static int GetRectCoord(ESize eType, const RECT &rc);
  static int GetRectSize(ESize eType, const RECT &rc);
  int GetRelativeCoord(const CBorder &border) const;
  int Find(int nID) const;
  int FindCached(int nID) const;
  void MoveAndHideOverlapped() const;
  void Clear();
public:
  //Initializes resizer
  bool Init(HWND hWndParent, LPCRECT rcInitial, const CBorderInfo *pBorders, int nSize);
  //Performs moving of controls
  void Move() const;
  //Just constructor
  CResizer();
  //Just destructor
  ~CResizer();
};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91在线|亚洲| 亚洲国产精品久久人人爱蜜臀| 91猫先生在线| 免费观看在线色综合| 中文av字幕一区| 777精品伊人久久久久大香线蕉| 成人精品gif动图一区| 人人超碰91尤物精品国产| 最新不卡av在线| 久久综合色婷婷| 精品视频一区三区九区| 成人看片黄a免费看在线| 另类综合日韩欧美亚洲| 亚洲一区在线视频| 国产精品久久久久影院| 日韩欧美电影一区| 欧美日本一区二区| 91国在线观看| 91影视在线播放| 不卡视频在线看| 国产成人福利片| 国产美女在线观看一区| 久久99精品久久久久久动态图 | 成人性色生活片| 老司机精品视频在线| 日韩和的一区二区| 午夜电影网一区| 婷婷夜色潮精品综合在线| 亚洲高清不卡在线观看| 一区二区三区欧美| 亚洲日本一区二区| 亚洲日本va午夜在线电影| 国产日韩在线不卡| 亚洲精品一区二区三区影院| 日韩一级欧美一级| 91精品国产综合久久久久久 | 91麻豆精品一区二区三区| 成人小视频在线观看| 丰满亚洲少妇av| 懂色av中文字幕一区二区三区| 国产在线看一区| 国产又黄又大久久| 国产精品正在播放| 国产成人综合视频| 福利视频网站一区二区三区| 国产成人a级片| 国产91精品精华液一区二区三区| 国产成人精品亚洲日本在线桃色| 成人久久18免费网站麻豆| av在线不卡免费看| 色婷婷精品大视频在线蜜桃视频| 色噜噜夜夜夜综合网| 欧美日韩国产一级二级| 91精品国产入口在线| 精品蜜桃在线看| 欧美激情在线免费观看| 中文字幕一区二区三区不卡| 亚洲精品国产视频| 亚洲国产成人高清精品| 麻豆91精品视频| 国产乱子轮精品视频| 成人白浆超碰人人人人| 欧美在线综合视频| 宅男噜噜噜66一区二区66| 精品免费国产二区三区| 中文字幕日本乱码精品影院| 亚洲激情五月婷婷| 日韩在线一区二区三区| 国产福利一区二区三区视频在线 | 国产 日韩 欧美大片| 99精品桃花视频在线观看| 欧美在线啊v一区| 91精品国产综合久久精品| 国产日韩在线不卡| 一区二区三区在线免费视频| 久久机这里只有精品| 不卡一区二区中文字幕| 欧美酷刑日本凌虐凌虐| 久久亚洲影视婷婷| 亚洲人妖av一区二区| 午夜久久久久久久久| 国产一区二区三区不卡在线观看| 色综合久久综合| 日韩三级视频在线看| 成人欧美一区二区三区| 青娱乐精品在线视频| 成人理论电影网| 91精品国产全国免费观看 | 国产精品久久福利| 亚洲国产成人porn| 不卡一区二区三区四区| 日韩欧美一区中文| 亚洲美女免费在线| 国产一二三精品| 欧美伦理电影网| 国产精品久久久久久久久免费相片| 亚洲最新视频在线播放| 国产成人av电影在线| 欧美一区二区三区人| 亚洲视频一二三区| 国产麻豆成人精品| 91精品国产综合久久香蕉的特点| 亚洲色图在线播放| 国产一区在线观看麻豆| 4438成人网| 亚洲一二三四区不卡| 成人激情文学综合网| 精品日韩在线观看| 婷婷夜色潮精品综合在线| 91久久人澡人人添人人爽欧美| 久久精品一二三| 久久国产视频网| 欧美久久免费观看| 一区二区三区视频在线看| 国产成都精品91一区二区三 | 有码一区二区三区| 国产91露脸合集magnet| 337p日本欧洲亚洲大胆精品| 日韩精品一级中文字幕精品视频免费观看| av成人老司机| 国产精品国产三级国产aⅴ中文 | 欧美日韩一级大片网址| 综合久久给合久久狠狠狠97色| 国产成人精品三级| 久久久久久99久久久精品网站| 奇米777欧美一区二区| 欧美乱熟臀69xxxxxx| 午夜精品久久久久久久| 欧美日韩和欧美的一区二区| 亚洲一区二区成人在线观看| 日本高清无吗v一区| 亚洲欧美日韩一区| 色婷婷精品大在线视频| 一区二区三区电影在线播| 91社区在线播放| 亚洲欧美日韩电影| 色婷婷久久99综合精品jk白丝 | 国内不卡的二区三区中文字幕| 欧美一级二级在线观看| 欧美96一区二区免费视频| 欧美一卡二卡三卡四卡| 美女诱惑一区二区| 精品欧美一区二区三区精品久久| 久久精品国产亚洲一区二区三区| 欧美一级艳片视频免费观看| 麻豆91在线观看| 国产亚洲欧美在线| 成人va在线观看| 亚洲免费视频中文字幕| 欧美性感一类影片在线播放| 日韩精品一二三四| 欧美成人欧美edvon| 国产福利一区二区三区在线视频| 中文成人av在线| 91国偷自产一区二区开放时间| 亚洲国产一区二区视频| 制服丝袜亚洲精品中文字幕| 激情综合网最新| 中文字幕乱码日本亚洲一区二区 | 欧美v日韩v国产v| 国产999精品久久久久久| 亚洲欧美电影一区二区| 欧美麻豆精品久久久久久| 精品综合久久久久久8888| 中文字幕在线一区二区三区| 欧洲国产伦久久久久久久| 日产精品久久久久久久性色| 欧美激情在线免费观看| 欧美亚洲日本国产| 久久 天天综合| 国产精品久久久久桃色tv| 色综合网站在线| 日本免费新一区视频| 亚洲国产精品激情在线观看| 欧美伊人久久久久久午夜久久久久| 麻豆免费看一区二区三区| 欧美激情综合在线| 欧美日韩免费电影| 国产精品自拍在线| 亚洲一本大道在线| 久久久精品人体av艺术| 欧美三级电影一区| 国产高清视频一区| 日韩高清在线不卡| 亚洲视频香蕉人妖| 久久亚洲精品国产精品紫薇| 91福利社在线观看| 国产精品白丝jk黑袜喷水| 亚洲第一激情av| 国产精品视频在线看| 7799精品视频| 色又黄又爽网站www久久| 国产精品一级片| 午夜精品福利一区二区三区av | 另类人妖一区二区av| 自拍偷拍亚洲综合| 精品福利av导航| 精品视频资源站| 99精品视频在线免费观看| 国产精品一区二区三区乱码|