【win32】一个限制EDIT控件输入小写字母的例子

用到的文件有

dialog.c

Makefile

resource.h

resource.rc

 

1.dialog.c

#include <Windows.h>
#include <tchar.h>
#include "resource.h"

TCHAR DlgName[]=TEXT("MyDialog");
TCHAR AppName[]=TEXT("Dialog");;
//TCHAR TestString[]=TEXT("hello world");

TCHAR buffer1[512];
TCHAR buffer2[512];
TCHAR *buffer3=NULL;
int a=0,b=0,c=0;
HINSTANCE g_hInstance;
WNDPROC EditProc;

INT_PTR CALLBACK WinProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
LRESULT CALLBACK ProcFloat(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
    g_hInstance=hInstance;
    DialogBoxParam(hInstance,DlgName,NULL,(DLGPROC)WinProc,NULL);
    return 0;
}

INT_PTR CALLBACK WinProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam)
{
    switch(Msg)
    {
    case WM_INITDIALOG:
        SetFocus(GetDlgItem(hWnd,IDC_EDIT1));
        EditProc = (WNDPROC)SetWindowLong(GetDlgItem(hWnd, IDC_EDIT4), GWL_WNDPROC, (LONG)ProcFloat);    
        break;
    case WM_COMMAND:
        if (lParam==0)
        {
            switch(wParam)
            {
            case ID_TESTCONTROL_GETTEXT:
                GetDlgItemText(hWnd,IDC_EDIT1,buffer3,512);
                MessageBox(hWnd,buffer3,AppName,MB_OK);
                break;
            case ID_TESTCONTROL_CLEARTEXT:
                SetDlgItemText(hWnd,IDC_EDIT1,NULL);
                SetDlgItemText(hWnd,IDC_EDIT2,NULL);
                SetDlgItemText(hWnd,IDC_EDIT3,NULL);
                break;
            case ID_TESTCONTROL_EXIT:
                EndDialog(hWnd,NULL);
                break;
            }
        }
        else
        {
            if (HIWORD(wParam)==BN_CLICKED)
            {
                switch(LOWORD(wParam))
                {
                case IDOK:
                    GetDlgItemText(hWnd,IDC_EDIT1,buffer1,512);
                    GetDlgItemText(hWnd,IDC_EDIT2,buffer2,512);
                    a=_ttoi(buffer1);
                    b=_ttoi(buffer2);
                    c=a+b;
                //    buffer3=;
                    SetDlgItemText(hWnd,IDC_EDIT3,buffer3);
                    break;
                case IDCANCEL:
                    EndDialog(hWnd,NULL);
                    break;
                }

            }
        }
        break;
    default:
        return FALSE;
    }
    return TRUE;


}

LRESULT CALLBACK ProcFloat(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
  if (Msg == WM_CHAR && (wParam < 'A' || wParam > 'Z') && wParam != VK_BACK)
  {
    MessageBeep(MB_OK);
    return 0;
  }
  else
    return CallWindowProc(EditProc, hWnd, Msg, wParam, lParam);
}


2.Makefile

dialog.exe:dialog.o resource.o
	cc -o dialog.exe -mwindows  dialog.o resource.o
dialog.o:windows.h tchar.h resource.h
resource.o:
	windres -i resource.rc -o resource.o


VPATH=C:\MinGW\include

.PHONY:clean
clean:
	del dialog.exe dialog.o resource.o


3.resource.h

#define IDD_DIALOG1                     101
#define IDR_MENU1                       102
#define IDR_MENU2                       103
#define IDC_EDIT1                       1001
#define IDC_EDIT2                       1002
#define IDC_EDIT3                       1003
#define IDC_EDIT4                       1004
#define ID_TESTCONTROL_GETTEXT          40001
#define ID_TESTCONTROL_CLEARTEXT        40002
#define ID_TESTCONTROL_EXIT             40003

// Next default values for new objects
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        104
#define _APS_NEXT_COMMAND_VALUE         40004
#define _APS_NEXT_CONTROL_VALUE         1004
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif


4.resource.rc

#include "resource.h"
#include <Windows.h>
/
//
// Menu
//

IDR_MENU2 MENU DISCARDABLE
BEGIN
		POPUP "test control"
 		BEGIN
 		MENUITEM "get text", ID_TESTCONTROL_GETTEXT
 		MENUITEM "clear text", ID_TESTCONTROL_CLEARTEXT
 		MENUITEM "exit", ID_TESTCONTROL_EXIT
 		END
END



/
//
// Dialog
//

MYDIALOG DIALOGEX 0, 0, 419, 204
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Dialog"
MENU IDR_MENU2
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
		DEFPUSHBUTTON "确定",IDOK,181,10,50,14
		PUSHBUTTON "取消",IDCANCEL,185,31,50,14
		EDITTEXT IDC_EDIT1,27,9,50,17,ES_AUTOHSCROLL
		EDITTEXT IDC_EDIT2,101,8,52,18,ES_AUTOHSCROLL
		EDITTEXT IDC_EDIT3,63,35,51,17,ES_AUTOHSCROLL
		EDITTEXT IDC_EDIT4,100,100,200,20,ES_AUTOHSCROLL
		
END


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值