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

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

?? btnwnd.c

?? Wince.Net平臺上使用標準API實現的控件界面
?? C
字號:
//======================================================================
// 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;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产一区二区三区蜜臀 | 国精产品一区一区三区mba视频| 国产精品美女久久福利网站| 2欧美一区二区三区在线观看视频| 制服视频三区第一页精品| 欧美日韩精品一区二区三区 | 视频一区二区三区在线| 一个色在线综合| 亚洲六月丁香色婷婷综合久久 | 久久久久久久久久电影| 久久久久9999亚洲精品| 国产精品九色蝌蚪自拍| 亚洲情趣在线观看| 亚洲成人自拍偷拍| 久久精品国产精品青草| 狠狠久久亚洲欧美| 高清beeg欧美| 一本一道综合狠狠老| 在线免费一区三区| 欧美二区三区的天堂| 日韩精品专区在线影院重磅| 久久精品视频一区二区| 亚洲精品乱码久久久久久 | 久久久www免费人成精品| 中文字幕精品一区二区三区精品| 亚洲视频每日更新| 日韩高清不卡一区二区| 国产乱妇无码大片在线观看| 91年精品国产| 欧美一级国产精品| 中文字幕一区二区三区视频| 午夜精品影院在线观看| 国产精品一区一区三区| 在线免费视频一区二区| 久久精品在线免费观看| 亚洲一区自拍偷拍| 国产成人av福利| 欧美日韩日日夜夜| 国产三级精品视频| 偷窥国产亚洲免费视频| 成人午夜在线播放| 欧美一区日韩一区| 一区二区欧美国产| 国产成人综合在线观看| 5858s免费视频成人| 最新久久zyz资源站| 麻豆高清免费国产一区| 在线免费观看日本欧美| 国产精品色在线观看| 男女男精品网站| 91官网在线免费观看| 欧美国产精品劲爆| 精品一区二区三区香蕉蜜桃| 欧美色视频在线观看| 国产欧美一区二区在线| 蜜桃久久久久久| 精品视频在线免费看| 亚洲美女免费视频| 99久久99久久综合| 欧美激情一区二区在线| 国产一区二区三区四区五区入口| 欧美日韩不卡一区二区| 伊人婷婷欧美激情| 91天堂素人约啪| 国产精品久久久久影院老司| 国产成人精品www牛牛影视| 久久久综合九色合综国产精品| 奇米色一区二区| 欧美精品 国产精品| 亚洲h在线观看| 色88888久久久久久影院按摩| 国产精品国产三级国产aⅴ原创 | 成人精品国产福利| 国产精品视频线看| 成人性生交大片免费| 中文天堂在线一区| 99久久久精品| 亚洲激情在线播放| 欧美无砖砖区免费| 日韩电影免费在线看| 欧美一二三区在线观看| 美腿丝袜在线亚洲一区| 欧美va亚洲va| 国产综合成人久久大片91| 久久亚洲免费视频| 成人手机电影网| 成人欧美一区二区三区小说| 91麻豆免费观看| 天天色天天操综合| 精品国产乱码久久久久久夜甘婷婷 | 亚洲麻豆国产自偷在线| 91传媒视频在线播放| 日韩电影在线免费观看| 久久久综合九色合综国产精品| 成人精品在线视频观看| 亚洲综合色区另类av| 日韩一级黄色片| 波多野结衣在线aⅴ中文字幕不卡| 综合久久国产九一剧情麻豆| 欧美日本一区二区三区| 老司机午夜精品| 中文字幕一区二区三区乱码在线| 欧美撒尿777hd撒尿| 久久精品国产999大香线蕉| 国产精品天天摸av网| 欧美日韩亚洲综合一区二区三区| 久国产精品韩国三级视频| 中文字幕一区二区三区不卡 | 久久成人久久爱| 中文字幕高清不卡| 欧美日韩国产影片| 国产+成+人+亚洲欧洲自线| 亚洲影视在线播放| 国产校园另类小说区| 欧美三级视频在线| 国产成人一区在线| 日韩av不卡在线观看| 亚洲欧洲日韩综合一区二区| 欧美一级免费大片| 色婷婷综合久久久中文字幕| 美女视频一区二区| 一区二区三区在线不卡| 久久久欧美精品sm网站| 欧美挠脚心视频网站| 成人福利视频在线看| 麻豆专区一区二区三区四区五区| 亚洲免费电影在线| 国产欧美日韩在线看| 欧美v日韩v国产v| 欧美精三区欧美精三区| 97aⅴ精品视频一二三区| 国产乱一区二区| 麻豆精品新av中文字幕| 亚洲成人三级小说| 亚洲欧美另类综合偷拍| 国产精品久久福利| 久久久九九九九| xnxx国产精品| 欧美v国产在线一区二区三区| 欧美日韩高清一区二区三区| 色哟哟欧美精品| 99精品热视频| 91在线免费播放| 99精品视频在线观看免费| 成人听书哪个软件好| 大桥未久av一区二区三区中文| 激情丁香综合五月| 久久99国产乱子伦精品免费| 日韩综合一区二区| 日韩综合小视频| 欧美aaaaaa午夜精品| 免费在线观看视频一区| 久久99精品国产.久久久久| 麻豆中文一区二区| 狠狠色丁香婷综合久久| 国产一区二区0| 成人污污视频在线观看| youjizz久久| 欧美中文字幕一区二区三区亚洲 | 五月天网站亚洲| 午夜视频在线观看一区二区三区| 亚洲第一激情av| 秋霞影院一区二区| 国产精品18久久久久久久网站| 国产精品66部| 99国产一区二区三精品乱码| 99精品国产一区二区三区不卡| 在线一区二区三区| 7777精品伊人久久久大香线蕉经典版下载 | 国产精品久久久久久久裸模| 国产精品久久国产精麻豆99网站 | 欧美日韩国产一二三| 7777精品伊人久久久大香线蕉完整版| 欧美一区二区日韩| 欧美精品一区视频| 国产精品不卡一区二区三区| 亚洲高清视频的网址| 狠狠色狠狠色合久久伊人| 国产精品66部| 91传媒视频在线播放| 欧美成人性战久久| 成人欧美一区二区三区视频网页 | 亚洲成人动漫在线观看| 久久精品国产免费看久久精品| 国产成人免费网站| 在线免费观看成人短视频| 精品少妇一区二区三区在线播放 | 成人综合婷婷国产精品久久| 一本色道综合亚洲| 欧美tk—视频vk| 一区二区三区日韩| 国产一区久久久| 欧美日韩一区成人| 国产精品无遮挡| 日本欧美肥老太交大片| 色老汉av一区二区三区| 337p日本欧洲亚洲大胆精品| 亚洲电影中文字幕在线观看| 成人午夜电影久久影院| 日韩视频一区在线观看|