在线等!!!急!请问:win32api中怎样把显示的字变大???创建字体问题

Kshape 2004-11-05 01:37:13
我的主要程序代码是这样的!
HDC hDC;
RECT rc;
case WM_TIMER:
hDC = CreateDC("DISPLAY", 0, 0, 0);
SetTextColor(hDC, RGB(255, 0, 0));
SetBkMode(hDC, TRANSPARENT);
rc.left = 0;
rc.top = 0;
rc.right = GetSystemMetrics(SM_CXSCREEN);
rc.bottom = GetSystemMetrics(SM_CYSCREEN);
DrawText(hDC, "a", -1, &rc, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
DeleteDC(hDC);
break;

现在我的问题是,怎样才能是显示的“a”变得比较大??????
急,谢谢,等
...全文
262 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
fj_jiangqi 2004-11-06
  • 打赏
  • 举报
回复
字体在要显示时设置,写在WM_PAINT事件中。
-----------------------------
我流落在凄凉的世界里-孤苦伶仃
我过着动荡无助的生活-四处漂泊
我在死亡线上苦苦挣扎-度日如年
linxy2002 2004-11-06
  • 打赏
  • 举报
回复
Magnus(小楼一夜听春雨)不是说的很清楚了嘛
Kshape 2004-11-06
  • 打赏
  • 举报
回复
我不知道该怎样加啊!我是想在create的时候就选择一次字体,然后每个timer的时候就用这种字体输出来,但是我不知道该怎么样把这几句代码加到我的程序中!我加上去后要出问题,编译能通过!唉,你们就帮帮我吧!谢谢了
fj_jiangqi 2004-11-06
  • 打赏
  • 举报
回复
主要就是设置字体尺寸。
用HFONT hFont=CreateFont()创建字体,也可以用楼上的CreateFontIndirect()
接着用SelectObject(hdc,hFont);
然后文字输出......
你可以看看c里头的例子,写得很详细的。
-----------------------------
我流落在凄凉的世界里-孤苦伶仃
我过着动荡无助的生活-四处漂泊
我在死亡线上苦苦挣扎-度日如年
Kshape 2004-11-06
  • 打赏
  • 举报
回复
我就想把字变大一点,真的那么难么???
Kshape 2004-11-06
  • 打赏
  • 举报
回复
我就想把字变大一点,真的那么难么???
Kshape 2004-11-06
  • 打赏
  • 举报
回复
请问楼上的,最后一句代码的c从哪里来??
arvid_gs 2004-11-06
  • 打赏
  • 举报
回复
这样就可以了, Cfont 是mfc 肯定不能再api里面用的。

CHOOSEFONT cf;
LOGFONT lf;
HFONT hfont;

// Initialize members of the CHOOSEFONT structure.

cf.lStructSize = sizeof(CHOOSEFONT);
cf.hwndOwner = (HWND)NULL;
cf.hDC = (HDC)NULL;
cf.lpLogFont = &lf;
cf.iPointSize = 0;
cf.Flags = CF_SCREENFONTS;
cf.rgbColors = RGB(0,0,0);
cf.lCustData = 0L;
cf.lpfnHook = (LPCFHOOKPROC)NULL;
cf.lpTemplateName = (LPSTR)NULL;
cf.hInstance = (HINSTANCE) NULL;
cf.lpszStyle = (LPSTR)NULL;
cf.nFontType = SCREEN_FONTTYPE;
cf.nSizeMin = 0;
cf.nSizeMax = 0;

// Display the CHOOSEFONT common-dialog box.

ChooseFont(&cf);

// Create a logical font based on the user's
// selection and return a handle identifying
// that font.

hfont = CreateFontIndirect(cf.lpLogFont);
SelectObject(c, hfont );
Kshape 2004-11-06
  • 打赏
  • 举报
回复
这是我得源代码,怎么回事啊,给位大哥

#include <windows.h>
#include <Commctrl.h>
#include "Resource.h"

#pragma comment(lib, "comctl32.lib")
#define szApp "Crosshair"
#define WM_TASK_ICON WM_USER + 20

HINSTANCE hInst;

LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nShowCmd)
{
MSG msg;
HWND hwnd;
WNDCLASSEX wndclass;
LOGFONT LogFont = { 0 };
hInst = hInstance;

//
LogFont.lfCharSet =GB2312_CHARSET;
LogFont.lfClipPrecision = 0;
LogFont.lfEscapement = 0;
memcpy(LogFont.lfFaceName, "Arial", 5);
LogFont.lfHeight = 14; // 这里就是你要的
LogFont.lfItalic = 0;
LogFont.lfOrientation = 0;
LogFont.lfOutPrecision = 0;
LogFont.lfPitchAndFamily = 0;
LogFont.lfQuality = 0;
LogFont.lfStrikeOut = 0;
LogFont.lfUnderline = 0;
LogFont.lfWeight = 400;
LogFont.lfWidth = 6;

CFont cFont2;
VERIFY(cFont2.CreateFontIndirect(&LogFont));
cDc->SelectObject(&cFont2);
//
wndclass.cbClsExtra = 0;
wndclass.cbSize = sizeof(wndclass);
wndclass.cbWndExtra = 0;
wndclass.hbrBackground = NULL;
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hIcon = LoadIcon(hInstance, (LPCSTR)IDI_ICON1);
wndclass.hIconSm = wndclass.hIcon;
wndclass.hInstance = hInstance;
wndclass.lpfnWndProc = WndProc;
wndclass.lpszClassName = szApp;
wndclass.lpszMenuName = NULL;
wndclass.style = CS_HREDRAW | CS_VREDRAW;

RegisterClassEx(&wndclass);

hwnd = CreateWindowEx(WS_EX_TOPMOST, szApp, szApp, WS_OVERLAPPEDWINDOW, 0, 0, 0, 0, 0, 0, hInstance, 0);

ShowWindow(hwnd, 0);
UpdateWindow(hwnd);

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

return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
HDC hDC;
RECT rc;

static NOTIFYICONDATA nid;
HMENU hMenu;
POINT pt;

switch(iMsg)
{
case WM_CREATE:
SetTimer(hwnd, 1000, 10, NULL);
RtlZeroMemory(&nid, sizeof(nid));
nid.cbSize = sizeof(nid);
nid.hIcon = LoadIcon(hInst, (LPCSTR)IDI_ICON1);
nid.hWnd = hwnd;
wsprintf(nid.szTip, "Counter-Strike CrossHair");
nid.uCallbackMessage = WM_TASK_ICON;
nid.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;
nid.uID = rand() % 100;
Shell_NotifyIcon(NIM_ADD, &nid);
break;

case WM_TIMER:
hDC = CreateDC("DISPLAY", 0, 0, 0);
SetTextColor(hDC, RGB(255, 0, 0));
SetBkMode(hDC, TRANSPARENT);
rc.left = 0;
rc.top = 0;
rc.right = GetSystemMetrics(SM_CXSCREEN);
rc.bottom = GetSystemMetrics(SM_CYSCREEN);
DrawText(hDC, "+", -1, &rc, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
DeleteDC(hDC);
break;

case WM_CLOSE:
Shell_NotifyIcon(NIM_DELETE, &nid);
PostQuitMessage(0);
break;

case WM_TASK_ICON:
switch(lParam)
{
case WM_COMMAND:
MessageBox(GetForegroundWindow(), "Message Received.", "", MB_OK);
case WM_SYSCOMMAND:
switch(HIWORD(wParam))
{
case IDM_ABOUT:
MessageBox(GetForegroundWindow(), "Counter-Strike Crosshair.", "About...", MB_OK | MB_TOPMOST);
break;

case IDM_CLOSE:
SendMessage(hwnd, WM_CLOSE, 0, 0);
break;

default:
break;
}
break;

case WM_RBUTTONDOWN:
hMenu = LoadMenu(hInst, (LPCSTR)IDR_MENU1);
hMenu = GetSubMenu(hMenu, 0);
GetCursorPos(&pt);
TrackPopupMenu(hMenu, TPM_LEFTBUTTON, pt.x, pt.y, 0, hwnd, NULL);
break;


}
break;

default:
break;
}

return DefWindowProc(hwnd, iMsg, wParam, lParam);
}
Kshape 2004-11-06
  • 打赏
  • 举报
回复
编译不过啊,好多错误

c:\documents and settings\administrator\桌面\crosshair\crosshair.cpp(37) : error C2065: “CFont” : 未声明的标识符
c:\documents and settings\administrator\桌面\crosshair\crosshair.cpp(37) : error C2146: 语法错误 : 缺少“;”(在标识符“cFont2”的前面)
c:\documents and settings\administrator\桌面\crosshair\crosshair.cpp(37) : error C2065: “cFont2” : 未声明的标识符
c:\documents and settings\administrator\桌面\crosshair\crosshair.cpp(38) : error C2228: “.CreateFontIndirectA”的左侧必须有类/结构/联合类型
类型是“'unknown-type'”
c:\documents and settings\administrator\桌面\crosshair\crosshair.cpp(38) : error C3861: “VERIFY”: 即使使用参数相关的查找,也未找到标识符
c:\documents and settings\administrator\桌面\crosshair\crosshair.cpp(38) : error C3861: “cFont2”: 即使使用参数相关的查找,也未找到标识符
c:\documents and settings\administrator\桌面\crosshair\crosshair.cpp(39) : error C2065: “cDc” : 未声明的标识符
c:\documents and settings\administrator\桌面\crosshair\crosshair.cpp(39) : error C2227: “->SelectObject”的左侧必须指向类/结构/联合
类型是“'unknown-type'”
c:\documents and settings\administrator\桌面\crosshair\crosshair.cpp(39) : error C3861: “cFont2”: 即使使用参数相关的查找,也未找到标识符
Magnus 2004-11-05
  • 打赏
  • 举报
回复
yun,
这样还不够清楚阿,
这是源码阿,
绝对能用的,
其中LogFont.lfHeight = 14; // 这里就是你要的
很清楚了阿
Kshape 2004-11-05
  • 打赏
  • 举报
回复
各位大哥,帮忙啊,该这样改以前的代码实现把字体变大???
try876 2004-11-05
  • 打赏
  • 举报
回复
楼上的不是写好了吗?
Kshape 2004-11-05
  • 打赏
  • 举报
回复
有人顶么?UP有分
Kshape 2004-11-05
  • 打赏
  • 举报
回复
代码怎么写呢?
Magnus 2004-11-05
  • 打赏
  • 举报
回复
LOGFONT LogFont = { 0 };
LogFont.lfCharSet = GB2312_CHARSET;
LogFont.lfClipPrecision = 0;
LogFont.lfEscapement = 0;
memcpy(LogFont.lfFaceName, "Arial", 5);
LogFont.lfHeight = 14; // 这里就是你要的
LogFont.lfItalic = 0;
LogFont.lfOrientation = 0;
LogFont.lfOutPrecision = 0;
LogFont.lfPitchAndFamily = 0;
LogFont.lfQuality = 0;
LogFont.lfStrikeOut = 0;
LogFont.lfUnderline = 0;
LogFont.lfWeight = 400;
LogFont.lfWidth = 6;

CFont cFont2;
VERIFY(cFont2.CreateFontIndirect(&LogFont));
cDc->SelectObject(&cFont2);

15,978

社区成员

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

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