使用Windows API改变字体风格

#include <windows.h>
#pragma comment(linker,"/subsystem:windows")
HWND hs;
typedef struct tagSetFont{
	HWND hwnd;
	char *facename;
}setFont;
int CALLBACK FontCallback(LOGFONT *lf,TEXTMETRIC *tm,DWORD type,LPARAM structSetFont)
{
	HFONT hfont;
	setFont *value=(setFont*) structSetFont;
	if(strstr(lf->lfFaceName,(char *)value->facename))
	{
		hfont=CreateFontIndirect(lf);
		SendMessage(value->hwnd,WM_SETFONT,(WPARAM)hfont,(LPARAM)MAKELONG(TRUE,TRUE));
		return FALSE;
	}
	return TRUE;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
	static HWND hedit;
	setFont sf;
	switch(msg)
	{
	case WM_CREATE:				
		hedit=CreateWindow("static","hello",WS_CHILD | WS_VISIBLE,10,10,100,100,hwnd,NULL,((CREATESTRUCT *)lParam)->hInstance,NULL);
		sf.hwnd=hedit;
		sf.facename="Impact";		
		EnumFonts(GetDC(hedit),NULL,(FONTENUMPROC)FontCallback,(LPARAM)&sf);
		break;
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
	}
	return DefWindowProc(hwnd,msg,wParam,lParam);
}
int WINAPI WinMain(HINSTANCE hi,HINSTANCE hpi,LPSTR cmdLine,int nCmdShow)
{
	MSG msg;
	HWND hwnd;
	WNDCLASS wcls;
	ZeroMemory(&wcls,sizeof wcls);
	wcls.hInstance=hi;
	wcls.lpfnWndProc=WndProc;
	wcls.lpszClassName="fontDemo";
	wcls.hCursor=LoadCursor(NULL,IDC_ARROW);
	wcls.hbrBackground=(HBRUSH)(COLOR_3DSHADOW);
	RegisterClass(&wcls);
	hwnd=CreateWindow("fontDemo","FontStyleChange",WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hi,NULL);
	ShowWindow(hwnd,nCmdShow);
	UpdateWindow(hwnd);
	while(GetMessage(&msg,NULL,0,0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return msg.wParam;
}
源代码出自: ORBIT
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值