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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? btnwnd.c

?? MS-Press book about programming under Windows CE with source-codes of examples
?? C
字號(hào):
//======================================================================
// BtnWnd - Button window code
//
// Written for the book Programming Windows CE
// Copyright (C) 1998 Douglas Boling
//======================================================================
#include <windows.h>                 // For all that Windows stuff
#include "Ctlview.h"                 // Program-specific stuff

extern HINSTANCE hInst;

LRESULT DrawButton (HWND hWnd, LPDRAWITEMSTRUCT pdi);
//----------------------------------------------------------------------
// Global data
//

// Message dispatch table for BtnWndWindowProc
const struct decodeUINT BtnWndMessages[] = {
    WM_CREATE, DoCreateBtnWnd,
    WM_CTLCOLORSTATIC, DoCtlColorBtnWnd,
    WM_COMMAND, DoCommandBtnWnd,
    WM_DRAWITEM, DoDrawItemBtnWnd,
};

// Structure defining the controls in the window
CTLWNDSTRUCT  Btns [] = {
    {TEXT ("BUTTON"), IDC_PUSHBTN, TEXT ("Button"),
     10,  10, 120,  23, BS_PUSHBUTTON | BS_NOTIFY},
    {TEXT ("BUTTON"), IDC_CHKBOX, TEXT ("Check box"),
     10,  35, 120,  23, BS_CHECKBOX},
    {TEXT ("BUTTON"), IDC_ACHKBOX, TEXT ("Auto check box"),
     10,  60, 120,  23, BS_AUTOCHECKBOX},
    {TEXT ("BUTTON"), IDC_A3STBOX, TEXT ("Auto 3-state box"),
     10,  85, 120,  23, BS_AUTO3STATE},
    {TEXT ("BUTTON"), IDC_RADIO1, TEXT ("Auto radio button 1"),
     10, 110, 120,  23, BS_AUTORADIOBUTTON},
    {TEXT ("BUTTON"), IDC_RADIO2, TEXT ("Auto radio button 2"),
     10, 135, 120,  23, BS_AUTORADIOBUTTON},
    {TEXT ("BUTTON"), IDC_OWNRDRAW, TEXT ("OwnerDraw"),
     150,  10,  44,  44, BS_PUSHBUTTON | BS_OWNERDRAW},
};
// Structure labeling the button control WM_COMMAND notifications
NOTELABELS nlBtn[] = {{TEXT ("BN_CLICKED "),      0},
                      {TEXT ("BN_PAINT   "),      1},
                      {TEXT ("BN_HILITE  "),      2},
                      {TEXT ("BN_UNHILITE"),      3},
                      {TEXT ("BN_DISABLE "),      4},
                      {TEXT ("BN_DOUBLECLICKED"), 5},
                      {TEXT ("BN_SETFOCUS "),     6},
                      {TEXT ("BN_KILLFOCUS"),     7}
};

// Handle for icon used in owner-draw icon
HICON hIcon = 0;
//----------------------------------------------------------------------
// InitBtnWnd - BtnWnd window initialization
//
int InitBtnWnd (HINSTANCE hInstance) {
    WNDCLASS wc;

    // Register application BtnWnd window class.
    wc.style = 0;                             // Window style
    wc.lpfnWndProc = BtnWndProc;              // Callback function
    wc.cbClsExtra = 0;                        // Extra class data
    wc.cbWndExtra = 0;                        // Extra window data
    wc.hInstance = hInstance;                 // Owner handle
    wc.hIcon = NULL,                          // Application icon
    wc.hCursor = NULL;                        // Default cursor
    wc.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
    wc.lpszMenuName =  NULL;                  // Menu name
    wc.lpszClassName = BTNWND;                // Window class name

    if (RegisterClass (&wc) == 0) return 1;

    return 0;
}

