目前共有3篇帖子。 内容转换:不转换▼
 
点击 回复
373 2
【程序】文本框中的灰色文字提示
一派护法 十九级
1楼 发表于:2016-4-18 17:15
一派护法 十九级
2楼 发表于:2016-4-18 17:15
【代码】
#include <Windows.h>
#include "resource.h"

#include <CommCtrl.h>
#pragma comment(lib, "comctl32.lib")
#pragma comment(linker,"\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")

BOOL bEmpty = TRUE;

INT_PTR CALLBACK DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    HDC hdc;
    int wmId, wmEvent;
    switch (uMsg)
    {
    case WM_COMMAND:
        wmId = LOWORD(wParam);
        wmEvent = HIWORD(wParam);
        switch (wmId)
        {
        case IDOK:
        case IDCANCEL:
            EndDialog(hDlg, wmId);
            break;
        case IDC_EDIT1:
            if (wmEvent == EN_SETFOCUS && bEmpty) // 当获得焦点时
            {
                bEmpty = FALSE; // 保证输入的文字不为灰色
                SetWindowTextA((HWND)lParam, "");
            }
            else if (wmEvent == EN_KILLFOCUS) // 当失去焦点时
            {
                bEmpty = (GetWindowTextLength((HWND)lParam) == 0);
                if (bEmpty)
                    SetDlgItemTextA(hDlg, IDC_EDIT1, "请输入用户名");
            }
            break;
        }
        break;
    case WM_CTLCOLOREDIT:
        if (bEmpty && GetDlgCtrlID((HWND)lParam) == IDC_EDIT1)
        {
            hdc = (HDC)wParam;
            SetTextColor(hdc, RGB(128, 128, 128)); // 设置文字颜色
            return (INT_PTR)GetSysColorBrush(COLOR_WINDOW); // 文本框背景为默认的白色
        }
        break;
    }
    return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DlgProc);
    return 0;
}
一派护法 十九级
3楼 发表于:2017-1-7 23:28
在XP系统下最好在WinMain函数里面的第一行加上InitCommonControls函数,否则控件可能会无法显示。

回复帖子

内容:
用户名: 您目前是匿名发表
验证码:
(快捷键:Ctrl+Enter)
 

本帖信息

点击数:373 回复数:2
评论数: ?
作者:巨大八爪鱼
最后回复:巨大八爪鱼
最后回复时间:2017-1-7 23:28
 
©2010-2024 Arslanbar Ver2.0
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。