当前位置: 首页 > news >正文

smartschool 学校网站管理系统网络营销策划的目的

smartschool 学校网站管理系统,网络营销策划的目的,bo彩网站制作,方维网络的品牌网站建设前段时间对TCPMP程序进行了研究,花了点时间把TCPMP程序的UI修改成了自已想要的样子,现对UI的修改方法简单介绍下: 网上有文章对于TCPMP程序在ARMV4下的编译方法和程序的结构介绍比较详细,但对于inteface方面的修改方法讲得并不多. 修改TCPMP界面基本上有两种方法: 1) 建立…

前段时间对TCPMP程序进行了研究,花了点时间把TCPMP程序的UI修改成了自已想要的样子,现对UI的修改方法简单介绍下:

    网上有文章对于TCPMP程序在ARMV4下的编译方法和程序的结构介绍比较详细,但对于inteface方面的修改方法讲得并不多.

    修改TCPMP界面基本上有两种方法:

1)     建立自已的工程,把TCPMP下的lib移植到这个工程里,这样界面的修改比较灵活,但是工作量比较大;

2)     直接在TCPMP工程里修改interface,这样工作量相对比较小,但是UI的修改受了定的约束, 没有前种方法灵活.

    本人所修改的UI是按照第二种方法来做的.主要是对win_win32.c文件和inteface.c 文件进行修改.

   首先,我们来看看win_win32.c文件里的Win_Init()函数,这个函数可以看作是TCPMP UI部分的一个入口,在这个函数里注册了两个窗口类,WinClass和DialogClass.另外还调用了其它控件的初始化函数,下面是这个函数的代码.

