#include <windows.h>
#include "resource.h"
#define _UNICODE
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("CommonDlg") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (hInstance, MAKEINTRESOURCE(IDI_MYICON)) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName = MAKEINTRESOURCE(IDM_MYMENU) ;
wndclass.lpszClassName = szAppName ;
if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}
hwnd = CreateWindow (szAppName, // window class name
TEXT ("CommonDlg"), // window caption
WS_OVERLAPPEDWINDOW, // window style
CW_USEDEFAULT, // initial x position
CW_USEDEFAULT, // initial y position
CW_USEDEFAULT, // initial x size
CW_USEDEFAULT, // initial y size
NULL, // parent window handle
NULL, // window menu handle
hInstance, // program instance handle
NULL) ; // creation parameters
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
PAINTSTRUCT ps ;
RECT rect ;
HBRUSH hbrush ;
CHOOSECOLOR cc ; //颜色对话框结构
static COLORREF rgbColorDlg, rgbFontDlg ;
static COLORREF acrCustClr[16];
CHOOSEFONT cf; // 字体对话框结构
static LOGFONT lf; // 逻辑字体的结构
static HFONT hfont, hfontPrev;
OPENFILENAME ofn; // 打开、另存为对话框结构
static TCHAR szFile[MAX_PATH]; //存储路径、文件名的缓冲区
static TCHAR szFilter[] = TEXT ("Common Dialog Files (*.CDF)\0*.cdf\0")
TEXT ("文本文件 (*.TXT)\0*.cdf\0")
TEXT ("All Files (*.*)\0*.*\0\0") ;
switch (message)
{
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDM_FILE_OPEN: // 创建"打开"通用对话框
ZeroMemory(&ofn, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hwnd;
ofn.lpstrFilter = szFilter ;
ofn.nFilterIndex = 1;
ofn.lpstrFile = szFile;
ofn.nMaxFile = MAX_PATH ;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
// 创建对话框,若对话框结束后返回TRUE,则将ofn的lpstrFile域中返回
// 文件名复制到缓冲区szFile
if (GetOpenFileName(&ofn) == TRUE)
{
strcpy(szFile, ofn.lpstrFile );
MessageBox(hwnd, szFile, "打开完毕", MB_OK | MB_ICONINFORMATION) ;
}
return 0 ;
case IDM_FILE_SAVE: // 创建"另存为"通用对话框
ZeroMemory(&ofn, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hwnd;
ofn.lpstrFilter = szFilter ;
ofn.nFilterIndex = 1;
ofn.lpstrFile = szFile;
ofn.nMaxFile = MAX_PATH ;
ofn.lpstrDefExt = TEXT(".cdf") ;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
// 创建对话框,若对话框结束后返回TRUE,则将ofn的lpstrFile域中返回
// 文件名复制到缓冲区szFile
if (GetSaveFileName(&ofn) == TRUE)
{
strcpy(szFile, ofn.lpstrFile );
MessageBox(hwnd, szFile, "保存完毕", MB_OK | MB_ICONINFORMATION) ;
}
return 0;
case IDM_FILE_EXIT:
PostMessage(hwnd, WM_QUIT, wParam, lParam);
return 0 ;
case IDM_SET_FONT: // 创建"字体"通用对话框
ZeroMemory(&cf, sizeof(CHOOSEFONT)) ;
cf.lStructSize = sizeof (CHOOSEFONT);
cf.hwndOwner = hwnd;
cf.lpLogFont = &lf;
cf.rgbColors = rgbFontDlg ;
cf.Flags = CF_SCREENFONTS | CF_EFFECTS;
// 对话框结束返回若为TRUE,则以返回的字体信息创建逻辑字体
if (ChooseFont(&cf)==TRUE)
{
hfont = CreateFontIndirect(cf.lpLogFont);
rgbFontDlg = cf.rgbColors;
}
InvalidateRect(hwnd, NULL, TRUE) ;
return 0 ;
case IDM_SET_COLOR: // 创建"颜色"通用对话框
ZeroMemory(&cc, sizeof(CHOOSECOLOR));
cc.lStructSize = sizeof(CHOOSECOLOR);
cc.hwndOwner = hwnd;
cc.lpCustColors = (LPDWORD) acrCustClr;
cc.Flags = CC_FULLOPEN ;
if (ChooseColor(&cc) == TRUE)
{
rgbColorDlg = cc.rgbResult;
hbrush = CreateSolidBrush(rgbColorDlg);
SetClassLong(hwnd, GCL_HBRBACKGROUND, (LONG)hbrush);// 改变客户区的颜色
}
InvalidateRect(hwnd, NULL, TRUE) ;
return 0 ;
}
break;
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;
GetClientRect(hwnd, &rect) ;
if(rgbColorDlg != 0)
SetBkColor(hdc, rgbColorDlg);
if(hfont != 0 )
{
SelectObject(hdc, hfont);
SetTextColor(hdc, rgbFontDlg);
}
DrawText(hdc, TEXT("通用对话框"), -1 , &rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
EndPaint (hwnd, &ps) ;
return 0 ;
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
是否能看懂
windows编程可以在vc上使用C++进行可视化编程,推荐看一下孙鑫的《深入详解vc++》,至于C语言,可视化的程序应该会使用到图形化模式(可以做游戏~~~~),建议网上搜下,是比较早的东西了
用windows api
如何用C语言编程出可视化界面?~
//调用api函数创建窗口
//示例:
#include
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);//窗口过程函数
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT("MyWindows");//定义窗口类名
HWND hwnd;//窗口句柄
MSG msg; //
WNDCLASS wndclass; //窗口类
wndclass.style = CS_HREDRAW | CS_VREDRAW;//指定窗口类型,各种“类风格”(详见下方↓)可以使用按位或操作符组合起来
wndclass.lpfnWndProc = WndProc;//指定窗口过程(必须是回调函数)
wndclass.cbClsExtra = 0;//预留的额外空间,一般为 0
wndclass.cbWndExtra = 0;//预留的额外空间,一般为 0
wndclass.hInstance = hInstance;//应用程序的实例句柄
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);//为所有基于该窗口类的窗口设定一个图标
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);//为所有基于该窗口类的窗口设定一个鼠标指针
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//指定窗口背景色
wndclass.lpszMenuName = NULL;//指定窗口菜单
wndclass.lpszClassName = szAppName;//指定窗口类名
if (!RegisterClass(&wndclass))//注册窗口
{
MessageBox(NULL, TEXT("这个程序需要在 Windows NT 才能执行!"), szAppName, MB_ICONERROR);
return 0;
}
hwnd = CreateWindow(szAppName, //创建窗口
TEXT("windows"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hwnd, iCmdShow); //显示窗口
UpdateWindow(hwnd); //更新窗口,重绘
while (GetMessage(&msg, NULL, 0, 0)) //获得消息
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)//回调函数
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
switch (message)
{
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
GetClientRect(hwnd, &rect);
DrawText(hdc, TEXT("第一个C语言窗口程序!"), -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);
EndPaint(hwnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}
VC++不像VB一样,拖放控件就可以制作GUI,一般情况下VC++是通过MFC或者是更复杂的WINDOWS API来制作GUI的,这些内容在这里是说不清楚的,请参阅有关VC++和WINDOWS程序设计的书籍。
#19483366803#
请问用C语言可以实现可视化编程吗??? - ******
#蔚竹# c语言不行,c++倒是可以
#19483366803#
c++能不能做出可视图形界面 - ******
#蔚竹# c++只是一门语言,结合具体工具,比如 VC ,可以作出可视化图像界面的.现在很多游戏,软件都是用 C++在 VC下开发的.
#19483366803#
如何用C++可视化编程技术做一个简单的应用程序? - ******
#蔚竹# 在新建工程的时候选择mfc appwizard(exe) 那些很长的代码都是vc自己生成的,需要你自己写的没多少
#19483366803#
C语言中用VC++怎么编图案 - ******
#蔚竹# 不要说VC++就说VC吧. 0、简单的图案,比如话点、线、多边形或者位图,你可以直接使用CDC这个类.看附录一; 1、画复杂的图案,可以看directx或者OpenGL,可以实现复杂的2D或者3D图案.附录一、 简单绘图函数 FillRect() 用指...
#19483366803#
请问高手vc++6.0怎样用c语言可视化编程,最好有详细步骤,谢谢! - ******
#蔚竹# VC++不像VB一样,拖放控件就可以制作GUI,一般情况下VC++是通过MFC或者是更复杂的WINDOWS API来制作GUI的,这些内容在这里是说不清楚的,请参阅有关VC++和WINDOWS程序设计的书籍.
#19483366803#
vc可视化程序设计 - ******
#蔚竹# 我来回答吧,你打开vc6.0,新建工程,选择“Win32 Application”,工程名随便你写一个,再新建Files,随便写一个文件名,选择"C++ Source File",确定后输入如下代码 #include#includeLRESULT CALLBACK WangProc( HWND hwnd, ...
#19483366803#
怎样用VC6.0创建可视化工程MCF - ******
#蔚竹# 选择file->new project,弹出一个对话框,选择MFCappwizard.exe,输入工程名,OK,然后弹出另一个对话框,选择单文档(其实选什么要看你干什么了,都行的),finish,然后再finish,就好了.
#19483366803#
C 语言可视化编程 - ******
#蔚竹# 具体的书倒是真没多少,但是要具体学什么,可以给你条明路: 的确是只要C语言,不要质疑他的能力,只是要学会调用很多别人写出来的函数 要可视化编程,windows系统是最好的平台,而要制作窗口,就要学会WinAPI中关于消息,关于窗...
#19483366803#
怎么把c++代码(命令行输入输出)可视化!!??? - ******
#蔚竹# 用管道直接连接两个进程.将控制台程序的标准输入输出捕获到MFC程序中,然后将信息处理后显示出来.
#19483366803#
C语言程序源代码怎么实现其可视化? - ******
#蔚竹# 先回答你的问题,可以使用以下三种方法中的任意一种: 1、使用 C++ Builder. 2、使用VC6,建立MFC工程. 3、使用VS2005,建立Windows应用程序.另外补充说明: VB是一种开发工具,不是语言,她使用的是Basic语言,本身语言是没有什么可视化的.VB的V就是Visual,可视化的意思.同理,C/C++也是一样的. C++ Builder/VC6/VS2005,都可以直接建立在Windows下运行的应用程序,并且进行可视化的界面设计.