Windows Phone 7 Silverlight教程:官方训练指南(1)

需积分: 10 1 下载量 152 浏览量 更新于2024-07-28 1 收藏 18.71MB PDF 举报
"Windows_Phone_7_微软官方训练教程集合_(Silverlight_篇8个教程)(1)" 是一系列教程的首部分,专注于使用Silverlight技术开发Windows Phone 7应用程序。教程涵盖了从基础的“你好,Windows Phone”应用程序创建到更复杂的用户界面设计和动画效果的实现。 本教程的目标是引导开发者熟悉Windows Phone 7应用开发环境,特别是使用Microsoft Visual Studio 2010 Express和Expression Blend这两个工具。实验内容分为两个主要部分: 1. **练习1: 利用Microsoft Visual Studio 2010 Express为Windows Phone创建Windows Phone应用程序** - **任务1** - 在Visual Studio中创建Windows Phone应用程序工程:这部分教学了如何启动Visual Studio,新建一个Windows Phone Silverlight项目,并设置基本的项目配置。 - **任务2** - 在Windows Phone Emulator中构建并测试应用程序:开发者将学习如何使用模拟器运行和调试应用程序,了解其在实际设备上的表现。 - **任务3** - 设计用户界面:涵盖如何使用XAML语言创建基本的用户界面元素。 - **任务4** - 在用户界面处理事件程序:讲解如何响应用户交互,如按钮点击事件,并编写相应的事件处理代码。 - **任务5** - 验证:检查应用程序的功能是否符合预期,确保无误。 2. **练习2: 使用Expression Blend来设计Windows Phone应用程序的UX** - **任务1** - 在Expression Blend创建一个自定义按钮:展示如何利用Expression Blend的强大设计功能创建具有独特外观的按钮。 - **任务2** - 为定制控件增加视觉状态效果:讲解如何通过添加和管理视觉状态来改变控件在不同情况下的显示效果。 - **任务3** - 创建横幅文本的动画:教给开发者如何创建动态效果,增强用户体验。 - **任务4** - 验证:对在Expression Blend中所做的设计进行测试,确保它们在Windows Phone平台上正常工作。 该教程强调了Windows Phone 7平台的优势,包括其支持使用Silverlight和XNA框架开发出引人入胜的应用程序和游戏,以及Visual Studio和Expression Blend工具的高效性能。此外,教程还提到了Windows Phone Marketplace作为分发渠道,开发者可以借此将应用程序推送给广大用户,无需担心设备兼容性问题,只需专注于编码和收益。 此教程是为有意涉足Windows Phone 7应用开发的初学者准备的,它提供了扎实的基础知识,帮助他们快速入门并掌握Silverlight开发环境。通过这两个练习,开发者能够创建基本的UI,处理用户交互,以及利用Expression Blend提升应用的视觉吸引力。

#include <unistd.h> #include <sys/types.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <signal.h> //下一步时间间隔 #define TIME_NEXT 50 //定义信号,此处直接使用系统信号,项目中可根据需要自定义信号值#define SIG_UI_QUIT35 #define SIG_PHONE_QUIT 36 #define SIG_UI_QUIT 35 //定义通话状态 enum TASK_PHONE_STATE { TASK_PHONE_STATE_NONE = 0, TASK_PHONE_STATE_RING, TASK_PHONE_STATE_TALK, TASK_PHONE_STATE_HANGUP, }; int phone_state = TASK_PHONE_STATE_NONE; //设置通话状态 void set_state(int state) { phone_state = state; } //获取通话状态 int get_state(void) { return phone_state; } int get_ui_pid() { int pid = -1; FILE *fp = NULL; char buf[12] = {0}; //打开管道,执行 shell 命令查找进程名为task_ui_sig 的pid fp = popen("ps -e I grep \'task_ui_sig\' | awk \'{print $1}\'", "r"); fgets(buf, sizeof(buf), fp); if (strlen(buf) > 0) { pid = atoi(buf); } return pid; } //信号处理函数 void sig_deal(int sig) { if (sig == SIG_UI_QUIT) { printf("Task ui hangup!\n"); set_state(TASK_PHONE_STATE_HANGUP); } } int main(void) { int time = 0; //设置SIG UI QUIT信号处理函数 signal(SIG_UI_QUIT, sig_deal); while (1) { /*模拟与其他用户处理通信协议,每隔5s进入下一状态*/ time++; if (time >= TIME_NEXT) { time = 0; if (get_state() == TASK_PHONE_STATE_RING) { set_state(TASK_PHONE_STATE_TALK); } else if (get_state() == TASK_PHONE_STATE_TALK) { set_state(TASK_PHONE_STATE_HANGUP); } else { set_state(TASK_PHONE_STATE_RING); } printf("Current state is %d!\n", get_state()); /*若当前通话状态为挂断,则退出任务,并发送信号给UI*/ if (get_state() == TASK_PHONE_STATE_HANGUP) { if (get_ui_pid() > 0) { kill(get_ui_pid(), SIG_UI_QUIT); printf("Send quit msg!\n"); } break; } usleep(100 * 1000); } return 0; } }这段代码有什么bug

2023-05-27 上传