目前共有3篇帖子。 內容轉換:不轉換▼
 
點擊 回復
276 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)
 

本帖信息

點擊數:276 回複數:2
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2017-1-7 23:28
 
©2010-2024 Arslanbar Ver2.0
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。