作者:admin 发布时间:2023-01-12 01:20:27 分类:八卦 浏览:282 评论:0
我想楼主说的C语言可能指的是Windows下的C语言程序设计吧.
下面的代码是根据VC6自动建的"Hello World"改编的,我不知道该怎么把整个工程中的所有文件发上来(不知道有没有专用的uue压缩软件,没的话...我也没法了),所以只选了我认为几个比较重要的文件
=========================ex2.cpp文件=========================
// ex2.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
#include "resource.h"
#define MAX_LOADSTRING 100
// Global Variables:
HINSTANCE hInst; // current instance
TCHAR szTitle[MAX_LOADSTRING]; // The title bar text
TCHAR szWindowClass[MAX_LOADSTRING]; // The title bar text
// Foward declarations of functions included in this code module:
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM); //对话框回调函数
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
MSG msg;
HACCEL hAccelTable;
// Initialize global strings
LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
LoadString(hInstance, IDC_EX2, szWindowClass, MAX_LOADSTRING);
MyRegisterClass(hInstance);
// Perform application initialization:
if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}
hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_EX2);
// Main message loop:
while (GetMessage(msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, msg))
{
TranslateMessage(msg);
DispatchMessage(msg);
}
}
return msg.wParam;
}
//
// FUNCTION: MyRegisterClass()
//
// PURPOSE: Registers the window class.
//
// COMMENTS:
//
// This function and its usage is only necessary if you want this code
// to be compatible with Win32 systems prior to the 'RegisterClassEx'
// function that was added to Windows 95. It is important to call this function
// so that the application will get 'well formed' small icons associated
// with it.
//
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC)WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_EX2);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = (LPCSTR)IDC_EX2;
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);
return RegisterClassEx(wcex);
}
//
// FUNCTION: InitInstance(HANDLE, int)
//
// PURPOSE: Saves instance handle and creates main window
//
// COMMENTS:
//
// In this function, we save the instance handle in a global variable and
// create and display the main program window.
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;
hInst = hInstance; // Store instance handle in our global variable
hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
if (!hWnd)
{
return FALSE;
}
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
//
// FUNCTION: WndProc(HWND, unsigned, WORD, LONG)
//
// PURPOSE: Processes messages for the main window.
//
// WM_COMMAND - process the application menu
// WM_PAINT - Paint the main window
// WM_DESTROY - post a quit message and return
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
TCHAR szHello[MAX_LOADSTRING];
LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);
static HWND hWndButton;
static BOOL btnClicked = FALSE;
switch (message)
{
case WM_CREATE:
////////////////////////////////////////////////////////////////
hWndButton = CreateWindowEx( 0L, "BUTTON", "确定",
WS_CHILD | BS_PUSHBUTTON,
50, 50, 100, 60,
hWnd, (HMENU)NULL,
hInst, (LPVOID)NULL); //创建一个BUTTON控件
ShowWindow(hWndButton, TRUE); //显示创建的按钮
break;
////////////////////////////////////////////////////////////////
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// Parse the menu selections:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
/**********************************************************
//接收按钮按下所发生的事件.
//
//罗嗦一下,对于控件的通知消息通常是WM_COMMAND消息,这个消息
//的lParam为控件句柄; LOWORD(wParam)为控件ID,HIWORD(wParam)
//为消息的代码.
//
***********************************************************/
case BN_CLICKED:
if((HWND)lParam == hWndButton)
{
if(!btnClicked)
{
DialogBox(hInst, (LPCTSTR)IDD_DIALOG, hWnd, (DLGPROC)DlgProc);
btnClicked = TRUE;
}
else
DestroyWindow(hWnd);
}
break;
////////////////////////////////////////////////////////////////
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, ps);
// TODO: Add any drawing code here...
RECT rt;
GetClientRect(hWnd, rt);
DrawText(hdc, szHello, strlen(szHello), rt, DT_CENTER);
EndPaint(hWnd, ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
// Mesage handler for about box.
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
break;
}
return FALSE;
}
//对话框回调函数
LRESULT CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
SetTimer(hDlg, ID_TIMER, /*这个ID_TIMER我在资源里定义了*/
5000, (TIMERPROC)NULL);
return TRUE;
case WM_TIMER:
EndDialog(hDlg, LOWORD(wParam));
break;
case WM_DESTROY:
KillTimer(hDlg, ID_TIMER);
break;
}
return FALSE;
}
=========================resource.h文件=========================
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by ex2.rc
//
#define IDC_MYICON 2
#define IDD_EX2_DIALOG 102
#define IDD_ABOUTBOX 103
#define IDS_APP_TITLE 103
#define IDM_ABOUT 104
#define IDM_EXIT 105
#define IDS_HELLO 106
#define IDI_EX2 107
#define IDI_SMALL 108
#define IDC_EX2 109
#define ID_TIMER 110
#define IDR_MAINFRAME 128
#define IDD_DIALOG 130
#define IDC_STATIC -1
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 131
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 111
#endif
#endif
=========================ex2.rc文件=========================
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#define APSTUDIO_HIDDEN_SYMBOLS
#include "windows.h"
#undef APSTUDIO_HIDDEN_SYMBOLS
#include "resource.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// Chinese (P.R.C.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
#ifdef _WIN32
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_EX2 ICON DISCARDABLE "ex2.ICO"
IDI_SMALL ICON DISCARDABLE "SMALL.ICO"
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
IDC_EX2 MENU DISCARDABLE
BEGIN
POPUP "File"
BEGIN
MENUITEM "Exit", IDM_EXIT
END
POPUP "Help"
BEGIN
MENUITEM "About ...", IDM_ABOUT
END
END
/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//
IDC_EX2 ACCELERATORS MOVEABLE PURE
BEGIN
"?", IDM_ABOUT, ASCII, ALT
"/", IDM_ABOUT, ASCII, ALT
END
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_ABOUTBOX DIALOG DISCARDABLE 22, 17, 230, 75
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "About"
FONT 8, "System"
BEGIN
ICON IDI_EX2,IDC_MYICON,14,9,16,16
LTEXT "ex2 Version 1.0",IDC_STATIC,49,10,119,8,SS_NOPREFIX
LTEXT "Copyright (C) 2006",IDC_STATIC,49,20,119,8
DEFPUSHBUTTON "OK",IDOK,195,6,30,11,WS_GROUP
END
IDD_DIALOG DIALOG DISCARDABLE 0, 0, 157, 59
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
CAPTION "Dialog"
FONT 10, "System"
BEGIN
CONTROL "请等待...",IDC_STATIC,"Static",SS_SIMPLE | WS_GROUP,63,
25,31,8
END
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
"#include ""windows.h""\r\n"
"#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
"#include ""resource.h""\r\n"
"\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"\r\n"
"\0"
END
1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO DISCARDABLE
BEGIN
IDD_DIALOG, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 150
TOPMARGIN, 7
BOTTOMMARGIN, 52
END
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE DISCARDABLE
BEGIN
IDS_APP_TITLE "ex2"
IDS_HELLO "Hello World!"
IDC_EX2 "EX2"
END
#endif // Chinese (P.R.C.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
============================================
楼主的消息已收到
试发了下,当场晕倒...
可能百度不允许发类似于uue格式打包的乱字符,发了好几次,每次都提示页面找不到!
算了,我把这个放到一个空间里,那空间速度很慢很慢很慢的说,但是是能下的,多试几次,不行用多线程下.哎,毕竟现在免费的东西难找啊~
下载地址1:
下载地址2:
;file_id=f_13505186
【摘要】
1. 2C 之路需要考虑什么要素,并不是所有的用户都可以被你的整合。
2. 整合 C 端时,考虑三个因素:用户需求(你相比传统 B 端是否具有明显优势),效率(是否打造了更多的环节),外部环境(看看你周围的 B 端是否能够为你铺路)
在传统的产业链整合过程中,企业之间以资源共享、协同互助的形式扩大自身在整个产业链中的地位,不论是横向的合并,还是纵向的扩张、产业链整合的本质乃是知识链、技术链和功能链的重构。
当互联网出现之后,最初其定位于解决信息的不对称,以提升某产业链中的部分环节的效率。但是发展到现在,自2013年起,互联网思维席卷大江南北!互联网思维颠覆手机,互联网思维做餐饮......无数人都试图用互联网思维颠覆传统行业,不论是“整合”亦或是“颠覆”,互联网逐渐从信息的整合上升到行业的重整。
案例引入
小农女是一家生鲜电商的O2O平台,在一开始,它选择做2C,为白领人群提供半成品的生鲜食材,但后来由于配送成本过高导致失败;后来,它又从2B重新切入,为中小餐厅提供食材配送。它经历了一个从2C到2B的转变。
我们再看神州专车——主打中高端商务用车服务市场,神州专车全部使用神州租车的自有租赁车辆。那我们想象一下,如果神州专车从商务用车拓展到普通用车,那传统出租行业是不是应该彻夜难眠了。他们一开始做的也许是针对C端的信息整合,使C端用户能够更加快捷、低价地找到自己的专车服务。但是一旦培养了用户习惯之后,如果他们进一步做自营,也是有可能直接干掉传统的中间B端的。
1. 能否满足用户个性化需求
1 )整合 C 端,却无法取代 B 端 ——如果做2C的生鲜配送,我们都知道这个行业标准化程度较低,在用户这一端,每个人对生鲜食材的要求都有所不同,但是平台为了实现规模化,必须实现标准化,虽然降低了成本,但是只能保证用户能够以较低的价格方便(省去自己挑拣)地获得较为新鲜的生鲜,但是和用户的个性化需求已经背道而驰了,因此用户可能更加习惯去菜贩处自主选择。
2 )整合 C 端,取代传统 B 端 ——而关于家政服务,平台整合阿姨,用户不再需要通过家政公司去寻找阿姨,用户可以选择自己喜欢的阿姨,阿姨的情况在平台上也可以通过基本信息和评论了解到,由此既打破了阿姨和用户之间信息不对称的问题,又满足了用户的个性化需求。如果平台规模足够大,阿姨互联网程度普遍较高,那么传统的家政公司可能就将面临倒台。但是你自然也会发现如果个性化程度过高,也表明阿姨的标准化程度较低,传统家政公司可以通过培训来提升阿姨的基本素质,但是这是互联网企业很难深入介入的。因此后来出现了“阿姨来了”——经纪人模式推荐阿姨,将阿姨的服务质量与家政经纪人的信用等级绑定,通过信用等级决定家政经纪的收入;并要求经纪人能够发自内心的关注雇主需求,关心阿姨成长,从而提高雇佣匹配度,提升服务质量。可以这样理解,“阿姨来了”又打造了一个小B端,通过这个小B端(经纪人)来提高服务质量。 平台无法和传统的B端合作,那就直接重新整合,并以经纪人的模式重塑B端,打造新的利益链条。
2.To C 是否减少了环节
小农女转向B端之后,迅速获得了资本市场的青睐。2C确实成本太高,也难以培养用户习惯。
虽然对用户来说,再也不用起早贪黑地去买菜了,平台通过渠道集中化让用户以更低的价格买到需要的生鲜蔬菜。的确,平台确实解决用户的一些痛点。
但是在成本结构方面,互联网选手们看似“打掉了中间环节”,从源头(目前大部分尚未达到源头,离得还很远。也不一定就必须走源头)直送消费者,但其实打掉了一些环节、却创造了更多的环节。
即,传统企业的链条中,有几级(最高三级)关系在里面,最终到消费者;互联网模型,虽然打掉了中间的几个环节,但是这个生意变成了“完全自己做”,那么公司内部的流程其实就变成了各个环节,表中所列的是业务流程中必不可少的各个环节。而原本传统模型中每一级选手,都是包揽了“采购分拣配送客服财务”等所有环节的。
3.-B 所带来的效益是否大于 +B
当你想要2C时,还有一个要考虑的因素就是取代B端(-B)和与B端合作(+B)哪个更优?
互联网企业的劣势在于线下布局。记得以前路过家门口的那种会唱歌的车,车身上贴了大大的广告,这些车身广告的优势在于,利用了车的流动性使广告能够在某个区域内以较低的成本实现较大范围的覆盖。
同样,线下的点相当于互联网企业的微型“服务站”,帮助其实现区域的覆盖。当你所处的行业有大量进入者试图取代传统B端服务于C端, 你的进入已不再具有先发优势,不妨考虑服务暂且服务于B端,帮助B端抵抗其它竞争者。 借助B端地域性优势和客户资源优势打开市场。例如Welkin Health是开发慢性病管理工具的平台,但是不同于其他平台直接服务于C端。Welkin Health是服务于传统医疗机构,因为传统的医疗机构在服务于用户时信息化程度较低,且必须通过面对面方式获取病人信息,因此Welkin Health提升了这些传统医疗机构的服务水平,也打开了自己的市场。
综述
根据上述所述,在你选择从C端市场切入的时候,不妨考虑一下上面说的三个因素:用户需求(你相比传统B端是否具有明显优势),效率(是否打造了更多的环节),外部环境(看看你周围的B端是否能够为你铺路)。