如题,要纯API写成的,不要MFC。请给出实例,谢谢。
解决方案 »
- 如何获取自己电脑的真实ip地址(用ipconfig看到只是由路由器提供的地址...
- 怎样将从从网络接受到的摄像头图像显示出来?
- 请问非BHO的程序,如何获取IE浏览器下载一个网页的事件?
- vc如何编写c++Builer和Delphi可以调用的Dll?
- GetMessage(&lpMsg,NULL,0,0)与GetMessage(&lpMsg,hWnd,0,0)有何区别??
- 求助!list容器中装入类的访问的问题
- 如何在运行时确定对话框的大小呢。我已经问的没有分了,还没人回答,惨
- SOCKET 巨怪问题征解!!
- 给为朋友救命,我的机器中木马了
- ReadDirectoryChanges为什么编译的时候找不到?(100分)
- 哪有进程、线程查看器下载?有源码、无源码均可!
- 问一个简单的问题!
BOOL InitApp(HINSTANCE);
BOOL InitInstance(HINSTANCE, int);void DrawPic(HDC, HINSTANCE, int); char szClassName[] = "owndr01"; HWND hMyButton;
LPCTSTR buttoncaption="owner button";
int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst,
LPSTR lpsCmdLine, int nCmdShow)
{
MSG msg;
if (!hPrevInst) {
if (!InitApp(hCurInst))
return FALSE;
}
if (!InitInstance(hCurInst, nCmdShow)) {
return FALSE;
}
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
BOOL InitApp(HINSTANCE hInst)
{
WNDCLASS wc;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInst;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = (LPCSTR)szClassName;
return (RegisterClass(&wc));
}
BOOL InitInstance(HINSTANCE hInst, int nCmdShow)
{
HWND hWnd; hWnd = CreateWindow(szClassName,
"owner draw button",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, //£Ø×ù˜Ë
CW_USEDEFAULT, //£Ù×ù˜Ë
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInst,
NULL);
if (!hWnd)
return FALSE;
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
int id;
HDC hdc;
static int sw = 1;
switch (msg) {
case WM_CREATE:
hMyButton = CreateWindow("BUTTON",
buttoncaption,
WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,
30, 30, //λÖÃ
100, 100,
hWnd,
(HMENU)ID_MYOWN,
(HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE),
NULL);
break;
case WM_DRAWITEM:
{
//draw bmp here
LPDRAWITEMSTRUCT pdis=(LPDRAWITEMSTRUCT)lp;
hdc = pdis->hDC;
HBRUSH hbr=CreateSolidBrush(RGB(0,244,22));
HBRUSH hbold=(HBRUSH)SelectObject(hdc,hbr);
Rectangle(hdc,pdis->rcItem.left,pdis->rcItem.top,pdis->rcItem.right,pdis->rcItem.bottom);
SelectObject(hdc,hbold);
DeleteObject(hbr);
SetTextColor(hdc,RGB(255,0,0));
SetBkMode(hdc,TRANSPARENT);
TextOut(hdc,pdis->rcItem.left,pdis->rcItem.top,buttoncaption,strlen(buttoncaption));
}
break;
case WM_COMMAND:
switch (LOWORD(wp)) {
case ID_MYOWN:
if (sw == 1) {
sw = 0;
return 0L;
}
if (sw == 0) {
sw = 1;
return 0L;
}
break;
default:
return (DefWindowProc(hWnd, msg, wp, lp));
}
break;
case WM_CLOSE:
id = MessageBox(hWnd,
(LPCSTR)"end application",
(LPCSTR)"confirm",
MB_YESNO | MB_ICONQUESTION);
if (id == IDYES) {
DestroyWindow(hWnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return (DefWindowProc(hWnd, msg, wp, lp));
}
return 0L;
}