//======================================================================
// Message handling procedures for BtnWindow
//----------------------------------------------------------------------
// BtnWndWndProc - Callback function for application window
//
LRESULT CALLBACK BtnWndProc (HWND hWnd, UINT wMsg, WPARAM wParam,
                             LPARAM lParam) {
    INT i;
    //
    // Search message list to see if we need to handle this
    // message.  If in list, call procedure.
    //
    for (i = 0; i < dim(BtnWndMessages); i++) {
        if (wMsg == BtnWndMessages[i].Code)
            return (*BtnWndMessages[i].Fxn)(hWnd, wMsg, wParam, lParam);
    }
    return DefWindowProc (hWnd, wMsg, wParam, lParam);
}
//----------------------------------------------------------------------
// DoCreateBtnWnd - Process WM_CREATE message for window.
//
LRESULT DoCreateBtnWnd (HWND hWnd, UINT wMsg, WPARAM wParam,
                        LPARAM lParam) {
    INT i;

    for (i = 0; i < dim(Btns); i++) {

        CreateWindow (Btns[i].szClass, Btns[i].szTitle,
                      Btns[i].lStyle | WS_VISIBLE | WS_CHILD,
                      Btns[i].x, Btns[i].y, Btns[i].cx, Btns[i].cy,
                      hWnd, (HMENU) Btns[i].nID, hInst, NULL);
    }
    hIcon = LoadIcon (hInst, TEXT ("TEXTICON"));

    // We need to set the initial state of the radio buttons.
    CheckRadioButton (hWnd, IDC_RADIO1, IDC_RADIO2, IDC_RADIO1);
    return 0;
}
//----------------------------------------------------------------------
// DoCtlColorBtnWnd - process WM_CTLCOLORxx messages for window.
//
LRESULT DoCtlColorBtnWnd (HWND hWnd, UINT wMsg, WPARAM wParam, 
                          LPARAM lParam) {
	return GetStockObject (WHITE_BRUSH);
}
//----------------------------------------------------------------------
// DoCommandBtnWnd - Process WM_COMMAND message for window.
//
LRESULT DoCommandBtnWnd (HWND hWnd, UINT wMsg, WPARAM wParam,
                         LPARAM lParam) {
    TCHAR szOut[128];
    INT i;

    // Since the Check Box button is not an auto check box, it
    // must be set manually.
    if ((LOWORD (wParam) == IDC_CHKBOX) &&
        (HIWORD (wParam) == BN_CLICKED)) {
        // Get the current state, complement, and set.
        i = SendDlgItemMessage (hWnd, IDC_CHKBOX, BM_GETCHECK, 0, 0);
        if (i == 0)
            SendDlgItemMessage (hWnd, IDC_CHKBOX, BM_SETCHECK, 1, 0);
        else
            SendDlgItemMessage (hWnd, IDC_CHKBOX, BM_SETCHECK, 0, 0);
    }

    // Report WM_COMMAND messages to main window.
    for (i = 0; i < dim(nlBtn); i++) {
        if (HIWORD (wParam) == nlBtn[i].wNotification) {
            lstrcpy (szOut, nlBtn[i].pszLabel);
            break;
        }
    }
    if (i == dim(nlBtn))
        wsprintf (szOut, TEXT ("notification: %x"), HIWORD (wParam));

    SendMessage (GetParent (hWnd), MYMSG_ADDLINE, wParam,
                 (LPARAM)szOut);
    return 0;
}
//----------------------------------------------------------------------
// DoDrawItemBtnWnd - Process WM_DRAWITEM message for window.
//
LRESULT DoDrawItemBtnWnd (HWND hWnd, UINT wMsg, WPARAM wParam,
                          LPARAM lParam) {

    return DrawButton (hWnd, (LPDRAWITEMSTRUCT)lParam);
}

//---------------------------------------------------------------------
// DrawButton - Draws an owner-draw button
//
LRESULT DrawButton (HWND hWnd, LPDRAWITEMSTRUCT pdi) {

    HPEN hPenShadow, hPenLight, hPenDkShadow, hOldPen;

    HBRUSH hBr, hOldBr;
    LOGPEN lpen;
    TCHAR szOut[128];
    POINT ptOut[3], ptIn[3];

    // Reflect the messages to the report window.
    wsprintf (szOut, TEXT ("WM_DRAWITEM  Action:%x  State:%x"),
              pdi->itemAction, pdi->itemState);
    SendMessage (GetParent (hWnd), MYMSG_ADDLINE, pdi->CtlID,
                 (LPARAM)szOut);

    // Create pens for drawing.
    lpen.lopnStyle = PS_SOLID;
    lpen.lopnWidth.x = 3;
    lpen.lopnWidth.y = 3;
    lpen.lopnColor = GetSysColor (COLOR_3DSHADOW);
    hPenShadow = CreatePenIndirect (&lpen);

    lpen.lopnWidth.x = 1;
    lpen.lopnWidth.y = 1;
    lpen.lopnColor = GetSysColor (COLOR_3DLIGHT);
    hPenLight = CreatePenIndirect (&lpen);

    lpen.lopnColor = GetSysColor (COLOR_3DDKSHADOW);
    hPenDkShadow = CreatePenIndirect (&lpen);

    // Create a brush for the face of the button.
    hBr = CreateSolidBrush (GetSysColor (COLOR_3DFACE));

    // Draw a rectangle with a thick outside border to start the
    // frame drawing.
    hOldPen = SelectObject (pdi->hDC, hPenShadow);
    hOldBr = SelectObject (pdi->hDC, hBr);
    Rectangle (pdi->hDC, pdi->rcItem.left, pdi->rcItem.top,
               pdi->rcItem.right, pdi->rcItem.bottom);

    // Draw the upper left inside line.
    ptIn[0].x = pdi->rcItem.left + 1;
    ptIn[0].y = pdi->rcItem.bottom - 2;
    ptIn[1].x = pdi->rcItem.left + 1;
    ptIn[1].y = pdi->rcItem.top + 1;
    ptIn[2].x = pdi->rcItem.right - 2;
    ptIn[2].y = pdi->rcItem.top+1;

    // Select a pen to draw shadow or light side of button.
    if (pdi->itemState & ODS_SELECTED) {
        SelectObject (pdi->hDC, hPenDkShadow);
    } else {
        SelectObject (pdi->hDC, hPenLight);
    }
    Polyline (pdi->hDC, ptIn, 3);

    // If selected, also draw a bright line inside the lower
    // right corner.
    if (pdi->itemState & ODS_SELECTED) {
        SelectObject (pdi->hDC, hPenLight);
        ptIn[1].x = pdi->rcItem.right- 2;
        ptIn[1].y = pdi->rcItem.bottom - 2;
        Polyline (pdi->hDC, ptIn, 3);
    }

    // Now draw the black outside line on either the upper left or lower
    // right corner.
    ptOut[0].x = pdi->rcItem.left;
    ptOut[0].y = pdi->rcItem.bottom-1;
    ptOut[2].x = pdi->rcItem.right-1;
    ptOut[2].y = pdi->rcItem.top;

    SelectObject (pdi->hDC, hPenDkShadow);
    if (pdi->itemState & ODS_SELECTED) {
        ptOut[1].x = pdi->rcItem.left;
        ptOut[1].y = pdi->rcItem.top;
    } else {
        ptOut[1].x = pdi->rcItem.right-1;
        ptOut[1].y = pdi->rcItem.bottom-1;
    }
    Polyline (pdi->hDC, ptOut, 3);

    // Draw the icon.
    if (hIcon) {
        ptIn[0].x = (pdi->rcItem.right - pdi->rcItem.left)/2 -
                     GetSystemMetrics (SM_CXICON)/2 - 2;
        ptIn[0].y = (pdi->rcItem.bottom - pdi->rcItem.top)/2 -
                     GetSystemMetrics (SM_CYICON)/2 - 2;
        // If pressed, shift image down one pel to simulate depress.
        if (pdi->itemState & ODS_SELECTED) {
            ptOut[1].x += 2;
            ptOut[1].y += 2;
        }
        DrawIcon (pdi->hDC, ptIn[0].x, ptIn[0].y, hIcon);
    }

    // If button has the focus, draw the dotted rect inside the button.
    if (pdi->itemState & ODS_FOCUS) {
        pdi->rcItem.left += 3;
        pdi->rcItem.top += 3;
        pdi->rcItem.right -= 4;
        pdi->rcItem.bottom -= 4;
        DrawFocusRect (pdi->hDC, &pdi->rcItem);
    }

    // Clean up. First select the original brush and pen into the DC.
    SelectObject (pdi->hDC, hOldBr);
    SelectObject (pdi->hDC, hOldPen);

    // Now delete the brushes and pens created.
    DeleteObject (hBr);
    DeleteObject (hPenShadow);
    DeleteObject (hPenDkShadow);
    DeleteObject (hPenLight);
    return 0;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人影视亚洲图片在线| 菠萝蜜视频在线观看一区| 国产婷婷色一区二区三区四区| 色综合久久88色综合天天免费| 蜜桃视频一区二区三区| 亚洲日本韩国一区| 国产偷v国产偷v亚洲高清 | 91国产免费看| 91精品婷婷国产综合久久 | 久久99热这里只有精品| 亚洲男人天堂一区| 欧美韩国日本不卡| 欧美成人精品二区三区99精品| 在线观看国产一区二区| 国产激情一区二区三区桃花岛亚洲 | 欧美男生操女生| 99精品视频在线观看免费| 国产一区亚洲一区| 蜜臀av国产精品久久久久 | 亚洲一区二三区| 国产精品网站在线| 久久日韩精品一区二区五区| 91麻豆精品国产91久久久使用方法| 色久优优欧美色久优优| 91丨九色丨蝌蚪丨老版| 成人一区二区三区视频| 国产美女精品一区二区三区| 久久se精品一区精品二区| 日韩二区三区四区| 婷婷综合另类小说色区| 亚洲成av人片| 亚洲成a人v欧美综合天堂下载| 亚洲欧美影音先锋| 自拍偷拍亚洲综合| 中文字幕综合网| 亚洲日本在线观看| 亚洲伦理在线免费看| 成人免费在线视频观看| 亚洲欧美综合在线精品| 日韩美女视频19| 亚洲精品第1页| 亚洲一区在线观看免费| 亚洲国产视频一区二区| 午夜电影网亚洲视频| 视频在线观看91| 麻豆国产欧美日韩综合精品二区| 看电影不卡的网站| 国产一区二区三区av电影| 国产精品一区不卡| 成人av网址在线| 一本大道av一区二区在线播放| 色综合一个色综合亚洲| 欧美色成人综合| 日韩午夜激情视频| 久久久精品蜜桃| 亚洲欧洲三级电影| 亚洲第一成年网| 久久国产麻豆精品| 91精品国产91久久综合桃花| 欧美xxxx在线观看| 日本一区二区三区免费乱视频| 国产精品家庭影院| 亚洲成人免费在线| 精品综合久久久久久8888| 国产精品一级片| 91网站最新网址| 3atv一区二区三区| 久久奇米777| 亚洲精品日韩一| 欧美a一区二区| 国产福利一区二区| 欧洲国内综合视频| 欧美电视剧免费观看| 中文一区二区在线观看| 一区二区三区精品在线| 久久黄色级2电影| 91亚洲国产成人精品一区二区三 | 天堂午夜影视日韩欧美一区二区| 美女久久久精品| 成人app网站| 91麻豆精品国产91久久久更新时间 | 欧美日韩一区二区三区视频| 精品国产91洋老外米糕| 亚洲精品高清在线观看| 久久成人综合网| 色婷婷av一区二区| 26uuu精品一区二区在线观看| 亚洲九九爱视频| 激情五月激情综合网| 在线观看中文字幕不卡| 久久老女人爱爱| 亚洲一区二区免费视频| 国产成人在线观看| 777亚洲妇女| 亚洲欧美国产77777| 精品午夜一区二区三区在线观看| 日本丶国产丶欧美色综合| 欧美精品一区在线观看| 午夜电影网一区| 91在线播放网址| 久久精品一二三| 日韩精品1区2区3区| av一区二区三区四区| 精品三级av在线| 天天射综合影视| 色综合久久综合| 欧美激情中文字幕| 极品美女销魂一区二区三区免费 | 在线免费av一区| 国产精品国产三级国产三级人妇 | 亚洲美女在线国产| 国产成人免费网站| 美女被吸乳得到大胸91| 欧美专区日韩专区| 亚洲色欲色欲www| 成人av网站免费观看| 国产亚洲一区二区三区| 久久精品国产99国产| 欧美日韩精品系列| 亚洲国产精品一区二区久久恐怖片| 99视频一区二区三区| 国产欧美一区二区精品忘忧草| 精品一区二区在线视频| 91精品国产综合久久精品性色| 亚洲国产成人av好男人在线观看| 99re在线精品| 亚洲女人小视频在线观看| av资源网一区| 自拍av一区二区三区| 99久久免费精品| 亚洲日本在线视频观看| 色综合天天综合给合国产| 综合久久久久综合| 99久久免费国产| 亚洲黄色性网站| 精品视频在线免费观看| 午夜精品福利视频网站| 欧美久久一二区| 日本亚洲视频在线| 精品久久一区二区| 国产黄人亚洲片| 中文子幕无线码一区tr| 91在线小视频| 亚洲午夜一区二区| 在线播放国产精品二区一二区四区| 天堂成人国产精品一区| 日韩免费成人网| 国产传媒一区在线| 中文字幕日韩av资源站| 午夜一区二区三区在线观看| 欧美日高清视频| 日本美女一区二区三区视频| 欧美日韩激情一区| 激情小说亚洲一区| 国产精品色在线| 欧美亚洲一区三区| 免费成人av在线播放| 国产日韩欧美麻豆| 99国产精品久久久久久久久久久| 一区二区高清视频在线观看| 欧美精三区欧美精三区| 精品亚洲国产成人av制服丝袜| 国产欧美精品一区二区三区四区 | 最新热久久免费视频| 欧美综合一区二区| 日本不卡视频在线| 久久精品一区蜜桃臀影院| 91社区在线播放| 天堂一区二区在线| 中文字幕不卡一区| 欧美日韩在线观看一区二区| 久久不见久久见中文字幕免费| 国产精品三级av| 欧美日韩在线亚洲一区蜜芽| 理论片日本一区| 日韩毛片高清在线播放| 欧美一区二区三区日韩视频| 国产超碰在线一区| 午夜av电影一区| 国产精品狼人久久影院观看方式| 欧美三级视频在线| 国产成人激情av| 午夜精品福利视频网站| 国产日韩综合av| 91麻豆精品国产| 91在线观看美女| 国产一区二区三区观看| 亚洲综合在线电影| 久久久久国色av免费看影院| 欧美在线高清视频| 成人免费va视频| 日本欧美在线观看| 亚洲三级在线免费| 国产网红主播福利一区二区| 欧美伊人精品成人久久综合97| 国产伦精一区二区三区| 午夜国产不卡在线观看视频| 最近日韩中文字幕| 久久精品在这里| 日韩欧美不卡一区|