您的位置:首页 > 编程语言 > C语言/C++

Windows C图形程序设计模板

2016-09-29 10:26 141 查看
#include <windows.h>
#include <windowsx.h>
#include <stdio.h>

LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ) ;
int x,y,width,height

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow )
{
static TCHAR szAppName[] = TEXT( "iso8583unpacktools" ) ;
HWND hwnd ; //用来保存成功创建窗口后返回的句柄
MSG msg ; //定义消息结构体变量
WNDCLASS wndclass ;//窗体类

wndclass.lpfnWndProc = WndProc ; //窗口处理函数
wndclass.style = CS_HREDRAW | CS_VREDRAW ; //窗口类型
wndclass.hInstance = hInstance ; //实例句柄
wndclass.cbClsExtra = 0 ; //窗口扩展
wndclass.cbWndExtra = 0 ; //窗口实例扩展
wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH) ; //窗口背景色
wndclass.hCursor = LoadCursor( NULL, IDC_ARROW ) ; //窗口鼠标光标
//wndclass.hIcon = LoadIcon( NULL, IDI_APPLICATION ) ; //窗口最小化图标
wndclass.hIcon = (HICON)LoadImage(NULL,"iso8583unpack.ico",IMAGE_ICON,0,0,LR_LOADFROMFILE);
wndclass.lpszClassName = szAppName ; //窗口类名
wndclass.lpszMenuName = NULL ; //窗口菜单

if( !RegisterClass(&wndclass) )
{
MessageBox( NULL, TEXT("无法注册窗口类!"), TEXT("错误"), MB_OK | MB_ICONERROR ) ;
return 0 ;
}
//获取屏幕信息
x=GetSystemMetrics(SM_CXSCREEN);
height=GetSystemMetrics(SM_CYSCREEN)-40;
width=600;
x=(x-width)/2;
y=0;
//创建窗体API
hwnd = CreateWindow( szAppName,
TEXT("中国银联数据ISO8583报文解析工具V1.0"),
WS_OVERLAPPEDWINDOW,
x,//CW_USEDEFAULT,
y,//CW_USEDEFAULT,
width,//CW_USEDEFAULT,
height,//CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL ) ;
//显示窗体的API 传入需要显示的窗体句柄和显示方式
ShowWindow( hwnd, iCmdShow ) ;
//刷新窗体的API
UpdateWindow( hwnd ) ;
//从系统的应用程序线程消息队列中取得一个消息

//读配置文件bitmap.ini
LoadIsoBitMap();

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

return msg.wParam ;
}

LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )
{

static HWND hwndInput ;
static HWND hwndOutput ;
static HWND hwndButton ;
static HWND hwndButtonclr ;
TCHAR InBuf[4000];
TCHAR OutBuf[5000];
TCHAR buf[4000];

memset(InBuf,0,sizeof(InBuf));
memset(OutBuf,0,sizeof(OutBuf));
memset(buf,0,sizeof(buf));
switch( message )
{
case WM_CREATE:
//输入编辑框
hwndInput = CreateWindow( TEXT("edit"), TEXT("十六进制报文输入"),
WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | WS_BORDER |
ES_LEFT | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL,
10, 10, width-25, 100,
hwnd, (HMENU)1, ((LPCREATESTRUCT) lParam) -> hInstance, NULL ) ;
//输出编辑框只读模式
hwndOutput = CreateWindow( TEXT("edit"), TEXT("结果输出"),
WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | WS_BORDER |
ES_LEFT | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL|ES_READONLY,
10, 150, width-25, height-190,
hwnd, (HMENU)1, ((LPCREATESTRUCT) lParam) -> hInstance, NULL ) ;
//Edit_Enable(hwndOutput,FALSE);
//提交按钮创建
hwndButton = CreateWindow( TEXT("button"), TEXT ("解析"),
WS_CHILD | WS_VISIBLE |BS_PUSHBUTTON,
150, 115, 100, 30,
hwnd, (HMENU)1, ((LPCREATESTRUCT) lParam) -> hInstance, NULL ) ;
//清屏按钮
hwndButtonclr = CreateWindow( TEXT("button"), TEXT ("清屏"),
WS_CHILD | WS_VISIBLE |BS_PUSHBUTTON,
350, 115, 100, 30,
hwnd, (HMENU)1, ((LPCREATESTRUCT) lParam) -> hInstance, NULL ) ;

return 0 ;
case WM_COMMAND://响应按钮消息
if((HWND)lParam == hwndButton)
{
//获取输入框内容,想从键盘得到的数据可以从这里获得
GetWindowText(hwndInput,InBuf,sizeof(InBuf));

//功能实现

//将结果显示在输出框
SetWindowText(hwndOutput,OutBuf);
}
if((HWND)lParam == hwndButtonclr)
{
SetWindowText(hwndInput,InBuf);
SetWindowText(hwndOutput,OutBuf);
}

return 0 ;
case WM_CLOSE: //关闭
if(IDYES==MessageBox(hwnd,"是否关闭程序?","提示",MB_YESNO|MB_ICONQUESTION))
{
DestroyWindow (hwnd);
}
return 0;
case WM_DESTROY:
PostQuitMessage(0) ;
return 0 ;
}

return DefWindowProc( hwnd, message, wParam, lParam ) ;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息