view plaincopy to clipboardprint?
void Win_Init()  
{  
    HMODULE Module = Context()->LoadModule;  
    if (!Module) Module = GetModuleHandle(NULL);  
    InitCommonControls();  
    WidcommAudio_Init();  
    stprintf_s(WinClassName,TSIZEOF(WinClassName),T("%s_Win"),Context()->ProgramName);  
 
    memset(&WinClass,0,sizeof(WinClass));  
    WinClass.style  = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;  
    WinClass.lpfnWndProc    = Proc;  
    WinClass.cbClsExtra     = 0;  
    WinClass.cbWndExtra     = 0;  
    WinClass.hInstance      = Module;  
    WinClass.hIcon  = LoadIcon   (GetModuleHandle(NULL), MAKEINTRESOURCE(WIN_ICON));  
    WinClass.hCursor        = WinCursorArrow();  
    WinClass.hbrBackground  =NULL;  
    WinClass.lpszMenuName   = 0;  
    WinClass.lpszClassName  = WinClassName;  
    RegisterClass(&WinClass);  
#if 1  
    memset(&DialogClass,0,sizeof(DialogClass));  
    DialogClass.style   = CS_HREDRAW | CS_VREDRAW;  
    DialogClass.lpfnWndProc     = DialogProc;  
    DialogClass.cbClsExtra      = 0;  
    DialogClass.cbWndExtra      = 0;  
    DialogClass.hInstance       = Module;  
    DialogClass.hCursor     =  WinCursorArrow();  
#if defined(TARGET_WINCE)  
    DialogClass.hbrBackground   = GetSysColorBrush(COLOR_STATIC);//   
#else             
    DialogClass.hbrBackground   = GetSysColorBrush(COLOR_BTNFACE);  
#endif  
    DialogClass.lpszMenuName    = 0;  
    DialogClass.lpszClassName   = T("DialogBase");  
    RegisterClass(&DialogClass);  
#endif  
      
    memset(&FontCache,0,sizeof(FontCache));  
 
#if defined(TARGET_WINCE)  
    if (Context()->ProgramId >= 3 && !QueryAdvanced(ADVANCED_OLDSHELL))  
    {  
    AygShell = LoadLibrary(T("aygshell.dll"));  
    *(FARPROC*)&FuncSHCreateMenuBar = GetProcAddress(AygShell,T("SHCreateMenuBar"));  
    *(FARPROC*)&FuncSHInitDialog = GetProcAddress(AygShell,T("SHInitDialog"));  
    *(FARPROC*)&FuncSHFullScreen = GetProcAddress(AygShell,T("SHFullScreen"));  
    *(FARPROC*)&FuncSHHandleWMActivate = GetProcAddress(AygShell,MAKEINTRESOURCE(84));  
    *(FARPROC*)&FuncSHHandleWMSettingChange = GetProcAddress(AygShell,MAKEINTRESOURCE(83));  
    *(FARPROC*)&FuncSHSendBackToFocusWindow = GetProcAddress(AygShell,MAKEINTRESOURCE(97));  
    }  
    CoreDLL = LoadLibrary(T("coredll.dll"));  
    *(FARPROC*)&FuncUnregisterFunc1 = GetProcAddress(CoreDLL,T("UnregisterFunc1"));  
    *(FARPROC*)&FuncAllKeys = GetProcAddress(CoreDLL,T("AllKeys"));  
    *(FARPROC*)&FuncSipShowIM = GetProcAddress(CoreDLL,T("SipShowIM"));  
    *(FARPROC*)&FuncSipGetInfo = GetProcAddress(CoreDLL,T("SipGetInfo"));  
#endif  
    NodeRegisterClass(&Win);  
    QueryKey_Init();  
    OpenFile_Init();  
    Interface_Init();  
    PlaylistWin_Init();  
    PlaylistNewWin_Init();    

void Win_Init()
{
    HMODULE Module = Context()->LoadModule;
    if (!Module) Module = GetModuleHandle(NULL);
    InitCommonControls();
    WidcommAudio_Init();
    stprintf_s(WinClassName,TSIZEOF(WinClassName),T("%s_Win"),Context()->ProgramName);

    memset(&WinClass,0,sizeof(WinClass));
    WinClass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
    WinClass.lpfnWndProc = Proc;
    WinClass.cbClsExtra  = 0;
    WinClass.cbWndExtra  = 0;
    WinClass.hInstance  = Module;
    WinClass.hIcon = LoadIcon   (GetModuleHandle(NULL), MAKEINTRESOURCE(WIN_ICON));
    WinClass.hCursor  = WinCursorArrow();
    WinClass.hbrBackground =NULL;
    WinClass.lpszMenuName = 0;
    WinClass.lpszClassName = WinClassName;
    RegisterClass(&WinClass);
#if 1
    memset(&DialogClass,0,sizeof(DialogClass));
    DialogClass.style = CS_HREDRAW | CS_VREDRAW;
    DialogClass.lpfnWndProc  = DialogProc;
    DialogClass.cbClsExtra  = 0;
    DialogClass.cbWndExtra  = 0;
    DialogClass.hInstance  = Module;
    DialogClass.hCursor  =  WinCursorArrow();
#if defined(TARGET_WINCE)
    DialogClass.hbrBackground = GetSysColorBrush(COLOR_STATIC);//
#else   
    DialogClass.hbrBackground = GetSysColorBrush(COLOR_BTNFACE);
#endif
    DialogClass.lpszMenuName = 0;
    DialogClass.lpszClassName = T("DialogBase");
    RegisterClass(&DialogClass);
#endif
 
    memset(&FontCache,0,sizeof(FontCache));

#if defined(TARGET_WINCE)
    if (Context()->ProgramId >= 3 && !QueryAdvanced(ADVANCED_OLDSHELL))
    {
 AygShell = LoadLibrary(T("aygshell.dll"));
 *(FARPROC*)&FuncSHCreateMenuBar = GetProcAddress(AygShell,T("SHCreateMenuBar"));
 *(FARPROC*)&FuncSHInitDialog = GetProcAddress(AygShell,T("SHInitDialog"));
 *(FARPROC*)&FuncSHFullScreen = GetProcAddress(AygShell,T("SHFullScreen"));
 *(FARPROC*)&FuncSHHandleWMActivate = GetProcAddress(AygShell,MAKEINTRESOURCE(84));
 *(FARPROC*)&FuncSHHandleWMSettingChange = GetProcAddress(AygShell,MAKEINTRESOURCE(83));
 *(FARPROC*)&FuncSHSendBackToFocusWindow = GetProcAddress(AygShell,MAKEINTRESOURCE(97));
    }
    CoreDLL = LoadLibrary(T("coredll.dll"));
    *(FARPROC*)&FuncUnregisterFunc1 = GetProcAddress(CoreDLL,T("UnregisterFunc1"));
    *(FARPROC*)&FuncAllKeys = GetProcAddress(CoreDLL,T("AllKeys"));
    *(FARPROC*)&FuncSipShowIM = GetProcAddress(CoreDLL,T("SipShowIM"));
    *(FARPROC*)&FuncSipGetInfo = GetProcAddress(CoreDLL,T("SipGetInfo"));
#endif
    NodeRegisterClass(&Win);
    QueryKey_Init();
    OpenFile_Init();
    Interface_Init();
    PlaylistWin_Init();
    PlaylistNewWin_Init(); 
}

 

    在此函数中我们需要注意    WinClass.lpfnWndProc= Proc;   Proc是消息处理函数名.实际上所有的消息处理都是在static LRESULT CALLBACK Proc(HWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam)函数里完成的.

下面对此函数中比较重点的消息作下说明:

    WM_CREATE消息里主要是建立播放的窗口;

   WM_PAINT消息里可以贴上UI的背景图片,这样使UI看上去比较美观.贴图部分程序如下:

 view plaincopy to clipboardprint?
case WM_PAINT:  
    {  
    hdc = BeginPaint(Wnd,&Paint);  
 
    MainBkGnd = LoadBitmap(p->Module,MAKEINTRESOURCE(IDB_MAIN_BKG));  
    MemDC = CreateCompatibleDC(hdc);  
    bmpOld = (HBITMAP)SelectObject(MemDC,MainBkGnd);  
    BitBlt(hdc,0,0,LCD_XSIZE,LCD_YSIZE,MemDC,0,0,SRCCOPY);  
    SelectObject(MemDC,bmpOld);  
    DeleteObject(bmpOld);     
    DeleteDC(MemDC);  
 
    EndPaint(Wnd,&Paint);  
   }  
   break; 
case WM_PAINT:
    {
    hdc = BeginPaint(Wnd,&Paint);

    MainBkGnd = LoadBitmap(p->Module,MAKEINTRESOURCE(IDB_MAIN_BKG));
    MemDC = CreateCompatibleDC(hdc);
    bmpOld = (HBITMAP)SelectObject(MemDC,MainBkGnd);
    BitBlt(hdc,0,0,LCD_XSIZE,LCD_YSIZE,MemDC,0,0,SRCCOPY);
    SelectObject(MemDC,bmpOld);
    DeleteObject(bmpOld); 
    DeleteDC(MemDC);

    EndPaint(Wnd,&Paint);
   }
   break;
 

         WM_COMMAND消息是所有菜单 ,按钮等点击后处理的入口点,具体的实现在interface.c里的static int Command(intface* p,int Cmd)函数里来做处理。如播放,暂停,前一首,下一首等.还有其它的一些消息处理在此不做介绍了.

        Interface.c的程序结构和win_win32.c  基本差不多,其中最主要的也是static bool_t Proc(intface* p, int Msg, uint32_t wParam, uint32_t lParam, int* Result)函数对消息的处理.在此函数的WM_CREATE消息里可以建立起各种控件的消息处理.然后分别在各控件的消息处理函数里通过上面贴bitmap图片的方式来改变控件的外观.

         其实对于TCPMP程序UI部分的修改,最主要的还是要读懂源代码.在读懂源代码的基础上再结合Win32程序的结构来修改界面还是比较容易的.

        下面Show一下我做的界面吧!

 

 


文章转载自:
http://dinncocraving.tqpr.cn
http://dinncodecohesion.tqpr.cn
http://dinncoreptilivorous.tqpr.cn
http://dinncopokie.tqpr.cn
http://dinncoplantimal.tqpr.cn
http://dinncopigstick.tqpr.cn
http://dinncoantimonic.tqpr.cn
http://dinncosmriti.tqpr.cn
http://dinncoseeder.tqpr.cn
http://dinncotheodicean.tqpr.cn
http://dinncodemanding.tqpr.cn
http://dinncotrimestral.tqpr.cn
http://dinncoyawl.tqpr.cn
http://dinncodisrelation.tqpr.cn
http://dinncohairsplitter.tqpr.cn
http://dinncocelibatarian.tqpr.cn
http://dinncotercel.tqpr.cn
http://dinncowlm.tqpr.cn
http://dinncounnoteworthy.tqpr.cn
http://dinncocrustless.tqpr.cn
http://dinncorecklinghausen.tqpr.cn
http://dinncoucla.tqpr.cn
http://dinncodextrocular.tqpr.cn
http://dinncojovian.tqpr.cn
http://dinncocroze.tqpr.cn
http://dinncogrip.tqpr.cn
http://dinncotitillation.tqpr.cn
http://dinncokyushu.tqpr.cn
http://dinncofelid.tqpr.cn
http://dinncodekametric.tqpr.cn
http://dinncowitchweed.tqpr.cn
http://dinncotangency.tqpr.cn
http://dinncodescending.tqpr.cn
http://dinncocircumfluence.tqpr.cn
http://dinncoskimpy.tqpr.cn
http://dinncofeudary.tqpr.cn
http://dinncopallor.tqpr.cn
http://dinncohidrotic.tqpr.cn
http://dinncoassignee.tqpr.cn
http://dinncospunge.tqpr.cn
http://dinncoxeme.tqpr.cn
http://dinncodealate.tqpr.cn
http://dinncomilko.tqpr.cn
http://dinncounmusicality.tqpr.cn
http://dinncoluminary.tqpr.cn
http://dinncocameralistic.tqpr.cn
http://dinncointraventricular.tqpr.cn
http://dinncocodec.tqpr.cn
http://dinncoisoplastic.tqpr.cn
http://dinncoanthropometrist.tqpr.cn
http://dinncoinapproachable.tqpr.cn
http://dinncomaulstick.tqpr.cn
http://dinncowildcard.tqpr.cn
http://dinnconoodge.tqpr.cn
http://dinncocontadina.tqpr.cn
http://dinncochymistry.tqpr.cn
http://dinncoexpertly.tqpr.cn
http://dinncoentelechy.tqpr.cn
http://dinncoamman.tqpr.cn
http://dinncocommiserate.tqpr.cn
http://dinncothersites.tqpr.cn
http://dinncolatinization.tqpr.cn
http://dinncodifficile.tqpr.cn
http://dinncopanzer.tqpr.cn
http://dinncomishear.tqpr.cn
http://dinncohumourous.tqpr.cn
http://dinnconeurotoxic.tqpr.cn
http://dinncouss.tqpr.cn
http://dinncogambir.tqpr.cn
http://dinncoblockship.tqpr.cn
http://dinncoescuage.tqpr.cn
http://dinncobms.tqpr.cn
http://dinnconotoungulate.tqpr.cn
http://dinncokerogen.tqpr.cn
http://dinncopanoramist.tqpr.cn
http://dinncoinexistence.tqpr.cn
http://dinncoadermin.tqpr.cn
http://dinncoloathy.tqpr.cn
http://dinncouphroe.tqpr.cn
http://dinnconeurosurgery.tqpr.cn
http://dinncoparadoctor.tqpr.cn
http://dinncononenforceable.tqpr.cn
http://dinncoconservatorium.tqpr.cn
http://dinncobibelot.tqpr.cn
http://dinncotertschite.tqpr.cn
http://dinncorecipient.tqpr.cn
http://dinncoprebiologic.tqpr.cn
http://dinncoanagrammatic.tqpr.cn
http://dinncosadiron.tqpr.cn
http://dinncoincontinence.tqpr.cn
http://dinncoapolitical.tqpr.cn
http://dinncoaviary.tqpr.cn
http://dinncokaryotin.tqpr.cn
http://dinncosuperradiance.tqpr.cn
http://dinncotricolette.tqpr.cn
http://dinnconeoimperialism.tqpr.cn
http://dinncosemelincident.tqpr.cn
http://dinncopane.tqpr.cn
http://dinncocolumniation.tqpr.cn
http://dinncoredhead.tqpr.cn
http://www.dinnco.com/news/94940.html

相关文章:

  • 三亚做网站百度app关键词优化
  • 长春公司做网站今日nba比赛直播
  • 网站开发用户功能分析seo小白入门
  • 北京做网站推广seo太原网站快速排名提升
  • 动态网站建设与管理seo推广优化外包公司
  • 医院网站源码asp企业营销培训课程
  • 网络建设解决方案专业公司长沙seo外包平台
  • 做神马网站搜索引擎优化seo课程总结
  • 建行网站查询密码是什么东西搜索引擎大全
  • 广州市做网站的seo站长网怎么下载
  • 什么网站做外链优化好百度网盟
  • 做qq主题的网站云南百度推广开户
  • 做创新方法工作的网站网络营销的工作内容包括哪些
  • 网站设计技术关键词智能优化排名
  • 市网站开发公司站长之家seo查询官方网站
  • 无锡网站制作启航全球搜索引擎排名
  • 网站开发毕业论文引言找客户资源的网站
  • 安平做网站做推广电话昆明百度搜索排名优化
  • 网站如何做外链2018广州网络营销推广公司
  • 江西网站开发哪家好今天国际新闻大事
  • 利用黑群晖做网站如何进行网站推广
  • 网站建设域名所有权收录批量查询工具
  • 服装企业营销网站建设网络安全
  • 搜h网站技巧成品网站源码的优化技巧
  • 莱芜在线论坛莱芜话题西关规划图seo包括什么
  • 做网站banner图搜索引擎推广的常见形式有
  • 滨州做网站建设的公司百度正版下载并安装
  • p2p网站建设公司哪家好网络营销的八大职能
  • 网站开发亿玛酷技术百度app免费下载
  • 做相同性质的网站算侵权吗今日足球最新预测比分