用c 或者 c++
均可不用mfc!!请高手帮忙给个例子十分感谢!!!!!
均可不用mfc!!请高手帮忙给个例子十分感谢!!!!!
解决方案 »
- 如何用CBrush画一个无边框矩形
- 使用stl中stack出现的问题。
- error C2143: syntax error : missing ';' before '<'--别人的机子能篇,为嘛我这儿不行?
- OBJECT_ENTRY错误
- VC6.0对RichEdit的支持有问题,怪事!
- 关于CDialogBar和切分窗口的问题,谢谢(急切等待中......)
- 怎样将int型转为CString型
- linking problem???
- 字符串处理
- 请问fstream定义的对象file执行操作file.write(char *para1,sizeof(para1)),其中para1可否为一类的对象指针
- 怪事,哪位大虾给解释一下:)
- VC里面如何找到窗口句柄?
CreateWindow("Button","OK",WS_VISIBLE | WS_CHILD,0,0,100,100,this->m_hWnd,NULL,NULL,NULL);
#include <windows.h>
#include "commctrl.h"
#define MAX_LOADSTRING 100
HINSTANCE hInst; // current instance
TCHAR szTitle[MAX_LOADSTRING]; // The title bar text
TCHAR szWindowClass[MAX_LOADSTRING]; // The title bar textATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG msg;
lstrcpy(szTitle,"APPtitle");
lstrcpy(szWindowClass,"Wndcls");
MyRegisterClass(hInstance); if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
} while (GetMessage(&msg, NULL, 0, 0))
{
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
} return msg.wParam;
}ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC)WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_APPLICATION);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_APPLICATION); return RegisterClassEx(&wcex);
}BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;
hInst = hInstance; // Store instance handle in our global variable
hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
if (!hWnd)
{
return FALSE;
}
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd); return TRUE;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
TCHAR szHello[MAX_LOADSTRING];
lstrcpy(szHello,"ho");
LPDRAWITEMSTRUCT lpdrawitem=NULL;
HWND hbutton;
switch (message)
{
case WM_CREATE:
hbutton=CreateWindow("BUTTON","OWnerdraw",WS_CHILD|WS_VISIBLE|BS_OWNERDRAW,10,80,440,30,hWnd,(HMENU)1234,hInst,0);
CreateWindow("BUTTON","Not Owner Draw",WS_CHILD|WS_VISIBLE,10,120,440,30,hWnd,(HMENU)1235,hInst,0);
break;
case WM_DRAWITEM:
{
lpdrawitem=(LPDRAWITEMSTRUCT)lParam;
if(lpdrawitem->CtlID!=1234)
return 0;
char cbuf[256];
switch(lpdrawitem->itemAction)
{
case ODA_DRAWENTIRE:
lstrcpy(cbuf,"itemAction:ODA_DRAWENTIRE ;");
break;
case ODA_FOCUS:
lstrcpy(cbuf,"itemAction:ODA_FOCUS ;");
break;
case ODA_SELECT:
lstrcpy(cbuf,"itemAction:ODA_SELECT ;");
break;
}
switch(lpdrawitem->itemState)
{
case ODS_CHECKED:
lstrcat(cbuf,"itemState:ODS_CHECKED");
break;
case ODS_COMBOBOXEDIT:
lstrcat(cbuf,"itemState:ODS_COMBOBOXEDIT");
break;
case ODS_DEFAULT:
lstrcat(cbuf,"itemState:ODS_DEFAULT");
break;
case ODS_DISABLED:
lstrcat(cbuf,"itemState:ODS_DISABLED");
break;
case ODS_FOCUS:
lstrcat(cbuf,"itemState:ODS_FOCUS");
break;
case ODS_GRAYED:
lstrcat(cbuf,"itemState:ODS_GRAYED");
break;
case ODS_HOTLIGHT:
lstrcat(cbuf,"itemState:ODS_HOTLIGHT");
break;
case ODS_INACTIVE:
lstrcat(cbuf,"itemState:ODS_INACTIVE");
break;
case ODS_SELECTED:
lstrcat(cbuf,"itemState:ODS_SELECTED");
break;
}
TextOut(lpdrawitem->hDC,lpdrawitem->rcItem.left,lpdrawitem->rcItem.top,cbuf,strlen(cbuf));
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
RECT rt;
GetClientRect(hWnd, &rt);
DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
#include <windows.h>
#include "commctrl.h"
#define MAX_LOADSTRING 100
HINSTANCE hInst; // current instance
TCHAR szTitle[MAX_LOADSTRING]; // The title bar text
TCHAR szWindowClass[MAX_LOADSTRING]; // The title bar textATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG msg;
lstrcpy(szTitle,"APPtitle");
lstrcpy(szWindowClass,"Wndcls");
MyRegisterClass(hInstance); if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
} while (GetMessage(&msg, NULL, 0, 0))
{
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
} return msg.wParam;
}ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC)WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_APPLICATION);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_APPLICATION); return RegisterClassEx(&wcex);
}BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;
hInst = hInstance; // Store instance handle in our global variable
hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
if (!hWnd)
{
return FALSE;
}
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd); return TRUE;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
TCHAR szHello[MAX_LOADSTRING];
lstrcpy(szHello,"ho");
LPDRAWITEMSTRUCT lpdrawitem=NULL;
HWND hbutton;
switch (message)
{
case WM_CREATE:
hbutton=CreateWindow("BUTTON","OWnerdraw",WS_CHILD|WS_VISIBLE|BS_OWNERDRAW,10,80,440,30,hWnd,(HMENU)1234,hInst,0);
CreateWindow("BUTTON","Not Owner Draw",WS_CHILD|WS_VISIBLE,10,120,440,30,hWnd,(HMENU)1235,hInst,0);
break;
case WM_DRAWITEM:
{
lpdrawitem=(LPDRAWITEMSTRUCT)lParam;
if(lpdrawitem->CtlID!=1234)
return 0;
char cbuf[256];
switch(lpdrawitem->itemAction)
{
case ODA_DRAWENTIRE:
lstrcpy(cbuf,"itemAction:ODA_DRAWENTIRE ;");
break;
case ODA_FOCUS:
lstrcpy(cbuf,"itemAction:ODA_FOCUS ;");
break;
case ODA_SELECT:
lstrcpy(cbuf,"itemAction:ODA_SELECT ;");
break;
}
switch(lpdrawitem->itemState)
{
case ODS_CHECKED:
lstrcat(cbuf,"itemState:ODS_CHECKED");
break;
case ODS_COMBOBOXEDIT:
lstrcat(cbuf,"itemState:ODS_COMBOBOXEDIT");
break;
case ODS_DEFAULT:
lstrcat(cbuf,"itemState:ODS_DEFAULT");
break;
case ODS_DISABLED:
lstrcat(cbuf,"itemState:ODS_DISABLED");
break;
case ODS_FOCUS:
lstrcat(cbuf,"itemState:ODS_FOCUS");
break;
case ODS_GRAYED:
lstrcat(cbuf,"itemState:ODS_GRAYED");
break;
case ODS_HOTLIGHT:
lstrcat(cbuf,"itemState:ODS_HOTLIGHT");
break;
case ODS_INACTIVE:
lstrcat(cbuf,"itemState:ODS_INACTIVE");
break;
case ODS_SELECTED:
lstrcat(cbuf,"itemState:ODS_SELECTED");
break;
}
TextOut(lpdrawitem->hDC,lpdrawitem->rcItem.left,lpdrawitem->rcItem.top,cbuf,strlen(cbuf));
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
RECT rt;
GetClientRect(hWnd, &rt);
DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
#include <windows.h>
#include "commctrl.h"
#define MAX_LOADSTRING 100
HINSTANCE hInst; // current instance
TCHAR szTitle[MAX_LOADSTRING]; // The title bar text
TCHAR szWindowClass[MAX_LOADSTRING]; // The title bar textATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG msg;
lstrcpy(szTitle,"APPtitle");
lstrcpy(szWindowClass,"Wndcls");
MyRegisterClass(hInstance); if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
} while (GetMessage(&msg, NULL, 0, 0))
{
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
} return msg.wParam;
}ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC)WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_APPLICATION);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_APPLICATION); return RegisterClassEx(&wcex);
}BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;
hInst = hInstance; // Store instance handle in our global variable
hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
if (!hWnd)
{
return FALSE;
}
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd); return TRUE;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
TCHAR szHello[MAX_LOADSTRING];
lstrcpy(szHello,"ho");
LPDRAWITEMSTRUCT lpdrawitem=NULL;
HWND hbutton;
switch (message)
{
case WM_CREATE:
hbutton=CreateWindow("BUTTON","OWnerdraw",WS_CHILD|WS_VISIBLE|BS_OWNERDRAW,10,80,440,30,hWnd,(HMENU)1234,hInst,0);
CreateWindow("BUTTON","Not Owner Draw",WS_CHILD|WS_VISIBLE,10,120,440,30,hWnd,(HMENU)1235,hInst,0);
break;
case WM_DRAWITEM:
{
lpdrawitem=(LPDRAWITEMSTRUCT)lParam;
if(lpdrawitem->CtlID!=1234)
return 0;
char cbuf[256];
switch(lpdrawitem->itemAction)
{
case ODA_DRAWENTIRE:
lstrcpy(cbuf,"itemAction:ODA_DRAWENTIRE ;");
break;
case ODA_FOCUS:
lstrcpy(cbuf,"itemAction:ODA_FOCUS ;");
break;
case ODA_SELECT:
lstrcpy(cbuf,"itemAction:ODA_SELECT ;");
break;
}
switch(lpdrawitem->itemState)
{
case ODS_CHECKED:
lstrcat(cbuf,"itemState:ODS_CHECKED");
break;
case ODS_COMBOBOXEDIT:
lstrcat(cbuf,"itemState:ODS_COMBOBOXEDIT");
break;
case ODS_DEFAULT:
lstrcat(cbuf,"itemState:ODS_DEFAULT");
break;
case ODS_DISABLED:
lstrcat(cbuf,"itemState:ODS_DISABLED");
break;
case ODS_FOCUS:
lstrcat(cbuf,"itemState:ODS_FOCUS");
break;
case ODS_GRAYED:
lstrcat(cbuf,"itemState:ODS_GRAYED");
break;
case ODS_HOTLIGHT:
lstrcat(cbuf,"itemState:ODS_HOTLIGHT");
break;
case ODS_INACTIVE:
lstrcat(cbuf,"itemState:ODS_INACTIVE");
break;
case ODS_SELECTED:
lstrcat(cbuf,"itemState:ODS_SELECTED");
break;
}
TextOut(lpdrawitem->hDC,lpdrawitem->rcItem.left,lpdrawitem->rcItem.top,cbuf,strlen(cbuf));
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
RECT rt;
GetClientRect(hWnd, &rt);
DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
to draw owner draw control in SDK, the key is owner-draw style(BS_OWNERDRAW) and WM_DRAWITEM message.
在头文件winuser.h中定义的。
#if(WINVER >= 0x0500)
#define ODS_HOTLIGHT 0x0040
#define ODS_INACTIVE 0x0080
#endif /* WINVER >= 0x0500 */
//#include "stdafx.h"
#include "resource.h"#define CS_TEST (CS_VREDRAW | CS_HREDRAW | CS_DBLCLKS)#define IDC_START 1100
#define IDC_PAUSE 1101
#define IDC_HELP1 1102
#define IDC_EXIT1 1103#define MAINWNDCLASSNAME _T("CHSTESTMAINWNDCLASS")typedef struct _tagMYBUTTONS{
BOOL bOverS;
BOOL bOverP;
BOOL bOverH;
BOOL bOverE;
RECT rcStart;
RECT rcPause;
RECT rcHelp;
RECT rcExit;
}MYBUTTONS,NEAR * PMYBUTTONS,FAR * LPMYBUTTONS;HBITMAP hStartOver = NULL;
HBITMAP hStartDown = NULL;
HBITMAP hStartOut = NULL;
HBITMAP hPauseOver = NULL;
HBITMAP hPauseDown = NULL;
HBITMAP hPauseOut = NULL;
HBITMAP hHelpOver = NULL;
HBITMAP hHelpDown = NULL;
HBITMAP hHelpOut = NULL;
HBITMAP hExitOver = NULL;
HBITMAP hExitDown = NULL;
HBITMAP hExitOut = NULL;
HWND hMainWnd = NULL;
HINSTANCE hMainInst = NULL;
MYBUTTONS Buttons;
RECT rc;BOOL CreateMainWindow(HINSTANCE,int);
VOID InitVariable(VOID);
LRESULT CALLBACK MainWndProc(HWND,UINT,WPARAM,LPARAM);
BOOL RegisterChsTestClass(HINSTANCE);
BOOL UpdateButton(HWND,HDC,int,UINT);int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG uMsg; if(!RegisterChsTestClass(hInstance))
{
MessageBox(NULL,_T("注册类失败!"),_T("失败!"),MB_OK | MB_ICONERROR);
return 0;
} if(!CreateMainWindow(hInstance,nCmdShow))
{
MessageBox(NULL,_T("创建窗口失败!"),_T("失败!"),MB_OK | MB_ICONERROR);
return 0;
} InitVariable(); while(GetMessage(&uMsg,NULL,0,0))
{
TranslateMessage(&uMsg);
DispatchMessage(&uMsg);
} return uMsg.wParam;
}BOOL RegisterChsTestClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_TEST;
wcex.lpfnWndProc = (WNDPROC)MainWndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 2 * sizeof(DWORD);
wcex.hInstance = hInstance;
wcex.hCursor = LoadCursor(NULL,IDC_ARROW);
wcex.hIcon = LoadIcon(hInstance,MAKEINTRESOURCE(IDI_MAINICON));
wcex.lpszMenuName = (LPTSTR)NULL;
wcex.lpszClassName = MAINWNDCLASSNAME;
wcex.hbrBackground = CreateSolidBrush(RGB(255,252,232));
wcex.hIconSm = NULL;
if(!RegisterClassEx(&wcex))
return FALSE; hMainInst = hInstance; return TRUE;
}BOOL CreateMainWindow(HINSTANCE hInstance,int nCmdShow)
{
HWND hWnd = NULL; hWnd = CreateWindowEx(WS_EX_WINDOWEDGE,
MAINWNDCLASSNAME,
_T("测试"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
0,
CW_USEDEFAULT,
0,
NULL,
NULL,
hInstance,
NULL); if(!hWnd)
return FALSE; ShowWindow(hWnd,SW_SHOWMAXIMIZED); hMainWnd = hWnd; return TRUE;
}VOID InitVariable()
{
ZeroMemory(&Buttons,sizeof(MYBUTTONS));
Buttons.bOverE = FALSE;
Buttons.bOverH = FALSE;
Buttons.bOverP = FALSE;
Buttons.bOverS = FALSE;
SetRect(&Buttons.rcStart,625,180,625 + 120,180 + 80);
SetRect(&Buttons.rcPause,625,280,625 + 120,280 + 80);
SetRect(&Buttons.rcHelp,625,380,625 + 120,380 + 80);
SetRect(&Buttons.rcExit,625,480,625 + 120,480 + 80); return;
}BOOL UpdateButton(HWND hWnd,HDC hDC,int nID,UINT uMsg)
{
HDC hMemDC = NULL;
RECT rc1;
hMemDC = CreateCompatibleDC(hDC);
switch(nID)
{
case IDC_START:
CopyMemory(&rc1,&Buttons.rcStart,sizeof(RECT));
switch(uMsg)
{
case NULL:
SelectObject(hMemDC,hStartOut);
break;
case WM_MOUSEMOVE:
SelectObject(hMemDC,hStartOver);
break;
case WM_LBUTTONDOWN:
SelectObject(hMemDC,hStartDown);
break;
case WM_LBUTTONUP:
SelectObject(hMemDC,hStartOver);
break;
}
break;
case IDC_PAUSE:
CopyMemory(&rc1,&Buttons.rcPause,sizeof(RECT));
switch(uMsg)
{
case NULL:
SelectObject(hMemDC,hPauseOut);
break;
case WM_MOUSEMOVE:
SelectObject(hMemDC,hPauseOver);
break;
case WM_LBUTTONDOWN:
SelectObject(hMemDC,hPauseDown);
break;
case WM_LBUTTONUP:
SelectObject(hMemDC,hPauseOver);
break;
}
break;
case IDC_HELP1:
CopyMemory(&rc1,&Buttons.rcHelp,sizeof(RECT));
switch(uMsg)
{
case NULL:
SelectObject(hMemDC,hHelpOut);
break;
case WM_MOUSEMOVE:
SelectObject(hMemDC,hHelpOver);
break;
case WM_LBUTTONDOWN:
SelectObject(hMemDC,hHelpDown);
break;
case WM_LBUTTONUP:
SelectObject(hMemDC,hHelpOver);
break;
}
break;
case IDC_EXIT1:
CopyMemory(&rc1,&Buttons.rcExit,sizeof(RECT));
switch(uMsg)
{
case NULL:
SelectObject(hMemDC,hExitOut);
break;
case WM_MOUSEMOVE:
SelectObject(hMemDC,hExitOver);
break;
case WM_LBUTTONDOWN:
SelectObject(hMemDC,hExitDown);
break;
case WM_LBUTTONUP:
SelectObject(hMemDC,hExitOver);
break;
}
break;
}
BitBlt(hDC,rc1.left,rc1.top,rc1.right - rc1.left,rc1.bottom - rc1.top,hMemDC,0,0,SRCCOPY);
DeleteDC(hMemDC); return TRUE;
}
{
HDC hDC = NULL;
POINT pt;
switch (uMsg)
{
case WM_CREATE:
hStartOver = LoadBitmap(hMainInst,MAKEINTRESOURCE(IDB_STARTOVER));
hStartDown = LoadBitmap(hMainInst,MAKEINTRESOURCE(IDB_STARTDOWN));
hStartOut = LoadBitmap(hMainInst,MAKEINTRESOURCE(IDB_STARTOUT));
hPauseOver = LoadBitmap(hMainInst,MAKEINTRESOURCE(IDB_PAUSEOVER));
hPauseDown = LoadBitmap(hMainInst,MAKEINTRESOURCE(IDB_PAUSEDOWN));
hPauseOut = LoadBitmap(hMainInst,MAKEINTRESOURCE(IDB_PAUSEOUT));
hHelpOver = LoadBitmap(hMainInst,MAKEINTRESOURCE(IDB_HELPOVER));
hHelpDown = LoadBitmap(hMainInst,MAKEINTRESOURCE(IDB_HELPDOWN));
hHelpOut = LoadBitmap(hMainInst,MAKEINTRESOURCE(IDB_HELPOUT));
hExitOver = LoadBitmap(hMainInst,MAKEINTRESOURCE(IDB_EXITOVER));
hExitDown = LoadBitmap(hMainInst,MAKEINTRESOURCE(IDB_EXITDOWN));
hExitOut = LoadBitmap(hMainInst,MAKEINTRESOURCE(IDB_EXITOUT));
break; case WM_PAINT:
PAINTSTRUCT ps;
hDC = BeginPaint(hWnd,&ps); if(Buttons.bOverS)
UpdateButton(hWnd,hDC,IDC_START,WM_MOUSEMOVE);
else
UpdateButton(hWnd,hDC,IDC_START,NULL);
if(Buttons.bOverP)
UpdateButton(hWnd,hDC,IDC_PAUSE,WM_MOUSEMOVE);
else
UpdateButton(hWnd,hDC,IDC_PAUSE,NULL);
if(Buttons.bOverH)
UpdateButton(hWnd,hDC,IDC_HELP1,WM_MOUSEMOVE);
else
UpdateButton(hWnd,hDC,IDC_HELP1,NULL);
if(Buttons.bOverE)
UpdateButton(hWnd,hDC,IDC_EXIT1,WM_MOUSEMOVE);
else
UpdateButton(hWnd,hDC,IDC_EXIT1,NULL); EndPaint(hWnd,&ps);
break; case WM_MOUSEMOVE:
hDC = GetDC(hWnd);
GetCursorPos(&pt);
ScreenToClient(hWnd,&pt); if(PtInRect(&Buttons.rcStart,pt))
{
if(!Buttons.bOverS)
{
Buttons.bOverS = TRUE;
UpdateButton(hWnd,hDC,IDC_START,WM_MOUSEMOVE);
if(Buttons.bOverP)
{
Buttons.bOverP = FALSE;
UpdateButton(hWnd,hDC,IDC_PAUSE,NULL);
ReleaseDC(hWnd,hDC);
break;
}
if(Buttons.bOverH)
{
Buttons.bOverH = FALSE;
UpdateButton(hWnd,hDC,IDC_HELP1,NULL);
ReleaseDC(hWnd,hDC);
break;
}
if(Buttons.bOverE)
{
Buttons.bOverE = FALSE;
UpdateButton(hWnd,hDC,IDC_EXIT1,NULL);
ReleaseDC(hWnd,hDC);
break;
}
}
ReleaseDC(hWnd,hDC);
break;
} if(PtInRect(&Buttons.rcPause,pt))
{
if(!Buttons.bOverP)
{
Buttons.bOverP = TRUE;
UpdateButton(hWnd,hDC,IDC_PAUSE,WM_MOUSEMOVE);
if(Buttons.bOverS)
{
Buttons.bOverS = FALSE;
UpdateButton(hWnd,hDC,IDC_START,NULL);
ReleaseDC(hWnd,hDC);
break;
}
if(Buttons.bOverH)
{
Buttons.bOverH = FALSE;
UpdateButton(hWnd,hDC,IDC_HELP1,NULL);
ReleaseDC(hWnd,hDC);
break;
}
if(Buttons.bOverE)
{
Buttons.bOverE = FALSE;
UpdateButton(hWnd,hDC,IDC_EXIT1,NULL);
ReleaseDC(hWnd,hDC);
break;
}
}
ReleaseDC(hWnd,hDC);
break;
} if(PtInRect(&Buttons.rcHelp,pt))
{
if(!Buttons.bOverH)
{
Buttons.bOverH = TRUE;
UpdateButton(hWnd,hDC,IDC_HELP1,WM_MOUSEMOVE);
if(Buttons.bOverS)
{
Buttons.bOverS = FALSE;
UpdateButton(hWnd,hDC,IDC_START,NULL);
ReleaseDC(hWnd,hDC);
break;
}
if(Buttons.bOverP)
{
Buttons.bOverP = FALSE;
UpdateButton(hWnd,hDC,IDC_PAUSE,NULL);
ReleaseDC(hWnd,hDC);
break;
}
if(Buttons.bOverE)
{
Buttons.bOverE = FALSE;
UpdateButton(hWnd,hDC,IDC_EXIT1,NULL);
ReleaseDC(hWnd,hDC);
break;
}
}
ReleaseDC(hWnd,hDC);
break;
} if(PtInRect(&Buttons.rcExit,pt))
{
if(!Buttons.bOverE)
{
Buttons.bOverE = TRUE;
UpdateButton(hWnd,hDC,IDC_EXIT1,WM_MOUSEMOVE);
if(Buttons.bOverS)
{
Buttons.bOverS = FALSE;
UpdateButton(hWnd,hDC,IDC_START,NULL);
ReleaseDC(hWnd,hDC);
break;
}
if(Buttons.bOverP)
{
Buttons.bOverP = FALSE;
UpdateButton(hWnd,hDC,IDC_PAUSE,NULL);
ReleaseDC(hWnd,hDC);
break;
}
if(Buttons.bOverH)
{
Buttons.bOverH = FALSE;
UpdateButton(hWnd,hDC,IDC_HELP1,NULL);
ReleaseDC(hWnd,hDC);
break;
}
}
ReleaseDC(hWnd,hDC);
break;
} if(Buttons.bOverS)
{
Buttons.bOverS = FALSE;
UpdateButton(hWnd,hDC,IDC_START,NULL);
ReleaseDC(hWnd,hDC);
break;
}
if(Buttons.bOverP)
{
Buttons.bOverP = FALSE;
UpdateButton(hWnd,hDC,IDC_PAUSE,NULL);
ReleaseDC(hWnd,hDC);
break;
}
if(Buttons.bOverH)
{
Buttons.bOverH = FALSE;
UpdateButton(hWnd,hDC,IDC_HELP1,NULL);
ReleaseDC(hWnd,hDC);
break;
}
if(Buttons.bOverE)
{
Buttons.bOverE = FALSE;
UpdateButton(hWnd,hDC,IDC_EXIT1,NULL);
ReleaseDC(hWnd,hDC);
break;
} if(hDC)
ReleaseDC(hWnd,hDC);
break; case WM_LBUTTONDOWN:
hDC = GetDC(hWnd);
GetCursorPos(&pt);
ScreenToClient(hWnd,&pt); if(PtInRect(&Buttons.rcStart,pt) && Buttons.bOverS)
{
UpdateButton(hWnd,hDC,IDC_START,WM_LBUTTONDOWN);
ReleaseDC(hWnd,hDC);
break;
} if(PtInRect(&Buttons.rcPause,pt) && Buttons.bOverP)
{
UpdateButton(hWnd,hDC,IDC_PAUSE,WM_LBUTTONDOWN);
ReleaseDC(hWnd,hDC);
break;
} if(PtInRect(&Buttons.rcHelp,pt) && Buttons.bOverH)
{
UpdateButton(hWnd,hDC,IDC_HELP1,WM_LBUTTONDOWN);
ReleaseDC(hWnd,hDC);
break;
} if(PtInRect(&Buttons.rcExit,pt) && Buttons.bOverE)
{
UpdateButton(hWnd,hDC,IDC_EXIT1,WM_LBUTTONDOWN);
ReleaseDC(hWnd,hDC);
break;
} if(hDC)
ReleaseDC(hWnd,hDC);
break; case WM_LBUTTONUP:
hDC = GetDC(hWnd);
GetCursorPos(&pt);
ScreenToClient(hWnd,&pt); if(PtInRect(&Buttons.rcStart,pt) && Buttons.bOverS)
{
SendMessage(hWnd,WM_COMMAND,IDC_START,0);
UpdateButton(hWnd,hDC,IDC_START,WM_LBUTTONUP);
ReleaseDC(hWnd,hDC);
break;
} if(PtInRect(&Buttons.rcPause,pt) && Buttons.bOverP)
{
SendMessage(hWnd,WM_COMMAND,IDC_PAUSE,0);
UpdateButton(hWnd,hDC,IDC_PAUSE,WM_LBUTTONUP);
ReleaseDC(hWnd,hDC);
break;
} if(PtInRect(&Buttons.rcHelp,pt) && Buttons.bOverH)
{
SendMessage(hWnd,WM_COMMAND,IDC_HELP1,0);
UpdateButton(hWnd,hDC,IDC_HELP1,WM_LBUTTONUP);
ReleaseDC(hWnd,hDC);
break;
} if(PtInRect(&Buttons.rcExit,pt) && Buttons.bOverE)
{
SendMessage(hWnd,WM_COMMAND,IDC_EXIT1,0);
UpdateButton(hWnd,hDC,IDC_EXIT1,WM_LBUTTONUP);
ReleaseDC(hWnd,hDC);
break;
} if(hDC)
ReleaseDC(hWnd,hDC);
break; case WM_COMMAND:
switch(wParam)
{
case IDC_START:
MessageBox(hWnd,"开始","测试",MB_OK);
break; case IDC_PAUSE:
MessageBox(hWnd,"暂停","测试",MB_OK);
break; case IDC_HELP1:
MessageBox(hWnd,"帮助","测试",MB_OK);
break; case IDC_EXIT1:
DestroyWindow(hWnd);
break;
}
break; case WM_DESTROY:
hStartOver = NULL;
hStartDown = NULL;
hStartOut = NULL;
hPauseOver = NULL;
hPauseDown = NULL;
hPauseOut = NULL;
hHelpOver = NULL;
hHelpDown = NULL;
hHelpOut = NULL;
hExitOver = NULL;
hExitDown = NULL;
hExitOut = NULL;
PostQuitMessage(0);
break; default:
return DefWindowProc(hWnd,uMsg,wParam,lParam);
}
return 0;
}
//
#include "resource.h"#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS/////////////////////////////////////////////////////////////////////////////
// Chinese (P.R.C.) resources#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
#ifdef _WIN32
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936)
#endif //_WIN32#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h\0"
END2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END3 TEXTINCLUDE DISCARDABLE
BEGIN
"\r\n"
"\0"
END#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_MAINICON ICON DISCARDABLE "Resource\\icon1.ico"/////////////////////////////////////////////////////////////////////////////
//
// Bitmap
//IDB_STAT BITMAP DISCARDABLE "Resource\\Stat.bmp"
IDB_EXITDOWN BITMAP DISCARDABLE "Resource\\ExitDown.bmp"
IDB_EXITOUT BITMAP DISCARDABLE "Resource\\ExitOut.bmp"
IDB_EXITOVER BITMAP DISCARDABLE "Resource\\ExitOver.bmp"
IDB_HELPDOWN BITMAP DISCARDABLE "Resource\\HelpDown.bmp"
IDB_HELPOUT BITMAP DISCARDABLE "Resource\\HelpOut.bmp"
IDB_HELPOVER BITMAP DISCARDABLE "Resource\\HelpOver.bmp"
IDB_PAUSEDOWN BITMAP DISCARDABLE "Resource\\PauseDown.bmp"
IDB_PAUSEOUT BITMAP DISCARDABLE "Resource\\PauseOut.bmp"
IDB_PAUSEOVER BITMAP DISCARDABLE "Resource\\PauseOver.bmp"
IDB_STARTDOWN BITMAP DISCARDABLE "Resource\\StartDown.bmp"
IDB_STARTOUT BITMAP DISCARDABLE "Resource\\StartOut.bmp"
IDB_STARTOVER BITMAP DISCARDABLE "Resource\\StartOver.bmp"
IDB_KBD BITMAP DISCARDABLE "Resource\\KBD.bmp"
IDB_KBDMASK BITMAP DISCARDABLE "Resource\\KBDMask.bmp"
IDB_LOGO BITMAP DISCARDABLE "Resource\\Logo.bmp"
IDB_LOGOMASK BITMAP DISCARDABLE "Resource\\LogoMask.bmp"
#endif // Chinese (P.R.C.) resources
/////////////////////////////////////////////////////////////////////////////#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED//resource.h
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by ChsTest.rc
//
#define IDI_ICON1 101
#define IDI_MAINICON 101
#define IDB_STAT 102
#define IDB_EXITDOWN 103
#define IDB_EXITOUT 104
#define IDB_EXITOVER 105
#define IDB_HELPDOWN 106
#define IDB_HELPOUT 107
#define IDB_HELPOVER 108
#define IDB_PAUSEDOWN 109
#define IDB_PAUSEOUT 110
#define IDB_PAUSEOVER 111
#define IDB_STARTDOWN 112
#define IDB_STARTOUT 113
#define IDB_STARTOVER 114
#define IDB_KBD 115
#define IDB_KBDMASK 116
#define IDD_SETDIALOG 117
#define IDB_LOGO 118
#define IDB_LOGOMASK 119
#define IDC_CHECKBJOMIT 1000
#define IDC_RADIOGB 1002
#define IDC_RADIOGBK 1003// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 120
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1004
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif