描述:
这个问题问过多次,仍未解决!因为我的控件上有很多按钮(其实是一个操作面板),所以我在控件中打开一个对话框,这样设计起来容易一些(可以所见即所得),但在控件中的对话框上的按钮无论如何也表现不出XP外观,很是郁闷,还请高手帮忙!请不要盲目的告诉我写个xml文件,这是在应用程序中的方法,在控件中好像不行,总之不管用什么方法,我希望是能够实现,希望大家试一下再说。(这个问题是可以实现的,应该说,我记得MyIE中打开我的控件,不加任何处理就是XP外观,可见外观是可以改成XP的)
顶者有分,如果问题解决,可能会得1分,如果问题未解决则均分给顶者。
解决方案1:
ding
解决方案2: 我这里有一个例子。给我你的QQ给传过去。
我的QQ:276939874
一个ocx有必要还弄的那么好吗?
解决方案4:你去下个xpbutton的类,用法和普通对话框模式一样的,我原来做的ocx就是那么做的
解决方案5: #pragma once
#include "afxwin.h"
class CSuperButton :
public CButton
{
public:
CSuperButton(void);
virtual ~CSuperButton(void);
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
afx_msg LRESULT OnMouseLeave(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnMouseHover(WPARAM wParam, LPARAM lParam);
DECLARE_MESSAGE_MAP()
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
public:
BOOL m_bTracking;
BOOL m_bOver;
};
OnMouseLeave
OnMouseHover要手动添加
我这个是位图按扭,只要在DrawItem这里重绘按扭就可以了
解决方案7: #include "stdafx.h"
#include "test1.h"
#include ".\superbutton.h"
CSuperButton::CSuperButton(void)
{
m_bOver = m_bTracking = FALSE;
}
CSuperButton::~CSuperButton(void)
{
}
void CSuperButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
// TODO: 添加您的代码以绘制指定项
CDC dc, dcMem;
dc.Attach(lpDrawItemStruct->hDC);
dcMem.CreateCompatibleDC(&dc);
CBitmap bmMem, *pOldMap;
bmMem.LoadBitmap(IDB_MOUSE);
pOldMap = dcMem.SelectObject(&bmMem);
dc.BitBlt(0, 0, 86,24, &dcMem, 0, 0, SRCCOPY);
dcMem.SelectObject(pOldMap);
}
BEGIN_MESSAGE_MAP(CSuperButton, CButton)
ON_WM_MOUSEMOVE()
ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave)
ON_MESSAGE(WM_MOUSEHOVER, OnMouseHover)
END_MESSAGE_MAP()
void CSuperButton::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if (!m_bTracking)
{
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(tme);
tme.hwndTrack = m_hWnd;
tme.dwFlags = TME_LEAVE | TME_HOVER;
tme.dwHoverTime = 1;
m_bTracking = _TrackMouseEvent(&tme);
}
CButton::OnMouseMove(nFlags, point);
}
LRESULT CSuperButton::OnMouseLeave(WPARAM wParam, LPARAM lParam)
{
InvalidateRect(NULL, FALSE);
m_bTracking = FALSE;
return 0;
}
LRESULT CSuperButton::OnMouseHover(WPARAM wParam, LPARAM lParam)
{
InvalidateRect(NULL);
CPaintDC dc(this); // device context for painting
CBitmap m_bmp;
CDC m_dc;
m_dc.CreateCompatibleDC(&dc);
if( m_bmp.LoadBitmap(IDB_MOUSEO) )
m_dc.SelectObject(&m_bmp);
dc.BitBlt(0,0,360,160,&m_dc,0,0,SRCCOPY);
return 0;
}
我也顶了
解决方案9:我也顶了
解决方案10: 水水水水水水水水水水水水水水水水水水水水水水水水灌灌灌灌灌灌灌灌灌水水水水
水水水水水水水水水水水水水水水水水水灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌水水水水
水水水水水水水水水水水水水水水灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌水水水水
水水水水水水水水水水水灌灌灌灌水灌灌灌灌灌灌灌灌灌灌灌水水水水水水水水水水
水水水水水水水水灌灌灌灌灌灌灌水灌灌灌水水灌灌灌灌灌水水水水水水水水水水水
水水水灌灌灌灌灌灌灌灌灌灌灌灌水水水水水水灌灌灌灌水水水水水水水水水水水水
水灌灌灌灌灌灌灌灌灌灌灌灌灌灌水水水水水水灌灌灌灌水水水水水水水水水水水水
水灌灌灌灌灌灌灌灌灌灌灌灌水水水水水水水灌灌灌灌灌灌灌灌灌灌灌水水水水水水
水灌灌灌灌灌灌灌灌灌灌灌灌水水水水水水灌灌灌灌灌灌灌灌灌灌灌灌灌灌水水水水
水水灌灌灌灌灌灌灌灌灌灌水水水水水灌灌灌灌灌灌水水水灌灌灌灌灌灌灌水水水水
水水水水水水水水灌灌灌灌水水水水水灌灌灌灌水水水水水水灌灌灌灌灌水水水水水
水水水水水水水水灌灌灌灌水水水水灌灌灌灌水水灌灌水水水灌灌灌灌灌水水水水水
水水水水水水水水灌灌灌灌水水水水灌灌灌灌水水灌灌灌灌水灌灌灌灌灌水水水水水
水水水水水水水水灌灌灌灌水水水水灌灌灌灌水水灌灌灌灌水灌灌灌灌灌水水水水水
水水水水水水水水灌灌灌灌水水水水灌灌灌灌水水灌灌灌水水灌灌灌灌灌水水水水水
水水水水水水水水灌灌灌灌水水水水灌灌灌灌水水灌灌灌水水灌灌灌灌灌水水水水水
水水水水水水水水灌灌灌灌水水水水灌灌灌灌水灌灌灌灌水水灌灌灌灌灌水水水水水
水水水水水水水水灌灌灌灌水水水水灌灌灌灌水灌灌灌灌水水灌灌灌灌灌水水水水水
水水水水水水水水灌灌灌灌水水水水灌灌灌灌水灌灌灌灌水水灌灌灌灌灌水水水水水
水水水水水水水水灌灌灌灌水水水水灌灌灌灌水灌灌灌灌水水灌灌灌灌灌水水水水水
水水水水水水水水灌灌灌灌水水水水灌灌灌水水灌灌灌灌水水灌灌灌灌灌水水水水水
水水灌灌水水水灌灌灌灌灌水水水水灌灌灌水水灌灌灌水水水灌灌灌灌灌水水水水水
水水灌灌灌灌灌灌灌灌灌灌水水水水水灌灌水水灌灌水水水水灌灌灌灌灌水水水水水
水水水灌灌灌灌灌灌灌灌灌水水水水水水水水灌灌灌水水水水灌灌灌灌水水水水水水
水水水水水灌灌灌灌灌灌灌水水水水水水水水灌灌灌水灌灌灌灌水水水水水水水水水
水水水水水水灌灌灌灌灌灌水水水水水水水灌灌灌灌水水灌灌灌灌灌水水水水水水水
水水水水水水水水灌灌灌水水水水水水灌灌灌灌灌水水水灌灌灌灌灌灌水水水水水水
水水水水水水水水水水水水水水水水灌灌灌灌灌灌水水水水灌灌灌灌灌灌水水水水水
水水水水水水水水水水水水水水水灌灌灌灌灌灌水水水水水水灌灌灌灌灌灌灌水水水
水水水水水水水水水水水水水水灌灌灌灌灌水水水水水水水水水灌灌灌灌灌灌水水水
水水水水水水水水水水水水水灌灌灌灌灌水水水水水水水水水水水灌灌灌灌水水水水
水水水水水水水水水水水水灌灌灌水水水水水水水水水水水水水水水灌灌灌水水水水
水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水
关注! 在WTL中用dialog base的程序结构也有这个问题。
解决方案12:已经发过去了,请查收。
解决方案13:我搞过,和对框框方法一样的
解决方案14: 留下email
发个XP按钮代码和demo给你,看看是否满意。呵呵。
up
解决方案16:我只试过在对话框上面的按钮XP话,在OCX文件中没有试过,帮不了忙呀!!
解决方案17:可以直接用XPButton第三方类
解决方案18:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/userex/cookbook.asp