Copy... Copy → Paste !

Share
Xem chủ đề cũ hơnXem chủ đề mới hơn
avatar
Silver Dragon
Silver Dragon
Gender : Nam

Posts Posts : 1092
Thanked : 660
Coins Coins : 6954
Tham Gia : 26/08/2008
Birthday : 05/08/1920

Xem lý lịch thành viên
21022017
Mấy hàm này cơ bản nhưng mình hay quên nên ghi lại, có quên mở ra coi   lol!


Các hàm nói trên dù thuộc thư viện
Code:
<string.h>
nhưng đều có thể sử dụng để thao tác tới các vùng nhớ thuộc bất kì kiểu dữ liệu nào.


memset()

Cú pháp của hàm như sau:

Code:
void * memset(void * ptr, int value, size_t num);

Tác dụng của hàm là set num byte giá trị của vùng nhớ tính từ vị trí ptr trỏ tới bằng giá trị value

memcpy()

Cú pháp của hàm như sau:

Code:
void * memcpy(void * destination, const void * source, size_t num);

Tác dụng của hàm là sao chép num byte từ vị trí mà source trỏ tới đến vị trí mà destination trỏ tới

memcmp()

Cú pháp của hàm này như sau:

Code:
int memcmp(const void * ptr1, const void * ptr2, size_t num);

Tác dụng: so sánh giá trị các vùng nhớ mà ptr1 và ptr2 trỏ tới theo từng byte, sẽ dừng lại khi so sánh đủ num byte. Khác với strcmp() luôn dừng lại khi gặp kí tự ‘\0’.
Giá trị trả về:

  • -1: Khi giá trị của byte đầu tiên không trùng của ptr1 nhỏ hơn ptr2.

  • 0: Khi giá trị của 2 vùng nhớ bằng nhau

  • 1: Khi giá trị của byte đầu tiên không trùng của ptr1 lớn hơn ptr2.


Nguồn: https://www.stdio.vn


Được sửa bởi FR ngày Wed 27 Sep 2017, 08:20; sửa lần 1.
Share this post on:Excite BookmarksDiggRedditDel.icio.usGoogleLiveSlashdotNetscapeTechnoratiStumbleUponNewsvineFurlYahooSmarking

Comments

