怎么创建一个WIN7样式的按钮?

zhaoyu1999 2011-05-19 04:39:01
我用CreteWindow创建出来的按钮样子是WIN98那种的
怎么能创建出来WIN7那种样子的?
...全文
888 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
little_sand 2011-06-05
  • 打赏
  • 举报
回复
Mark
zhaoyu1999 2011-05-22
  • 打赏
  • 举报
回复
我就写个小东西而已
自绘有点小题大作了
总之谢谢各位了
kyotrue 2011-05-20
  • 打赏
  • 举报
回复
你的那些代码创建出来的操作系统“内置”的按钮样式,和操作系统和你设置的样式有关,你看你的磁盘碎片整理程序什么的显示出来是怎样的,你那段代码创建出来就是怎样的样式。
snmhm1991 2011-05-20
  • 打赏
  • 举报
回复
对呀,最好的方法就是自绘按钮了,最彻底,最好看
马栏山的飘飘 2011-05-20
  • 打赏
  • 举报
回复
自己写个Button类,做自定义绘制按钮……
zhaoyu1999 2011-05-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 pop1210 的回复:]
原因maybe程序默认连接不到最新版本的Common-Controls dll。
[/Quote]

那怎么改才能默认连接到高版本的库呢?
必须自己定义Mainfest文件么
zhaoyu1999 2011-05-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 kyotrue 的回复:]
你的那些代码创建出来的操作系统“内置”的按钮样式,和操作系统和你设置的样式有关,你看你的磁盘碎片整理程序什么的显示出来是怎样的,你那段代码创建出来就是怎样的样式。
[/Quote]

不一样呃
yuanweihuayan 2011-05-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 likang0712 的回复:]
http://www.vckbase.com/document/viewdoc/?id=551

自己截图 自绘按钮

;)
[/Quote]
顶上喽!
「已注销」 2011-05-20
  • 打赏
  • 举报
回复
pop1210 2011-05-19
  • 打赏
  • 举报
回复
原因maybe程序默认连接不到最新版本的Common-Controls dll。
pop1210 2011-05-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhaoyu1999 的回复:]
我用CreteWindow创建出来的按钮样子是WIN98那种的
怎么能创建出来WIN7那种样子的?
[/Quote]
给你个思路,按下面所说的来做:
http://hi.baidu.com/pop1210/blog/item/8955ce08e42a6824e92488c6.html
要修改的地方是,把manifest文件里的version="6.0.0.0"改为version="6.0.7600.16661",这是我能试出来的最高版本的Common-Controls了,
你可以根据:
http://social.msdn.microsoft.com/Forums/zh-CN/vcgeneral/thread/fa445e3a-b8ce-4126-b0e7-959d26538029
所说的方法到C:\Windows\winsxs\Manifests下找找看~
zhaoyu1999 2011-05-19
  • 打赏
  • 举报
回复
我是win7系统啊
我发现代码你们试试

#include <windows.h>

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("HelloWin") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;

wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL,IDI_SHIELD) ;
wndclass.hCursor = LoadCursor (NULL,IDC_ARROW ) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (GRAY_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;

if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}

hwnd = CreateWindow (szAppName, // window class name
TEXT ("The Hello Program"), // window caption
WS_OVERLAPPEDWINDOW, // window style
CW_USEDEFAULT, // initial x position
CW_USEDEFAULT, // initial y position
200, // initial x size
100, // initial y size
NULL, // parent window handle
NULL, // window menu handle
hInstance, // program instance handle
NULL) ; // creation parameters

ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;

while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
PAINTSTRUCT ps ;
static HWND b;

switch (message)
{
case WM_CREATE:
b=CreateWindow(TEXT("Button"),TEXT("Button"),WS_CHILD | WS_VISIBLE,10,10,80,20,hwnd,NULL,(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE),0);
return 0 ;
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;
EndPaint (hwnd, &ps) ;
return 0 ;
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
ningto.com 2011-05-19
  • 打赏
  • 举报
回复
什么系统就会创建出什么样式的按钮,除非你自绘, 或者用其他库
kyotrue 2011-05-19
  • 打赏
  • 举报
回复
不知道你想问什么,如果你在Win7运行,按钮默认就是Win7样式的。
如果你想在XP下显示成Win7那样的,只能自绘,或者用界面库

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