avatar
avatar
avatar
avatar
avatar
avatar
avatar
avatar
avatar
avatar
Code:
/*!
   @brief      
*/
void CSimpleCartDlg::OnPaint()
{
   CPaintDC dc(this);
   CStatic* pic = (CStatic*)GetDlgItem(IDC_PIC_MAP);
   CDC *pDC = pic->GetDC();
   if (m_hBmp) {
      CDC myDC;
      myDC.CreateCompatibleDC(pDC);
      HGDIOBJ oldSrc = myDC.SelectObject(m_hBmp);
      int cpx = m_pScr[0]->GetScrollPos();
      int cpy = m_pScr[1]->GetScrollPos();
      int xSrc, ySrc, nSrcWidth, nSrcHeight;
      double view_h = (double)(m_ptSize.x + 1) / 400;
      double view_v = (double)(m_ptSize.y + 1) / 400;
      ySrc = (int)((double)(m_ptSize.y + 1) * m_zoom) - 400;
      ySrc = (ySrc * cpy) / 100;
      ySrc = (int)((double)ySrc / m_zoom);
      xSrc = (int)((double)(m_ptSize.x + 1) * m_zoom) - 400;
      xSrc = (xSrc * cpx) / 100;
      xSrc = (int)((double)xSrc / m_zoom);
      nSrcWidth = (int)((double)(m_ptSize.x + 1) / view_h);
      nSrcHeight = (int)((double)(m_ptSize.y + 1) / view_v);
      nSrcWidth = (int)((double)nSrcWidth / m_zoom);
      nSrcHeight = (int)((double)nSrcHeight / m_zoom);
      m_ptLD.x = xSrc;
      m_ptLD.y = ySrc;
      m_ptUR.x = nSrcWidth;
      m_ptUR.y = nSrcHeight;
      pDC->SetStretchBltMode(COLORONCOLOR);
      pDC->StretchBlt(0, 0, 400, 400, &myDC, xSrc, ySrc, nSrcWidth, nSrcHeight, SRCCOPY);
      myDC.SelectObject(oldSrc);
      myDC.DeleteDC();
   }
   DrawPoint(pDC);
   ReleaseDC(pDC);
}
void CSimpleCartDlg::DrawPoint(CDC *pDc)
{
   CPen pen[6];
   pen[0].CreatePen(PS_SOLID, 3, RGB(0, 255, 0));      // GREEN
   pen[1].CreatePen(PS_SOLID, 3, RGB(0, 0, 255));      // BLUE
   pen[2].CreatePen(PS_SOLID, 3, RGB(255, 255, 0));   // YELLOW
   pen[3].CreatePen(PS_SOLID, 2, RGB(255, 0, 0));      // RED
   pen[4].CreatePen(PS_SOLID, 2, RGB(255, 0, 255));   // MAGENTA
   pen[5].CreatePen(PS_SOLID, 2, RGB(255, 255, 255));   // WHITE
   CBrush br_null;
   br_null.CreateStockObject(NULL_BRUSH);
   CBrush* oldbr = pDc->SelectObject(&br_null);
   CPen* oldpen = pDc->SelectObject(&pen[0]);
   double rate_x = (400 / (double)m_ptUR.x) / 25;
   double rate_y = (400 / (double)m_ptUR.y) / 25;
   int x, y, type;
   for (int i = 0; i < m_pointCount; i++) {
      if (m_pPointInfo[i].pos_data.point_attr == POINT_TYPE_LINKUP) {
         continue;
      }
      x = m_pPointInfo[i].pos_data.pos_y - 20000 - m_ptLD.x * 25;
      x -= (m_ptOffset.x * 25);
      y = (m_ptSize.y + 1) * 25;
      y -= (m_pPointInfo[i].pos_data.pos_x + 20000 + m_ptLD.y * 25 - m_ptOffset.y * 25);
      type = m_pPointInfo[i].pos_data.point_attr;
      x = (int)(rate_x * (double)x);
      y = (int)(rate_y * (double)y);
      int size = (int)(m_zoom * (double)10);
      int mergin = size / 2 + 8;
      BOOL isDraw = TRUE;
      if ((x < mergin) || (x > (400 - mergin)) || (y < mergin) || (y > (400 - mergin))) {
         isDraw = FALSE;
      }
      if (isDraw) {
         if (m_pPointInfo[i].pos_data.point_id == m_currentPosID) {
            oldpen = pDc->SelectObject(&pen[POINT_TYPE_CURRENT_POS]);
         }
         else if (m_pPointInfo[i].pos_data.point_id == m_targetPosID) {
            oldpen = pDc->SelectObject(&pen[POINT_TYPE_TARGET_POS]);
         }
         else {
            oldpen = pDc->SelectObject(&pen[type]);
         }
         
         pDc->Ellipse(x - 2, y - 2, x + 2, y + 2);
         double ang = (((m_pPointInfo[i].pos_data.pos_angle / 10 + 180) * M_PI) / 180);
         POINT pt = {0, 7};
         POINT ptr = GetRotation(pt, ang);
         pDc->MoveTo(x, y);
         pDc->LineTo(x + ptr.x, y + ptr.y);
         if (m_pPointInfo[i].pos_data.point_id == m_nPointId) {
            mergin = 13;
            if (!((x < mergin) || (x > (400 - mergin)) || (y < mergin) || (y > (400 - mergin)))) {
               oldpen = pDc->SelectObject(&pen[3]);
               pDc->Ellipse(x - 12, y - 12,
                         x + 12, y + 12);
            }
         }
      }
   }
   pDc->SelectObject(oldpen);
   pDc->SelectObject(oldbr);
}
avatar
avatar
avatar
Xem chủ đề cũ hơnXem chủ đề mới hơn
Permissions in this forum:
Bạn không có quyền trả lời bài viết